From fb7204fb6cc136e3218cf52c6402ffb231ca2c11 Mon Sep 17 00:00:00 2001 From: Jean P <10632523+TamtamHero@users.noreply.github.com> Date: Wed, 29 Sep 2021 18:39:10 +0200 Subject: [PATCH] Fix fees overwrite in starkware plugin (#198) * increase display buffer size to handle Starkware master key and control size when using snprintf * Bump version 1.9.6 * Fix broken tests * Add first starkware tests * Add some constants for starkware * Update CHANGELOG.md --- CHANGELOG.md | 6 ++ Makefile | 2 +- src/shared_context.h | 2 +- src_plugins/starkware/starkware_plugin.c | 47 ++++++++++--- .../nanos_disable_blind_signing/00001.png | Bin 446 -> 344 bytes .../nanos_starkware_usdt_deposit/00000.png | Bin 0 -> 541 bytes .../nanos_starkware_usdt_deposit/00001.png | Bin 0 -> 530 bytes .../nanos_starkware_usdt_deposit/00002.png | Bin 0 -> 829 bytes .../nanos_starkware_usdt_deposit/00003.png | Bin 0 -> 809 bytes .../nanos_starkware_usdt_deposit/00004.png | Bin 0 -> 622 bytes .../nanos_starkware_usdt_deposit/00005.png | Bin 0 -> 774 bytes .../nanos_starkware_usdt_deposit/00006.png | Bin 0 -> 882 bytes .../nanos_starkware_usdt_deposit/00007.png | Bin 0 -> 884 bytes .../nanos_starkware_usdt_deposit/00008.png | Bin 0 -> 759 bytes .../nanos_starkware_usdt_deposit/00009.png | Bin 0 -> 452 bytes .../nanos_starkware_usdt_deposit/00010.png | Bin 0 -> 458 bytes .../nanos_starkware_usdt_deposit/00011.png | Bin 0 -> 401 bytes .../nanos_starkware_usdt_deposit/00012.png | Bin 0 -> 586 bytes .../nanos_starkware_usdt_deposit/00013.png | Bin 0 -> 582 bytes .../nanos_starkware_usdt_deposit/00014.png | Bin 0 -> 531 bytes .../nanox_disable_blind_signing/00001.png | Bin 539 -> 439 bytes .../nanox_starkware_usdt_deposit/00000.png | Bin 0 -> 636 bytes .../nanox_starkware_usdt_deposit/00001.png | Bin 0 -> 651 bytes .../nanox_starkware_usdt_deposit/00002.png | Bin 0 -> 1240 bytes .../nanox_starkware_usdt_deposit/00003.png | Bin 0 -> 1557 bytes .../nanox_starkware_usdt_deposit/00004.png | Bin 0 -> 914 bytes .../nanox_starkware_usdt_deposit/00005.png | Bin 0 -> 588 bytes .../nanox_starkware_usdt_deposit/00006.png | Bin 0 -> 568 bytes .../nanox_starkware_usdt_deposit/00007.png | Bin 0 -> 511 bytes .../nanox_starkware_usdt_deposit/00008.png | Bin 0 -> 716 bytes .../nanox_starkware_usdt_deposit/00009.png | Bin 0 -> 674 bytes .../nanox_starkware_usdt_deposit/00010.png | Bin 0 -> 628 bytes tests/src/contract_data_warning.test.js | 4 +- tests/src/starkware.test.js | 65 ++++++++++++++++++ 34 files changed, 112 insertions(+), 14 deletions(-) create mode 100644 tests/snapshots/nanos_starkware_usdt_deposit/00000.png create mode 100644 tests/snapshots/nanos_starkware_usdt_deposit/00001.png create mode 100644 tests/snapshots/nanos_starkware_usdt_deposit/00002.png create mode 100644 tests/snapshots/nanos_starkware_usdt_deposit/00003.png create mode 100644 tests/snapshots/nanos_starkware_usdt_deposit/00004.png create mode 100644 tests/snapshots/nanos_starkware_usdt_deposit/00005.png create mode 100644 tests/snapshots/nanos_starkware_usdt_deposit/00006.png create mode 100644 tests/snapshots/nanos_starkware_usdt_deposit/00007.png create mode 100644 tests/snapshots/nanos_starkware_usdt_deposit/00008.png create mode 100644 tests/snapshots/nanos_starkware_usdt_deposit/00009.png create mode 100644 tests/snapshots/nanos_starkware_usdt_deposit/00010.png create mode 100644 tests/snapshots/nanos_starkware_usdt_deposit/00011.png create mode 100644 tests/snapshots/nanos_starkware_usdt_deposit/00012.png create mode 100644 tests/snapshots/nanos_starkware_usdt_deposit/00013.png create mode 100644 tests/snapshots/nanos_starkware_usdt_deposit/00014.png create mode 100644 tests/snapshots/nanox_starkware_usdt_deposit/00000.png create mode 100644 tests/snapshots/nanox_starkware_usdt_deposit/00001.png create mode 100644 tests/snapshots/nanox_starkware_usdt_deposit/00002.png create mode 100644 tests/snapshots/nanox_starkware_usdt_deposit/00003.png create mode 100644 tests/snapshots/nanox_starkware_usdt_deposit/00004.png create mode 100644 tests/snapshots/nanox_starkware_usdt_deposit/00005.png create mode 100644 tests/snapshots/nanox_starkware_usdt_deposit/00006.png create mode 100644 tests/snapshots/nanox_starkware_usdt_deposit/00007.png create mode 100644 tests/snapshots/nanox_starkware_usdt_deposit/00008.png create mode 100644 tests/snapshots/nanox_starkware_usdt_deposit/00009.png create mode 100644 tests/snapshots/nanox_starkware_usdt_deposit/00010.png create mode 100644 tests/src/starkware.test.js diff --git a/CHANGELOG.md b/CHANGELOG.md index 998ed50..f9e6b82 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## [1.9.6](https://github.com/ledgerhq/app-ethereum/compare/1.9.5...1.9.6) - 2021-9-29 + +### Fixed + +- Fixed a bug where fees displayed were wrong on Starkware transactions + ## [1.9.5](https://github.com/ledgerhq/app-ethereum/compare/1.9.4...1.9.5) - 2021-9-27 ### Changed diff --git a/Makefile b/Makefile index 06a0e6a..25f8b61 100755 --- a/Makefile +++ b/Makefile @@ -30,7 +30,7 @@ APP_LOAD_PARAMS += --path "1517992542'/1101353413'" APPVERSION_M=1 APPVERSION_N=9 -APPVERSION_P=5 +APPVERSION_P=6 APPVERSION=$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P) APP_LOAD_FLAGS= --appFlags 0x240 --dep Ethereum:$(APPVERSION) diff --git a/src/shared_context.h b/src/shared_context.h index 8631c35..09aa7d4 100644 --- a/src/shared_context.h +++ b/src/shared_context.h @@ -166,7 +166,7 @@ typedef enum { typedef struct txStringProperties_t { char fullAddress[43]; - char fullAmount[50]; + char fullAmount[67]; char maxFee[50]; char nonce[8]; // 10M tx per account ought to be enough for everybody char network_name[NETWORK_STRING_MAX_SIZE]; diff --git a/src_plugins/starkware/starkware_plugin.c b/src_plugins/starkware/starkware_plugin.c index 872ea0d..31abfb5 100644 --- a/src_plugins/starkware/starkware_plugin.c +++ b/src_plugins/starkware/starkware_plugin.c @@ -167,6 +167,9 @@ typedef struct starkware_parameters_t { } starkware_parameters_t; +#define STARK_KEY_LENGTH (2 + length * 2 + 1) +#define VAULT_ID_LENGTH 10 + bool is_deversify_contract(const uint8_t *address) { uint32_t offset = 0; uint8_t i; @@ -271,12 +274,21 @@ bool starkware_verify_nft_token_id(uint8_t *tokenId) { return true; } -void starkware_print_vault_id(uint32_t vaultId, char *destination) { - snprintf(destination, 10, "%d", vaultId); +void starkware_print_vault_id(uint32_t vaultId, char *destination, size_t max_length) { + if (VAULT_ID_LENGTH > max_length) { + os_sched_exit(EXCEPTION_OVERFLOW); + } + snprintf(destination, max_length, "%d", vaultId); } -void starkware_print_stark_key(uint8_t *starkKey, char *destination) { - snprintf(destination, 70, "0x%.*H", 32, starkKey); +void starkware_print_stark_key(uint8_t *starkKey, + size_t length, + char *destination, + size_t max_length) { + if (STARK_KEY_LENGTH > max_length) { + os_sched_exit(EXCEPTION_OVERFLOW); + } + snprintf(destination, max_length, "0x%.*H", length, starkKey); } // TODO : rewrite as independant code @@ -741,7 +753,10 @@ void starkware_plugin_call(int message, void *parameters) { case STARKWARE_WITHDRAW_NFT: case STARKWARE_WITHDRAW_NFT_TO: strlcpy(msg->title, "Master Account", msg->titleLength); - starkware_print_stark_key(context->starkKey, msg->msg); + starkware_print_stark_key(context->starkKey, + sizeof(context->starkKey), + msg->msg, + msg->msgLength); break; default: PRINTF("Unexpected screen %d for %d\n", @@ -758,7 +773,10 @@ void starkware_plugin_call(int message, void *parameters) { case STARKWARE_REGISTER_AND_DEPOSIT_TOKEN: case STARKWARE_REGISTER_AND_DEPOSIT_ETH: strlcpy(msg->title, "Master Account", msg->titleLength); - starkware_print_stark_key(context->starkKey, msg->msg); + starkware_print_stark_key(context->starkKey, + sizeof(context->starkKey), + msg->msg, + msg->msgLength); break; case STARKWARE_DEPOSIT_TOKEN: @@ -772,7 +790,9 @@ void starkware_plugin_call(int message, void *parameters) { case STARKWARE_DEPOSIT_NFT: case STARKWARE_DEPOSIT_NFT_RECLAIM: strlcpy(msg->title, "Token Account", msg->titleLength); - starkware_print_vault_id(U4BE(context->vaultId, 0), msg->msg); + starkware_print_vault_id(U4BE(context->vaultId, 0), + msg->msg, + msg->msgLength); break; case STARKWARE_WITHDRAW: case STARKWARE_WITHDRAW_NFT: @@ -806,7 +826,9 @@ void starkware_plugin_call(int message, void *parameters) { switch (context->selectorIndex) { case STARKWARE_ESCAPE: strlcpy(msg->title, "Token Account", msg->titleLength); - starkware_print_vault_id(U4BE(context->vaultId, 0), msg->msg); + starkware_print_vault_id(U4BE(context->vaultId, 0), + msg->msg, + msg->msgLength); break; case STARKWARE_DEPOSIT_TOKEN: case STARKWARE_DEPOSIT_ETH: @@ -839,7 +861,9 @@ void starkware_plugin_call(int message, void *parameters) { case STARKWARE_REGISTER_AND_DEPOSIT_TOKEN: case STARKWARE_REGISTER_AND_DEPOSIT_ETH: strlcpy(msg->title, "Token Account", msg->titleLength); - starkware_print_vault_id(U4BE(context->vaultId, 0), msg->msg); + starkware_print_vault_id(U4BE(context->vaultId, 0), + msg->msg, + msg->msgLength); break; default: @@ -858,7 +882,10 @@ void starkware_plugin_call(int message, void *parameters) { case STARKWARE_DEPOSIT_NFT: case STARKWARE_DEPOSIT_NFT_RECLAIM: strlcpy(msg->title, "TokenID", msg->titleLength); - starkware_print_stark_key(dataContext.tokenContext.quantum, msg->msg); + starkware_print_stark_key(dataContext.tokenContext.quantum, + sizeof(dataContext.tokenContext.quantum), + msg->msg, + msg->msgLength); break; case STARKWARE_REGISTER_AND_DEPOSIT_TOKEN: diff --git a/tests/snapshots/nanos_disable_blind_signing/00001.png b/tests/snapshots/nanos_disable_blind_signing/00001.png index 78f3ae440fd061fe3cd225eff7e875fba929eacf..29a6bd33223391861f4cf659bdbf31ac9392613e 100644 GIT binary patch delta 317 zcmV-D0mA;i1K0wPB!3@CL_t(|0qwy-ZW}=m1i`F<`~MHFLuoPa5)?_x_I0`=#BaGs zV)UY1xag9LBt{?wd5Gz3(M`;on64I`#QafA zM~g0E{wk)M#b`}H=p^PN6&)?QQh|!@7N5k7!^C{Dcol<+aeo*U#Jmy^ZZW7B2a7?) zZE=f1#WoT6&vBiw<1ccGnVzl-J_1AjK<)w^r P00000NkvXXu0mjf$-9Xo delta 420 zcmcb?w2yg$N`0%Ri(^Oy;=W-a`vqP}e@2S@qDMU!6!l^Ff^?ea@wWxuUGbE?c4m80A< z^;nITyh!o*=(NoH;z=G&wwa1R0g04%OANb3=JFWDb}7~$Rh3M!^SXGlL^E!Q!?SgK z?_AnMfJ!_Jm;CT})-E#l48Nw{Qin7)_RSN2ib@9YXikXqO=dIt@4_~-KSl54nMH-> zM$KmwE-zJJ)!gUh$OUx9^pssdeLgHL<(d<2s!d{=S>6j~DLZ$S_ojoyRGquhd)q}$ z!gta#M272s~Z=T-G@yGywooXu043 diff --git a/tests/snapshots/nanos_starkware_usdt_deposit/00000.png b/tests/snapshots/nanos_starkware_usdt_deposit/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..2994983f84cf76ab587bac356d5afe297c0e0632 GIT binary patch literal 541 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfcyxba4!+V0?SfW}LV) zm52AlpJ_b2>@)W(0ade0N=>L#7k{_%p*K+Izf)VA1-(C=WRZ-BymEd z+ycg#=gr>vKI=O3DZ$93W?LaYQ1QY>pxO%?Y&v*&<#TnOD>)zbXF6qTB9pT3N&!&M z3dWi9&EBnj=ymuLi`0al9u7OFx80vqnaz8`W+_{Wop8XrwTVif&jYR3;ytm)i1F!7 zQ=gO!i4>qCfqpe|KCDm-Wb*LtR{=T`$TJ28kKEHk+7p0Y?mPqLwy~wK0ofM}OcabW z9iDmf0+pZOF#@XZFL)Sha%TzS%!Lnq%!RyR`IX+l PXlL+r^>bP0l+XkKp5EPW literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos_starkware_usdt_deposit/00001.png b/tests/snapshots/nanos_starkware_usdt_deposit/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..888cad3103b076c369cece22dc895a9529a68685 GIT binary patch literal 530 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos_starkware_usdt_deposit/00006.png b/tests/snapshots/nanos_starkware_usdt_deposit/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..d7891ee9aae3abcb876a0b88dfddc43f9acd5eb6 GIT binary patch literal 882 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfdzsx;TbZFupw)=qDX5;&L%| zTJ}HYb^TS>u0Gc272Y8b!0h z6AI3U9hr^FrT$%;dj3*@!e$d5NvUaVu4$PPAbpjS+Z2I9GnXcw=mBf@KHPZb(gvX6 z^2>lm{5v-F`-FvzGnWF{ZD%qpCP*5YC>Tpkh?L?>xwnRKW;0s~pVS0N-V-?!frNrH z$f60A)7et$yxZ7P%3^-%@YY{xIMXe4Zwcc}SD?^7h$H7eJym`3!iE!nrk%NDkTQ)e z<)6p1vr_xEvZcgb*6$-T#?_A3F6lXpuqsnO;=vB&G#0>+u&cYT^E^$zGXNs9ltz!fE9f;nU01XA9;^m;g1|e(S6FOjYC(|Jf zjGp-cqZ*8WfgA}&plAm=7>I!33ODNWB<|(yWlz6+HPtbSmJ*wJJ>~|`)7#imwgKI~ zmT_h-Fut-K(xRD-Zc9zLsRRtY=#&WyADW7n0o{Nhe+{g4UlaFwpevwyAYusPYDAe% zc>~jg+hHYR(y6vHjv#$)XR=wQTt2+3pejS$kN@qVmkVPpY_|Zt@=bo%i@60CuCiK(Ys=y7fLnfmfahn$-Qxm*C||EFylxY2zYX4@jEA+sn)`qD#FIT#8?#t4 zTt{u5bbf#B-@BLY3lv>Vt>sJ?NI8>GzRI#}f;?q7j z_=0hvJ2(}nwyMJ=BHAFL?IXL%OlL2_T6PMBG8JITnWVZ00P9enfBnuAZRAN7V_5Rlk$5iCk11JMe$NJPVz z^=BhSnn`qjeJCS)d5b!H!rhY-wUHhZER($wJq5~<+w2fZ(_^94bCJtrCCutI1>_n| z5g8}gT-Kr{WRyh4!diI7PnO+5ls+8*WypYz*s3-wh2P!~Y|_;Y2S3vgKT2<{5Yfq`CJYF$WmjU57c$2>pM!4>{t>Yc<20a; z#g&*Yj)5d_hZwvy$Kttl*b2w3fB<`ii(ra>oj_~V$+hOlBU1#M3cJ?UFFrE`w$@c_ zyH!fhLuCz2a0a}8{I7tcTpfO=4}3#4nBEb<_)!Nu+Xwbjp_h3rwg)Jv<}9-lCT2}V z{b-PqOdqnZq>O5?EAz0HYtDc}d;FmNKiPcA7)z<$aB_zH7MnFQNxAJ0c}MaVUhN6q XZ9ctG{-nDS{w9H5SE`-7Sl9IzEEjAx literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos_starkware_usdt_deposit/00008.png b/tests/snapshots/nanos_starkware_usdt_deposit/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..a0286ffbe6abcbfb5db246d45e2d15d347faf991 GIT binary patch literal 759 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfi@&ba4!+V0?Qpu;^A4gUdl< zt+fB#^ZF~Vto;#|lHyROD6ly1qxX50!V3LYlId2jXR7eMcXqJM?mkzg)_J%(;)m~f zi#=0Y<5d(nJ!@7rwsG^C*u);TU;NOUcea$7=^B$e*$;0@{p(;$$*7Rz-EEqaL2AZEc=yZ3`18NJ^>AT$niN=F-GTQ07dj2|y$XRs&S9b0wps)VoU!JiPZy zlk_D)G82FrW&-8afJ~^;vTTR6rHnJDvZX9zOL?bcY^u=A!+Rno11!4RRAIAc8(T`A zNy%_{b{vQW{c75Ic$?3F9Rf7+=cF@vy#Ln#U6>GW&0i@{i~%WL{41D2sC>}3dos` zK!2t!eHbmpHWTaupo!Cg4pdxFbFJab!$zqImB8Q$1KOGMa5Gy9pM4Jx?|e=Td8rAO ze-e04)I|Ka094jKdEvvuhu9^h`0QhtjpW7Z)SVAMYzO+IoO}Ms3m?KwE);|wZe^2N zm$l=9!{Ja~ajA?Qs~$Qr^M;%L5e1sEZG-Exhf))OZt(@m;iv0+&rE9#zuEu{f)j6m zZiG^sb@wb{O96%Qb~qJx@X*7xx_f4|Eo^LC_;48>D$;L{6ezgzCPijCJX1qs&U<=f z^N9-vC+_&RwK+b^Gcw^ZDxVCB`PraYSuGU6m!JLc!!UobS-amZF#P&+G6jHv3i{-v3j0 zj83e1)%o6`4QQjU5zy-Q*BZ_MWlktKA69AR;hoF_5)|i^zf>^kXAaY;y=*Dl*e^Al z*?SPoQg%MP_uyKPn5y&PwFftYSnAG)Hy<>Xl-kCAz2VH}gSsHr)rK=`586sfO}pT5 zSV(HZPV0dFNU0vItGYc3y44$rj JF6*2UngD(I!Hxg` literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos_starkware_usdt_deposit/00010.png b/tests/snapshots/nanos_starkware_usdt_deposit/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..c81ed09b2c3aa6d8ae5592933598a1923fa479a1 GIT binary patch literal 458 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfdN^ba4!+V0?QpFz>blgY!Z6 zgM0or{yfO#w0DCHyT>JltxM(#)|aYwzKpses=apCq$4G=Os7`qMuCK+#NIm@A~ZTrOn7xQyV65ZR{9Mdu+Qrg%+$c)$8Xm*?LVYg=*d2@QtTxdA6 zEHT3&EyLlNH%NNILdKbkBQ0hD6&jiN*q1-=D5fh^CH7d~V>T*o-`<&%_*9nm`` zFHE%B$(Hg?Ozz|bgSjEhM*S>P(s@tpnaY+@CN<%v$(s{7Qg#z0fw*#IqVngU!wR3n zq$X6BJrXZo8eY|eCe#yk_~+U<&;PaP`B1cg>*FkSWs!6bF-780-+fi4T*=4IH9NEUl`1FDpnALW0vfPbnN(;^` zVw@??d!lAFTS}VA4Bx}@**Er?&FJOf-G9Y_nRj_xFf*^oo{Wl%1(^#P+r)WIE`0Dj z>|?iMGFyrtuezkvgqPocCcJ!71tWhlm#1^*ht%$C~UqvhliKHnO#z9+w5$IXNezxro3Gy zHKEe1Lf!eWkW@y56SL8KmMNm93dLCtX|Bz=naGIg)G8@Iqt!wI+fsSAEk#Cu8J1p| Wb2Ie5kUcP{89ZJ6T-G@yGywq6GoOtB literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos_starkware_usdt_deposit/00012.png b/tests/snapshots/nanos_starkware_usdt_deposit/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..a595174e9ba0d5bd72fbd279e3b5e68893985f0c GIT binary patch literal 586 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfa*vx;TbZFupx_G4C;(i1R_` zgMa?>KV!bW1ex$#5(vg=DSG3oaT-ElR)9384Gpl=Dm1^f@L!CP> zM3*}Y2Gs3pQ`~&fAm!iYHg==x@`qo{XD;5kL7i9HXffl=iw$R{o2*F*Z zF%{|{vE?alho_&kQT;sS3^T}3|Lp}VyeAZ#4{x8a@Zs{^8_aq2RhRuycFCdd8WT&z-nXkpD1@*=YIPNedrdJJimW;%BYye7L=p-^gT6 z**eCV{M_49GA!PPFdJ=WnNrPrVvoz=wlf(O3dT|sZe}<ZR03E0;33RMi8!&z* zElfPI1}^m9*TGWu+M$;h#QfT~6mdKI;Vst E02#yn*#H0l literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos_starkware_usdt_deposit/00013.png b/tests/snapshots/nanos_starkware_usdt_deposit/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..3158ea690450f2b8c85c12004b002b02e7b02539 GIT binary patch literal 582 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfj3Yx;TbZFupw)IO&lagUi8i zu2=uq*Yz9Se)!g*VK4JBV-C&WKWoz`S-k14IyUoMm0IWFIu4EW+>4RtRSIvkw{qJ) z-k{BNYMKd;QTzYAL~p5OZSof#4llR(=qVMJ($*$Ab77)uTE-4V=fhVFPUOsN*u=_P zev*f``Ha_Lh0T`?P5_w@bmoG=iJGR?wG$oFmOfn9wp(f$o7BG*4~6I6nAJ9Y(#_4S zx*0Q4Cd`zYu+#gQ-puxsHA;+6txb81;;$K;SOc`)`Eb{n3mcS-P1XR-G*4O9=9zYy zWlA>hi9IogRX%T%Vw>52vEj_tR;Wnvk2E8bnCKl>8qOS+%J|{VJNeAR_7fKhJRN>6 zWt_R(#K%Y*B*bf?@cHzid?OPZ*R-q|Qfe~~OJ_JdGiQ7n#BAiBxx@R}2R5LKwiNib zwJkq!XF{bkuSv~rHmSN0W~1w3?WueMPz z$jMOtJF#s}Y?8nbo644w2lP(7Qu7&Lh$$GG`0$>%lOd6E?`G%PjEacEho#sgfuXFQ zeWOb_8W?6gy!z_Ez}=wqxl_z;<{4*T7^Tcp+APW)4b*$#gTTy%593WQI2=|m1}X&# zr~*UES~!4j_tt_NTU!sW)0HX9eYhc;yFK@KDXZ;sPq04($@Y}pt$UkYuJ7O_vMLEmi+4c;Fw95@=>aR7Nxv47?$ZTZtr_3n+(gx*XR_$~kWo+{1#Gb1SXD%3= zxUfOl`S7wtWoKq1=fesh37M0pZl2)bJ;7rH6tf4a>N|5`!^DM*Gq+1kkOZQXHnx<$ zq^B8D6K1Bx%Ze~iP)OohG zIi_9y5O&xt%^k>mro%ENocDx`AG1-use^*|uq^-bNuC4jCC(rnYh>Cs(MmB?|tDnm{ Hr-UW|v$x^l literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox_disable_blind_signing/00001.png b/tests/snapshots/nanox_disable_blind_signing/00001.png index 77762c6bf76e670cc4a9724c3e4841a7ed6e8af8..bf49b96764da67bae018e60d4670bcc3af40f6e9 100644 GIT binary patch literal 439 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}EWU|_8Cba4!+V0?SBHMI{n>HXexE$Pd~hO?>f&+dA2I;#7k z^T(ukiM2Wj#<#TGvX5r0l~^mfcx%#@u%2sO7o!ZLw9y5Rg@jmX&kCwsQ4(sh$>L9*Lc27jyq$!sK>FFW9_wh$*Gc&7q{{i&M$5Az zbWeciA&X$4kT}u!kVyvTrm;+Q|ES8T^*9G8DWX4Vfzi1olUl-$&Q@8`vw4Ne!@Epo zi`T}>cs-33`qz3&mvedafoBF<+f{5r@;raU0~vFcWq7$hUAE{`K;X`mHX$K?K|S)S z4=1*$%vl2SkBkPVxv1#WXrX&6RUWE)?pV2EP734f!z=GhGT5gr<#EV2wPt(6*^JdN g^|<_x94LR;;y*9t>|4WQ28<8}Pgg&ebxsLQ0KCJ$1ONa4 literal 539 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}EWU|@XY>Eakt!T9!IV3)L~2*bfQ zPUa_n%WIxjT78iBmSggnP4d>U`i~xLe}1}9rf09rdGWZu>0oxP%z??%pMO62@l%au zU-QQHqqCoLCu_5RNXf}I+_p_3I=W}A?y+lP$=Tf-w;sK5D=8-zhw#VdkdPQHt$*I4 zqPr^${yCr=^dU1by^-8d4avGbAQNPgF}(eCqs^LSa#L(W${lmp&2} zo%%jxPKclAd##YVRqXa1Uam)7mp%&mC_8n%mY-I9Xid<(h|Hz>n&pqN3_k{eh;bPo2Nw(PZX|Ps^NA@A$W# z+I@63*VICPEz$R4`$JdsR0przp;H&UQsR5q!lKAMfj~yc!cTc0TfL6%n9enIJ>P?q zyrFYK_5~LP{RH{ruFZ~xTvNN=hpd>R6=D~-bMsN&l|B1EC;SOK>iRTKE@#anf1uyW zza#`}P49{YhM8Q>5+|Ui19yUS=xLRgF!&$aMnphj58t=qn_u6(yH}U>7%7Zd@yx<8LGD|NL^HOwMbIhRMr6+gQ$n z$QbOfoPT3l5rg{eO>DO>VIn!5Rge5qUD*pZP3XEG70O~b+m^~6IH{zir*(hjjumT?HZ15`uN79ppw7MWhwRj;G6zmJ zX}t>p31G2LNNZm)gL*#D!l%o%LhK@2Pu*plvu7pO)Rj)DzqfKt&HQjsOG`^nG(I#& z>m8U?E?O@7-eGByRLu%5(W#zGlU4=%T;=4N8nkjp$cm5{t&n?;t*5>`I2-DtRW52D z`Y}^06p>c3F!~oyse=C}`u~=Lfl0?EtEOln)H`V4z<_C!bpSXi?Gf qAj6e=CNo>yoMw7sni(PVjlVP7(D7f?IZe literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox_starkware_usdt_deposit/00001.png b/tests/snapshots/nanox_starkware_usdt_deposit/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..c1ca56bcb444404e2f79effe6511249c799fba52 GIT binary patch literal 651 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}EWU|X4~bgu zLY8%fYfbO!KDG3bU+StEAzFGMDT$g1U7oI~t9Areh8nK)5nUe=vd{hLqD7zdR20nD*^K_v#(NKh3p5 zw%OZOFl(&`GU}fnlwLJMOKobG_0*M*78Qjr3|d&UGGJ%O3b2vlAi+xgQt2L?j)wS?$fR7diTQA(}L-mQ5JOk@n6u6{1-oD!M<0$4iN literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox_starkware_usdt_deposit/00002.png b/tests/snapshots/nanox_starkware_usdt_deposit/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..0329541e3e2f0c94f0a7cebf7ec69261fee75be1 GIT binary patch literal 1240 zcmZuxeP~-%6pv!vi0jxGuidO#a17+OROg_ZS;n?}tZg>i_ug)oR@SPKSV7miGO(eg zErU1lwIQOsj)A7l3t8@4U7ii2q_o+ba&)CMgQseVRgTYYRP;cX59)$mq&CkO4^DhGf2E#L>4Ys4W=cz|GhrEj| z+YC3$0w+xCpPR~l+j@V~w(t9|O}apRC_YB&OmI&b?B8fA-LHFx& zVULhu`WAlG2pzWC?QXo%Oook8FJlGUd`r49mOR9u!^ho9Pm`wd3W+(>RcJ))n9iI> z7j%-_Q5YFCH<>OcGj*v2+`mccVDn$r`s>{o<7yOi5wiu%nK~GjPVQnD#tK&7MV*jb zD+H;Ve8_77w^nI{4vsJ)mV>BV;9DEB1p-twBRhn<0r^U za{(lsLarvaLeGbEz&8RM03>=)*XCgbov`^6blk-trk6oMi}*^;zVSF{No}tH&Xt^~uXBR_(`nC9#+usBpnJ^|q%Y*+JT^gh0^xcvvi7nB z#ez6K8h36iiYWzaois4GSsye?9b_lN1e5Dymei%lnrxJ~K;~dGF%RibAnx>F#U}{= zLE+Jasv#0=w`*)G$^ynf6o>^zQoEUd69eZ(s?cLd16EVcK=m=%PBdBAUZU^C;~(pWchFFYA?{WwY$!@(w}Yjes2$ zYAVh_ORSByJTl n-KNQzOF+i$|L+|5gk&pM6K3+}TYp92i)CoAH`*eWch3I};@3dg literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox_starkware_usdt_deposit/00003.png b/tests/snapshots/nanox_starkware_usdt_deposit/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..51b084fa13b65167395f1406ebc573de8c7d5d9e GIT binary patch literal 1557 zcmb7Ee@Gj56u%;CM`)2TF4gJc#>NWY%8C`VQe)TCOSBoy-T6JDQ0$g2ld+m%_CvP> zo@@HlKgL{N0bP_4GdX;!rex=&R58!p)55&+gh-eE9o&&!!FO(X`?0uE{$Y zV)UxJ?qcoF#zmu{&^ht?sbALz=Pe%+R_B4Ym$EmjoCj70thgLmRB81V-YsrPIx#Nz zqqYicQl%)CJ#Q>+U6PX4a0}}BLJ)q!rM!oBfF&ETWrnI>mKkNOQ5{Wikq{TjsY3@5 zMtzAcep%@kj9@31ll4Kn+^-V_I%rpl&`D+ORX8#+vsQpH_!$xsOslqF*kaP6wxdBb zEchkqAnFr@gj|FI$*@i|iZtz*u*>BLeP?mt(s*VUz5utCDJ`fjuu6g_?75VDfh<#) zb?;aaGL!WwVc==xMsBj6PBl6vlKlc)*oE;`Nl4GdDJS>?Z|S`i*JTs!xrPMlv1QI2;`g{V}vi&JLi z*UY}eO8PPvIlWOIOlG^rnAWNfFmifBz{Y_BaJU$xQorq}U8jJQz|CRdZz_9K;gUMXspz!hu-tXdl37$kY ze%t2AG!*xdr{StlH({M(BB3at9kg2=KsAfje;O!8&_K7jK?9&6J=h<6@+EJW*?bJOCXaNX7Fq`_Ac)*ud0&>;XZ;2Y2&27Cu| z5I@R53pi)FZQ*)zDLWBn*2i^X8sPkWV3Dc7HgNO6(uhHN~dBWYSBk(9vW&GQr|da|J>sb)?$41$5H^hutJ<2M*yI(5?IO yP|K%MZXD%taCIa%KevfWZ4Nl{F@CVSUud2@cc-oF?jJDji6;7Z!#MTYCw~D-Cc}vU literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox_starkware_usdt_deposit/00004.png b/tests/snapshots/nanox_starkware_usdt_deposit/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..214f33048e00126fcd09337eff8e51631b6020d7 GIT binary patch literal 914 zcmbu8Ur19?9LKL2qXt7F?u$bAA@bq03YARJ{4-o@Y3Avh0l3E`;pnNHF@8 z;58AAAY+Y`f&d4TI>YNOS=!-zG$QWf*#rE+`K7 zPDK3a0;anIx{&vRJ8+KtbcQ+JWbyzfgsEaTl3^ObCG34vNwTERumk|=;`e&D>}mx( zM;ahpp?G736yryjlUgZvwmC%BSkXYePewc_gRKSdS3Px6YLXk~RWEhQy|RUFW%Cb| zFW*K8$@>8qy@kr*@WrK_>{zirwo9B9LMGD`#1Bl_KHIU_Ip~Df^s$#JdqItavm}h& zl#+O@yoZ8W`UXr>X5~-OHpNuYrxqua>dGcc&})^lC>vIy7>;~<7jL0ZW6vm6vbOSu zJnOf8SItx$tfvQ2HS{WMyU=w+!ma)&_D1g_A3_G;1Yi&Cg(5ywHS>L5+UzLS=>yS{ zh{=IY(6~M|E7Hsc762OjYvYn$z{8R*Ca|DiDr*xQ@*BkU9|ia{(&19XCU!G-sY8x$Ks={u0noK*3|O0&%v2g7utAkipmz3*Lq7k)$A>yj zv7o&xQADwJdih=_Tyc#jYkM-c?&{wb#U>SWS8>Y!73@s&9bMhky3F_VtuaP@Y0-0C G)r~(`P^Sj~ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox_starkware_usdt_deposit/00005.png b/tests/snapshots/nanox_starkware_usdt_deposit/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..b062f58897b19c561098658028363ddd81288ed8 GIT binary patch literal 588 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}EWU| zC;Wf?_kXqhhnqliqz?z@;W)QdRzF_WSoSsN>K^}j==8^;eKN-nZtG*VsI)vk`SDY* z3~%%7&#k$d>;;>2vp4AGZqR+po*(kjp;t>!%O9w~`{>+LAq#^F1AhvOmTLurc!hyGLwvMECqu+n?f`P$8~jiM349Da z8ZJ7y3#evgz|W~&>$UWNJRsL_<%$(PUkmGd4K{E+ z(DGnc*Q4_TcCNUy(nnMjWJzG4A&@!wRJf?te(%&(D=MZlTil#xdSjXyGKz?BJ$j0* zdsRT>-Go3bX`XFMdErPdBxnB8M<*HQ+zDBcGk>|$)4YPEakt!T9zdW7lmD28M&z z9?bvpfBu#Hi;)|c5@l{YVT!C=mi74bzb(1ar(?GL?Ogsgv;Nk$-c&j14WGBXx4wND zEF;4v{#*ETh*?7V%xeiVZvoMRHZ84b|MLrsMVEKYU$p2^o?OiYuBlzkUPnEjh7<-_ zhRTF!@oBXKg(iC)UHNE15qq=r%8Jm!(1k@S0xClb11v*o!dp*GJ>}{8RFBPk$)Zo{ zTK87YxY#VcD&k+?LEn%$At8RE_m_U^JJrKxzPKppr?6IgSM#aWTvOi%S%!q%Im-4% z=dzSeurv~?E)W*g3Ks<`)Sl{mRC{VL5SIg;@g8W}y9Wo^11sI1u5x<10O*9DQ@N%( zx1Iv3X+7m{9Qkjw$T~K0QLWSIK`VDi)vOGN zw43d9H1mV&(xjg`qFT!jwt5}?G!vvqKSXQV`JjcLvY5-JW%5p2NpJz4&ZucvG8 RPhg5*@O1TaS?83{1ONg_{6qi% literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox_starkware_usdt_deposit/00007.png b/tests/snapshots/nanox_starkware_usdt_deposit/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..882d04d8da99c1d2e7fbf931efeed90f4d733d48 GIT binary patch literal 511 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}EWU|>Av>Eakt!T9!IVApF80oQ}U zp6{Q$tM^RTl@i_JVA5v(Z}U{ijXz4~T#M?7yH@yUi{J6gwMSnhGqNv#Y!R{i@s?{z zUjpvPsJm%%TS(-JF5a57<=f%*;GHUo!8a#;@C@0eQq%qDVMxfaZ2KC)sVaLG6-{TE z+I=ck$ZV=E=j>C{T6~{QYU%b80xG<-GRN~r%2DPOIi4PemQ8B$7Me5xD6J1y==W4~ zYJOl%r%H}ixt6%-)c@X37Zol4)CDwc(g!agySx1SlUhE`d(^G+aJ|YNZO-W`Di0^M z=yI-Cc^E%w!^)anj~Ic}iWM;+a*s0D`tp@En^MGK|u8%RZX1R${Ga@5&V= zVJ1r_wWzEp3GKOtBw6A3^yQ=lizc-!53WpQWH;CHlsLb5Qp@f~ZmOJ*XHHsB6#gg3 z^H9Y$l@&2v@ty&a=RqDRoXj%yqmP#74()#)O{XfvrmFne+R%J449P}Nz=fgM1at<` bf`8e=j812?ONnd-Ml6G;tDnm{r-UW|Ga%-q literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox_starkware_usdt_deposit/00008.png b/tests/snapshots/nanox_starkware_usdt_deposit/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..7d242219e1dd5f36cfda88a4783689d1e41a0f58 GIT binary patch literal 716 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}EWU|^c;>Eakt!T9zdW1h4*1H(aE zC;OZK?KAH$>dN5Tv8wEmm|sHo9LpaM{}srv-;V10&CGxN@ZX0PeA`N84$N);{rB9* zf_jU-=3L(9?%&L}gZLht+qUN5wk<#;9UpSk^Jz$7&`%xF^C59}d*8~3gcUuOUJRK@rtjeDn!0L6$h}3M=5=)iA6>G@DAY%Eau-nb z(nX&_?^ZC1z7JfvVn#@v8_?)gJ62hQ?pdA$)R|XPs3odC6{N)|^bem_IFOUBCAyqz z>iV<~z9E0)MJJyM`5376KJcfg=+yOZj+rkH3jDa{k*=tg{KBBX!l0QUT3UWu!9dr9 zmoSuXOXc0R6dB$9aaLD&Ep{=LZhpgDM-0A76q@bNZ=dROIo4UHo6PbJe z?J@ZUpL|kR1^na@wGaNd#%bxJRZc+eOs$Y*TvJzKW!}&HprjRYFL)tPW2*VThOWt{ z+(T+YT2EDLg>0+e{gHjepKzepZaz0x1^Ee)QO$Vfbu^0!v}qD!w`k`M$>q(WeXTJ`~u@;XhuuVeMlEKe= zblsz=UEx}KqN4T7AKeXEai{i!%Tgzxia)bM_ATa`n%*oPvTsvYch@PPsOZ%25IgUu zb64ysVo=Xt1~b`u>dHrcsjGGb&(xZ?G6v}P_fHu7w#{EPBV^y~gWI+M5wpe3X{I-( znE_FRgX_`ywTm8U1B3SWgYMNkf_H|j2#E>N13ADC7-B&0K=|*IJ{(=SVug=rxv188 zEw!of3l|juJplBIck8LmK(EQxd^j3f6LvH`)JIEndRKht$2_|qhkz$*-qD4tTGeO+0_=QHHdzz8l2yrP6@|$#y XzklTVrji}Nw8!A->gTe~DWM4f-qkj) literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox_starkware_usdt_deposit/00010.png b/tests/snapshots/nanox_starkware_usdt_deposit/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..7a77cb1234495ce3418c44945e3e8e8d33244c1a GIT binary patch literal 628 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}EWU|_QLba4!+V0?R!u}j*Lf#IOs z!}(wS&%cuYu~MNa@uRBZo2NP6q3rf| z9slvd4Qmq%3hNW1Pch!PInDIOG&7P=MWE>YrAe!P@QKb(_|T*kqP1`Ksrf5*1pQ<& zzvppu>Zy>zrJsCSPlXt+42fA8GDpi#OH?cP=n|vQn3a1bN$0zzt_qkLvW#o${FMPa zgJy!I&xfq=5!IS}DrDg&t-L)mxTa3_YCUy7XyYVl{S}Y?FDY8}qr^OJ!l{srf6Mc1 z0vCST9=ZZ(^oluJYExHtc|Hvf0WyM*8jGq=)t(CEUkzDNQ_4`Trxg+x*m}xXRO|Ns z)d4%DVnSBr%=cXSDC>iB>#1)yL$sCw0|ms~sTH#9V5`^BZ!@(**0IH}2+5hh)amK! zgTh+t*F5?k^sz5wp5z|Isc)e33ice0m%!6##_ z;MP+slYssL`f%l=B|!^|Rs~d=o7*|Go_fFP$EqY(^Luknt#o=?zQSg4(W;1}51dzo z{PEQi71etG;@IrfGeYWImx8qK3tIUjguNjBcQQ~WYlH6FW8d6?VfFqE!@Hc*QaRqz dB% { // disable blind signing - await sim.navigateAndCompareSnapshots('.', 'nanos_disable_blind_signing', [2, 0, 0, 3, 0]); + await sim.navigateAndCompareSnapshots('.', 'nanos_disable_blind_signing', [-2, 0, 0, 3, 0]); // we can't use eth.signTransaction because it detects that contract data is disabled and fails early let transport = await sim.getTransport(); @@ -23,7 +23,7 @@ test('[Nano S] Try to blind sign with setting disabled', zemu("nanos", async (si test('[Nano X] Try to blind sign with setting disabled', zemu("nanox", async (sim, eth) => { // disable blind signing - await sim.navigateAndCompareSnapshots('.', 'nanox_disable_blind_signing', [2, 0, 0, 3, 0]); + await sim.navigateAndCompareSnapshots('.', 'nanox_disable_blind_signing', [-2, 0, 0, 3, 0]); // we can't use eth.signTransaction because it detects that contract data is disabled and fails early let transport = await sim.getTransport(); diff --git a/tests/src/starkware.test.js b/tests/src/starkware.test.js new file mode 100644 index 0000000..84bb16e --- /dev/null +++ b/tests/src/starkware.test.js @@ -0,0 +1,65 @@ +import "core-js/stable"; +import "regenerator-runtime/runtime"; +import { waitForAppScreen, zemu } from './test.fixture'; +import { byContractAddressAndChainId } from '@ledgerhq/hw-app-eth/erc20' +import { BigNumber } from "bignumber.js"; + +test('[Nano S] Transfer Ether on Ethereum app', zemu("nanos", async (sim, eth) => { + + // Provide USDT token info to the app + const usdt_info = byContractAddressAndChainId("0xdac17f958d2ee523a2206206994597c13d831ec7", 1); + await eth.provideERC20TokenInformation(usdt_info); + + // Provide Stark quantum + const quantization = new BigNumber(1); + await eth.starkProvideQuantum_v2( + "0xdac17f958d2ee523a2206206994597c13d831ec7", + "erc20", + quantization, + null + ) + + const tx = eth.signTransaction( + "44'/60'/1'/0/0", + 'f8b5018a0472698b413b43200000825208940102030405060708090a0b0c0d0e0f1011121314872bd72a24874000b8842505c3d9010101010101010102020202020202020303030303030303040404040404040402ce625e94458d39dd0bf3b45a843544dd4a14b8169045a3a3d15aa564b936c500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000030d40808080', + ); + + await waitForAppScreen(sim); + await sim.navigateAndCompareSnapshots('.', 'nanos_starkware_usdt_deposit', [13, 0]); + + await expect(tx).resolves.toEqual({ + "r": "14c368c0d32e399470d6113cf796c5f4cd70300766337d8b0ba71ecad21b3d52", + "s": "4207c027959e84fc2242a1f4fd955603f137ba28f67268ffc91fef5d65071b0a", + "v": "1c", + }); +})); + +test('[Nano X] Transfer Ether on Ethereum app', zemu("nanox", async (sim, eth) => { + + // Provide USDT token info to the app + const usdt_info = byContractAddressAndChainId("0xdac17f958d2ee523a2206206994597c13d831ec7", 1); + await eth.provideERC20TokenInformation(usdt_info); + + // Provide Stark quantum + const quantization = new BigNumber(1); + await eth.starkProvideQuantum_v2( + "0xdac17f958d2ee523a2206206994597c13d831ec7", + "erc20", + quantization, + null + ) + + const tx = eth.signTransaction( + "44'/60'/1'/0/0", + 'f8b5018a0472698b413b43200000825208940102030405060708090a0b0c0d0e0f1011121314872bd72a24874000b8842505c3d9010101010101010102020202020202020303030303030303040404040404040402ce625e94458d39dd0bf3b45a843544dd4a14b8169045a3a3d15aa564b936c500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000030d40808080', + ); + + await waitForAppScreen(sim); + await sim.navigateAndCompareSnapshots('.', 'nanox_starkware_usdt_deposit', [9, 0]); + + await expect(tx).resolves.toEqual({ + "r": "14c368c0d32e399470d6113cf796c5f4cd70300766337d8b0ba71ecad21b3d52", + "s": "4207c027959e84fc2242a1f4fd955603f137ba28f67268ffc91fef5d65071b0a", + "v": "1c", + }); +}));