From 5b41675f33e9c5b1a9da0bca04e10b6b1de55f4b Mon Sep 17 00:00:00 2001 From: Richard Moore Date: Mon, 8 Feb 2021 15:26:10 -0500 Subject: [PATCH] docs: commit built docs --- docs/api-keys/redirects.txt | 1 + docs/errors/redirects.txt | 9 + docs/favicon.ico | Bin 0 -> 25708 bytes docs/v5/README.md | 7 +- docs/v5/api-keys/index.html | 9 +- docs/v5/api/README.md | 1 + .../api/contract/contract-factory/README.md | 74 +- .../api/contract/contract-factory/index.html | 128 +++- docs/v5/api/contract/contract/README.md | 43 +- docs/v5/api/contract/contract/index.html | 41 +- docs/v5/api/contract/example/index.html | 9 +- docs/v5/api/contract/index.html | 9 +- docs/v5/api/experimental/README.md | 2 +- docs/v5/api/experimental/index.html | 11 +- docs/v5/api/index.html | 11 +- docs/v5/api/other/assembly/api/index.html | 9 +- docs/v5/api/other/assembly/ast/index.html | 9 +- docs/v5/api/other/assembly/dialect/index.html | 9 +- docs/v5/api/other/assembly/index.html | 9 +- docs/v5/api/other/hardware/index.html | 9 +- docs/v5/api/other/index.html | 9 +- docs/v5/api/providers/README.md | 1 + .../v5/api/providers/api-providers/index.html | 9 +- docs/v5/api/providers/index.html | 11 +- .../api/providers/jsonrpc-provider/README.md | 6 +- .../api/providers/jsonrpc-provider/index.html | 13 +- docs/v5/api/providers/other/README.md | 4 +- docs/v5/api/providers/other/index.html | 20 +- docs/v5/api/providers/provider/README.md | 95 ++- docs/v5/api/providers/provider/index.html | 114 ++- docs/v5/api/providers/types/README.md | 22 +- docs/v5/api/providers/types/index.html | 29 +- docs/v5/api/signer/README.md | 6 +- docs/v5/api/signer/index.html | 15 +- docs/v5/api/utils/abi/coder/index.html | 13 +- docs/v5/api/utils/abi/formats/index.html | 9 +- docs/v5/api/utils/abi/fragments/index.html | 9 +- docs/v5/api/utils/abi/index.html | 9 +- docs/v5/api/utils/abi/interface/index.html | 11 +- docs/v5/api/utils/address/README.md | 4 +- docs/v5/api/utils/address/index.html | 13 +- docs/v5/api/utils/bignumber/README.md | 2 +- docs/v5/api/utils/bignumber/index.html | 11 +- docs/v5/api/utils/bytes/README.md | 10 +- docs/v5/api/utils/bytes/index.html | 51 +- docs/v5/api/utils/constants/index.html | 9 +- docs/v5/api/utils/display-logic/index.html | 9 +- docs/v5/api/utils/encoding/index.html | 9 +- docs/v5/api/utils/fixednumber/index.html | 9 +- docs/v5/api/utils/hashing/README.md | 20 +- docs/v5/api/utils/hashing/index.html | 29 +- docs/v5/api/utils/hdnode/index.html | 15 +- docs/v5/api/utils/index.html | 9 +- docs/v5/api/utils/logger/README.md | 48 +- docs/v5/api/utils/logger/index.html | 85 ++- docs/v5/api/utils/properties/README.md | 10 +- docs/v5/api/utils/properties/index.html | 34 +- docs/v5/api/utils/signing-key/index.html | 13 +- docs/v5/api/utils/strings/index.html | 13 +- docs/v5/api/utils/transactions/index.html | 9 +- docs/v5/api/utils/web/index.html | 9 +- docs/v5/api/utils/wordlists/index.html | 9 +- docs/v5/cli/asm/index.html | 9 +- docs/v5/cli/ens/index.html | 9 +- docs/v5/cli/ethers/index.html | 9 +- docs/v5/cli/index.html | 9 +- docs/v5/cli/plugin/index.html | 9 +- docs/v5/cli/typescript/index.html | 9 +- docs/v5/concepts/README.md | 2 +- docs/v5/concepts/best-practices/index.html | 9 +- docs/v5/concepts/events/README.md | 6 +- docs/v5/concepts/events/index.html | 54 +- docs/v5/concepts/gas/index.html | 9 +- docs/v5/concepts/index.html | 11 +- docs/v5/concepts/security/index.html | 9 +- docs/v5/contributing/README.md | 67 +- docs/v5/contributing/index.html | 89 ++- docs/v5/cookbook/index.html | 9 +- docs/v5/cookbook/react-native/index.html | 11 +- docs/v5/documentation/README.md | 2 +- docs/v5/documentation/index.html | 13 +- docs/v5/getting-started/README.md | 14 +- docs/v5/getting-started/index.html | 25 +- docs/v5/hacking/index.html | 9 +- docs/v5/index.html | 11 +- docs/v5/license/index.html | 9 +- docs/v5/metadata.json | 2 +- docs/v5/migration/ethers-v4/index.html | 9 +- docs/v5/migration/index.html | 9 +- docs/v5/migration/web3/index.html | 9 +- docs/v5/other-resources/README.md | 15 + docs/v5/other-resources/index.html | 47 ++ docs/v5/search.json | 2 +- docs/v5/search/index.html | 9 +- docs/v5/single-page/index.html | 652 ++++++++++++------ docs/v5/static/script.js | 10 + docs/v5/static/social.jpg | Bin 0 -> 44123 bytes docs/v5/testing/index.html | 9 +- 98 files changed, 1773 insertions(+), 648 deletions(-) create mode 100644 docs/api-keys/redirects.txt create mode 100644 docs/errors/redirects.txt create mode 100644 docs/favicon.ico create mode 100644 docs/v5/other-resources/README.md create mode 100644 docs/v5/other-resources/index.html create mode 100644 docs/v5/static/social.jpg diff --git a/docs/api-keys/redirects.txt b/docs/api-keys/redirects.txt new file mode 100644 index 000000000..f8fb2c165 --- /dev/null +++ b/docs/api-keys/redirects.txt @@ -0,0 +1 @@ +index.html => /v5/api-keys diff --git a/docs/errors/redirects.txt b/docs/errors/redirects.txt new file mode 100644 index 000000000..7d4ccc6c8 --- /dev/null +++ b/docs/errors/redirects.txt @@ -0,0 +1,9 @@ +server-error => /v5/api/utils/logger/#errors--server-error +unsupported-operation => /v5/api/utils/logger/#errors--unsupported-operation +numeric-fault => /v5/api/utils/logger/#errors--numeric-fault +call-exception => /v5/api/utils/logger/#errors--numeric-fault +insufficient-funds => /v5/api/utils/logger/#errors--insufficient-funds +nonce-expired => /v5/api/utils/logger/#errors--nonce-expired +replacement-underpriced => /v5/api/utils/logger/#errors--replacement-underpriced +unpredicatable-gas-limit => /v5/api/utils/logger/#errors--unpredicatable-gas-limit + diff --git a/docs/favicon.ico b/docs/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..ca3ed2a482696fcbc69e35b54bbbe425eb1f3867 GIT binary patch literal 25708 zcmeI42{@JA+W7b0QKm8rMdo=(B2&l^wt1W99U>V^15!4n$dGw1l5NNwN-0w)l}v>U z86s3DnKOKAoiE?t<*$zSyyrdVeBb51-ru{X`@Yw`?)5zDdG>bg5C|lK06{^403{28 zhY*1{ia;P(Sbnx?5C|90w}1c7wjcr#!vGY3K>a)>1fm=m@PIaO0eb$s9~1}#u=@`e zB#4g{Z~!0-5CX6R$N@V5D8NQS1Ul^jb%0EO55N*&1TY8K{zMa$vH&pv^b75_0d4|j z09F9lw^j~;Mi3wc;0fRafGqzF0Z_^SRsc5u>qP`~cmWgv=KvFcY{1%`2n20t593-Z zFc<0oxb{`?0~M$%x7q>9sGohxYx-an<_gBSHfJzL&|V*~D$v&=;5C3}wR3}#8uV2G zpf22>Re^Eh084;bz%9Vq^}(w%2k;R9=MDj^jR`dWCX(R)z5u8L_Y3X|2_O|P3~&Lc z05-A(-Txzzpay-^0^S0a0c+O_n!lCpVDu!Q22cXf0c^?t(G0)~o&_KefamAm1e~#3 zvXz1VMH!$3u?ho}044wnfaOmxpoHh9IDiAN69CWbKPz;=!Erzl0G`j&fH43(bE^Tc z9|E6uX@D$1#+r5nsKe(eJe#Ee`vCCS`}bml=Rcgc2LR7`NC7|(zyg5Jj9&=>7=Yu{ z02Tmz<`@I)0T%%00noP=;0S;P0Aqr7P~hC~`L#OlAgHSXHY-#>Q4Ij!Nz4Fn4pP8c zfqTgc-~zz+ADA0{02H{dt8;$=b@*v;n2>6}A_mDQgs;&3$ zl-G?x|L~g70Kj(#nBO44C}7oJ3aG7qIFV z#`!CW2Lr2ma4qotWHVv~l$3v?=m5r6{dR!*+V{P+X0O)h!Fy^mf&@zNJlJUMtM>3Z zTLQos<^k}Y*hrc{=W3j(8!2qi2XnL^uzLS&pz^nC9llep`qte@3G~79V^s%U$M7EB zjKF*LcLL*ET|c}x;QhIgXoAkw`C;k1kc@1Xzq-?3dg44-{&fcthIkfKxI<`&x}a`^gjK_tlyVe)1!@c^mf&~ts zFSw7%KdAs^F97y$1QzuF5!opBa6XDZ;$#C|dC&*rO9pJ@i{ukpGH#%@ndw(;&eh3FT*2j>%Ug;O@^>(n$@(bO~ zcH@8|cC*Sr4_;pz#j(+Kx8ChWcI$QiXge7gY-aAYej7n!eJt{86@F1)Zv)$ZR&M+Q z4l01n`dDzA@U!0LpAo;?CgxqQ^3RN4XT9@(L3^X?2e*lNH(EFB`&SCQSKz*{XES+( zd%fNcwqgIjN^oGJjbdQgL;z4{BU{*q1^m^rA4~wBSL5a z4?2gw*V_NC4)X-{|53pK!wJCe=79U~M+6I$f9G#?EFb9onb=ojfRYRFn$BDAMjU7FL1s(CoJYKU_u^N3^{-qL z+<%z!KN34!^M69@t9gR4RBUn$Q13q}_SH4OQXY^G*k~_c+*rW>7Lf;muJWIn@Bb~i z+=_E616vu`%D`3zwlc7lfvpT|Wne1}qqq*E5HH=ofqv(%WeRmlYyUAg`K23uT= zSFx01bhEDL$*a~H_HW)e#^n{t?3TLNWcsS5MOjxd#IR7NP3CUaEITXf3WtJBgsLhV z!S^MO+2BO!+4n0;z3wyR!{3&2r8St&9 zn$tLDW0@D=nmOnskZaYd3ATMrsqetv61MeFqw*IUl&Cl>$Urp`QwH2m1ZcGfiIx<~glbT1($ zK#YW>%??$|QScyjDNVmdp+_^x2VWe@V`nJY#uX;$YeU;@o|WjQKj_Y^m++vG4zDQc zYfU*9n)<_6f6y<9Yy6el7u_5IcPCAj!^rJFgd#m!gfx+SPag_6by|UZa}w#y3CF(B z@hC!H=J!RLFKBW2uaN9sPLJLDwuduml%gK^&Ai9_yz(J?LG=T);H=nGE2djEUHr@rHSCa z;TL;V1D*ntjBvWvQ~s|ns+6}7ct{RE#k3K!2Yog6kX!$zML%rs=77YVzcf zBRqEv=J6?ypA2_NJ};fW{`5Ol_PAw~N3?N8&EyA8jJ4v_F{Z!=^Ir}7Ez;z|JqS&N z$Bs$LX_$7uRPA^`Om?+0Tq=&c_g<+Pxj5PQfVQfU`Ze`LbdT)CXDgHv#tY#!G(Ff4 z5pTcQ*FOMJAHj;&-m`k~X<*{uUhif3P8CzV7oBZ-IGNI^f;SFH_oPC{U%Uoeds-8F zymovy#&Gu~?*6a0mR;2fEgKrLUw9NgQ^at8d-;ie@oZN_bCx(Yk#=A9X-Y?ykmbet zmd^gjw{N!5A_e`_Foyo#DQ>Fyz?T|!TkUn<`@TX0#TCL)9)E@fpF^FMa*DO2qitu!XEIb3xd^Sm%D zk@iw_dmK%_RHnvWZXW!Ex&x_a(RY(fche(kx9)me^Xg$RpW)}(tx~2$;8C|Cn`P3k zS$4xGvuesRe9ZB>jOI+SK*CL**lIy^cII=>k})Xp5cGuEV;BI(;zT-HVU;H{@jM46fUdH-H@pQY_t2AyR+K5G5- z5=ej6N@b1KB+rraco*SL!{O+qtOxzpGsz6@iMPKRhn#rH>YF-k(@vv!>*F4a*1Ap? zwp`)DkGHr7;(G1mTz}NJaPbvv<4h;~ zi(tW(Yq+eM2Wj&qV*<`r(H~U@3kA2KJo69%X2~@@-rNpG4oONY7vgGqWMf2zo>8Bh ztvlUeBgb98qMeqLM@}M2#yir}$#!$@mXdO1#Aj}N#>v!(f@oYN1^$@!sLUv(L*ARa zlFaTaJ=axUk*JJ&oqUzj&0cHU9U{ElGmF9{x|}y8+KG^(GCP;v|C0IjZ*MxWLgF8b ziDZXvvAT4`R8edr8(&&a@pUV*1+zp9Xk2_m#e;=$@wrx zrBB5C)v25}d_|M@eeMpJPN#FQ&w0L#br}$~80`yDHotcNIl-=|3KhJ|fxOt^MV12@ zGLO3C!>t!`W9P&06FZ_~EWQ&x3O<$kuJ#PoHU|?s>)--e!z6Ci`_YEhVpe1y3%&O{ zd!!d9h#uOD+&)Ji5Ez|h^21a2l>OuC``(A;NK@|Fb$|ZqAsz8-`+@RmlcBQ@r^4TS zCe!+`QWyM?MzXY#XY%%~9F0g7lcbk%Z(b|EPLip;=}$jZc<*_f<+ZA6s;&$It@dY@ z!)iP$!Kd~vI$)Nv_Mmo*rWvK_#M6j&lShX#J@VBVaIfQWovOyr#+Nru6Mz`U8<=vxmY1JU(SXV@Q0~ z-RzZ43r)E*`D3ctPz862a+2w&t2(i08__{a^=|soL`=X@Rd#%N zg0YqE6`{5pw2gZB7E_z_vk^K+f0)SYMs=R@9azxN)OLKSe%Ky8q4qelT3iA}<7B9I z&L;bF+OZb#mhl!Bs->|8j_QWQX0}DrKp|gEg8LEI_rGn=_gL1Dvh37nWP3NMhAmAM zJMzdhfo;f{CA_VlK5O#m(Zd`=f|n!aUKwN}q$D6LyI_tLSZ5U=mD zbbT0qrq#5~VW==WD$3GcNpwZV)h(}B*;B_zmNS^ViLcb^WXy2ktcc5*IDHdoH17@t zr>|p+niy}b@U}>&Ar5(Ex15^GCS!U2^c5oKqCVo&rJlsqnH`H;4n#hr-j~z0oHuA! z&Z1uvr&)UB)8GP;=PNbZ{wE3t^6Qav9C{2POl1mR7V&6;@~oQIkrAI+XJ#bl?MR9a zoWo%rsb1gtsCl0#`7`jEAz@6kfUk4pXq&CbL(`ENDC`?&9pO;)$≦bVAhkN~O?3 zlQ3ty>MOyQw@n&#yljw48U+pBB8SY0JMa|=_q17p0^WxuSR7)V6*=swG*e%16p+*A zg(e}sXVD>JF*oMTddlgvD$cJXNa&NZq;0rE)H3FF34aQ!kIkcRQyO|7Dqm>yIdKXN zPIm}=k(@N?tU9r_z^CwaHLft@fr0#)Xg|^b&>lyDm)g4 za0zFQ*oN7*^-x)m!$BNpzg`->zudP|-VeeXUV8E$QX1sBXqA1;Y9zmPuup$(gx)@3yKBh!s+auUCRKK&9NS=lF*RU2w4DT0r zG~xMvm!YMcNK9iU+z#w?kVcFy_J)O!Y_BJkg+fN-sqzXm|lh7=3U9@ z8lU)*czGTa&GN7!;d=^~etz6Bw2qZxs=~#K2FP9pKDTR*C^6J4lt!r1W!jv@XK4zI zf(Sb86#5x6NzcPq*?(lp`0i$-qGxV4O3%wgh)0~LyCP0!-_6(=`1Fu3qpz_bqPupl zeB;5(SqS6jVZns9j2?kO?VWYT1*u_k-nM zk>HTy3XHS}&1X$@ixs<9uHYY+_z8cBc!N0MQT1gJ(JxMVuRyP>FhQtQDYu}+wrFqT zJ6X%jN4IMn3!Rdw0>mU#9PfnDWutfmQv3!#QPjGVI%pgjFuQ-Ej?wXXl35N3ZZ~&F zH5FFKE4x5wuNNuGwWK5YM^7Oij{XDL!)r|Y{m$gaA+cPQ_mdC}EA;J$zL1uc6UtBR zbFSr*XBGMX%DKeA^moUQOJdGw8RT_+9{{NcD<_3`-@&d zBK*}FPZO01U-z)pA(%=EhclmAa^_qZ4&Ci|+`i*Y8u?*EQru9TYuXJLSA`T5HdMCw zTWQ)3)KiSsxWWbhvwCq&4#c(e7Y4EvO|kw5`49=Aw?kq>qdxBAxpMXG@j3UC!w*r$ zyR1o_t&62>%6&^;s^6J*&_}eItt7n@e(Z`vSJH*bW5V^2IZUrLk12c)aE?hlp5YY5YC1A*WK8~hJd;e~Igs7i?xpie?{@mN% z16=Zi1xjq%6;Y=;lu1LISH{?tysmrKoH(*Won$xZoj4KZH>U_G1op%dcIQ`+ItrDi zI7gS6--)`EuB6!II+)V*`9vn-L|sY~-5qT@shys?lCLL8Q`JTKQpa4p`!RVb>PypS z);L+8;t`K5#QT^C%E7SF+k}0!^8G}jw9`t09x+wSdtMuiE6Q>xkTFOn(pPEgfDqr< zw)%OQFiTw4^S|ihMIdWZ>hV}8OmW)t<)aCMc?k?Lo|LBZlHd-tSpMRCY`-27D`I*3 zl^hFG;j6@zD{PffG~0aXgYvcd6l=enz{j3vzjBbim$K!^mx2neYspGYMmF3z*2^Aj zVg9^omiJy1p`*uj@U!G+N3|tvpFFXWwH7!KkysE@jIfN^V|kmVQ$~&{X8(Dvqv_Op z@Z{XwR(u7A6&$(+6{PZG$?MF~Hd75&QTOtA_dLCzDl0=lKXdP$Rh5r^Y;69hd$RsH zo6g81O?8e!pC^h7+W6Qtwu{}n`j(zqTT_G%OR9pi7y49&9IPto?;heB6s3u*`z%;9 zOYI&x5X^qsk^>j4)m2R;p;FauwK(zl$CU!13ycfrCYRIolRr`D!9?xbjozr#eO8KM5vOI4y#NG_sctupJYI(-j6ce#9;Exx# z(Zy7rB`Ggt@s`VZdF#rh^ZXbZZ6PX9t<*>gf-wcZ?|&29vB@;hK+O~PgVV$cZg?s0&a?RJb zOgvE!tE|vvWaKY3Y&Yv%vX8|Xsi@K4x${1v1+`~n@!8j<-iXoSE^?5|J~0 zR<3wA?85m2v|Vy)GXCvxc@(|-!uHiM@Y#r@Z*#aluE&u2L~~?zu-v37E_F#co1jfE zX(d`A;}Is2&YXML%8d8!6Lo=n8^;p)t7zC? z*PbumdczxEFt#dRCTwf?W^WMVws^&=gG-x%Tf!pM=jLuRBg%Q{(c@W(j{FUhIR^FA zq{`fRV*=+V)ErpOogTNHXSw6tPrQF*VFFX;J&(UM+#59A;&Ba`jj@qQYzeN_oU~Y& zU-mr^mq9QQm4JNV)$6cLxvs+gC^k*O3w<*78kx691@m{`*pQ(cg&ERmo|v*Z|HU!7 z`OtWmhcEM+T?Z-q!zzg{MAVGr3GPB}UrJZsHpKt=eFdkkMA1PPq0j0U&?`JWoFdEz zb-Wc;E`<#2*SPnVsEKSLgoaV3KiTa2sODZ&*$YkXXoRPz;==9XiZ^QKLr||D&$|WE zJri%a-NHcC-z`k}Q3Vt1m`%NJH?I)hqv~3V2+y7qDIXC2=aOj_DsswM_x(WYahmN# z>7yQ~C!QY(^*gBPg-K|2+tp4Py{(JANf z#~E2{(3_Lf^HO_|tB6`j{a|g|$3H3h=&8hf!55;OtQ4W}%qup7?)l!Y^cR-VjG3Ra z6`iIDMtVi~_OgG7BYEMNTzE^3LC!}v@OpHkNFKgsN0G_Y_Xj*S>9uI;-Os3aeHl+* z(8^JI*SNx7S=lqxqQGm*{ER4(d;3J}Oso?FMXCO=n&+jplkWQ4zn!J%p`J_9T8h@M zaX}KUAV=K-eVxpX5*Tw%2hiN1@=(7t^PK1XuJjA29V2hb(hSL|YfI^*rjKO%552aE zF#k%(dL=|J<*{RVtA?8UUUI+So#8~+Bu}6&d=7TR8+*#deZKm6kR;GBNDzfgFf3dM zAVWW-3JA+$dW2mF4xcLHGB%lNGxZPn+_atew|KEMR;rcC;%3>VUEB9C*c)>+gfHOh z#Wdf}5IWqleHkX-NrEGLf{_w@Dp5juool$B>Q3wZMe4qV)UWwg)X|l0S??w6e3fD& z#=1%ba|z9iQQ7IahycqkXdG{KP?|dDf*<@Et&QO7CvN7~3Qsv6X%$yzy6v{pMe-ya zkFMnGTs~~Y_HJzQX{328`+U(J>gW8vVzeTrhBTA1yrW*6A2^Ci$eaDrrE5J%4mILU z3=kxa@i%iTdLs=jmc{0*j{1G`G;`BFhebVMmzTuvXRp(*Lkl?C@Si{Mhz zR+BLj)g0JfUy5!OGH9d4E#^$^96cG>$#YeN`kVWxLKggjjgnXg7ymkKzv$aXcqP_h z7uiSY;hh+}UXYKpf+FR7^{8v1f=YzA?-%jO=wPB}_ZUu}@jvrKDa2mX_c0}wA`11o z;gqODaE*nx9xv};cXK4&K~Z*^8QvBj^+xqq!5Y!@0-DaZ`4DVJQTZ|D)v*CHD)ZKM z1G@r8ITML%*yKG2ghIu`c>20)-(f0wyLlc)e*UoX&iZ0%@^aFYt+RSnM&ge=ni>T| zgp!BY=)qAGF^|X?rDWMrbX(!GDQBx8&PpPw_R}r;+9V#yGtFl*-1MHeN1HO7cP06u z*HT1ve#YpeX{z%#B&tu< z^7hp;CHcwfpR^Zn8c0YKI%V&pfFA!OIvszc?3O8be^WYOQ01837;%ER_I~VO7`l%x zFrnSh0wtg|ASA1iDt{w9!cVK}y|MMnfD0MNuN-gce)lj^PN?v7c(tsim*NZj*@RL7 z_KFacw2IWx)F6tk5y!)P&0?i0sa*G?gAfg8NDlcYCGI@$IzB)%mFA{bc_>2S-2R!u zU3RiJ6&ghO4)$9`jb!U}>_+<+TIwT+lZY3-T8y$d4B6Tb3W|wGS6yzo*mA}p%l73V z*tik6#0%e-H(J^fon1MSMgT z;fFa$q#Mq=5b5C+dfw9ZhUT`@%2PF`u}N4+?~3wj7E>LFaEjz&j;@~IJbKb9_I;#N z4`oULrXX_utLAjPv^ZgW*`bRrO8u4<_Zub|@$<47>1v%38BPzM>UGrjR`PKLUZj0Bpy?ee7&kh9#`IGvSUMugl4dh}A5~D*K9OV0ao60`{^*W|Z z%s)X|%uLCbOO84>yYY6gf{ZqsYiVSp)u2Iz(()6&i!283CykLD@%Kt(b%^(Jhs1h` zX|c3BhuD2^6l-`BQ&vwF*hogFDj}~P z{T6|wF@l=9GYzp4p+Y-mZcjZ@axZy5XW9FrPbikAW8uS`MtNuy&*P+L7V&;Ty7CUz zHuWNopGEy|^+uE*@=sRKq<cKlBDSav9 zPRt9(m-4zV-xwcMP>z_=eTOl&d4Fn1C{FjAE(3-algZmBtlC}65R4DgQ{x(KS1~h1 zDQ6=-wZ8PPNGwjC%4iYCoVIUOG22DlL}QIJGtCP>e^!8%BbnT@>U4*PxX&<6a z3@SQexdX>hxmRQZFWnUsLXt=fXvtc5DJK~Ic*WH1Z%#33ef%zhG2SJesY{)VWt=r6 zQapK_@oFG zZ7q*OvC>dMOwB2>N4nvI@93xPBA~lP<*xqDz*!Q@L#${s3~hH>~sJC literal 0 HcmV?d00001 diff --git a/docs/v5/README.md b/docs/v5/README.md index e69be1a60..fb679b418 100644 --- a/docs/v5/README.md +++ b/docs/v5/README.md @@ -26,8 +26,8 @@ Developer Documentation * [Signing Messages](getting-started) * [Ethereum Basics](concepts) * [Events](concepts/events) - * [Solidity Topics](concepts/events) * [Logs and Filtering](concepts/events) + * [Solidity Topics](concepts/events) * [Gas](concepts/gas) * [Gas Price](concepts/gas) * [Gas Limit](concepts/gas) @@ -47,6 +47,7 @@ Developer Documentation * [Accounts Methods](api/providers/provider) * [Blocks Methods](api/providers/provider) * [Ethereum Naming Service (ENS) Methods](api/providers/provider) + * [EnsResolver](api/providers/provider) * [Logs Methods](api/providers/provider) * [Network Status Methods](api/providers/provider) * [Transactions Methods](api/providers/provider) @@ -253,8 +254,10 @@ Developer Documentation * [Schemas](testing) * [Contributing and Hacking](contributing) * [Building](contributing) - * [Making your changes](contributing) * [Documentation](contributing) +* [Other Resources](other-resources) + * [Ethereum Overview](other-resources) + * [Tutorials](other-resources) * [Flatworm Docs](documentation) * [Fragments](documentation) * [Markdown](documentation) diff --git a/docs/v5/api-keys/index.html b/docs/v5/api-keys/index.html index ffb2d503e..0cf57c4f0 100644 --- a/docs/v5/api-keys/index.html +++ b/docs/v5/api-keys/index.html @@ -3,6 +3,11 @@ Provider API Keys + + + + +
- +
- + diff --git a/docs/v5/api/README.md b/docs/v5/api/README.md index d05f24b61..bf38255eb 100644 --- a/docs/v5/api/README.md +++ b/docs/v5/api/README.md @@ -12,6 +12,7 @@ Application Programming Interface * [Accounts Methods](providers/provider) * [Blocks Methods](providers/provider) * [Ethereum Naming Service (ENS) Methods](providers/provider) + * [EnsResolver](providers/provider) * [Logs Methods](providers/provider) * [Network Status Methods](providers/provider) * [Transactions Methods](providers/provider) diff --git a/docs/v5/api/contract/contract-factory/README.md b/docs/v5/api/contract/contract-factory/README.md index 844e97e64..f177979cb 100644 --- a/docs/v5/api/contract/contract-factory/README.md +++ b/docs/v5/api/contract/contract-factory/README.md @@ -12,14 +12,17 @@ Creating Instances #### **new ***ethers* . **ContractFactory**( interface , bytecode [ , signer ] ) +Creates a new instance of a **ContractFactory** for the contract described by the *interface* and *bytecode* initcode. #### *ContractFactory* . **fromSolidity**( compilerOutput [ , signer ] ) => *[ContractFactory](/v5/api/contract/contract-factory/)* +Consumes the output of the Solidity compiler, extracting the ABI and bytecode from it, allowing for the various formats the solc compiler has emitted over its life. #### *contractFactory* . **connect**( signer ) => *[Contract](/v5/api/contract/contract/)* +Returns a **new instance** of the ContractFactory with the same *interface* and *bytecode*, but with a different *signer*. Properties @@ -27,14 +30,17 @@ Properties #### *contractFactory* . **interface** => *[Interface](/v5/api/utils/abi/interface/)* +The [Contract](/v5/api/contract/contract/) interface. #### *contractFactory* . **bytecode** => *string< [DataHexString](/v5/api/utils/bytes/#DataHexString) >* +The bytecode (i.e. initcode) that this **ContractFactory** will use to deploy the Contract. #### *contractFactory* . **signer** => *[Signer](/v5/api/signer/#Signer)* +The [Signer](/v5/api/signer/#Signer) (if any) this ContractFactory will use to deploy instances of the Contract to the Blockchain. Methods @@ -45,49 +51,87 @@ Methods Return an instance of a [Contract](/v5/api/contract/contract/) attached to *address*. This is the same as using the [Contract constructor](/v5/api/contract/contract/#Contract--creating) with *address* and this the *interface* and *signerOrProvider* passed in when creating the ContractFactory. -#### *contractFactory* . **getDeployTransaction**( ...args ) => *[UnsignedTransaction](/v5/api/utils/transactions/#UnsignedTransaction)* +#### *contractFactory* . **getDeployTransaction**( ...args [ , overrides ] ) => *[UnsignedTransaction](/v5/api/utils/transactions/#UnsignedTransaction)* Returns the unsigned transaction which would deploy this Contract with *args* passed to the Contract's constructor. +If the optional *overrides* is specified, they can be used to override the endowment `value`, transaction `nonce`, `gasLimit` or `gasPrice`. -#### *contractFactory* . **deploy**( ...args ) => *Promise< [Contract](/v5/api/contract/contract/) >* + +#### *contractFactory* . **deploy**( ...args [ , overrides ] ) => *Promise< [Contract](/v5/api/contract/contract/) >* Uses the signer to deploy the Contract with *args* passed into the constructor and returns a Contract which is attached to the address where this contract **will** be deployed once the transaction is mined. The transaction can be found at `contract.deployTransaction`, and no interactions should be made until the transaction is mined. +If the optional *overrides* is specified, they can be used to override the endowment `value`, transaction `nonce`, `gasLimit` or `gasPrice`. -``` -// -const signer = ethers.LocalSigner(); -const ContractFactory = ethers.ContractFactory; -// +```javascript // If your contract constructor requires parameters, the ABI // must include the constructor const abi = [ - "constructor(address owner, uint256 initialValue)" + "constructor(address owner, uint256 initialValue)", + "function value() view returns (uint)" ]; -const factory = new ContractFactory(abi, bytecode, signer) +// The factory we use for deploying contracts +factory = new ContractFactory(abi, bytecode, signer) -const contract = await factory.deploy("ricmoo.eth", 42); +// Deploy an instance of the contract +contract = await factory.deploy("ricmoo.eth", 42); // The address is available immediately, but the contract // is NOT deployed yet contract.address -//! +// '0x26E9685C018Bf3A401DFA632827e7e6C7D96b1C0' // The transaction that the signer sent to deploy contract.deployTransaction -//! +// { +// blockHash: null, +// blockNumber: null, +// chainId: 1337, +// confirmations: 0, +// creates: '0x26E9685C018Bf3A401DFA632827e7e6C7D96b1C0', +// data: '0x608060405234801561001057600080fd5b5060405161012e38038061012e8339818101604052604081101561003357600080fd5b81019080805190602001909291908051906020019092919050505081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060008190555050506088806100a66000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80633fa4f24514602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000805490509056fea2646970667358221220926465385af0e8706644e1ff3db7161af699dc063beaadd55405f2ccd6478d7564736f6c63430007040033000000000000000000000000ab7c8803962c0f2f5bbbe3fa8bf41cd82aa1923c000000000000000000000000000000000000000000000000000000000000002a', +// from: '0xf3e6942b256A60B596B24F633caE8aDB4983fCA6', +// gasLimit: { BigNumber: "126462" }, +// gasPrice: { BigNumber: "1" }, +// hash: '0x4037630fdadbbe0aac0bf90eba61118e35ee5fc28329e2134bb2bad0bfc12684', +// nonce: 1, +// r: '0xc3bb79ea4600864cd110fe74d31d38bb3702c327fd5aef9feddf66903cc87a4f', +// s: '0x35cc2ffe352c02b5fcfbbcd2e348001af670f64438d7a9b2c34756ec293a0784', +// to: null, +// transactionIndex: null, +// v: 2709, +// value: { BigNumber: "0" }, +// wait: [Function] +// } -// Wait until the transaction is mined +// Wait until the transaction is mined (i.e. contract is deployed) +// - returns the receipt +// - throws on failure (the reciept is on the error) contract.deployTransaction.wait() -//! +// { Promise: { +// blockHash: '0x1715de2bdfec15a7f64fb79a8254699274be6776df244d24a04945a3218543e6', +// blockNumber: 2, +// byzantium: true, +// confirmations: 1, +// contractAddress: '0x26E9685C018Bf3A401DFA632827e7e6C7D96b1C0', +// cumulativeGasUsed: { BigNumber: "126462" }, +// from: '0xf3e6942b256A60B596B24F633caE8aDB4983fCA6', +// gasUsed: { BigNumber: "126462" }, +// logs: [], +// logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', +// status: 1, +// to: null, +// transactionHash: '0x4037630fdadbbe0aac0bf90eba61118e35ee5fc28329e2134bb2bad0bfc12684', +// transactionIndex: 0 +// } } // Now the contract is safe to interact with contract.value() -//! +// { Promise: { BigNumber: "42" } } ``` diff --git a/docs/v5/api/contract/contract-factory/index.html b/docs/v5/api/contract/contract-factory/index.html index cb5f5d66e..6b639a8b9 100644 --- a/docs/v5/api/contract/contract-factory/index.html +++ b/docs/v5/api/contract/contract-factory/index.html @@ -3,6 +3,11 @@ ContractFactory + + + + +
- +
diff --git a/docs/v5/api/other/hardware/index.html b/docs/v5/api/other/hardware/index.html index 399604ad9..94e06c2e2 100644 --- a/docs/v5/api/other/hardware/index.html +++ b/docs/v5/api/other/hardware/index.html @@ -3,6 +3,11 @@ Hardware Wallets + + + + +
- +
- + diff --git a/docs/v5/api/other/index.html b/docs/v5/api/other/index.html index 718c95ad2..763828e29 100644 --- a/docs/v5/api/other/index.html +++ b/docs/v5/api/other/index.html @@ -3,6 +3,11 @@ Other Libraries + + + + +
- +
- + diff --git a/docs/v5/api/providers/README.md b/docs/v5/api/providers/README.md index 291a95291..4d5052824 100644 --- a/docs/v5/api/providers/README.md +++ b/docs/v5/api/providers/README.md @@ -54,6 +54,7 @@ Provider Documentation * [Accounts Methods](provider) * [Blocks Methods](provider) * [Ethereum Naming Service (ENS) Methods](provider) + * [EnsResolver](provider) * [Logs Methods](provider) * [Network Status Methods](provider) * [Transactions Methods](provider) diff --git a/docs/v5/api/providers/api-providers/index.html b/docs/v5/api/providers/api-providers/index.html index 487ce1461..4794b7dbe 100644 --- a/docs/v5/api/providers/api-providers/index.html +++ b/docs/v5/api/providers/api-providers/index.html @@ -3,6 +3,11 @@ API Providers + + + + +
- +
- + diff --git a/docs/v5/api/providers/index.html b/docs/v5/api/providers/index.html index 9bb7e41c9..1f46339a9 100644 --- a/docs/v5/api/providers/index.html +++ b/docs/v5/api/providers/index.html @@ -3,6 +3,11 @@ Providers + + + + +
- +

Provider Documentation

- + - + diff --git a/docs/v5/api/providers/jsonrpc-provider/README.md b/docs/v5/api/providers/jsonrpc-provider/README.md index 680466d1f..03bd669e8 100644 --- a/docs/v5/api/providers/jsonrpc-provider/README.md +++ b/docs/v5/api/providers/jsonrpc-provider/README.md @@ -7,9 +7,11 @@ Documentation: [html](https://docs.ethers.io/) JsonRpcProvider =============== -#### **new ***ethers* . *providers* . **JsonRpcProvider**( [ url [ , aNetworkish ] ] ) +#### **new ***ethers* . *providers* . **JsonRpcProvider**( [ urlOrConnectionInfo [ , networkish ] ] ) -Connect to a JSON-RPC API located at *url* using the *aNetworkish* network. If *url* is not specified, the default (i.e. `http://localhost:8545`) is used and if no network is specified, it will be determined automatically by querying the node. +Connect to a JSON-RPC HTTP API using the URL or [ConnectionInfo](/v5/api/utils/web/#ConnectionInfo) *urlOrConnectionInfo* connected to the *networkish* network. + +If *urlOrConnectionInfo* is not specified, the default (i.e. `http://localhost:8545`) is used and if no network is specified, it will be determined automatically by querying the node using `eth_chaindId` and falling back on `eth_networkId`. #### Note: Connecting to a Local Node diff --git a/docs/v5/api/providers/jsonrpc-provider/index.html b/docs/v5/api/providers/jsonrpc-provider/index.html index bd99fb3a7..24599285d 100644 --- a/docs/v5/api/providers/jsonrpc-provider/index.html +++ b/docs/v5/api/providers/jsonrpc-provider/index.html @@ -3,6 +3,11 @@ JsonRpcProvider + + + + +
- +
diff --git a/docs/v5/license/index.html b/docs/v5/license/index.html index e290b5c1b..32727a4f6 100644 --- a/docs/v5/license/index.html +++ b/docs/v5/license/index.html @@ -3,6 +3,11 @@ License and Copyright + + + + +
- +
- + diff --git a/docs/v5/metadata.json b/docs/v5/metadata.json index 8fe953e89..3df442d94 100644 --- a/docs/v5/metadata.json +++ b/docs/v5/metadata.json @@ -1 +1 @@ -{"version":"0.1","links":{"link-alchemy":"https://alchemyapi.io","link-cloudflare":"https://developers.cloudflare.com/distributed-web/ethereum-gateway/","link-ens":"https://ens.domains/","link-ethereum":"https://ethereumorg","link-etherscan":"https://etherscan.io","link-expo":"https://expo.io","link-etherscan-api":"https://etherscan.io/apis","link-flatworm":"https://github.com/ricmoo/flatworm","link-geth":"https://geth.ethereum.org","link-infura":"https://infura.io","link-javascriptcore":"https://developer.apple.com/documentation/javascriptcore?language=objc","link-ledger":"https://www.ledger.com","link-metamask":"https://metamask.io/","link-otto":"https://github.com/robertkrimen/otto","link-parity":"https://www.parity.io","link-pocket":"https://pokt.network","link-react-native":"https://reactnative.dev","link-rtd":"https://github.com/readthedocs/sphinx_rtd_theme","link-semver":"https://semver.org","link-solidity":"https://solidity.readthedocs.io/en/v0.6.2/","link-sphinx":"https://www.sphinx-doc.org/","link-alchemy-signup":"https://dashboard.alchemyapi.io/signup?referral=55a35117-028e-4b7c-9e47-e275ad0acc6d","link-etherscan-signup":"https://etherscan.io/apis","link-etherscan-ratelimit":"https://info.etherscan.com/api-return-errors/","link-infura-signup":"https://infura.io/register","link-pocket-signup":"https://pokt.network/pocket-gateway-ethereum-mainnet/","link-json-rpc":"https://github.com/ethereum/wiki/wiki/JSON-RPC","link-web3-send":"https://github.com/ethereum/web3.js/blob/1.x/packages/web3-providers-http/types/index.d.ts#L57","link-parity-trace":"https://openethereum.github.io/wiki/JSONRPC-trace-module","link-parity-rpc":"https://openethereum.github.io/wiki/JSONRPC","link-geth-debug":"https://github.com/ethereum/go-ethereum/wiki/Management-APIs#debug","link-geth-rpc":"https://github.com/ethereum/go-ethereum/wiki/Management-APIs","link-legacy-docs3":"https://docs.ethers.io/v3/","link-legacy-docs4":"https://docs.ethers.io/v4/","link-github-ci":"https://github.com/ethers-io/ethers.js/actions/runs/158006903","link-github-issues":"https://github.com/ethers-io/ethers.js/issues","link-issue-407":"https://github.com/ethers-io/ethers.js/issues/407","link-infura-secret":"https://infura.io/docs/gettingStarted/authentication","link-web3":"https://github.com/ethereum/web3.js","link-web3-http":"https://github.com/ethereum/web3.js/tree/1.x/packages/web3-providers-http","link-web3-ipc":"https://github.com/ethereum/web3.js/tree/1.x/packages/web3-providers-ipc","link-web3-ws":"https://github.com/ethereum/web3.js/tree/1.x/packages/web3-providers-ws","link-solc-output":"https://solidity.readthedocs.io/en/v0.6.0/using-the-compiler.html#output-description","link-bip39-wordlists":"https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md","link-icap":"https://github.com/ethereum/wiki/wiki/Inter-exchange-Client-Address-Protocol-%28ICAP%29","link-jsonrpc":"https://github.com/ethereum/wiki/wiki/JSON-RPC","link-mit":"https://en.m.wikipedia.org/wiki/MIT_License","link-namehash":"https://docs.ens.domains/contract-api-reference/name-processing#hashing-names","link-rlp":"https://github.com/ethereum/wiki/wiki/RLP","link-ethersio":"https://ethers.io/","link-ethers-docs":"https://docs.ethers.io/","link-ethers-js":"https://cdn.ethers.io/lib/ethers-5.0.esm.min.js","link-ethers-npm":"https://www.npmjs.com/search?q=%40ethersproject%2F","link-ethers-asm-grammar":"https://github.com/ethers-io/ethers.js/blob/master/packages/asm/grammar.jison","link-eip-155":"https://eips.ethereum.org/EIPS/eip-155","link-eip-191":"https://eips.ethereum.org/EIPS/eip-191","link-eip-609":"https://eips.ethereum.org/EIPS/eip-609","link-eip-712":"https://eips.ethereum.org/EIPS/eip-712","link-eip-1014":"https://eips.ethereum.org/EIPS/eip-1014","link-eip-1193":"https://eips.ethereum.org/EIPS/eip-1193","link-eip-2098":"https://eips.ethereum.org/EIPS/eip-2098","link-bip-39":"https://en.bitcoin.it/wiki/BIP_0039","link-bip-32":"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki","link-npm-elliptic":"https://www.npmjs.com/package/elliptic","link-npm-ethersproject-shims":"https://www.npmjs.com/package/@ethersproject/shims","link-npm-events":"https://nodejs.org/dist/latest-v13.x/docs/api/events.html#events_class_eventemitter","link-npm-bnjs":"https://www.npmjs.com/package/bn.js","link-npm-query-bignumber":"https://www.npmjs.com/search?q=bignumber","link-npm-react-native-get-random-values":"https://www.npmjs.com/package/react-native-get-random-values","link-js-array":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array","link-js-bigint":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt","link-js-normalize":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize","link-js-maxsafe":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER#Description","link-js-proxy":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy","link-js-typedarray":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray","link-ricmoo-humanreadableabi":"https://blog.ricmoo.com/human-readable-contract-abis-in-ethers-js-141902f4d917","link-wiki-basicauth":"https://en.wikipedia.org/wiki/Basic_access_authentication","link-wiki-backoff":"https://en.wikipedia.org/wiki/Exponential_backoff","link-wiki-bloomfilter":"https://en.wikipedia.org/wiki/Bloom_filter","link-wiki-bruteforce":"https://en.wikipedia.org/wiki/Brute-force_attack","link-wiki-cryptographichash":"https://en.wikipedia.org/wiki/Cryptographic_hash_function","link-wiki-ecrecover":"https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm#Public_key_recovery","link-wiki-homoglyph":"https://en.wikipedia.org/wiki/IDN_homograph_attack","link-wiki-hmac":"https://en.wikipedia.org/wiki/HMAC","link-wiki-iban":"https://en.wikipedia.org/wiki/International_Bank_Account_Number","link-wiki-ieee754":"https://en.wikipedia.org/wiki/Double-precision_floating-point_format","link-wiki-ripemd":"https://en.m.wikipedia.org/wiki/RIPEMD","link-wiki-sha2":"https://en.wikipedia.org/wiki/SHA-2","link-wiki-twoscomplement":"https://en.wikipedia.org/wiki/Two%27s_complement","link-wiki-unicode-equivalence":"https://en.wikipedia.org/wiki/Unicode_equivalence","link-wiki-utf8-overlong":"https://en.wikipedia.org/wiki/UTF-8#Overlong_encodings","link-wiki-utf8-replacement":"https://en.wikipedia.org/wiki/Specials_%28Unicode_block%29#Replacement_character","link-wiki-scrypt":"https://en.wikipedia.org/wiki/Scrypt","link-wiki-sha3":"https://en.wikipedia.org/wiki/SHA-3","link-wiki-shuffle":"https://en.wikipedia.org/wiki/Fisher-Yates_shuffle","link-wiki-overflow":"https://en.wikipedia.org/wiki/Integer_overflow","link-wiki-underflow":"https://en.wikipedia.org/wiki/Arithmetic_underflow","ContractFactory":"/v5/api/contract/contract-factory/","ContractFactory--creating":"/v5/api/contract/contract-factory/#ContractFactory--creating","ContractFactory-connect":"/v5/api/contract/contract-factory/#ContractFactory-connect","ContractFactory--properties":"/v5/api/contract/contract-factory/#ContractFactory--properties","ContractFactory--methods":"/v5/api/contract/contract-factory/#ContractFactory--methods","ContractFactory-attach":"/v5/api/contract/contract-factory/#ContractFactory-attach","ContractFactory-deploy":"/v5/api/contract/contract-factory/#ContractFactory-deploy","Contract":"/v5/api/contract/contract/","Contract--creating":"/v5/api/contract/contract/#Contract--creating","Contract-attach":"/v5/api/contract/contract/#Contract-attach","Contract-connect":"/v5/api/contract/contract/#Contract-connect","Contract--properties":"/v5/api/contract/contract/#Contract--properties","Contract--methods":"/v5/api/contract/contract/#Contract--methods","Contract-deployed":"/v5/api/contract/contract/#Contract-deployed","Contract-isIndexed":"/v5/api/contract/contract/#Contract-isIndexed","Contract--events":"/v5/api/contract/contract/#Contract--events","Contract-queryFilter":"/v5/api/contract/contract/#Contract-queryFilter","Contract-listenerCount":"/v5/api/contract/contract/#Contract-listenerCount","Contract-listeners":"/v5/api/contract/contract/#Contract-listeners","Contract-off":"/v5/api/contract/contract/#Contract-off","Contract-on":"/v5/api/contract/contract/#Contract-on","Contract-once":"/v5/api/contract/contract/#Contract-once","Contract-removeAllListeners":"/v5/api/contract/contract/#Contract-removeAllListeners","Contract--metaclass":"/v5/api/contract/contract/#Contract--metaclass","Contract--readonly":"/v5/api/contract/contract/#Contract--readonly","Contract-functionsCall":"/v5/api/contract/contract/#Contract-functionsCall","Contract--write":"/v5/api/contract/contract/#Contract--write","contract-functionsSend":"/v5/api/contract/contract/#contract-functionsSend","Contract--check":"/v5/api/contract/contract/#Contract--check","contract-estimateGas":"/v5/api/contract/contract/#contract-estimateGas","contract-populateTransaction":"/v5/api/contract/contract/#contract-populateTransaction","contract-callStatic":"/v5/api/contract/contract/#contract-callStatic","Contract--filters":"/v5/api/contract/contract/#Contract--filters","erc20-events":"/v5/api/contract/example/#erc20-events","erc20-queryfilter":"/v5/api/contract/example/#erc20-queryfilter","contracts":"/v5/api/contract/","experimental-brainwallet":"/v5/api/experimental/#experimental-brainwallet","experimental-eip1193bridge":"/v5/api/experimental/#experimental-eip1193bridge","experimental-noncemanager":"/v5/api/experimental/#experimental-noncemanager","api":"/v5/api/","asm-utilities":"/v5/api/other/assembly/api/","asm-parse":"/v5/api/other/assembly/api/#asm-parse","asm-bytecode":"/v5/api/other/assembly/api/#asm-bytecode","asm-operation":"/v5/api/other/assembly/api/#asm-operation","asm-opcode":"/v5/api/other/assembly/api/#asm-opcode","asm-ast":"/v5/api/other/assembly/ast/","asm-location":"/v5/api/other/assembly/ast/#asm-location","asm-node":"/v5/api/other/assembly/ast/#asm-node","asm-valuenode":"/v5/api/other/assembly/ast/#asm-valuenode","asm-literalnode":"/v5/api/other/assembly/ast/#asm-literalnode","asm-popnode":"/v5/api/other/assembly/ast/#asm-popnode","asm-linknode":"/v5/api/other/assembly/ast/#asm-linknode","asm-opcodenode":"/v5/api/other/assembly/ast/#asm-opcodenode","asm-evaluationnode":"/v5/api/other/assembly/ast/#asm-evaluationnode","asm-executionnode":"/v5/api/other/assembly/ast/#asm-executionnode","asm-labellednode":"/v5/api/other/assembly/ast/#asm-labellednode","asm-labelnode":"/v5/api/other/assembly/ast/#asm-labelnode","asm-datanode":"/v5/api/other/assembly/ast/#asm-datanode","asm-scopenode":"/v5/api/other/assembly/ast/#asm-scopenode","asm-dialect":"/v5/api/other/assembly/dialect/","asm-dialect-opcode":"/v5/api/other/assembly/dialect/#asm-dialect-opcode","asm-dialect-label":"/v5/api/other/assembly/dialect/#asm-dialect-label","asm-dialect-literal":"/v5/api/other/assembly/dialect/#asm-dialect-literal","asm-dialect-comment":"/v5/api/other/assembly/dialect/#asm-dialect-comment","asm-dialect-scope":"/v5/api/other/assembly/dialect/#asm-dialect-scope","asm-dialect-datasegment":"/v5/api/other/assembly/dialect/#asm-dialect-datasegment","asm-dialect-links":"/v5/api/other/assembly/dialect/#asm-dialect-links","asm-dialect-placeholder":"/v5/api/other/assembly/dialect/#asm-dialect-placeholder","asm-dialect-scripting":"/v5/api/other/assembly/dialect/#asm-dialect-scripting","hw-ledger":"/v5/api/other/hardware/#hw-ledger","api-providers":"/v5/api/providers/api-providers/","EtherscanProvider":"/v5/api/providers/api-providers/#EtherscanProvider","InfuraProvider":"/v5/api/providers/api-providers/#InfuraProvider","InfuraProvider-getWebSocketProvider":"/v5/api/providers/api-providers/#InfuraProvider-getWebSocketProvider","AlchemyProvider":"/v5/api/providers/api-providers/#AlchemyProvider","CloudflareProvider":"/v5/api/providers/api-providers/#CloudflareProvider","providers":"/v5/api/providers/","providers-getDefaultProvider":"/v5/api/providers/#providers-getDefaultProvider","JsonRpcProvider":"/v5/api/providers/jsonrpc-provider/","JsonRpcProvider-getSigner":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider-getSigner","JsonRpcProvider-getUncheckedSigner":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider-getUncheckedSigner","JsonRpcProvider-listAccounts":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider-listAccounts","JsonRpcProvider-send":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider-send","JsonRpcSigner":"/v5/api/providers/jsonrpc-provider/#JsonRpcSigner","JsonRpcSigner-connectUnchecked":"/v5/api/providers/jsonrpc-provider/#JsonRpcSigner-connectUnchecked","JsonRpcSigner-sendUncheckedTransaction":"/v5/api/providers/jsonrpc-provider/#JsonRpcSigner-sendUncheckedTransaction","JsonRpcSigner-unlock":"/v5/api/providers/jsonrpc-provider/#JsonRpcSigner-unlock","UncheckedJsonRpcSigner":"/v5/api/providers/jsonrpc-provider/#UncheckedJsonRpcSigner","JsonRpcProvider--other":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider--other","FallbackProvider":"/v5/api/providers/other/#FallbackProvider","FallbackProviderConfig":"/v5/api/providers/other/#FallbackProviderConfig","IpcProvider":"/v5/api/providers/other/#IpcProvider","UrlJsonRpcProvider":"/v5/api/providers/other/#UrlJsonRpcProvider","Web3Provider":"/v5/api/providers/other/#Web3Provider","Web3Provider--ExternalProvider":"/v5/api/providers/other/#Web3Provider--ExternalProvider","WebSocketProvider":"/v5/api/providers/other/#WebSocketProvider","Provider":"/v5/api/providers/provider/","Provider--account-methods":"/v5/api/providers/provider/#Provider--account-methods","Provider-getBalance":"/v5/api/providers/provider/#Provider-getBalance","Provider-getCode":"/v5/api/providers/provider/#Provider-getCode","Provider-getStorageAt":"/v5/api/providers/provider/#Provider-getStorageAt","Provider-getTransactionCount":"/v5/api/providers/provider/#Provider-getTransactionCount","Provider--block-methods":"/v5/api/providers/provider/#Provider--block-methods","Provider-getBlock":"/v5/api/providers/provider/#Provider-getBlock","Provider-getBlockWithTransactions":"/v5/api/providers/provider/#Provider-getBlockWithTransactions","Provider--ens-methods":"/v5/api/providers/provider/#Provider--ens-methods","Provider-lookupAddress":"/v5/api/providers/provider/#Provider-lookupAddress","Provider-ResolveName":"/v5/api/providers/provider/#Provider-ResolveName","Provider--log-methods":"/v5/api/providers/provider/#Provider--log-methods","Provider-getLogs":"/v5/api/providers/provider/#Provider-getLogs","Provider--network-methods":"/v5/api/providers/provider/#Provider--network-methods","Provider-getNetwork":"/v5/api/providers/provider/#Provider-getNetwork","Provider-getBlockNumber":"/v5/api/providers/provider/#Provider-getBlockNumber","Provider-getGasPrice":"/v5/api/providers/provider/#Provider-getGasPrice","Provider--transaction-methods":"/v5/api/providers/provider/#Provider--transaction-methods","Provider-call":"/v5/api/providers/provider/#Provider-call","Provider-estimateGas":"/v5/api/providers/provider/#Provider-estimateGas","Provider-sendTransaction":"/v5/api/providers/provider/#Provider-sendTransaction","Provider-waitForTransaction":"/v5/api/providers/provider/#Provider-waitForTransaction","Provider--event-methods":"/v5/api/providers/provider/#Provider--event-methods","Provider-on":"/v5/api/providers/provider/#Provider-on","Provider-once":"/v5/api/providers/provider/#Provider-once","Provider-emit":"/v5/api/providers/provider/#Provider-emit","Provider-off":"/v5/api/providers/provider/#Provider-off","Provider-removeAllListeners":"/v5/api/providers/provider/#Provider-removeAllListeners","Provider-listenerCount":"/v5/api/providers/provider/#Provider-listenerCount","Provider-listeners":"/v5/api/providers/provider/#Provider-listeners","Provider--events":"/v5/api/providers/provider/#Provider--events","Provider--inspection-methods":"/v5/api/providers/provider/#Provider--inspection-methods","Provider-isProvider":"/v5/api/providers/provider/#Provider-isProvider","providers-BlockTag":"/v5/api/providers/types/#providers-BlockTag","providers-EventType":"/v5/api/providers/types/#providers-EventType","providers-Networkish":"/v5/api/providers/types/#providers-Networkish","providers-Network":"/v5/api/providers/types/#providers-Network","providers-Block":"/v5/api/providers/types/#providers-Block","providers-BlockWithTransactions":"/v5/api/providers/types/#providers-BlockWithTransactions","providers-EventFilter":"/v5/api/providers/types/#providers-EventFilter","providers-Filter":"/v5/api/providers/types/#providers-Filter","providers-FilterByBlockHash":"/v5/api/providers/types/#providers-FilterByBlockHash","providers-Log":"/v5/api/providers/types/#providers-Log","providers-TransactionRequest":"/v5/api/providers/types/#providers-TransactionRequest","providers-TransactionResponse":"/v5/api/providers/types/#providers-TransactionResponse","providers-TransactionReceipt":"/v5/api/providers/types/#providers-TransactionReceipt","signers":"/v5/api/signer/","Signer":"/v5/api/signer/#Signer","Signer-connect":"/v5/api/signer/#Signer-connect","Signer-getaddress":"/v5/api/signer/#Signer-getaddress","Signer-isSigner":"/v5/api/signer/#Signer-isSigner","Signer--blockchain-methods":"/v5/api/signer/#Signer--blockchain-methods","Signer-getBalance":"/v5/api/signer/#Signer-getBalance","Signer-getChainId":"/v5/api/signer/#Signer-getChainId","Signer-getGasPrice":"/v5/api/signer/#Signer-getGasPrice","Signer-getTransactionCount":"/v5/api/signer/#Signer-getTransactionCount","Signer-call":"/v5/api/signer/#Signer-call","Signer-estimateGas":"/v5/api/signer/#Signer-estimateGas","Signer-resolveName":"/v5/api/signer/#Signer-resolveName","Signer--signing-methods":"/v5/api/signer/#Signer--signing-methods","Signer-signMessage":"/v5/api/signer/#Signer-signMessage","Signer-signTransaction":"/v5/api/signer/#Signer-signTransaction","Signer-sendTransaction":"/v5/api/signer/#Signer-sendTransaction","Signer-signTypedData":"/v5/api/signer/#Signer-signTypedData","Signer--subclassing":"/v5/api/signer/#Signer--subclassing","Signer-checkTransaction":"/v5/api/signer/#Signer-checkTransaction","Signer-populateTransaction":"/v5/api/signer/#Signer-populateTransaction","Wallet":"/v5/api/signer/#Wallet","Wallet-constructor":"/v5/api/signer/#Wallet-constructor","Wallet-createRandom":"/v5/api/signer/#Wallet-createRandom","Wallet-fromEncryptedJson":"/v5/api/signer/#Wallet-fromEncryptedJson","Wallet-fromEncryptedJsonSync":"/v5/api/signer/#Wallet-fromEncryptedJsonSync","Wallet.fromMnemonic":"/v5/api/signer/#Wallet.fromMnemonic","Wallet--properties":"/v5/api/signer/#Wallet--properties","Wallet--methods":"/v5/api/signer/#Wallet--methods","Wallet-encrypt":"/v5/api/signer/#Wallet-encrypt","VoidSigner":"/v5/api/signer/#VoidSigner","ExternallyOwnedAccount":"/v5/api/signer/#ExternallyOwnedAccount","AbiCoder":"/v5/api/utils/abi/coder/","AbiCoder--creating":"/v5/api/utils/abi/coder/#AbiCoder--creating","AbiCoder--methods":"/v5/api/utils/abi/coder/#AbiCoder--methods","AbiCoder-encode":"/v5/api/utils/abi/coder/#AbiCoder-encode","AbiCoder-decode":"/v5/api/utils/abi/coder/#AbiCoder-decode","abi-formats":"/v5/api/utils/abi/formats/","abi-formats--human-readable-abi":"/v5/api/utils/abi/formats/#abi-formats--human-readable-abi","abi-formats--solidity":"/v5/api/utils/abi/formats/#abi-formats--solidity","fragments":"/v5/api/utils/abi/fragments/","fragments--output-formats":"/v5/api/utils/abi/fragments/#fragments--output-formats","Fragment":"/v5/api/utils/abi/fragments/#Fragment","Fragment-from":"/v5/api/utils/abi/fragments/#Fragment-from","Fragment-isFragment":"/v5/api/utils/abi/fragments/#Fragment-isFragment","ConstructorFragment":"/v5/api/utils/abi/fragments/#ConstructorFragment","ConstructorFragment-from":"/v5/api/utils/abi/fragments/#ConstructorFragment-from","ConstructorFragment-isConstructorFragment":"/v5/api/utils/abi/fragments/#ConstructorFragment-isConstructorFragment","EventFragment":"/v5/api/utils/abi/fragments/#EventFragment","EventFragment-from":"/v5/api/utils/abi/fragments/#EventFragment-from","EventFragment-isEventFragment":"/v5/api/utils/abi/fragments/#EventFragment-isEventFragment","FunctionFragment":"/v5/api/utils/abi/fragments/#FunctionFragment","FunctionFragment-from":"/v5/api/utils/abi/fragments/#FunctionFragment-from","FunctionFragment-isFunctionFragment":"/v5/api/utils/abi/fragments/#FunctionFragment-isFunctionFragment","ParamType":"/v5/api/utils/abi/fragments/#ParamType","ParamType-name":"/v5/api/utils/abi/fragments/#ParamType-name","ParamType-type":"/v5/api/utils/abi/fragments/#ParamType-type","ParamType-baseType":"/v5/api/utils/abi/fragments/#ParamType-baseType","ParamType-indexed":"/v5/api/utils/abi/fragments/#ParamType-indexed","ParamType-arrayChildren":"/v5/api/utils/abi/fragments/#ParamType-arrayChildren","ParamType-arrayLength":"/v5/api/utils/abi/fragments/#ParamType-arrayLength","ParamType-components":"/v5/api/utils/abi/fragments/#ParamType-components","ParamType-from":"/v5/api/utils/abi/fragments/#ParamType-from","ParamType-isParamType":"/v5/api/utils/abi/fragments/#ParamType-isParamType","Interface":"/v5/api/utils/abi/interface/","Interface--creating":"/v5/api/utils/abi/interface/#Interface--creating","Interface--properties":"/v5/api/utils/abi/interface/#Interface--properties","Interface--formatting":"/v5/api/utils/abi/interface/#Interface--formatting","Interface--fragments":"/v5/api/utils/abi/interface/#Interface--fragments","Interface--selectors":"/v5/api/utils/abi/interface/#Interface--selectors","Interface--encoding":"/v5/api/utils/abi/interface/#Interface--encoding","Interface--decoding":"/v5/api/utils/abi/interface/#Interface--decoding","Interface--parsing":"/v5/api/utils/abi/interface/#Interface--parsing","Interface--types":"/v5/api/utils/abi/interface/#Interface--types","Result":"/v5/api/utils/abi/interface/#Result","LogDescription":"/v5/api/utils/abi/interface/#LogDescription","TransactionDescription":"/v5/api/utils/abi/interface/#TransactionDescription","Interface--specifying-fragments":"/v5/api/utils/abi/interface/#Interface--specifying-fragments","addresses":"/v5/api/utils/address/","address-formats":"/v5/api/utils/address/#address-formats","address":"/v5/api/utils/address/#address","address-icap":"/v5/api/utils/address/#address-icap","utils--address":"/v5/api/utils/address/#utils--address","utils-getAddress":"/v5/api/utils/address/#utils-getAddress","utils-getIcapAddress":"/v5/api/utils/address/#utils-getIcapAddress","utils-isAddress":"/v5/api/utils/address/#utils-isAddress","utils--address-derivation":"/v5/api/utils/address/#utils--address-derivation","utils-computeAddress":"/v5/api/utils/address/#utils-computeAddress","utils-recoverAddress":"/v5/api/utils/address/#utils-recoverAddress","utils--contract-addresses":"/v5/api/utils/address/#utils--contract-addresses","utils-getContractAddress":"/v5/api/utils/address/#utils-getContractAddress","utils-getCreate2Address":"/v5/api/utils/address/#utils-getCreate2Address","BigNumber":"/v5/api/utils/bignumber/","BigNumber--types":"/v5/api/utils/bignumber/#BigNumber--types","BigNumberish":"/v5/api/utils/bignumber/#BigNumberish","BigNumber--creating":"/v5/api/utils/bignumber/#BigNumber--creating","BigNumber--methods":"/v5/api/utils/bignumber/#BigNumber--methods","BigNumber--notes":"/v5/api/utils/bignumber/#BigNumber--notes","BigNumber--notes-safenumbers":"/v5/api/utils/bignumber/#BigNumber--notes-safenumbers","Bytes":"/v5/api/utils/bytes/#Bytes","BytesLike":"/v5/api/utils/bytes/#BytesLike","DataHexString":"/v5/api/utils/bytes/#DataHexString","HexString":"/v5/api/utils/bytes/#HexString","Signature":"/v5/api/utils/bytes/#Signature","signature-raw":"/v5/api/utils/bytes/#signature-raw","SignatureLike":"/v5/api/utils/bytes/#SignatureLike","utils-isBytes":"/v5/api/utils/bytes/#utils-isBytes","utils-isBytesLike":"/v5/api/utils/bytes/#utils-isBytesLike","utils-isHexString":"/v5/api/utils/bytes/#utils-isHexString","utils-arrayify":"/v5/api/utils/bytes/#utils-arrayify","utils-hexlify":"/v5/api/utils/bytes/#utils-hexlify","utils-hexValue":"/v5/api/utils/bytes/#utils-hexValue","utils-concat":"/v5/api/utils/bytes/#utils-concat","utils-stripZeros":"/v5/api/utils/bytes/#utils-stripZeros","utils-zeroPad":"/v5/api/utils/bytes/#utils-zeroPad","utils-hexConcat":"/v5/api/utils/bytes/#utils-hexConcat","utils-hexDataLength":"/v5/api/utils/bytes/#utils-hexDataLength","utils-hexDataSlice":"/v5/api/utils/bytes/#utils-hexDataSlice","utils-hexStripZeros":"/v5/api/utils/bytes/#utils-hexStripZeros","utils-hexZeroPad":"/v5/api/utils/bytes/#utils-hexZeroPad","utils-joinSignature":"/v5/api/utils/bytes/#utils-joinSignature","utils-splitSignature":"/v5/api/utils/bytes/#utils-splitSignature","utils-randomBytes":"/v5/api/utils/bytes/#utils-randomBytes","utils-shuffled":"/v5/api/utils/bytes/#utils-shuffled","constants":"/v5/api/utils/constants/","constants-AddressZero":"/v5/api/utils/constants/#constants-AddressZero","constants-HashZero":"/v5/api/utils/constants/#constants-HashZero","constants-EtherSymbol":"/v5/api/utils/constants/#constants-EtherSymbol","constants-NegativeOne":"/v5/api/utils/constants/#constants-NegativeOne","constants-Zero":"/v5/api/utils/constants/#constants-Zero","constants-One":"/v5/api/utils/constants/#constants-One","constants-Two":"/v5/api/utils/constants/#constants-Two","constants-WeiPerEther":"/v5/api/utils/constants/#constants-WeiPerEther","constants-MaxUint256":"/v5/api/utils/constants/#constants-MaxUint256","display-logic":"/v5/api/utils/display-logic/","display-logic--units":"/v5/api/utils/display-logic/#display-logic--units","display-logic--named-units":"/v5/api/utils/display-logic/#display-logic--named-units","display-logic--functions":"/v5/api/utils/display-logic/#display-logic--functions","display-logic--formatting":"/v5/api/utils/display-logic/#display-logic--formatting","utils-commify":"/v5/api/utils/display-logic/#utils-commify","unit-conversion":"/v5/api/utils/display-logic/#unit-conversion","utils-formatUnits":"/v5/api/utils/display-logic/#utils-formatUnits","utils-formatEther":"/v5/api/utils/display-logic/#utils-formatEther","utils-parseUnits":"/v5/api/utils/display-logic/#utils-parseUnits","utils-parseEther":"/v5/api/utils/display-logic/#utils-parseEther","encoding":"/v5/api/utils/encoding/","Bse58":"/v5/api/utils/encoding/#Bse58","Base64":"/v5/api/utils/encoding/#Base64","rlp--methods":"/v5/api/utils/encoding/#rlp--methods","utils-rlpEncode":"/v5/api/utils/encoding/#utils-rlpEncode","utils.rlpDecode":"/v5/api/utils/encoding/#utils.rlpDecode","rlp--dataobject":"/v5/api/utils/encoding/#rlp--dataobject","FixedNumber":"/v5/api/utils/fixednumber/","FixedFormat":"/v5/api/utils/fixednumber/#FixedFormat","FixedFormat--strings":"/v5/api/utils/fixednumber/#FixedFormat--strings","FixedNumber-from":"/v5/api/utils/fixednumber/#FixedNumber-from","hashing-algorithms":"/v5/api/utils/hashing/","cryptographic-hash-functions":"/v5/api/utils/hashing/#cryptographic-hash-functions","utils-id":"/v5/api/utils/hashing/#utils-id","utils-keccak256":"/v5/api/utils/hashing/#utils-keccak256","utils-ripemd160":"/v5/api/utils/hashing/#utils-ripemd160","utils-sha256":"/v5/api/utils/hashing/#utils-sha256","utils-sha512":"/v5/api/utils/hashing/#utils-sha512","utils--hmac":"/v5/api/utils/hashing/#utils--hmac","utils-computeHmac":"/v5/api/utils/hashing/#utils-computeHmac","utils--hmac-supported-algorithm":"/v5/api/utils/hashing/#utils--hmac-supported-algorithm","utils--hashing-helpers":"/v5/api/utils/hashing/#utils--hashing-helpers","utils-hashMessage":"/v5/api/utils/hashing/#utils-hashMessage","utils-namehash":"/v5/api/utils/hashing/#utils-namehash","TypedDataEncoder":"/v5/api/utils/hashing/#TypedDataEncoder","TypedDataEncoder-from":"/v5/api/utils/hashing/#TypedDataEncoder-from","TypedDataEncoder-encode":"/v5/api/utils/hashing/#TypedDataEncoder-encode","TypedDataEncoder-getPayload":"/v5/api/utils/hashing/#TypedDataEncoder-getPayload","TypedDataEncoder-getPrimaryType":"/v5/api/utils/hashing/#TypedDataEncoder-getPrimaryType","TypedDataEncoder-hash":"/v5/api/utils/hashing/#TypedDataEncoder-hash","TypedDataEncoder-hashDomain":"/v5/api/utils/hashing/#TypedDataEncoder-hashDomain","TypedDataEncoder-resolveNames":"/v5/api/utils/hashing/#TypedDataEncoder-resolveNames","utils--solidity-hashing":"/v5/api/utils/hashing/#utils--solidity-hashing","utils-solidityPack":"/v5/api/utils/hashing/#utils-solidityPack","utils-solidityKeccak256":"/v5/api/utils/hashing/#utils-solidityKeccak256","utils-soliditySha256":"/v5/api/utils/hashing/#utils-soliditySha256","hdnodes":"/v5/api/utils/hdnode/","hdnodes--defaultpath":"/v5/api/utils/hdnode/#hdnodes--defaultpath","Mnemonic":"/v5/api/utils/hdnode/#Mnemonic","HDNode":"/v5/api/utils/hdnode/#HDNode","HDNode--creating":"/v5/api/utils/hdnode/#HDNode--creating","HDNode-fromMnemonic":"/v5/api/utils/hdnode/#HDNode-fromMnemonic","HDNode-fromSeed":"/v5/api/utils/hdnode/#HDNode-fromSeed","HDNode-fromExtendedKey":"/v5/api/utils/hdnode/#HDNode-fromExtendedKey","HDNode--properties":"/v5/api/utils/hdnode/#HDNode--properties","HDNode--methods":"/v5/api/utils/hdnode/#HDNode--methods","HDNode-neuter":"/v5/api/utils/hdnode/#HDNode-neuter","HDNode-derivePath":"/v5/api/utils/hdnode/#HDNode-derivePath","HDNode--utilities":"/v5/api/utils/hdnode/#HDNode--utilities","utils-mnemonicToSeed":"/v5/api/utils/hdnode/#utils-mnemonicToSeed","utils-mnemonicToEntropy":"/v5/api/utils/hdnode/#utils-mnemonicToEntropy","utils-isValidMnemonic":"/v5/api/utils/hdnode/#utils-isValidMnemonic","logging":"/v5/api/utils/logger/","Logger":"/v5/api/utils/logger/#Logger","Logger--censorship":"/v5/api/utils/logger/#Logger--censorship","errors":"/v5/api/utils/logger/#errors","errors-Timeout":"/v5/api/utils/logger/#errors-Timeout","errors-UnknownError":"/v5/api/utils/logger/#errors-UnknownError","errors-UnsupportedOperation":"/v5/api/utils/logger/#errors-UnsupportedOperation","errors-NumericFault":"/v5/api/utils/logger/#errors-NumericFault","errors-InvalidArgument":"/v5/api/utils/logger/#errors-InvalidArgument","errors-MissingArgument":"/v5/api/utils/logger/#errors-MissingArgument","errors-MissingNew":"/v5/api/utils/logger/#errors-MissingNew","errors-UnexpectedArgument":"/v5/api/utils/logger/#errors-UnexpectedArgument","Logger-levels":"/v5/api/utils/logger/#Logger-levels","utils-resolveproperties":"/v5/api/utils/properties/#utils-resolveproperties","SigningKey":"/v5/api/utils/signing-key/","SigningKey-constructor":"/v5/api/utils/signing-key/#SigningKey-constructor","utils-verifyMessage":"/v5/api/utils/signing-key/#utils-verifyMessage","utils-verifyTypedData":"/v5/api/utils/signing-key/#utils-verifyTypedData","utils-recoverPublicKey":"/v5/api/utils/signing-key/#utils-recoverPublicKey","utils-computePublicKey":"/v5/api/utils/signing-key/#utils-computePublicKey","strings":"/v5/api/utils/strings/","Bytes32String":"/v5/api/utils/strings/#Bytes32String","utils-parseBytes32":"/v5/api/utils/strings/#utils-parseBytes32","utils-formatBytes32":"/v5/api/utils/strings/#utils-formatBytes32","strings-utf8":"/v5/api/utils/strings/#strings-utf8","utils-toUtf8Bytes":"/v5/api/utils/strings/#utils-toUtf8Bytes","utils-toUtf8CodePoints":"/v5/api/utils/strings/#utils-toUtf8CodePoints","utils-toUtf8String":"/v5/api/utils/strings/#utils-toUtf8String","strings--unicode-normalization-form":"/v5/api/utils/strings/#strings--unicode-normalization-form","strings--error-handling":"/v5/api/utils/strings/#strings--error-handling","strings--error-reasons":"/v5/api/utils/strings/#strings--error-reasons","strings--Utf8Error":"/v5/api/utils/strings/#strings--Utf8Error","strings--Utf8Ignore":"/v5/api/utils/strings/#strings--Utf8Ignore","strings--Utf8Replace":"/v5/api/utils/strings/#strings--Utf8Replace","transactions":"/v5/api/utils/transactions/","transactions--types":"/v5/api/utils/transactions/#transactions--types","UnsignedTransaction":"/v5/api/utils/transactions/#UnsignedTransaction","Transaction":"/v5/api/utils/transactions/#Transaction","transactions--functions":"/v5/api/utils/transactions/#transactions--functions","utils-parseTransaction":"/v5/api/utils/transactions/#utils-parseTransaction","utils-serializeTransaction":"/v5/api/utils/transactions/#utils-serializeTransaction","web":"/v5/api/utils/web/","utils-fetchJson":"/v5/api/utils/web/#utils-fetchJson","utils-poll":"/v5/api/utils/web/#utils-poll","ConnectionInfo":"/v5/api/utils/web/#ConnectionInfo","PollOptions":"/v5/api/utils/web/#PollOptions","wordlists":"/v5/api/utils/wordlists/","Wordlist":"/v5/api/utils/wordlists/#Wordlist","wordlists--languages":"/v5/api/utils/wordlists/#wordlists--languages","api-keys":"/v5/api-keys/","api-keys--etherscan":"/v5/api-keys/#api-keys--etherscan","api-keys--infura":"/v5/api-keys/#api-keys--infura","api-keys--alchemy":"/v5/api-keys/#api-keys--alchemy","api-keys--pocket-gateway":"/v5/api-keys/#api-keys--pocket-gateway","api-keys--getDefaultProvider":"/v5/api-keys/#api-keys--getDefaultProvider","cli-asm":"/v5/cli/asm/","cliex-init":"/v5/cli/ethers/#cliex-init","cliex-send":"/v5/cli/ethers/#cliex-send","cliex-signing":"/v5/cli/ethers/#cliex-signing","cliex-scripting":"/v5/cli/ethers/#cliex-scripting","cliex-mnemonicpassword":"/v5/cli/ethers/#cliex-mnemonicpassword","cliex-mnemonicpassword-xxx":"/v5/cli/ethers/#cliex-mnemonicpassword-xxx","cli-diy":"/v5/cli/plugin/","cli-cli":"/v5/cli/plugin/#cli-cli","cli-addplugin":"/v5/cli/plugin/#cli-addplugin","cli-setplugin":"/v5/cli/plugin/#cli-setplugin","cli-showusage":"/v5/cli/plugin/#cli-showusage","cli-run":"/v5/cli/plugin/#cli-run","cli-plugin":"/v5/cli/plugin/#cli-plugin","plugin-prepareoptions":"/v5/cli/plugin/#plugin-prepareoptions","plugin-prepareargs":"/v5/cli/plugin/#plugin-prepareargs","plugin-run":"/v5/cli/plugin/#plugin-run","plugin-getaddress":"/v5/cli/plugin/#plugin-getaddress","plugin-dump":"/v5/cli/plugin/#plugin-dump","plugin-throwusageerror":"/v5/cli/plugin/#plugin-throwusageerror","plugin-throwerror":"/v5/cli/plugin/#plugin-throwerror","plugin-gethelp":"/v5/cli/plugin/#plugin-gethelp","plugin-getoptionshelp":"/v5/cli/plugin/#plugin-getoptionshelp","cli-argparser":"/v5/cli/plugin/#cli-argparser","argparser-consumeflag":"/v5/cli/plugin/#argparser-consumeflag","argparser-consumemultioptions":"/v5/cli/plugin/#argparser-consumemultioptions","argparser-consumeoption":"/v5/cli/plugin/#argparser-consumeoption","argparser-consumeoptions":"/v5/cli/plugin/#argparser-consumeoptions","best-practices":"/v5/concepts/best-practices/","gas":"/v5/concepts/gas/","gas-price":"/v5/concepts/gas/#gas-price","gas-limit":"/v5/concepts/gas/#gas-limit","security":"/v5/concepts/security/","security--pbkdf":"/v5/concepts/security/#security--pbkdf","contributing":"/v5/contributing/","contributing--building":"/v5/contributing/#contributing--building","contributing--updating":"/v5/contributing/#contributing--updating","contributing--documentation":"/v5/contributing/#contributing--documentation","cookbook-reactnative":"/v5/cookbook/react-native/","cookbook-reactnative-shims":"/v5/cookbook/react-native/#cookbook-reactnative-shims","cookbook-reactnative-security":"/v5/cookbook/react-native/#cookbook-reactnative-security","flatworm":"/v5/documentation/","flatworm-fragments":"/v5/documentation/#flatworm-fragments","flatworm-directive":"/v5/documentation/#flatworm-directive","flatworm-markdown":"/v5/documentation/#flatworm-markdown","flatworm--code":"/v5/documentation/#flatworm--code","flatworm--code-eval":"/v5/documentation/#flatworm--code-eval","flatworm--table":"/v5/documentation/#flatworm--table","flatworm--table-row":"/v5/documentation/#flatworm--table-row","flatworm--table-alignment":"/v5/documentation/#flatworm--table-alignment","flatworm--table-spanning":"/v5/documentation/#flatworm--table-spanning","flatworm--table-style":"/v5/documentation/#flatworm--table-style","flatworm--table-variable":"/v5/documentation/#flatworm--table-variable","flatworm-config":"/v5/documentation/#flatworm-config","flatworm-extensions":"/v5/documentation/#flatworm-extensions","flatworm--ext-inherit":"/v5/documentation/#flatworm--ext-inherit","flatworm--ext-lang":"/v5/documentation/#flatworm--ext-lang","flatworm--ext-nav":"/v5/documentation/#flatworm--ext-nav","flatworm--ext-note":"/v5/documentation/#flatworm--ext-note","flatworm--ext-src":"/v5/documentation/#flatworm--ext-src","flatworm--ext-style":"/v5/documentation/#flatworm--ext-style","getting-started":"/v5/getting-started/","installing":"/v5/getting-started/#installing","importing":"/v5/getting-started/#importing","getting-started--glossary":"/v5/getting-started/#getting-started--glossary","getting-started--connecting":"/v5/getting-started/#getting-started--connecting","getting-started--connecting-rpc":"/v5/getting-started/#getting-started--connecting-rpc","getting-started--querying":"/v5/getting-started/#getting-started--querying","getting-started--sending":"/v5/getting-started/#getting-started--sending","getting-started--contracts":"/v5/getting-started/#getting-started--contracts","getting-started--reading":"/v5/getting-started/#getting-started--reading","getting-started--writing":"/v5/getting-started/#getting-started--writing","getting-started--events":"/v5/getting-started/#getting-started--events","getting-started--history":"/v5/getting-started/#getting-started--history","getting-started--signing":"/v5/getting-started/#getting-started--signing","documentation":"/v5/","preamble":"/v5/#preamble","features":"/v5/#features","documentation--legacy":"/v5/#documentation--legacy","license":"/v5/license/","migration-v4":"/v5/migration/ethers-v4/","migration":"/v5/migration/","testing-supported":"/v5/testing/#testing-supported","testing-suites":"/v5/testing/#testing-suites","testing-api":"/v5/testing/#testing-api","testing-schemas":"/v5/testing/#testing-schemas"}} \ No newline at end of file +{"version":"0.1","links":{"link-mail":"mailto:me@ricmoo.com","link-alchemy":"https://alchemyapi.io","link-cloudflare":"https://developers.cloudflare.com/distributed-web/ethereum-gateway/","link-ens":"https://ens.domains/","link-ethereum":"https://ethereumorg","link-etherscan":"https://etherscan.io","link-expo":"https://expo.io","link-etherscan-api":"https://etherscan.io/apis","link-flatworm":"https://github.com/ricmoo/flatworm","link-geth":"https://geth.ethereum.org","link-infura":"https://infura.io","link-javascriptcore":"https://developer.apple.com/documentation/javascriptcore?language=objc","link-ledger":"https://www.ledger.com","link-metamask":"https://metamask.io/","link-otto":"https://github.com/robertkrimen/otto","link-parity":"https://www.parity.io","link-pocket":"https://pokt.network","link-react-native":"https://reactnative.dev","link-rtd":"https://github.com/readthedocs/sphinx_rtd_theme","link-semver":"https://semver.org","link-solidity":"https://solidity.readthedocs.io/","link-solidity-events":"https://docs.soliditylang.org/en/v0.8.1/abi-spec.html#events","link-sphinx":"https://www.sphinx-doc.org/","link-alchemy-signup":"https://dashboard.alchemyapi.io/signup?referral=55a35117-028e-4b7c-9e47-e275ad0acc6d","link-etherscan-signup":"https://etherscan.io/apis","link-etherscan-ratelimit":"https://info.etherscan.com/api-return-errors/","link-infura-signup":"https://infura.io/register","link-pocket-signup":"https://pokt.network/pocket-gateway-ethereum-mainnet/","link-json-rpc":"https://github.com/ethereum/wiki/wiki/JSON-RPC","link-web3-send":"https://github.com/ethereum/web3.js/blob/1.x/packages/web3-providers-http/types/index.d.ts#L57","link-parity-trace":"https://openethereum.github.io/wiki/JSONRPC-trace-module","link-parity-rpc":"https://openethereum.github.io/wiki/JSONRPC","link-geth-debug":"https://github.com/ethereum/go-ethereum/wiki/Management-APIs#debug","link-geth-rpc":"https://github.com/ethereum/go-ethereum/wiki/Management-APIs","link-legacy-docs3":"https://docs.ethers.io/v3/","link-legacy-docs4":"https://docs.ethers.io/v4/","link-github-ci":"https://github.com/ethers-io/ethers.js/actions/runs/158006903","link-github-issues":"https://github.com/ethers-io/ethers.js/issues","link-issue-407":"https://github.com/ethers-io/ethers.js/issues/407","link-infura-secret":"https://infura.io/docs/gettingStarted/authentication","link-web3":"https://github.com/ethereum/web3.js","link-web3-http":"https://github.com/ethereum/web3.js/tree/1.x/packages/web3-providers-http","link-web3-ipc":"https://github.com/ethereum/web3.js/tree/1.x/packages/web3-providers-ipc","link-web3-ws":"https://github.com/ethereum/web3.js/tree/1.x/packages/web3-providers-ws","link-solc-output":"https://solidity.readthedocs.io/en/v0.6.0/using-the-compiler.html#output-description","link-bip39-wordlists":"https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md","link-icap":"https://github.com/ethereum/wiki/wiki/Inter-exchange-Client-Address-Protocol-%28ICAP%29","link-jsonrpc":"https://github.com/ethereum/wiki/wiki/JSON-RPC","link-mit":"https://en.m.wikipedia.org/wiki/MIT_License","link-namehash":"https://docs.ens.domains/contract-api-reference/name-processing#hashing-names","link-rlp":"https://github.com/ethereum/wiki/wiki/RLP","link-ethersio":"https://ethers.io/","link-ethers-docs":"https://docs.ethers.io/","link-ethers-js":"https://cdn.ethers.io/lib/ethers-5.0.esm.min.js","link-ethers-npm":"https://www.npmjs.com/search?q=%40ethersproject%2F","link-ethers-asm-grammar":"https://github.com/ethers-io/ethers.js/blob/master/packages/asm/grammar.jison","link-eip-155":"https://eips.ethereum.org/EIPS/eip-155","link-eip-191":"https://eips.ethereum.org/EIPS/eip-191","link-eip-609":"https://eips.ethereum.org/EIPS/eip-609","link-eip-634":"https://eips.ethereum.org/EIPS/eip-634","link-eip-712":"https://eips.ethereum.org/EIPS/eip-712","link-eip-1014":"https://eips.ethereum.org/EIPS/eip-1014","link-eip-1193":"https://eips.ethereum.org/EIPS/eip-1193","link-eip-1577":"https://eips.ethereum.org/EIPS/eip-1577","link-eip-2098":"https://eips.ethereum.org/EIPS/eip-2098","link-eip-2304":"https://eips.ethereum.org/EIPS/eip-2304","link-bip-39":"https://en.bitcoin.it/wiki/BIP_0039","link-bip-32":"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki","link-bip-44":"https://en.bitcoin.it/wiki/BIP_0044","link-npm-elliptic":"https://www.npmjs.com/package/elliptic","link-npm-ethersproject-shims":"https://www.npmjs.com/package/@ethersproject/shims","link-npm-events":"https://nodejs.org/dist/latest-v13.x/docs/api/events.html#events_class_eventemitter","link-npm-bnjs":"https://www.npmjs.com/package/bn.js","link-npm-query-bignumber":"https://www.npmjs.com/search?q=bignumber","link-npm-react-native-get-random-values":"https://www.npmjs.com/package/react-native-get-random-values","link-js-array":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array","link-js-bigint":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt","link-js-normalize":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize","link-js-maxsafe":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER#Description","link-js-proxy":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy","link-js-typedarray":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray","link-cors":"https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS","link-ricmoo-humanreadableabi":"https://blog.ricmoo.com/human-readable-contract-abis-in-ethers-js-141902f4d917","link-other-ethereum-dev-docs":"https://ethereum.org/en/developers/docs/","link-wiki-basicauth":"https://en.wikipedia.org/wiki/Basic_access_authentication","link-wiki-backoff":"https://en.wikipedia.org/wiki/Exponential_backoff","link-wiki-bloomfilter":"https://en.wikipedia.org/wiki/Bloom_filter","link-wiki-bruteforce":"https://en.wikipedia.org/wiki/Brute-force_attack","link-wiki-cryptographichash":"https://en.wikipedia.org/wiki/Cryptographic_hash_function","link-wiki-ecrecover":"https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm#Public_key_recovery","link-wiki-homoglyph":"https://en.wikipedia.org/wiki/IDN_homograph_attack","link-wiki-hmac":"https://en.wikipedia.org/wiki/HMAC","link-wiki-iban":"https://en.wikipedia.org/wiki/International_Bank_Account_Number","link-wiki-ieee754":"https://en.wikipedia.org/wiki/Double-precision_floating-point_format","link-wiki-observer-pattern":"https://en.wikipedia.org/wiki/Observer_pattern","link-wiki-ripemd":"https://en.m.wikipedia.org/wiki/RIPEMD","link-wiki-sha2":"https://en.wikipedia.org/wiki/SHA-2","link-wiki-twoscomplement":"https://en.wikipedia.org/wiki/Two%27s_complement","link-wiki-unicode-equivalence":"https://en.wikipedia.org/wiki/Unicode_equivalence","link-wiki-utf8-overlong":"https://en.wikipedia.org/wiki/UTF-8#Overlong_encodings","link-wiki-utf8-replacement":"https://en.wikipedia.org/wiki/Specials_%28Unicode_block%29#Replacement_character","link-wiki-scrypt":"https://en.wikipedia.org/wiki/Scrypt","link-wiki-sha3":"https://en.wikipedia.org/wiki/SHA-3","link-wiki-shuffle":"https://en.wikipedia.org/wiki/Fisher-Yates_shuffle","link-wiki-overflow":"https://en.wikipedia.org/wiki/Integer_overflow","link-wiki-underflow":"https://en.wikipedia.org/wiki/Arithmetic_underflow","ContractFactory":"/v5/api/contract/contract-factory/","ContractFactory--creating":"/v5/api/contract/contract-factory/#ContractFactory--creating","ContractFactory-connect":"/v5/api/contract/contract-factory/#ContractFactory-connect","ContractFactory--properties":"/v5/api/contract/contract-factory/#ContractFactory--properties","ContractFactory--methods":"/v5/api/contract/contract-factory/#ContractFactory--methods","ContractFactory-attach":"/v5/api/contract/contract-factory/#ContractFactory-attach","ContractFactory-deploy":"/v5/api/contract/contract-factory/#ContractFactory-deploy","Contract":"/v5/api/contract/contract/","Contract--creating":"/v5/api/contract/contract/#Contract--creating","Contract-attach":"/v5/api/contract/contract/#Contract-attach","Contract-connect":"/v5/api/contract/contract/#Contract-connect","Contract--properties":"/v5/api/contract/contract/#Contract--properties","Contract--methods":"/v5/api/contract/contract/#Contract--methods","Contract-deployed":"/v5/api/contract/contract/#Contract-deployed","Contract-isIndexed":"/v5/api/contract/contract/#Contract-isIndexed","Contract--events":"/v5/api/contract/contract/#Contract--events","Contract-queryFilter":"/v5/api/contract/contract/#Contract-queryFilter","Contract-listenerCount":"/v5/api/contract/contract/#Contract-listenerCount","Contract-listeners":"/v5/api/contract/contract/#Contract-listeners","Contract-off":"/v5/api/contract/contract/#Contract-off","Contract-on":"/v5/api/contract/contract/#Contract-on","Contract-once":"/v5/api/contract/contract/#Contract-once","Contract-removeAllListeners":"/v5/api/contract/contract/#Contract-removeAllListeners","Contract--metaclass":"/v5/api/contract/contract/#Contract--metaclass","Contract--readonly":"/v5/api/contract/contract/#Contract--readonly","Contract-functionsCall":"/v5/api/contract/contract/#Contract-functionsCall","Contract--write":"/v5/api/contract/contract/#Contract--write","contract-functionsSend":"/v5/api/contract/contract/#contract-functionsSend","Contract--check":"/v5/api/contract/contract/#Contract--check","contract-estimateGas":"/v5/api/contract/contract/#contract-estimateGas","contract-populateTransaction":"/v5/api/contract/contract/#contract-populateTransaction","contract-callStatic":"/v5/api/contract/contract/#contract-callStatic","Contract--filters":"/v5/api/contract/contract/#Contract--filters","erc20-events":"/v5/api/contract/example/#erc20-events","erc20-queryfilter":"/v5/api/contract/example/#erc20-queryfilter","contracts":"/v5/api/contract/","experimental-brainwallet":"/v5/api/experimental/#experimental-brainwallet","experimental-eip1193bridge":"/v5/api/experimental/#experimental-eip1193bridge","experimental-noncemanager":"/v5/api/experimental/#experimental-noncemanager","api":"/v5/api/","asm-utilities":"/v5/api/other/assembly/api/","asm-parse":"/v5/api/other/assembly/api/#asm-parse","asm-bytecode":"/v5/api/other/assembly/api/#asm-bytecode","asm-operation":"/v5/api/other/assembly/api/#asm-operation","asm-opcode":"/v5/api/other/assembly/api/#asm-opcode","asm-ast":"/v5/api/other/assembly/ast/","asm-location":"/v5/api/other/assembly/ast/#asm-location","asm-node":"/v5/api/other/assembly/ast/#asm-node","asm-valuenode":"/v5/api/other/assembly/ast/#asm-valuenode","asm-literalnode":"/v5/api/other/assembly/ast/#asm-literalnode","asm-popnode":"/v5/api/other/assembly/ast/#asm-popnode","asm-linknode":"/v5/api/other/assembly/ast/#asm-linknode","asm-opcodenode":"/v5/api/other/assembly/ast/#asm-opcodenode","asm-evaluationnode":"/v5/api/other/assembly/ast/#asm-evaluationnode","asm-executionnode":"/v5/api/other/assembly/ast/#asm-executionnode","asm-labellednode":"/v5/api/other/assembly/ast/#asm-labellednode","asm-labelnode":"/v5/api/other/assembly/ast/#asm-labelnode","asm-datanode":"/v5/api/other/assembly/ast/#asm-datanode","asm-scopenode":"/v5/api/other/assembly/ast/#asm-scopenode","asm-dialect":"/v5/api/other/assembly/dialect/","asm-dialect-opcode":"/v5/api/other/assembly/dialect/#asm-dialect-opcode","asm-dialect-label":"/v5/api/other/assembly/dialect/#asm-dialect-label","asm-dialect-literal":"/v5/api/other/assembly/dialect/#asm-dialect-literal","asm-dialect-comment":"/v5/api/other/assembly/dialect/#asm-dialect-comment","asm-dialect-scope":"/v5/api/other/assembly/dialect/#asm-dialect-scope","asm-dialect-datasegment":"/v5/api/other/assembly/dialect/#asm-dialect-datasegment","asm-dialect-links":"/v5/api/other/assembly/dialect/#asm-dialect-links","asm-dialect-placeholder":"/v5/api/other/assembly/dialect/#asm-dialect-placeholder","asm-dialect-scripting":"/v5/api/other/assembly/dialect/#asm-dialect-scripting","hw-ledger":"/v5/api/other/hardware/#hw-ledger","api-providers":"/v5/api/providers/api-providers/","EtherscanProvider":"/v5/api/providers/api-providers/#EtherscanProvider","InfuraProvider":"/v5/api/providers/api-providers/#InfuraProvider","InfuraProvider-getWebSocketProvider":"/v5/api/providers/api-providers/#InfuraProvider-getWebSocketProvider","AlchemyProvider":"/v5/api/providers/api-providers/#AlchemyProvider","CloudflareProvider":"/v5/api/providers/api-providers/#CloudflareProvider","providers":"/v5/api/providers/","providers-getDefaultProvider":"/v5/api/providers/#providers-getDefaultProvider","JsonRpcProvider":"/v5/api/providers/jsonrpc-provider/","JsonRpcProvider-getSigner":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider-getSigner","JsonRpcProvider-getUncheckedSigner":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider-getUncheckedSigner","JsonRpcProvider-listAccounts":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider-listAccounts","JsonRpcProvider-send":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider-send","JsonRpcSigner":"/v5/api/providers/jsonrpc-provider/#JsonRpcSigner","JsonRpcSigner-connectUnchecked":"/v5/api/providers/jsonrpc-provider/#JsonRpcSigner-connectUnchecked","JsonRpcSigner-sendUncheckedTransaction":"/v5/api/providers/jsonrpc-provider/#JsonRpcSigner-sendUncheckedTransaction","JsonRpcSigner-unlock":"/v5/api/providers/jsonrpc-provider/#JsonRpcSigner-unlock","UncheckedJsonRpcSigner":"/v5/api/providers/jsonrpc-provider/#UncheckedJsonRpcSigner","JsonRpcProvider--other":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider--other","FallbackProvider":"/v5/api/providers/other/#FallbackProvider","FallbackProviderConfig":"/v5/api/providers/other/#FallbackProviderConfig","IpcProvider":"/v5/api/providers/other/#IpcProvider","UrlJsonRpcProvider":"/v5/api/providers/other/#UrlJsonRpcProvider","Web3Provider":"/v5/api/providers/other/#Web3Provider","Web3Provider--ExternalProvider":"/v5/api/providers/other/#Web3Provider--ExternalProvider","WebSocketProvider":"/v5/api/providers/other/#WebSocketProvider","Provider":"/v5/api/providers/provider/","Provider--account-methods":"/v5/api/providers/provider/#Provider--account-methods","Provider-getBalance":"/v5/api/providers/provider/#Provider-getBalance","Provider-getCode":"/v5/api/providers/provider/#Provider-getCode","Provider-getStorageAt":"/v5/api/providers/provider/#Provider-getStorageAt","Provider-getTransactionCount":"/v5/api/providers/provider/#Provider-getTransactionCount","Provider--block-methods":"/v5/api/providers/provider/#Provider--block-methods","Provider-getBlock":"/v5/api/providers/provider/#Provider-getBlock","Provider-getBlockWithTransactions":"/v5/api/providers/provider/#Provider-getBlockWithTransactions","Provider--ens-methods":"/v5/api/providers/provider/#Provider--ens-methods","Provider-lookupAddress":"/v5/api/providers/provider/#Provider-lookupAddress","Provider-ResolveName":"/v5/api/providers/provider/#Provider-ResolveName","EnsResolver":"/v5/api/providers/provider/#EnsResolver","Provider--log-methods":"/v5/api/providers/provider/#Provider--log-methods","Provider-getLogs":"/v5/api/providers/provider/#Provider-getLogs","Provider--network-methods":"/v5/api/providers/provider/#Provider--network-methods","Provider-getNetwork":"/v5/api/providers/provider/#Provider-getNetwork","Provider-getBlockNumber":"/v5/api/providers/provider/#Provider-getBlockNumber","Provider-getGasPrice":"/v5/api/providers/provider/#Provider-getGasPrice","Provider-ready":"/v5/api/providers/provider/#Provider-ready","Provider--transaction-methods":"/v5/api/providers/provider/#Provider--transaction-methods","Provider-call":"/v5/api/providers/provider/#Provider-call","Provider-estimateGas":"/v5/api/providers/provider/#Provider-estimateGas","Provider-getTransaction":"/v5/api/providers/provider/#Provider-getTransaction","Provider-getTransactionReceipt":"/v5/api/providers/provider/#Provider-getTransactionReceipt","Provider-sendTransaction":"/v5/api/providers/provider/#Provider-sendTransaction","Provider-waitForTransaction":"/v5/api/providers/provider/#Provider-waitForTransaction","Provider--event-methods":"/v5/api/providers/provider/#Provider--event-methods","Provider-on":"/v5/api/providers/provider/#Provider-on","Provider-once":"/v5/api/providers/provider/#Provider-once","Provider-emit":"/v5/api/providers/provider/#Provider-emit","Provider-off":"/v5/api/providers/provider/#Provider-off","Provider-removeAllListeners":"/v5/api/providers/provider/#Provider-removeAllListeners","Provider-listenerCount":"/v5/api/providers/provider/#Provider-listenerCount","Provider-listeners":"/v5/api/providers/provider/#Provider-listeners","Provider--events":"/v5/api/providers/provider/#Provider--events","Provider--inspection-methods":"/v5/api/providers/provider/#Provider--inspection-methods","Provider-isProvider":"/v5/api/providers/provider/#Provider-isProvider","providers-BlockTag":"/v5/api/providers/types/#providers-BlockTag","providers-Networkish":"/v5/api/providers/types/#providers-Networkish","providers-Network":"/v5/api/providers/types/#providers-Network","providers-Block":"/v5/api/providers/types/#providers-Block","providers-BlockWithTransactions":"/v5/api/providers/types/#providers-BlockWithTransactions","providers-EventFilter":"/v5/api/providers/types/#providers-EventFilter","providers-Filter":"/v5/api/providers/types/#providers-Filter","providers-FilterByBlockHash":"/v5/api/providers/types/#providers-FilterByBlockHash","providers-Log":"/v5/api/providers/types/#providers-Log","providers-TransactionRequest":"/v5/api/providers/types/#providers-TransactionRequest","providers-TransactionResponse":"/v5/api/providers/types/#providers-TransactionResponse","providers-TransactionReceipt":"/v5/api/providers/types/#providers-TransactionReceipt","signers":"/v5/api/signer/","Signer":"/v5/api/signer/#Signer","Signer-connect":"/v5/api/signer/#Signer-connect","Signer-getaddress":"/v5/api/signer/#Signer-getaddress","Signer-isSigner":"/v5/api/signer/#Signer-isSigner","Signer--blockchain-methods":"/v5/api/signer/#Signer--blockchain-methods","Signer-getBalance":"/v5/api/signer/#Signer-getBalance","Signer-getChainId":"/v5/api/signer/#Signer-getChainId","Signer-getGasPrice":"/v5/api/signer/#Signer-getGasPrice","Signer-getTransactionCount":"/v5/api/signer/#Signer-getTransactionCount","Signer-call":"/v5/api/signer/#Signer-call","Signer-estimateGas":"/v5/api/signer/#Signer-estimateGas","Signer-resolveName":"/v5/api/signer/#Signer-resolveName","Signer--signing-methods":"/v5/api/signer/#Signer--signing-methods","Signer-signMessage":"/v5/api/signer/#Signer-signMessage","Signer-signTransaction":"/v5/api/signer/#Signer-signTransaction","Signer-sendTransaction":"/v5/api/signer/#Signer-sendTransaction","Signer-signTypedData":"/v5/api/signer/#Signer-signTypedData","Signer--subclassing":"/v5/api/signer/#Signer--subclassing","Signer-checkTransaction":"/v5/api/signer/#Signer-checkTransaction","Signer-populateTransaction":"/v5/api/signer/#Signer-populateTransaction","Wallet":"/v5/api/signer/#Wallet","Wallet-constructor":"/v5/api/signer/#Wallet-constructor","Wallet-createRandom":"/v5/api/signer/#Wallet-createRandom","Wallet-fromEncryptedJson":"/v5/api/signer/#Wallet-fromEncryptedJson","Wallet-fromEncryptedJsonSync":"/v5/api/signer/#Wallet-fromEncryptedJsonSync","Wallet.fromMnemonic":"/v5/api/signer/#Wallet.fromMnemonic","Wallet--properties":"/v5/api/signer/#Wallet--properties","Wallet--methods":"/v5/api/signer/#Wallet--methods","Wallet-encrypt":"/v5/api/signer/#Wallet-encrypt","VoidSigner":"/v5/api/signer/#VoidSigner","ExternallyOwnedAccount":"/v5/api/signer/#ExternallyOwnedAccount","AbiCoder":"/v5/api/utils/abi/coder/","AbiCoder--creating":"/v5/api/utils/abi/coder/#AbiCoder--creating","AbiCoder--methods":"/v5/api/utils/abi/coder/#AbiCoder--methods","AbiCoder-encode":"/v5/api/utils/abi/coder/#AbiCoder-encode","AbiCoder-decode":"/v5/api/utils/abi/coder/#AbiCoder-decode","abi-formats":"/v5/api/utils/abi/formats/","abi-formats--human-readable-abi":"/v5/api/utils/abi/formats/#abi-formats--human-readable-abi","abi-formats--solidity":"/v5/api/utils/abi/formats/#abi-formats--solidity","fragments":"/v5/api/utils/abi/fragments/","fragments--output-formats":"/v5/api/utils/abi/fragments/#fragments--output-formats","Fragment":"/v5/api/utils/abi/fragments/#Fragment","Fragment-from":"/v5/api/utils/abi/fragments/#Fragment-from","Fragment-isFragment":"/v5/api/utils/abi/fragments/#Fragment-isFragment","ConstructorFragment":"/v5/api/utils/abi/fragments/#ConstructorFragment","ConstructorFragment-from":"/v5/api/utils/abi/fragments/#ConstructorFragment-from","ConstructorFragment-isConstructorFragment":"/v5/api/utils/abi/fragments/#ConstructorFragment-isConstructorFragment","EventFragment":"/v5/api/utils/abi/fragments/#EventFragment","EventFragment-from":"/v5/api/utils/abi/fragments/#EventFragment-from","EventFragment-isEventFragment":"/v5/api/utils/abi/fragments/#EventFragment-isEventFragment","FunctionFragment":"/v5/api/utils/abi/fragments/#FunctionFragment","FunctionFragment-from":"/v5/api/utils/abi/fragments/#FunctionFragment-from","FunctionFragment-isFunctionFragment":"/v5/api/utils/abi/fragments/#FunctionFragment-isFunctionFragment","ParamType":"/v5/api/utils/abi/fragments/#ParamType","ParamType-name":"/v5/api/utils/abi/fragments/#ParamType-name","ParamType-type":"/v5/api/utils/abi/fragments/#ParamType-type","ParamType-baseType":"/v5/api/utils/abi/fragments/#ParamType-baseType","ParamType-indexed":"/v5/api/utils/abi/fragments/#ParamType-indexed","ParamType-arrayChildren":"/v5/api/utils/abi/fragments/#ParamType-arrayChildren","ParamType-arrayLength":"/v5/api/utils/abi/fragments/#ParamType-arrayLength","ParamType-components":"/v5/api/utils/abi/fragments/#ParamType-components","ParamType-from":"/v5/api/utils/abi/fragments/#ParamType-from","ParamType-isParamType":"/v5/api/utils/abi/fragments/#ParamType-isParamType","Interface":"/v5/api/utils/abi/interface/","Interface--creating":"/v5/api/utils/abi/interface/#Interface--creating","Interface--properties":"/v5/api/utils/abi/interface/#Interface--properties","Interface--formatting":"/v5/api/utils/abi/interface/#Interface--formatting","Interface--fragments":"/v5/api/utils/abi/interface/#Interface--fragments","Interface--selectors":"/v5/api/utils/abi/interface/#Interface--selectors","Interface--encoding":"/v5/api/utils/abi/interface/#Interface--encoding","Interface--decoding":"/v5/api/utils/abi/interface/#Interface--decoding","Interface--parsing":"/v5/api/utils/abi/interface/#Interface--parsing","Interface--types":"/v5/api/utils/abi/interface/#Interface--types","Result":"/v5/api/utils/abi/interface/#Result","LogDescription":"/v5/api/utils/abi/interface/#LogDescription","TransactionDescription":"/v5/api/utils/abi/interface/#TransactionDescription","Interface--specifying-fragments":"/v5/api/utils/abi/interface/#Interface--specifying-fragments","addresses":"/v5/api/utils/address/","address-formats":"/v5/api/utils/address/#address-formats","address":"/v5/api/utils/address/#address","address-icap":"/v5/api/utils/address/#address-icap","utils--address":"/v5/api/utils/address/#utils--address","utils-getAddress":"/v5/api/utils/address/#utils-getAddress","utils-getIcapAddress":"/v5/api/utils/address/#utils-getIcapAddress","utils-isAddress":"/v5/api/utils/address/#utils-isAddress","utils--address-derivation":"/v5/api/utils/address/#utils--address-derivation","utils-computeAddress":"/v5/api/utils/address/#utils-computeAddress","utils-recoverAddress":"/v5/api/utils/address/#utils-recoverAddress","utils--contract-addresses":"/v5/api/utils/address/#utils--contract-addresses","utils-getContractAddress":"/v5/api/utils/address/#utils-getContractAddress","utils-getCreate2Address":"/v5/api/utils/address/#utils-getCreate2Address","BigNumber":"/v5/api/utils/bignumber/","BigNumber--types":"/v5/api/utils/bignumber/#BigNumber--types","BigNumberish":"/v5/api/utils/bignumber/#BigNumberish","BigNumber--creating":"/v5/api/utils/bignumber/#BigNumber--creating","BigNumber--methods":"/v5/api/utils/bignumber/#BigNumber--methods","BigNumber--notes":"/v5/api/utils/bignumber/#BigNumber--notes","BigNumber--notes-safenumbers":"/v5/api/utils/bignumber/#BigNumber--notes-safenumbers","Bytes":"/v5/api/utils/bytes/#Bytes","BytesLike":"/v5/api/utils/bytes/#BytesLike","DataHexString":"/v5/api/utils/bytes/#DataHexString","HexString":"/v5/api/utils/bytes/#HexString","Signature":"/v5/api/utils/bytes/#Signature","signature-raw":"/v5/api/utils/bytes/#signature-raw","SignatureLike":"/v5/api/utils/bytes/#SignatureLike","utils-isBytes":"/v5/api/utils/bytes/#utils-isBytes","utils-isBytesLike":"/v5/api/utils/bytes/#utils-isBytesLike","utils-isHexString":"/v5/api/utils/bytes/#utils-isHexString","utils-arrayify":"/v5/api/utils/bytes/#utils-arrayify","utils-hexlify":"/v5/api/utils/bytes/#utils-hexlify","utils-hexValue":"/v5/api/utils/bytes/#utils-hexValue","utils-concat":"/v5/api/utils/bytes/#utils-concat","utils-stripZeros":"/v5/api/utils/bytes/#utils-stripZeros","utils-zeroPad":"/v5/api/utils/bytes/#utils-zeroPad","utils-hexConcat":"/v5/api/utils/bytes/#utils-hexConcat","utils-hexDataLength":"/v5/api/utils/bytes/#utils-hexDataLength","utils-hexDataSlice":"/v5/api/utils/bytes/#utils-hexDataSlice","utils-hexStripZeros":"/v5/api/utils/bytes/#utils-hexStripZeros","utils-hexZeroPad":"/v5/api/utils/bytes/#utils-hexZeroPad","utils-joinSignature":"/v5/api/utils/bytes/#utils-joinSignature","utils-splitSignature":"/v5/api/utils/bytes/#utils-splitSignature","utils-randomBytes":"/v5/api/utils/bytes/#utils-randomBytes","utils-shuffled":"/v5/api/utils/bytes/#utils-shuffled","constants":"/v5/api/utils/constants/","constants-AddressZero":"/v5/api/utils/constants/#constants-AddressZero","constants-HashZero":"/v5/api/utils/constants/#constants-HashZero","constants-EtherSymbol":"/v5/api/utils/constants/#constants-EtherSymbol","constants-NegativeOne":"/v5/api/utils/constants/#constants-NegativeOne","constants-Zero":"/v5/api/utils/constants/#constants-Zero","constants-One":"/v5/api/utils/constants/#constants-One","constants-Two":"/v5/api/utils/constants/#constants-Two","constants-WeiPerEther":"/v5/api/utils/constants/#constants-WeiPerEther","constants-MaxUint256":"/v5/api/utils/constants/#constants-MaxUint256","display-logic":"/v5/api/utils/display-logic/","display-logic--units":"/v5/api/utils/display-logic/#display-logic--units","display-logic--named-units":"/v5/api/utils/display-logic/#display-logic--named-units","display-logic--functions":"/v5/api/utils/display-logic/#display-logic--functions","display-logic--formatting":"/v5/api/utils/display-logic/#display-logic--formatting","utils-commify":"/v5/api/utils/display-logic/#utils-commify","unit-conversion":"/v5/api/utils/display-logic/#unit-conversion","utils-formatUnits":"/v5/api/utils/display-logic/#utils-formatUnits","utils-formatEther":"/v5/api/utils/display-logic/#utils-formatEther","utils-parseUnits":"/v5/api/utils/display-logic/#utils-parseUnits","utils-parseEther":"/v5/api/utils/display-logic/#utils-parseEther","encoding":"/v5/api/utils/encoding/","Bse58":"/v5/api/utils/encoding/#Bse58","Base64":"/v5/api/utils/encoding/#Base64","rlp--methods":"/v5/api/utils/encoding/#rlp--methods","utils-rlpEncode":"/v5/api/utils/encoding/#utils-rlpEncode","utils.rlpDecode":"/v5/api/utils/encoding/#utils.rlpDecode","rlp--dataobject":"/v5/api/utils/encoding/#rlp--dataobject","FixedNumber":"/v5/api/utils/fixednumber/","FixedFormat":"/v5/api/utils/fixednumber/#FixedFormat","FixedFormat--strings":"/v5/api/utils/fixednumber/#FixedFormat--strings","FixedNumber-from":"/v5/api/utils/fixednumber/#FixedNumber-from","hashing-algorithms":"/v5/api/utils/hashing/","cryptographic-hash-functions":"/v5/api/utils/hashing/#cryptographic-hash-functions","utils-id":"/v5/api/utils/hashing/#utils-id","utils-keccak256":"/v5/api/utils/hashing/#utils-keccak256","utils-ripemd160":"/v5/api/utils/hashing/#utils-ripemd160","utils-sha256":"/v5/api/utils/hashing/#utils-sha256","utils-sha512":"/v5/api/utils/hashing/#utils-sha512","utils--hmac":"/v5/api/utils/hashing/#utils--hmac","utils-computeHmac":"/v5/api/utils/hashing/#utils-computeHmac","utils--hmac-supported-algorithm":"/v5/api/utils/hashing/#utils--hmac-supported-algorithm","utils--hashing-helpers":"/v5/api/utils/hashing/#utils--hashing-helpers","utils-hashMessage":"/v5/api/utils/hashing/#utils-hashMessage","utils-namehash":"/v5/api/utils/hashing/#utils-namehash","TypedDataEncoder":"/v5/api/utils/hashing/#TypedDataEncoder","TypedDataEncoder-from":"/v5/api/utils/hashing/#TypedDataEncoder-from","TypedDataEncoder-encode":"/v5/api/utils/hashing/#TypedDataEncoder-encode","TypedDataEncoder-getPayload":"/v5/api/utils/hashing/#TypedDataEncoder-getPayload","TypedDataEncoder-getPrimaryType":"/v5/api/utils/hashing/#TypedDataEncoder-getPrimaryType","TypedDataEncoder-hash":"/v5/api/utils/hashing/#TypedDataEncoder-hash","TypedDataEncoder-hashDomain":"/v5/api/utils/hashing/#TypedDataEncoder-hashDomain","TypedDataEncoder-resolveNames":"/v5/api/utils/hashing/#TypedDataEncoder-resolveNames","utils--solidity-hashing":"/v5/api/utils/hashing/#utils--solidity-hashing","utils-solidityPack":"/v5/api/utils/hashing/#utils-solidityPack","utils-solidityKeccak256":"/v5/api/utils/hashing/#utils-solidityKeccak256","utils-soliditySha256":"/v5/api/utils/hashing/#utils-soliditySha256","hdnodes":"/v5/api/utils/hdnode/","hdnodes--defaultpath":"/v5/api/utils/hdnode/#hdnodes--defaultpath","Mnemonic":"/v5/api/utils/hdnode/#Mnemonic","HDNode":"/v5/api/utils/hdnode/#HDNode","HDNode--creating":"/v5/api/utils/hdnode/#HDNode--creating","HDNode-fromMnemonic":"/v5/api/utils/hdnode/#HDNode-fromMnemonic","HDNode-fromSeed":"/v5/api/utils/hdnode/#HDNode-fromSeed","HDNode-fromExtendedKey":"/v5/api/utils/hdnode/#HDNode-fromExtendedKey","HDNode--properties":"/v5/api/utils/hdnode/#HDNode--properties","HDNode--methods":"/v5/api/utils/hdnode/#HDNode--methods","HDNode-neuter":"/v5/api/utils/hdnode/#HDNode-neuter","HDNode-derivePath":"/v5/api/utils/hdnode/#HDNode-derivePath","HDNode--utilities":"/v5/api/utils/hdnode/#HDNode--utilities","utils-mnemonicToSeed":"/v5/api/utils/hdnode/#utils-mnemonicToSeed","utils-mnemonicToEntropy":"/v5/api/utils/hdnode/#utils-mnemonicToEntropy","utils-isValidMnemonic":"/v5/api/utils/hdnode/#utils-isValidMnemonic","logging":"/v5/api/utils/logger/","Logger":"/v5/api/utils/logger/#Logger","Logger-checkAbstract":"/v5/api/utils/logger/#Logger-checkAbstract","Logger-checkArgumentCount":"/v5/api/utils/logger/#Logger-checkArgumentCount","Logger-checkNew":"/v5/api/utils/logger/#Logger-checkNew","Logger-checkNoralize":"/v5/api/utils/logger/#Logger-checkNoralize","Logger-checkSafeUint53":"/v5/api/utils/logger/#Logger-checkSafeUint53","Logger--censorship":"/v5/api/utils/logger/#Logger--censorship","Logger-setCensorship":"/v5/api/utils/logger/#Logger-setCensorship","Logger-setLogLevel":"/v5/api/utils/logger/#Logger-setLogLevel","errors":"/v5/api/utils/logger/#errors","errors-generic":"/v5/api/utils/logger/#errors-generic","errors--not-implemented":"/v5/api/utils/logger/#errors--not-implemented","errors--server-error":"/v5/api/utils/logger/#errors--server-error","errors--timeout":"/v5/api/utils/logger/#errors--timeout","errors--unknown-error":"/v5/api/utils/logger/#errors--unknown-error","errors--unsupported-operation":"/v5/api/utils/logger/#errors--unsupported-operation","errors-safety":"/v5/api/utils/logger/#errors-safety","errors--buffer-overrun":"/v5/api/utils/logger/#errors--buffer-overrun","errors--numeric-fault":"/v5/api/utils/logger/#errors--numeric-fault","errors-usage":"/v5/api/utils/logger/#errors-usage","errors--invalid-argument":"/v5/api/utils/logger/#errors--invalid-argument","errors--missing-argument":"/v5/api/utils/logger/#errors--missing-argument","errors--missing-new":"/v5/api/utils/logger/#errors--missing-new","errors--unexpected-argument":"/v5/api/utils/logger/#errors--unexpected-argument","errors-ethereum":"/v5/api/utils/logger/#errors-ethereum","errors--call-exception":"/v5/api/utils/logger/#errors--call-exception","errors--insufficient-funds":"/v5/api/utils/logger/#errors--insufficient-funds","errors--network":"/v5/api/utils/logger/#errors--network","errors--nonce-expired":"/v5/api/utils/logger/#errors--nonce-expired","errors--replacement-underpriced":"/v5/api/utils/logger/#errors--replacement-underpriced","errors--unpredicatable-gas-limit":"/v5/api/utils/logger/#errors--unpredicatable-gas-limit","Logger-levels":"/v5/api/utils/logger/#Logger-levels","utils-resolveproperties":"/v5/api/utils/properties/#utils-resolveproperties","SigningKey":"/v5/api/utils/signing-key/","SigningKey-constructor":"/v5/api/utils/signing-key/#SigningKey-constructor","utils-verifyMessage":"/v5/api/utils/signing-key/#utils-verifyMessage","utils-verifyTypedData":"/v5/api/utils/signing-key/#utils-verifyTypedData","utils-recoverPublicKey":"/v5/api/utils/signing-key/#utils-recoverPublicKey","utils-computePublicKey":"/v5/api/utils/signing-key/#utils-computePublicKey","strings":"/v5/api/utils/strings/","Bytes32String":"/v5/api/utils/strings/#Bytes32String","utils-parseBytes32":"/v5/api/utils/strings/#utils-parseBytes32","utils-formatBytes32":"/v5/api/utils/strings/#utils-formatBytes32","strings-utf8":"/v5/api/utils/strings/#strings-utf8","utils-toUtf8Bytes":"/v5/api/utils/strings/#utils-toUtf8Bytes","utils-toUtf8CodePoints":"/v5/api/utils/strings/#utils-toUtf8CodePoints","utils-toUtf8String":"/v5/api/utils/strings/#utils-toUtf8String","strings--unicode-normalization-form":"/v5/api/utils/strings/#strings--unicode-normalization-form","strings--error-handling":"/v5/api/utils/strings/#strings--error-handling","strings--error-reasons":"/v5/api/utils/strings/#strings--error-reasons","strings--Utf8Error":"/v5/api/utils/strings/#strings--Utf8Error","strings--Utf8Ignore":"/v5/api/utils/strings/#strings--Utf8Ignore","strings--Utf8Replace":"/v5/api/utils/strings/#strings--Utf8Replace","transactions":"/v5/api/utils/transactions/","transactions--types":"/v5/api/utils/transactions/#transactions--types","UnsignedTransaction":"/v5/api/utils/transactions/#UnsignedTransaction","Transaction":"/v5/api/utils/transactions/#Transaction","transactions--functions":"/v5/api/utils/transactions/#transactions--functions","utils-parseTransaction":"/v5/api/utils/transactions/#utils-parseTransaction","utils-serializeTransaction":"/v5/api/utils/transactions/#utils-serializeTransaction","web":"/v5/api/utils/web/","utils-fetchJson":"/v5/api/utils/web/#utils-fetchJson","utils-poll":"/v5/api/utils/web/#utils-poll","ConnectionInfo":"/v5/api/utils/web/#ConnectionInfo","PollOptions":"/v5/api/utils/web/#PollOptions","wordlists":"/v5/api/utils/wordlists/","Wordlist":"/v5/api/utils/wordlists/#Wordlist","wordlists--languages":"/v5/api/utils/wordlists/#wordlists--languages","api-keys":"/v5/api-keys/","api-keys--etherscan":"/v5/api-keys/#api-keys--etherscan","api-keys--infura":"/v5/api-keys/#api-keys--infura","api-keys--alchemy":"/v5/api-keys/#api-keys--alchemy","api-keys--pocket-gateway":"/v5/api-keys/#api-keys--pocket-gateway","api-keys--getDefaultProvider":"/v5/api-keys/#api-keys--getDefaultProvider","cli-asm":"/v5/cli/asm/","cliex-init":"/v5/cli/ethers/#cliex-init","cliex-send":"/v5/cli/ethers/#cliex-send","cliex-signing":"/v5/cli/ethers/#cliex-signing","cliex-scripting":"/v5/cli/ethers/#cliex-scripting","cliex-mnemonicpassword":"/v5/cli/ethers/#cliex-mnemonicpassword","cliex-mnemonicpassword-xxx":"/v5/cli/ethers/#cliex-mnemonicpassword-xxx","cli-diy":"/v5/cli/plugin/","cli-cli":"/v5/cli/plugin/#cli-cli","cli-addplugin":"/v5/cli/plugin/#cli-addplugin","cli-setplugin":"/v5/cli/plugin/#cli-setplugin","cli-showusage":"/v5/cli/plugin/#cli-showusage","cli-run":"/v5/cli/plugin/#cli-run","cli-plugin":"/v5/cli/plugin/#cli-plugin","plugin-prepareoptions":"/v5/cli/plugin/#plugin-prepareoptions","plugin-prepareargs":"/v5/cli/plugin/#plugin-prepareargs","plugin-run":"/v5/cli/plugin/#plugin-run","plugin-getaddress":"/v5/cli/plugin/#plugin-getaddress","plugin-dump":"/v5/cli/plugin/#plugin-dump","plugin-throwusageerror":"/v5/cli/plugin/#plugin-throwusageerror","plugin-throwerror":"/v5/cli/plugin/#plugin-throwerror","plugin-gethelp":"/v5/cli/plugin/#plugin-gethelp","plugin-getoptionshelp":"/v5/cli/plugin/#plugin-getoptionshelp","cli-argparser":"/v5/cli/plugin/#cli-argparser","argparser-consumeflag":"/v5/cli/plugin/#argparser-consumeflag","argparser-consumemultioptions":"/v5/cli/plugin/#argparser-consumemultioptions","argparser-consumeoption":"/v5/cli/plugin/#argparser-consumeoption","argparser-consumeoptions":"/v5/cli/plugin/#argparser-consumeoptions","best-practices":"/v5/concepts/best-practices/","events":"/v5/concepts/events/","events--filters":"/v5/concepts/events/#events--filters","events-solidity":"/v5/concepts/events/#events-solidity","gas":"/v5/concepts/gas/","gas-price":"/v5/concepts/gas/#gas-price","gas-limit":"/v5/concepts/gas/#gas-limit","security":"/v5/concepts/security/","security--pbkdf":"/v5/concepts/security/#security--pbkdf","contributing":"/v5/contributing/","contributing--building":"/v5/contributing/#contributing--building","contributing--updating":"/v5/contributing/#contributing--updating","contributing--documentation":"/v5/contributing/#contributing--documentation","cookbook-reactnative":"/v5/cookbook/react-native/","cookbook-reactnative-shims":"/v5/cookbook/react-native/#cookbook-reactnative-shims","cookbook-reactnative-security":"/v5/cookbook/react-native/#cookbook-reactnative-security","flatworm":"/v5/documentation/","flatworm-fragments":"/v5/documentation/#flatworm-fragments","flatworm-directive":"/v5/documentation/#flatworm-directive","flatworm-markdown":"/v5/documentation/#flatworm-markdown","flatworm--code":"/v5/documentation/#flatworm--code","flatworm--code-eval":"/v5/documentation/#flatworm--code-eval","flatworm--table":"/v5/documentation/#flatworm--table","flatworm--table-row":"/v5/documentation/#flatworm--table-row","flatworm--table-alignment":"/v5/documentation/#flatworm--table-alignment","flatworm--table-spanning":"/v5/documentation/#flatworm--table-spanning","flatworm--table-style":"/v5/documentation/#flatworm--table-style","flatworm--table-variable":"/v5/documentation/#flatworm--table-variable","flatworm-config":"/v5/documentation/#flatworm-config","flatworm-extensions":"/v5/documentation/#flatworm-extensions","flatworm--ext-inherit":"/v5/documentation/#flatworm--ext-inherit","flatworm--ext-lang":"/v5/documentation/#flatworm--ext-lang","flatworm--ext-nav":"/v5/documentation/#flatworm--ext-nav","flatworm--ext-note":"/v5/documentation/#flatworm--ext-note","flatworm--ext-src":"/v5/documentation/#flatworm--ext-src","flatworm--ext-style":"/v5/documentation/#flatworm--ext-style","getting-started":"/v5/getting-started/","installing":"/v5/getting-started/#installing","importing":"/v5/getting-started/#importing","getting-started--glossary":"/v5/getting-started/#getting-started--glossary","getting-started--connecting":"/v5/getting-started/#getting-started--connecting","getting-started--connecting-rpc":"/v5/getting-started/#getting-started--connecting-rpc","getting-started--querying":"/v5/getting-started/#getting-started--querying","getting-started--sending":"/v5/getting-started/#getting-started--sending","getting-started--contracts":"/v5/getting-started/#getting-started--contracts","getting-started--reading":"/v5/getting-started/#getting-started--reading","getting-started--writing":"/v5/getting-started/#getting-started--writing","getting-started--events":"/v5/getting-started/#getting-started--events","getting-started--history":"/v5/getting-started/#getting-started--history","getting-started--signing":"/v5/getting-started/#getting-started--signing","documentation":"/v5/","preamble":"/v5/#preamble","features":"/v5/#features","documentation--legacy":"/v5/#documentation--legacy","license":"/v5/license/","migration-v4":"/v5/migration/ethers-v4/","migration":"/v5/migration/","testing-supported":"/v5/testing/#testing-supported","testing-suites":"/v5/testing/#testing-suites","testing-api":"/v5/testing/#testing-api","testing-schemas":"/v5/testing/#testing-schemas"}} \ No newline at end of file diff --git a/docs/v5/migration/ethers-v4/index.html b/docs/v5/migration/ethers-v4/index.html index ef0664ac8..950e4b24e 100644 --- a/docs/v5/migration/ethers-v4/index.html +++ b/docs/v5/migration/ethers-v4/index.html @@ -3,6 +3,11 @@ Migration: From Ethers v4 + + + + +
- +
- + diff --git a/docs/v5/migration/index.html b/docs/v5/migration/index.html index cb08cdda9..ae4075d2a 100644 --- a/docs/v5/migration/index.html +++ b/docs/v5/migration/index.html @@ -3,6 +3,11 @@ Migration Guide + + + + +
- +
- + diff --git a/docs/v5/migration/web3/index.html b/docs/v5/migration/web3/index.html index 595a2215d..9705e0e38 100644 --- a/docs/v5/migration/web3/index.html +++ b/docs/v5/migration/web3/index.html @@ -3,6 +3,11 @@ Migration: From Web3.js + + + + +
- +
- + diff --git a/docs/v5/other-resources/README.md b/docs/v5/other-resources/README.md new file mode 100644 index 000000000..9e28cea8d --- /dev/null +++ b/docs/v5/other-resources/README.md @@ -0,0 +1,15 @@ +----- + +Documentation: [html](https://docs.ethers.io/) + +----- + +Other Resources +=============== + +Ethereum Overview +----------------- + +Tutorials +--------- + diff --git a/docs/v5/other-resources/index.html b/docs/v5/other-resources/index.html new file mode 100644 index 000000000..28c0b6e4a --- /dev/null +++ b/docs/v5/other-resources/index.html @@ -0,0 +1,47 @@ + + + + Other Resources + + + + + + + + + +
+ + +

Other Resources

There is a lot of documentation on the internet to help you get started, learn more or cover advanced topics. Here are a few resources to check out.

+ +

Ethereum Overview

+ +

Tutorials

I do not manage or maintain these tutorials, but have happened across them. If a link is dead or outdated, please let me know and I'll update it.

+ +

  • No links yet; send me some

+ + + + + +
+ + + + diff --git a/docs/v5/search.json b/docs/v5/search.json index 050dfa504..460abb4aa 100644 --- a/docs/v5/search.json +++ b/docs/v5/search.json @@ -1 +1 @@ -{"version":"0.1","summaries":[{"title":"ContractFactory","blocks":[{"link":"/v5/api/contract/contract-factory/#ContractFactory","text":"@TODO: Fill this in, including @SRC links."}]},{"title":"ContractFactory -- Methods -- contractFactory.attach( address ) => Contract","blocks":[{"link":"/v5/api/contract/contract-factory/#ContractFactory-attach","text":"Return an instance of a Contract attached to address."},{"link":"/v5/api/contract/contract-factory/#ContractFactory-attach","text":"This is the same as using the Contract constructor with address and this the interface and signerOrProvider passed in when creating the ContractFactory."}]},{"title":"ContractFactory -- Methods -- contractFactory.getDeployTransaction( ...args ) => UnsignedTransaction","blocks":[{"link":"/v5/api/contract/contract-factory/#ContractFactory--methods","text":"Returns the unsigned transaction which would deploy this Contract with args passed to the Contract's constructor."}]},{"title":"ContractFactory -- Methods -- contractFactory.deploy( ...args ) => Promise< Contract >","blocks":[{"link":"/v5/api/contract/contract-factory/#ContractFactory-deploy","text":"Uses the signer to deploy the Contract with args passed into the constructor and returns a Contract which is attached to the address where this contract will be deployed once the transaction is mined."},{"link":"/v5/api/contract/contract-factory/#ContractFactory-deploy","text":"The transaction can be found at contract.deployTransaction, and no interactions should be made until the transaction is mined."}]},{"title":"Contract","blocks":[{"link":"/v5/api/contract/contract/#Contract","text":"Explain contract here..."}]},{"title":"Contract -- Creating Instances -- contract.attach( addressOrName ) => Contract","blocks":[{"link":"/v5/api/contract/contract/#Contract-attach","text":"Returns a new instance of the Contract attached to a new address."},{"link":"/v5/api/contract/contract/#Contract-attach","text":"This is useful if there are multiple similar or identical copies of a Contract on the network and you wish to interact with each of them."}]},{"title":"Contract -- Creating Instances -- contract.connect( providerOrSigner ) => Contract","blocks":[{"link":"/v5/api/contract/contract/#Contract-connect","text":"Returns a new instance of the Contract, but connected to providerOrSigner."},{"link":"/v5/api/contract/contract/#Contract-connect","text":"By passing in a Provider, this will return a downgraded Contract which only has read-only access (i.e."},{"link":"/v5/api/contract/contract/#Contract-connect","text":"constant calls)."},{"link":"/v5/api/contract/contract/#Contract-connect","text":"By passing in a Signer."},{"link":"/v5/api/contract/contract/#Contract-connect","text":"this will return a Contract which will act on behalf of that signer."}]},{"title":"Contract -- Properties -- contract.address => string< Address >","blocks":[{"link":"/v5/api/contract/contract/#Contract--properties","text":"This is the address (or ENS name) the contract was constructed with."}]},{"title":"Contract -- Properties -- contract.resolvedAddress => string< Address >","blocks":[{"link":"/v5/api/contract/contract/#Contract--properties","text":"This is a promise that will resolve to the address the Contract object is attached to."},{"link":"/v5/api/contract/contract/#Contract--properties","text":"If an Address was provided to the constructor, it will be equal to this; if an ENS name was provided, this will be the resolved address."}]},{"title":"Contract -- Properties -- contract.deployTransaction => TransactionResponse","blocks":[{"link":"/v5/api/contract/contract/#Contract--properties","text":"If the Contract object is the result of a ContractFactory deployment, this is the transaction which was used to deploy the contract."}]},{"title":"Contract -- Properties -- contract.interface => Interface","blocks":[{"link":"/v5/api/contract/contract/#Contract--properties","text":"This is the ABI as an Interface."}]},{"title":"Contract -- Properties -- contract.provider => Provider","blocks":[{"link":"/v5/api/contract/contract/#Contract--properties","text":"If a provider was provided to the constructor, this is that provider."},{"link":"/v5/api/contract/contract/#Contract--properties","text":"If a signer was provided that had a Provider, this is that provider."}]},{"title":"Contract -- Properties -- contract.signer => Signer","blocks":[{"link":"/v5/api/contract/contract/#Contract--properties","text":"If a signer was provided to the constructor, this is that signer."}]},{"title":"Contract -- Events -- contract.queryFilter( event [ , fromBlockOrBlockHash [ , toBlock ] ) => Promise< Array< Event > >","blocks":[{"link":"/v5/api/contract/contract/#Contract-queryFilter","text":"Return Events that match the event."}]},{"title":"Contract -- Events -- contract.listenerCount( [ event ] ) => number","blocks":[{"link":"/v5/api/contract/contract/#Contract-listenerCount","text":"Return the number of listeners that are subscribed to event."},{"link":"/v5/api/contract/contract/#Contract-listenerCount","text":"If no event is provided, returns the total count of all events."}]},{"title":"Contract -- Events -- contract.listeners( event ) => Array< Listener >","blocks":[{"link":"/v5/api/contract/contract/#Contract-listeners","text":"Return a list of listeners that are subscribed to event."}]},{"title":"Contract -- Events -- contract.off( event , listener ) => this","blocks":[{"link":"/v5/api/contract/contract/#Contract-off","text":"Unsubscribe listener to event."}]},{"title":"Contract -- Events -- contract.on( event , listener ) => this","blocks":[{"link":"/v5/api/contract/contract/#Contract-on","text":"Subscribe to event calling listener when the event occurs."}]},{"title":"Contract -- Events -- contract.once( event , listener ) => this","blocks":[{"link":"/v5/api/contract/contract/#Contract-once","text":"Subscribe once to event calling listener when the event occurs."}]},{"title":"Contract -- Events -- contract.removeAllListeners( [ event ] ) => this","blocks":[{"link":"/v5/api/contract/contract/#Contract-removeAllListeners","text":"Unsubscribe all listeners for event."},{"link":"/v5/api/contract/contract/#Contract-removeAllListeners","text":"If no event is provided, all events are unsubscribed."}]},{"title":"Contract -- Meta-Class","blocks":[{"link":"/v5/api/contract/contract/#Contract--metaclass","text":"A Meta-Class is a Class which has any of its properties determined at run-time."},{"link":"/v5/api/contract/contract/#Contract--metaclass","text":"The Contract object uses a Contract's ABI to determine what methods are available, so the following sections describe the generic ways to interact with the properties added at run-time during the Contract constructor."}]},{"title":"Contract -- Meta-Class -- Read-Only Methods (constant)","blocks":[{"link":"/v5/api/contract/contract/#Contract--readonly","text":"A constant method is read-only and evaluates a small amount of EVM code against the current blockchain state and can be computed by asking a single node, which can return a result."},{"link":"/v5/api/contract/contract/#Contract--readonly","text":"It is therefore free and does not require any ether, but cannot make changes to the blockchain state.."}]},{"title":"Contract -- Meta-Class -- contract.METHOD_NAME( ...args [ , overrides ] ) => Promise< any >","blocks":[{"link":"/v5/api/contract/contract/#Contract-functionsCall","text":"The type of the result depends on the ABI."},{"link":"/v5/api/contract/contract/#Contract-functionsCall","text":"For values that have a simple meaning in JavaScript, the types are fairly straight forward; strings and booleans are returned as JavaScript strings and booleans."},{"link":"/v5/api/contract/contract/#Contract-functionsCall","text":"For numbers, if the type is in the JavaScript safe range (i.e."},{"link":"/v5/api/contract/contract/#Contract-functionsCall","text":"less than 53 bits, such as an int24 or uint48) a normal JavaScript number is used."},{"link":"/v5/api/contract/contract/#Contract-functionsCall","text":"Otherwise a BigNumber is returned."},{"link":"/v5/api/contract/contract/#Contract-functionsCall","text":"For bytes (both fixed length and dynamic), a DataHexString is returned."}]},{"title":"Contract -- Meta-Class -- contract.functions.METHOD_NAME( ...args [ , overrides ] ) => Promise< Result >","blocks":[{"link":"/v5/api/contract/contract/#Contract--readonly","text":"The result will always be a Result, even if there is only a single return value type."},{"link":"/v5/api/contract/contract/#Contract--readonly","text":"This simplifies frameworks which wish to use the Contract object, since they do not need to inspect the return types to unwrap simplified functions."},{"link":"/v5/api/contract/contract/#Contract--readonly","text":"Another use for this method is for error recovery."},{"link":"/v5/api/contract/contract/#Contract--readonly","text":"For example, if a function result is an invalid UTF-8 string, the normal call using the above meta-class function will throw an exception."},{"link":"/v5/api/contract/contract/#Contract--readonly","text":"This allows using the Result access error to access the low-level bytes and reason for the error allowing an alternate UTF-8 error strategy to be used."},{"link":"/v5/api/contract/contract/#Contract--readonly","text":"Most developers should not require this."}]},{"title":"Contract -- Meta-Class -- Write Methods (non-constant)","blocks":[{"link":"/v5/api/contract/contract/#Contract--write","text":"A non-constant method requires a transaction to be signed and requires payment in the form of a fee to be paid to a miner."},{"link":"/v5/api/contract/contract/#Contract--write","text":"This transaction will be verified by every node on the entire network as well by the miner who will compute the new state of the blockchain after executing it against the current state."},{"link":"/v5/api/contract/contract/#Contract--write","text":"It cannot return a result."},{"link":"/v5/api/contract/contract/#Contract--write","text":"If a result is required, it should be logged using a Solidity event (or EVM log), which can then be queried from the transaction receipt."}]},{"title":"Contract -- Meta-Class -- contract.METHOD_NAME( ...args [ , overrides ] ) => Promise< TransactionResponse >","blocks":[{"link":"/v5/api/contract/contract/#contract-functionsSend","text":"Returns a TransactionResponse for the transaction after it is sent to the network."},{"link":"/v5/api/contract/contract/#contract-functionsSend","text":"This requires the Contract has a signer."}]},{"title":"Contract -- Meta-Class -- Write Methods Analysis","blocks":[{"link":"/v5/api/contract/contract/#Contract--check","text":"There are several options to analyze properties and results of a write method without actually executing it."}]},{"title":"Contract -- Meta-Class -- contract.estimateGas.METHOD_NAME( ...args [ , overrides ] ) => Promise< BigNumber >","blocks":[{"link":"/v5/api/contract/contract/#contract-estimateGas","text":"Returns the estimate units of gas that would be required to execute the METHOD_NAME with args and overrides."}]},{"title":"Contract -- Meta-Class -- contract.populateTransaction.METHOD_NAME( ...args [ , overrides ] ) => Promise< UnsignedTx >","blocks":[{"link":"/v5/api/contract/contract/#contract-populateTransaction","text":"Returns an UnsignedTransaction which represents the transaction that would need to be signed and submitted to the network to execute METHOD_NAME with args and overrides."}]},{"title":"Contract -- Meta-Class -- contract.callStatic.METHOD_NAME( ...args [ , overrides ] ) => Promise< any >","blocks":[{"link":"/v5/api/contract/contract/#contract-callStatic","text":"Rather than executing the state-change of a transaction, it is possible to ask a node to pretend that a call is not state-changing and return the result."},{"link":"/v5/api/contract/contract/#contract-callStatic","text":"This does not actually change any state, but is free."},{"link":"/v5/api/contract/contract/#contract-callStatic","text":"This in some cases can be used to determine if a transaction will fail or succeed."},{"link":"/v5/api/contract/contract/#contract-callStatic","text":"This otherwise functions the same as a Read-Only Method."}]},{"title":"Contract -- Meta-Class -- Event Filters","blocks":[{"link":"/v5/api/contract/contract/#Contract--filters","text":"An event filter is made up of topics, which are values logged in a Bloom Filter, allowing efficient searching for entries which match a filter."}]},{"title":"Contract -- Meta-Class -- contract.filters.EVENT_NAME( ...args ) => Filter","blocks":[{"link":"/v5/api/contract/contract/#Contract--filters","text":"Return a filter for EVENT_NAME, optionally filtering by additional constraints."},{"link":"/v5/api/contract/contract/#Contract--filters","text":"Only indexed event parameters may be filtered."},{"link":"/v5/api/contract/contract/#Contract--filters","text":"If a parameter is null (or not provided) then any value in that field matches."}]},{"title":"Example: ERC-20 Contract -- Connecting to a Contract -- new ethers.Contract( address , abi , providerOrSigner )","blocks":[{"link":"/v5/api/contract/example/","text":"See the above code example for creating an Instance which will (in addition to the Contact methods and properties) automatically add the additional properties defined in abi to a Contract connected to address using the providerOrSigner."}]},{"title":"Example: ERC-20 Contract -- Properties -- erc20.address => string< Address >","blocks":[{"link":"/v5/api/contract/example/","text":"This is the address (or ENS name) the contract was constructed with."}]},{"title":"Example: ERC-20 Contract -- Properties -- erc20.resolvedAddress => string< Address >","blocks":[{"link":"/v5/api/contract/example/","text":"This is a promise that will resolve to the address the Contract object is attached to."},{"link":"/v5/api/contract/example/","text":"If an Address was provided to the constructor, it will be equal to this; if an ENS name was provided, this will be the resolved address."}]},{"title":"Example: ERC-20 Contract -- Properties -- erc20.deployTransaction => TransactionResponse","blocks":[{"link":"/v5/api/contract/example/","text":"If the Contract object is the result of a ContractFactory deployment, this is the transaction which was used to deploy the contract."}]},{"title":"Example: ERC-20 Contract -- Properties -- erc20.interface => Interface","blocks":[{"link":"/v5/api/contract/example/","text":"This is the ABI as an Interface."}]},{"title":"Example: ERC-20 Contract -- Properties -- erc20.provider => Provider","blocks":[{"link":"/v5/api/contract/example/","text":"If a provider was provided to the constructor, this is that provider."},{"link":"/v5/api/contract/example/","text":"If a signer was provided that had a Provider, this is that provider."}]},{"title":"Example: ERC-20 Contract -- Properties -- erc20.signer => Signer","blocks":[{"link":"/v5/api/contract/example/","text":"If a signer was provided to the constructor, this is that signer."}]},{"title":"Example: ERC-20 Contract -- Methods -- erc20.attach( addressOrName ) => Contract","blocks":[{"link":"/v5/api/contract/example/","text":"Returns a new instance of the Contract attached to a new address."},{"link":"/v5/api/contract/example/","text":"This is useful if there are multiple similar or identical copies of a Contract on the network and you wish to interact with each of them."}]},{"title":"Example: ERC-20 Contract -- Methods -- erc20.connect( providerOrSigner ) => Contract","blocks":[{"link":"/v5/api/contract/example/","text":"Returns a new instance of the Contract, but connected to providerOrSigner."},{"link":"/v5/api/contract/example/","text":"By passing in a Provider, this will return a downgraded Contract which only has read-only access (i.e."},{"link":"/v5/api/contract/example/","text":"constant calls)."},{"link":"/v5/api/contract/example/","text":"By passing in a Signer."},{"link":"/v5/api/contract/example/","text":"this will return a Contract which will act on behalf of that signer."}]},{"title":"Example: ERC-20 Contract -- Events -- erc20.queryFilter( event [ , fromBlockOrBlockHash [ , toBlock ] ) => Promise< Array< Event > >","blocks":[{"link":"/v5/api/contract/example/#erc20-queryfilter","text":"Return Events that match the event."}]},{"title":"Example: ERC-20 Contract -- Events -- erc20.listenerCount( [ event ] ) => number","blocks":[{"link":"/v5/api/contract/example/#erc20-events","text":"Return the number of listeners that are subscribed to event."},{"link":"/v5/api/contract/example/#erc20-events","text":"If no event is provided, returns the total count of all events."}]},{"title":"Example: ERC-20 Contract -- Events -- erc20.listeners( event ) => Array< Listener >","blocks":[{"link":"/v5/api/contract/example/#erc20-events","text":"Return a list of listeners that are subscribed to event."}]},{"title":"Example: ERC-20 Contract -- Events -- erc20.off( event , listener ) => this","blocks":[{"link":"/v5/api/contract/example/#erc20-events","text":"Unsubscribe listener to event."}]},{"title":"Example: ERC-20 Contract -- Events -- erc20.on( event , listener ) => this","blocks":[{"link":"/v5/api/contract/example/#erc20-events","text":"Subscribe to event calling listener when the event occurs."}]},{"title":"Example: ERC-20 Contract -- Events -- erc20.once( event , listener ) => this","blocks":[{"link":"/v5/api/contract/example/#erc20-events","text":"Subscribe once to event calling listener when the event occurs."}]},{"title":"Example: ERC-20 Contract -- Events -- erc20.removeAllListeners( [ event ] ) => this","blocks":[{"link":"/v5/api/contract/example/#erc20-events","text":"Unsubscribe all listeners for event."},{"link":"/v5/api/contract/example/#erc20-events","text":"If no event is provided, all events are unsubscribed."}]},{"title":"Example: ERC-20 Contract -- Meta-Class Methods","blocks":[{"link":"/v5/api/contract/example/","text":"Since the Contract is a Meta-Class, the methods available here depend on the ABI which was passed into the Contract."}]},{"title":"Example: ERC-20 Contract -- Meta-Class Methods -- erc20.decimals( [ overrides ] ) => Promise< number >","blocks":[{"link":"/v5/api/contract/example/","text":"Returns the number of decimal places used by this ERC-20 token."},{"link":"/v5/api/contract/example/","text":"This can be used with parseUnits when taking input from the user or [formatUnits](utils-formatunits] when displaying the token amounts in the UI."}]},{"title":"Example: ERC-20 Contract -- Meta-Class Methods -- erc20.getBalance( owner [ , overrides ] ) => Promise< BigNumber >","blocks":[{"link":"/v5/api/contract/example/","text":"Returns the balance of owner for this ERC-20 token."}]},{"title":"Example: ERC-20 Contract -- Meta-Class Methods -- erc20.symbol( [ overrides ] ) => Promise< string >","blocks":[{"link":"/v5/api/contract/example/","text":"Returns the symbol of the token."}]},{"title":"Example: ERC-20 Contract -- Meta-Class Methods -- erc20_rw.transfer( target , amount [ , overrides ] ) => Promise< TransactionResponse >","blocks":[{"link":"/v5/api/contract/example/","text":"Transfers amount tokens to target from the current signer."},{"link":"/v5/api/contract/example/","text":"The return value (a boolean) is inaccessible during a write operation using a transaction."},{"link":"/v5/api/contract/example/","text":"Other techniques (such as events) are required if this value is required."},{"link":"/v5/api/contract/example/","text":"On-chain contracts calling the transfer function have access to this result, which is why it is possible."}]},{"title":"Example: ERC-20 Contract -- Meta-Class Methods -- erc20.callStatic.transfer( target , amount [ , overrides ] ) => Promise< boolean >","blocks":[{"link":"/v5/api/contract/example/","text":"Performs a dry-run of transferring amount tokens to target from the current signer, without actually signing or sending a transaction."},{"link":"/v5/api/contract/example/","text":"This can be used to preflight check that a transaction will be successful."}]},{"title":"Example: ERC-20 Contract -- Meta-Class Methods -- erc20.estimateGas.transfer( target , amount [ , overrides ] ) => Promise< BigNumber >","blocks":[{"link":"/v5/api/contract/example/","text":"Returns an estimate for how many units of gas would be required to transfer amount tokens to target."}]},{"title":"Example: ERC-20 Contract -- Meta-Class Methods -- erc20.populateTransaction.transfer( target , amount [ , overrides ] ) => Promise< UnsignedTx >","blocks":[{"link":"/v5/api/contract/example/","text":"Returns an UnsignedTransaction which could be signed and submitted to the network to transaction amount tokens to target."}]},{"title":"Example: ERC-20 Contract -- Meta-Class Methods -- Note on Estimating and Static Calling","blocks":[{"link":"/v5/api/contract/example/","text":"When you perform a static call, the current state is taken into account as best as Ethereum can determine."},{"link":"/v5/api/contract/example/","text":"There are many cases where this can provide false positives and false negatives."},{"link":"/v5/api/contract/example/","text":"The eventually consistent model of the blockchain also means there are certain consistency modes that cannot be known until an actual transaction is attempted."}]},{"title":"Example: ERC-20 Contract -- Meta-Class Filters","blocks":[{"link":"/v5/api/contract/example/","text":"Since the Contract is a Meta-Class, the methods available here depend on the ABI which was passed into the Contract."}]},{"title":"Example: ERC-20 Contract -- Meta-Class Filters -- erc20.filters.Transfer( [ fromAddress [ , toAddress ] ] ) => Filter","blocks":[{"link":"/v5/api/contract/example/","text":"Returns a new Filter which can be used to query or to subscribe/unsubscribe to events."},{"link":"/v5/api/contract/example/","text":"If fromAddress is null or not provided, then any from address matches."},{"link":"/v5/api/contract/example/","text":"If toAddress is null or not provided, then any to address matches."}]},{"title":"Contract Interaction","blocks":[{"link":"/v5/api/contract/#contracts","text":"A Contract object is an abstraction of a contract (EVM bytecode) deployed on the Ethereum network."},{"link":"/v5/api/contract/#contracts","text":"It allows for a simple way to serialize calls and transactions to an on-chain contract and deserialize their results and emitted logs."},{"link":"/v5/api/contract/#contracts","text":"A ContractFactory is an abstraction of a contract's bytecode and facilitates deploying a contract."}]},{"title":"Experimental","blocks":[{"link":"/v5/api/experimental/","text":"The Experimental package is used for features that are not ready to be included in the base library."},{"link":"/v5/api/experimental/","text":"The API should not be considered stable and does not follow semver versioning, so applications requiring it should specify the exact version needed."}]},{"title":"Experimental -- BrainWallet","blocks":[{"link":"/v5/api/experimental/#experimental-brainwallet","text":"Ethers removed support for BrainWallets in v4, since they are unsafe and many can be easily guessed, allowing attackers to steal the funds."},{"link":"/v5/api/experimental/#experimental-brainwallet","text":"This class is offered to ensure older systems which used brain wallets can still recover their funds and assets."}]},{"title":"Experimental -- BrainWallet -- BrainWallet.generate( username , password [ , progressCallback ] ) => BrainWallet","blocks":[{"link":"/v5/api/experimental/#experimental-brainwallet","text":"Generates a brain wallet, with a slightly improved experience, in which the generated wallet has a mnemonic."}]},{"title":"Experimental -- BrainWallet -- BrainWallet.generateLegacy( username , password [ , progressCallback ] ) => BrainWallet","blocks":[{"link":"/v5/api/experimental/#experimental-brainwallet","text":"Generate a brain wallet which is compatible with the ethers v3 and earlier."}]},{"title":"Experimental -- EIP1193Bridge","blocks":[{"link":"/v5/api/experimental/#experimental-eip1193bridge","text":"The EIP1193Bridge allows a normal Ethers Signer and Provider to be exposed in as a standard EIP-1193 Provider, which may be useful when interacting with other libraries."}]},{"title":"Experimental -- NonceManager","blocks":[{"link":"/v5/api/experimental/#experimental-noncemanager","text":"The NonceManager is designed to manage the nonce for a Signer, automatically increasing it as it sends transactions."},{"link":"/v5/api/experimental/#experimental-noncemanager","text":"Currently the NonceManager does not handle re-broadcast."},{"link":"/v5/api/experimental/#experimental-noncemanager","text":"If you attempt to send a lot of transactions to the network on a node that does not control that account, the transaction pool may drop your transactions."},{"link":"/v5/api/experimental/#experimental-noncemanager","text":"In the future, it'd be nice if the NonceManager remembered transactions and watched for them on the network, rebroadcasting transactions that appear to have been dropped."},{"link":"/v5/api/experimental/#experimental-noncemanager","text":"Another future feature will be some sort of failure mode."},{"link":"/v5/api/experimental/#experimental-noncemanager","text":"For example, often a transaction is dependent on another transaction being mined first."}]},{"title":"Experimental -- NonceManager -- new NonceManager( signer )","blocks":[{"link":"/v5/api/experimental/#experimental-noncemanager","text":"Create a new NonceManager."}]},{"title":"Experimental -- NonceManager -- nonceManager.signer => Signer","blocks":[{"link":"/v5/api/experimental/#experimental-noncemanager","text":"The signer whose nonce is being managed."}]},{"title":"Experimental -- NonceManager -- nonceManager.provider => Provider","blocks":[{"link":"/v5/api/experimental/#experimental-noncemanager","text":"The provider associated with the signer."}]},{"title":"Experimental -- NonceManager -- nonceManager.setTransactionCount( count ) => void","blocks":[{"link":"/v5/api/experimental/#experimental-noncemanager","text":"Set the current transaction count (nonce) for the signer."},{"link":"/v5/api/experimental/#experimental-noncemanager","text":"This may be useful in interacting with the signer outside of using this class."}]},{"title":"Experimental -- NonceManager -- nonceManager.increaseTransactionCount( [ count = 1 ] ) => void","blocks":[{"link":"/v5/api/experimental/#experimental-noncemanager","text":"Bump the current transaction count (nonce) by count."},{"link":"/v5/api/experimental/#experimental-noncemanager","text":"This may be useful in interacting with the signer outside of using this class."}]},{"title":"Application Programming Interface","blocks":[{"link":"/v5/api/#api","text":"An Application Programming Interface (API) is the formal specification of the library."}]},{"title":"Utilities -- Assembler","blocks":[{"link":"/v5/api/other/assembly/api/#asm-utilities","text":"The assembler utilities allow parsing and assembling an Ethers ASM Dialect source file."}]},{"title":"Utilities -- Assembler -- asm.parse( code ) => Node","blocks":[{"link":"/v5/api/other/assembly/api/#asm-parse","text":"Parse an ethers-format assembly file and return the Abstract Syntax Tree."}]},{"title":"Utilities -- Assembler -- asm.assemble( node ) => string< DataHexString >","blocks":[{"link":"/v5/api/other/assembly/api/","text":"Performs assembly of the Abstract Syntax Tree node and return the resulting bytecode representation."}]},{"title":"Utilities -- Disassembler","blocks":[{"link":"/v5/api/other/assembly/api/#asm-utilities","text":"The Disassembler utilities make it easy to convert bytecode into an object which can easily be examined for program structure."}]},{"title":"Utilities -- Disassembler -- asm.disassemble( bytecode ) => Bytecode","blocks":[{"link":"/v5/api/other/assembly/api/","text":"Returns an array of Operations given bytecode."}]},{"title":"Utilities -- Disassembler -- asm.formatBytecode( operations ) => string","blocks":[{"link":"/v5/api/other/assembly/api/","text":"Create a formatted output of an array of Operation."}]},{"title":"Utilities -- Disassembler -- Bytecode","blocks":[{"link":"/v5/api/other/assembly/api/#asm-bytecode","text":"Each array index represents an operation, collapsing multi-byte operations (i.e."},{"link":"/v5/api/other/assembly/api/#asm-bytecode","text":"PUSH) into a single operation."}]},{"title":"Utilities -- Disassembler -- bytecode.getOperation( offset ) => Operation","blocks":[{"link":"/v5/api/other/assembly/api/#asm-bytecode","text":"Get the operation at a given offset into the bytecode."},{"link":"/v5/api/other/assembly/api/#asm-bytecode","text":"This ensures that the byte at offset is an operation and not data contained within a PUSH, in which case null it returned."}]},{"title":"Utilities -- Disassembler -- Operation","blocks":[{"link":"/v5/api/other/assembly/api/#asm-operation","text":"An Operation is a single command from a disassembled bytecode stream."}]},{"title":"Utilities -- Disassembler -- operation.opcode => Opcode","blocks":[{"link":"/v5/api/other/assembly/api/#asm-operation","text":"The opcode for this Operation."}]},{"title":"Utilities -- Disassembler -- operation.offset => number","blocks":[{"link":"/v5/api/other/assembly/api/#asm-operation","text":"The offset into the bytecode for this Operation."}]},{"title":"Utilities -- Disassembler -- operation.pushValue => string< DataHexString >","blocks":[{"link":"/v5/api/other/assembly/api/#asm-operation","text":"If the opcode is a PUSH, this is the value of that push."}]},{"title":"Utilities -- Opcode -- asm.Opcode.from( valueOrMnemonic ) => Opcode","blocks":[{"link":"/v5/api/other/assembly/api/#asm-opcode","text":"Create a new instance of an Opcode for a given numeric value (e.g."},{"link":"/v5/api/other/assembly/api/#asm-opcode","text":"0x60 is PUSH1) or mnemonic string (e.g."},{"link":"/v5/api/other/assembly/api/#asm-opcode","text":"\"PUSH1\")."}]},{"title":"Utilities -- Opcode -- opcode.value => number","blocks":[{"link":"/v5/api/other/assembly/api/","text":"The value (bytecode as a number) of this opcode."}]},{"title":"Utilities -- Opcode -- opcode.mnemonic => string","blocks":[{"link":"/v5/api/other/assembly/api/","text":"The mnemonic string of this opcode."}]},{"title":"Utilities -- Opcode -- opcode.delta => number","blocks":[{"link":"/v5/api/other/assembly/api/","text":"The number of items this opcode will consume from the stack."}]},{"title":"Utilities -- Opcode -- opcode.alpha => number","blocks":[{"link":"/v5/api/other/assembly/api/","text":"The number of items this opcode will push onto the stack."}]},{"title":"Utilities -- Opcode -- opcode.doc => string","blocks":[{"link":"/v5/api/other/assembly/api/","text":"A short description of what this opcode does."}]},{"title":"Utilities -- Opcode -- opcode.isMemory( ) => \"read\" | \"write\" | \"full\"","blocks":[{"link":"/v5/api/other/assembly/api/","text":"Returns true if the opcode accesses memory."}]},{"title":"Utilities -- Opcode -- opcode.isStatic( ) => boolean","blocks":[{"link":"/v5/api/other/assembly/api/","text":"Returns true if the opcode cannot change state."}]},{"title":"Utilities -- Opcode -- opcode.isJump( ) => boolean","blocks":[{"link":"/v5/api/other/assembly/api/","text":"Returns true if the opcode is a jumper operation."}]},{"title":"Utilities -- Opcode -- opcode.isPush( ) => number","blocks":[{"link":"/v5/api/other/assembly/api/","text":"Returns 0 if the opcode is not a PUSH*, or the number of bytes this opcode will push if it is."}]},{"title":"Abstract Syntax Tree","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-ast","text":"Parsing a file using the Ethers ASM Dialect will generate an Abstract Syntax Tree."},{"link":"/v5/api/other/assembly/ast/#asm-ast","text":"The root node will always be a ScopeNode whose name is _."},{"link":"/v5/api/other/assembly/ast/#asm-ast","text":"To parse a file into an Abstract Syntax tree, use the parse function."}]},{"title":"Abstract Syntax Tree -- Types -- offset => number","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-location","text":"The offset into the source code to the start of this node."}]},{"title":"Abstract Syntax Tree -- Types -- length => number","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-location","text":"The length of characters in the source code to the end of this node."}]},{"title":"Abstract Syntax Tree -- Types -- source => string","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-location","text":"The source code of this node."}]},{"title":"Abstract Syntax Tree -- Nodes","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-ast","text":"@TODO: Place a diagram here showing the hierarchy."}]},{"title":"Abstract Syntax Tree -- Nodes -- node.tag => string","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-node","text":"A unique tag for this node for the lifetime of the process."}]},{"title":"Abstract Syntax Tree -- Nodes -- node.location => Location","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-node","text":"The source code and location within the source code that this node represents."}]},{"title":"Abstract Syntax Tree -- Nodes -- ValueNode","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-valuenode","text":"A ValueNode is a node which may manipulate the stack."}]},{"title":"Abstract Syntax Tree -- Nodes -- literalNode.value => string","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-literalnode","text":"The literal value of this node, which may be a DataHexString or string of a decimal number."}]},{"title":"Abstract Syntax Tree -- Nodes -- literalNode.verbatim => boolean","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-literalnode","text":"This is true in a DataNode context, since in that case the value should be taken verbatim and no PUSH operation should be added, otherwise false."}]},{"title":"Abstract Syntax Tree -- Nodes -- PopNode","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-popnode","text":"A PopNode is used to store a place-holder for an implicit pop from the stack."},{"link":"/v5/api/other/assembly/ast/#asm-popnode","text":"It represents the code for an implicit place-holder (i.e."},{"link":"/v5/api/other/assembly/ast/#asm-popnode","text":"$$) or an explicit place-holder (e.g."},{"link":"/v5/api/other/assembly/ast/#asm-popnode","text":"$1), which indicates the expected stack position to consume."}]},{"title":"Abstract Syntax Tree -- Nodes -- literalNode.index => number","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-popnode","text":"The index this PopNode is representing."},{"link":"/v5/api/other/assembly/ast/#asm-popnode","text":"For an implicit place-holder this is 0."}]},{"title":"Abstract Syntax Tree -- Nodes -- LinkNode","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-linknode","text":"A LinkNode represents a link to another Node's data, for example $foo or #bar."}]},{"title":"Abstract Syntax Tree -- Nodes -- linkNode.label => string","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-linknode","text":"The name of the target node."}]},{"title":"Abstract Syntax Tree -- Nodes -- linkNode.type => \"offset\" | \"length\"","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-linknode","text":"Whether this node is for an offset or a length value of the target node."}]},{"title":"Abstract Syntax Tree -- Nodes -- opcodeNode.opcode => Opcode","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-opcodenode","text":"The opcode for this Node."}]},{"title":"Abstract Syntax Tree -- Nodes -- opcodeNode.operands => Array< ValueNode >","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-opcodenode","text":"A list of all operands passed into this Node."}]},{"title":"Abstract Syntax Tree -- Nodes -- EvaluationNode","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-evaluationnode","text":"An EvaluationNode is used to execute code and insert the results but does not generate any output assembly, using the {{! code here }} syntax."}]},{"title":"Abstract Syntax Tree -- Nodes -- literalNode.verbatim => boolean","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-evaluationnode","text":"This is true in a DataNode context, since in that case the value should be taken verbatim and no PUSH operation should be added, otherwise false."}]},{"title":"Abstract Syntax Tree -- Nodes -- evaluationNode.script => string","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-evaluationnode","text":"The code to evaluate and produce the result to use as a literal."}]},{"title":"Abstract Syntax Tree -- Nodes -- ExecutionNode","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-executionnode","text":"An ExecutionNode is used to execute code but does not generate any output assembly, using the {{! code here }} syntax."}]},{"title":"Abstract Syntax Tree -- Nodes -- evaluationNode.script => string","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-executionnode","text":"The code to execute."},{"link":"/v5/api/other/assembly/ast/#asm-executionnode","text":"Any result is ignored."}]},{"title":"Abstract Syntax Tree -- Nodes -- LabelledNode","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-labellednode","text":"A LabelledNode is used for any Node that has a name, and can therefore be targeted by a LinkNode."}]},{"title":"Abstract Syntax Tree -- Nodes -- labelledNode.name => string","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-labellednode","text":"The name of this node."}]},{"title":"Abstract Syntax Tree -- Nodes -- LabelNode","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-labelnode","text":"A LabelNode is used as a place to JUMP to by referencing it name, using @myLabel:."},{"link":"/v5/api/other/assembly/ast/#asm-labelnode","text":"A JUMPDEST is automatically inserted at the bytecode offset."}]},{"title":"Abstract Syntax Tree -- Nodes -- DataNode","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-datanode","text":"A DataNode allows for data to be inserted directly into the output assembly, using @myData[ ..."},{"link":"/v5/api/other/assembly/ast/#asm-datanode","text":"]."},{"link":"/v5/api/other/assembly/ast/#asm-datanode","text":"The data is padded if needed to ensure values that would otherwise be regarded as a PUSH value does not impact anything past the data."}]},{"title":"Abstract Syntax Tree -- Nodes -- dataNode.data => Array< ValueNode >","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-datanode","text":"The child nodes, which each represent a verbatim piece of data in insert."}]},{"title":"Abstract Syntax Tree -- Nodes -- ScopeNode","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-scopenode","text":"A ScopeNode allows a new frame of reference that all LinkNode's will use when resolving offset locations, using @myScope{ ..."},{"link":"/v5/api/other/assembly/ast/#asm-scopenode","text":"}."}]},{"title":"Abstract Syntax Tree -- Nodes -- scopeNode.statements => Array< Node >","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-scopenode","text":"The list of child nodes for this scope."}]},{"title":"Ethers ASM Dialect","blocks":[{"link":"/v5/api/other/assembly/dialect/#asm-dialect","text":"This provides a quick, high-level overview of the Ethers ASM Dialect for EVM, which is defined by the Ethers ASM Dialect Grammar."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect","text":"Once a program is compiled by a higher level language into ASM (assembly), or hand-coded directly in ASM, it needs to be assembled into bytecode."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect","text":"The assembly process performs a very small set of operations and is intentionally simple and closely related to the underlying EVM bytecode."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect","text":"Operations include embedding programs within programs (for example the deployment bootstrap has the runtime embedded in it) and computing the necessary offsets for jump operations."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect","text":"The Command-Line Assembler can be used to assemble an Ethers ASM Dialect file or to disassemble bytecode into its human-readable (ish) opcodes and literals."}]},{"title":"Ethers ASM Dialect -- Opcodes","blocks":[{"link":"/v5/api/other/assembly/dialect/#asm-dialect-opcode","text":"An Opcode may be provided in either a functional or instructional syntax."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-opcode","text":"For Opcodes that require parameters, the functional syntax is recommended and the instructional syntax will raise a warning."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-opcode","text":"@TODO: Examples."}]},{"title":"Ethers ASM Dialect -- Labels","blocks":[{"link":"/v5/api/other/assembly/dialect/#asm-dialect-label","text":"A Label is a position in the program which can be jumped to."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-label","text":"A JUMPDEST is automatically added to this point in the assembled output."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-label","text":"@TODO: Examples."}]},{"title":"Ethers ASM Dialect -- Literals","blocks":[{"link":"/v5/api/other/assembly/dialect/#asm-dialect-literal","text":"A Literal puts data on the stack when executed using a PUSH operation."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-literal","text":"A Literal can be provided using a DataHexString or a decimal byte value."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-literal","text":"@TODO: examples."}]},{"title":"Ethers ASM Dialect -- Comments","blocks":[{"link":"/v5/api/other/assembly/dialect/#asm-dialect-comment","text":"To enter a comment in the Ethers ASM Dialect, any text following a semi-colon (i.e."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-comment","text":";) is ignored by the assembler."}]},{"title":"Ethers ASM Dialect -- Scopes","blocks":[{"link":"/v5/api/other/assembly/dialect/#asm-dialect-scope","text":"A common case in Ethereum is to have one program embedded in another."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-scope","text":"The most common use of this is embedding a Contract runtime bytecode within a deployment bytecode, which can be used as init code."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-scope","text":"When deploying a program to Ethereum, an init transaction is used."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-scope","text":"An init transaction has a null to address and contains bytecode in the data."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-scope","text":"This data bytecode is a program, that when executed returns some other bytecode as a result, this result is the bytecode to be installed."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-scope","text":"Therefore it is important that embedded code uses jumps relative to itself, not the entire program it is embedded in, which also means that a jump can only target its own scope, no parent or child scopes."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-scope","text":"This is enforced by the assembler."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-scope","text":"A scope may access the offset of any child Data Segment or child Scopes (with respect to itself) and may access the length of any Data Segment or Scopes anywhere in the program."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-scope","text":"Every program in the Ethers ASM Dialect has a top-level scope named _."}]},{"title":"Ethers ASM Dialect -- Data Segment","blocks":[{"link":"/v5/api/other/assembly/dialect/#asm-dialect-datasegment","text":"A Data Segment allows arbitrary data to be embedded into a program, which can be useful for lookup tables or deploy-time constants."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-datasegment","text":"An empty Data Segment can also be used when a labelled location is required, but without the JUMPDEST which a Labels adds."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-datasegment","text":"@TODO: Example."}]},{"title":"Ethers ASM Dialect -- Links","blocks":[{"link":"/v5/api/other/assembly/dialect/#asm-dialect-links","text":"A Link allows access to a Scopes, Data Segment or Labels."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-links","text":"To access the byte offset of a labelled item, use $foobar."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-links","text":"For a Labels, the target must be directly reachable within this scope."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-links","text":"For a Data Segment or a Scopes, it can be inside the same scope or any child scope."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-links","text":"For a Data Segment or a Labels, there is an additional type of Link, which provides the length of the data or bytecode respectively."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-links","text":"A Length Link is accessed by #foobar and is pushed on the stack as a literal."}]},{"title":"Ethers ASM Dialect -- Stack Placeholders","blocks":[{"link":"/v5/api/other/assembly/dialect/#asm-dialect-placeholder","text":"@TODO: exampl."}]},{"title":"Assembly","blocks":[{"link":"/v5/api/other/assembly/","text":"This module should still be considered fairly experimental."}]},{"title":"Hardware Wallets -- LedgerSigner","blocks":[{"link":"/v5/api/other/hardware/#hw-ledger","text":"The Ledger Hardware Wallets are a fairly popular brand."}]},{"title":"Hardware Wallets -- LedgerSigner -- new LedgerSigner( [ provider [ , type [ , path ] ] ] ) => LedgerSigner","blocks":[{"link":"/v5/api/other/hardware/","text":"Connects to a Ledger Hardware Wallet."},{"link":"/v5/api/other/hardware/","text":"The type if left unspecified is determined by the environment; in node the default is \"hid\" and in the browser \"u2f\" is the default."},{"link":"/v5/api/other/hardware/","text":"The default Ethereum path is used if path is left unspecified."}]},{"title":"Other Libraries","blocks":[{"link":"/v5/api/other/","text":"Now that ethers is more modular, it is possible to have additional ancillary packages, which are not part of the core but optionally add functionality only needed in certain situations."}]},{"title":"API Providers","blocks":[{"link":"/v5/api/providers/api-providers/#api-providers","text":"There are many services which offer a web API for accessing the Ethereum Blockchain."},{"link":"/v5/api/providers/api-providers/#api-providers","text":"These Providers allow connecting to them, which simplifies development, since you do not need to run your own instance or cluster of Ethereum nodes."},{"link":"/v5/api/providers/api-providers/#api-providers","text":"However, this reliance on third-party services can reduce resilience, security and increase the amount of required trust."},{"link":"/v5/api/providers/api-providers/#api-providers","text":"To mitigate these issues, it is recommended you use a Default Provider."}]},{"title":"API Providers -- EtherscanProvider","blocks":[{"link":"/v5/api/providers/api-providers/#EtherscanProvider","text":"The EtherscanProvider is backed by a combination of the various Etherscan APIs."}]},{"title":"API Providers -- EtherscanProvider -- new ethers.providers.EtherscanProvider( [ network = \"homestead\" , [ apiKey ] ] )","blocks":[{"link":"/v5/api/providers/api-providers/#EtherscanProvider","text":"Create a new EtherscanProvider connected to network with the optional apiKey."},{"link":"/v5/api/providers/api-providers/#EtherscanProvider","text":"The network may be specified as a string for a common network name, a number for a common chain ID or a [Network Object]provider-(network)."},{"link":"/v5/api/providers/api-providers/#EtherscanProvider","text":"If no apiKey is provided, a shared API key will be used, which may result in reduced performance and throttled requests."},{"link":"/v5/api/providers/api-providers/#EtherscanProvider","text":"It is highly recommended for production, you register with Etherscan for your own API key."}]},{"title":"API Providers -- EtherscanProvider -- Note: Default API keys","blocks":[{"link":"/v5/api/providers/api-providers/#EtherscanProvider","text":"If no apiKey is provided, a shared API key will be used, which may result in reduced performance and throttled requests."},{"link":"/v5/api/providers/api-providers/#EtherscanProvider","text":"It is highly recommended for production, you register with Etherscan for your own API key."}]},{"title":"API Providers -- EtherscanProvider -- Supported Networks","blocks":[{"link":"/v5/api/providers/api-providers/#EtherscanProvider","text":"Homestead (Mainnet) Ropsten (proof-of-work testnet) Rinkeby (proof-of-authority testnet) Görli (clique testnet) Kovan (proof-of-authority testnet)."}]},{"title":"API Providers -- EtherscanProvider -- provider.getHistory( address ) => Array< History >","blocks":[{"link":"/v5/api/providers/api-providers/#EtherscanProvider","text":"@TODO..."},{"link":"/v5/api/providers/api-providers/#EtherscanProvider","text":"Explain."}]},{"title":"API Providers -- InfuraProvider","blocks":[{"link":"/v5/api/providers/api-providers/#InfuraProvider","text":"The InfuraProvider is backed by the popular INFURA Ethereum service."}]},{"title":"API Providers -- InfuraProvider -- new ethers.providers.InfuraProvider( [ network = \"homestead\" , [ apiKey ] ] )","blocks":[{"link":"/v5/api/providers/api-providers/#InfuraProvider","text":"Create a new InfuraProvider connected to network with the optional apiKey."},{"link":"/v5/api/providers/api-providers/#InfuraProvider","text":"The network may be specified as a string for a common network name, a number for a common chain ID or a [Network Object]provider-(network)."},{"link":"/v5/api/providers/api-providers/#InfuraProvider","text":"The apiKey can be a string Project ID or an object with the properties projectId and projectSecret to specify a Project Secret which can be used on non-public sources (like on a server) to further secure your API access and quotas."}]},{"title":"API Providers -- InfuraProvider -- InfuraProvider.getWebSocketProvider( [ network [ , apiKey ] ] ) => WebSocketProvider","blocks":[{"link":"/v5/api/providers/api-providers/#InfuraProvider-getWebSocketProvider","text":"Create a new WebSocketProvider using the INFURA web-socket endpoint to connect to network with the optional apiKey."},{"link":"/v5/api/providers/api-providers/#InfuraProvider-getWebSocketProvider","text":"The network and apiKey are specified the same as the constructor."}]},{"title":"API Providers -- InfuraProvider -- Note: Default API keys","blocks":[{"link":"/v5/api/providers/api-providers/#InfuraProvider","text":"If no apiKey is provided, a shared API key will be used, which may result in reduced performance and throttled requests."},{"link":"/v5/api/providers/api-providers/#InfuraProvider","text":"It is highly recommended for production, you register with INFURA for your own API key."}]},{"title":"API Providers -- InfuraProvider -- Supported Networks","blocks":[{"link":"/v5/api/providers/api-providers/#InfuraProvider","text":"Homestead (Mainnet) Ropsten (proof-of-work testnet) Rinkeby (proof-of-authority testnet) Görli (clique testnet) Kovan (proof-of-authority testnet)."}]},{"title":"API Providers -- AlchemyProvider","blocks":[{"link":"/v5/api/providers/api-providers/#AlchemyProvider","text":"The AlchemyProvider is backed by Alchemy."}]},{"title":"API Providers -- AlchemyProvider -- new ethers.providers.AlchemyProvider( [ network = \"homestead\" , [ apiKey ] ] )","blocks":[{"link":"/v5/api/providers/api-providers/#AlchemyProvider","text":"Create a new AlchemyProvider connected to network with the optional apiKey."},{"link":"/v5/api/providers/api-providers/#AlchemyProvider","text":"The network may be specified as a string for a common network name, a number for a common chain ID or a Network Object."}]},{"title":"API Providers -- AlchemyProvider -- Note: Default API keys","blocks":[{"link":"/v5/api/providers/api-providers/#AlchemyProvider","text":"If no apiKey is provided, a shared API key will be used, which may result in reduced performance and throttled requests."},{"link":"/v5/api/providers/api-providers/#AlchemyProvider","text":"It is highly recommended for production, you register with Alchemy for your own API key."}]},{"title":"API Providers -- AlchemyProvider -- Supported Networks","blocks":[{"link":"/v5/api/providers/api-providers/#AlchemyProvider","text":"Homestead (Mainnet) Ropsten (proof-of-work testnet) Rinkeby (proof-of-authority testnet) Görli (clique testnet) Kovan (proof-of-authority testnet)."}]},{"title":"API Providers -- CloudflareProvider","blocks":[{"link":"/v5/api/providers/api-providers/#CloudflareProvider","text":"The CloudflareProvider is backed by the Cloudflare Ethereum Gateway."}]},{"title":"API Providers -- CloudflareProvider -- new ethers.providers.CloudflareProvider( )","blocks":[{"link":"/v5/api/providers/api-providers/#CloudflareProvider","text":"Create a new CloudflareProvider connected to mainnet (i.e."},{"link":"/v5/api/providers/api-providers/#CloudflareProvider","text":"\"homestead\")."}]},{"title":"API Providers -- CloudflareProvider -- Supported Networks","blocks":[{"link":"/v5/api/providers/api-providers/#CloudflareProvider","text":"Homestead (Mainnet)."}]},{"title":"Providers","blocks":[{"link":"/v5/api/providers/#providers","text":"A Provider is an abstraction of a connection to the Ethereum network, providing a concise, consistent interface to standard Ethereum node functionality."},{"link":"/v5/api/providers/#providers","text":"The ethers.js library provides several options which should cover the vast majority of use-cases, but also includes the necessary functions and classes for sub-classing if a more custom configuration is necessary."},{"link":"/v5/api/providers/#providers","text":"Most users should use the Default Provider."}]},{"title":"Providers -- Default Provider","blocks":[{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"The default provider is the safest, easiest way to begin developing on Ethereum, and it is also robust enough for use in production."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"It creates a FallbackProvider connected to as many backend services as possible."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"When a request is made, it is sent to multiple backends simultaneously."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"As responses from each backend are returned, they are checked that they agree."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"Once a quorum has been reached (i.e."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"enough of the backends agree), the response is provided to your application."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"This ensures that if a backend has become out-of-sync, or if it has been compromised that its responses are dropped in favor of responses that match the majority."}]},{"title":"Providers -- Default Provider -- ethers.getDefaultProvider( [ network , [ options ] ] ) => Provider","blocks":[{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"Returns a new Provider, backed by multiple services, connected to network."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"If no network is provided, homestead (i.e."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"mainnet) is used."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"The network may also be a URL to connect to, such as http://localhost:8545 or wss://example.com."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"The options is an object, with the following properties:."}]},{"title":"Providers -- Default Provider -- Note: API Keys","blocks":[{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"It is highly recommended for production services to acquire and specify an API Key for each service."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"The default API Keys used by ethers are shared across all users, so services may throttle all services that are using the default API Keys during periods of load without realizing it."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"Many services also have monitoring and usage metrics, which are only available if an API Key is specified."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"This allows tracking how many requests are being sent and which methods are being used the most."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"Some services also provide additional paid features, which are only available when specifying an API Key."}]},{"title":"Providers -- Networks","blocks":[{"link":"/v5/api/providers/#providers","text":"There are several official common Ethereum networks as well as custom networks and other compatible projects."},{"link":"/v5/api/providers/#providers","text":"Any API that accept a Networkish can be passed a common name (such as \"mainnet\" or \"ropsten\") to use that network definition or may specify custom parameters."}]},{"title":"Providers -- Networks -- Custom ENS Contract","blocks":[{"link":"/v5/api/providers/","text":"One common reason to specify custom properties for a Network is to override the address of the root ENS registry, either on a common network to intercept the ENS Methods or to specify the ENS registry on a dev network (on most dev networks you must deploy the ENS contracts manually)."}]},{"title":"JsonRpcProvider","blocks":[{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider","text":"The JSON-RPC API is a popular method for interacting with Ethereum and is available in all major Ethereum node implementations (e.g."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider","text":"Geth and Parity) as well as many third-party web services (e.g."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider","text":"INFURA)."}]},{"title":"JsonRpcProvider -- Provider Documentation -- new ethers.providers.JsonRpcProvider( [ url [ , aNetworkish ] ] )","blocks":[{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider","text":"Connect to a JSON-RPC API located at url using the aNetworkish network."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider","text":"If url is not specified, the default (i.e."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider","text":"http://localhost:8545) is used and if no network is specified, it will be determined automatically by querying the node."}]},{"title":"JsonRpcProvider -- Provider Documentation -- Note: Connecting to a Local Node","blocks":[{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider","text":"Each node implementation is slightly different and may require specific command-line flags, configuration or settings in their UI to enable JSON-RPC, unlock accounts or expose specific APIs."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider","text":"Please consult their documentation."}]},{"title":"JsonRpcProvider -- Provider Documentation -- jsonRpcProvider.getSigner( [ addressOrIndex ] ) => JsonRpcSigner","blocks":[{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider-getSigner","text":"Returns a JsonRpcSigner which is managed by this Ethereum node, at addressOrIndex."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider-getSigner","text":"If no addressOrIndex is provided, the first account (account #0) is used."}]},{"title":"JsonRpcProvider -- Provider Documentation -- jsonRpcProvider.listAccounts( ) => Array< string >","blocks":[{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider-listAccounts","text":"Returns a list of all account addresses managed by this provider."}]},{"title":"JsonRpcProvider -- Provider Documentation -- jsonRpcProvider.send( method , params ) => Promise< any >","blocks":[{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider-send","text":"Allows sending raw messages to the provider."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider-send","text":"This can be used for backend-specific calls, such as for debugging or specific account management."}]},{"title":"JsonRpcProvider -- JsonRpcSigner","blocks":[{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcSigner","text":"A JsonRpcSigner is a simple Signer which is backed by a connected JsonRpcProvider."}]},{"title":"JsonRpcProvider -- JsonRpcSigner -- signer.provider => JsonRpcProvider","blocks":[{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcSigner","text":"The provider this signer was established from."}]},{"title":"JsonRpcProvider -- JsonRpcSigner -- signer.connectUnchecked( ) => JsonRpcUncheckedSigner","blocks":[{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcSigner-connectUnchecked","text":"Returns a new Signer object which does not perform additional checks when sending a transaction."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcSigner-connectUnchecked","text":"See getUncheckedSigner for more details."}]},{"title":"JsonRpcProvider -- JsonRpcSigner -- signer.sendUncheckedTransaction( transaction ) => Promise< string< DataHexString< 32 > > >","blocks":[{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcSigner-sendUncheckedTransaction","text":"Sends the transaction and returns a Promise which resolves to the opaque transaction hash."}]},{"title":"JsonRpcProvider -- JsonRpcSigner -- signer.unlock( password ) => Promise< boolean >","blocks":[{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcSigner-unlock","text":"Request the node unlock the account (if locked) using password."}]},{"title":"JsonRpcProvider -- JsonRpcUncheckedSigner","blocks":[{"link":"/v5/api/providers/jsonrpc-provider/#UncheckedJsonRpcSigner","text":"The JSON-RPC API only provides a transaction hash as the response when a transaction is sent, but the ethers Provider requires populating all details of a transaction before returning it."},{"link":"/v5/api/providers/jsonrpc-provider/#UncheckedJsonRpcSigner","text":"For example, the gas price and gas limit may be adjusted by the node or the nonce automatically included, in which case the opaque transaction hash has discarded this."},{"link":"/v5/api/providers/jsonrpc-provider/#UncheckedJsonRpcSigner","text":"To remedy this, the JsonRpcSigner immediately queries the provider for the details using the returned transaction hash to populate the TransactionResponse object."},{"link":"/v5/api/providers/jsonrpc-provider/#UncheckedJsonRpcSigner","text":"Some backends do not respond immediately and instead defer releasing the details of a transaction it was responsible for signing until it is mined."},{"link":"/v5/api/providers/jsonrpc-provider/#UncheckedJsonRpcSigner","text":"The UncheckedSigner does not populate any additional information and will immediately return the result as a mock TransactionResponse-like object, with most of the properties set to null, but allows access to the transaction hash quickly, if that is all that is required."}]},{"title":"JsonRpcProvider -- Node-Specific Methods","blocks":[{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider--other","text":"Many methods are less common or specific to certain Ethereum Node implementations (e.g."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider--other","text":"Parity vs Geth."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider--other","text":"These include account and admin management, debugging, deeper block and transaction exploration and other services (such as Swarm and Whisper)."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider--other","text":"The jsonRpcProvider.send method can be used to access these."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider--other","text":"All JSON-RPC methods (including the less common methods) which most Ethereum Nodes support."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider--other","text":"Parity's Trace Module can be used to trace and debug EVM execution of a transaction (requires custom configuration) Geth's Debug Module can be used to debug transactions and internal cache state, etc."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider--other","text":"Additional Geth Methods Additional Parity Methods."}]},{"title":"Other Providers","blocks":[{"link":"/v5/api/providers/other/","text":"Others..."}]},{"title":"Other Providers -- FallbackProvider","blocks":[{"link":"/v5/api/providers/other/#FallbackProvider","text":"The FallbackProvider is the most advanced Provider available in ethers."},{"link":"/v5/api/providers/other/#FallbackProvider","text":"It uses a quorum and connects to multiple Providers as backends, each configured with a priority and a weight."},{"link":"/v5/api/providers/other/#FallbackProvider","text":"When a request is made, the request is dispatched to multiple backends, randomly chosen (higher priority backends are always selected first) and the results from each are compared against the others."},{"link":"/v5/api/providers/other/#FallbackProvider","text":"Only once the quorum has been reached will that result be accepted and returned to the caller."},{"link":"/v5/api/providers/other/#FallbackProvider","text":"By default the quorum requires 50% (rounded up) of the backends to agree."},{"link":"/v5/api/providers/other/#FallbackProvider","text":"The weight can be used to give a backend Provider more influence."}]},{"title":"Other Providers -- FallbackProvider -- new ethers.providers.FallbackProvider( providers [ , quorum ] )","blocks":[{"link":"/v5/api/providers/other/#FallbackProvider","text":"Creates a new instance of a FallbackProvider connected to providers."},{"link":"/v5/api/providers/other/#FallbackProvider","text":"If quorum is not specified, half of the total sum of the provider weights is used."},{"link":"/v5/api/providers/other/#FallbackProvider","text":"The providers can be either an array of Provider or FallbackProviderConfig."},{"link":"/v5/api/providers/other/#FallbackProvider","text":"If a Provider is provided, the defaults are a priority of 1 and a weight of 1."}]},{"title":"Other Providers -- FallbackProvider -- provider.providerConfigs => Array< FallbackProviderConfig >","blocks":[{"link":"/v5/api/providers/other/#FallbackProvider","text":"The list of Provider Configurations that describe the backends."}]},{"title":"Other Providers -- FallbackProvider -- provider.quorum => number","blocks":[{"link":"/v5/api/providers/other/#FallbackProvider","text":"The quorum the backend responses must agree upon before a result will be resolved."},{"link":"/v5/api/providers/other/#FallbackProvider","text":"By default this is half the sum of the weights."}]},{"title":"Other Providers -- FallbackProvider -- fallbackProviderConfig.provider => Provider","blocks":[{"link":"/v5/api/providers/other/#FallbackProviderConfig","text":"The provider for this configuration."}]},{"title":"Other Providers -- FallbackProvider -- fallbackProviderConfig.priority => number","blocks":[{"link":"/v5/api/providers/other/#FallbackProviderConfig","text":"The priority used for the provider."},{"link":"/v5/api/providers/other/#FallbackProviderConfig","text":"Higher priorities are favoured over lower priorities."},{"link":"/v5/api/providers/other/#FallbackProviderConfig","text":"If multiple providers share the same priority, they are chosen at random."}]},{"title":"Other Providers -- FallbackProvider -- fallbackProviderConfig.stallTimeout => number","blocks":[{"link":"/v5/api/providers/other/#FallbackProviderConfig","text":"The timeout (in ms) after which another Provider will be attempted."},{"link":"/v5/api/providers/other/#FallbackProviderConfig","text":"This does not affect the current Provider; if it returns a result it is counted as part of the quorum."},{"link":"/v5/api/providers/other/#FallbackProviderConfig","text":"Lower values will result in more network traffic, but may reduce the response time of requests."}]},{"title":"Other Providers -- FallbackProvider -- fallbackProviderConfig.weight => number","blocks":[{"link":"/v5/api/providers/other/#FallbackProviderConfig","text":"The weight a response from this provider provides."},{"link":"/v5/api/providers/other/#FallbackProviderConfig","text":"This can be used if a given Provider is more trusted, for example."}]},{"title":"Other Providers -- IpcProvider","blocks":[{"link":"/v5/api/providers/other/#IpcProvider","text":"The IpcProvider allows the JSON-RPC API to be used over a local filename on the file system, exposed by Geth, Parity and other nodes."},{"link":"/v5/api/providers/other/#IpcProvider","text":"This is only available in node.js (as it requires file system access, and may have additional complications due to file permissions."},{"link":"/v5/api/providers/other/#IpcProvider","text":"See any related notes on the documentation for the actual node implementation websites."}]},{"title":"Other Providers -- IpcProvider -- ipcProvider.path => string","blocks":[{"link":"/v5/api/providers/other/#IpcProvider","text":"The path this Provider is connected to."}]},{"title":"Other Providers -- UrlJsonRpcProvider","blocks":[{"link":"/v5/api/providers/other/#UrlJsonRpcProvider","text":"This class is intended to be sub-classed and not used directly."},{"link":"/v5/api/providers/other/#UrlJsonRpcProvider","text":"It simplifies creating a Provider where a normal JsonRpcProvider would suffice, with a little extra effort needed to generate the JSON-RPC URL."}]},{"title":"Other Providers -- UrlJsonRpcProvider -- new ethers.providers.UrlJsonRpcProvider( [ network [ , apiKey ] ] )","blocks":[{"link":"/v5/api/providers/other/#UrlJsonRpcProvider","text":"Sub-classes do not need to override this."},{"link":"/v5/api/providers/other/#UrlJsonRpcProvider","text":"Instead they should override the static method getUrl and optionally getApiKey."}]},{"title":"Other Providers -- UrlJsonRpcProvider -- urlJsonRpcProvider.apiKey => any","blocks":[{"link":"/v5/api/providers/other/#UrlJsonRpcProvider","text":"The value of the apiKey that was returned from InheritedClass.getApiKey."}]},{"title":"Other Providers -- UrlJsonRpcProvider -- InheritingClass.getApiKey( apiKey ) => any","blocks":[{"link":"/v5/api/providers/other/#UrlJsonRpcProvider","text":"This function should examine the apiKey to ensure it is valid and return a (possible modified) value to use in getUrl."}]},{"title":"Other Providers -- UrlJsonRpcProvider -- InheritingClass.getUrl( network , apiKey ) => string","blocks":[{"link":"/v5/api/providers/other/#UrlJsonRpcProvider","text":"The URL to use for the JsonRpcProvider instance."}]},{"title":"Other Providers -- Web3Provider","blocks":[{"link":"/v5/api/providers/other/#Web3Provider","text":"The Web3Provider is meant to ease moving from a web3.js based application to ethers by wrapping an existing Web3-compatible (such as a Web3HttpProvider, Web3IpcProvider or Web3WsProvider) and exposing it as an ethers.js Provider which can then be used with the rest of the library."},{"link":"/v5/api/providers/other/#Web3Provider","text":"This may also be used to wrap a standard [EIP-1193 Provider](link-eip-1193]."}]},{"title":"Other Providers -- Web3Provider -- new ethers.providers.Web3Provider( externalProvider [ , network ] )","blocks":[{"link":"/v5/api/providers/other/#Web3Provider","text":"Create a new Web3Provider, which wraps an EIP-1193 Provider or Web3Provider-compatible Provider."}]},{"title":"Other Providers -- Web3Provider -- web3Provider.provider => Web3CompatibleProvider","blocks":[{"link":"/v5/api/providers/other/#Web3Provider","text":"The provider used to create this instance."}]},{"title":"Other Providers -- Web3Provider -- ExternalProvider","blocks":[{"link":"/v5/api/providers/other/#Web3Provider--ExternalProvider","text":"An ExternalProvider can be either one for the above mentioned Web3 Providers (or otherwise compatible) or an EIP-1193 provider."},{"link":"/v5/api/providers/other/#Web3Provider--ExternalProvider","text":"An ExternalProvider must offer one of the following signatures, and the first matching is used:."}]},{"title":"Other Providers -- Web3Provider -- externalProvider.request( request ) => Promise< any >","blocks":[{"link":"/v5/api/providers/other/#Web3Provider--ExternalProvider","text":"This follows the EIP-1193 API signature."},{"link":"/v5/api/providers/other/#Web3Provider--ExternalProvider","text":"The request should be a standard JSON-RPC payload, which should at a minimum specify the method and params."},{"link":"/v5/api/providers/other/#Web3Provider--ExternalProvider","text":"The result should be the actual result, which differs from the Web3.js response, which is a wrapped JSON-RPC response."}]},{"title":"Other Providers -- Web3Provider -- externalProvider.sendAsync( request , callback ) => void","blocks":[{"link":"/v5/api/providers/other/#Web3Provider--ExternalProvider","text":"This follows the Web3.js Provider Signature."},{"link":"/v5/api/providers/other/#Web3Provider--ExternalProvider","text":"The request should be a standard JSON-RPC payload, which should at a minimum specify the method and params."},{"link":"/v5/api/providers/other/#Web3Provider--ExternalProvider","text":"The callback should use the error-first calling semantics, so (error, result) where the result is a JSON-RPC wrapped result."}]},{"title":"Other Providers -- Web3Provider -- externalProvider.send( request , callback ) => void","blocks":[{"link":"/v5/api/providers/other/#Web3Provider--ExternalProvider","text":"This is identical to sendAsync."},{"link":"/v5/api/providers/other/#Web3Provider--ExternalProvider","text":"Historically, this used a synchronous web request, but no current browsers support this, so its use this way was deprecated quite a long time ago."}]},{"title":"Other Providers -- WebSocketProvider","blocks":[{"link":"/v5/api/providers/other/#WebSocketProvider","text":"The WebSocketProvider connects to a JSON-RPC WebSocket-compatible backend which allows for a persistent connection, multiplexing requests and pub-sub events for a more immediate event dispatching."},{"link":"/v5/api/providers/other/#WebSocketProvider","text":"The WebSocket API is newer, and if running your own infrastructure, note that WebSockets are much more intensive on your server resources, as they must manage and maintain the state for each client."},{"link":"/v5/api/providers/other/#WebSocketProvider","text":"For this reason, many services may also charge additional fees for using their WebSocket endpoints."}]},{"title":"Other Providers -- WebSocketProvider -- new ethers.provider.WebSocketProvider( [ url [ , network ] ] )","blocks":[{"link":"/v5/api/providers/other/#WebSocketProvider","text":"Returns a new WebSocketProvider connected to url as the network."},{"link":"/v5/api/providers/other/#WebSocketProvider","text":"If url is unspecified, the default \"ws://localhost:8546\" will be used."},{"link":"/v5/api/providers/other/#WebSocketProvider","text":"If network is unspecified, it will be queried from the network."}]},{"title":"Provider","blocks":[{"link":"/v5/api/providers/provider/#Provider","text":"Explain what a provider is..."}]},{"title":"Provider -- Accounts Methods -- provider.getBalance( address [ , blockTag = latest ] ) => Promise< BigNumber >","blocks":[{"link":"/v5/api/providers/provider/#Provider-getBalance","text":"Returns the balance of address as of the blockTag block height."}]},{"title":"Provider -- Accounts Methods -- provider.getCode( address [ , blockTag = latest ] ) => Promise< string< DataHexString > >","blocks":[{"link":"/v5/api/providers/provider/#Provider-getCode","text":"Returns the contract code of address as of the blockTag block height."},{"link":"/v5/api/providers/provider/#Provider-getCode","text":"If there is no contract currently deployed, the result is 0x."}]},{"title":"Provider -- Accounts Methods -- provider.getStorageAt( addr , pos [ , blockTag = latest ] ) => Promise< string< DataHexString > >","blocks":[{"link":"/v5/api/providers/provider/#Provider-getStorageAt","text":"Returns the Bytes32 value of the position pos at address addr, as of the blockTag."}]},{"title":"Provider -- Accounts Methods -- provider.getTransactionCount( address [ , blockTag = latest ] ) => Promise< number >","blocks":[{"link":"/v5/api/providers/provider/#Provider-getTransactionCount","text":"Returns the number of transactions address has ever sent, as of blockTag."},{"link":"/v5/api/providers/provider/#Provider-getTransactionCount","text":"This value is required to be the nonce for the next transaction from address sent to the network."}]},{"title":"Provider -- Blocks Methods -- provider.getBlock( block ) => Promise< Block >","blocks":[{"link":"/v5/api/providers/provider/#Provider-getBlock","text":"Get the block from the network, where the result.transactions is a list of transaction hashes."}]},{"title":"Provider -- Blocks Methods -- provider.getBlockWithTransactions( block ) => Promise< BlockWithTransactions >","blocks":[{"link":"/v5/api/providers/provider/#Provider-getBlockWithTransactions","text":"Get the block from the network, where the result.transactions is an Array of TransactionResponse objects."}]},{"title":"Provider -- Ethereum Naming Service (ENS) Methods","blocks":[{"link":"/v5/api/providers/provider/#Provider--ens-methods","text":"The Ethereum Naming Service (ENS) allows a short and easy-to-remember ENS Name to be attached to any set of keys and values."},{"link":"/v5/api/providers/provider/#Provider--ens-methods","text":"One of the most common uses for this is to use a simple name to refer to an Ethereum Address."},{"link":"/v5/api/providers/provider/#Provider--ens-methods","text":"In the ethers API, nearly anywhere that accepts an address, an ENS name may be used instead, which can simplify code and make reading and debugging much simpler."},{"link":"/v5/api/providers/provider/#Provider--ens-methods","text":"The provider offers some basic operations to help resolve and work with ENS names."}]},{"title":"Provider -- Ethereum Naming Service (ENS) Methods -- provider.lookupAddress( address ) => Promise< string >","blocks":[{"link":"/v5/api/providers/provider/#Provider-lookupAddress","text":"Performs a reverse lookup of the address in ENS using the Reverse Registrar."},{"link":"/v5/api/providers/provider/#Provider-lookupAddress","text":"If the name does not exist, or the forward lookup does not match, null is returned."}]},{"title":"Provider -- Ethereum Naming Service (ENS) Methods -- provider.resolveName( name ) => Promise< string< Address > >","blocks":[{"link":"/v5/api/providers/provider/#Provider-ResolveName","text":"Looks up the address of name."},{"link":"/v5/api/providers/provider/#Provider-ResolveName","text":"If the name is not owned, or does not have a Resolver configured, or the Resolver does not have an address configured, null is returned."}]},{"title":"Provider -- Logs Methods -- provider.getLogs( filter ) => Promise< Array< Log > >","blocks":[{"link":"/v5/api/providers/provider/#Provider-getLogs","text":"Returns the Array of Log matching the filter."},{"link":"/v5/api/providers/provider/#Provider-getLogs","text":"Keep in mind that many backends will discard old events, and that requests which are too broad may get dropped as they require too many resources to execute the query."}]},{"title":"Provider -- Network Status Methods -- provider.getNetwork( ) => Promise< Network >","blocks":[{"link":"/v5/api/providers/provider/#Provider-getNetwork","text":"Returns the Network this Provider is connected to."}]},{"title":"Provider -- Network Status Methods -- provider.getBlockNumber( ) => Promise< number >","blocks":[{"link":"/v5/api/providers/provider/#Provider-getBlockNumber","text":"Returns the block number (or height) of the most recently mined block."}]},{"title":"Provider -- Network Status Methods -- provider.getGasPrice( ) => Promise< BigNumber >","blocks":[{"link":"/v5/api/providers/provider/#Provider-getGasPrice","text":"Returns a best guess of the Gas Price to use in a transaction."}]},{"title":"Provider -- Transactions Methods -- provider.call( transaction [ , blockTag = latest ] ) => Promise< string< DataHexString > >","blocks":[{"link":"/v5/api/providers/provider/#Provider-call","text":"Returns the result of executing the transaction, using call."},{"link":"/v5/api/providers/provider/#Provider-call","text":"A call does not require any ether, but cannot change any state."},{"link":"/v5/api/providers/provider/#Provider-call","text":"This is useful for calling getters on Contracts."}]},{"title":"Provider -- Transactions Methods -- provider.estimateGas( transaction ) => Promise< BigNumber >","blocks":[{"link":"/v5/api/providers/provider/#Provider-estimateGas","text":"Returns an estimate of the amount of gas that would be required to submit transaction to the network."},{"link":"/v5/api/providers/provider/#Provider-estimateGas","text":"An estimate may not be accurate since there could be another transaction on the network that was not accounted for, but after being mined affected relevant state."}]},{"title":"Provider -- Transactions Methods -- provider.sendTransaction( transaction ) => Promise< TransactionResponse >","blocks":[{"link":"/v5/api/providers/provider/#Provider-sendTransaction","text":"Submits transaction to the network to be mined."},{"link":"/v5/api/providers/provider/#Provider-sendTransaction","text":"The transaction must be signed, and be valid (i.e."},{"link":"/v5/api/providers/provider/#Provider-sendTransaction","text":"the nonce is correct and the account has sufficient balance to pay for the transaction)."}]},{"title":"Provider -- Transactions Methods -- provider.waitForTransaction( hash [ , confirms = 1 [ , timeout ] ] ) => Promise< TxReceipt >","blocks":[{"link":"/v5/api/providers/provider/#Provider-waitForTransaction","text":"Returns a Promise which will not resolve until transactionHash is mined."}]},{"title":"Provider -- Event Emitter Methods","blocks":[{"link":"/v5/api/providers/provider/#Provider--event-methods","text":"Explain events here..."}]},{"title":"Provider -- Event Emitter Methods -- provider.on( eventName , listener ) => this","blocks":[{"link":"/v5/api/providers/provider/#Provider-on","text":"Add a listener to be triggered for each eventName."}]},{"title":"Provider -- Event Emitter Methods -- provider.once( eventName , listener ) => this","blocks":[{"link":"/v5/api/providers/provider/#Provider-once","text":"Add a listener to be triggered for only the next eventName, at which time it will be removed."}]},{"title":"Provider -- Event Emitter Methods -- provider.emit( eventName , ...args ) => boolean","blocks":[{"link":"/v5/api/providers/provider/#Provider-emit","text":"Notify all listeners of eventName, passing args to each listener."},{"link":"/v5/api/providers/provider/#Provider-emit","text":"This is generally only used internally."}]},{"title":"Provider -- Event Emitter Methods -- provider.off( eventName [ , listener ] ) => this","blocks":[{"link":"/v5/api/providers/provider/#Provider-off","text":"Remove a listener for eventName."},{"link":"/v5/api/providers/provider/#Provider-off","text":"If no listener is provided, all listeners for eventName are removed."}]},{"title":"Provider -- Event Emitter Methods -- provider.removeAllListeners( [ eventName ] ) => this","blocks":[{"link":"/v5/api/providers/provider/#Provider-removeAllListeners","text":"Remove all the listeners for eventName."},{"link":"/v5/api/providers/provider/#Provider-removeAllListeners","text":"If no eventName is provided, all events are removed."}]},{"title":"Provider -- Event Emitter Methods -- provider.listenerCount( [ eventName ] ) => number","blocks":[{"link":"/v5/api/providers/provider/#Provider-listenerCount","text":"Returns the number of listeners for eventName."},{"link":"/v5/api/providers/provider/#Provider-listenerCount","text":"If no eventName is provided, the total number of listeners is returned."}]},{"title":"Provider -- Event Emitter Methods -- provider.listeners( eventName ) => Array< Listener >","blocks":[{"link":"/v5/api/providers/provider/#Provider-listeners","text":"Returns the list of Listeners for eventName."}]},{"title":"Provider -- Event Emitter Methods -- Events","blocks":[{"link":"/v5/api/providers/provider/#Provider--events","text":"Any of the following may be used as the eventName in the above methods."}]},{"title":"Provider -- Event Emitter Methods -- Log Filter","blocks":[{"link":"/v5/api/providers/provider/#Provider--events","text":"A filter is an object, representing a contract log Filter, which has the optional properties address (the source contract) and topics (a topic-set to match)."},{"link":"/v5/api/providers/provider/#Provider--events","text":"If address is unspecified, the filter matches any contract address."},{"link":"/v5/api/providers/provider/#Provider--events","text":"See events for more information on how to specify topic-sets."}]},{"title":"Provider -- Event Emitter Methods -- Topic-Set Filter","blocks":[{"link":"/v5/api/providers/provider/#Provider--events","text":"The value of a Topic-Set Filter is a array of Topic-Sets."},{"link":"/v5/api/providers/provider/#Provider--events","text":"This event is identical to a Log Filter with the address omitted (i.e."},{"link":"/v5/api/providers/provider/#Provider--events","text":"from any contract)."}]},{"title":"Provider -- Event Emitter Methods -- Transaction Filter","blocks":[{"link":"/v5/api/providers/provider/#Provider--events","text":"The value of a Transaction Filter is any transaction hash."},{"link":"/v5/api/providers/provider/#Provider--events","text":"This event is emitted on every block that is part of a chain that includes the given mined transaction."},{"link":"/v5/api/providers/provider/#Provider--events","text":"It is much more common that the once method is used than the on method."},{"link":"/v5/api/providers/provider/#Provider--events","text":"In addition to transaction and filter events, there are several named events."}]},{"title":"Provider -- Inspection Methods -- Provider.isProvider( object ) => boolean","blocks":[{"link":"/v5/api/providers/provider/#Provider-isProvider","text":"Returns true if and only if object is a Provider."}]},{"title":"Types -- BlockTag","blocks":[{"link":"/v5/api/providers/types/#providers-BlockTag","text":"A BlockTag specifies a specific location in the Blockchain."},{"link":"/v5/api/providers/types/#providers-BlockTag","text":"\"latest\" -- The most recently mined block \"earliest\" -- Block #0 \"pending\" -- The block currently being prepared for mining; not all operations and backends support this BlockTag number -- The block at this height a negative number -- The block this many blocks ago."}]},{"title":"Types -- BlockTag -- EventType","blocks":[{"link":"/v5/api/providers/types/#providers-EventType","text":"And EventType can be any of the following."},{"link":"/v5/api/providers/types/#providers-EventType","text":"string -- TODO..."},{"link":"/v5/api/providers/types/#providers-EventType","text":"Array> | Array>>> -- TODO..."},{"link":"/v5/api/providers/types/#providers-EventType","text":"EventFilter -- TODO..."}]},{"title":"Types -- Networkish","blocks":[{"link":"/v5/api/providers/types/#providers-Networkish","text":"A Networkish may be any of the following:."},{"link":"/v5/api/providers/types/#providers-Networkish","text":"a Network object the name of a common network as a string (e.g."},{"link":"/v5/api/providers/types/#providers-Networkish","text":"\"homestead\") the chain ID a network as a number; if the chain ID is that of a common network, the name and ensAddress will be populated, otherwise, the default name \"unknown\" and no ensAddress is used."}]},{"title":"Types -- Network","blocks":[{"link":"/v5/api/providers/types/#providers-Network","text":"A Network represents an Ethereum network."}]},{"title":"Types -- Network -- network.name => string","blocks":[{"link":"/v5/api/providers/types/#providers-Network","text":"The human-readable name of the network, such as homestead."},{"link":"/v5/api/providers/types/#providers-Network","text":"If the network name is unknown, this will be \"unknown\"."}]},{"title":"Types -- Network -- network.chainId => number","blocks":[{"link":"/v5/api/providers/types/#providers-Network","text":"The Chain ID of the network."}]},{"title":"Types -- Network -- network.ensAddress => string< Address >","blocks":[{"link":"/v5/api/providers/types/#providers-Network","text":"The address at which the ENS registry is deployed on this network."}]},{"title":"Types -- Block -- block.hash => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/providers/types/#providers-Block","text":"The hash of this block."}]},{"title":"Types -- Block -- block.parentHash => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/providers/types/#providers-Block","text":"The hash of the previous block."}]},{"title":"Types -- Block -- block.number => number","blocks":[{"link":"/v5/api/providers/types/#providers-Block","text":"The height (number) of this block."}]},{"title":"Types -- Block -- block.timestamp => number","blocks":[{"link":"/v5/api/providers/types/#providers-Block","text":"The timestamp of this block."}]},{"title":"Types -- Block -- block.nonce => string< DataHexString >","blocks":[{"link":"/v5/api/providers/types/#providers-Block","text":"The nonce used as part of the proof-of-work to mine this block."},{"link":"/v5/api/providers/types/#providers-Block","text":"This property is generally of little interest to developers."}]},{"title":"Types -- Block -- block.difficulty => number","blocks":[{"link":"/v5/api/providers/types/#providers-Block","text":"The difficulty target required to be met by the miner of the block."},{"link":"/v5/api/providers/types/#providers-Block","text":"This property is generally of little interest to developers."}]},{"title":"Types -- Block -- block.gasLimit => BigNumber","blocks":[{"link":"/v5/api/providers/types/#providers-Block","text":"The maximum amount of gas that this block was permitted to use."},{"link":"/v5/api/providers/types/#providers-Block","text":"This is a value that can be voted up or voted down by miners and is used to automatically adjust the bandwidth requirements of the network."},{"link":"/v5/api/providers/types/#providers-Block","text":"This property is generally of little interest to developers."}]},{"title":"Types -- Block -- block.gasUsed => BigNumber","blocks":[{"link":"/v5/api/providers/types/#providers-Block","text":"The total amount of gas used by all transactions in this block."}]},{"title":"Types -- Block -- block.miner => string","blocks":[{"link":"/v5/api/providers/types/#providers-Block","text":"The coinbase address of this block, which indicates the address the miner that mined this block would like the subsidy reward to go to."}]},{"title":"Types -- Block -- block.extraData => string","blocks":[{"link":"/v5/api/providers/types/#providers-Block","text":"This is extra data a miner may choose to include when mining a block."},{"link":"/v5/api/providers/types/#providers-Block","text":"This property is generally of little interest to developers."}]},{"title":"Types -- Block -- Block (with transaction hashes)","blocks":[{"link":"/v5/api/providers/types/#providers-Block","text":"Often only the hashes of the transactions included in a block are needed, so by default a block only contains this information, as it is substantially less data."}]},{"title":"Types -- Block -- block.transactions => Array< string< DataHexString< 32 > > >","blocks":[{"link":"/v5/api/providers/types/","text":"A list of the transactions hashes for each transaction this block includes."}]},{"title":"Types -- Block -- BlockWithTransactions","blocks":[{"link":"/v5/api/providers/types/#providers-BlockWithTransactions","text":"If all transactions for a block are needed, this object instead includes the full details on each transaction."}]},{"title":"Types -- Block -- block.transactions => Array< TransactionResponse >","blocks":[{"link":"/v5/api/providers/types/#providers-BlockWithTransactions","text":"A list of the transactions this block includes."}]},{"title":"Types -- Events and Logs -- filter.address => string< Address >","blocks":[{"link":"/v5/api/providers/types/#providers-EventFilter","text":"The address to filter by, or null to match any address."}]},{"title":"Types -- Events and Logs -- filter.topics => Array< string< DataHexString< 32 > > | Array< string< DataHexString< 32 > > > >","blocks":[{"link":"/v5/api/providers/types/#providers-EventFilter","text":"The topics to filter by, or null to match any topics."},{"link":"/v5/api/providers/types/#providers-EventFilter","text":"Each entry represents an AND condition that must match, or may be null to match anything."},{"link":"/v5/api/providers/types/#providers-EventFilter","text":"If a given entry is an Array, then that entry is treated as an OR for any value in the entry."}]},{"title":"Types -- Events and Logs -- filter.fromBlock => BlockTag","blocks":[{"link":"/v5/api/providers/types/#providers-Filter","text":"The starting block (inclusive) to search for logs matching the filter criteria."}]},{"title":"Types -- Events and Logs -- filter.toBlock => BlockTag","blocks":[{"link":"/v5/api/providers/types/#providers-Filter","text":"The end block (inclusive) to search for logs matching the filter criteria."}]},{"title":"Types -- Events and Logs -- filter.blockHash => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/providers/types/#providers-FilterByBlockHash","text":"The specific block (by its block hash) to search for logs matching the filter criteria."}]},{"title":"Types -- Events and Logs -- log.blockNumber => number","blocks":[{"link":"/v5/api/providers/types/#providers-Log","text":"The block height (number) of the block including the transaction of this log."}]},{"title":"Types -- Events and Logs -- log.blockHash => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/providers/types/#providers-Log","text":"The block hash of the block including the transaction of this log."}]},{"title":"Types -- Events and Logs -- log.removed => boolean","blocks":[{"link":"/v5/api/providers/types/#providers-Log","text":"During a re-org, if a transaction is orphaned, this will be set to true to indicate the Log entry has been removed; it will likely be emitted again in the near future when another block is mined with the transaction that triggered this log, but keep in mind the values may change."}]},{"title":"Types -- Events and Logs -- log.transactionLogIndex => number","blocks":[{"link":"/v5/api/providers/types/#providers-Log","text":"The index of this log in the transaction."}]},{"title":"Types -- Events and Logs -- log.address => string< Address >","blocks":[{"link":"/v5/api/providers/types/#providers-Log","text":"The address of the contract that generated this log."}]},{"title":"Types -- Events and Logs -- log.data => string< DataHexString >","blocks":[{"link":"/v5/api/providers/types/#providers-Log","text":"The data included in this log."}]},{"title":"Types -- Events and Logs -- log.topics => Array< string< DataHexString< 32 > > >","blocks":[{"link":"/v5/api/providers/types/#providers-Log","text":"The list of topics (indexed properties) for this log."}]},{"title":"Types -- Events and Logs -- log.transactionHash => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/providers/types/#providers-Log","text":"The transaction hash of the transaction of this log."}]},{"title":"Types -- Events and Logs -- log.transactionIndex => number","blocks":[{"link":"/v5/api/providers/types/#providers-Log","text":"The index of the transaction in the block of the transaction of this log."}]},{"title":"Types -- Events and Logs -- log.logIndex => number","blocks":[{"link":"/v5/api/providers/types/#providers-Log","text":"The index of this log across all logs in the entire block."}]},{"title":"Types -- Transactions -- TransactionRequest","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionRequest","text":"A transaction request describes a transaction that is to be sent to the network or otherwise processed."},{"link":"/v5/api/providers/types/#providers-TransactionRequest","text":"All fields are optional and may be a promise which resolves to the required type."}]},{"title":"Types -- Transactions -- transactionRequest.to => string | Promise< string >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionRequest","text":"The address (or ENS name) this transaction it to."}]},{"title":"Types -- Transactions -- transactionRequest.from => string< Address > | Promise< string< Address > >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionRequest","text":"The address this transaction is from."}]},{"title":"Types -- Transactions -- transactionRequest.nonce => number | Promise< number >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionRequest","text":"The nonce for this transaction."},{"link":"/v5/api/providers/types/#providers-TransactionRequest","text":"This should be set to the number of transactions ever sent from this address."}]},{"title":"Types -- Transactions -- transactionRequest.gasLimit => BigNumber | Promise< BigNumber >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionRequest","text":"The maximum amount of gas this transaction is permitted to use."}]},{"title":"Types -- Transactions -- transactionRequest.gasPrice => BigNumber | Promise< BigNumber >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionRequest","text":"The price (in wei) per unit of gas this transaction will pay."}]},{"title":"Types -- Transactions -- transactionRequest.data => DataHexString | Promise< DataHexString >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionRequest","text":"The transaction data."}]},{"title":"Types -- Transactions -- transactionRequest.value => BigNumber | Promise< BigNumber >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionRequest","text":"The amount (in wei) this transaction is sending."}]},{"title":"Types -- Transactions -- transactionRequest.chainId => number | Promise< number >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionRequest","text":"The chain ID this transaction is authorized on, as specified by EIP-155."},{"link":"/v5/api/providers/types/#providers-TransactionRequest","text":"If the chain ID is 0 will disable EIP-155 and the transaction will be valid on any network."},{"link":"/v5/api/providers/types/#providers-TransactionRequest","text":"This can be dangerous and care should be taken, since it allows transactions to be replayed on networks that were possibly not intended."}]},{"title":"Types -- Transactions -- TransactionResponse","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionResponse","text":"A TransactionResponse includes all properties of a Transaction as well as several properties that are useful once it has been mined."}]},{"title":"Types -- Transactions -- transaction.blockNumber => number","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionResponse","text":"The number (\"height\") of the block this transaction was mined in."},{"link":"/v5/api/providers/types/#providers-TransactionResponse","text":"If the block has not been mined, this is null."}]},{"title":"Types -- Transactions -- transaction.blockHash => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionResponse","text":"The hash of the block this transaction was mined in."},{"link":"/v5/api/providers/types/#providers-TransactionResponse","text":"If the block has not been mined, this is null."}]},{"title":"Types -- Transactions -- transaction.timestamp => number","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionResponse","text":"The timestamp of the block this transaction was mined in."},{"link":"/v5/api/providers/types/#providers-TransactionResponse","text":"If the block has not been mined, this is null."}]},{"title":"Types -- Transactions -- transaction.confirmations => number","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionResponse","text":"The number of blocks that have been mined (including the initial block) since this transaction was mined."}]},{"title":"Types -- Transactions -- transaction.raw => string< DataHexString >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionResponse","text":"The serialized transaction."}]},{"title":"Types -- Transactions -- transaction.wait( [ confirmations = 1 ] ) => Promise< TransactionReceipt >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionResponse","text":"Wait for confirmations."},{"link":"/v5/api/providers/types/#providers-TransactionResponse","text":"If 0, and the transaction has not been mined, null is returned."}]},{"title":"Types -- Transactions -- receipt.to => string< Address >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"The address this transaction is to."},{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"This is null if the transaction was an init transaction, used to deploy a contract."}]},{"title":"Types -- Transactions -- receipt.from => string< Address >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"The address this transaction is from."}]},{"title":"Types -- Transactions -- receipt.contractAddress => string< Address >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"If this transaction has a null to address, it is an init transaction used to deploy a contract, in which case this is the address created by that contract."},{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"To compute a contract address, the getContractAddress utility function can also be used with a TransactionResponse object, which requires the transaction nonce and the address of the sender."}]},{"title":"Types -- Transactions -- receipt.transactionIndex => number","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"The index of this transaction in the list of transactions included in the block this transaction was mined in."}]},{"title":"Types -- Transactions -- receipt.root => string","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"The intermediate state root of a receipt."},{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"Only transactions included in blocks before the Byzantium Hard Fork have this property, as it was replaced by the status property."},{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"The property is generally of little use to developers."},{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"At the time it could be used to verify a state transition with a fraud-proof only considering the single transaction; without it the full block must be considered."}]},{"title":"Types -- Transactions -- receipt.gasUsed => BigNumber","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"The amount of gas actually used by this transaction."}]},{"title":"Types -- Transactions -- receipt.logsBloom => string< DataHexString >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"A bloom-filter, which includes all the addresses and topics included in any log in this transaction."}]},{"title":"Types -- Transactions -- receipt.blockHash => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"The block hash of the block that this transaction was included in."}]},{"title":"Types -- Transactions -- receipt.transactionHash => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"The transaction hash of this transaction."}]},{"title":"Types -- Transactions -- receipt.logs => Array< Log >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"All the logs emitted by this transaction."}]},{"title":"Types -- Transactions -- receipt.blockNumber => number","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"The block height (number) of the block that this transaction was included in."}]},{"title":"Types -- Transactions -- receipt.confirmations => number","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"The number of blocks that have been mined since this transaction, including the actual block it was mined in."}]},{"title":"Types -- Transactions -- receipt.cumulativeGasUsed => BigNumber","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"For the block this transaction was included in, this is the sum of the gas used by each transaction in the ordered list of transactions up to (and including) this transaction."},{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"This is generally of little interest to developers."}]},{"title":"Types -- Transactions -- receipt.byzantium => boolean","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"This is true if the block is in a post-Byzantium Hard Fork block."}]},{"title":"Types -- Transactions -- receipt.status => boolean","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"The status of a transaction is 1 is successful or 0 if it was reverted."},{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"Only transactions included in blocks post-Byzantium Hard Fork have this property."}]},{"title":"Signers","blocks":[{"link":"/v5/api/signer/#signers","text":"A Signer in ethers is an abstraction of an Ethereum Account, which can be used to sign messages and transactions and send signed transactions to the Ethereum Network to execute state changing operations."},{"link":"/v5/api/signer/#signers","text":"The available operations depend largely on the sub-class used."},{"link":"/v5/api/signer/#signers","text":"For example, a Signer from MetaMask can send transactions and sign messages but cannot sign a transaction (without broadcasting it)."},{"link":"/v5/api/signer/#signers","text":"The most common Signers you will encounter are:."},{"link":"/v5/api/signer/#signers","text":"Wallet, which is a class which knows its private key and can execute any operations with it JsonRpcSigner, which is connected to a JsonRpcProvider (or sub-class) and is acquired using getSigner."}]},{"title":"Signers -- Signer","blocks":[{"link":"/v5/api/signer/#Signer","text":"The Signer class is abstract and cannot be directly instantiated."},{"link":"/v5/api/signer/#Signer","text":"Instead use one of the concrete sub-classes, such as the Wallet, VoidSigner or JsonRpcSigner."}]},{"title":"Signers -- Signer -- signer.connect( provider ) => Signer","blocks":[{"link":"/v5/api/signer/#Signer-connect","text":"Sub-classes must implement this, however they may simply throw an error if changing providers is not supported."}]},{"title":"Signers -- Signer -- signer.getAddress( ) => Promise< string< Address > >","blocks":[{"link":"/v5/api/signer/#Signer-getaddress","text":"Returns a Promise that resolves to the account address."},{"link":"/v5/api/signer/#Signer-getaddress","text":"This is a Promise so that a Signer can be designed around an asynchronous source, such as hardware wallets."},{"link":"/v5/api/signer/#Signer-getaddress","text":"Sub-classes must implement this."}]},{"title":"Signers -- Signer -- Signer.isSigner( object ) => boolean","blocks":[{"link":"/v5/api/signer/#Signer-isSigner","text":"Returns true if an only if object is a Signer."}]},{"title":"Signers -- Signer -- signer.getBalance( [ blockTag = \"latest\" ] ) => Promise< BigNumber >","blocks":[{"link":"/v5/api/signer/#Signer-getBalance","text":"Returns the balance of this wallet at blockTag."}]},{"title":"Signers -- Signer -- signer.getChainId( ) => Promise< number >","blocks":[{"link":"/v5/api/signer/#Signer-getChainId","text":"Returns the chain ID this wallet is connected to."}]},{"title":"Signers -- Signer -- signer.getGasPrice( ) => Promise< BigNumber >","blocks":[{"link":"/v5/api/signer/#Signer-getGasPrice","text":"Returns the current gas price."}]},{"title":"Signers -- Signer -- signer.getTransactionCount( [ blockTag = \"latest\" ] ) => Promise< number >","blocks":[{"link":"/v5/api/signer/#Signer-getTransactionCount","text":"Returns the number of transactions this account has ever sent."},{"link":"/v5/api/signer/#Signer-getTransactionCount","text":"This is the value required to be included in transactions as the nonce."}]},{"title":"Signers -- Signer -- signer.call( transactionRequest ) => Promise< string< DataHexString > >","blocks":[{"link":"/v5/api/signer/#Signer-call","text":"Returns the result of calling using the transactionRequest, with this account address being used as the from field."}]},{"title":"Signers -- Signer -- signer.estimateGas( transactionRequest ) => Promise< BigNumber >","blocks":[{"link":"/v5/api/signer/#Signer-estimateGas","text":"Returns the result of estimating the cost to send the transactionRequest, with this account address being used as the from field."}]},{"title":"Signers -- Signer -- signer.resolveName( ensName ) => Promise< string< Address > >","blocks":[{"link":"/v5/api/signer/#Signer-resolveName","text":"Returns the address associated with the ensName."}]},{"title":"Signers -- Signer -- signer.signMessage( message ) => Promise< string< RawSignature > >","blocks":[{"link":"/v5/api/signer/#Signer-signMessage","text":"This returns a Promise which resolves to the Raw Signature of message."},{"link":"/v5/api/signer/#Signer-signMessage","text":"Sub-classes must implement this, however they may throw if signing a message is not supported, such as in a Contract-based Wallet or Meta-Transaction-based Wallet."}]},{"title":"Signers -- Signer -- Note","blocks":[{"link":"/v5/api/signer/#Signer--signing-methods","text":"If message is a string, it is treated as a string and converted to its representation in UTF8 bytes."},{"link":"/v5/api/signer/#Signer--signing-methods","text":"If and only if a message is a Bytes will it be treated as binary data."},{"link":"/v5/api/signer/#Signer--signing-methods","text":"For example, the string \"0x1234\" is 6 characters long (and in this case 6 bytes long)."},{"link":"/v5/api/signer/#Signer--signing-methods","text":"This is not equivalent to the array [ 0x12, 0x34 ], which is 2 bytes long."},{"link":"/v5/api/signer/#Signer--signing-methods","text":"A common case is to sign a hash."},{"link":"/v5/api/signer/#Signer--signing-methods","text":"In this case, if the hash is a string, it must be converted to an array first, using the arrayify utility function."}]},{"title":"Signers -- Signer -- signer.signTransaction( transactionRequest ) => Promise< string< DataHexString > >","blocks":[{"link":"/v5/api/signer/#Signer-signTransaction","text":"Returns a Promise which resolves to the signed transaction of the transactionRequest."},{"link":"/v5/api/signer/#Signer-signTransaction","text":"This method does not populate any missing fields."},{"link":"/v5/api/signer/#Signer-signTransaction","text":"Sub-classes must implement this, however they may throw if signing a transaction is not supported, which is common for security reasons in many clients."}]},{"title":"Signers -- Signer -- signer.sendTransaction( transactionRequest ) => Promise< TransactionResponse >","blocks":[{"link":"/v5/api/signer/#Signer-sendTransaction","text":"This method populates the transactionRequest with missing fields, using populateTransaction and returns a Promise which resolves to the transaction."},{"link":"/v5/api/signer/#Signer-sendTransaction","text":"Sub-classes must implement this, however they may throw if sending a transaction is not supported, such as the VoidSigner or if the Wallet is offline and not connected to a Provider."}]},{"title":"Signers -- Signer -- signer._signTypedData( domain , types , value ) => Promise< string< RawSignature > >","blocks":[{"link":"/v5/api/signer/#Signer-signTypedData","text":"Signs the typed data value with types data structure for domain using the EIP-712 specification."}]},{"title":"Signers -- Signer -- Experimental feature (this method name will change)","blocks":[{"link":"/v5/api/signer/#Signer--signing-methods","text":"This is still an experimental feature."},{"link":"/v5/api/signer/#Signer--signing-methods","text":"If using it, please specify the exact version of ethers you are using (e.g."},{"link":"/v5/api/signer/#Signer--signing-methods","text":"spcify \"5.0.18\", not \"^5.0.18\") as the method name will be renamed from _signTypedData to signTypedData once it has been used in the field a bit."}]},{"title":"Signers -- Signer -- Sub-Classes","blocks":[{"link":"/v5/api/signer/#Signer--subclassing","text":"It is very important that all important properties of a Signer are immutable."},{"link":"/v5/api/signer/#Signer--subclassing","text":"Since Ethereum is very asynchronous and deals with critical data (such as ether and other potentially valuable crypto assets), keeping properties such as the provider and address static throughout the life-cycle of the Signer helps prevent serious issues and many other classes and libraries make this assumption."},{"link":"/v5/api/signer/#Signer--subclassing","text":"A sub-class must extend Signer and must call super()."}]},{"title":"Signers -- Signer -- signer.checkTransaction( transactionRequest ) => TransactionRequest","blocks":[{"link":"/v5/api/signer/#Signer-checkTransaction","text":"This is generally not required to be overridden, but may be needed to provide custom behaviour in sub-classes."},{"link":"/v5/api/signer/#Signer-checkTransaction","text":"This should return a copy of the transactionRequest, with any properties needed by call, estimateGas and populateTransaction (which is used by sendTransaction)."},{"link":"/v5/api/signer/#Signer-checkTransaction","text":"It should also throw an error if any unknown key is specified."},{"link":"/v5/api/signer/#Signer-checkTransaction","text":"The default implementation checks only if valid TransactionRequest properties exist and adds from to the transaction if it does not exist."},{"link":"/v5/api/signer/#Signer-checkTransaction","text":"If there is a from field it must be verified to be equal to the Signer's address."}]},{"title":"Signers -- Signer -- signer.populateTransaction( transactionRequest ) => Promise< TransactionRequest >","blocks":[{"link":"/v5/api/signer/#Signer-populateTransaction","text":"This is generally not required to be overridden, but may be needed to provide custom behaviour in sub-classes."},{"link":"/v5/api/signer/#Signer-populateTransaction","text":"This should return a copy of transactionRequest, follow the same procedure as checkTransaction and fill in any properties required for sending a transaction."},{"link":"/v5/api/signer/#Signer-populateTransaction","text":"The result should have all promises resolved; if needed the resolveProperties utility function can be used for this."},{"link":"/v5/api/signer/#Signer-populateTransaction","text":"The default implementation calls checkTransaction and resolves to if it is an ENS name, adds gasPrice, nonce, gasLimit and chainId based on the related operations on Signer."}]},{"title":"Signers -- Wallet","blocks":[{"link":"/v5/api/signer/#Wallet","text":"The Wallet class inherits Signer and can sign transactions and messages using a private key as a standard Externally Owned Account (EOA)."}]},{"title":"Signers -- Wallet -- new ethers.Wallet( privateKey [ , provider ] )","blocks":[{"link":"/v5/api/signer/#Wallet-constructor","text":"Create a new Wallet instance for privateKey and optionally connected to the provider."}]},{"title":"Signers -- Wallet -- ethers.Wallet.createRandom( [ options = {} ] ) => Wallet","blocks":[{"link":"/v5/api/signer/#Wallet-createRandom","text":"Returns a new Wallet with a random private key, generated from cryptographically secure entropy sources."},{"link":"/v5/api/signer/#Wallet-createRandom","text":"If the current environment does not have a secure entropy source, an error is thrown."},{"link":"/v5/api/signer/#Wallet-createRandom","text":"Wallets created using this method will have a mnemonic."}]},{"title":"Signers -- Wallet -- ethers.Wallet.fromEncryptedJson( json , password [ , progress ] ) => Promise< Wallet >","blocks":[{"link":"/v5/api/signer/#Wallet-fromEncryptedJson","text":"Create an instance from an encrypted JSON wallet."},{"link":"/v5/api/signer/#Wallet-fromEncryptedJson","text":"If progress is provided it will be called during decryption with a value between 0 and 1 indicating the progress towards completion."}]},{"title":"Signers -- Wallet -- ethers.Wallet.fromEncryptedJsonSync( json , password ) => Wallet","blocks":[{"link":"/v5/api/signer/#Wallet-fromEncryptedJsonSync","text":"Create an instance from an encrypted JSON wallet."},{"link":"/v5/api/signer/#Wallet-fromEncryptedJsonSync","text":"This operation will operate synchronously which will lock up the user interface, possibly for a non-trivial duration."},{"link":"/v5/api/signer/#Wallet-fromEncryptedJsonSync","text":"Most applications should use the asynchronous fromEncryptedJson instead."}]},{"title":"Signers -- Wallet -- ethers.Wallet.fromMnemonic( mnemonic [ , path , [ wordlist ] ] ) => Wallet","blocks":[{"link":"/v5/api/signer/#Wallet.fromMnemonic","text":"Create an instance from a mnemonic phrase."},{"link":"/v5/api/signer/#Wallet.fromMnemonic","text":"If path is not specified, the Ethereum default path is used (i.e."},{"link":"/v5/api/signer/#Wallet.fromMnemonic","text":"m/44'/60'/0'/0/0)."},{"link":"/v5/api/signer/#Wallet.fromMnemonic","text":"If wordlist is not specified, the English Wordlist is used."}]},{"title":"Signers -- Wallet -- wallet.address => string< Address >","blocks":[{"link":"/v5/api/signer/#Wallet--properties","text":"The address for the account this Wallet represents."}]},{"title":"Signers -- Wallet -- wallet.provider => Provider","blocks":[{"link":"/v5/api/signer/#Wallet--properties","text":"The provider this wallet is connected to, which will be used for any Blockchain Methods methods."},{"link":"/v5/api/signer/#Wallet--properties","text":"This can be null."}]},{"title":"Signers -- Wallet -- Note","blocks":[{"link":"/v5/api/signer/#Wallet--properties","text":"A Wallet instance is immutable, so if you wish to change the Provider, you may use the connect method to create a new instance connected to the desired provider."}]},{"title":"Signers -- Wallet -- wallet.publicKey => string< DataHexString< 65 > >","blocks":[{"link":"/v5/api/signer/#Wallet--properties","text":"The uncompressed public key for this Wallet represents."}]},{"title":"Signers -- Wallet -- wallet.encrypt( password , [ options = {} , [ progress ] ] ) => Promise< string >","blocks":[{"link":"/v5/api/signer/#Wallet-encrypt","text":"Encrypt the wallet using password returning a Promise which resolves to a JSON wallet."},{"link":"/v5/api/signer/#Wallet-encrypt","text":"If progress is provided it will be called during decryption with a value between 0 and 1 indicating the progress towards completion."}]},{"title":"Signers -- VoidSigner","blocks":[{"link":"/v5/api/signer/#VoidSigner","text":"A VoidSigner is a simple Signer which cannot sign."},{"link":"/v5/api/signer/#VoidSigner","text":"It is useful as a read-only signer, when an API requires a Signer as a parameter, but it is known only read-only operations will be carried."},{"link":"/v5/api/signer/#VoidSigner","text":"For example, the call operation will automatically have the provided address passed along during the execution."}]},{"title":"Signers -- VoidSigner -- new ethers.VoidSigner( address [ , provider ] ) => VoidSigner","blocks":[{"link":"/v5/api/signer/#VoidSigner","text":"Create a new instance of a VoidSigner for address."}]},{"title":"Signers -- VoidSigner -- voidSigner.address => string< Address >","blocks":[{"link":"/v5/api/signer/#VoidSigner","text":"The address of this VoidSigner."}]},{"title":"Signers -- ExternallyOwnedAccount","blocks":[{"link":"/v5/api/signer/#ExternallyOwnedAccount","text":"This is an interface which contains a minimal set of properties required for Externally Owned Accounts which can have certain operations performed, such as encoding as a JSON wallet."}]},{"title":"Signers -- ExternallyOwnedAccount -- eoa.address => string< Address >","blocks":[{"link":"/v5/api/signer/#ExternallyOwnedAccount","text":"The Address of this EOA."}]},{"title":"Signers -- ExternallyOwnedAccount -- eoa.privateKey => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/signer/#ExternallyOwnedAccount","text":"The privateKey of this EOA."}]},{"title":"Signers -- ExternallyOwnedAccount -- eoa.mnemonic => Mnemonic","blocks":[{"link":"/v5/api/signer/#ExternallyOwnedAccount","text":"Optional."},{"link":"/v5/api/signer/#ExternallyOwnedAccount","text":"The account HD mnemonic, if it has one and can be determined."},{"link":"/v5/api/signer/#ExternallyOwnedAccount","text":"Some sources do not encode the mnemonic, such as HD extended keys."}]},{"title":"AbiCoder","blocks":[{"link":"/v5/api/utils/abi/coder/#AbiCoder","text":"The AbiCoder is a collection of Coders which can be used to encode and decode the binary data formats used to interoperate between the EVM and higher level libraries."},{"link":"/v5/api/utils/abi/coder/#AbiCoder","text":"Most developers will never need to use this class directly, since the Interface class greatly simplifies these operations."}]},{"title":"AbiCoder -- Creating Instance","blocks":[{"link":"/v5/api/utils/abi/coder/#AbiCoder--creating","text":"For the most part, there should never be a need to manually create an instance of an AbiCoder, since one is created with the default coercion function when the library is loaded which can be used universally."},{"link":"/v5/api/utils/abi/coder/#AbiCoder--creating","text":"This is likely only needed by those with specific needs to override how values are coerced after they are decoded from their binary format."}]},{"title":"AbiCoder -- Creating Instance -- new ethers.utils.AbiCoder( [ coerceFunc ] )","blocks":[{"link":"/v5/api/utils/abi/coder/#AbiCoder--creating","text":"Create a new AbiCoder instance, which will call the coerceFunc on every decode, where the result of the call will be used in the Result."},{"link":"/v5/api/utils/abi/coder/#AbiCoder--creating","text":"The function signature is `(type, value)`, where the type is the string describing the type and the value is the processed value from the underlying Coder."},{"link":"/v5/api/utils/abi/coder/#AbiCoder--creating","text":"If the callback throws, the Result will contain a property that when accessed will throw, allowing for higher level libraries to recover from data errors."}]},{"title":"AbiCoder -- Creating Instance -- ethers.utils.defaultAbiCoder => AbiCoder","blocks":[{"link":"/v5/api/utils/abi/coder/#AbiCoder--creating","text":"An AbiCoder created when the library is imported which is used by the Interface."}]},{"title":"AbiCoder -- Coding Methods -- abiCoder.encode( types , values ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/abi/coder/#AbiCoder-encode","text":"Encode the array values according to the array of types, each of which may be a string or a ParamType."}]},{"title":"AbiCoder -- Coding Methods -- abiCoder.decode( types , data ) => Result","blocks":[{"link":"/v5/api/utils/abi/coder/#AbiCoder-decode","text":"Decode the data according to the array of types, each of which may be a string or ParamType."}]},{"title":"ABI Formats","blocks":[{"link":"/v5/api/utils/abi/formats/#abi-formats","text":"@TODO: Expand this section."}]},{"title":"ABI Formats -- Human-Readable ABI","blocks":[{"link":"/v5/api/utils/abi/formats/#abi-formats--human-readable-abi","text":"See Human-Readable Abi."}]},{"title":"ABI Formats -- Solidity JSON ABI","blocks":[{"link":"/v5/api/utils/abi/formats/#abi-formats--solidity","text":"See Solidity compiler."}]},{"title":"Fragments","blocks":[{"link":"/v5/api/utils/abi/fragments/#fragments","text":"Explain an ABI."}]},{"title":"Fragments -- Formats -- JSON String ABI (Solidity Output JSON)","blocks":[{"link":"/v5/api/utils/abi/fragments/","text":"The JSON ABI Format is the format that is output from the Solidity compiler."},{"link":"/v5/api/utils/abi/fragments/","text":"A JSON serialized object is always a string, which represents an Array of Objects, where each Object has various properties describing the Fragment of the ABI."},{"link":"/v5/api/utils/abi/fragments/","text":"The deserialized JSON string (which is a normal JavaScript Object) may also be passed into any function which accepts a JSON String ABI."}]},{"title":"Fragments -- Formats -- Humanb-Readable ABI","blocks":[{"link":"/v5/api/utils/abi/fragments/","text":"The Human-Readable ABI was @TODO."},{"link":"/v5/api/utils/abi/fragments/","text":"article."}]},{"title":"Fragments -- Formats -- Output Formats","blocks":[{"link":"/v5/api/utils/abi/fragments/#fragments--output-formats","text":"Each Fragment and ParamType may be output using its format method."}]},{"title":"Fragments -- Formats -- ethers.utils.FragmentTypes.full => string","blocks":[{"link":"/v5/api/utils/abi/fragments/#fragments--output-formats","text":"This is a full human-readable string, including all parameter names, any optional modifiers (e.g."},{"link":"/v5/api/utils/abi/fragments/#fragments--output-formats","text":"indexed, public, etc) and white-space to aid in human readability."}]},{"title":"Fragments -- Formats -- ethers.utils.FragmentTypes.minimal => string","blocks":[{"link":"/v5/api/utils/abi/fragments/#fragments--output-formats","text":"This is similar to full, except with no unnecessary whitespace or parameter names."},{"link":"/v5/api/utils/abi/fragments/#fragments--output-formats","text":"This is useful for storing a minimal string which can still fully reconstruct the original Fragment using Fragment . from."}]},{"title":"Fragments -- Formats -- ethers.utils.FragmentTypes.json => string","blocks":[{"link":"/v5/api/utils/abi/fragments/#fragments--output-formats","text":"This returns a JavaScript Object which is safe to call JSON.stringify on to create a JSON string."}]},{"title":"Fragments -- Formats -- ethers.utils.FragmentTypes.sighash => string","blocks":[{"link":"/v5/api/utils/abi/fragments/#fragments--output-formats","text":"This is a minimal output format, which is used by Solidity when computing a signature hash or an event topic hash."}]},{"title":"Fragments -- Formats -- Note","blocks":[{"link":"/v5/api/utils/abi/fragments/#fragments--output-formats","text":"The sighash format is insufficient to re-create the original Fragment, since it discards modifiers such as indexed, anonymous, stateMutability, etc."}]},{"title":"Fragments -- Fragment","blocks":[{"link":"/v5/api/utils/abi/fragments/#Fragment","text":"An ABI is a collection of Fragments, where each fragment specifies:."},{"link":"/v5/api/utils/abi/fragments/#Fragment","text":"An Event A Function A Constructor."}]},{"title":"Fragments -- Fragment -- fragment.name => string","blocks":[{"link":"/v5/api/utils/abi/fragments/","text":"This is the name of the Event or Function."},{"link":"/v5/api/utils/abi/fragments/","text":"This will be null for a ConstructorFragment."}]},{"title":"Fragments -- Fragment -- fragment.type => string","blocks":[{"link":"/v5/api/utils/abi/fragments/","text":"This is a string which indicates the type of the Fragment."},{"link":"/v5/api/utils/abi/fragments/","text":"This will be one of:."},{"link":"/v5/api/utils/abi/fragments/","text":"constructor event function."}]},{"title":"Fragments -- Fragment -- fragment.inputs => Array< ParamType >","blocks":[{"link":"/v5/api/utils/abi/fragments/","text":"This is an array of each ParamType for the input parameters to the Constructor, Event of Function."}]},{"title":"Fragments -- Fragment -- ethers.utils.Fragment.from( objectOrString ) => Fragment","blocks":[{"link":"/v5/api/utils/abi/fragments/#Fragment-from","text":"Returns a."}]},{"title":"Fragments -- Fragment -- ethers.utils.Fragment.isFragment( object ) => boolean","blocks":[{"link":"/v5/api/utils/abi/fragments/#Fragment-isFragment","text":"Tra lal al."}]},{"title":"Fragments -- ConstructorFragment -- fragment.gas => BigNumber","blocks":[{"link":"/v5/api/utils/abi/fragments/","text":"This is the gas limit that should be used during deployment."},{"link":"/v5/api/utils/abi/fragments/","text":"It may be null."}]},{"title":"Fragments -- ConstructorFragment -- fragment.payable => boolean","blocks":[{"link":"/v5/api/utils/abi/fragments/","text":"This is whether the constructor may receive ether during deployment as an endowment (i.e."},{"link":"/v5/api/utils/abi/fragments/","text":"msg.value != 0)."}]},{"title":"Fragments -- ConstructorFragment -- fragment.stateMutability => string","blocks":[{"link":"/v5/api/utils/abi/fragments/","text":"This is the state mutability of the constructor."},{"link":"/v5/api/utils/abi/fragments/","text":"It can be any of:."},{"link":"/v5/api/utils/abi/fragments/","text":"nonpayable payable."}]},{"title":"Fragments -- ConstructorFragment -- ethers.utils.ConstructorFragment.from( objectOrString ) => ConstructorFragment","blocks":[{"link":"/v5/api/utils/abi/fragments/#ConstructorFragment-from","text":"Tra la la..."}]},{"title":"Fragments -- ConstructorFragment -- ethers.utils.ConstructorFragment.isConstructorFragment( object ) => boolean","blocks":[{"link":"/v5/api/utils/abi/fragments/#ConstructorFragment-isConstructorFragment","text":"Tra lal al."}]},{"title":"Fragments -- EventFragment -- fragment.anonymous => boolean","blocks":[{"link":"/v5/api/utils/abi/fragments/","text":"This is whether the event is anonymous."},{"link":"/v5/api/utils/abi/fragments/","text":"An anonymous Event does not inject its topic hash as topic0 when creating a log."}]},{"title":"Fragments -- EventFragment -- ethers.utils.EventFragment.from( objectOrString ) => EventFragment","blocks":[{"link":"/v5/api/utils/abi/fragments/#EventFragment-from","text":"Tra la la..."}]},{"title":"Fragments -- EventFragment -- ethers.utils.EventFragment.isEventFragment( object ) => boolean","blocks":[{"link":"/v5/api/utils/abi/fragments/#EventFragment-isEventFragment","text":"Tra lal al."}]},{"title":"Fragments -- FunctionFragment -- fragment.constant => boolean","blocks":[{"link":"/v5/api/utils/abi/fragments/","text":"This is whether the function is constant (i.e."},{"link":"/v5/api/utils/abi/fragments/","text":"does not change state)."},{"link":"/v5/api/utils/abi/fragments/","text":"This is true if the state mutability is pure or view."}]},{"title":"Fragments -- FunctionFragment -- fragment.stateMutability => string","blocks":[{"link":"/v5/api/utils/abi/fragments/","text":"This is the state mutability of the constructor."},{"link":"/v5/api/utils/abi/fragments/","text":"It can be any of:."},{"link":"/v5/api/utils/abi/fragments/","text":"nonpayable payable pure view."}]},{"title":"Fragments -- FunctionFragment -- fragment.outputs => Array< ParamType >","blocks":[{"link":"/v5/api/utils/abi/fragments/","text":"A list of the Function output parameters."}]},{"title":"Fragments -- FunctionFragment -- ethers.utils.FunctionFragment.from( objectOrString ) => FunctionFragment","blocks":[{"link":"/v5/api/utils/abi/fragments/#FunctionFragment-from","text":"Tra la la..."}]},{"title":"Fragments -- FunctionFragment -- ethers.utils.FunctionFragment.isFunctionFragment( object ) => boolean","blocks":[{"link":"/v5/api/utils/abi/fragments/#FunctionFragment-isFunctionFragment","text":"Tra lal al."}]},{"title":"Fragments -- ParamType","blocks":[{"link":"/v5/api/utils/abi/fragments/#ParamType","text":"The following examples will represent the Solidity parameter:."},{"link":"/v5/api/utils/abi/fragments/#ParamType","text":"string foobar."}]},{"title":"Fragments -- ParamType -- paramType.name => string","blocks":[{"link":"/v5/api/utils/abi/fragments/#ParamType-name","text":"The local parameter name."},{"link":"/v5/api/utils/abi/fragments/#ParamType-name","text":"This may be null for unnamed parameters."},{"link":"/v5/api/utils/abi/fragments/#ParamType-name","text":"For example, the parameter definition string foobar would be foobar."}]},{"title":"Fragments -- ParamType -- paramType.type => string","blocks":[{"link":"/v5/api/utils/abi/fragments/#ParamType-type","text":"The full type of the parameter, including tuple and array symbols."},{"link":"/v5/api/utils/abi/fragments/#ParamType-type","text":"This may be null for unnamed parameters."},{"link":"/v5/api/utils/abi/fragments/#ParamType-type","text":"For the above example, this would be foobar."}]},{"title":"Fragments -- ParamType -- paramType.baseType => string","blocks":[{"link":"/v5/api/utils/abi/fragments/#ParamType-baseType","text":"The base type of the parameter."},{"link":"/v5/api/utils/abi/fragments/#ParamType-baseType","text":"For primitive types (e.g."},{"link":"/v5/api/utils/abi/fragments/#ParamType-baseType","text":"address, uint256, etc) this is equal to type."},{"link":"/v5/api/utils/abi/fragments/#ParamType-baseType","text":"For arrays, it will be the string array and for a tuple, it will be the string tuple."}]},{"title":"Fragments -- ParamType -- paramType.indexed => boolean","blocks":[{"link":"/v5/api/utils/abi/fragments/#ParamType-indexed","text":"Whether the parameter has been marked as indexed."},{"link":"/v5/api/utils/abi/fragments/#ParamType-indexed","text":"This only applies to parameters which are part of an EventFragment."}]},{"title":"Fragments -- ParamType -- paramType.arrayChildren => ParamType","blocks":[{"link":"/v5/api/utils/abi/fragments/#ParamType-arrayChildren","text":"The type of children of the array."},{"link":"/v5/api/utils/abi/fragments/#ParamType-arrayChildren","text":"This is null for any parameter which is not an array."}]},{"title":"Fragments -- ParamType -- paramType.arrayLength => number","blocks":[{"link":"/v5/api/utils/abi/fragments/#ParamType-arrayLength","text":"The length of the array, or -1 for dynamic-length arrays."},{"link":"/v5/api/utils/abi/fragments/#ParamType-arrayLength","text":"This is null for parameters which are not arrays."}]},{"title":"Fragments -- ParamType -- paramType.components => Array< ParamType >","blocks":[{"link":"/v5/api/utils/abi/fragments/#ParamType-components","text":"The components of a tuple."},{"link":"/v5/api/utils/abi/fragments/#ParamType-components","text":"This is null for non-tuple parameters."}]},{"title":"Fragments -- ParamType -- Methods","blocks":[{"link":"/v5/api/utils/abi/fragments/#ParamType","text":"Tra la la..."}]},{"title":"Fragments -- ParamType -- paramType.format( [ outputType = sighash ] )","blocks":[{"link":"/v5/api/utils/abi/fragments/","text":"Tra la la..."}]},{"title":"Fragments -- ParamType -- ethers.utils.ParamType.from( objectOrString ) => ParamType","blocks":[{"link":"/v5/api/utils/abi/fragments/#ParamType-from","text":"Tra la la..."}]},{"title":"Fragments -- ParamType -- ethers.utils.ParamType.isParamType( object ) => boolean","blocks":[{"link":"/v5/api/utils/abi/fragments/#ParamType-isParamType","text":"Tra la la..."}]},{"title":"Application Binary Interface","blocks":[{"link":"/v5/api/utils/abi/","text":"An Application Binary Interface (ABI) is a collection of Fragments which specify how to interact with various components of a Contract."},{"link":"/v5/api/utils/abi/","text":"An Interface helps organize Fragments by type as well as provides the functionality required to encode, decode and work with each component."},{"link":"/v5/api/utils/abi/","text":"Most developers will not require this low-level access to encoding and decoding the binary data on the network and will most likely use a Contract which provides a more convenient interface."},{"link":"/v5/api/utils/abi/","text":"Some framework, tool developers or developers using advanced techniques may find these classes and utilities useful."}]},{"title":"Interface","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface","text":"The Interface Class abstracts the encoding and decoding required to interact with contracts on the Ethereum network."},{"link":"/v5/api/utils/abi/interface/#Interface","text":"Many of the standards organically evolved along side the Solidity language, which other languages have adopted to remain compatible with existing deployed contracts."},{"link":"/v5/api/utils/abi/interface/#Interface","text":"The EVM itself does not understand what the ABI is."},{"link":"/v5/api/utils/abi/interface/#Interface","text":"It is simply an agreed upon set of formats to encode various types of data which each contract can expect so they can interoperate with each other."}]},{"title":"Interface -- Creating Instances -- new ethers.utils.Interface( abi )","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--creating","text":"Create a new Interface from a JSON string or object representing abi."},{"link":"/v5/api/utils/abi/interface/#Interface--creating","text":"The abi may be a JSON string or the parsed Object (using JSON.parse) which is emitted by the Solidity compiler (or compatible languages)."},{"link":"/v5/api/utils/abi/interface/#Interface--creating","text":"The abi may also be a Human-Readable Abi, which is a format the Ethers created to simplify manually typing the ABI into the source and so that a Contract ABI can also be referenced easily within the same source file."}]},{"title":"Interface -- Properties -- interface.fragments => Array< Fragment >","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--properties","text":"All the Fragments in the interface."}]},{"title":"Interface -- Properties -- interface.events => Array< EventFragment >","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--properties","text":"All the Event Fragments in the interface."}]},{"title":"Interface -- Properties -- interface.functions => Array< FunctionFragment >","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--properties","text":"All the Function Fragments in the interface."}]},{"title":"Interface -- Properties -- interface.deploy => ConstructorFragment","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--properties","text":"The Constructor Fragments for the interface."}]},{"title":"Interface -- Formatting -- interface.format( [ format ] ) => string | Array< string >","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--formatting","text":"Return the formatted Interface."},{"link":"/v5/api/utils/abi/interface/#Interface--formatting","text":"If the format type is json a single string is returned, otherwise an Array of the human-readable strings is returned."}]},{"title":"Interface -- Fragment Access -- interface.getFunction( fragment ) => FunctionFragment","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--fragments","text":"Returns the FunctionFragment for fragment (see Specifying Fragments)."}]},{"title":"Interface -- Fragment Access -- interface.getEvent( fragment ) => EventFragment","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--fragments","text":"Returns the EventFragment for fragment (see Specifying Fragments)."}]},{"title":"Interface -- Signature and Topic Hashes -- interface.getSighash( fragment ) => string< DataHexString< 4 > >","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--selectors","text":"Return the sighash (or Function Selector) for fragment (see Specifying Fragments)."}]},{"title":"Interface -- Signature and Topic Hashes -- interface.getEventTopic( fragment ) => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--selectors","text":"Return the topic hash for fragment (see Specifying Fragments)."}]},{"title":"Interface -- Encoding Data -- interface.encodeDeploy( [ values ] ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--encoding","text":"Return the encoded deployment data, which can be concatenated to the deployment bytecode of a contract to pass values into the contract constructor."}]},{"title":"Interface -- Encoding Data -- interface.encodeFilterTopics( fragment [ , values ] ) => Array< topic | Array< topic > >","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--encoding","text":"Returns the encoded topic filter, which can be passed to getLogs for fragment (see Specifying Fragments) for the given values."},{"link":"/v5/api/utils/abi/interface/#Interface--encoding","text":"Each topic is a 32 byte (64 nibble) DataHexString."}]},{"title":"Interface -- Encoding Data -- interface.encodeFunctionData( fragment [ , values ] ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--encoding","text":"Returns the encoded data, which can be used as the data for a transaction for fragment (see Specifying Fragments) for the given values."}]},{"title":"Interface -- Encoding Data -- interface.encodeFunctionResult( fragment [ , values ] ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--encoding","text":"Returns the encoded result, which would normally be the response from a call for fragment (see Specifying Fragments) for the given values."},{"link":"/v5/api/utils/abi/interface/#Interface--encoding","text":"Most developers will not need this method, but may be useful for authors of a mock blockchain."}]},{"title":"Interface -- Decoding Data -- interface.decodeEventLog( fragment , data [ , topics ] ) => Result","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--decoding","text":"Returns the decoded event values from an event log for fragment (see Specifying Fragments) for the given data with the optional topics."},{"link":"/v5/api/utils/abi/interface/#Interface--decoding","text":"If topics is not specified, placeholders will be inserted into the result."}]},{"title":"Interface -- Decoding Data -- interface.decodeFunctionData( fragment , data ) => Result","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--decoding","text":"Returns the decoded values from transaction data for fragment (see Specifying Fragments) for the given data."},{"link":"/v5/api/utils/abi/interface/#Interface--decoding","text":"Most developers will not need this method, but may be useful for debugging or inspecting transactions."}]},{"title":"Interface -- Decoding Data -- interface.decodeFunctionResult( fragment , data ) => Result","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--decoding","text":"Returns the decoded values from the result of a call for fragment (see Specifying Fragments) for the given data."}]},{"title":"Interface -- Parsing","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--parsing","text":"The functions are generally the most useful for most developers."},{"link":"/v5/api/utils/abi/interface/#Interface--parsing","text":"They will automatically search the ABI for a matching Event or Function and decode the components as a fully specified description."}]},{"title":"Interface -- Parsing -- interface.parseLog( log ) => LogDescription","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--parsing","text":"Search the event that matches the log topic hash and parse the values the log represents."}]},{"title":"Interface -- Parsing -- interface.parseTransaction( transaction ) => TransactionDescription","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--parsing","text":"Search for the function that matches the transaction data sighash and parse the transaction properties."}]},{"title":"Interface -- Types -- Result","blocks":[{"link":"/v5/api/utils/abi/interface/#Result","text":"A Result is an array, so each value can be accessed as a positional argument."},{"link":"/v5/api/utils/abi/interface/#Result","text":"Additionally, if values are named, the identical object as its positional value can be accessed by its name."},{"link":"/v5/api/utils/abi/interface/#Result","text":"The name length is however reserved as it is part of the Array, so any named value for this key is renamed to _length."},{"link":"/v5/api/utils/abi/interface/#Result","text":"If there is a name collision, only the first is available by its key."}]},{"title":"Interface -- Types -- logDescription.args => Result","blocks":[{"link":"/v5/api/utils/abi/interface/#LogDescription","text":"The values of the input parameters of the event."}]},{"title":"Interface -- Types -- logDescription.eventFragment => EventFragment","blocks":[{"link":"/v5/api/utils/abi/interface/#LogDescription","text":"The EventFragment which matches the topic in the Log."}]},{"title":"Interface -- Types -- logDescription.name => string","blocks":[{"link":"/v5/api/utils/abi/interface/#LogDescription","text":"The event name."},{"link":"/v5/api/utils/abi/interface/#LogDescription","text":"(e.g."},{"link":"/v5/api/utils/abi/interface/#LogDescription","text":"Transfer)."}]},{"title":"Interface -- Types -- logDescription.signature => string","blocks":[{"link":"/v5/api/utils/abi/interface/#LogDescription","text":"The event signature."},{"link":"/v5/api/utils/abi/interface/#LogDescription","text":"(e.g."},{"link":"/v5/api/utils/abi/interface/#LogDescription","text":"Transfer(address,address,uint256))."}]},{"title":"Interface -- Types -- logDescription.topic => string","blocks":[{"link":"/v5/api/utils/abi/interface/#LogDescription","text":"The topic hash."}]},{"title":"Interface -- Types -- transactionDescription.args => Result","blocks":[{"link":"/v5/api/utils/abi/interface/#TransactionDescription","text":"The decoded values from the transaction data which were passed as the input parameters."}]},{"title":"Interface -- Types -- transactionDescription.functionFragment => FunctionFragment","blocks":[{"link":"/v5/api/utils/abi/interface/#TransactionDescription","text":"The FunctionFragment which matches the sighash in the transaction data."}]},{"title":"Interface -- Types -- transactionDescription.name => string","blocks":[{"link":"/v5/api/utils/abi/interface/#TransactionDescription","text":"The name of the function."},{"link":"/v5/api/utils/abi/interface/#TransactionDescription","text":"(e.g."},{"link":"/v5/api/utils/abi/interface/#TransactionDescription","text":"transfer)."}]},{"title":"Interface -- Types -- transactionDescription.sighash => string","blocks":[{"link":"/v5/api/utils/abi/interface/#TransactionDescription","text":"The sighash (or function selector) that matched the transaction data."}]},{"title":"Interface -- Types -- transactionDescription.signature => string","blocks":[{"link":"/v5/api/utils/abi/interface/#TransactionDescription","text":"The signature of the function."},{"link":"/v5/api/utils/abi/interface/#TransactionDescription","text":"(e.g."},{"link":"/v5/api/utils/abi/interface/#TransactionDescription","text":"transfer(address,uint256))."}]},{"title":"Interface -- Types -- transactionDescription.value => BigNumber","blocks":[{"link":"/v5/api/utils/abi/interface/#TransactionDescription","text":"The value from the transaction."}]},{"title":"Interface -- Specifying Fragments","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--specifying-fragments","text":"When specifying a fragment to any of the functions in an Interface, any of the following may be used:."},{"link":"/v5/api/utils/abi/interface/#Interface--specifying-fragments","text":"The name of the event or function, if it is unique and non-ambiguous within the ABI (e.g."},{"link":"/v5/api/utils/abi/interface/#Interface--specifying-fragments","text":"transfer) The signature of the event or function."},{"link":"/v5/api/utils/abi/interface/#Interface--specifying-fragments","text":"The signature is normalized, so, for example, uint and uint256 are equivalent (e.g."},{"link":"/v5/api/utils/abi/interface/#Interface--specifying-fragments","text":"transfer(address, uint)) The sighash or topichash of the function."},{"link":"/v5/api/utils/abi/interface/#Interface--specifying-fragments","text":"The sighash is often referred to the function selector in Solidity (e.g."},{"link":"/v5/api/utils/abi/interface/#Interface--specifying-fragments","text":"0xa9059cbb) A Fragment."}]},{"title":"Addresses","blocks":[{"link":"/v5/api/utils/address/#addresses","text":"Explain addresses,formats and checksumming here."},{"link":"/v5/api/utils/address/#addresses","text":"Also see: constants.AddressZero."}]},{"title":"Addresses -- Address Formats -- Address","blocks":[{"link":"/v5/api/utils/address/#address","text":"An Address is a DataHexString of 20 bytes (40 nibbles), with optional mixed case."},{"link":"/v5/api/utils/address/#address","text":"If the case is mixed, it is a Checksum Address, which uses a specific pattern of uppercase and lowercase letters within a given address to reduce the risk of errors introduced from typing an address or cut and paste issues."},{"link":"/v5/api/utils/address/#address","text":"All functions that return an Address will return a Checksum Address."}]},{"title":"Addresses -- Address Formats -- ICAP Address","blocks":[{"link":"/v5/api/utils/address/#address-icap","text":"The ICAP Address Format was an early attempt to introduce a checksum into Ethereum addresses using the popular banking industry's IBAN format with the country code specified as XE."},{"link":"/v5/api/utils/address/#address-icap","text":"Due to the way IBAN encodes address, only addresses that fit into 30 base-36 characters are actually compatible, so the format was adapted to support 31 base-36 characters which is large enough for a full Ethereum address, however the preferred method was to select a private key whose address has a 0 as the first byte, which allows the address to be formatted as a fully compatibly standard IBAN address with 30 base-36 characters."},{"link":"/v5/api/utils/address/#address-icap","text":"In general this format is no longer widely supported anymore, however any function that accepts an address can receive an ICAP address, and it will be converted internally."},{"link":"/v5/api/utils/address/#address-icap","text":"To convert an address into the ICAP format, see getIcapAddress."}]},{"title":"Addresses -- Converting and Verifying -- ethers.utils.getAddress( address ) => string< Address >","blocks":[{"link":"/v5/api/utils/address/#utils-getAddress","text":"Returns address as a Checksum Address."},{"link":"/v5/api/utils/address/#utils-getAddress","text":"If address is an invalid 40-nibble HexString or if it contains mixed case and the checksum is invalid, an InvalidArgument Error is thrown."},{"link":"/v5/api/utils/address/#utils-getAddress","text":"The value of address may be any supported address format."}]},{"title":"Addresses -- Converting and Verifying -- ethers.utils.getIcapAddress( address ) => string< IcapAddress >","blocks":[{"link":"/v5/api/utils/address/#utils-getIcapAddress","text":"Returns address as an ICAP address."},{"link":"/v5/api/utils/address/#utils-getIcapAddress","text":"Supports the same restrictions as utils.getAddress."}]},{"title":"Addresses -- Converting and Verifying -- ethers.utils.isAddress( address ) => boolean","blocks":[{"link":"/v5/api/utils/address/#utils-isAddress","text":"Returns true if address is valid (in any supported format)."}]},{"title":"Addresses -- Derivation -- ethers.utils.computeAddress( publicOrPrivateKey ) => string< Address >","blocks":[{"link":"/v5/api/utils/address/#utils-computeAddress","text":"Returns the address for publicOrPrivateKey."},{"link":"/v5/api/utils/address/#utils-computeAddress","text":"A public key may be compressed or uncompressed, and a private key will be converted automatically to a public key for the derivation."}]},{"title":"Addresses -- Derivation -- ethers.utils.recoverAddress( digest , signature ) => string< Address >","blocks":[{"link":"/v5/api/utils/address/#utils-recoverAddress","text":"Use ECDSA Public Key Recovery to determine the address that signed digest to which generated signature."}]},{"title":"Addresses -- Contracts Addresses -- ethers.utils.getContractAddress( transaction ) => string< Address >","blocks":[{"link":"/v5/api/utils/address/#utils-getContractAddress","text":"Returns the contract address that would result if transaction was used to deploy a contract."}]},{"title":"Addresses -- Contracts Addresses -- ethers.utils.getCreate2Address( from , salt , initCodeHash ) => string< Address >","blocks":[{"link":"/v5/api/utils/address/#utils-getCreate2Address","text":"Returns the contract address that would result from the given CREATE2 call."}]},{"title":"BigNumber","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumber","text":"Many operations in Ethereum operation on numbers which are outside the range of safe values to use in JavaScript."},{"link":"/v5/api/utils/bignumber/#BigNumber","text":"A BigNumber is an object which safely allows mathematical operations on numbers of any magnitude."},{"link":"/v5/api/utils/bignumber/#BigNumber","text":"Most operations which need to return a value will return a BigNumber and parameters which accept values will generally accept them."}]},{"title":"BigNumber -- Types -- BigNumberish","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumberish","text":"Many functions and methods in this library take in values which can be non-ambiguously and safely converted to a BigNumber."},{"link":"/v5/api/utils/bignumber/#BigNumberish","text":"These values can be specified as:."}]},{"title":"BigNumber -- Types -- string","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumberish","text":"A HexString or a decimal string, either of which may be negative."}]},{"title":"BigNumber -- Types -- BytesLike","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumberish","text":"A BytesLike Object, such as an Array or Uint8Array."}]},{"title":"BigNumber -- Types -- BigNumber","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumberish","text":"An existing BigNumber instance."}]},{"title":"BigNumber -- Types -- number","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumberish","text":"A number that is within the safe range for JavaScript numbers."}]},{"title":"BigNumber -- Types -- BigInt","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumberish","text":"A JavaScript BigInt object, on environments that support BigInt."}]},{"title":"BigNumber -- Creating Instances","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumber--creating","text":"The constructor of BigNumber cannot be called directly."},{"link":"/v5/api/utils/bignumber/#BigNumber--creating","text":"Instead, Use the static BigNumber.from."}]},{"title":"BigNumber -- Creating Instances -- ethers.BigNumber.from( aBigNumberish ) => BigNumber","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumber--creating","text":"Returns an instance of a BigNumber for aBigNumberish."}]},{"title":"BigNumber -- Methods","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumber--methods","text":"The BigNumber class is immutable, so no operations can change the value it represents."}]},{"title":"BigNumber -- Methods -- BigNumber.add( otherValue ) => BigNumber","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns a BigNumber with the value of BigNumber + otherValue."}]},{"title":"BigNumber -- Methods -- BigNumber.sub( otherValue ) => BigNumber","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns a BigNumber with the value of BigNumber - otherValue."}]},{"title":"BigNumber -- Methods -- BigNumber.mul( otherValue ) => BigNumber","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns a BigNumber with the value of BigNumber × otherValue."}]},{"title":"BigNumber -- Methods -- BigNumber.div( divisor ) => BigNumber","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns a BigNumber with the value of BigNumber ÷ divisor."}]},{"title":"BigNumber -- Methods -- BigNumber.mod( divisor ) => BigNumber","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns a BigNumber with the value of the remainder of BigNumber ÷ divisor."}]},{"title":"BigNumber -- Methods -- BigNumber.pow( exponent ) => BigNumber","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns a BigNumber with the value of BigNumber to the power of exponent."}]},{"title":"BigNumber -- Methods -- BigNumber.abs( ) => BigNumber","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns a BigNumber with the absolute value of BigNumber."}]},{"title":"BigNumber -- Methods -- BigNumber.mask( bitcount ) => BigNumber","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns a BigNumber with the value of BigNumber with bits beyond the bitcount least significant bits set to zero."}]},{"title":"BigNumber -- Methods -- Two's Complement","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumber--methods","text":"Two's Complement is an elegant method used to encode and decode fixed-width signed values while efficiently preserving mathematical operations."},{"link":"/v5/api/utils/bignumber/#BigNumber--methods","text":"Most users will not need to interact with these."}]},{"title":"BigNumber -- Methods -- BigNumber.fromTwos( bitwidth ) => BigNumber","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns a BigNumber with the value of BigNumber converted from twos-complement with bitwidth."}]},{"title":"BigNumber -- Methods -- BigNumber.toTwos( bitwidth ) => BigNumber","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns a BigNumber with the value of BigNumber converted to twos-complement with bitwidth."}]},{"title":"BigNumber -- Methods -- BigNumber.eq( otherValue ) => boolean","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns true if and only if the value of BigNumber is equal to otherValue."}]},{"title":"BigNumber -- Methods -- BigNumber.lt( otherValue ) => boolean","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns true if and only if the value of BigNumber < otherValue."}]},{"title":"BigNumber -- Methods -- BigNumber.lte( otherValue ) => boolean","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns true if and only if the value of BigNumber ≤ otherValue."}]},{"title":"BigNumber -- Methods -- BigNumber.gt( otherValue ) => boolean","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns true if and only if the value of BigNumber > otherValue."}]},{"title":"BigNumber -- Methods -- BigNumber.gte( otherValue ) => boolean","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns true if and only if the value of BigNumber ≥ otherValue."}]},{"title":"BigNumber -- Methods -- BigNumber.isZero( ) => boolean","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns true if and only if the value of BigNumber is zero."}]},{"title":"BigNumber -- Methods -- BigNumber.toNumber( ) => number","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns the value of BigNumber as a JavaScript value."},{"link":"/v5/api/utils/bignumber/","text":"This will throw an error if the value is greater than or equal to Number.MAX_SAFE_INTEGER or less than or equal to Number.MIN_SAFE_INTEGER."}]},{"title":"BigNumber -- Methods -- BigNumber.toString( ) => string","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns the value of BigNumber as a base-10 string."}]},{"title":"BigNumber -- Methods -- BigNumber.toHexString( ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns the value of BigNumber as a base-16, 0x-prefixed DataHexString."}]},{"title":"BigNumber -- Methods -- ethers.BigNumber.isBigNumber( object ) => boolean","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns true if and only if the object is a BigNumber object."}]},{"title":"BigNumber -- Notes","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"This section is a for a couple of questions that come up frequently."}]},{"title":"BigNumber -- Notes -- Why can't I just use numbers?","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumber--notes-safenumbers","text":"The first problem many encounter when dealing with Ethereum is the concept of numbers."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes-safenumbers","text":"Most common currencies are broken down with very little granularity."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes-safenumbers","text":"For example, there are only 100 cents in a single dollar."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes-safenumbers","text":"However, there are 1018 wei in a single ether."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes-safenumbers","text":"JavaScript uses IEEE 754 double-precision binary floating point numbers to represent numeric values."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes-safenumbers","text":"As a result, there are holes in the integer set after 9,007,199,254,740,991; which is problematic for Ethereum because that is only around 0.009 ether (in wei), which means any value over that will begin to experience rounding errors."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes-safenumbers","text":"To demonstrate how this may be an issue in your code, consider:."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes-safenumbers","text":"To remedy this, all numbers (which can be large) are stored and manipulated as Big Numbers."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes-safenumbers","text":"The functions parseEther( etherString ) and formatEther( wei ) can be used to convert between string representations, which are displayed to or entered by the user and Big Number representations which can have mathematical operations handled safely."}]},{"title":"BigNumber -- Notes -- Why not BigNumber.js, BN.js, BigDecimal, etc?","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"Everyone has their own favourite Big Number library, and once someone has chosen one, it becomes part of their identity, like their editor, vi vs emacs."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"There are over 100 Big Number libraries on npm."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"One of the biggest differences between the Ethers BigNumber object and other libraries is that it is immutable, which is very important when dealing with the asynchronous nature of the blockchain."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"Capturing the value is not safe in async functions, so immutability protects us from easy to make mistakes, which is not possible on the low-level library's objects which supports myriad in-place operations."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"Second, the Ethers BigNumber provides all the functionality required internally and should generally be sufficient for most developers while not exposing some of the more advanced and rare functionality."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"So it will be easier to swap out the underlying library without impacting consumers."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"For example, if BN.js was exposed, someone may use the greatest-common-denominator functions, which would then be functionality the replacing library should also provide to ensure anyone depending on that functionality is not broken."}]},{"title":"BigNumber -- Notes -- Why BN.js??","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"The reason why BN.js is used internally as the big number is because that is the library used by elliptic."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"Therefore it must be included regardless, so we leverage that library rather than adding another Big Number library, which would mean two different libraries offering the same functionality."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"This has saved about 85kb (80% of this library size) of library size over other libraries which include separate Big Number libraries for various purposes."}]},{"title":"BigNumber -- Notes -- Allow us to set a global Big Number library?","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"Another comment that comes up frequently is the desire to specify a global user-defined Big Number library, which all functions would return."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"This becomes problematic since your code may live along side other libraries or code that use Ethers."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"In fact, even Ethers uses a lot of the public functions internally."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"If you, for example, used a library that used a.plus(b) instead of a.add(b), this would break Ethers when it tries to compute fees internally, and other libraries likely have similar logic."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"But, the BigNumber prototype is exposed, so you can always add a toMyCustomBigNumber() method to all BigNumber's globally which is safe."}]},{"title":"Byte Manipulation","blocks":[{"link":"/v5/api/utils/bytes/","text":"Tra la la..."}]},{"title":"Byte Manipulation -- Types -- Bytes","blocks":[{"link":"/v5/api/utils/bytes/#Bytes","text":"A Bytes is any object which is an Array or TypedArray with each value in the valid byte range (i.e."},{"link":"/v5/api/utils/bytes/#Bytes","text":"between 0 and 255 inclusive), or is an Object with a length property where each indexed property is in the valid byte range."}]},{"title":"Byte Manipulation -- Types -- BytesLike","blocks":[{"link":"/v5/api/utils/bytes/#BytesLike","text":"A BytesLike can be either a Bytes or a DataHexString."}]},{"title":"Byte Manipulation -- Types -- DataHexString","blocks":[{"link":"/v5/api/utils/bytes/#DataHexString","text":"A DataHexstring is identical to a HexString except that it has an even number of nibbles, and therefore is a valid representation of binary data as a string."}]},{"title":"Byte Manipulation -- Types -- HexString","blocks":[{"link":"/v5/api/utils/bytes/#HexString","text":"A Hexstring is a string which has a 0x prefix followed by any number of nibbles (i.e."},{"link":"/v5/api/utils/bytes/#HexString","text":"case-insensitive hexadecimal characters, 0-9 and a-f)."}]},{"title":"Byte Manipulation -- Types -- Signature","blocks":[{"link":"/v5/api/utils/bytes/#Signature","text":"r and s --- The x co-ordinate of r and the s value of the signature v --- The parity of the y co-ordinate of r _vs --- The compact representation of the s and v recoveryParam --- The normalized (i.e."},{"link":"/v5/api/utils/bytes/#Signature","text":"0 or 1) value of v."}]},{"title":"Byte Manipulation -- Types -- Raw Signature","blocks":[{"link":"/v5/api/utils/bytes/#signature-raw","text":"A Raw Signature is a common Signature format where the r, s and v are concatenated into a 65 byte (130 nibble) DataHexString."}]},{"title":"Byte Manipulation -- Types -- SignatureLike","blocks":[{"link":"/v5/api/utils/bytes/#SignatureLike","text":"A SignatureLike is similar to a Signature, except redundant properties may be omitted or it may be a Raw Signature."},{"link":"/v5/api/utils/bytes/#SignatureLike","text":"For example, if _vs is specified, s and v may be omitted."},{"link":"/v5/api/utils/bytes/#SignatureLike","text":"Likewise, if recoveryParam is provided, v may be omitted (as in these cases the missing values can be computed)."}]},{"title":"Byte Manipulation -- Inspection -- ethers.utils.isBytes( object ) => boolean","blocks":[{"link":"/v5/api/utils/bytes/#utils-isBytes","text":"Returns true if and only if object is a valid Bytes."}]},{"title":"Byte Manipulation -- Inspection -- ethers.utils.isBytesLike( object ) => boolean","blocks":[{"link":"/v5/api/utils/bytes/#utils-isBytesLike","text":"Returns true if and only if object is a Bytes or DataHexString."}]},{"title":"Byte Manipulation -- Inspection -- ethers.utils.isHexString( object , [ length ] ) => boolean","blocks":[{"link":"/v5/api/utils/bytes/#utils-isHexString","text":"Returns true if and only if object is a valid hex string."},{"link":"/v5/api/utils/bytes/#utils-isHexString","text":"If length is specified and object is not a valid DataHexString of length bytes, an InvalidArgument error is thrown."}]},{"title":"Byte Manipulation -- Converting between Arrays and Hexstrings -- ethers.utils.arrayify( DataHexStringOrArrayish [ , options ] ) => Uint8Array","blocks":[{"link":"/v5/api/utils/bytes/#utils-arrayify","text":"Converts DataHexStringOrArrayish to a Uint8Array."}]},{"title":"Byte Manipulation -- Converting between Arrays and Hexstrings -- ethers.utils.hexlify( hexstringOrArrayish ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/bytes/#utils-hexlify","text":"Converts hexstringOrArrayish to a DataHexString."}]},{"title":"Byte Manipulation -- Converting between Arrays and Hexstrings -- ethers.utils.hexValue( aBigNumberish ) => string< HexString >","blocks":[{"link":"/v5/api/utils/bytes/#utils-hexValue","text":"Converts aBigNumberish to a HexString, with no unnecessary leading zeros."}]},{"title":"Byte Manipulation -- Array Manipulation -- ethers.utils.concat( arrayOfBytesLike ) => Uint8Array","blocks":[{"link":"/v5/api/utils/bytes/#utils-concat","text":"Concatenates all the BytesLike in arrayOfBytesLike into a single Uint8Array."}]},{"title":"Byte Manipulation -- Array Manipulation -- ethers.utils.stripZeros( aBytesLike ) => Uint8Array","blocks":[{"link":"/v5/api/utils/bytes/#utils-stripZeros","text":"Returns a Uint8Array with all leading 0 bytes of aBtyesLike removed."}]},{"title":"Byte Manipulation -- Array Manipulation -- ethers.utils.zeroPad( aBytesLike , length ) => Uint8Array","blocks":[{"link":"/v5/api/utils/bytes/#utils-zeroPad","text":"Returns a Uint8Array of the data in aBytesLike with 0 bytes prepended to length bytes long."},{"link":"/v5/api/utils/bytes/#utils-zeroPad","text":"If aBytesLike is already longer than length bytes long, an InvalidArgument error will be thrown."}]},{"title":"Byte Manipulation -- Hexstring Manipulation -- ethers.utils.hexConcat( arrayOfBytesLike ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/bytes/#utils-hexConcat","text":"Concatenates all the BytesLike in arrayOfBytesLike into a single DataHexString."}]},{"title":"Byte Manipulation -- Hexstring Manipulation -- ethers.utils.hexDataLength( aBytesLike ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/bytes/#utils-hexDataLength","text":"Returns the length (in bytes) of aBytesLike."}]},{"title":"Byte Manipulation -- Hexstring Manipulation -- ethers.utils.hexDataSlice( aBytesLike , offset [ , endOffset ] ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/bytes/#utils-hexDataSlice","text":"Returns a DataHexString representation of a slice of aBytesLike, from offset (in bytes) to endOffset (in bytes)."},{"link":"/v5/api/utils/bytes/#utils-hexDataSlice","text":"If endOffset is omitted, the length of aBytesLike is used."}]},{"title":"Byte Manipulation -- Hexstring Manipulation -- ethers.utils.hexStripZeros( aBytesLike ) => string< HexString >","blocks":[{"link":"/v5/api/utils/bytes/#utils-hexStripZeros","text":"Returns a HexString representation of aBytesLike with all leading zeros removed."}]},{"title":"Byte Manipulation -- Hexstring Manipulation -- ethers.utils.hexZeroPad( aBytesLike , length ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/bytes/#utils-hexZeroPad","text":"Returns a DataHexString representation of aBytesLike padded to length bytes."},{"link":"/v5/api/utils/bytes/#utils-hexZeroPad","text":"If aBytesLike is already longer than length bytes long, an InvalidArgument error will be thrown."}]},{"title":"Byte Manipulation -- Signature Conversion -- ethers.utils.joinSignature( aSignatureLike ) => string< RawSignature >","blocks":[{"link":"/v5/api/utils/bytes/#utils-joinSignature","text":"Return the raw-format of aSignaturelike, which is 65 bytes (130 nibbles) long, concatenating the r, s and (normalized) v of a Signature."}]},{"title":"Byte Manipulation -- Signature Conversion -- ethers.utils.splitSignature( aSignatureLikeOrBytesLike ) => Signature","blocks":[{"link":"/v5/api/utils/bytes/#utils-splitSignature","text":"Return the full expanded-format of aSignaturelike or a raw-format DataHexString."},{"link":"/v5/api/utils/bytes/#utils-splitSignature","text":"Any missing properties will be computed."}]},{"title":"Byte Manipulation -- Random Bytes -- ethers.utils.randomBytes( length ) => Uint8Array","blocks":[{"link":"/v5/api/utils/bytes/#utils-randomBytes","text":"Return a new Uint8Array of length random bytes."}]},{"title":"Byte Manipulation -- Random Bytes -- ethers.utils.shuffled( array ) => Array< any >","blocks":[{"link":"/v5/api/utils/bytes/#utils-shuffled","text":"Return a copy of array shuffled using Fisher-Yates Shuffle."}]},{"title":"Constants","blocks":[{"link":"/v5/api/utils/constants/#constants","text":"The ethers.contants Object contains commonly used values."}]},{"title":"Constants -- Bytes -- ethers.constants.AddressZero => string< Address >","blocks":[{"link":"/v5/api/utils/constants/#constants-AddressZero","text":"The Address Zero, which is 20 bytes (40 nibbles) of zero."}]},{"title":"Constants -- Bytes -- ethers.constants.HashZero => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/constants/#constants-HashZero","text":"The Hash Zero, which is 32 bytes (64 nibbles) of zero."}]},{"title":"Constants -- Strings -- ethers.constants.EtherSymbol => string","blocks":[{"link":"/v5/api/utils/constants/#constants-EtherSymbol","text":"The Ether symbol, Ξ."}]},{"title":"Constants -- BigNumber -- ethers.constants.NegativeOne => BigNumber","blocks":[{"link":"/v5/api/utils/constants/#constants-NegativeOne","text":"The BigNumber value representing \"-1\"."}]},{"title":"Constants -- BigNumber -- ethers.constants.Zero => BigNumber","blocks":[{"link":"/v5/api/utils/constants/#constants-Zero","text":"The BigNumber value representing \"0\"."}]},{"title":"Constants -- BigNumber -- ethers.constants.One => BigNumber","blocks":[{"link":"/v5/api/utils/constants/#constants-One","text":"The BigNumber value representing \"1\"."}]},{"title":"Constants -- BigNumber -- ethers.constants.Two => BigNumber","blocks":[{"link":"/v5/api/utils/constants/#constants-Two","text":"The BigNumber value representing \"2\"."}]},{"title":"Constants -- BigNumber -- ethers.constants.WeiPerEther => BigNumber","blocks":[{"link":"/v5/api/utils/constants/#constants-WeiPerEther","text":"The BigNumber value representing \"1000000000000000000\", which is the number of Wei per Ether."}]},{"title":"Constants -- BigNumber -- ethers.constants.MaxUint256 => BigNumber","blocks":[{"link":"/v5/api/utils/constants/#constants-MaxUint256","text":"The BigNumber value representing the maximum uint256 value."}]},{"title":"Display Logic and Input","blocks":[{"link":"/v5/api/utils/display-logic/#display-logic","text":"When creating an Application, it is useful to convert between user-friendly strings (usually displaying ether) and the machine-readable values that contracts and maths depend on (usually in wei)."},{"link":"/v5/api/utils/display-logic/#display-logic","text":"For example, a Wallet may specify the balance in ether, and gas prices in gwei for the User Interface, but when sending a transaction, both must be specified in wei."},{"link":"/v5/api/utils/display-logic/#display-logic","text":"The parseUnits will parse a string representing ether, such as 1.1 into a BigNumber in wei, and is useful when a user types in a value, such as sending 1.1 ether."},{"link":"/v5/api/utils/display-logic/#display-logic","text":"The formatUnits will format a BigNumberish into a string, which is useful when displaying a balance."}]},{"title":"Display Logic and Input -- Units -- Decimal Count","blocks":[{"link":"/v5/api/utils/display-logic/#display-logic--units","text":"A Unit can be specified as a number, which indicates the number of decimal places that should be used."},{"link":"/v5/api/utils/display-logic/#display-logic--units","text":"Examples:."},{"link":"/v5/api/utils/display-logic/#display-logic--units","text":"1 ether in wei, has 18 decimal places (i.e."},{"link":"/v5/api/utils/display-logic/#display-logic--units","text":"1 ether represents 1018 wei) 1 bitcoin in Satoshi, has 8 decimal places (i.e."},{"link":"/v5/api/utils/display-logic/#display-logic--units","text":"1 bitcoin represents 108 satoshi)."}]},{"title":"Display Logic and Input -- Units -- Named Units","blocks":[{"link":"/v5/api/utils/display-logic/#display-logic--named-units","text":"There are also several common Named Units, in which case their name (as a string) may be used."}]},{"title":"Display Logic and Input -- Functions -- ethers.utils.commify( value ) => string","blocks":[{"link":"/v5/api/utils/display-logic/#utils-commify","text":"Returns a string with value grouped by 3 digits, separated by ,."}]},{"title":"Display Logic and Input -- Functions -- ethers.utils.formatUnits( value [ , unit = \"ether\" ] ) => string","blocks":[{"link":"/v5/api/utils/display-logic/#utils-formatUnits","text":"Returns a string representation of value formatted with unit digits (if it is a number) or to the unit specified (if a string)."}]},{"title":"Display Logic and Input -- Functions -- ethers.utils.formatEther( value ) => string","blocks":[{"link":"/v5/api/utils/display-logic/#utils-formatEther","text":"The equivalent to calling formatUnits(value, \"ether\")."}]},{"title":"Display Logic and Input -- Functions -- ethers.utils.parseUnits( value [ , unit = \"ether\" ] ) => BigNumber","blocks":[{"link":"/v5/api/utils/display-logic/#utils-parseUnits","text":"Returns a BigNumber representation of value, parsed with unit digits (if it is a number) or from the unit specified (if a string)."}]},{"title":"Display Logic and Input -- Functions -- ethers.utils.parseEther( value ) => BigNumber","blocks":[{"link":"/v5/api/utils/display-logic/#utils-parseEther","text":"The equivalent to calling parseUnits(value, \"ether\")."}]},{"title":"Encoding Utilities -- Base58 -- ethers.utils.base58.decode( textData ) => Uin8Array","blocks":[{"link":"/v5/api/utils/encoding/#Bse58","text":"Return a typed Uint8Array representation of textData decoded using base-58 encoding."}]},{"title":"Encoding Utilities -- Base58 -- ethers.utils.base58.encode( aBytesLike ) => string","blocks":[{"link":"/v5/api/utils/encoding/#Bse58","text":"Return aBytesLike encoded as a string using the base-58 encoding."}]},{"title":"Encoding Utilities -- Base64 -- ethers.utils.base64.decode( textData ) => Uin8Array","blocks":[{"link":"/v5/api/utils/encoding/#Base64","text":"Return a typed Uint8Array representation of textData decoded using base-64 encoding."}]},{"title":"Encoding Utilities -- Base64 -- ethers.utils.base64.encode( aBytesLike ) => string","blocks":[{"link":"/v5/api/utils/encoding/#Base64","text":"Return aBytesLike encoded as a string using the base-64 encoding."}]},{"title":"Encoding Utilities -- Recursive-Length Prefix","blocks":[{"link":"/v5/api/utils/encoding/#rlp--methods","text":"The Recursive Length Prefix encoding is used throughout Ethereum to serialize nested structures of Arrays and data."}]},{"title":"Encoding Utilities -- Recursive-Length Prefix -- ethers.utils.RLP.encode( dataObject ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/encoding/#utils-rlpEncode","text":"Encode a structured Data Object into its RLP-encoded representation."},{"link":"/v5/api/utils/encoding/#utils-rlpEncode","text":"Each Data component may be a valid BytesLike."}]},{"title":"Encoding Utilities -- Recursive-Length Prefix -- ethers.utils.RLP.decode( aBytesLike ) => DataObject","blocks":[{"link":"/v5/api/utils/encoding/#utils.rlpDecode","text":"Decode an RLP-encoded aBytesLike into its structured Data Object."},{"link":"/v5/api/utils/encoding/#utils.rlpDecode","text":"All Data components will be returned as a DataHexString."}]},{"title":"Encoding Utilities -- Recursive-Length Prefix -- Data Object","blocks":[{"link":"/v5/api/utils/encoding/#rlp--dataobject","text":"A Data Object is a recursive structure which is used to serialize many internal structures in Ethereum."},{"link":"/v5/api/utils/encoding/#rlp--dataobject","text":"Each Data Object can either be:."},{"link":"/v5/api/utils/encoding/#rlp--dataobject","text":"Binary Data An Array of Data Objects (i.e."},{"link":"/v5/api/utils/encoding/#rlp--dataobject","text":"this recursively includes Nesting)."}]},{"title":"Encoding Utilities -- Recursive-Length Prefix -- Examples","blocks":[{"link":"/v5/api/utils/encoding/#rlp--dataobject","text":"\"0x1234\" [ \"0x1234\", [ \"0xdead\", \"0xbeef\" ], [ ] ]."}]},{"title":"FixedNumber","blocks":[{"link":"/v5/api/utils/fixednumber/#FixedNumber","text":"A FixedNumber is a fixed-width (in bits) number with an internal base-10 divisor, which allows it to represent a decimal fractional component."}]},{"title":"FixedNumber -- Creating Instances","blocks":[{"link":"/v5/api/utils/fixednumber/#FixedNumber","text":"The FixedNumber constructor cannot be called directly."},{"link":"/v5/api/utils/fixednumber/#FixedNumber","text":"There are several static methods for creating a FixedNumber."}]},{"title":"FixedNumber -- Creating Instances -- FixedNumber.from( value [ , format = \"fixed\" ] ) => FixedNumber","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns an instance of a FixedNumber for value as a format."}]},{"title":"FixedNumber -- Creating Instances -- FixedNumber.fromBytes( aBytesLike [ , format = \"fixed\" ] ) => FixedNumber","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns an instance of a FixedNumber for value as a format."}]},{"title":"FixedNumber -- Creating Instances -- FixedNumber.fromString( value [ , format = \"fixed\" ] ) => FixedNumber","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns an instance of a FixedNumber for value as a format."},{"link":"/v5/api/utils/fixednumber/","text":"The value must not contain more decimals than the format permits."}]},{"title":"FixedNumber -- Creating Instances -- FixedNumber.fromValue( value [ , decimals = 0 [ , format = \"fixed\" ] ] ) => FixedNumber","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns an instance of a FixedNumber for value with decimals as a format."}]},{"title":"FixedNumber -- Properties -- fixednumber.format","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"The FixedFormat of fixednumber."}]},{"title":"FixedNumber -- Methods -- fixednumber.addUnsafe( otherValue ) => FixedNumber","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns a new FixedNumber with the value of fixedvalue + otherValue."}]},{"title":"FixedNumber -- Methods -- fixednumber.subUnsafe( otherValue ) => FixedNumber","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns a new FixedNumber with the value of fixedvalue - otherValue."}]},{"title":"FixedNumber -- Methods -- fixednumber.mulUnsafe( otherValue ) => FixedNumber","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns a new FixedNumber with the value of fixedvalue × otherValue."}]},{"title":"FixedNumber -- Methods -- fixednumber.divUnsafe( otherValue ) => FixedNumber","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns a new FixedNumber with the value of fixedvalue ÷ otherValue."}]},{"title":"FixedNumber -- Methods -- fixednumber.round( [ decimals = 0 ] ) => FixedNumber","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns a new FixedNumber with the value of fixedvalue rounded to decimals."}]},{"title":"FixedNumber -- Methods -- FixedNumber.isZero( ) => boolean","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns true if and only if the value of FixedNumber is zero."}]},{"title":"FixedNumber -- Methods -- fixednumber.toFormat( format ) => FixedNumber","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns a new FixedNumber with the value of fixedvalue with format."}]},{"title":"FixedNumber -- Methods -- fixednumber.toHexString( ) => string","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns a HexString representation of fixednumber."}]},{"title":"FixedNumber -- Methods -- fixednumber.toString( ) => string","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns a string representation of fixednumber."}]},{"title":"FixedNumber -- Methods -- fixednumber.toUnsafeFloat( ) => float","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns a floating-point JavaScript number value of fixednumber."},{"link":"/v5/api/utils/fixednumber/","text":"Due to rounding in JavaScript numbers, the value is only approximate."}]},{"title":"FixedNumber -- Methods -- FixedNumber.isFixedNumber( value ) => boolean","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns true if and only if value is a FixedNumber."}]},{"title":"FixedNumber -- FixedFormat","blocks":[{"link":"/v5/api/utils/fixednumber/#FixedFormat","text":"A FixedFormat is a simple object which represents a decimal (base-10) Fixed-Point data representation."},{"link":"/v5/api/utils/fixednumber/#FixedFormat","text":"Usually using this class directly is unnecessary, as passing in a Format Strings directly into the FixedNumber will automatically create this."}]},{"title":"FixedNumber -- FixedFormat -- Format Strings","blocks":[{"link":"/v5/api/utils/fixednumber/#FixedFormat--strings","text":"A format string is composed of three components, including signed-ness, bit-width and number of decimals."},{"link":"/v5/api/utils/fixednumber/#FixedFormat--strings","text":"A signed format string begins with fixed, which an unsigned format string begins with ufixed, followed by the width (in bits) and the number of decimals."},{"link":"/v5/api/utils/fixednumber/#FixedFormat--strings","text":"The width must be congruent to 0 mod 8 (i.e."},{"link":"/v5/api/utils/fixednumber/#FixedFormat--strings","text":"(width % 8) == 0) and no larger than 256 bits and the number of decimals must be no larger than 80."},{"link":"/v5/api/utils/fixednumber/#FixedFormat--strings","text":"For example:."},{"link":"/v5/api/utils/fixednumber/#FixedFormat--strings","text":"fixed128x18 is signed, 128 bits wide and has 18 decimals; this is useful for most purposes fixed32x0 is signed, 32 bits wide and has 0 decimals; this would be the same as a int32_t in C ufixed32x0 is unsigned, 32 bits wide and has 0 decimals; this would be the same as a uint32_t in C fixed is shorthand for fixed128x18 ufixed is shorthand for ufixed128x18."}]},{"title":"FixedNumber -- FixedFormat -- FixedFormat.from( value = \"fixed128x18\" ) => FixedFormat","blocks":[{"link":"/v5/api/utils/fixednumber/#FixedNumber-from","text":"Returns a new instance of a FixedFormat defined by value."},{"link":"/v5/api/utils/fixednumber/#FixedNumber-from","text":"Any valid Format Strings may be passed in as well as any object which has any of signed, width and decimals defined, including a FixedFormat object."}]},{"title":"FixedNumber -- FixedFormat -- fixedFormat.signed => boolean","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"The signed-ness of fixedFormat, true if negative values are supported."}]},{"title":"FixedNumber -- FixedFormat -- fixedFormat.width => number","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"The width (in bits) of fixedFormat."}]},{"title":"FixedNumber -- FixedFormat -- fixedFormat.decimals => number","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"The number of decimal points of fixedFormat."}]},{"title":"FixedNumber -- FixedFormat -- fixedFormat.name => string","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"The name of the fixedFormat, which can be used to recreate the format and is the string that the Solidity language uses to represent this format."}]},{"title":"FixedNumber -- FixedFormat -- \"fixed\"","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"A shorthand for fixed128x80."}]},{"title":"Hashing Algorithms","blocks":[{"link":"/v5/api/utils/hashing/#hashing-algorithms","text":"There are many hashing algorithms used throughout the blockchain space as well as some more complex usages which require utilities to facilitate these common operations."}]},{"title":"Hashing Algorithms -- Cryptographic Hash Functions","blocks":[{"link":"/v5/api/utils/hashing/#cryptographic-hash-functions","text":"The Cryptographic Hash Functions are a specific family of hash functions."}]},{"title":"Hashing Algorithms -- Cryptographic Hash Functions -- ethers.utils.id( text ) => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/hashing/#utils-id","text":"The Ethereum Identity function computes the KECCAK256 hash of the text bytes."}]},{"title":"Hashing Algorithms -- Cryptographic Hash Functions -- ethers.utils.keccak256( aBytesLike ) => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/hashing/#utils-keccak256","text":"Returns the KECCAK256 digest aBytesLike."}]},{"title":"Hashing Algorithms -- Cryptographic Hash Functions -- ethers.utils.ripemd160( aBytesLike ) => string< DataHexString< 20 > >","blocks":[{"link":"/v5/api/utils/hashing/#utils-ripemd160","text":"Returns the RIPEMD-160 digest of aBytesLike."}]},{"title":"Hashing Algorithms -- Cryptographic Hash Functions -- ethers.utils.sha256( aBytesLike ) => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/hashing/#utils-sha256","text":"Returns the SHA2-256 digest of aBytesLike."}]},{"title":"Hashing Algorithms -- Cryptographic Hash Functions -- ethers.utils.sha512( aBytesLike ) => string< DataHexString< 64 > >","blocks":[{"link":"/v5/api/utils/hashing/#utils-sha512","text":"Returns the SHA2-512 digest of aBytesLike."}]},{"title":"Hashing Algorithms -- HMAC -- ethers.utils.computeHmac( algorithm , key , data ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/hashing/#utils-computeHmac","text":"Returns the HMAC of data with key using the Algorithm algorithm."}]},{"title":"Hashing Algorithms -- HMAC -- ethers.utils.SupportedAlgorithm.sha256 => string","blocks":[{"link":"/v5/api/utils/hashing/#utils--hmac-supported-algorithm","text":"Use the SHA2-256 hash algorithm."}]},{"title":"Hashing Algorithms -- HMAC -- ethers.utils.SupportedAlgorithm.sha512 => string","blocks":[{"link":"/v5/api/utils/hashing/#utils--hmac-supported-algorithm","text":"Use the SHA2-512 hash algorithm."}]},{"title":"Hashing Algorithms -- Hashing Helpers -- ethers.utils.hashMessage( message ) => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/hashing/#utils-hashMessage","text":"Computes the EIP-191 personal message digest of message."},{"link":"/v5/api/utils/hashing/#utils-hashMessage","text":"Personal messages are converted to UTF-8 bytes and prefixed with \\x19Ethereum Signed Message: and the length of message."}]},{"title":"Hashing Algorithms -- Hashing Helpers -- ethers.utils.namehash( name ) => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/hashing/#utils-namehash","text":"Returns the ENS Namehash of name."}]},{"title":"Hashing Algorithms -- Hashing Helpers -- Typed Data Encoder","blocks":[{"link":"/v5/api/utils/hashing/#TypedDataEncoder","text":"The TypedDataEncoder is used to compute the various encoded data required for EIP-712 signed data."},{"link":"/v5/api/utils/hashing/#TypedDataEncoder","text":"Signed data requires a domain, list of structures and their members and the data itself."},{"link":"/v5/api/utils/hashing/#TypedDataEncoder","text":"The domain is an object with values for any of the standard domain properties."},{"link":"/v5/api/utils/hashing/#TypedDataEncoder","text":"The types is an object with each property being the name of a structure, mapping to an array of field descriptions."},{"link":"/v5/api/utils/hashing/#TypedDataEncoder","text":"It should not include the EIP712Domain property unless it is required as a child structure of another."}]},{"title":"Hashing Algorithms -- Hashing Helpers -- Experimental Feature (this exported class name will change)","blocks":[{"link":"/v5/api/utils/hashing/#TypedDataEncoder","text":"This is still an experimental feature."},{"link":"/v5/api/utils/hashing/#TypedDataEncoder","text":"If using it, please specify the exact version of ethers you are using (e.g."},{"link":"/v5/api/utils/hashing/#TypedDataEncoder","text":"spcify \"5.0.18\", not \"^5.0.18\") as the exported class name will be renamed from _TypedDataEncoder to TypedDataEncoder once it has been used in the field a bit."}]},{"title":"Hashing Algorithms -- Hashing Helpers -- ethers.utils._TypedDataEncoder.from( types ) => [TypedDataEncoder]","blocks":[{"link":"/v5/api/utils/hashing/#TypedDataEncoder-from","text":"Creates a new TypedDataEncoder for types."},{"link":"/v5/api/utils/hashing/#TypedDataEncoder-from","text":"This object is a fairly low-level object that most developers should not require using instances directly."},{"link":"/v5/api/utils/hashing/#TypedDataEncoder-from","text":"Most developers will find the static class methods below the most useful."}]},{"title":"Hashing Algorithms -- Hashing Helpers -- TypedDataEncoder.encode( domain , types , values ) => string","blocks":[{"link":"/v5/api/utils/hashing/#TypedDataEncoder-encode","text":"Encodes the Returns the hashed EIP-712 domain."}]},{"title":"Hashing Algorithms -- Hashing Helpers -- TypedDataEncoder.getPayload( domain , types , value ) => any","blocks":[{"link":"/v5/api/utils/hashing/#TypedDataEncoder-getPayload","text":"Returns the standard payload used by various JSON-RPC eth_signTypedData* calls."},{"link":"/v5/api/utils/hashing/#TypedDataEncoder-getPayload","text":"All domain values and entries in value are normalized and the types are verified."}]},{"title":"Hashing Algorithms -- Hashing Helpers -- TypedDataEncoder.getPrimaryType( types ) => string","blocks":[{"link":"/v5/api/utils/hashing/#TypedDataEncoder-getPrimaryType","text":"Constructs a directed acyclic graph of the types and returns the root type, which can be used as the primaryType for EIP-712 payloads."}]},{"title":"Hashing Algorithms -- Hashing Helpers -- TypedDataEncoder.hash( domain , types , values ) => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/hashing/#TypedDataEncoder-hash","text":"Returns the computed EIP-712 hash."}]},{"title":"Hashing Algorithms -- Hashing Helpers -- TypedDataEncoder.hashDomain( domain ) => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/hashing/#TypedDataEncoder-hashDomain","text":"Returns the hashed EIP-712 domain."}]},{"title":"Hashing Algorithms -- Hashing Helpers -- TypedDataEncoder.resolveNames( domain , types , value , resolveName ) => Promise< any >","blocks":[{"link":"/v5/api/utils/hashing/#TypedDataEncoder-resolveNames","text":"Returns a copy of value, where any leaf value with a type of address will have been recursively replacedwith the value of calling resolveName with that value."}]},{"title":"Hashing Algorithms -- Solidity Hashing Algorithms","blocks":[{"link":"/v5/api/utils/hashing/#utils--solidity-hashing","text":"When using the Solidity abi.packEncoded(...) function, a non-standard tightly packed version of encoding is used."},{"link":"/v5/api/utils/hashing/#utils--solidity-hashing","text":"These functions implement the tightly packing algorithm."}]},{"title":"Hashing Algorithms -- Solidity Hashing Algorithms -- ethers.utils.solidityPack( types , values ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/hashing/#utils-solidityPack","text":"Returns the non-standard encoded values packed according to their respective type in types."}]},{"title":"Hashing Algorithms -- Solidity Hashing Algorithms -- ethers.utils.solidityKeccak256( types , values ) => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/hashing/#utils-solidityKeccak256","text":"Returns the KECCAK256 of the non-standard encoded values packed according to their respective type in types."}]},{"title":"Hashing Algorithms -- Solidity Hashing Algorithms -- ethers.utils.soliditySha256( types , values ) => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/hashing/#utils-soliditySha256","text":"Returns the SHA2-256 of the non-standard encoded values packed according to their respective type in types."}]},{"title":"HD Wallet","blocks":[{"link":"/v5/api/utils/hdnode/#hdnodes","text":"TODO: Explain BIP32 BIP-39 and whatnot here..."}]},{"title":"HD Wallet -- Types -- ethers.utils.defaultPath => \"m/44'/60'/0'/0/0\"","blocks":[{"link":"/v5/api/utils/hdnode/#hdnodes--defaultpath","text":"The default path for Ethereum in an HD Wallet."}]},{"title":"HD Wallet -- Types -- mnemonic.phrase => string","blocks":[{"link":"/v5/api/utils/hdnode/#Mnemonic","text":"The mnemonic phrase for this mnemonic."},{"link":"/v5/api/utils/hdnode/#Mnemonic","text":"It is 12, 15, 18, 21 or 24 words long and separated by the whitespace specified by the locale."}]},{"title":"HD Wallet -- Types -- mnemonic.path => string","blocks":[{"link":"/v5/api/utils/hdnode/#Mnemonic","text":"The HD path for this mnemonic."}]},{"title":"HD Wallet -- Types -- mnemonic.locale => string","blocks":[{"link":"/v5/api/utils/hdnode/#Mnemonic","text":"The language of the wordlist this mnemonic is using."}]},{"title":"HD Wallet -- HDNode -- ethers.HDNode.fromMnemonic( phrase [ , password [ , wordlist ] ] ) => HDNode","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode-fromMnemonic","text":"Return the HDNode for phrase with the optional password and wordlist."}]},{"title":"HD Wallet -- HDNode -- ethers.HDNode.fromSeed( aBytesLike ) => HDNode","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode-fromSeed","text":"Return the HDNode for the seed aBytesLike."}]},{"title":"HD Wallet -- HDNode -- ethers.HDNode.fromExtendedKey( extendedKey ) => HDNode","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode-fromExtendedKey","text":"Return the HDNode for the extendedKey."},{"link":"/v5/api/utils/hdnode/#HDNode-fromExtendedKey","text":"If extendedKey was neutered, the HDNode will only be able to compute addresses and not private keys."}]},{"title":"HD Wallet -- HDNode -- hdNode.privateKey => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"The private key for this HDNode."}]},{"title":"HD Wallet -- HDNode -- hdNode.publicKey => string< DataHexString< 33 > >","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"The (compresses) public key for this HDNode."}]},{"title":"HD Wallet -- HDNode -- hdNode.fingerprint => string< DataHexString< 4 > >","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"The fingerprint is meant as an index to quickly match parent and children nodes together, however collisions may occur and software should verify matching nodes."},{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"Most developers will not need to use this."}]},{"title":"HD Wallet -- HDNode -- hdNode.parentFingerprint => string< DataHexString< 4 > >","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"The fingerprint of the parent node."},{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"See fingerprint for more details."},{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"Most developers will not need to use this."}]},{"title":"HD Wallet -- HDNode -- hdNode.address => string< Address >","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"The address of this HDNode."}]},{"title":"HD Wallet -- HDNode -- hdNode.mnemonic => Mnemonic","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"The mnemonic of this HDNode, if known."}]},{"title":"HD Wallet -- HDNode -- hdNode.path => string","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"The path of this HDNode, if known."},{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"If the mnemonic is also known, this will match mnemonic.path."}]},{"title":"HD Wallet -- HDNode -- hdNode.chainCode => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"The chain code is used as a non-secret private key which is then used with EC-multiply to provide the ability to derive addresses without the private key of child non-hardened nodes."},{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"Most developers will not need to use this."}]},{"title":"HD Wallet -- HDNode -- hdNode.index => number","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"The index of this HDNode."},{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"This will match the last component of the path."},{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"Most developers will not need to use this."}]},{"title":"HD Wallet -- HDNode -- hdNode.depth => number","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"The depth of this HDNode."},{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"This will match the number of components (less one, the m/) of the path."},{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"Most developers will not need to use this."}]},{"title":"HD Wallet -- HDNode -- hdNode.extendedKey => string","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"A serialized string representation of this HDNode."},{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"Not all properties are included in the serialization, such as the mnemonic and path, so serializing and deserializing (using the fromExtendedKey class method) will result in reduced information."}]},{"title":"HD Wallet -- HDNode -- hdNode.neuter( ) => HDNode","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode-neuter","text":"Return a new instance of hdNode with its private key removed but all other properties preserved."},{"link":"/v5/api/utils/hdnode/#HDNode-neuter","text":"This ensures that the key can not leak the private key of itself or any derived children, but may still be used to compute the addresses of itself and any non-hardened children."}]},{"title":"HD Wallet -- HDNode -- hdNode.derivePath( path ) => HDNode","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode-derivePath","text":"Return a new HDNode which is the child of hdNode found by deriving path."}]},{"title":"HD Wallet -- Other Functions -- ethers.utils.mnemonicToSeed( phrase [ , password ] ) => string< DataHexString< 64 > >","blocks":[{"link":"/v5/api/utils/hdnode/#utils-mnemonicToSeed","text":"Convert a mnemonic phrase to a seed, according to BIP-39."}]},{"title":"HD Wallet -- Other Functions -- ethers.utils.mnemonicToEntropy( phrase [ , wordlist ] ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/hdnode/#utils-mnemonicToEntropy","text":"Convert a mnemonic phrase to its entropy, according to BIP-39."}]},{"title":"HD Wallet -- Other Functions -- ethers.utils.isValidMnemonic( phrase [ , wordlist ] ) => boolean","blocks":[{"link":"/v5/api/utils/hdnode/#utils-isValidMnemonic","text":"Returns true if phrase is a valid mnemonic phrase, by testing the checksum."}]},{"title":"Utilities","blocks":[{"link":"/v5/api/utils/","text":"These utilities are used extensively within the library, but are also quite useful for application developers."}]},{"title":"Logging","blocks":[{"link":"/v5/api/utils/logger/#logging","text":"These are just a few simple logging utilities provided to simplify and standardize the error facilities across the Ethers library."},{"link":"/v5/api/utils/logger/#logging","text":"The Logger library has zero dependencies and is intentionally very light so it can be easily included in each library."},{"link":"/v5/api/utils/logger/#logging","text":"The Censorship functionality relies on one instance of the Ethers library being included."},{"link":"/v5/api/utils/logger/#logging","text":"In large bundled packages or when npm link is used, this may not be the case."},{"link":"/v5/api/utils/logger/#logging","text":"If you require this functionality, ensure that your bundling is configured properly."}]},{"title":"Logging -- Logger -- new ethers.utils.Logger( version )","blocks":[{"link":"/v5/api/utils/logger/#Logger","text":"Create a new logger which will include version in all errors thrown."}]},{"title":"Logging -- Logger -- Logger.globalLogger( ) => Logger","blocks":[{"link":"/v5/api/utils/logger/#Logger","text":"Returns the singleton global logger."}]},{"title":"Logging -- Logger -- logger.debug( ...args ) => void","blocks":[{"link":"/v5/api/utils/logger/","text":"Log debugging information."}]},{"title":"Logging -- Logger -- logger.info( ...args ) => void","blocks":[{"link":"/v5/api/utils/logger/","text":"Log generic information."}]},{"title":"Logging -- Logger -- logger.warn( ...args ) => void","blocks":[{"link":"/v5/api/utils/logger/","text":"Log warnings."}]},{"title":"Logging -- Logger -- Errors","blocks":[{"link":"/v5/api/utils/logger/#Logger","text":"These functions honor the current Censorship and help create a standard error model for detecting and processing errors within Ethers."}]},{"title":"Logging -- Logger -- logger.makeError( message [ , code = UNKNOWN_ERROR [ , params ] ] ) => Error","blocks":[{"link":"/v5/api/utils/logger/","text":"Create an Error object with message and an optional code and additional params set."},{"link":"/v5/api/utils/logger/","text":"This is useful when an error is needed to be rejected instead of thrown."}]},{"title":"Logging -- Logger -- logger.throwError( message [ , code = UNKNOWN_ERROR [ , params ] ] ) => never","blocks":[{"link":"/v5/api/utils/logger/","text":"Throw an Error with message and an optional code and additional params set."}]},{"title":"Logging -- Logger -- logger.throwArgumentError( message , name , value ) => never","blocks":[{"link":"/v5/api/utils/logger/","text":"Throw an INVALID_ARGUMENT Error with name and value."}]},{"title":"Logging -- Logger -- Usage Validation","blocks":[{"link":"/v5/api/utils/logger/#Logger","text":"There can be used to ensure various properties and actions are safe."}]},{"title":"Logging -- Logger -- logger.checkAbstract( target , kind ) => void","blocks":[{"link":"/v5/api/utils/logger/","text":"Checks that target is not kind and performs the same operations as checkNew."},{"link":"/v5/api/utils/logger/","text":"This is useful for ensuring abstract classes are not being instantiated."}]},{"title":"Logging -- Logger -- logger.checkArgumentCount( count , expectedCount [ , message ) => void","blocks":[{"link":"/v5/api/utils/logger/","text":"If count is not equal to expectedCount, throws a MISSING_ARGUMENT or UNEXPECTED_ARGUMENT error."}]},{"title":"Logging -- Logger -- logger.checkNew( target , kind ) => void","blocks":[{"link":"/v5/api/utils/logger/","text":"If target is not a valid this or target value, throw a MISSING_NEW error."},{"link":"/v5/api/utils/logger/","text":"This is useful to ensure callers of a Class are using new."}]},{"title":"Logging -- Logger -- logger.checkNormalize( message ) => void","blocks":[{"link":"/v5/api/utils/logger/","text":"Check that the environment has a correctly functioning String.normalize."},{"link":"/v5/api/utils/logger/","text":"If not, a UNSUPPORTED_OPERATION error is thrown."}]},{"title":"Logging -- Logger -- logger.checkSafeUint53( value [ , message ] ) => void","blocks":[{"link":"/v5/api/utils/logger/","text":"If value is not safe as a JavaScript number, throws a NUMERIC_FAULT error."}]},{"title":"Logging -- Logger -- Logger.setCensorship( censor [ , permanent = false ] ) => void","blocks":[{"link":"/v5/api/utils/logger/#Logger--censorship","text":"Set error censorship, optionally preventing errors from being uncensored."},{"link":"/v5/api/utils/logger/#Logger--censorship","text":"In production applications, this prevents any error from leaking information by masking the message and values of errors."},{"link":"/v5/api/utils/logger/#Logger--censorship","text":"This can impact debugging, making it substantially more difficult."}]},{"title":"Logging -- Logger -- Logger.setLogLevel( logLevel ) => void","blocks":[{"link":"/v5/api/utils/logger/#Logger--censorship","text":"Set the log level, to suppress logging output below a particular log level."}]},{"title":"Logging -- Errors","blocks":[{"link":"/v5/api/utils/logger/#errors","text":"Every error in Ethers has a code value, which is a string that will match one of the following error codes."}]},{"title":"Logging -- Errors -- Logger.errors.NOT_IMPLEMENTED","blocks":[{"link":"/v5/api/utils/logger/","text":"The operation is not implemented."}]},{"title":"Logging -- Errors -- Logger.errors.SERVER_ERROR","blocks":[{"link":"/v5/api/utils/logger/","text":"There was an error communicating with a server."}]},{"title":"Logging -- Errors -- Logger.errors.TIMEOUT","blocks":[{"link":"/v5/api/utils/logger/#errors-Timeout","text":"A timeout occurred."}]},{"title":"Logging -- Errors -- Logger.errors.UNKNOWN_ERROR","blocks":[{"link":"/v5/api/utils/logger/#errors-UnknownError","text":"A generic unknown error."}]},{"title":"Logging -- Errors -- Logger.errors.UNSUPPORTED_OPERATION","blocks":[{"link":"/v5/api/utils/logger/#errors-UnsupportedOperation","text":"The operation is not supported."}]},{"title":"Logging -- Errors -- Logger.errors.BUFFER_OVERRUN","blocks":[{"link":"/v5/api/utils/logger/","text":"The amount of data needed is more than the amount of data required, which would cause the data buffer to read past its end."}]},{"title":"Logging -- Errors -- Logger.errors.NUMERIC_FAULT","blocks":[{"link":"/v5/api/utils/logger/#errors-NumericFault","text":"There was an invalid operation done on numeric values."},{"link":"/v5/api/utils/logger/#errors-NumericFault","text":"Common cases of this occur when there is overflow, arithmetic underflow in fixed numeric types or division by zero."}]},{"title":"Logging -- Errors -- Logger.errors.INVALID_ARGUMENT","blocks":[{"link":"/v5/api/utils/logger/#errors-InvalidArgument","text":"The type or value of an argument is invalid."},{"link":"/v5/api/utils/logger/#errors-InvalidArgument","text":"This will generally also include the name and value of the argument."},{"link":"/v5/api/utils/logger/#errors-InvalidArgument","text":"Any function which accepts sensitive data (such as a private key) will include the string [[REDACTED]] instead of the value passed in."}]},{"title":"Logging -- Errors -- Logger.errors.MISSING_ARGUMENT","blocks":[{"link":"/v5/api/utils/logger/#errors-MissingArgument","text":"An expected parameter was not specified."}]},{"title":"Logging -- Errors -- Logger.errors.MISSING_NEW","blocks":[{"link":"/v5/api/utils/logger/#errors-MissingNew","text":"An object is a Class, but is now being called with new."}]},{"title":"Logging -- Errors -- Logger.errors.UNEXPECTED_ARGUMENT","blocks":[{"link":"/v5/api/utils/logger/#errors-UnexpectedArgument","text":"Too many parameters we passed into a function."}]},{"title":"Logging -- Errors -- Logger.errors.CALL_EXCEPTION","blocks":[{"link":"/v5/api/utils/logger/","text":"An attempt to call a blockchain contract (getter) resulted in a revert or other error."}]},{"title":"Logging -- Errors -- Logger.errors.INSUFFICIENT_FUNDS","blocks":[{"link":"/v5/api/utils/logger/","text":"The account is attempting to make a transaction which costs more than is available."},{"link":"/v5/api/utils/logger/","text":"A sending account must have enough ether to pay for the value, the gas limit (at the gas price) as well as the intrinsic cost of data."},{"link":"/v5/api/utils/logger/","text":"The intrinsic cost of data is 4 gas for each zero byte and 68 gas for each non-zero byte."}]},{"title":"Logging -- Errors -- Logger.errors.NETWORK_ERROR","blocks":[{"link":"/v5/api/utils/logger/","text":"An Ethereum network validation error, such as an invalid chain ID."}]},{"title":"Logging -- Errors -- Logger.errors.NONCE_EXPIRED","blocks":[{"link":"/v5/api/utils/logger/","text":"The nonce being specified has already been used in a mined transaction."}]},{"title":"Logging -- Errors -- Logger.errors.REPLACEMENT_UNDERPRICED","blocks":[{"link":"/v5/api/utils/logger/","text":"When replacing a transaction, by using a nonce which has already been sent to the network, but which has not been mined yet the new transaction must specify a higher gas price."},{"link":"/v5/api/utils/logger/","text":"This error occurs when the gas price is insufficient to bribe the transaction pool to prefer the new transaction over the old one."},{"link":"/v5/api/utils/logger/","text":"Generally, the new gas price should be about 50% + 1 wei more, so if a gas price of 10 gwei was used, the replacement should be 15.000000001 gwei."}]},{"title":"Logging -- Errors -- Logger.errors.UNPREDICTABLE_GAS_LIMIT","blocks":[{"link":"/v5/api/utils/logger/","text":"When estimating the required amount of gas for a transaction, a node is queried for its best guess."},{"link":"/v5/api/utils/logger/","text":"If a node is unable (or unwilling) to predict the cost, this error occurs."},{"link":"/v5/api/utils/logger/","text":"The best remedy for this situation is to specify a gas limit in the transaction manually."},{"link":"/v5/api/utils/logger/","text":"This error can also indicate that the transaction is expected to fail regardless, if for example an account with no tokens is attempting to send a token."}]},{"title":"Logging -- Log Levels -- Logger.levels.DEBUG","blocks":[{"link":"/v5/api/utils/logger/#Logger-levels","text":"Log all output, including debugging information."}]},{"title":"Logging -- Log Levels -- Logger.levels.INFO","blocks":[{"link":"/v5/api/utils/logger/#Logger-levels","text":"Only log output for informational, warnings and errors."}]},{"title":"Logging -- Log Levels -- Logger.levels.WARNING","blocks":[{"link":"/v5/api/utils/logger/#Logger-levels","text":"Only log output for warnings and errors."}]},{"title":"Logging -- Log Levels -- Logger.levels.ERROR","blocks":[{"link":"/v5/api/utils/logger/#Logger-levels","text":"Only log output for errors."}]},{"title":"Logging -- Log Levels -- Logger.levels.OFF","blocks":[{"link":"/v5/api/utils/logger/#Logger-levels","text":"Do not output any logs."}]},{"title":"Signing Key -- Log Levels -- new ethers.utils.SigningKey( privateKey )","blocks":[{"link":"/v5/api/utils/signing-key/#SigningKey-constructor","text":"Create a new SigningKey for privateKey."}]},{"title":"Signing Key -- Log Levels -- signingKey.privateKey => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/signing-key/#SigningKey","text":"The private key for this Signing Key."}]},{"title":"Signing Key -- Log Levels -- signingKey.publicKey => string< DataHexString< 65 > >","blocks":[{"link":"/v5/api/utils/signing-key/#SigningKey","text":"The uncompressed public key for this Signing Key."},{"link":"/v5/api/utils/signing-key/#SigningKey","text":"It will always be 65 bytes (130 nibbles) and begins with 0x04."}]},{"title":"Signing Key -- Log Levels -- signingKey.compressedPublicKey => string< DataHexString< 33 > >","blocks":[{"link":"/v5/api/utils/signing-key/#SigningKey","text":"The compressed public key for this Signing Key."},{"link":"/v5/api/utils/signing-key/#SigningKey","text":"It will always be 33 bytes (66 nibbles) and begins with either 0x02 or 0x03."}]},{"title":"Signing Key -- Log Levels -- signingKey.signDigest( digest ) => Signature","blocks":[{"link":"/v5/api/utils/signing-key/#SigningKey","text":"Sign the digest and return the signature."}]},{"title":"Signing Key -- Log Levels -- signingKey.computeSharedSecret( otherKey ) => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/signing-key/#SigningKey","text":"Compute the ECDH shared secret with otherKey."},{"link":"/v5/api/utils/signing-key/#SigningKey","text":"The otherKey may be either a public key or a private key, but generally will be a public key from another party."},{"link":"/v5/api/utils/signing-key/#SigningKey","text":"It is best practice that each party computes the hash of this before using it as a symmetric key."}]},{"title":"Signing Key -- Log Levels -- SigningKey.isSigningKey( anObject ) => boolean","blocks":[{"link":"/v5/api/utils/signing-key/#SigningKey","text":"Returns true if anObject is a SigningKey."}]},{"title":"Signing Key -- Other Functions -- ethers.utils.verifyMessage( message , signature ) => string< Address >","blocks":[{"link":"/v5/api/utils/signing-key/#utils-verifyMessage","text":"Returns the address that signed message producing signature."},{"link":"/v5/api/utils/signing-key/#utils-verifyMessage","text":"The signature may have a non-canonical v (i.e."},{"link":"/v5/api/utils/signing-key/#utils-verifyMessage","text":"does not need to be 27 or 28), in which case it will be normalized to compute the `recoveryParam` which will then be used to compute the address; this allows systems which use the v to encode additional data (such as EIP-155) to be used since the v parameter is still completely non-ambiguous."}]},{"title":"Signing Key -- Other Functions -- ethers.utils.verifyTypedData( domain , types , value , signature ) => string< Address >","blocks":[{"link":"/v5/api/utils/signing-key/#utils-verifyTypedData","text":"Returns the address that signed the EIP-712 value for the domain and types to produce the signature."}]},{"title":"Signing Key -- Other Functions -- ethers.utils.recoverPublicKey( digest , signature ) => string< DataHexString< 65 > >","blocks":[{"link":"/v5/api/utils/signing-key/#utils-recoverPublicKey","text":"Returns the uncompressed public key (i.e."},{"link":"/v5/api/utils/signing-key/#utils-recoverPublicKey","text":"the first byte will be 0x04) of the private key that was used to sign digest which gave the signature."}]},{"title":"Signing Key -- Other Functions -- ethers.utils.computePublicKey( key [ , compressed = false ] ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/signing-key/#utils-computePublicKey","text":"Computes the public key of key, optionally compressing it."},{"link":"/v5/api/utils/signing-key/#utils-computePublicKey","text":"The key can be any form of public key (compressed or uncompressed) or a private key."}]},{"title":"Strings","blocks":[{"link":"/v5/api/utils/strings/#strings","text":"Tra la la."}]},{"title":"Strings -- Bytes32String","blocks":[{"link":"/v5/api/utils/strings/#Bytes32String","text":"A string in Solidity is length prefixed with its 256-bit (32 byte) length, which means that even short strings require 2 words (64 bytes) of storage."},{"link":"/v5/api/utils/strings/#Bytes32String","text":"In many cases, we deal with short strings, so instead of prefixing the string with its length, we can null-terminate it and fit it in a single word (32 bytes)."},{"link":"/v5/api/utils/strings/#Bytes32String","text":"Since we need only a single byte for the null termination, we can store strings up to 31 bytes long in a word."}]},{"title":"Strings -- Bytes32String -- Note","blocks":[{"link":"/v5/api/utils/strings/#Bytes32String","text":"Strings that are 31 bytes long may contain fewer than 31 characters, since UTF-8 requires multiple bytes to encode international characters."}]},{"title":"Strings -- Bytes32String -- ethers.utils.parseBytes32String( aBytesLike ) => string","blocks":[{"link":"/v5/api/utils/strings/#utils-parseBytes32","text":"Returns the decoded string represented by the Bytes32 encoded data."}]},{"title":"Strings -- Bytes32String -- ethers.utils.formatBytes32String( text ) => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/strings/#utils-formatBytes32","text":"Returns a bytes32 string representation of text."},{"link":"/v5/api/utils/strings/#utils-formatBytes32","text":"If the length of text exceeds 31 bytes, it will throw an error."}]},{"title":"Strings -- UTF-8 Strings -- ethers.utils.toUtf8Bytes( text [ , form = current ] ) => Uint8Array","blocks":[{"link":"/v5/api/utils/strings/#utils-toUtf8Bytes","text":"Returns the UTF-8 bytes of text, optionally normalizing it using the UnicodeNormalizationForm form."}]},{"title":"Strings -- UTF-8 Strings -- ethers.utils.toUtf8CodePoints( text [ , form = current ] ) => Array< number >","blocks":[{"link":"/v5/api/utils/strings/#utils-toUtf8CodePoints","text":"Returns the Array of codepoints of text, optionally normalized using the UnicodeNormalizationForm form."}]},{"title":"Strings -- UTF-8 Strings -- Note","blocks":[{"link":"/v5/api/utils/strings/#strings-utf8","text":"This function correctly splits each user-perceived character into its codepoint, accounting for surrogate pairs."},{"link":"/v5/api/utils/strings/#strings-utf8","text":"This should not be confused with string.split(\"\"), which destroys surrogate pairs, splitting between each UTF-16 codeunit instead."}]},{"title":"Strings -- UTF-8 Strings -- ethers.utils.toUtf8String( aBytesLike [ , onError = error ] ) => string","blocks":[{"link":"/v5/api/utils/strings/#utils-toUtf8String","text":"Returns the string represented by the UTF-8 bytes of aBytesLike."},{"link":"/v5/api/utils/strings/#utils-toUtf8String","text":"The onError is a Custom UTF-8 Error function and if not specified it defaults to the error function, which throws an error on any UTF-8 error."}]},{"title":"Strings -- UnicodeNormalizationForm","blocks":[{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"There are several commonly used forms when normalizing UTF-8 data, which allow strings to be compared or hashed in a stable way."}]},{"title":"Strings -- UnicodeNormalizationForm -- ethers.utils.UnicodeNormalizationForm.current","blocks":[{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"Maintain the current normalization form."}]},{"title":"Strings -- UnicodeNormalizationForm -- ethers.utils.UnicodeNormalizationForm.NFC","blocks":[{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"The Composed Normalization Form."},{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"This form uses single codepoints which represent the fully composed character."},{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"For example, the é is a single codepoint, 0x00e9."}]},{"title":"Strings -- UnicodeNormalizationForm -- ethers.utils.UnicodeNormalizationForm.NFD","blocks":[{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"The Decomposed Normalization Form."},{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"This form uses multiple codepoints (when necessary) to compose a character."},{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"For example, the é is made up of two codepoints, \"0x0065\" (which is the letter \"e\") and \"0x0301\" which is a special diacritic UTF-8 codepoint which indicates the previous character should have an acute accent."}]},{"title":"Strings -- UnicodeNormalizationForm -- ethers.utils.UnicodeNormalizationForm.NFKC","blocks":[{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"The Composed Normalization Form with Canonical Equivalence."},{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"The Canonical representation folds characters which have the same syntactic representation but different semantic meaning."},{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"For example, the Roman Numeral I, which has a UTF-8 codepoint \"0x2160\", is folded into the capital letter I, \"0x0049\"."}]},{"title":"Strings -- UnicodeNormalizationForm -- ethers.utils.UnicodeNormalizationForm.NFKD","blocks":[{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"The Decomposed Normalization Form with Canonical Equivalence."},{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"See NFKC for more an example."}]},{"title":"Strings -- UnicodeNormalizationForm -- Note","blocks":[{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"Only certain specified characters are folded in Canonical Equivalence, and thus it should not be considered a method to achieve any level of security from homoglyph attacks."}]},{"title":"Strings -- Custom UTF-8 Error Handling","blocks":[{"link":"/v5/api/utils/strings/#strings--error-handling","text":"When converting a string to its codepoints, there is the possibility of invalid byte sequences."},{"link":"/v5/api/utils/strings/#strings--error-handling","text":"Since certain situations may need specific ways to handle UTF-8 errors, a custom error handling function can be used, which has the signature:."}]},{"title":"Strings -- Custom UTF-8 Error Handling -- errorFunction( reason , offset , bytes , output [ , badCodepoint ] ) => number","blocks":[{"link":"/v5/api/utils/strings/#strings--error-handling","text":"The reason is one of the UTF-8 Error Reasons, offset is the index into bytes where the error was first encountered, output is the list of codepoints already processed (and may be modified) and in certain Error Reasons, the badCodepoint indicates the currently computed codepoint, but which would be rejected because its value is invalid."},{"link":"/v5/api/utils/strings/#strings--error-handling","text":"This function should return the number of bytes to skip past keeping in mind the value at offset will already be consumed."}]},{"title":"Strings -- Custom UTF-8 Error Handling -- ethers.utils.Utf8ErrorReason.BAD_PREFIX","blocks":[{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"A byte was encountered which is invalid to begin a UTF-8 byte sequence with."}]},{"title":"Strings -- Custom UTF-8 Error Handling -- ethers.utils.Utf8ErrorReason.MISSING_CONTINUE","blocks":[{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"A UTF-8 sequence was begun, but did not have enough continuation bytes for the sequence."},{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"For this error the ofset is the index at which a continuation byte was expected."}]},{"title":"Strings -- Custom UTF-8 Error Handling -- ethers.utils.Utf8ErrorReason.OUT_OF_RANGE","blocks":[{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"The computed codepoint is outside the range for valid UTF-8 codepoints (i.e."},{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"the codepoint is greater than 0x10ffff)."},{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"This reason will pass the computed badCountpoint into the custom error function."}]},{"title":"Strings -- Custom UTF-8 Error Handling -- ethers.utils.Utf8ErrorReason.OVERLONG","blocks":[{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"Due to the way UTF-8 allows variable length byte sequences to be used, it is possible to have multiple representations of the same character, which means overlong sequences allow for a non-distinguished string to be formed, which can impact security as multiple strings that are otherwise equal can have different hashes."},{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"Generally, overlong sequences are an attempt to circumvent some part of security, but in rare cases may be produced by lazy libraries or used to encode the null terminating character in a way that is safe to include in a char*."},{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"This reason will pass the computed badCountpoint into the custom error function, which is actually a valid codepoint, just one that was arrived at through unsafe methods."}]},{"title":"Strings -- Custom UTF-8 Error Handling -- ethers.utils.Utf8ErrorReason.OVERRUN","blocks":[{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"The string does not have enough characters remaining for the length of this sequence."}]},{"title":"Strings -- Custom UTF-8 Error Handling -- ethers.utils.Utf8ErrorReason.UNEXPECTED_CONTINUE","blocks":[{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"This error is similar to BAD_PREFIX, since a continuation byte cannot begin a valid sequence, but many may wish to process this differently."},{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"However, most developers would want to trap this and perform the same operation as a BAD_PREFIX."}]},{"title":"Strings -- Custom UTF-8 Error Handling -- ethers.utils.Utf8ErrorReason.UTF16_SURROGATE","blocks":[{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"The computed codepoint represents a value reserved for UTF-16 surrogate pairs."},{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"This reason will pass the computed surrogate half badCountpoint into the custom error function."}]},{"title":"Strings -- Custom UTF-8 Error Handling -- Provided UTF-8 Error Handling Functions","blocks":[{"link":"/v5/api/utils/strings/#strings--error-handling","text":"There are already several functions available for the most common situations."}]},{"title":"Strings -- Custom UTF-8 Error Handling -- ethers.utils.Utf8ErrorFuncs.error","blocks":[{"link":"/v5/api/utils/strings/#strings--Utf8Error","text":"The will throw an error on any error with a UTF-8 sequence, including invalid prefix bytes, overlong sequences, UTF-16 surrogate pairs."}]},{"title":"Strings -- Custom UTF-8 Error Handling -- ethers.utils.Utf8ErrorFuncs.ignore","blocks":[{"link":"/v5/api/utils/strings/#strings--Utf8Ignore","text":"This will drop all invalid sequences (by consuming invalid prefix bytes and any following continuation bytes) from the final string as well as permit overlong sequences to be converted to their equivalent string."}]},{"title":"Strings -- Custom UTF-8 Error Handling -- ethers.utils.Utf8ErrorFuncs.replace","blocks":[{"link":"/v5/api/utils/strings/#strings--Utf8Replace","text":"This will replace all invalid sequences (by consuming invalid prefix bytes and any following continuation bytes) with the UTF-8 Replacement Character, (i.e."},{"link":"/v5/api/utils/strings/#strings--Utf8Replace","text":"U+FFFD)."}]},{"title":"Transactions -- Types -- UnsignedTransaction","blocks":[{"link":"/v5/api/utils/transactions/#UnsignedTransaction","text":"An unsigned transaction represents a transaction that has not been signed and its values are flexible as long as they are not ambiguous."}]},{"title":"Transactions -- Types -- unsignedTransaction.to => string< Address >","blocks":[{"link":"/v5/api/utils/transactions/#UnsignedTransaction","text":"The address this transaction is to."}]},{"title":"Transactions -- Types -- unsignedTransaction.nonce => number","blocks":[{"link":"/v5/api/utils/transactions/#UnsignedTransaction","text":"The nonce of this transaction."}]},{"title":"Transactions -- Types -- unsignedTransaction.gasLimit => BigNumberish","blocks":[{"link":"/v5/api/utils/transactions/#UnsignedTransaction","text":"The gas limit for this transaction."}]},{"title":"Transactions -- Types -- unsignedTransaction.gasPrice => BigNumberish","blocks":[{"link":"/v5/api/utils/transactions/#UnsignedTransaction","text":"The gas price for this transaction."}]},{"title":"Transactions -- Types -- unsignedTransaction.data => BytesLike","blocks":[{"link":"/v5/api/utils/transactions/#UnsignedTransaction","text":"The data for this transaction."}]},{"title":"Transactions -- Types -- unsignedTransaction.value => BigNumberish","blocks":[{"link":"/v5/api/utils/transactions/#UnsignedTransaction","text":"The value (in wei) for this transaction."}]},{"title":"Transactions -- Types -- unsignedTransaction.chainId => number","blocks":[{"link":"/v5/api/utils/transactions/#UnsignedTransaction","text":"The chain ID for this transaction."},{"link":"/v5/api/utils/transactions/#UnsignedTransaction","text":"If the chain ID is 0 or null, then EIP-155 is disabled and legacy signing is used, unless overridden in a signature."}]},{"title":"Transactions -- Types -- Transaction","blocks":[{"link":"/v5/api/utils/transactions/#Transaction","text":"A generic object to represent a transaction."}]},{"title":"Transactions -- Types -- transaction.hash => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/transactions/#Transaction","text":"The transaction hash, which can be used as an identifier for transaction."},{"link":"/v5/api/utils/transactions/#Transaction","text":"This is the keccak256 of the serialized RLP encoded representation of transaction."}]},{"title":"Transactions -- Types -- unsignedTransaction.to => string< Address >","blocks":[{"link":"/v5/api/utils/transactions/#Transaction","text":"The address transaction is to."}]},{"title":"Transactions -- Types -- transaction.from => string< Address >","blocks":[{"link":"/v5/api/utils/transactions/#Transaction","text":"The address transaction is from."}]},{"title":"Transactions -- Types -- transaction.nonce => number","blocks":[{"link":"/v5/api/utils/transactions/#Transaction","text":"The nonce for transaction."},{"link":"/v5/api/utils/transactions/#Transaction","text":"Each transaction sent to the network from an account includes this, which ensures the order and non-replayability of a transaction."},{"link":"/v5/api/utils/transactions/#Transaction","text":"This must be equal to the current number of transactions ever sent to the network by the from address."}]},{"title":"Transactions -- Types -- transaction.gasLimit => BigNumber","blocks":[{"link":"/v5/api/utils/transactions/#Transaction","text":"The gas limit for transaction."},{"link":"/v5/api/utils/transactions/#Transaction","text":"An account must have enough ether to cover the gas (at the specified gasPrice)."},{"link":"/v5/api/utils/transactions/#Transaction","text":"Any unused gas is refunded at the end of the transaction, and if there is insufficient gas to complete execution, the effects of the transaction are reverted, but the gas is fully consumed and an out-of-gas error occurs."}]},{"title":"Transactions -- Types -- transaction.gasPrice => BigNumber","blocks":[{"link":"/v5/api/utils/transactions/#Transaction","text":"The price (in wei) per unit of gas for transaction."}]},{"title":"Transactions -- Types -- transaction.data => BytesLike","blocks":[{"link":"/v5/api/utils/transactions/#Transaction","text":"The data for transaction."},{"link":"/v5/api/utils/transactions/#Transaction","text":"In a contract this is the call data."}]},{"title":"Transactions -- Types -- transaction.value => BigNumber","blocks":[{"link":"/v5/api/utils/transactions/#Transaction","text":"The value (in wei) for transaction."}]},{"title":"Transactions -- Types -- transaction.chainId => number","blocks":[{"link":"/v5/api/utils/transactions/#Transaction","text":"The chain ID for transaction."},{"link":"/v5/api/utils/transactions/#Transaction","text":"This is used as part of EIP-155 to prevent replay attacks on different networks."},{"link":"/v5/api/utils/transactions/#Transaction","text":"For example, if a transaction was made on ropsten with an account also used on homestead, it would be possible for a transaction signed on ropsten to be executed on homestead, which is likely unintended."},{"link":"/v5/api/utils/transactions/#Transaction","text":"There are situations where replay may be desired, however these are very rare and it is almost always recommended to specify the chain ID."}]},{"title":"Transactions -- Types -- transaction.r => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/transactions/#Transaction","text":"The r portion of the elliptic curve signatures for transaction."},{"link":"/v5/api/utils/transactions/#Transaction","text":"This is more accurately, the x coordinate of the point r (from which the y can be computed, along with v)."}]},{"title":"Transactions -- Types -- transaction.s => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/transactions/#Transaction","text":"The s portion of the elliptic curve signatures for transaction."}]},{"title":"Transactions -- Types -- transaction.v => number","blocks":[{"link":"/v5/api/utils/transactions/#Transaction","text":"The v portion of the elliptic curve signatures for transaction."},{"link":"/v5/api/utils/transactions/#Transaction","text":"This is used to refine which of the two possible points a given x-coordinate can have, and in EIP-155 is additionally used to encode the chain ID into the serialized transaction."}]},{"title":"Transactions -- Functions -- ethers.utils.parseTransaction( aBytesLike ) => Transaction","blocks":[{"link":"/v5/api/utils/transactions/#utils-parseTransaction","text":"Parses the transaction properties from a serialized transaction."}]},{"title":"Transactions -- Functions -- ethers.utils.serializeTransaction( tx [ , signature ] ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/transactions/#utils-serializeTransaction","text":"Computes the serialized transaction, optionally serialized with the a signature."},{"link":"/v5/api/utils/transactions/#utils-serializeTransaction","text":"If signature is not present, the unsigned serialized transaction is returned, which can be used to compute the hash necessary to sign."},{"link":"/v5/api/utils/transactions/#utils-serializeTransaction","text":"This function uses EIP-155 if a chainId is provided, otherwise legacy serialization is used."},{"link":"/v5/api/utils/transactions/#utils-serializeTransaction","text":"It is highly recommended to always specify a chainId."},{"link":"/v5/api/utils/transactions/#utils-serializeTransaction","text":"If signature includes a chain ID (explicitly or implicitly by using an EIP-155 v or _vs) it will be used to compute the chain ID."},{"link":"/v5/api/utils/transactions/#utils-serializeTransaction","text":"If there is a mismatch between the chain ID of transaction and signature an error is thrown."}]},{"title":"Web Utilities -- Functions -- ethers.utils.fetchJson( urlOrConnectionInfo [ , json [ , processFunc ] ] ) => Promise< any >","blocks":[{"link":"/v5/api/utils/web/#utils-fetchJson","text":"Fetch and parse the JSON content from urlOrConnectionInfo, with the optional body json and optionally processing the result with processFun before returning it."}]},{"title":"Web Utilities -- Functions -- ethers.utils.poll( pollFunc [ , options ] ) => Promise< any >","blocks":[{"link":"/v5/api/utils/web/#utils-poll","text":"Repeatedly call pollFunc using the PollOptions until it returns a value other than undefined."}]},{"title":"Web Utilities -- Functions -- connection.url => string","blocks":[{"link":"/v5/api/utils/web/#ConnectionInfo","text":"The URL to connect to."}]},{"title":"Web Utilities -- Functions -- connection.user => string","blocks":[{"link":"/v5/api/utils/web/#ConnectionInfo","text":"The username to use for Basic Authentication."},{"link":"/v5/api/utils/web/#ConnectionInfo","text":"The default is null (i.e."},{"link":"/v5/api/utils/web/#ConnectionInfo","text":"do not use basic authentication)."}]},{"title":"Web Utilities -- Functions -- connection.password => string","blocks":[{"link":"/v5/api/utils/web/#ConnectionInfo","text":"The password to use for Basic Authentication."},{"link":"/v5/api/utils/web/#ConnectionInfo","text":"The default is null (i.e."},{"link":"/v5/api/utils/web/#ConnectionInfo","text":"do not use basic authentication)."}]},{"title":"Web Utilities -- Functions -- connection.allowInsecureAuthentication => boolean","blocks":[{"link":"/v5/api/utils/web/#ConnectionInfo","text":"Allow Basic Authentication over non-secure HTTP."},{"link":"/v5/api/utils/web/#ConnectionInfo","text":"The default is false."}]},{"title":"Web Utilities -- Functions -- connection.timeout => number","blocks":[{"link":"/v5/api/utils/web/#ConnectionInfo","text":"How long to wait before rejecting with a timeout error."}]},{"title":"Web Utilities -- Functions -- connection.headers => {[key:string]:string}","blocks":[{"link":"/v5/api/utils/web/#ConnectionInfo","text":"Additional headers to include in the connection."}]},{"title":"Web Utilities -- Functions -- options.timeout => number","blocks":[{"link":"/v5/api/utils/web/#PollOptions","text":"The amount of time allowed to elapse before triggering a timeout error."}]},{"title":"Web Utilities -- Functions -- options.floor => number","blocks":[{"link":"/v5/api/utils/web/#PollOptions","text":"The minimum time limit to allow for Exponential Backoff."},{"link":"/v5/api/utils/web/#PollOptions","text":"The default is 0s."}]},{"title":"Web Utilities -- Functions -- options.ceiling => number","blocks":[{"link":"/v5/api/utils/web/#PollOptions","text":"The maximum time limit to allow for Exponential Backoff."},{"link":"/v5/api/utils/web/#PollOptions","text":"The default is 10s."}]},{"title":"Web Utilities -- Functions -- options.interval => number","blocks":[{"link":"/v5/api/utils/web/#PollOptions","text":"The interval used during Exponential Backoff calculation."},{"link":"/v5/api/utils/web/#PollOptions","text":"The default is 250ms."}]},{"title":"Web Utilities -- Functions -- options.retryLimit => number","blocks":[{"link":"/v5/api/utils/web/#PollOptions","text":"The number of times to retry in the event of an error or undefined is returned."}]},{"title":"Web Utilities -- Functions -- options.onceBlock => Provider","blocks":[{"link":"/v5/api/utils/web/#PollOptions","text":"If this is specified, the polling will wait on new blocks from provider before attempting the pollFunc again."}]},{"title":"Web Utilities -- Functions -- options.oncePoll => Provider","blocks":[{"link":"/v5/api/utils/web/#PollOptions","text":"If this is specified, the polling will occur on each poll cycle of provider before attempting the pollFunc again."}]},{"title":"Wordlists -- Wordlist -- wordlist.locale => string","blocks":[{"link":"/v5/api/utils/wordlists/#Wordlist","text":"The locale for this wordlist."}]},{"title":"Wordlists -- Wordlist -- wordlist.getWord( index ) => string","blocks":[{"link":"/v5/api/utils/wordlists/#Wordlist","text":"Returns the word at index."}]},{"title":"Wordlists -- Wordlist -- wordlist.getWordIndex( word ) => number","blocks":[{"link":"/v5/api/utils/wordlists/#Wordlist","text":"Returns the index of word within the wordlist."}]},{"title":"Wordlists -- Wordlist -- wordlist.split( mnemonic ) => Array< string >","blocks":[{"link":"/v5/api/utils/wordlists/#Wordlist","text":"Returns the mnemonic split into each individual word, according to a locale's valid whitespace character set."}]},{"title":"Wordlists -- Wordlist -- wordlist.join( words ) => string","blocks":[{"link":"/v5/api/utils/wordlists/#Wordlist","text":"Returns the mnemonic by joining words together using the whitespace that is standard for the locale."}]},{"title":"Wordlists -- Wordlist -- Wordlist.check( wordlists ) => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/wordlists/#Wordlist","text":"Checks that all words map both directions correctly and return the hash of the lists."},{"link":"/v5/api/utils/wordlists/#Wordlist","text":"Sub-classes should use this to validate the wordlist is correct against the official wordlist hash."}]},{"title":"Wordlists -- Wordlist -- Wordlist.register( wordlist [ , name ] ) => void","blocks":[{"link":"/v5/api/utils/wordlists/#Wordlist","text":"Register a wordlist with the list of wordlists, optionally overriding the registered name."}]},{"title":"Wordlists -- Languages","blocks":[{"link":"/v5/api/utils/wordlists/#wordlists--languages","text":"The official wordlists available at `ethers.wordlists`."},{"link":"/v5/api/utils/wordlists/#wordlists--languages","text":"In the browser, only the english language is available by default; to include the others (which increases the size of the library), see the dist files in the `ethers` package."}]},{"title":"Wordlists -- Languages -- ethers.wordlists.cz => Wordlist","blocks":[{"link":"/v5/api/utils/wordlists/#wordlists--languages","text":"The Czech Wordlist."}]},{"title":"Wordlists -- Languages -- ethers.wordlists.en => Wordlist","blocks":[{"link":"/v5/api/utils/wordlists/#wordlists--languages","text":"The English Wordlist."}]},{"title":"Wordlists -- Languages -- ethers.wordlists.es => Wordlist","blocks":[{"link":"/v5/api/utils/wordlists/#wordlists--languages","text":"The Spanish Wordlist."}]},{"title":"Wordlists -- Languages -- ethers.wordlists.fr => Wordlist","blocks":[{"link":"/v5/api/utils/wordlists/#wordlists--languages","text":"The French Wordlist."}]},{"title":"Wordlists -- Languages -- ethers.wordlists.it => Wordlist","blocks":[{"link":"/v5/api/utils/wordlists/#wordlists--languages","text":"The Italian Wordlist."}]},{"title":"Wordlists -- Languages -- ethers.wordlists.ja => Wordlist","blocks":[{"link":"/v5/api/utils/wordlists/#wordlists--languages","text":"The Japanese Wordlist."}]},{"title":"Wordlists -- Languages -- ethers.wordlists.ko => Wordlist","blocks":[{"link":"/v5/api/utils/wordlists/#wordlists--languages","text":"The Korean Wordlist."}]},{"title":"Wordlists -- Languages -- ethers.wordlists.zh_cn => Wordlist","blocks":[{"link":"/v5/api/utils/wordlists/#wordlists--languages","text":"The Simplified Chinese Wordlist."}]},{"title":"Wordlists -- Languages -- ethers.wordlists.zh_tw => Wordlist","blocks":[{"link":"/v5/api/utils/wordlists/#wordlists--languages","text":"The Traditional Chinese Wordlist."}]},{"title":"Provider API Keys","blocks":[{"link":"/v5/api-keys/#api-keys","text":"( TL; DR – sign up for your own API keys with the links below to improve your application performance )."},{"link":"/v5/api-keys/#api-keys","text":"When using a Provider backed by an API service (such as Alchemy, Etherscan or INFURA), the service requires an API key, which allows each service to track individual projects and their usage and permissions."},{"link":"/v5/api-keys/#api-keys","text":"The ethers library offers default API keys for each service, so that each Provider works out-of-the-box."},{"link":"/v5/api-keys/#api-keys","text":"These API keys are provided as a community resource by the backend services for low-traffic projects and for early prototyping."},{"link":"/v5/api-keys/#api-keys","text":"Since these API keys are shared by all users (that have not acquired their own API key), they are aggressively throttled which means retries occur more frequently and the responses are slower."},{"link":"/v5/api-keys/#api-keys","text":"It is highly recommended that you sign up for a free API key from each service for their free tier, which (depending on the service) includes many advantages:."},{"link":"/v5/api-keys/#api-keys","text":"a much higher request rate and concurrent request limit faster responses with fewer retries and timeouts useful metric tracking for performance tuning and to analyze your customer behaviour more advanced APIs, such as archive data or advanced log queries."}]},{"title":"Provider API Keys -- Etherscan","blocks":[{"link":"/v5/api-keys/#api-keys--etherscan","text":"Etherscan is an Ethereum block explorer, which is possibly the most useful developer tool for building and debugging Ethereum applications."},{"link":"/v5/api-keys/#api-keys--etherscan","text":"They offer an extensive collection of API endpoints which provide all the operations required to interact with the Ethereum Blockchain."},{"link":"/v5/api-keys/#api-keys--etherscan","text":"Sign up for a free API key on Etherscan."},{"link":"/v5/api-keys/#api-keys--etherscan","text":"Benefits:."},{"link":"/v5/api-keys/#api-keys--etherscan","text":"higher rate limit (since you are not using the shared rate limit) customer usage metrics."}]},{"title":"Provider API Keys -- INFURA","blocks":[{"link":"/v5/api-keys/#api-keys--infura","text":"The INFURA service has been around for quite some time and is very robust and reliable and highly recommended."},{"link":"/v5/api-keys/#api-keys--infura","text":"They offer a standard JSON-RPC interface and a WebSocket interface, which makes interaction with standard tools versatile, simple and straight forward."},{"link":"/v5/api-keys/#api-keys--infura","text":"Sign up for a free Project ID on INFURA."},{"link":"/v5/api-keys/#api-keys--infura","text":"Benefits:."},{"link":"/v5/api-keys/#api-keys--infura","text":"higher rate limit customer usage metrics access to archive data (requires paid upgrade)."}]},{"title":"Provider API Keys -- Alchemy","blocks":[{"link":"/v5/api-keys/#api-keys--alchemy","text":"The Alchemy service has been around a few years and is also very robust and reliable."},{"link":"/v5/api-keys/#api-keys--alchemy","text":"They offer a standard JSON-RPC interface and a WebSocket interface, as well as a collection of advanced APIs for interacting with tokens and to assist with debugging."},{"link":"/v5/api-keys/#api-keys--alchemy","text":"Sign up for a free API key on Alchemy."},{"link":"/v5/api-keys/#api-keys--alchemy","text":"Benefits:."},{"link":"/v5/api-keys/#api-keys--alchemy","text":"higher rate limit customer usage metrics access to advanced token balance and metadata APIs access to advanced debugging trace and revert reason APIs."}]},{"title":"Provider API Keys -- Pocket Gateway","blocks":[{"link":"/v5/api-keys/#api-keys--pocket-gateway","text":"Sign up for a free API key on Pocket."},{"link":"/v5/api-keys/#api-keys--pocket-gateway","text":"Benefits:."},{"link":"/v5/api-keys/#api-keys--pocket-gateway","text":"customer usage metrics decentralized Access to Blockchain Infrastructure Stake as opposed to paying a monthly fee Highly redundant global set of nodes incentivized by cryptoeconomic incentives."}]},{"title":"Provider API Keys -- Creating a Default Provider","blocks":[{"link":"/v5/api-keys/#api-keys--getDefaultProvider","text":"The default provider connects to multiple backends and verifies their results internally, making it simple to have a high level of trust in third-party services."},{"link":"/v5/api-keys/#api-keys--getDefaultProvider","text":"A second optional parameter allows API keys to be specified to each Provider created internally and any API key omitted will fallback onto using the default API key for that service."},{"link":"/v5/api-keys/#api-keys--getDefaultProvider","text":"It is highly recommended that you provide an API for each service, to maximize your applications performance."}]},{"title":"Assembler","blocks":[{"link":"/v5/cli/asm/#cli-asm","text":"The assembler Command-Line utility allows you to assemble the Ethers ASM Dialect into deployable EVM bytecode and disassemble EVM bytecode into human-readable mnemonics."}]},{"title":"Assembler -- Example Input Files -- Note: Bytecode File Syntax","blocks":[{"link":"/v5/cli/asm/","text":"A bin file may be made up of multiple blocks of bytecode, each may optionally begin with a 0x prefix, all of which must be of even length (since bytes are required, with 2 nibbles per byte)."},{"link":"/v5/cli/asm/","text":"All whitespace is ignored."}]},{"title":"Assembler -- Assembler Examples","blocks":[{"link":"/v5/cli/asm/#cli-asm","text":"The assembler converts an Ethers ASM Dialect into bytecode by running multiple passes of an assemble stage, each pass more closely approximating the final result."},{"link":"/v5/cli/asm/#cli-asm","text":"This allows small portions of the bytecode to be massaged and tweaked until the bytecode stabilizes."},{"link":"/v5/cli/asm/#cli-asm","text":"This allows for more compact jump destinations and for code to include more advanced meta-programming techniques."}]},{"title":"Assembler -- Assembler Examples -- --define KEY=VALUE or --define FLAG","blocks":[{"link":"/v5/cli/asm/","text":"This allows key/value pairs (where the value is a string) and flags (which the value is true) to be passed along to the assembler, which can be accessed in Scripting Blocks, such as {{= defined.someKey }}."}]},{"title":"Assembler -- Assembler Examples -- --ignore-warnings","blocks":[{"link":"/v5/cli/asm/","text":"By default any warning will be treated like an error."},{"link":"/v5/cli/asm/","text":"This enabled by-passing warnings."}]},{"title":"Assembler -- Assembler Examples -- --pic","blocks":[{"link":"/v5/cli/asm/","text":"When a program is assembled, the labels are usually given as an absolute byte position, which can be jumped to for loops and control flow."},{"link":"/v5/cli/asm/","text":"This means that a program must be installed at a specific location."},{"link":"/v5/cli/asm/","text":"Byt specifying the Position Independent Code flag, code will be generated in a way such that all offsets are relative, allowing the program to be moved without any impact to its logic."},{"link":"/v5/cli/asm/","text":"This does incur an additional gas cost of 8 gas per offset access though."}]},{"title":"Assembler -- Assembler Examples -- --target LABEL","blocks":[{"link":"/v5/cli/asm/","text":"All programs have a root scope named _ which is by default assembled."},{"link":"/v5/cli/asm/","text":"This option allows another labelled target (either a Scopes or a Data Segment to be assembled instead."},{"link":"/v5/cli/asm/","text":"The entire program is still assembled per usual, so this only impacts which part of the program is output."}]},{"title":"Assembler -- Disassembler Examples","blocks":[{"link":"/v5/cli/asm/#cli-asm","text":"A disassembled program shows offsets and mnemonics for the given bytecode."},{"link":"/v5/cli/asm/#cli-asm","text":"This format may change in the future to be more human-readable."}]},{"title":"Ethereum Naming Service -- Examples","blocks":[{"link":"/v5/cli/ens/","text":"TODO examples."}]},{"title":"Sandbox Utility","blocks":[{"link":"/v5/cli/ethers/","text":"The sandbox utility provides a simple way to use the most common ethers utilities required during learning, debugging and managing interactions with the Ethereum network."},{"link":"/v5/cli/ethers/","text":"If no command is given, it will enter a REPL interface with many of the ethers utilities already exposed."}]},{"title":"Sandbox Utility -- Examples -- Scripting","blocks":[{"link":"/v5/cli/ethers/#cliex-scripting","text":"The eval command can be used to execute simple one-line scripts from the command line to be passed into other commands or stored in script environment variables."}]},{"title":"Sandbox Utility -- Examples -- Using Mnemonics (with a password)","blocks":[{"link":"/v5/cli/ethers/#cliex-mnemonicpassword","text":"All mnemonic phrases have a password, but the default is to use the empty string (i.e."},{"link":"/v5/cli/ethers/#cliex-mnemonicpassword","text":"\"\") as the password."},{"link":"/v5/cli/ethers/#cliex-mnemonicpassword","text":"If you have a password on your mnemonic, the --mnemonic-password will prompt for the password to use to decrypt the account."}]},{"title":"Sandbox Utility -- Examples -- Using Mnemonics (with experimental memory-hard passwords)","blocks":[{"link":"/v5/cli/ethers/#cliex-mnemonicpassword-xxx","text":"The --xxx-mnemonic-password is similar to the --mnemonic-password options, which uses a password to decrypt the account for a mnemonic, however it passes the password through the scrypt password-based key derivation function first, which is intentionally slow and makes a brute-force attack far more difficult."}]},{"title":"Sandbox Utility -- Examples -- Note","blocks":[{"link":"/v5/cli/ethers/#cliex-mnemonicpassword-xxx","text":"This is still an experimental feature (hence the xxx)."}]},{"title":"Making Your Own","blocks":[{"link":"/v5/cli/plugin/#cli-diy","text":"The cli library is meant to make it easy to create command line utilities of your own."}]},{"title":"Making Your Own -- CLI","blocks":[{"link":"/v5/cli/plugin/#cli-cli","text":"A CLI handles parsing all the command-line flags, options and arguments and instantiates a Plugin to process the command."},{"link":"/v5/cli/plugin/#cli-cli","text":"A CLI may support multiple Plugin's in which case the first argument is used to determine which to run (or if no arguments, the default plugin will be selected) or may be designed to be standalone, in which case exactly one Plugin will be used and no command argument is allowed."}]},{"title":"Making Your Own -- CLI -- addPlugin( command , pluginClass ) => void","blocks":[{"link":"/v5/cli/plugin/#cli-addplugin","text":"Add a plugin class for the command."},{"link":"/v5/cli/plugin/#cli-addplugin","text":"After all options and flags have been consumed, the first argument will be consumed and the associated plugin class will be instantiated and run."}]},{"title":"Making Your Own -- CLI -- setPlugin( pluginClass ) => void","blocks":[{"link":"/v5/cli/plugin/#cli-setplugin","text":"Set a dedicated Plugin class which will handle all input."},{"link":"/v5/cli/plugin/#cli-setplugin","text":"This may not be used in conjunction with addPlugin and will not automatically accept a command from the arguments."}]},{"title":"Making Your Own -- CLI -- showUsage( [ message = \"\" [ , status = 0 ] ] ) => never","blocks":[{"link":"/v5/cli/plugin/#cli-showusage","text":"Shows the usage help screen for the CLI and terminates."}]},{"title":"Making Your Own -- CLI -- run( args ) => Promise< void >","blocks":[{"link":"/v5/cli/plugin/#cli-run","text":"Usually the value of args passed in will be process.argv.slice(2)."}]},{"title":"Making Your Own -- Plugin","blocks":[{"link":"/v5/cli/plugin/#cli-plugin","text":"Each Plugin manages each command of a CLI and is executed in phases."},{"link":"/v5/cli/plugin/#cli-plugin","text":"If the usage (i.e."},{"link":"/v5/cli/plugin/#cli-plugin","text":"help) of a CLI is requested, the static methods getHelp and getOptionHelp are used to generate the help screen."},{"link":"/v5/cli/plugin/#cli-plugin","text":"Otherwise, a plugin is instantiated and the prepareOptions is called."},{"link":"/v5/cli/plugin/#cli-plugin","text":"Each plugin must call super.prepareOptions, otherwise the basic options are not yet processed."},{"link":"/v5/cli/plugin/#cli-plugin","text":"During this time a Plugin should consume all the flags and options it understands, since any left over flags or options will cause the CLI to bail and issue an unknown option error."},{"link":"/v5/cli/plugin/#cli-plugin","text":"This should throw if a value for a given option is invalid or some combination of options and flags is not allowed."},{"link":"/v5/cli/plugin/#cli-plugin","text":"Once the prepareOptions is complete (the returned promise is resolved), the prepareArguments is called."},{"link":"/v5/cli/plugin/#cli-plugin","text":"This should validate the number of arguments expected and throw an error if there are too many or too few arguments or if any arguments do not make sense."},{"link":"/v5/cli/plugin/#cli-plugin","text":"Once the prepareArguments is complete (the returned promise is resolved), the run is called."}]},{"title":"Making Your Own -- Plugin -- plugin.network => Network","blocks":[{"link":"/v5/cli/plugin/#cli-plugin","text":"The network this plugin is running for."}]},{"title":"Making Your Own -- Plugin -- plugin.provider => Provider","blocks":[{"link":"/v5/cli/plugin/#cli-plugin","text":"The provider for this plugin is running for."}]},{"title":"Making Your Own -- Plugin -- plugin.accounts => Array< Signer >","blocks":[{"link":"/v5/cli/plugin/#cli-plugin","text":"The accounts passed into the plugin using --account, --account-rpc and --account-void which this plugin can use."}]},{"title":"Making Your Own -- Plugin -- plugin.gasLimit => BigNumber","blocks":[{"link":"/v5/cli/plugin/#cli-plugin","text":"The gas limit this plugin should use."},{"link":"/v5/cli/plugin/#cli-plugin","text":"This is null if unspecified."}]},{"title":"Making Your Own -- Plugin -- plugin.gasPrice => BigNumber","blocks":[{"link":"/v5/cli/plugin/#cli-plugin","text":"The gas price this plugin should use."},{"link":"/v5/cli/plugin/#cli-plugin","text":"This is null if unspecified."}]},{"title":"Making Your Own -- Plugin -- plugin.nonce => number","blocks":[{"link":"/v5/cli/plugin/#cli-plugin","text":"The initial nonce for the account this plugin should use."}]},{"title":"Making Your Own -- Plugin -- plugin.getAddress( addressOrName [ , message = \"\" , [ allowZero = false ] ] ) => Promise< string >","blocks":[{"link":"/v5/cli/plugin/#plugin-getaddress","text":"A plugin should use this method to resolve an address."},{"link":"/v5/cli/plugin/#plugin-getaddress","text":"If the resolved address is the zero address and allowZero is not true, an error is raised."}]},{"title":"Making Your Own -- Plugin -- plugin.dump( header , info ) => void","blocks":[{"link":"/v5/cli/plugin/#plugin-dump","text":"Dumps the contents of info to the console with a header in a nicely formatted style."},{"link":"/v5/cli/plugin/#plugin-dump","text":"In the future, plugins may support a JSON output format which will automatically work with this method."}]},{"title":"Making Your Own -- Plugin -- plugin.throwUsageError( [ message = \"\" ] ) => never","blocks":[{"link":"/v5/cli/plugin/#plugin-throwusageerror","text":"Stops execution of the plugin and shows the help screen of the plugin with the optional message."}]},{"title":"Making Your Own -- Plugin -- plugin.throwError( message ) => never","blocks":[{"link":"/v5/cli/plugin/#plugin-throwerror","text":"Stops execution of the plugin and shows message."}]},{"title":"Making Your Own -- Plugin -- Plugin.getHelp => Help","blocks":[{"link":"/v5/cli/plugin/#plugin-gethelp","text":"Each subclass should implement this static method which is used to generate the help screen."}]},{"title":"Making Your Own -- Plugin -- Plugin.getOptionHelp => Array< Help >","blocks":[{"link":"/v5/cli/plugin/#plugin-getoptionshelp","text":"Each subclass should implement this static method if it supports additional options which is used to generate the help screen."}]},{"title":"Making Your Own -- ArgParser","blocks":[{"link":"/v5/cli/plugin/#cli-argparser","text":"The ArgParser is used to parse a command line into flags, options and arguments."},{"link":"/v5/cli/plugin/#cli-argparser","text":"Flags are simple binary options (such as the --yes), which are true if present otherwise false."},{"link":"/v5/cli/plugin/#cli-argparser","text":"Options require a single parameter follow them on the command line (such as --account wallet.json, which has the name account and the value wallet.json)."},{"link":"/v5/cli/plugin/#cli-argparser","text":"Arguments are all other values on the command line, and are not accessed through the ArgParser directly."},{"link":"/v5/cli/plugin/#cli-argparser","text":"When a CLI is run, an ArgParser is used to validate the command line by using prepareOptions, which consumes all flags and options leaving only the arguments behind, which are then passed into prepareArgs."}]},{"title":"Making Your Own -- ArgParser -- argParser.consumeFlag( name ) => boolean","blocks":[{"link":"/v5/cli/plugin/#argparser-consumeflag","text":"Remove the flag name and return true if it is present."}]},{"title":"Making Your Own -- ArgParser -- argParser.consumeMultiOptions( names ) => Array< {name:string,value:string} >","blocks":[{"link":"/v5/cli/plugin/#argparser-consumemultioptions","text":"Remove all options which match any name in the Array of names with their values returning the list (in order) of values."}]},{"title":"Making Your Own -- ArgParser -- argParser.consumeOption( name ) => string","blocks":[{"link":"/v5/cli/plugin/#argparser-consumeoption","text":"Remove the option with its value for name and return the value."},{"link":"/v5/cli/plugin/#argparser-consumeoption","text":"This will throw a UsageError if the option is included multiple times."}]},{"title":"Making Your Own -- ArgParser -- argParser.consumeOptions( name ) => Array< string >","blocks":[{"link":"/v5/cli/plugin/#argparser-consumeoptions","text":"Remove all options with their values for name and return the list (in order) of values."}]},{"title":"TypeScript -- Examples","blocks":[{"link":"/v5/cli/typescript/","text":"TODO."}]},{"title":"Best Practices -- Network Changes","blocks":[{"link":"/v5/concepts/best-practices/#best-practices","text":"Handling a change in the network (e.g."},{"link":"/v5/concepts/best-practices/#best-practices","text":"Ropsten vs Mainnet) is incredibly complex and a slight failure can at best make your application seem confusing and at worst cause the loss of funds, leak private data or misrepresent what an action performed."},{"link":"/v5/concepts/best-practices/#best-practices","text":"Luckily, standard users should likely never change their networks unless tricked to do so or they make a mistake."},{"link":"/v5/concepts/best-practices/#best-practices","text":"This is a problem you mainly need to worry about for developers, and most developers should understand the vast array of issues surrounding a network change during application operation and will understand the page reloading (which is already the default behaviour in many clients)."},{"link":"/v5/concepts/best-practices/#best-practices","text":"So, the best practice when a network change occurs is to simply refresh the page."},{"link":"/v5/concepts/best-practices/#best-practices","text":"This should cause all your UI components to reset to a known-safe state, including any banners and warnings to your users if they are on an unsupported network."},{"link":"/v5/concepts/best-practices/#best-practices","text":"This can be accomplished by using the following function:."}]},{"title":"Events","blocks":[{"link":"/v5/concepts/events/","text":"Explain how topics and such work."}]},{"title":"Events -- Solidity Topics","blocks":[{"link":"/v5/concepts/events/","text":"How to compute the topic..."}]},{"title":"Events -- Logs and Filtering","blocks":[{"link":"/v5/concepts/events/","text":"Example hog logs are used."},{"link":"/v5/concepts/events/","text":"Link to provider.getLogs and contract.on."}]},{"title":"Events -- Logs and Filtering -- Filters","blocks":[{"link":"/v5/concepts/events/","text":"Filter are used as a way to query ..."},{"link":"/v5/concepts/events/","text":"efficient, explain bloom filters lightly."},{"link":"/v5/concepts/events/","text":"A filter may have up to 4 topic-sets, where each topic-set refers to a condition that must match the log topic in that position (i.e."},{"link":"/v5/concepts/events/","text":"each condition is AND-ed together)."},{"link":"/v5/concepts/events/","text":"If a topic-set is null, a log topic in that position is not filtered at all and any value matches."},{"link":"/v5/concepts/events/","text":"If a topic-set is a single topic, a log topic in that position must match that topic."},{"link":"/v5/concepts/events/","text":"If a topic-set is an array of topics, a log topic in that position must match any one of the topics (i.e."},{"link":"/v5/concepts/events/","text":"the topic in this position are OR-ed)."}]},{"title":"Events -- Logs and Filtering -- Example Log Matching","blocks":[{"link":"/v5/concepts/events/","text":"To simplify life, ..., explain here, the contract API."}]},{"title":"Events -- Logs and Filtering -- Other Things? TODO","blocks":[{"link":"/v5/concepts/events/","text":"Explain what happens to strings and bytes, how to filter and retain the value."}]},{"title":"Gas","blocks":[{"link":"/v5/concepts/gas/#gas","text":"Explain attack vectors."}]},{"title":"Gas -- Gas Price","blocks":[{"link":"/v5/concepts/gas/#gas-price","text":"The gas price is used somewhat like a bid, indicating an amount you are willing to pay (per unit of execution) to have your transaction processed."}]},{"title":"Ethereum Basics","blocks":[{"link":"/v5/concepts/","text":"This is a brief overview of some aspects of Ethereum and blockchains which developers can make use of or should be aware of."},{"link":"/v5/concepts/","text":"This section is sparse at the moment, but will be expanded as time goes on."}]},{"title":"Security -- Key Derivation Functions","blocks":[{"link":"/v5/concepts/security/#security--pbkdf","text":"This is not specific to Ethereum, but is a useful technique to understand and has some implications on User Experience."},{"link":"/v5/concepts/security/#security--pbkdf","text":"Many people are concerned that encrypting and decrypting an Ethereum wallet is quite slow and can take quite some time."},{"link":"/v5/concepts/security/#security--pbkdf","text":"It is important to understand this is intentional and provides much stronger security."},{"link":"/v5/concepts/security/#security--pbkdf","text":"The algorithm usually used for this process is scrypt, which is a memory and CPU intensive algorithm which computes a key (fixed-length pseudo-random series of bytes) for a given password."}]},{"title":"Security -- Key Derivation Functions -- Why does it take so long?","blocks":[{"link":"/v5/concepts/security/#security--pbkdf","text":"The goal is to use as much CPU and memory as possible during this algorithm, so that a single computer can only compute a very small number of results for some fixed amount of time."},{"link":"/v5/concepts/security/#security--pbkdf","text":"To scale up an attack, the attacker requires additional computers, increasing the cost to brute-force attack to guess the password."},{"link":"/v5/concepts/security/#security--pbkdf","text":"For example, if a user knows their correct password, this process may take 10 seconds for them to unlock their own wallet and proceed."},{"link":"/v5/concepts/security/#security--pbkdf","text":"But since an attacker does not know the password, they must guess; and each guess also requires 10 seconds."},{"link":"/v5/concepts/security/#security--pbkdf","text":"So, if they wish to try guessing 1 million passwords, their computer would be completely tied up for 10 million seconds, or around 115 days."},{"link":"/v5/concepts/security/#security--pbkdf","text":"Without using an algorithm like this, a user would be able to log in instantly, however, 1 million passwords would only take a few seconds to attempt."},{"link":"/v5/concepts/security/#security--pbkdf","text":"Even secure passwords would likely be broken within a short period of time."},{"link":"/v5/concepts/security/#security--pbkdf","text":"There is no way the algorithm can be faster for a legitimate user without also being faster for an attacker."}]},{"title":"Security -- Key Derivation Functions -- Mitigating the User Experience","blocks":[{"link":"/v5/concepts/security/#security--pbkdf","text":"Rather than reducing the security (see below), a better practice is to make the user feel better about waiting."},{"link":"/v5/concepts/security/#security--pbkdf","text":"The Ethers encryption and decryption API allows the developer to incorporate a progress bar, by passing in a progress callback which will be periodically called with a number between 0 and 1 indication percent completion."},{"link":"/v5/concepts/security/#security--pbkdf","text":"In general a progress bar makes the experience feel faster, as well as more comfortable since there is a clear indication how much (relative) time is remaining."},{"link":"/v5/concepts/security/#security--pbkdf","text":"Additionally, using language like \"decrypting...\" in a progress bar makes a user feel like there time is not being needlessly wasted."}]},{"title":"Security -- Key Derivation Functions -- Work-Arounds (not recommended)","blocks":[{"link":"/v5/concepts/security/#security--pbkdf","text":"There are ways to reduce the time required to decrypt an Ethereum JSON Wallet, but please keep in mind that doing so discards nearly all security on that wallet."},{"link":"/v5/concepts/security/#security--pbkdf","text":"The scrypt algorithm is designed to be tuned."},{"link":"/v5/concepts/security/#security--pbkdf","text":"The main purpose of this is to increase the difficulty as time goes on and computers get faster, but it can also be tuned down in situations where the security is less important."}]},{"title":"Contributing and Hacking","blocks":[{"link":"/v5/contributing/#contributing","text":"The ethers.js library is something that I've written out of necessity, and has grown somewhat organically over time."},{"link":"/v5/contributing/#contributing","text":"Many things are the way they are for good (at the time, at least) reasons, but I always welcome criticism, and am completely willing to have my mind changed on things."},{"link":"/v5/contributing/#contributing","text":"So, pull requests are always welcome, but please keep a few points in mind:."},{"link":"/v5/contributing/#contributing","text":"Backwards-compatibility-breaking changes will not be accepted; they may be considered for the next major version Security is important; adding dependencies require fairly convincing arguments as to why The library aims to be lean, so keep an eye on the dist/ethers.min.js file size before and after your changes Add test cases for both expected and unexpected input Any new features need to be supported by me (future issues, documentation, testing, migration), so anything that is overly complicated or specific may not be accepted."},{"link":"/v5/contributing/#contributing","text":"In general, please start an issue before beginning a pull request, so we can have a public discussion and figure out the best way to address the problem/feature."},{"link":"/v5/contributing/#contributing","text":":)."}]},{"title":"Contributing and Hacking -- Building","blocks":[{"link":"/v5/contributing/#contributing--building","text":"If you wish to modify the source code, there are a few steps involved in setting up your environment."},{"link":"/v5/contributing/#contributing--building","text":"Since the library uses a monorepo, you must install an initial required set of libraries, which can then be used to install the remaining libraries used within each package, as well as link all the packages within the repo with each other."}]},{"title":"Contributing and Hacking -- Making your changes","blocks":[{"link":"/v5/contributing/#contributing--updating","text":"TODO: Add more information here."}]},{"title":"Contributing and Hacking -- Documentation","blocks":[{"link":"/v5/contributing/#contributing--documentation","text":"The documents are generated using Flatworm documentation generation tool, which was written for the purpose of writing the documentation for ethers."},{"link":"/v5/contributing/#contributing--documentation","text":"Style Guide (this section will have much more coming):."},{"link":"/v5/contributing/#contributing--documentation","text":"Try to keep lines no longer than around 80 characters Avoid inline links in the source; use the externalLinks field in the config.js Prefix external links with link- Changing an anchor name must be well justified, as it will break all existing links to that section; flatworm will support symlinks in the future In general, I aim for xonsistency; look to similar situations throughout the documentation."}]},{"title":"Contributing and Hacking -- Documentation -- Building","blocks":[{"link":"/v5/contributing/#contributing--documentation","text":"To build the documentation, you should first follow the above steps to build the ethers library."},{"link":"/v5/contributing/#contributing--documentation","text":"Building the docs will generate several types of output:."},{"link":"/v5/contributing/#contributing--documentation","text":"A full set of HTML pages, linking across each other A single one-page HTML page with all pages linking to local anchors A full set of README.md pages organized to be browsable and linkable in GitHub A metadata dump for tool ingestion (still needs more work) (@TODO; only half done) The documentation as a LaTeX and generated PDF."}]},{"title":"Contributing and Hacking -- Documentation -- Evaluation","blocks":[{"link":"/v5/contributing/#contributing--documentation","text":"When building the documentation, all code samples are run through a JavaScript VM to ensure there are no typos in the example code, as well the exact output of results are injected into the output, so there is no need to keep the results and code in-sync."},{"link":"/v5/contributing/#contributing--documentation","text":"However, this can be a bit of a headache when making many small changes, so to build the documentation faster, you can skip the evaluation step, which will inject the code directly."}]},{"title":"Contributing and Hacking -- Documentation -- Previewing Changes","blocks":[{"link":"/v5/contributing/#contributing--documentation","text":"To preview the changes locally, you can use any standard web server and run from the /docs/ folder, or use the built-in web server."},{"link":"/v5/contributing/#contributing--documentation","text":"The same caveats as normal web development apply, such flushing browser caches after changing (and re-building) the docs."}]},{"title":"Cookbook","blocks":[{"link":"/v5/cookbook/","text":"A collection (that will grow over time) of common, simple snippets of code that are in general useful."}]},{"title":"React Native (and ilk)","blocks":[{"link":"/v5/cookbook/react-native/#cookbook-reactnative","text":"The React Native framework has become quite popular and has many popular forks, such as Expo."},{"link":"/v5/cookbook/react-native/#cookbook-reactnative","text":"React Native is based on JavaScriptCore (part of WebKit) and does not use Node.js or the common Web and DOM APIs."},{"link":"/v5/cookbook/react-native/#cookbook-reactnative","text":"As such, there are many operations missing that a normal web environment or Node.js instance would provide."},{"link":"/v5/cookbook/react-native/#cookbook-reactnative","text":"For this reason, there is a Shims module provided to fill in the holes."}]},{"title":"React Native (and ilk) -- Installing","blocks":[{"link":"/v5/cookbook/react-native/#cookbook-reactnative-shims","text":"To use ethers in React Native, you must either provide shims for the needed missing functionality, or use the ethers.js shim."},{"link":"/v5/cookbook/react-native/#cookbook-reactnative-shims","text":"It is HIGHLY RECOMMENDED you check out the [security section](cookbook-reactnative-security> below for instructions on installing packages which can affect the security of your application."},{"link":"/v5/cookbook/react-native/#cookbook-reactnative-shims","text":"After installing packages, you may need to restart your packager and company."}]},{"title":"React Native (and ilk) -- Security","blocks":[{"link":"/v5/cookbook/react-native/#cookbook-reactnative-security","text":"The React Native environment does not contain a secure random source, which is used when computing random private keys."},{"link":"/v5/cookbook/react-native/#cookbook-reactnative-security","text":"This could result in private keys that others could possibly guess, allowing funds to be stolen and assets manipulated."},{"link":"/v5/cookbook/react-native/#cookbook-reactnative-security","text":"For this reason, it is HIGHLY RECOMMENDED to also install the React Native get-random-values, which must be included before the shims."},{"link":"/v5/cookbook/react-native/#cookbook-reactnative-security","text":"If it worked correctly you should not receive any warning in the console regarding missing secure random sources."}]},{"title":"Flatworm Docs","blocks":[{"link":"/v5/documentation/#flatworm","text":"The Flatworm Docs rendering engine is designed to be very simple, but provide enough formatting necessary for documenting JavaScript libraries."},{"link":"/v5/documentation/#flatworm","text":"A lot of its inspiration came from Read the Docs and the Sphinx project."}]},{"title":"Flatworm Docs -- Fragments","blocks":[{"link":"/v5/documentation/#flatworm-fragments","text":"Each page is made up of fragments."},{"link":"/v5/documentation/#flatworm-fragments","text":"A fragment is a directive, with an value and optional link, extensions and a body."},{"link":"/v5/documentation/#flatworm-fragments","text":"Many directives support markdown in their value and body."},{"link":"/v5/documentation/#flatworm-fragments","text":"A fragment's body continues until another fragment is encountered."}]},{"title":"Flatworm Docs -- Fragments -- _section: TITLE","blocks":[{"link":"/v5/documentation/#flatworm-directive","text":"A section has its TITLE in an H1 font."},{"link":"/v5/documentation/#flatworm-directive","text":"Sections are linked to in Table of Contents and have a dividing line drawn above them."},{"link":"/v5/documentation/#flatworm-directive","text":"The body supports markdown."},{"link":"/v5/documentation/#flatworm-directive","text":"There should only be one _section: per page."},{"link":"/v5/documentation/#flatworm-directive","text":"Extensions: @inherit, @src, @nav, @note."}]},{"title":"Flatworm Docs -- Fragments -- _subsection: TITLE","blocks":[{"link":"/v5/documentation/#flatworm-directive","text":"A subsection has its TITLE in an H2 font."},{"link":"/v5/documentation/#flatworm-directive","text":"Subsections are linked to in Table of Contents and have a dividing line drawn above them."},{"link":"/v5/documentation/#flatworm-directive","text":"The title and body support markdown."},{"link":"/v5/documentation/#flatworm-directive","text":"Extensions: @inherit, @src, @note."}]},{"title":"Flatworm Docs -- Fragments -- _heading: TITLE","blocks":[{"link":"/v5/documentation/#flatworm-directive","text":"A heading has its TITLE in an H3 font."},{"link":"/v5/documentation/#flatworm-directive","text":"The title and body support markdown."},{"link":"/v5/documentation/#flatworm-directive","text":"Extensions: @inherit, @src, @note."}]},{"title":"Flatworm Docs -- Fragments -- _definition: TERM","blocks":[{"link":"/v5/documentation/#flatworm-directive","text":"A definition has its TERM in normal text and the body is indented."},{"link":"/v5/documentation/#flatworm-directive","text":"The title and body support markdown."}]},{"title":"Flatworm Docs -- Fragments -- _property: SIGNATURE","blocks":[{"link":"/v5/documentation/#flatworm-directive","text":"A property has its JavaScript SIGNATURE formatted."},{"link":"/v5/documentation/#flatworm-directive","text":"The body supports markdown and the return portion of the signature support markdown links."},{"link":"/v5/documentation/#flatworm-directive","text":"Extensions: @src."}]},{"title":"Flatworm Docs -- Fragments -- _note: BANNER","blocks":[{"link":"/v5/documentation/#flatworm-directive","text":"A note is placed in a blue bordered-box to draw attention to it."},{"link":"/v5/documentation/#flatworm-directive","text":"The body supports markdown."}]},{"title":"Flatworm Docs -- Fragments -- _warning: BANNER","blocks":[{"link":"/v5/documentation/#flatworm-directive","text":"A warning is placed in an orange bordered-box to draw attention to it."},{"link":"/v5/documentation/#flatworm-directive","text":"The body supports markdown."}]},{"title":"Flatworm Docs -- Fragments -- _code: CAPTION","blocks":[{"link":"/v5/documentation/#flatworm-directive","text":"Creates a Code block."},{"link":"/v5/documentation/#flatworm-directive","text":"The body does not support markdown, and will be output exactly as is, with the exception of Code Evaluation."},{"link":"/v5/documentation/#flatworm-directive","text":"If a line begins with a \"_\", it should be escaped with a \"\\\"."},{"link":"/v5/documentation/#flatworm-directive","text":"Extensions: @lang."}]},{"title":"Flatworm Docs -- Fragments -- _table: FOOTER","blocks":[{"link":"/v5/documentation/#flatworm-directive","text":"Creates a Table structured according to the body."},{"link":"/v5/documentation/#flatworm-directive","text":"Each cell contents supports markdown and variables supports markdown."},{"link":"/v5/documentation/#flatworm-directive","text":"Extensions: @style."}]},{"title":"Flatworm Docs -- Fragments -- _toc:","blocks":[{"link":"/v5/documentation/#flatworm-directive","text":"A toc injects a Table of Contents, loading each line of the body as a filename and recursively loads the toc if present, otherwise all the sections and subsections."},{"link":"/v5/documentation/#flatworm-directive","text":"The body does not support markdown, as it is interpreted as a list of files and directories to process."}]},{"title":"Flatworm Docs -- Fragments -- _null:","blocks":[{"link":"/v5/documentation/#flatworm-directive","text":"A null is used to terminated a directive."},{"link":"/v5/documentation/#flatworm-directive","text":"For example, after a definition, the bodies are indented, so a null can be used to reset the indentation."},{"link":"/v5/documentation/#flatworm-directive","text":"The body supports markdown."}]},{"title":"Flatworm Docs -- Markdown","blocks":[{"link":"/v5/documentation/#flatworm-markdown","text":"The markdown is simple and does not have the flexibility of other dialects, but allows for bold, italic, underlined, monospaced, superscript and strike text, supporting links and lists."},{"link":"/v5/documentation/#flatworm-markdown","text":"Lists are rendered as blocks of a body, so cannot be used within a title or within another list."}]},{"title":"Flatworm Docs -- Code","blocks":[{"link":"/v5/documentation/#flatworm--code","text":"The code directive creates a monospace, contained block useful for displaying code samples."}]},{"title":"Flatworm Docs -- Code -- JavaScript Evaluation","blocks":[{"link":"/v5/documentation/#flatworm--code-eval","text":"For JavaScript files, the file is executed with some simple substitution."},{"link":"/v5/documentation/#flatworm--code-eval","text":"A bare //! on a line is replaced with the result of the last statement."},{"link":"/v5/documentation/#flatworm--code-eval","text":"Building will fail if an error is thrown."},{"link":"/v5/documentation/#flatworm--code-eval","text":"A bare //!error is replaced with the throw error."},{"link":"/v5/documentation/#flatworm--code-eval","text":"Building will fail if an error is not thrown."},{"link":"/v5/documentation/#flatworm--code-eval","text":"Also any code included between the lines // and // will be omitted from the output, which can be used to setup variables."}]},{"title":"Flatworm Docs -- Code -- Languages","blocks":[{"link":"/v5/documentation/#flatworm--code","text":"The language can be specified using the @lang extension."}]},{"title":"Flatworm Docs -- Tables","blocks":[{"link":"/v5/documentation/#flatworm--table","text":"The table directive consumes the entire body up until the next directive."},{"link":"/v5/documentation/#flatworm--table","text":"To terminate a table early to begin a text block, use a _null: directive."},{"link":"/v5/documentation/#flatworm--table","text":"Each line of the body should be Row Data or a Variable Declaration (or continuation of a Variable Declaration)."},{"link":"/v5/documentation/#flatworm--table","text":"Blank lines are ignored."}]},{"title":"Flatworm Docs -- Tables -- Row Data","blocks":[{"link":"/v5/documentation/#flatworm--table-row","text":"Each Row Data line must begin and end with a \"|\", with each gap representing the cell data, alignment with optional column and row spanning."}]},{"title":"Flatworm Docs -- Tables -- Alignment","blocks":[{"link":"/v5/documentation/#flatworm--table-alignment","text":"The alignment for a cell is determined by the whitespace surrounding the cell data."}]},{"title":"Flatworm Docs -- Tables -- Row and Column Spanning","blocks":[{"link":"/v5/documentation/#flatworm--table-spanning","text":"A column may end its content with any number of \"<\" which indicates how many additional columns to extend into."},{"link":"/v5/documentation/#flatworm--table-spanning","text":"If the cell content contains only a \"^\", then the row above is extended into this cell (into the same number of columns)."}]},{"title":"Flatworm Docs -- Tables -- Styles","blocks":[{"link":"/v5/documentation/#flatworm--table-style","text":"The @style extension for a table can be used to control its appearance."}]},{"title":"Flatworm Docs -- Tables -- Variables","blocks":[{"link":"/v5/documentation/#flatworm--table-variable","text":"Often the layout of a table is easier to express and maintain without uneven or changing content within it."},{"link":"/v5/documentation/#flatworm--table-variable","text":"So the content can be defined separately within a table directive using variables."},{"link":"/v5/documentation/#flatworm--table-variable","text":"A variable name must begin with a letter and must only contain letters and numbers."},{"link":"/v5/documentation/#flatworm--table-variable","text":"Variables are also useful when content is repeated throughout a table."},{"link":"/v5/documentation/#flatworm--table-variable","text":"A variable is declared by starting a line with \"$NAME:\", which consumes all lines until the next variable declaration or until the next table row line."},{"link":"/v5/documentation/#flatworm--table-variable","text":"A variable name must start with a letter and may consist of letters and numbers."},{"link":"/v5/documentation/#flatworm--table-variable","text":"(i.e."},{"link":"/v5/documentation/#flatworm--table-variable","text":"/[a-z][a-z0-9]*/i)."}]},{"title":"Flatworm Docs -- Configuration","blocks":[{"link":"/v5/documentation/#flatworm-config","text":"Configuration is optional (but highly recommended) and may be either a simple JSON file (config.json) or a JS file (config.js) placed in the top of the source folder."},{"link":"/v5/documentation/#flatworm-config","text":"TODO: example JSON and example JS."}]},{"title":"Flatworm Docs -- Extensions -- @inherit< markdown >","blocks":[{"link":"/v5/documentation/#flatworm--ext-inherit","text":"Adds an inherits description to a directive."},{"link":"/v5/documentation/#flatworm--ext-inherit","text":"The markdown may contain links."}]},{"title":"Flatworm Docs -- Extensions -- @lang< text >","blocks":[{"link":"/v5/documentation/#flatworm--ext-lang","text":"Set the language a code directive should be syntax-highlighted for."},{"link":"/v5/documentation/#flatworm--ext-lang","text":"If \"javascript\", the code will be evaluated."}]},{"title":"Flatworm Docs -- Extensions -- @nav< text >","blocks":[{"link":"/v5/documentation/#flatworm--ext-nav","text":"Sets the name in the breadcrumbs when not the current node."}]},{"title":"Flatworm Docs -- Extensions -- @note< markdown >","blocks":[{"link":"/v5/documentation/#flatworm--ext-note","text":"Adds a note to a directive."},{"link":"/v5/documentation/#flatworm--ext-note","text":"The markdown may contain links."},{"link":"/v5/documentation/#flatworm--ext-note","text":"If the directive already has an @INHERIT extension, that will be used instead and the @NOTE will be ignored."}]},{"title":"Flatworm Docs -- Extensions -- @src< key >","blocks":[{"link":"/v5/documentation/#flatworm--ext-src","text":"Calls the configuration getSourceUrl(key, VALUE) to get a URL which will be linked to by a link next to the directive."},{"link":"/v5/documentation/#flatworm--ext-src","text":"This extended directive function requires an advanced config.js Configuration file since it requires a JavaScript function."}]},{"title":"Flatworm Docs -- Extensions -- @style< text >","blocks":[{"link":"/v5/documentation/#flatworm--ext-style","text":"The Table Style to use for a table directive."}]},{"title":"Getting Started -- Installing","blocks":[{"link":"/v5/getting-started/#installing","text":"Ethers' various Classes and Functions are available to import manually from sub-packages under the @ethersproject organization but for most projects, the umbrella package is the easiest way to get started."}]},{"title":"Getting Started -- Importing -- Web Browser","blocks":[{"link":"/v5/getting-started/#importing","text":"It is generally better practice (for security reasons) to copy the ethers library to your own webserver and serve it yourself."},{"link":"/v5/getting-started/#importing","text":"For quick demos or prototyping though, you can load it in your Web Applications from our CDN."}]},{"title":"Getting Started -- Common Terminology","blocks":[{"link":"/v5/getting-started/#getting-started--glossary","text":"This section needs work..."}]},{"title":"Getting Started -- Connecting to Ethereum: Metamask","blocks":[{"link":"/v5/getting-started/#getting-started--connecting","text":"The quickest and easiest way to experiment and begin developing on Ethereum is to use Metamask, which is a browser extension that provides:."},{"link":"/v5/getting-started/#getting-started--connecting","text":"A connection to the Ethereum network (a Provider) Holds your private key and can sign things (a Signer)."}]},{"title":"Getting Started -- Connecting to Ethereum: RPC","blocks":[{"link":"/v5/getting-started/#getting-started--connecting-rpc","text":"The JSON-RPC API is another popular method for interacting with Ethereum and is available in all major Ethereum node implementations (e.g."},{"link":"/v5/getting-started/#getting-started--connecting-rpc","text":"Geth and Parity) as well as many third-party web services (e.g."},{"link":"/v5/getting-started/#getting-started--connecting-rpc","text":"INFURA)."},{"link":"/v5/getting-started/#getting-started--connecting-rpc","text":"It typically provides:."},{"link":"/v5/getting-started/#getting-started--connecting-rpc","text":"A connection to the Ethereum network (a Provider) Holds your private key and can sign thing (a Signer)."}]},{"title":"Getting Started -- Connecting to Ethereum: RPC -- Querying the Blockchain","blocks":[{"link":"/v5/getting-started/#getting-started--querying","text":"Once you have a Provider, you have a read-only connection to the blockchain, which you can use to query the current state, fetch historic logs, look up deployed code and so on."}]},{"title":"Getting Started -- Contracts","blocks":[{"link":"/v5/getting-started/#getting-started--contracts","text":"A Contract is an abstraction of program code which lives on the Ethereum blockchain."},{"link":"/v5/getting-started/#getting-started--contracts","text":"The Contract object makes it easier to use an on-chain Contract as a normal JavaScript object, with the methods mapped to encoding and decoding data for you."},{"link":"/v5/getting-started/#getting-started--contracts","text":"If you are familiar with Databases, this is similar to an Object Relational Mapper (ORM)."},{"link":"/v5/getting-started/#getting-started--contracts","text":"In order to communicate with the Contract on-chain, this class needs to know what methods are available and how to encode and decode the data, which is what the Application Binary Interface (API) provides."},{"link":"/v5/getting-started/#getting-started--contracts","text":"This class is a meta-class, which means its methods are constructed at runtime, and when you pass in the ABI to the constructor it uses it to determine which methods to add."},{"link":"/v5/getting-started/#getting-started--contracts","text":"While an on-chain Contract may have many methods available, you can safely ignore any methods you don't need or use, providing a smaller subset of the ABI to the contract."},{"link":"/v5/getting-started/#getting-started--contracts","text":"An ABI often comes from the Solidity or Vyper compiler, but you can use the Human-Readable ABI in code, which the following examples use."}]},{"title":"Hacking","blocks":[{"link":"/v5/hacking/","text":"Things to keep in mind:."}]},{"title":"Hacking -- Signing Messages -- Supported Platforms","blocks":[{"link":"/v5/hacking/","text":"..."}]},{"title":"Hacking -- Signing Messages -- Dependencies","blocks":[{"link":"/v5/hacking/","text":"Adding a dependency is non-trivial and will require fairly convincing arguments."},{"link":"/v5/hacking/","text":"Further, ALL dependencies for ethers, must be MIT licensed or public domain (CC0)."},{"link":"/v5/hacking/","text":"All contributions to ethers are then included under the MIT license."}]},{"title":"Hacking -- Signing Messages -- Printable ASCII (7-bit) Characters","blocks":[{"link":"/v5/hacking/","text":"All source and documentation files should ONLY use the printable ASCII set."},{"link":"/v5/hacking/","text":"This is for several reasons, bu..."},{"link":"/v5/hacking/","text":"Transmission over certain HTTP servers and proxies can mangle UTF-8 data Certain editors on some platforms, or in certain terminals cannot handle UTF-8 characters elegantly The ability to enter non-ASCII characters on some platforms require special keyboards, input devices or input methods to be installed, which either not be supported, or may require administrative priviledges."}]},{"title":"Hacking -- Signing Messages -- License","blocks":[{"link":"/v5/hacking/","text":"MIT..."}]},{"title":"Hacking -- Signing Messages -- Other Considerations","blocks":[{"link":"/v5/hacking/","text":"A common argument to Pull Requests is that they are simple, backwards compatible and."},{"link":"/v5/hacking/","text":"It is important to remember that a small change is something that we are required to support in perpetuity."},{"link":"/v5/hacking/","text":"For example, adding support for an obscure platform, such as adding a dot-file to the root of the package, now carries the implication that we will continue keeping that dot-file up-to-date as new versions of that platform are released."}]},{"title":"Documentation -- What is Ethers?","blocks":[{"link":"/v5/#preamble","text":"The ethers.js library aims to be a complete and compact library for interacting with the Ethereum Blockchain and its ecosystem."},{"link":"/v5/#preamble","text":"It was originally designed for use with ethers.io and has since expanded into a more general-purpose library."}]},{"title":"Documentation -- Features","blocks":[{"link":"/v5/#features","text":"Keep your private keys in your client, safe and sound Import and export JSON wallets (Geth, Parity and crowdsale) Import and export BIP 39 mnemonic phrases (12 word backup phrases) and HD Wallets (English, Italian, Japanese, Korean, Simplified Chinese, Traditional Chinese; more coming soon) Meta-classes create JavaScript objects from any contract ABI, including ABIv2 and Human-Readable ABI Connect to Ethereum nodes over JSON-RPC, INFURA, Etherscan, Alchemy, Cloudflare or MetaMask."},{"link":"/v5/#features","text":"ENS names are first-class citizens; they can be used anywhere an Ethereum addresses can be used Tiny (~88kb compressed; 284kb uncompressed) Complete functionality for all your Ethereum needs Extensive documentation Large collection of test cases which are maintained and added to Fully TypeScript ready, with definition files and full TypeScript source MIT License (including ALL dependencies); completely open source to do with as you please."}]},{"title":"Documentation -- Legacy Documentation","blocks":[{"link":"/v5/#documentation--legacy","text":"This section will be kept up to date, linking to documentation of older versions of the library."},{"link":"/v5/#documentation--legacy","text":"version 4.0 version 3.0."}]},{"title":"License and Copyright","blocks":[{"link":"/v5/license/#license","text":"The ethers library (including all dependencies) are available under the MIT License, which permits a wide variety of uses."}]},{"title":"License and Copyright -- Legacy Documentation -- MIT License","blocks":[{"link":"/v5/license/#license","text":"Copyright © 2019 Richard Moore."},{"link":"/v5/license/#license","text":"Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:."},{"link":"/v5/license/#license","text":"The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software."},{"link":"/v5/license/#license","text":"THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT."},{"link":"/v5/license/#license","text":"IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."}]},{"title":"Migration: From Ethers v4","blocks":[{"link":"/v5/migration/ethers-v4/#migration-v4","text":"This document only covers the features present in v4 which have changed in some important way in v5."},{"link":"/v5/migration/ethers-v4/#migration-v4","text":"It does not cover all the new additional features that have been added and mainly aims to help those updating their older scripts and applications to retain functional parity."},{"link":"/v5/migration/ethers-v4/#migration-v4","text":"If you encounter any missing changes, please let me know and I'll update this guide."}]},{"title":"Migration: From Ethers v4 -- BigNumber -- Namespace","blocks":[{"link":"/v5/migration/ethers-v4/","text":"Since BigNumber is used quite frequently, it has been moved to the top level of the umbrella package."}]},{"title":"Migration: From Ethers v4 -- BigNumber -- Creating Instances","blocks":[{"link":"/v5/migration/ethers-v4/","text":"The bigNumberify method was always preferred over the constructor since it could short-circuit an object instantiation for [[BigNumber] objects (since they are immutable)."},{"link":"/v5/migration/ethers-v4/","text":"This has been moved to a static from class method."}]},{"title":"Migration: From Ethers v4 -- Contracts -- ENS Name Resolution","blocks":[{"link":"/v5/migration/ethers-v4/","text":"The name of the resolved address has changed."},{"link":"/v5/migration/ethers-v4/","text":"If the address passed into the constructor was an ENS name, the address will be resolved before any calls are made to the contract."},{"link":"/v5/migration/ethers-v4/","text":"The name of the property where the resolved address has changed from addressPromise to resolvedAddress."}]},{"title":"Migration: From Ethers v4 -- Contracts -- Gas Estimation","blocks":[{"link":"/v5/migration/ethers-v4/","text":"The only difference in gas estimation is that the bucket has changed its name from estimate to estimateGas."}]},{"title":"Migration: From Ethers v4 -- Contracts -- Functions","blocks":[{"link":"/v5/migration/ethers-v4/","text":"In a contract in ethers, there is a functions bucket, which exposes all the methods of a contract."},{"link":"/v5/migration/ethers-v4/","text":"All these functions are available on the root contract itself as well and historically there was no difference between contact.foo and contract.functions.foo."},{"link":"/v5/migration/ethers-v4/","text":"The original reason for the functions bucket was to help when there were method names that collided with other buckets, which is rare."},{"link":"/v5/migration/ethers-v4/","text":"In v5, the functions bucket is now intended to help with frameworks and for the new error recovery API, so most users should use the methods on the root contract."},{"link":"/v5/migration/ethers-v4/","text":"The main difference will occur when a contract method only returns a single item."},{"link":"/v5/migration/ethers-v4/","text":"The root method will dereference this automatically while the functions bucket will preserve it as an Result."},{"link":"/v5/migration/ethers-v4/","text":"If a method returns multiple items, there is no difference."},{"link":"/v5/migration/ethers-v4/","text":"This helps when creating a framework, since the result will always be known to have the same number of components as the Fragment outputs, without having to handle the special case of a single return value."}]},{"title":"Migration: From Ethers v4 -- Errors -- Namespace","blocks":[{"link":"/v5/migration/ethers-v4/","text":"All errors now belong to the Logger class and the related functions have been moved to Logger instances, which can include a per-package version string."},{"link":"/v5/migration/ethers-v4/","text":"Global error functions have been moved to Logger class methods."}]},{"title":"Migration: From Ethers v4 -- Interface","blocks":[{"link":"/v5/migration/ethers-v4/#migration-v4","text":"The Interface object has undergone the most dramatic changes."},{"link":"/v5/migration/ethers-v4/#migration-v4","text":"It is no longer a meta-class and now has methods that simplify handling contract interface operations without the need for object inspection and special edge cases."}]},{"title":"Migration: From Ethers v4 -- Interface -- Inspection","blocks":[{"link":"/v5/migration/ethers-v4/","text":"Interrogating properties about a function or event can now (mostly) be done directly on the Fragment object."}]},{"title":"Migration: From Ethers v4 -- Wallet -- Mnemonic Phrases","blocks":[{"link":"/v5/migration/ethers-v4/","text":"The mnemonic phrase and related properties have been merged into a single mnemonic object, which also now includes the locale."}]},{"title":"Migration Guide","blocks":[{"link":"/v5/migration/#migration","text":"Here are some migration guides when upgrading from older versions of Ethers or other libraries."}]},{"title":"Migration: From Web3.js","blocks":[{"link":"/v5/migration/web3/","text":"This migration guide focuses on migrating web3.js version 1.2.9 to ethers.js v5."}]},{"title":"Migration: From Web3.js -- Providers","blocks":[{"link":"/v5/migration/web3/","text":"In ethers, a provider provides an abstraction for a connection to the Ethereum Network."},{"link":"/v5/migration/web3/","text":"It can be used to issue read only queries and send signed state changing transactions to the Ethereum Network."}]},{"title":"Migration: From Web3.js -- Signers","blocks":[{"link":"/v5/migration/web3/","text":"In ethers, a signer is an abstraction of an Ethereum Account."},{"link":"/v5/migration/web3/","text":"It can be used to sign messages and transactions and send signed transactions to the Ethereum Network."},{"link":"/v5/migration/web3/","text":"In web3, an account can be used to sign messages and transactions."}]},{"title":"Migration: From Web3.js -- Contracts","blocks":[{"link":"/v5/migration/web3/","text":"A contract object is an abstraction of a smart contract on the Ethereum Network."},{"link":"/v5/migration/web3/","text":"It allows for easy interaction with the smart contact."}]},{"title":"Migration: From Web3.js -- Contracts -- Overloaded Functions","blocks":[{"link":"/v5/migration/web3/","text":"Overloaded functions are functions that have the same name but different parameter types."},{"link":"/v5/migration/web3/","text":"In ethers, the syntax to call an overloaded contract function is different from the non-overloaded function."},{"link":"/v5/migration/web3/","text":"This section shows the differences between web3 and ethers when calling overloaded functions."},{"link":"/v5/migration/web3/","text":"See issue #407 for more details."}]},{"title":"Migration: From Web3.js -- Numbers -- BigNumber","blocks":[{"link":"/v5/migration/web3/","text":"Convert to BigNumber:."}]},{"title":"Migration: From Web3.js -- Utilities -- Hash","blocks":[{"link":"/v5/migration/web3/","text":"Computing Keccak256 hash of a UTF-8 string in web3 and ethers:."}]},{"title":"Testing","blocks":[{"link":"/v5/testing/","text":"Testing is a critical part of any library which wishes to remain secure, safe and reliable."},{"link":"/v5/testing/","text":"Ethers currently has over 23k tests among its test suites, which are all made available for other projects to use as simple exported GZIP-JSON files."},{"link":"/v5/testing/","text":"The tests are run on every check-in and the results can been seen on the GitHub CI Action."},{"link":"/v5/testing/","text":"We also strive to constantly add new test cases, especially when issues arise to ensure the issue is present prior to the fix, corrected after the fix and included to prevent future changes from causing a regression."},{"link":"/v5/testing/","text":"A large number of the test cases were created procedurally by using known correct implementations from various sources (such as Geth) and written in different languages and verified with multiple libraries."},{"link":"/v5/testing/","text":"For example, the ABI test suites were generated by procedurally generating a list of types, for each type choosing a random (valid) value, which then was converted into a Solidity source file, compiled using solc and deployed to a running Parity node and executed, with its outputs being captured."},{"link":"/v5/testing/","text":"Similar to the how many of the hashing, event and selector test cases were created."}]},{"title":"Testing -- Supported Platforms","blocks":[{"link":"/v5/testing/#testing-supported","text":"While web technologies move quite fast, especially in the Web3 universe, we try to keep ethers as accessible as possible."},{"link":"/v5/testing/#testing-supported","text":"Currently ethers should work on almost any ES3 or better environment and tests are run against:."},{"link":"/v5/testing/#testing-supported","text":"node.js 8.x node.js 10.x node.js 12.x node.js 13.x Web Browsers (using UMD) Web Browsers (using ES modules)."},{"link":"/v5/testing/#testing-supported","text":"If there is an environment you feel has been overlooked or have suggestions, please feel free to reach out by opening an issue on Github."},{"link":"/v5/testing/#testing-supported","text":"We would like to add a test build for Expo and React as those developers often seem to encounter pain points when using ethers, so if you have experience or ideas on this, bug us."},{"link":"/v5/testing/#testing-supported","text":"The next Major version (probably summer 2021) will likely drop support for node 8.x and will require ES2015 for Proxy."},{"link":"/v5/testing/#testing-supported","text":"Certain features in JavaScript are also avoided, such as look-behind tokens in regular expressions, since these have caused conflicts (at import time) with certain JavaScript environments such as Otto."},{"link":"/v5/testing/#testing-supported","text":"Basically, the moral of the story is \"be inclusive and don't drop people needlessly\"."}]},{"title":"Testing -- Test Suites","blocks":[{"link":"/v5/testing/#testing-suites","text":"The test suites are available as gzipped JSON files in the @ethersproject/testcases, which makes it easy to install and import (both GZIP and JSON are quite easy to consume from most languages)."},{"link":"/v5/testing/#testing-suites","text":"Each test suite also has its schema available in this package."}]},{"title":"Testing -- Test Suite API","blocks":[{"link":"/v5/testing/#testing-api","text":"There are also convenience functions for those developing directly in TypeScript."}]},{"title":"Testing -- Test Suite API -- testcases.loadTests( tag ) => Array< TestCase >","blocks":[{"link":"/v5/testing/#testing-api","text":"Load all the given testcases for the tag."},{"link":"/v5/testing/#testing-api","text":"A tag is the string in the above list of test case names not including any extension (e.g."},{"link":"/v5/testing/#testing-api","text":"\"solidity-hashes\")."}]},{"title":"Testing -- Test Suite API -- testcases.TestCase.TEST_NAME","blocks":[{"link":"/v5/testing/#testing-api","text":"Most testcases have its schema available as a TypeScript type to make testing each property easier."}]},{"title":"Testing -- Test Suite API -- Deterministic Random Numbers (DRNG)","blocks":[{"link":"/v5/testing/#testing-api","text":"When creating test cases, often we want want random data from the perspective we do not case what values are used, however we want the values to be consistent across runs."},{"link":"/v5/testing/#testing-api","text":"Otherwise it becomes difficult to reproduce an issue."},{"link":"/v5/testing/#testing-api","text":"In each of the following the seed is used to control the random value returned."},{"link":"/v5/testing/#testing-api","text":"Be sure to tweak the seed properly, for example on each iteration change the value and in recursive functions, concatenate to the seed."}]},{"title":"Testing -- Test Suite API -- testcases.randomBytes( seed , lower [ , upper ] ) => Uint8Array","blocks":[{"link":"/v5/testing/","text":"Return at least lower random bytes, up to upper (exclusive) if specified, given seed."},{"link":"/v5/testing/","text":"If upper is omitted, exactly /lower bytes are returned."}]},{"title":"Testing -- Test Suite API -- testcases.randomHexString( seed , lower [ , upper ] ) => string< DataHexString >","blocks":[{"link":"/v5/testing/","text":"Identical to randomBytes, except returns the value as a DataHexString instead of a Uint8Array."}]},{"title":"Testing -- Test Suite API -- testcases.randomNumber( seed , lower , upper ) => number","blocks":[{"link":"/v5/testing/","text":"Returns a random number of at least lower and less than upper given seed."}]},{"title":"Testing -- Schemas","blocks":[{"link":"/v5/testing/#testing-schemas","text":"This section is still a work in progress, but will outline some of the more nuanced aspects of the test cases and their values."},{"link":"/v5/testing/#testing-schemas","text":"There will likely be an overhaul of the test cases in the next major version, to make code coverage testing more straight forward and to collapse some of the redundancy."},{"link":"/v5/testing/#testing-schemas","text":"For example, there is no longer a need to separate the ABI and ABIv2 test case and the accounts and transactions suites can be merged into one large collection."}]},{"title":"Testing -- Schemas -- Accounts","blocks":[{"link":"/v5/testing/#testing-schemas","text":"Basic account information using a private key and computing various address forms."},{"link":"/v5/testing/#testing-schemas","text":"Tests were verified against [EthereumJS](https://github.com/ethereumjs) and custom scripts created to directly interact with Geth and cpp implementations."},{"link":"/v5/testing/#testing-schemas","text":"See: accounts.json.gz."}]},{"title":"Testing -- Schemas -- Contract Interface","blocks":[{"link":"/v5/testing/#testing-schemas","text":"Procedurally generated test cases to test ABI coding."}]},{"title":"Testing -- Schemas -- Contract Signatures","blocks":[{"link":"/v5/testing/#testing-schemas","text":"Computed ABI signatures and the selector hash."}]},{"title":"Testing -- Schemas -- Hierarchal Deterministic Node (BIP-32)","blocks":[{"link":"/v5/testing/#testing-schemas","text":"Tests for BIP-32 HD Wallets."}]},{"title":"Testing -- Schemas -- ENS Namehash","blocks":[{"link":"/v5/testing/#testing-schemas","text":"Test cases for the ENS Namehash Algorithm."}]},{"title":"Testing -- Schemas -- Solidity Hashes","blocks":[{"link":"/v5/testing/#testing-schemas","text":"Tests for the non-standard packed form of the Solidity hash functions."},{"link":"/v5/testing/#testing-schemas","text":"These tests were created by procedurally generating random signatures and values that match those signatures, constructing the equivalent Soldity, compiling it and deploying it to a Parity node then evaluating the response."}]},{"title":"Testing -- Schemas -- Transactions","blocks":[{"link":"/v5/testing/#testing-schemas","text":"Serialized signed and unsigned transactions with both EIP-155 enabled and disabled."}]},{"title":"Testing -- Schemas -- Units","blocks":[{"link":"/v5/testing/#testing-schemas","text":"Unit conversion."}]},{"title":"Testing -- Schemas -- Wallets","blocks":[{"link":"/v5/testing/#testing-schemas","text":"Tests for the JSON keystore format."}]}],"indices":{"_todo":["0/0","98/0","124/2","125/2","126/2","129/2","131/0","141/0","230/1","230/2","230/3","341/0","346/0","569/0","744/0","774/0","781/0","791/0","793/2","823/1"],"_fill":["0/0","316/1","797/3"],"_this":["0/0","1/1","2/0","3/0","5/1","6/1","6/4","7/0","8/0","8/1","9/0","10/0","11/0","11/1","12/0","16/0","17/0","18/0","19/0","23/1","23/2","23/4","23/5","24/1","25/1","29/1","29/2","29/3","33/0","34/0","34/1","35/0","36/0","37/0","37/1","38/0","39/1","40/1","40/4","44/0","45/0","46/0","47/0","49/0","49/1","50/0","52/2","52/3","53/1","56/1","61/1","69/1","70/1","79/1","81/0","82/0","83/0","85/0","86/0","87/0","88/0","89/0","93/0","95/0","96/0","97/0","99/0","100/0","102/0","103/0","105/0","105/1","108/0","109/0","110/0","112/0","117/0","122/0","123/0","125/1","128/1","128/4","128/6","130/2","132/0","136/2","155/6","157/3","163/0","164/0","165/1","167/0","171/1","171/2","177/1","178/0","180/1","181/0","181/1","182/1","183/0","184/0","185/0","187/0","189/1","191/0","193/0","194/0","195/0","195/1","196/2","202/1","205/1","209/0","212/2","217/0","218/0","219/1","220/0","221/0","226/1","227/1","229/1","233/1","235/0","236/0","238/0","239/0","240/0","240/1","241/1","242/0","242/1","242/2","243/0","244/0","245/0","245/1","246/0","247/0","248/0","249/0","255/0","256/0","257/0","258/0","259/0","260/0","261/0","262/0","263/0","264/0","266/0","267/0","268/0","268/1","269/0","270/0","272/0","273/0","273/2","275/0","275/1","276/0","276/1","277/0","277/1","278/0","281/0","281/1","282/0","283/0","284/0","285/1","286/0","287/0","288/0","289/0","290/0","291/0","292/0","293/0","293/1","294/0","295/1","298/0","299/1","299/2","301/0","302/0","304/0","304/1","305/0","306/0","308/0","308/1","309/2","309/3","309/5","310/1","310/2","311/0","311/1","313/0","314/1","315/0","315/1","316/0","316/1","316/2","319/2","321/1","323/0","324/0","324/1","326/0","330/0","331/0","332/0","333/0","335/1","336/1","341/0","348/0","349/0","349/1","350/0","351/0","354/0","354/1","355/0","355/1","356/0","359/0","360/0","361/0","364/0","367/0","367/2","368/0","373/1","374/1","374/2","375/2","376/1","377/1","378/1","379/1","384/2","399/1","401/1","406/2","421/2","430/0","456/1","460/0","461/6","461/7","463/2","464/1","464/3","516/3","536/1","537/5","542/0","557/0","558/1","571/0","572/0","573/0","577/0","578/0","579/1","580/2","581/0","582/0","583/0","583/1","584/1","585/0","585/1","585/2","586/0","586/1","586/2","587/0","588/1","594/3","594/4","601/1","605/1","607/0","607/1","610/1","610/2","619/1","620/1","628/1","629/1","629/2","629/3","636/0","637/0","638/0","640/2","642/2","653/0","653/1","657/1","658/1","663/1","665/1","666/2","667/2","668/0","669/0","669/1","670/1","673/0","674/0","676/0","677/0","678/0","679/0","680/0","681/0","682/0","684/1","687/1","687/2","690/1","692/1","693/1","695/1","697/2","711/0","712/0","713/0","718/1","738/1","738/2","739/0","740/1","741/1","741/3","742/1","742/2","743/1","749/0","753/1","756/5","756/6","756/8","757/0","758/0","759/0","760/0","760/1","761/0","761/1","762/0","763/0","764/1","767/0","768/0","772/1","775/3","775/5","775/6","779/7","784/0","784/1","785/0","785/2","785/3","786/0","786/2","786/5","788/2","792/1","794/1","797/3","799/1","799/2","820/1","828/1","832/0","836/2","836/3","836/4","840/1","845/0","847/1","847/2","848/0","848/2","850/1","853/5","853/7","859/0","863/2","867/4","868/1","876/0"],"_in":["0/0","1/1","6/1","6/3","22/1","22/2","24/0","29/2","30/0","31/2","32/0","40/1","40/3","49/1","60/0","61/0","62/0","64/0","65/3","69/1","70/1","79/1","96/0","103/0","112/0","120/0","123/1","123/3","124/0","125/0","125/1","127/0","128/0","128/3","128/5","128/7","128/8","134/1","135/0","138/2","139/0","145/0","149/0","155/0","155/6","160/0","162/0","171/1","174/0","180/0","180/2","182/1","187/0","205/2","206/0","208/1","211/0","224/0","227/3","229/0","243/0","246/0","251/2","257/0","258/0","260/0","263/0","264/0","270/0","272/0","275/0","276/0","277/0","283/0","284/0","285/1","287/0","288/0","291/0","292/0","293/0","294/0","295/1","296/0","304/1","308/1","309/0","309/2","309/5","310/2","313/2","315/0","316/0","316/1","337/0","348/1","387/0","388/0","389/0","408/0","413/0","418/0","418/5","421/2","424/0","429/0","430/0","461/2","461/3","461/5","461/6","462/3","464/2","466/0","466/1","472/2","479/0","481/0","482/0","483/0","484/0","501/0","501/1","501/2","502/2","502/3","503/0","516/0","518/0","534/1","536/1","537/1","537/5","538/1","540/0","557/2","560/1","566/0","567/0","568/0","570/0","587/1","594/1","594/3","595/0","610/1","612/0","619/1","620/2","624/0","627/0","629/2","642/2","647/0","647/1","647/2","655/0","661/0","663/0","663/1","667/1","681/0","682/1","689/0","690/1","691/0","695/1","705/0","710/0","720/1","735/0","739/0","741/2","743/1","746/0","751/1","753/1","755/0","756/0","764/0","764/1","771/0","773/0","775/0","775/3","779/2","779/4","779/5","779/6","779/7","786/5","787/1","787/2","787/3","788/0","788/2","789/2","789/4","790/0","792/2","793/2","794/0","795/0","796/0","797/3","798/0","799/1","799/3","801/2","802/0","802/1","803/0","803/1","804/0","805/0","807/0","808/0","823/0","826/0","831/1","834/0","836/3","836/4","836/6","837/0","840/2","842/1","844/0","847/1","847/2","847/4","848/0","852/0","853/0","853/3","860/0","861/0","861/2","863/1","865/0","866/2","866/4","867/0","867/6","868/0","868/1","869/0","870/1","872/2","872/3","876/0","876/1"],"_including":["0/0","172/4","255/0","256/0","278/0","292/0","293/0","348/0","374/0","537/0","538/1","630/0","672/0","775/5","844/0","844/1","846/0","847/1","847/3","870/1"],"_src":["0/0","802/4","803/3","804/2","806/2","828/0"],"_links":["0/0","130/0","730/0","792/2","806/1","813/0","824/1","827/1"],"_contract":["0/0","1/0","1/1","2/0","3/0","3/1","4/0","5/0","5/1","6/0","6/1","6/4","7/0","8/0","9/0","10/0","11/0","12/0","13/0","14/0","15/0","16/0","17/0","18/0","19/0","20/1","22/0","23/1","23/0","25/1","25/0","27/0","28/0","29/0","31/0","32/0","33/0","34/0","35/0","39/0","39/1","40/0","40/1","40/4","48/0","57/0","59/0","59/1","59/2","128/1","159/0","200/0","200/1","225/0","225/1","226/2","259/0","281/1","283/0","283/1","308/1","384/0","384/2","385/3","386/2","396/0","427/0","428/0","624/0","690/1","778/1","780/0","836/0","836/1","836/3","836/5","844/0","847/4","851/1","853/0","853/1","853/3","853/4","855/1","862/0","863/1","878/0","879/0"],"_factory":["0/0","1/0","2/0","3/0"],"_contractfactory":["0/0","1/1","1/0","2/0","3/0","9/0","35/0","59/2"],"_return":["1/0","6/1","6/4","13/0","14/0","15/0","21/0","23/0","23/1","24/2","29/0","31/0","40/1","40/4","41/0","42/0","43/0","52/1","73/0","74/0","171/4","187/0","315/1","316/1","391/0","394/0","395/0","396/0","420/2","429/2","464/0","487/0","488/0","489/0","490/0","509/0","510/0","511/0","512/0","574/0","575/0","576/0","588/0","589/0","639/0","663/1","718/0","770/0","772/0","773/0","806/1","853/7","873/0"],"_an":["1/0","8/1","10/0","22/3","23/3","23/4","28/0","30/0","32/0","34/1","36/0","54/0","55/0","56/2","59/0","59/1","59/2","71/0","72/0","73/0","75/0","76/0","77/0","78/0","79/1","80/0","84/0","94/0","94/2","104/0","104/1","104/2","105/1","108/0","111/0","114/0","123/4","124/0","128/2","128/3","129/1","130/4","143/2","154/0","156/4","157/0","157/2","157/4","175/2","189/0","190/0","192/0","192/1","204/0","205/1","205/2","207/1","213/0","213/1","225/0","232/0","251/1","251/2","281/1","283/0","296/0","298/0","299/1","300/0","309/5","313/0","315/2","316/3","319/1","320/0","321/0","322/0","328/1","331/0","336/0","338/0","344/0","345/1","351/0","353/0","353/1","356/0","360/0","364/1","376/1","377/1","384/0","384/1","385/3","391/1","400/0","406/0","418/0","420/0","420/1","420/2","421/0","421/2","421/3","422/1","423/0","429/1","432/0","433/0","437/0","447/0","456/1","461/6","466/0","466/1","468/0","475/1","481/1","486/1","501/0","515/0","516/2","518/0","520/0","521/0","522/0","523/0","537/1","556/2","556/3","557/0","570/0","579/0","601/0","601/1","602/0","603/0","614/0","619/0","620/0","621/0","622/0","624/0","626/0","629/3","641/0","650/1","654/1","658/2","660/1","667/1","672/0","675/0","684/0","687/1","688/1","688/2","692/2","697/4","697/5","710/0","730/1","731/0","731/1","735/2","738/0","740/0","741/0","741/3","749/0","756/5","756/8","763/0","763/1","769/4","775/1","775/5","779/6","783/0","785/1","786/1","786/3","786/5","786/7","788/0","789/3","789/4","790/1","792/2","801/1","802/0","803/0","804/0","808/0","815/2","815/4","824/0","827/2","828/1","836/0","836/1","836/2","836/5","836/6","842/2","844/1","847/4","850/0","851/1","853/5","860/0","861/0","861/2","862/0","863/1","867/3","872/1","876/1"],"_instance":["1/0","5/0","6/0","32/0","39/0","40/0","84/0","136/1","175/0","188/0","191/0","318/0","320/0","321/0","322/0","325/0","329/0","336/0","337/0","433/0","437/0","520/0","521/0","522/0","523/0","538/0","588/0","594/2","797/2"],"_of":["1/0","5/0","5/1","6/0","6/4","9/0","14/0","14/1","15/0","20/0","21/0","22/0","24/0","24/1","26/0","27/0","29/0","30/0","35/0","39/0","39/1","40/0","40/4","42/0","42/1","43/0","49/0","50/0","51/0","53/0","54/0","56/2","59/0","59/2","65/2","65/4","69/1","70/1","71/0","74/0","76/0","77/0","83/0","84/0","85/0","86/0","87/0","88/0","89/0","93/0","95/0","96/0","97/0","99/0","102/0","107/0","108/0","110/0","117/0","120/0","121/0","122/0","123/0","123/2","128/1","128/7","130/1","130/4","135/0","136/1","136/2","137/0","140/0","146/0","150/0","154/0","154/1","155/5","155/6","157/1","159/0","164/0","171/0","171/3","171/4","172/5","174/4","175/0","175/1","175/2","175/3","176/0","177/1","180/1","180/2","186/0","189/0","192/1","199/0","200/0","201/0","202/0","203/0","204/0","205/0","205/1","206/0","207/0","208/0","210/0","211/0","212/0","213/0","219/0","222/0","222/1","223/0","224/0","226/0","227/0","227/1","230/0","231/0","231/1","231/2","233/0","234/0","236/0","237/0","238/0","239/0","240/0","240/1","241/0","241/1","242/0","242/1","242/2","243/0","244/0","245/1","246/0","247/0","249/0","255/0","256/0","258/0","259/0","261/0","262/0","263/0","264/0","268/1","269/0","270/0","274/0","275/0","276/0","277/0","278/0","283/1","284/0","285/0","285/2","286/0","288/0","289/0","291/0","292/0","293/0","293/1","295/0","296/0","297/1","301/0","304/0","305/0","306/0","308/0","310/0","313/1","314/0","314/1","315/1","316/1","329/0","330/0","331/0","332/0","333/0","335/0","336/0","337/0","339/0","340/0","345/1","353/0","354/0","355/0","355/1","356/0","361/0","361/1","368/0","368/1","369/0","374/0","375/0","376/1","377/0","378/0","379/0","384/0","385/1","385/3","391/1","396/0","399/1","402/0","406/2","407/0","414/0","416/0","418/0","418/1","418/2","418/4","420/0","420/1","422/2","429/0","429/1","431/0","436/0","437/0","439/0","440/0","441/0","442/0","443/0","444/0","445/0","446/0","448/0","449/0","450/0","451/0","452/0","453/0","454/0","455/0","456/0","457/0","458/0","460/0","461/0","462/0","462/2","462/4","463/2","464/2","464/3","468/0","469/0","470/0","470/1","475/1","479/0","480/0","481/0","482/0","483/0","484/0","484/1","485/0","486/0","487/0","488/0","489/0","490/0","492/0","493/0","499/0","502/0","505/0","507/0","509/0","511/0","513/0","516/2","520/0","521/0","522/0","523/0","524/0","525/0","526/0","527/0","528/0","529/0","530/0","531/0","532/0","533/0","534/0","537/0","537/1","537/3","538/0","538/1","539/0","540/0","541/0","542/0","545/0","546/0","548/0","549/0","550/0","551/0","554/0","554/1","555/0","556/1","556/2","556/3","556/4","557/1","561/0","564/0","565/0","567/0","568/0","573/0","580/0","581/0","582/0","583/0","584/0","585/0","585/1","586/0","586/1","587/0","588/0","588/1","589/0","594/2","601/1","607/1","610/1","612/0","618/0","619/1","620/0","620/1","620/2","625/1","625/2","628/2","629/0","640/2","644/1","645/0","645/1","647/0","647/1","650/0","650/1","651/0","652/0","654/0","658/2","661/0","662/0","663/0","663/1","666/0","667/0","667/1","668/0","677/0","684/1","687/1","687/2","688/2","689/0","692/1","693/0","693/1","694/0","695/0","695/1","697/5","706/0","710/0","712/0","715/0","718/0","719/0","720/1","730/2","731/1","733/1","734/2","735/0","737/0","738/0","738/1","741/3","742/2","745/1","750/0","755/0","756/0","756/2","756/6","756/8","764/0","765/0","766/0","771/0","773/0","775/1","775/3","779/6","783/0","784/0","785/3","786/0","786/6","788/2","789/0","790/1","792/0","793/1","793/2","794/0","794/1","796/0","797/1","798/1","800/1","801/0","802/1","803/1","806/1","809/1","811/0","811/1","813/0","813/1","815/1","817/2","820/0","820/1","822/0","822/5","823/0","836/0","836/5","842/2","844/1","845/0","846/0","847/1","847/2","847/3","847/4","849/0","851/0","851/2","853/0","853/7","858/0","861/0","862/0","865/0","866/0","866/4","866/5","866/6","867/7","870/1","872/2","874/0","875/0","876/0","876/1","882/0"],"_attached":["1/0","3/0","5/0","8/0","34/0","39/0","205/0"],"_to":["1/0","2/0","3/0","5/0","5/1","6/0","8/0","8/1","9/0","11/0","12/0","13/0","14/0","15/0","16/0","17/0","18/0","20/1","21/1","23/1","23/4","24/0","25/0","26/0","27/0","28/0","29/0","29/2","32/0","34/0","34/1","35/0","37/0","38/0","39/0","39/1","40/0","41/0","42/0","43/0","44/0","45/0","46/0","52/0","52/3","53/0","53/1","54/0","55/0","58/0","58/2","59/1","60/0","61/0","61/1","64/0","65/0","65/2","65/3","75/0","94/2","95/0","96/0","104/0","104/3","106/0","111/0","113/0","114/0","115/0","118/0","119/0","119/2","123/1","123/2","123/4","125/0","125/1","127/0","128/0","128/2","128/3","128/4","128/5","128/7","129/0","130/0","130/1","134/0","135/0","136/1","136/3","138/0","143/0","143/2","144/0","148/0","152/0","154/0","155/0","155/1","155/2","155/5","156/0","156/3","157/0","158/1","159/0","161/0","162/0","165/0","169/0","171/2","171/4","172/0","172/3","172/5","174/1","174/2","174/3","174/4","174/5","175/0","182/0","182/1","183/0","184/0","184/1","185/0","187/0","188/0","189/0","189/1","191/0","195/0","196/0","197/0","202/1","205/0","205/1","205/3","208/1","209/0","211/0","213/0","214/0","214/2","217/0","218/0","219/0","225/0","225/2","226/1","227/3","240/0","240/1","241/0","241/1","242/0","242/1","242/2","244/0","245/0","245/1","250/0","251/0","251/1","252/0","253/0","254/0","257/0","265/0","265/1","266/0","268/1","269/0","273/2","281/0","281/1","283/0","283/1","285/2","285/3","293/0","293/1","296/0","296/4","299/0","302/0","304/1","306/0","308/0","309/0","309/3","309/4","309/5","310/0","311/0","311/1","313/2","315/0","315/3","315/4","316/0","316/3","318/0","324/0","325/0","327/0","335/0","335/1","336/0","336/1","337/2","339/0","340/0","348/1","349/0","350/0","352/0","356/0","375/2","376/1","384/0","384/1","384/2","385/0","385/1","385/3","386/2","396/0","397/0","406/2","418/0","418/5","420/1","421/0","421/1","421/3","425/1","426/0","427/0","429/0","429/2","430/0","444/0","446/0","447/0","447/1","449/0","450/0","456/1","456/0","457/0","458/0","461/4","461/5","461/6","461/7","461/8","462/3","462/5","462/6","464/0","464/3","464/4","468/0","472/0","476/0","477/0","478/0","481/0","484/0","486/0","501/0","505/0","506/0","508/0","513/0","516/0","518/0","529/0","531/0","532/0","533/0","534/1","534/0","537/2","542/0","544/0","554/1","556/0","556/3","557/2","566/0","567/0","568/0","576/1","579/0","579/1","580/2","584/0","584/1","585/2","586/2","588/1","590/0","591/0","594/0","601/1","604/0","606/0","607/1","611/0","618/0","624/0","625/0","625/1","628/0","628/1","629/1","629/2","629/3","642/2","643/0","644/1","647/2","648/0","651/0","652/0","654/1","654/0","655/0","658/1","661/0","662/0","662/1","663/1","664/0","667/0","667/1","669/0","669/1","673/0","676/0","683/0","685/0","687/1","687/2","688/1","688/2","692/1","692/2","692/3","695/1","697/1","697/3","697/4","700/0","701/0","702/0","704/0","705/0","706/0","707/0","708/0","710/0","716/0","718/1","720/1","730/0","730/1","730/6","731/1","732/4","733/1","733/4","734/2","735/0","735/1","735/2","736/0","738/1","738/2","739/0","741/0","741/2","742/1","743/1","745/0","746/0","747/0","747/2","748/0","750/0","751/0","751/1","756/2","756/5","763/0","764/0","767/0","768/0","769/0","769/4","775/2","775/3","775/4","775/5","777/0","778/1","779/0","779/2","780/0","781/0","783/0","785/0","785/2","786/0","786/1","786/2","786/4","786/5","787/0","787/1","788/0","788/1","788/2","789/1","789/3","789/4","790/0","790/1","792/2","793/0","793/2","794/0","794/1","795/0","797/3","798/0","798/2","799/1","799/2","800/0","802/1","803/1","807/0","808/0","810/0","811/1","812/0","812/1","815/5","817/1","820/0","821/0","822/0","824/0","827/0","828/0","829/0","830/0","831/0","833/0","833/1","834/4","834/0","835/0","836/1","836/2","836/3","836/4","836/5","837/0","839/2","840/2","842/0","842/1","842/2","843/0","844/0","844/1","845/0","847/1","847/3","848/1","849/0","850/1","851/1","851/2","852/0","853/2","853/3","853/7","854/0","854/1","859/0","860/0","860/1","861/1","861/2","863/1","864/0","866/0","866/1","866/3","866/5","866/6","867/0","867/3","867/4","868/0","871/0","872/0","872/1","872/2","872/3","873/0","874/0","876/1","876/2","877/1","878/0","882/1"],"_address":["1/0","1/1","3/0","5/0","7/0","8/0","8/1","32/0","33/0","34/0","34/1","39/0","58/1","58/2","58/0","128/3","141/0","159/0","163/0","199/0","200/0","201/0","202/0","202/1","205/1","205/2","206/0","207/0","207/1","225/0","225/1","226/1","235/0","244/0","250/0","259/0","266/0","267/0","268/1","281/0","282/0","283/0","283/1","299/0","305/0","306/0","307/0","314/1","315/4","323/0","328/2","329/0","330/0","332/0","375/2","410/2","416/2","418/4","420/0","420/1","420/2","421/0","421/1","421/2","421/3","422/0","422/1","422/2","423/0","424/0","425/0","426/0","427/0","428/0","492/0","564/0","581/0","642/0","642/2","643/0","676/0","685/0","686/0","687/2","763/0","763/1","789/4","851/0","851/1","851/2","877/0"],"_is":["1/1","3/0","3/1","5/1","7/0","8/0","9/0","10/0","11/0","11/1","12/0","14/1","19/1","20/0","21/0","21/1","22/2","22/3","22/4","22/5","23/0","23/2","23/3","24/3","25/0","29/0","29/1","30/0","31/2","33/0","34/0","35/0","36/0","37/0","37/1","38/0","39/1","42/1","47/1","48/0","52/1","52/2","52/3","56/0","56/2","57/0","58/1","58/2","59/0","59/2","60/0","61/1","63/0","65/0","65/5","67/0","71/0","79/1","80/0","83/0","84/1","90/0","91/0","92/0","93/0","94/1","101/0","103/0","104/0","105/0","105/1","108/0","111/0","112/0","114/0","115/1","116/0","118/0","118/1","119/2","123/0","123/1","123/2","124/1","125/0","125/1","127/1","128/0","128/1","128/2","128/4","128/5","128/6","129/1","130/4","130/5","134/1","134/2","135/0","136/3","137/0","138/2","138/3","139/0","139/1","142/0","145/0","145/1","147/0","149/0","149/1","151/0","154/0","154/1","155/0","155/2","155/5","156/1","156/2","156/4","157/0","157/2","159/0","160/0","161/1","161/2","162/0","163/0","163/1","166/0","171/0","171/3","171/4","174/0","174/2","175/1","175/3","177/1","180/1","181/1","182/1","183/0","184/0","187/0","189/0","192/1","193/2","194/2","195/0","196/1","197/1","197/2","198/0","200/1","202/1","203/0","204/0","205/1","206/1","207/1","209/0","212/2","214/2","215/0","219/1","220/1","221/1","222/1","225/0","225/1","226/0","226/1","227/0","227/1","227/2","228/0","231/2","233/1","235/0","240/1","241/1","242/1","242/2","245/0","245/1","246/0","251/2","257/0","265/0","267/0","269/0","272/0","273/0","273/1","275/1","276/1","277/1","280/1","281/0","281/1","282/0","283/0","285/2","293/0","293/1","294/0","295/0","296/0","296/4","297/0","298/0","299/1","300/0","302/0","304/1","308/1","309/0","309/1","309/2","309/3","309/4","309/5","310/2","311/1","313/0","314/0","314/1","315/0","315/1","315/2","315/4","316/0","316/3","319/1","320/1","322/1","322/3","324/0","325/0","327/1","328/0","328/1","331/0","335/0","336/0","336/1","337/1","338/0","345/0","345/1","345/2","348/0","349/0","349/1","350/0","351/0","352/0","353/0","354/0","355/0","356/0","358/0","359/0","360/0","361/0","363/0","364/0","366/0","367/0","367/2","368/0","371/0","375/2","377/1","378/1","379/1","383/0","384/0","385/2","385/3","386/1","386/2","391/1","397/1","400/1","406/0","406/2","406/3","418/1","418/3","418/5","420/0","420/1","421/1","421/2","422/1","424/0","429/1","434/0","438/0","447/0","450/0","455/0","456/1","459/0","460/0","461/0","461/5","462/2","462/3","462/6","463/0","464/0","464/4","466/0","466/1","468/0","469/0","471/0","472/0","472/1","472/2","473/0","474/0","475/0","475/1","481/1","484/1","486/1","487/0","492/0","493/0","499/0","501/0","501/2","501/3","505/0","507/0","513/0","516/0","518/0","530/0","534/1","535/0","536/0","536/1","537/0","537/5","542/0","556/0","556/2","556/3","556/4","557/0","558/1","565/0","571/1","573/0","579/0","583/1","584/0","589/0","592/0","594/1","594/3","594/4","601/1","605/0","605/1","606/0","607/0","607/1","608/1","609/0","612/0","613/0","617/0","618/0","619/1","620/0","622/0","625/0","625/2","628/1","629/0","629/1","629/2","629/3","640/2","641/0","642/2","647/0","654/1","657/2","658/2","659/2","662/0","663/0","664/0","665/1","666/0","666/1","667/0","667/1","667/2","669/0","676/0","682/1","684/1","685/0","686/0","688/2","690/1","692/1","692/2","692/3","693/1","695/1","697/1","697/2","697/3","697/5","701/1","702/1","703/1","707/1","708/1","709/1","710/0","711/0","712/0","717/0","718/1","720/1","730/5","731/0","732/0","733/0","735/2","737/1","739/0","741/0","742/0","742/2","745/1","747/0","748/0","749/0","750/0","751/1","756/0","756/2","756/3","756/6","756/7","756/9","757/0","758/0","760/1","761/1","763/1","767/0","768/0","769/0","769/4","770/0","772/1","775/1","775/3","775/4","779/3","779/4","779/5","779/6","783/0","784/0","784/1","785/0","785/1","785/2","785/3","786/0","786/7","787/0","787/2","787/3","788/1","788/2","789/0","789/3","794/0","797/1","797/3","798/1","799/0","799/2","800/0","801/0","801/1","801/3","805/0","807/0","808/0","809/1","811/1","812/0","813/0","815/0","815/1","815/2","815/3","815/4","819/0","820/1","822/0","822/3","822/4","823/0","830/0","831/0","833/0","834/0","836/0","836/2","836/3","836/4","839/0","840/1","842/0","842/1","843/0","847/1","847/3","849/0","852/0","853/0","853/2","853/3","853/6","855/1","861/0","862/0","863/1","866/0","866/3","867/3","867/7","870/1","872/2","873/1","876/0","876/2"],"_the":["1/1","2/0","3/0","3/1","5/0","5/1","6/0","7/0","8/0","8/1","9/0","10/0","11/0","12/0","13/0","14/0","14/1","17/0","18/0","20/1","21/0","21/1","22/0","22/1","22/2","23/0","23/1","23/3","23/4","24/0","24/1","24/3","25/0","25/1","27/0","28/0","29/0","29/3","32/0","33/0","34/0","34/1","35/0","36/0","37/0","38/0","39/0","39/1","40/0","41/0","42/0","42/1","45/0","46/0","48/0","49/0","49/1","50/0","51/0","52/0","52/1","52/3","53/0","55/0","56/0","56/2","57/0","59/0","60/0","60/1","61/0","62/0","63/0","64/0","65/0","65/1","65/2","65/3","67/0","68/0","69/0","69/1","70/0","70/1","71/0","72/0","73/0","74/0","75/0","79/0","79/1","81/0","82/0","83/0","85/0","86/0","87/0","88/0","90/0","91/0","92/0","93/0","94/0","94/1","94/2","95/0","96/0","97/0","98/0","99/0","100/0","101/0","102/0","103/0","104/0","104/1","104/3","105/0","107/0","108/0","109/0","111/0","112/0","113/0","114/0","115/0","117/0","118/1","119/0","119/2","120/0","122/0","123/0","123/2","123/3","123/4","124/1","125/0","125/1","126/0","127/0","127/1","128/1","128/3","128/4","128/5","128/6","128/7","128/8","129/1","130/1","130/2","130/3","130/4","130/5","133/0","134/1","134/2","135/0","136/0","136/2","137/0","138/0","138/1","142/0","143/0","143/1","143/2","144/0","144/1","147/0","148/0","148/1","151/0","154/0","154/1","154/2","155/0","155/5","155/6","156/3","156/4","157/1","157/3","159/0","160/0","161/0","161/1","161/2","163/1","165/0","167/0","169/0","170/0","171/0","171/1","171/2","171/3","171/4","172/3","172/4","174/0","174/2","174/3","174/4","174/5","175/1","175/2","175/3","176/0","177/0","177/1","178/0","179/0","179/2","180/0","180/1","180/2","181/0","182/0","182/2","183/0","184/1","185/1","186/0","187/0","188/0","189/0","191/0","192/0","192/1","193/0","193/1","193/2","194/0","194/1","194/2","196/0","196/1","197/0","197/1","197/2","199/0","200/0","200/1","201/0","202/0","202/1","203/0","204/0","205/0","205/1","205/2","205/3","206/0","206/1","207/0","207/1","208/0","208/1","209/0","210/0","211/0","212/0","213/0","213/1","214/0","214/1","214/2","218/0","221/0","222/0","222/1","223/0","224/0","225/0","225/1","226/0","226/1","227/0","227/1","227/2","229/0","229/1","230/0","231/0","231/1","231/2","233/0","233/1","234/0","235/0","236/0","237/0","238/0","239/0","240/0","241/0","242/0","242/1","243/0","244/0","246/0","247/0","248/0","249/0","250/0","251/0","251/2","252/0","253/0","254/0","255/0","256/0","257/0","258/0","259/0","260/0","261/0","262/0","263/0","264/0","265/0","265/1","266/0","267/0","268/0","268/1","269/0","270/0","271/0","272/0","273/0","273/1","275/0","275/1","276/0","276/1","277/0","277/1","278/0","279/0","280/1","281/0","281/1","282/0","283/0","283/1","284/0","285/0","285/1","285/2","285/3","286/0","287/0","288/0","289/0","290/0","291/0","292/0","293/0","294/0","295/0","296/0","296/1","296/3","297/0","297/1","299/0","301/0","302/0","303/0","304/0","304/1","305/0","306/0","307/0","308/0","309/2","309/3","309/5","310/0","311/0","311/1","312/0","313/1","313/2","314/1","315/1","315/3","315/4","316/1","316/2","316/3","317/0","318/0","319/1","320/1","321/1","321/2","322/1","322/3","323/0","324/0","325/0","326/0","327/0","327/1","328/2","330/0","332/0","333/0","334/1","334/2","335/0","335/1","336/0","337/0","337/1","337/2","338/0","339/0","340/0","345/0","345/1","345/2","346/0","349/1","352/0","354/0","355/0","356/0","359/0","360/0","361/0","364/0","367/0","367/2","368/0","369/0","372/0","373/0","373/2","374/0","374/2","375/0","375/3","376/0","377/0","378/0","379/0","384/1","384/2","385/0","385/1","385/2","386/1","386/2","387/0","388/0","389/0","390/0","391/0","391/1","392/0","393/0","394/0","395/0","396/0","397/0","398/0","399/0","400/0","400/1","401/0","402/0","403/0","403/1","404/0","405/0","406/1","406/2","406/3","407/0","408/0","409/0","410/0","411/0","412/0","413/0","414/0","415/0","416/0","417/0","418/0","418/1","418/2","418/3","418/4","418/5","420/1","421/0","421/1","421/3","422/1","422/2","423/1","425/0","425/1","426/0","427/0","428/0","429/0","434/0","436/0","436/1","438/0","439/0","440/0","441/0","442/0","443/0","444/0","445/0","446/0","448/0","449/0","450/0","451/0","452/0","453/0","454/0","455/0","456/0","456/1","457/0","458/0","459/0","461/0","461/5","461/8","462/2","462/3","462/4","462/5","462/6","463/0","463/1","464/0","464/2","464/4","466/0","466/1","470/0","471/0","472/2","479/0","481/0","482/0","483/0","484/1","487/0","488/0","491/0","492/0","493/0","494/0","495/0","496/0","497/0","498/0","499/0","500/0","501/0","501/1","501/2","501/3","502/0","505/0","506/0","507/0","508/0","510/0","512/0","513/0","519/0","522/1","524/0","525/0","526/0","527/0","528/0","529/0","530/0","531/0","534/1","536/1","537/1","537/2","537/3","537/5","539/0","540/0","541/0","542/0","544/0","545/0","546/0","547/0","548/0","549/0","550/0","551/0","552/0","553/0","554/0","554/1","555/0","556/0","556/1","556/2","556/3","556/4","557/1","557/2","558/2","559/0","560/0","560/1","561/0","562/0","563/0","564/0","565/0","565/1","566/0","567/0","568/0","570/0","571/0","571/1","572/0","573/0","574/0","575/0","576/0","576/1","577/0","578/0","579/0","580/0","581/0","582/0","583/0","583/1","584/0","585/0","585/1","586/0","586/1","587/1","588/1","589/0","592/0","593/0","594/0","594/1","594/2","594/3","596/0","600/0","605/0","608/0","610/1","611/0","612/0","613/0","617/0","618/0","620/0","620/1","620/2","625/0","625/1","625/2","627/0","628/0","628/1","628/2","629/0","629/1","629/2","629/3","636/0","637/0","638/0","639/0","640/0","640/1","640/2","642/0","642/1","642/2","643/0","644/0","644/1","645/0","645/1","647/1","647/2","649/0","650/1","651/0","652/0","654/0","654/1","656/0","657/0","657/1","657/2","658/0","658/2","659/0","659/1","659/2","660/0","662/0","662/1","663/0","663/1","665/0","665/1","666/0","666/1","666/2","667/0","667/1","667/2","668/0","669/1","670/0","670/1","671/0","672/0","673/0","674/0","676/0","677/0","678/0","679/0","680/0","681/0","682/0","682/1","684/0","684/1","685/0","686/0","687/0","687/1","687/2","688/0","688/1","688/2","689/0","690/0","690/1","691/0","692/0","692/3","693/0","693/1","694/0","695/0","695/1","696/0","697/0","697/1","697/4","697/5","698/0","699/0","700/0","701/0","701/1","702/0","702/1","703/1","705/0","706/0","707/0","707/1","708/0","708/1","709/0","709/1","710/0","711/0","712/0","713/0","714/0","715/0","716/0","717/0","718/0","718/1","719/0","720/0","720/1","721/0","722/0","723/0","724/0","725/0","726/0","727/0","728/0","729/0","730/0","730/1","730/2","730/3","730/4","730/5","731/0","731/1","731/4","732/0","733/0","735/0","735/1","736/0","738/0","738/1","739/0","741/0","741/2","742/2","743/0","743/1","745/0","745/1","746/0","747/0","747/1","747/2","748/0","749/0","750/0","751/0","751/1","752/0","752/1","753/1","754/0","755/0","756/1","756/2","756/3","756/4","756/5","756/7","756/8","756/9","757/0","758/0","759/0","760/0","761/0","762/0","763/1","764/0","764/1","765/0","766/0","767/0","768/0","769/0","769/1","769/2","769/3","769/4","770/0","771/0","772/0","772/1","773/0","775/0","775/1","775/3","775/4","775/6","777/0","779/2","779/6","779/7","780/0","781/0","783/0","784/1","785/3","786/0","786/1","786/3","786/7","787/0","787/1","787/2","788/0","788/1","788/2","789/0","789/1","789/3","789/4","790/0","790/1","792/0","792/2","793/0","793/1","793/2","794/0","794/1","795/0","795/1","797/0","797/1","797/3","798/0","798/1","799/0","799/2","799/3","800/0","800/1","802/2","803/2","804/1","805/0","805/1","806/1","807/1","808/1","809/1","810/0","811/0","811/1","812/1","812/2","813/0","814/0","815/0","815/1","815/3","815/5","816/0","817/0","817/2","818/0","819/0","820/1","821/0","822/0","822/1","822/4","823/0","824/1","825/0","825/1","826/0","827/1","827/2","828/0","829/0","830/0","831/0","833/0","833/1","834/0","834/4","835/0","836/0","836/1","836/3","836/4","836/5","836/6","839/2","840/0","840/2","842/2","843/0","845/0","846/0","847/1","847/2","847/3","847/4","848/0","848/1","849/0","850/0","851/0","851/1","851/2","852/0","853/0","853/1","853/2","853/3","853/4","853/5","853/7","854/0","855/0","855/1","856/0","857/0","860/0","860/1","861/1","862/0","862/1","863/0","863/1","863/2","866/2","866/3","866/4","866/5","866/6","867/0","867/5","867/7","868/0","870/0","870/1","872/0","872/2","872/3","874/0","876/0","876/1","876/2","879/0","881/0","882/0","882/1","885/0"],"_same":["1/1","29/3","130/3","144/1","179/2","316/1","386/2","423/1","463/1","537/5","605/0","659/1","667/0","669/1","795/1","820/1","853/7","863/0"],"_as":["1/1","10/0","22/1","22/3","24/1","29/3","36/0","52/2","56/0","64/0","65/0","85/0","113/0","118/0","119/2","128/1","128/4","130/5","138/1","143/1","144/1","148/1","155/1","155/3","156/3","158/0","158/1","160/1","165/1","171/0","171/4","172/2","174/1","180/1","182/1","189/0","196/1","197/0","199/0","200/0","201/0","202/0","208/1","224/0","231/1","231/2","233/0","240/0","246/0","251/2","273/0","274/0","285/1","297/1","299/1","304/1","305/0","306/0","308/1","309/0","309/1","311/1","313/2","314/1","316/1","317/0","328/1","331/0","334/2","352/0","360/0","364/1","376/0","384/1","398/0","403/1","406/0","406/1","406/2","412/0","421/0","421/1","422/0","423/0","423/1","430/1","432/0","456/0","457/0","458/0","461/5","461/7","463/0","468/0","472/2","501/2","502/0","503/0","510/0","512/0","515/1","520/0","521/0","522/0","523/0","536/1","537/5","538/1","544/0","556/4","557/2","561/0","579/0","584/0","587/1","605/0","609/0","620/2","625/1","626/0","640/2","642/2","667/0","669/1","673/0","675/0","684/0","692/1","730/1","730/3","730/6","733/1","734/2","739/0","741/0","747/1","769/1","769/2","779/0","784/1","786/0","787/2","788/2","789/3","790/1","792/2","793/2","794/0","795/1","797/0","797/2","809/1","811/0","811/1","813/1","834/1","836/1","842/2","844/1","847/3","853/1","853/5","853/7","866/1","866/4","867/0","867/4","867/6","868/0","871/0","874/0"],"_using":["1/1","23/3","23/4","24/3","32/0","52/1","69/1","70/1","94/0","111/0","114/0","118/0","119/0","121/0","126/0","126/1","144/0","157/1","161/0","170/0","171/2","196/2","206/0","212/0","296/4","305/0","309/5","311/0","312/0","313/1","317/0","319/2","327/0","347/0","349/1","384/3","386/1","421/0","490/0","509/0","510/0","511/0","512/0","536/1","551/0","557/1","558/1","565/0","573/0","587/1","607/1","628/0","640/2","651/0","652/0","697/4","699/0","717/0","730/1","731/4","735/1","747/0","748/0","759/0","769/4","775/6","786/5","787/3","792/0","816/0","822/1","866/4","866/5","867/2","867/4","877/0"],"_constructor":["1/1","2/0","3/0","8/1","11/0","12/0","20/1","34/1","37/0","38/0","144/1","353/1","355/2","356/0","360/0","361/0","362/0","363/0","368/0","390/0","396/0","436/0","519/0","836/4","850/0","851/1"],"_with":["1/1","2/0","3/0","5/1","7/0","20/1","27/0","28/0","33/0","39/1","49/1","62/0","63/0","64/0","68/0","69/1","70/1","128/7","138/0","138/3","139/1","143/0","143/2","144/0","145/1","148/0","149/1","156/4","160/0","171/4","174/1","184/1","189/0","204/0","205/3","226/1","246/0","248/0","257/0","283/1","285/3","296/4","305/0","306/0","307/0","311/0","312/0","314/1","315/1","319/0","320/1","327/1","336/0","336/1","349/0","384/0","384/1","385/0","385/1","385/3","400/0","420/0","421/0","421/1","439/0","440/0","441/0","442/0","443/0","444/0","445/0","446/0","447/1","448/0","449/0","461/0","461/1","462/2","466/0","466/1","478/0","480/0","481/0","485/0","504/0","505/0","507/0","518/0","523/0","525/0","526/0","527/0","528/0","529/0","531/0","537/1","551/0","554/1","556/2","556/3","564/0","574/0","584/0","588/0","601/0","602/0","603/0","614/0","622/0","629/3","637/1","638/1","640/0","647/0","647/1","653/1","659/0","660/0","664/0","672/0","674/0","692/2","693/1","697/0","698/0","704/0","719/0","730/0","730/6","731/1","732/1","733/1","737/0","745/0","745/1","747/0","748/0","753/1","764/0","764/1","765/0","771/0","772/0","773/0","787/1","790/1","792/2","793/2","801/1","809/1","809/2","815/0","815/1","815/3","818/0","820/0","822/2","822/4","822/5","834/0","836/1","836/2","836/3","843/0","843/1","844/1","847/4","853/2","853/3","862/1","866/4","866/5","867/6","877/1","883/0"],"_and":["1/1","3/0","3/1","5/1","21/0","21/1","22/1","22/5","23/4","24/0","26/0","27/0","28/0","29/0","32/0","39/1","55/0","56/1","56/0","59/1","59/2","60/1","61/0","61/1","63/0","64/0","65/3","72/0","73/0","74/0","79/1","100/0","103/0","111/0","112/0","113/0","116/0","123/2","123/3","123/4","124/1","128/3","128/7","130/5","134/1","136/2","138/2","139/0","143/2","144/1","145/0","149/0","154/1","155/0","157/0","157/2","157/3","158/0","160/0","160/1","161/2","162/0","169/0","171/1","171/3","171/4","172/2","172/5","174/1","174/2","174/3","175/3","182/0","182/1","184/0","185/1","187/0","189/0","192/1","193/1","194/1","196/0","196/1","205/0","205/2","205/3","208/1","214/1","214/2","225/0","227/3","228/0","229/1","230/0","231/2","242/1","251/1","265/1","273/1","273/2","280/1","283/1","287/0","293/0","296/0","296/2","296/4","297/0","309/0","309/1","309/2","311/0","311/1","314/1","314/2","315/1","315/3","316/1","316/3","317/0","318/0","320/1","327/1","334/1","335/0","337/1","347/0","348/1","374/0","375/3","384/1","384/2","384/3","385/0","386/2","403/1","404/0","405/0","418/1","418/3","419/0","420/1","421/2","422/1","425/1","429/2","430/0","447/0","450/0","451/0","452/0","453/0","454/0","455/0","459/0","461/7","461/8","462/0","462/2","462/4","464/3","466/1","468/0","469/1","470/0","471/0","472/1","473/0","474/0","475/0","475/1","487/0","501/0","501/1","501/2","513/0","530/0","535/0","537/0","537/1","537/3","537/5","538/1","542/0","554/1","556/1","560/1","561/0","569/0","571/1","574/0","576/1","579/0","587/1","588/1","594/0","594/1","600/0","601/0","602/0","603/0","604/0","605/0","610/1","620/1","625/2","631/0","632/0","637/1","638/1","639/0","643/0","647/1","654/1","658/2","661/0","663/0","669/1","673/0","674/0","675/0","682/1","687/1","688/2","692/3","695/1","697/5","698/0","718/0","730/1","730/3","730/4","730/6","731/0","732/0","732/1","733/0","733/1","733/4","735/0","735/1","736/0","738/1","738/2","739/0","741/0","743/0","745/0","748/0","751/0","751/1","752/1","753/1","754/0","756/0","756/2","756/3","756/5","756/6","756/8","759/0","763/1","765/0","766/0","769/0","769/2","769/3","769/4","770/0","772/0","773/0","775/1","775/3","775/5","776/0","778/1","778/0","779/3","779/4","781/0","784/0","785/0","785/1","785/2","785/3","786/0","786/2","786/3","787/1","788/2","789/0","789/1","789/3","789/4","793/2","794/0","795/0","795/1","797/0","797/1","798/2","799/1","800/1","801/1","801/2","802/1","803/1","803/2","804/1","805/0","805/1","806/1","809/1","810/1","811/0","811/1","813/0","815/5","818/0","820/0","822/0","822/2","822/5","823/0","823/1","827/2","830/0","831/0","833/0","833/1","834/0","834/1","834/4","835/0","836/1","836/3","836/4","839/0","840/0","840/2","842/0","843/0","843/1","844/0","844/1","846/0","847/1","847/2","847/3","848/1","848/2","853/1","853/3","854/0","855/1","857/0","860/1","861/1","861/2","863/2","865/0","866/0","866/2","866/3","866/4","866/5","866/6","867/1","867/4","867/5","867/7","868/0","872/3","875/0","876/0","876/1","876/2","877/0","877/1","879/0","882/1","883/0"],"_interface":["1/1","10/0","36/0","71/0","154/0","321/1","331/0","335/1","338/0","384/0","384/1","384/2","385/0","386/0","387/0","388/0","389/0","390/0","391/0","392/0","393/0","394/0","395/0","396/0","397/0","398/0","399/0","400/0","401/0","402/0","404/0","405/0","418/0","501/1","732/1","733/1","745/1","836/3","855/0","855/1","878/0"],"_signerorprovider":["1/1"],"_passed":["1/1","2/0","3/0","48/0","57/0","110/0","158/1","328/2","345/2","397/0","412/0","538/1","620/2","623/0","739/0","746/0","755/0","759/0","769/4","851/1"],"_when":["1/1","17/0","18/0","45/0","46/0","49/1","56/0","64/0","121/0","126/0","128/2","128/4","129/1","155/2","157/4","168/0","171/0","174/2","245/0","257/0","328/1","336/0","337/2","338/0","351/0","364/1","418/0","461/0","462/2","464/3","501/0","501/1","501/2","501/3","565/0","594/3","601/1","619/1","628/0","628/1","629/0","655/0","658/1","662/0","730/1","741/0","769/4","775/4","794/0","794/1","799/0","822/3","826/0","836/4","853/2","853/4","853/7","858/0","863/2","866/3","867/4","872/0"],"_creating":["1/1","32/0","184/1","336/0","364/1","436/0","501/0","519/1","519/0","735/0","850/0","853/7","872/0"],"_attach":["1/0","5/0","39/0"],"_returns":["2/0","3/0","5/0","6/0","14/1","25/0","27/0","28/0","39/0","40/0","42/1","49/0","50/0","51/0","54/0","55/0","58/0","76/0","90/0","91/0","92/0","93/0","128/4","156/0","163/0","164/0","168/0","169/0","180/1","197/0","199/0","200/0","201/0","202/0","208/0","209/0","210/0","211/0","212/0","213/0","215/0","222/0","223/0","228/0","299/0","300/0","301/0","302/0","303/0","304/0","305/0","306/0","307/0","308/0","310/0","311/0","319/0","350/0","357/0","392/0","393/0","397/0","398/0","399/0","400/0","401/0","402/0","422/0","423/0","424/0","425/0","427/0","428/0","437/0","439/0","440/0","441/0","442/0","443/0","444/0","445/0","446/0","448/0","449/0","450/0","451/0","452/0","453/0","454/0","455/0","456/0","457/0","458/0","459/0","473/0","474/0","475/0","480/0","481/0","483/0","484/0","485/0","486/0","504/0","505/0","507/0","520/0","521/0","522/0","523/0","525/0","526/0","527/0","528/0","529/0","530/0","531/0","532/0","533/0","534/0","535/0","538/0","547/0","548/0","549/0","550/0","551/0","555/0","559/0","560/0","561/0","562/0","563/0","564/0","566/0","567/0","568/0","592/0","596/0","641/0","642/0","643/0","644/0","649/0","650/0","651/0","652/0","654/0","699/0","714/0","715/0","716/0","717/0","853/4","853/6","874/0","875/0"],"_unsigned":["2/0","28/0","55/0","537/1","537/5","675/0","676/0","677/0","678/0","679/0","680/0","681/0","682/0","685/0","697/1","883/0"],"_transaction":["2/0","3/0","3/1","9/0","24/0","24/1","24/3","25/0","28/0","29/0","29/2","35/0","52/1","52/0","53/0","53/1","55/0","56/2","65/2","65/5","69/0","70/0","128/2","128/3","168/0","169/0","171/0","171/1","171/2","171/3","171/4","172/2","172/5","202/1","202/0","203/0","211/0","212/0","213/0","213/1","214/0","214/1","214/2","215/0","227/0","227/1","227/3","246/0","247/0","248/0","249/0","255/0","256/0","257/0","258/0","262/0","263/0","265/0","266/0","267/0","268/0","269/0","270/0","271/0","272/0","273/0","273/1","274/0","275/0","276/0","277/0","278/0","279/0","280/1","280/0","281/0","281/1","282/0","283/0","283/1","284/0","285/3","286/0","287/0","288/0","289/0","290/0","291/0","292/0","293/0","295/0","296/2","304/0","305/0","306/0","308/1","310/0","310/2","311/0","311/1","315/3","315/0","316/1","316/0","398/0","401/0","405/0","412/0","413/0","414/0","415/0","416/0","417/0","427/0","501/1","625/0","627/0","628/0","628/1","629/0","629/2","629/3","675/0","676/0","677/0","678/0","679/0","680/0","681/0","682/0","683/0","684/0","684/1","685/0","686/0","687/0","687/1","688/0","688/2","689/0","690/0","691/0","692/0","692/2","693/0","694/0","695/0","695/1","696/0","697/0","697/1","697/5","783/0"],"_which":["2/0","3/0","6/1","6/4","9/0","20/0","21/0","23/1","24/3","28/0","30/0","32/0","35/0","40/1","40/4","48/0","52/3","55/0","57/0","58/0","61/1","62/0","63/0","64/0","75/0","79/1","101/0","102/0","104/3","120/0","123/0","125/0","128/1","128/5","129/0","129/1","130/4","135/0","136/0","136/1","138/2","139/0","143/2","145/0","149/0","154/1","157/2","157/3","157/4","163/0","166/0","168/0","169/0","171/1","172/4","180/0","189/0","190/0","193/1","193/2","194/1","196/0","205/2","208/1","215/0","218/0","225/0","235/0","244/0","265/1","283/0","283/1","287/0","296/0","296/4","308/0","309/3","310/0","310/2","311/0","315/1","321/1","324/0","327/0","328/0","331/0","335/0","336/0","337/0","338/0","339/0","340/0","345/1","345/2","349/1","350/0","351/0","355/0","376/1","377/1","378/1","384/0","384/2","385/1","385/3","386/1","386/2","396/0","397/0","398/0","399/0","408/0","412/0","413/0","420/1","421/1","426/0","429/0","429/1","429/2","430/0","431/0","461/5","461/7","461/8","462/2","462/3","462/6","463/1","463/2","464/0","464/4","466/0","469/0","487/0","492/0","493/0","499/0","501/3","502/0","503/0","516/0","518/0","536/0","537/1","538/1","542/0","544/0","561/0","584/0","589/0","595/0","612/0","618/0","620/2","625/0","628/0","642/2","644/1","647/0","653/1","654/1","655/0","657/1","658/2","659/1","659/2","662/1","663/0","664/0","665/1","667/0","667/2","684/0","687/1","692/2","693/1","695/1","697/1","720/1","730/1","730/4","730/5","731/0","731/1","732/1","737/0","739/0","741/0","742/0","742/2","748/0","751/1","753/0","759/0","764/1","767/0","768/0","769/1","769/2","769/4","771/0","775/3","784/0","785/3","787/1","790/1","792/0","794/1","798/1","799/0","799/2","815/5","820/0","822/4","828/0","833/0","835/0","836/0","836/3","836/4","836/6","840/2","844/1","846/0","848/0","853/0","853/2","854/0","857/0","866/0","866/1","866/5","868/0"],"_would":["2/0","27/0","28/0","54/0","119/2","184/1","213/0","244/0","373/2","374/2","399/0","427/0","428/0","462/6","463/1","464/0","464/3","537/5","618/0","663/0","669/1","692/2","786/4","786/5","786/6","797/2","867/4"],"_deploy":["2/0","3/0","9/0","35/0","129/0","159/0","281/1","283/0","390/0","396/0","427/0"],"_args":["2/0","3/0","22/0","23/0","25/0","27/0","28/0","29/0","31/0","219/0","407/0","412/0","597/0","598/0","599/0","755/0"],"_get":["2/0","50/0","79/0","141/0","144/0","156/0","163/0","187/0","188/0","199/0","200/0","201/0","202/0","203/0","204/0","208/1","208/0","209/0","210/0","211/0","299/0","301/0","302/0","303/0","304/0","392/0","393/0","394/0","395/0","422/0","423/0","427/0","428/0","560/0","561/0","714/0","715/0","763/0","767/0","768/0","788/2","799/2","828/0","830/0"],"_getdeploytransaction":["2/0"],"_unsignedtransaction":["2/0","28/0","55/0","675/0","676/0","677/0","678/0","679/0","680/0","681/0","682/0","685/0"],"_uses":["3/0","20/1","128/5","174/1","205/1","420/1","461/4","464/2","542/0","657/1","658/1","697/2","748/0","790/1","836/4","846/0"],"_signer":["3/0","6/3","6/4","6/0","11/1","12/0","25/1","32/0","37/1","38/0","40/3","40/4","40/0","52/0","53/0","64/0","65/0","66/0","67/0","68/0","69/0","69/1","70/1","133/0","134/0","163/0","166/0","167/0","168/0","169/0","170/0","171/0","296/0","296/2","297/0","298/0","299/1","299/0","300/0","301/0","302/0","303/0","304/0","305/0","306/0","307/0","308/0","310/0","311/0","312/0","314/0","314/1","314/2","315/4","315/0","316/3","316/0","317/0","328/0","328/1","329/0","330/0","759/0","833/1","834/4","861/0"],"_into":["3/0","48/0","56/0","57/0","75/0","78/1","79/0","82/0","94/2","95/0","110/0","119/0","123/1","123/4","129/0","345/2","386/2","396/0","400/1","421/0","421/1","421/3","471/0","479/0","482/0","501/2","501/3","514/0","515/0","536/1","623/0","653/0","659/2","663/0","666/2","667/2","670/1","695/1","716/0","736/0","738/0","746/0","759/0","769/0","769/4","794/0","820/0","820/1","843/1","851/1","857/0","866/5","876/2"],"_where":["3/0","56/1","184/1","194/2","203/0","204/0","337/0","337/1","345/1","353/0","466/1","471/0","564/0","663/0","692/3","739/0","779/2","788/2","851/2"],"_will":["3/0","6/1","6/4","8/0","8/1","23/0","23/3","24/1","29/2","32/0","34/0","34/1","40/1","40/4","53/1","65/4","87/0","88/0","93/0","94/0","94/1","121/0","124/1","138/2","139/0","145/0","149/0","161/2","171/4","174/3","177/0","180/0","180/2","197/1","197/2","208/1","215/0","218/0","231/2","233/1","257/0","270/0","273/1","296/3","309/1","313/2","313/0","319/2","320/1","321/1","324/0","327/1","328/1","328/2","335/1","337/0","337/2","354/1","355/1","372/0","375/3","384/2","399/1","400/1","401/1","403/1","420/2","421/2","425/1","429/2","447/1","456/1","461/5","462/5","481/1","486/1","488/1","501/2","501/3","515/1","536/1","557/2","557/0","558/2","564/0","576/1","579/1","580/2","583/1","584/1","585/1","585/2","586/1","586/2","587/1","595/0","612/0","620/1","620/2","637/1","638/1","640/1","642/2","644/1","650/1","663/1","666/2","667/2","670/1","672/0","673/0","674/0","697/4","711/0","712/0","735/1","740/0","741/2","745/1","747/2","751/1","752/1","753/0","753/1","755/0","756/5","764/1","772/1","775/3","784/1","787/1","789/3","792/1","792/2","793/1","794/1","796/0","809/1","815/2","815/4","815/5","825/1","827/2","828/0","839/0","842/2","845/0","851/1","853/4","853/5","853/7","867/5","876/0","876/1"],"_be":["3/0","3/1","8/1","21/0","23/0","23/4","24/0","24/1","24/3","27/0","28/0","29/2","31/1","34/1","49/1","53/1","54/0","55/0","56/2","58/0","60/0","60/1","61/0","64/0","65/3","65/4","69/1","70/1","75/0","94/1","102/0","103/0","112/0","116/0","119/0","119/2","123/1","123/4","124/0","125/0","126/1","128/1","128/4","129/0","129/1","130/2","130/3","132/0","138/1","138/2","139/0","143/1","143/2","145/0","148/1","149/0","156/3","158/1","161/2","165/1","171/1","172/3","172/5","174/3","174/5","175/2","177/0","180/0","181/1","182/0","184/0","189/0","189/1","192/0","193/1","193/2","194/1","197/1","197/2","202/1","205/0","205/2","213/0","213/1","214/0","214/1","217/0","218/0","224/0","230/0","231/0","231/2","233/1","241/0","242/1","251/1","257/0","265/0","265/1","268/1","273/1","273/2","283/1","285/3","296/0","297/0","299/1","304/1","309/1","309/5","313/2","315/0","315/4","316/0","316/2","320/1","324/0","324/1","327/1","328/1","334/1","335/0","336/0","337/0","339/0","340/0","345/2","347/0","354/1","355/1","359/0","359/1","361/1","368/1","373/1","373/2","374/1","374/2","375/3","386/1","386/2","396/0","397/0","398/0","399/0","399/1","400/1","401/1","406/0","406/1","418/0","421/1","421/2","422/2","425/1","430/0","430/1","431/0","436/0","461/6","461/7","461/8","462/4","462/5","462/6","463/1","467/0","472/0","472/1","472/2","481/1","486/1","488/1","501/1","502/0","503/0","514/1","515/1","516/1","519/0","537/2","537/3","537/5","538/1","542/0","557/2","561/0","576/1","588/1","594/1","594/3","601/1","604/0","628/2","637/1","638/1","640/1","642/2","644/1","645/1","653/1","655/0","661/0","662/1","663/0","663/1","667/0","667/1","673/0","684/0","687/2","692/2","692/3","693/1","697/1","697/4","735/1","737/0","738/1","739/0","740/0","741/0","741/1","741/2","742/1","743/1","746/0","751/1","752/1","753/1","755/0","775/6","784/0","784/1","786/4","786/5","786/6","786/7","787/1","788/1","788/2","789/3","790/1","792/2","793/2","794/1","799/1","799/2","800/0","802/3","809/1","809/2","812/1","813/1","815/5","816/0","817/2","821/0","822/1","823/0","825/0","825/1","827/2","828/0","839/1","840/2","843/0","844/1","845/0","847/2","847/4","851/1","853/7","856/0","860/1","861/1","861/2","867/7","872/0","872/3","876/1","876/2"],"_deployed":["3/0","59/0","200/1","235/0","385/1","835/0","866/5"],"_once":["3/0","18/0","46/0","123/1","155/4","174/3","218/0","227/2","274/0","313/2","462/0","557/2","711/0","712/0","756/7","756/9","835/0"],"_mined":["3/0","3/1","65/5","171/3","210/0","213/1","214/0","215/0","227/1","229/1","244/0","257/0","274/0","275/0","275/1","276/0","276/1","277/0","277/1","278/0","280/1","284/0","292/0","627/0","628/0"],"_can":["3/1","21/0","24/3","29/2","49/1","53/1","56/0","56/1","58/0","61/0","61/1","75/0","116/0","123/4","125/0","126/1","128/1","128/5","129/0","129/1","130/3","136/2","143/2","158/1","165/1","172/3","172/5","174/5","175/2","181/1","189/0","192/0","205/2","230/0","242/1","273/2","283/1","296/0","296/2","296/4","299/1","316/2","317/0","324/1","331/0","334/1","335/0","336/0","349/1","361/1","368/1","385/3","386/2","396/0","397/0","398/0","406/0","406/1","421/2","430/0","430/1","438/0","461/0","461/7","461/8","464/4","467/0","472/2","502/0","516/1","542/0","561/0","588/1","594/1","604/0","610/2","629/3","645/1","647/1","647/2","662/1","667/0","684/0","693/1","695/1","697/1","739/0","741/0","746/0","759/0","775/1","775/6","784/0","785/1","786/0","786/7","788/2","789/4","790/1","794/1","795/0","798/1","812/1","815/5","816/0","821/0","822/1","831/1","833/1","834/4","835/0","836/5","836/6","840/2","844/1","854/0","856/0","860/1","861/1","861/2","866/2","876/2"],"_found":["3/1","589/0"],"_at":["3/1","20/0","20/1","79/0","79/1","118/1","161/0","163/0","179/2","193/1","194/1","201/0","218/0","229/1","235/0","285/3","301/0","625/1","663/1","665/1","667/2","688/1","688/2","714/0","720/0","741/1","775/1","779/4","784/1","789/1","836/4","867/6","873/0","875/0"],"_deploytransaction":["3/1","9/0","35/0"],"_no":["3/1","14/1","19/1","42/1","47/1","103/0","112/0","128/5","138/2","139/0","145/0","149/0","156/1","161/2","163/1","195/1","200/1","220/1","221/1","222/1","231/2","349/0","421/2","438/0","478/0","537/3","629/3","745/1","751/1","786/7","792/2","794/0","847/4","853/1","853/6","855/1","876/2"],"_interactions":["3/1","745/0"],"_should":["3/1","23/5","24/3","60/1","103/0","112/0","132/0","154/1","154/2","185/1","187/0","193/1","193/2","194/1","194/2","268/1","273/2","315/1","315/2","316/1","316/2","321/2","336/0","359/0","462/4","462/6","502/0","556/4","558/1","579/0","628/2","653/1","658/2","661/0","663/1","718/1","756/5","756/6","756/8","760/0","761/0","762/0","763/0","767/0","768/0","775/2","775/3","775/5","784/0","793/0","799/3","802/3","809/2","817/2","825/0","840/0","853/3","867/1"],"_made":["3/1","30/0","155/2","174/2","658/2","692/2","737/0","801/0","851/1","866/1"],"_until":["3/1","56/2","171/3","215/0","699/0","738/1","801/3","817/0","822/4"],"_promise":["3/0","8/0","13/0","22/0","23/0","25/0","27/0","28/0","29/0","34/0","41/0","49/0","50/0","51/0","52/0","53/0","54/0","55/0","165/0","169/0","170/0","193/0","199/0","200/0","201/0","202/0","203/0","204/0","206/0","207/0","208/0","209/0","210/0","211/0","212/0","213/0","214/0","215/0","265/1","266/0","267/0","268/0","269/0","270/0","271/0","272/0","273/0","280/0","299/0","299/1","301/0","302/0","303/0","304/0","305/0","306/0","307/0","308/0","310/0","311/0","312/0","316/0","320/0","327/0","564/0","698/0","699/0","755/0","756/7","756/9","763/0"],"_explain":["4/0","141/1","198/0","216/0","344/0","419/0","569/0","776/0","779/1","780/0","781/0","782/0"],"_here":["4/0","48/0","57/0","98/0","111/0","114/0","216/0","419/0","569/0","780/0","791/0","858/0"],"_new":["5/0","6/0","24/1","32/0","39/0","40/0","58/0","66/0","84/0","121/0","134/0","138/0","143/0","144/0","148/0","152/0","156/0","161/0","168/0","175/0","185/0","190/0","197/0","318/0","319/0","325/0","329/0","337/0","386/0","489/0","525/0","526/0","527/0","528/0","529/0","531/0","538/0","558/0","588/0","589/0","595/0","607/0","607/1","622/0","628/0","628/1","628/2","635/0","711/0","789/3","842/2","848/1","853/3","866/3"],"_useful":["5/1","39/1","64/0","69/1","70/1","129/0","212/2","274/0","328/1","349/1","384/3","399/1","401/1","403/0","501/0","501/2","501/3","537/5","558/2","593/0","601/1","605/1","607/1","730/6","731/0","785/0","796/0","814/0","822/3"],"_if":["5/1","8/1","9/0","11/0","11/1","12/0","14/1","19/1","22/2","23/0","23/3","24/3","29/2","31/2","34/1","35/0","37/0","37/1","38/0","39/1","42/1","47/1","52/2","58/1","58/2","65/2","65/3","83/0","90/0","91/0","92/0","93/0","119/2","134/1","134/2","138/2","139/0","145/0","149/0","154/1","155/6","156/1","157/2","161/1","161/2","163/1","170/0","171/4","175/1","175/3","179/2","180/1","181/1","196/1","197/1","197/2","200/1","206/1","207/1","220/1","221/1","222/1","225/1","228/0","231/2","233/1","248/0","251/2","257/0","273/1","275/1","276/1","277/1","280/1","281/1","283/0","294/0","295/0","298/0","300/0","308/1","309/0","309/1","309/5","310/2","311/1","313/1","315/2","315/3","315/4","316/2","316/3","319/1","320/1","322/1","322/3","325/0","327/1","334/1","337/2","367/2","391/1","400/1","406/1","406/3","418/1","420/1","422/1","424/0","427/0","450/0","451/0","452/0","453/0","454/0","455/0","456/1","459/0","462/6","464/3","472/1","472/2","473/0","474/0","475/0","475/1","481/1","484/1","486/1","505/0","507/0","530/0","535/0","539/0","557/1","576/1","582/0","583/0","583/1","592/0","594/4","606/0","607/0","608/1","609/0","628/2","629/1","629/3","641/0","650/1","654/1","682/1","688/2","692/2","697/1","697/2","697/4","697/5","711/0","712/0","745/1","747/2","751/1","756/1","756/6","756/8","760/1","761/1","763/1","768/0","769/1","770/0","772/1","775/5","779/4","779/5","779/6","786/2","786/4","790/0","799/3","809/2","811/0","815/2","815/4","820/1","825/1","827/2","836/2","848/2","851/1","853/6","867/3","867/4","873/0","873/1"],"_there":["5/1","23/0","26/0","39/1","56/1","56/2","130/4","136/0","158/0","200/1","213/1","227/3","315/4","336/0","406/3","461/2","461/3","461/5","462/1","503/0","519/1","544/0","604/0","614/0","619/0","619/1","655/0","662/0","671/0","688/2","692/3","697/5","756/8","786/7","787/2","787/3","788/0","790/0","794/0","797/2","797/3","802/3","853/0","853/1","853/2","853/6","867/3","869/0","876/1","876/2"],"_are":["5/1","14/0","15/0","19/1","20/1","22/1","26/0","30/0","39/1","42/0","43/0","47/1","52/2","56/1","56/2","60/0","61/0","133/0","135/0","136/0","144/1","155/3","155/6","157/1","157/2","157/3","157/4","158/0","172/0","174/2","175/3","179/1","179/2","196/1","208/1","220/1","221/1","227/3","246/0","248/0","265/1","274/0","296/3","313/1","314/0","336/1","376/1","378/1","403/0","406/1","418/3","421/1","429/0","461/1","461/2","461/3","461/5","461/7","461/8","462/1","471/0","503/0","519/1","539/0","544/0","545/0","554/1","557/1","560/1","587/1","593/0","594/0","604/0","605/1","607/1","648/0","655/0","661/0","667/0","667/1","671/0","675/0","688/2","692/3","730/3","730/4","731/4","737/0","741/0","741/2","756/2","756/4","756/8","769/1","769/3","769/4","775/5","778/0","779/0","779/7","783/0","785/1","788/0","789/1","789/2","790/0","792/0","794/0","796/0","797/2","802/1","803/1","812/1","813/1","817/3","822/3","830/0","836/2","836/3","836/4","839/2","842/0","842/1","842/2","844/1","846/0","850/0","851/1","853/1","858/0","863/0","866/1","866/2","867/1","867/6","868/0","869/0","872/0","873/1"],"_multiple":["5/1","39/1","155/2","156/0","174/1","174/2","179/2","648/0","658/1","667/0","735/0","737/0","738/0","751/1","772/1","853/6","866/4"],"_similar":["5/1","39/1","349/0","464/3","472/0","669/0","748/0","792/2","836/2","866/6"],"_or":["5/1","5/0","6/0","7/0","13/0","22/3","24/3","29/2","31/2","32/0","33/0","39/1","39/0","40/0","41/0","49/1","53/0","58/0","58/1","58/2","84/1","84/0","93/0","102/0","104/2","106/0","108/0","123/1","123/4","124/0","126/1","128/5","128/7","129/0","130/0","130/3","130/4","136/1","138/1","143/1","143/2","148/1","155/6","156/3","158/1","159/0","162/0","163/0","165/1","171/1","172/0","175/2","189/0","190/0","192/0","206/1","207/1","210/0","242/1","250/0","251/0","251/1","251/2","265/0","266/0","295/0","296/4","297/1","308/1","311/1","339/0","340/0","349/0","351/0","354/0","357/0","362/0","365/0","367/2","370/0","378/0","382/0","384/3","386/0","386/1","394/0","401/1","403/1","415/0","418/1","418/2","418/4","420/1","422/1","425/1","425/0","431/0","432/0","456/1","461/8","464/1","466/0","466/1","467/0","470/1","472/0","474/0","476/0","477/0","488/0","505/0","507/0","571/1","588/1","594/3","606/0","607/0","619/1","620/0","624/0","629/1","638/1","640/1","642/2","645/1","655/0","667/1","682/1","697/4","698/0","710/0","730/1","730/6","739/0","742/1","746/0","751/1","756/5","756/6","756/8","763/0","775/1","775/2","779/7","784/0","786/4","789/3","795/0","797/1","797/2","798/0","813/1","817/2","822/0","822/4","823/0","831/1","836/5","836/6","839/1","840/2","844/0","847/1","847/2","847/3","847/4","856/0","858/0","867/1","867/3","867/4"],"_identical":["5/1","39/1","195/0","226/1","406/1","468/0","874/0"],"_copies":["5/1","39/1","847/1","847/2"],"_on":["5/1","6/4","17/0","22/0","24/1","39/1","40/4","45/0","48/0","52/3","56/0","57/0","59/0","59/1","65/2","65/3","65/5","126/0","130/5","136/2","143/2","155/0","159/0","182/0","182/2","196/1","212/2","213/1","217/0","225/2","227/1","227/2","235/0","248/0","273/0","273/1","273/2","296/1","316/3","337/0","350/0","384/2","385/0","429/0","429/1","435/0","462/1","462/3","462/6","501/0","594/2","619/0","654/1","654/0","672/0","692/1","692/2","711/0","712/0","730/5","731/2","732/2","733/2","734/0","747/2","769/2","769/3","775/5","778/1","784/1","785/0","788/0","788/2","789/1","789/3","797/1","798/1","815/1","833/0","835/0","836/0","836/1","836/3","836/5","840/2","853/1","853/3","856/0","859/0","862/0","866/2","867/1","867/3","867/4","872/3"],"_network":["5/1","24/1","25/0","28/0","39/1","55/0","59/0","65/2","65/3","138/0","138/1","143/0","143/1","144/0","144/1","148/0","148/1","154/0","156/0","156/1","156/3","158/1","159/0","161/0","161/2","180/2","185/0","188/0","190/0","197/0","197/2","202/1","203/0","204/0","209/0","213/0","213/1","214/0","231/1","231/2","232/0","233/0","233/1","234/0","235/0","242/1","265/0","273/1","296/0","384/2","385/0","626/0","628/0","687/1","687/2","745/0","757/0","775/0","775/3","775/4","775/5","833/1","834/4","860/0","860/1","861/1","862/0"],"_you":["5/1","39/1","56/0","65/2","136/1","136/3","138/3","139/1","145/1","149/1","159/0","296/3","313/1","325/0","464/3","464/4","557/1","594/4","730/5","731/4","735/2","736/0","747/2","775/3","783/0","790/0","790/1","793/0","794/1","795/0","798/0","798/1","798/2","799/3","831/1","835/0","836/1","836/2","836/4","836/5","836/6","844/1","848/2","867/3","867/4"],"_wish":["5/1","23/1","39/1","325/0","669/0","786/4","790/0"],"_interact":["5/1","20/1","39/1","384/0","385/0","447/1","731/1","877/1"],"_each":["5/1","39/1","78/0","120/0","155/3","157/0","162/0","174/1","174/2","196/1","217/0","219/0","247/0","248/0","251/1","293/0","339/0","340/0","345/1","347/0","353/0","356/0","384/1","385/3","397/1","406/0","466/0","466/1","514/1","516/1","556/3","594/1","625/2","640/2","653/0","653/1","687/1","712/0","716/0","730/1","730/2","730/5","735/1","735/2","737/0","738/0","756/0","756/4","767/0","768/0","779/2","779/3","786/3","790/1","793/2","801/0","810/1","811/0","817/2","818/0","866/5","868/1","871/0","872/2","872/3"],"_them":["5/1","39/1","65/3","136/1","429/2","769/2","786/2","802/1","803/1"],"_name":["5/0","7/0","8/1","22/0","23/0","25/0","27/0","28/0","29/0","31/0","33/0","34/1","39/0","94/1","107/0","116/0","117/0","118/0","138/1","143/1","148/1","158/1","205/0","205/1","205/2","206/1","207/0","207/1","217/0","218/0","219/0","220/0","221/0","222/0","223/0","231/1","231/2","233/0","233/1","266/0","307/0","313/2","313/0","316/3","354/0","373/0","406/1","406/2","406/3","409/0","414/0","418/1","503/0","542/0","555/0","556/3","557/2","557/0","564/0","603/0","620/1","719/0","763/0","769/2","770/0","771/0","772/0","773/0","792/2","822/2","822/4","822/5","826/0","851/0","851/1","851/2","852/0","863/0","871/0"],"_addressorname":["5/0","39/0","763/0"],"_but":["6/0","21/1","29/1","40/0","111/0","114/0","129/1","135/0","154/1","171/0","171/4","180/2","195/1","212/1","213/1","257/0","296/2","315/0","316/0","328/1","399/1","401/1","464/4","501/1","588/0","588/1","593/0","622/0","628/0","640/1","659/1","663/0","665/0","667/1","669/0","688/2","747/0","784/1","785/0","786/3","788/0","788/2","789/1","789/2","800/0","813/0","823/0","830/0","836/6","847/3","863/0","876/0"],"_connected":["6/0","32/0","40/0","138/0","143/0","148/0","152/0","155/1","156/0","166/0","175/0","183/0","197/0","209/0","296/4","302/0","311/1","318/0","324/0","325/0"],"_providerorsigner":["6/0","32/0","40/0"],"_by":["6/1","6/3","21/0","24/1","31/0","40/1","40/3","49/0","70/0","116/0","118/0","123/0","123/1","127/1","128/6","130/5","134/1","137/0","142/0","147/0","151/0","156/0","157/1","161/2","163/0","164/0","166/0","171/1","174/4","177/1","182/0","189/0","241/0","242/1","243/0","246/0","250/0","251/0","254/0","273/0","283/0","285/1","286/0","290/0","293/0","315/1","336/1","338/0","351/0","384/1","386/1","406/1","406/3","461/8","463/0","469/0","504/0","537/1","538/0","560/0","571/1","589/0","592/0","610/1","619/1","628/0","649/0","654/0","667/1","673/0","674/0","687/2","697/4","717/0","720/1","730/1","730/3","730/4","734/2","738/0","740/0","740/1","742/0","769/4","775/6","787/1","789/3","819/0","822/4","828/0","866/4","866/5","867/3","882/1"],"_passing":["6/1","6/3","40/1","40/3","219/0","536/1","740/1","787/1"],"_provider":["6/1","6/0","11/0","11/1","32/0","37/0","37/1","40/1","40/0","64/0","68/0","134/0","136/3","137/0","138/1","138/0","141/0","142/0","143/1","143/0","144/0","147/0","148/0","151/0","152/0","154/0","154/2","155/0","156/0","160/0","161/0","163/0","164/0","165/0","167/0","171/0","171/2","174/0","174/5","175/1","175/2","175/3","175/0","176/0","177/0","178/0","179/0","180/0","180/1","181/0","181/1","182/0","183/0","184/1","184/0","185/0","186/0","189/0","189/1","190/0","191/0","192/0","193/0","194/0","195/0","196/0","197/0","198/0","199/0","200/0","201/0","202/0","203/0","204/0","205/3","206/0","207/0","208/0","209/0","210/0","211/0","212/0","213/0","214/0","215/0","217/0","218/0","219/0","220/0","221/0","222/0","223/0","228/0","298/0","311/1","314/1","318/0","324/0","325/0","329/0","711/0","712/0","730/1","730/2","730/0","735/0","735/1","758/0","778/1","833/1","834/4","835/0","860/0"],"_downgraded":["6/1","40/1"],"_only":["6/1","21/0","23/0","29/3","31/1","40/1","128/5","135/0","157/2","157/4","171/0","174/3","182/1","218/0","219/1","228/0","246/0","285/1","285/3","295/1","300/0","309/1","315/3","328/1","336/1","376/1","406/3","421/1","450/0","451/0","452/0","453/0","454/0","455/0","459/0","461/2","461/5","473/0","474/0","475/0","530/0","534/1","535/0","576/1","631/0","632/0","633/0","647/2","661/0","720/1","742/2","769/4","786/0","786/5","793/2","802/3","820/1","822/2","835/0","840/0","848/0","852/0","853/4","860/1"],"_has":["6/1","20/0","25/1","40/1","62/0","116/0","123/3","128/3","128/8","155/4","155/6","171/1","174/3","202/0","214/2","225/0","257/0","274/0","275/1","276/1","277/1","280/1","283/0","304/0","313/2","334/1","345/1","376/0","421/1","462/0","463/2","468/0","469/0","502/2","502/3","537/5","538/1","557/2","594/1","608/0","612/0","627/0","628/0","659/2","662/1","675/0","732/0","733/0","769/2","785/0","789/0","797/0","802/0","803/0","804/0","805/0","806/0","827/2","843/1","849/0","850/1","851/0","851/2","852/0","855/0","855/1","866/1","867/3","868/1"],"_read":["6/1","21/0","29/3","40/1","90/0","328/1","618/0","800/1","835/0","860/1"],"_access":["6/1","23/4","40/1","52/3","128/7","130/0","130/1","143/2","171/4","172/3","182/1","384/2","732/4","733/4","734/2","741/3"],"_constant":["6/2","21/0","24/0","40/2","367/0"],"_calls":["6/2","40/2","59/1","165/1","316/3","560/0","828/0","851/1"],"_act":["6/4","40/4"],"_behalf":["6/4","40/4"],"_that":["6/4","8/0","11/0","11/1","12/0","13/0","14/0","15/0","22/1","27/0","28/0","29/0","31/2","34/0","37/0","37/1","38/0","40/4","41/0","42/0","43/0","53/1","56/2","60/0","65/2","65/3","79/1","83/0","100/0","103/0","112/0","116/0","119/2","121/0","124/1","128/4","128/5","135/0","155/3","155/6","157/1","158/1","171/4","174/3","176/0","186/0","196/1","205/2","208/1","213/0","213/1","227/1","227/2","231/2","242/0","242/1","244/0","251/1","251/2","257/0","259/0","265/0","273/2","274/0","278/0","283/0","288/0","291/0","292/0","299/0","299/1","314/0","337/2","345/0","359/0","386/2","404/0","405/0","415/0","420/2","421/1","421/2","426/0","427/0","428/0","434/0","435/0","460/0","461/5","462/2","462/6","463/0","463/1","464/0","464/1","464/3","468/0","501/0","502/0","542/0","558/1","564/0","588/1","594/4","605/0","608/0","612/0","629/3","640/2","642/0","643/0","644/1","647/0","648/0","667/0","667/1","667/2","675/0","717/0","718/0","730/2","730/4","730/5","735/1","735/2","741/1","741/2","779/2","779/4","779/5","779/6","785/1","786/0","788/0","789/0","789/3","792/2","796/0","797/2","799/1","827/2","833/0","842/0","842/1","842/2","848/1","852/0","853/2","855/1","863/0","882/1"],"_connect":["6/0","40/0","144/0","156/3","161/0","168/0","298/0","325/0","700/0","844/0"],"_ens":["7/0","8/1","33/0","34/1","159/0","205/0","205/2","205/3","206/0","235/0","266/0","307/0","316/3","555/0","844/1","851/1","851/0","881/0"],"_was":["7/0","8/1","9/0","11/0","11/1","12/0","33/0","34/1","35/0","37/0","37/1","38/0","48/0","57/0","167/0","171/3","186/0","195/1","213/1","242/0","275/0","276/0","277/0","278/0","281/1","284/0","285/1","288/0","291/0","292/0","293/0","295/0","346/0","421/0","421/1","427/0","462/6","576/1","614/0","619/0","621/0","628/2","644/1","663/0","664/0","665/0","665/1","667/2","692/2","792/0","843/1","850/0","851/1","853/1","853/2","866/5"],"_constructed":["7/0","33/0","836/4"],"_string":["7/0","8/0","23/3","33/0","34/0","51/0","74/0","77/0","83/0","84/1","86/0","89/0","97/0","99/0","102/0","107/0","113/0","115/0","117/0","138/1","143/1","143/2","148/1","164/0","169/0","183/0","188/0","200/0","201/0","206/0","207/0","212/0","230/1","230/2","231/1","233/0","235/0","236/0","237/0","240/0","244/0","245/0","247/0","250/0","251/0","254/0","256/0","259/0","260/0","261/0","262/0","266/0","267/0","271/0","276/0","279/0","281/0","282/0","283/0","285/0","287/0","288/0","289/0","299/0","305/0","307/0","308/0","309/0","309/2","309/5","310/0","312/0","323/0","326/0","327/0","330/0","332/0","333/0","337/1","339/0","340/0","345/1","345/2","345/0","348/0","349/1","349/0","350/0","351/0","354/0","355/0","357/0","361/0","362/0","365/0","368/0","370/0","372/1","373/2","373/0","374/0","375/3","375/0","382/0","386/0","386/1","391/1","391/0","394/0","395/0","396/0","398/0","399/0","409/0","410/0","411/0","414/0","415/0","416/0","422/0","423/0","425/0","426/0","427/0","428/0","431/0","457/0","458/0","461/8","468/0","469/0","475/0","476/0","477/0","478/0","482/0","483/0","484/0","485/0","486/0","487/0","492/0","493/0","494/0","501/2","501/3","503/0","504/0","505/0","506/0","507/0","510/0","512/0","514/0","522/0","532/0","533/0","537/0","537/1","542/0","546/0","547/0","548/0","549/0","550/0","551/0","552/0","553/0","554/0","555/0","559/0","561/0","562/0","563/0","566/0","567/0","568/0","571/0","572/0","573/0","577/0","578/0","579/0","580/0","581/0","583/0","584/0","587/0","590/0","591/0","608/0","612/0","620/2","636/0","637/0","638/0","640/0","642/0","643/0","644/0","645/0","647/0","647/1","649/0","650/0","653/1","654/0","662/0","667/0","668/0","673/0","676/0","684/0","685/0","686/0","693/0","694/0","697/0","700/0","701/0","702/0","705/0","713/0","714/0","716/0","717/0","718/0","739/0","747/0","763/0","771/0","772/0","773/0","854/0","865/0","870/1","874/0"],"_resolve":["8/0","34/0","205/3","207/0","215/0","307/0","564/0","763/0"],"_object":["8/0","9/0","20/1","23/1","34/0","35/0","59/0","75/0","138/1","143/1","143/2","148/1","156/4","168/0","171/2","171/4","225/0","228/0","231/1","248/0","283/1","300/0","345/1","345/2","350/0","357/0","358/0","362/0","363/0","365/0","366/0","370/0","371/0","382/0","383/0","386/0","386/1","406/1","429/1","432/0","435/0","459/0","462/2","466/0","466/1","473/0","474/0","475/0","475/1","491/0","514/0","515/0","516/0","516/1","536/0","538/1","556/2","556/3","558/1","601/0","622/0","641/0","683/0","836/1","836/2","850/0","855/0","855/1","856/0","857/0","862/0"],"_provided":["8/1","11/0","11/1","12/0","14/1","19/1","31/2","34/1","37/0","37/1","38/0","42/1","47/1","58/1","58/2","124/0","126/1","138/2","139/0","145/0","149/0","155/5","156/1","163/1","175/3","220/1","221/1","222/1","320/1","327/1","328/2","472/2","594/0","671/0","697/2","730/3","797/3","847/3"],"_it":["8/1","21/1","24/1","24/2","24/3","25/0","26/0","29/0","34/1","52/3","59/1","60/1","65/0","65/3","75/0","79/1","93/0","104/1","118/0","123/1","123/3","128/5","130/3","135/0","136/3","138/3","139/1","145/1","149/1","155/0","155/1","155/2","155/6","157/0","157/1","161/2","171/0","171/3","174/1","180/1","182/1","184/1","187/0","189/0","197/2","218/0","227/2","246/0","257/0","266/0","273/2","274/0","283/0","285/1","285/3","292/0","295/0","296/2","296/4","309/0","309/1","309/5","313/1","313/2","314/0","315/2","315/3","315/4","316/3","320/1","327/1","328/1","334/1","352/0","359/1","361/1","368/1","375/3","385/3","406/2","418/1","420/1","421/2","422/1","438/0","462/0","462/2","462/5","463/1","464/3","468/0","472/0","501/0","505/0","507/0","518/0","556/4","557/1","557/2","571/1","594/1","610/2","637/1","638/1","640/2","642/2","645/0","647/1","650/1","651/0","654/1","661/0","667/0","692/2","692/3","697/3","697/4","698/0","699/0","725/0","730/5","735/0","735/2","745/1","748/0","750/0","756/5","768/0","770/0","785/2","786/0","788/2","792/2","798/1","799/2","799/3","807/0","808/0","809/2","811/1","822/0","828/1","831/0","831/1","834/3","836/1","836/4","842/1","843/1","848/1","849/0","850/0","853/5","855/1","860/1","861/1","862/1","868/0","872/1","882/1"],"_equal":["8/1","34/1","315/4","375/2","450/0","456/1","606/0","667/0","687/2"],"_resolved":["8/1","8/0","34/1","34/0","177/0","316/2","756/7","756/9","763/1","851/0","851/1","851/2"],"_resolvedaddress":["8/0","34/0","851/2"],"_result":["9/0","21/0","22/0","23/0","23/3","23/4","24/2","24/3","29/0","35/0","52/3","113/0","115/1","128/4","138/2","139/0","145/0","149/0","171/4","174/3","177/0","180/1","180/2","193/2","194/2","200/1","203/0","204/0","212/0","305/0","306/0","316/2","337/0","337/2","340/0","399/0","400/1","400/0","401/0","402/0","406/0","407/0","412/0","427/0","428/0","461/5","587/1","698/0","738/0","799/1","815/1","853/5","853/7"],"_deployment":["9/0","35/0","123/3","128/1","359/0","360/0","396/0"],"_used":["9/0","22/3","23/4","29/2","35/0","49/0","49/1","53/1","58/0","60/0","61/1","104/0","111/0","114/0","116/0","118/0","123/4","128/1","128/2","129/1","134/2","138/2","139/0","143/2","145/0","149/0","156/2","157/1","157/3","161/2","163/1","165/1","172/3","172/5","174/5","175/1","179/0","181/1","182/0","184/0","189/0","189/1","191/0","192/1","195/1","197/1","205/2","219/1","224/0","227/2","231/2","240/0","242/1","243/0","281/1","283/0","283/1","285/3","286/0","293/0","296/0","296/1","305/0","306/0","313/2","315/1","316/2","322/1","322/3","324/0","335/0","336/0","337/0","338/0","351/0","359/0","398/0","418/0","427/0","447/0","461/8","463/0","464/3","484/1","491/0","502/0","503/0","513/0","516/0","542/0","544/0","556/0","557/2","560/0","561/0","565/0","584/0","588/1","593/0","594/3","604/0","627/0","628/2","642/2","644/1","655/0","662/1","667/0","667/1","682/1","684/0","692/1","692/2","695/1","697/1","697/2","697/4","709/0","746/0","751/1","753/1","756/2","767/0","768/0","769/0","769/4","778/0","779/0","783/0","785/3","790/1","799/0","812/0","812/1","813/1","815/5","821/0","827/2","844/1","849/0","860/1","861/1","861/2","872/0","872/2"],"_response":["9/0","25/0","35/0","52/0","155/5","171/0","180/2","181/0","193/2","214/0","249/0","274/0","311/0","399/0","882/1"],"_transactionresponse":["9/0","25/0","35/0","52/0","171/2","171/4","204/0","214/0","249/0","274/0","283/1","311/0"],"_abi":["10/0","20/1","22/0","32/0","36/0","48/0","57/0","335/0","337/0","338/0","339/0","340/0","341/0","342/0","343/0","344/0","345/0","345/1","345/2","346/0","353/0","384/0","385/2","386/0","386/1","386/2","403/1","418/1","565/0","836/4","836/5","836/6","844/0","866/5","876/2","878/0","879/0"],"_had":["11/1","37/1"],"_events":["13/0","14/1","19/1","41/0","42/1","47/1","52/2","58/0","196/0","208/1","216/0","221/1","224/0","225/2","227/3","388/0","776/0"],"_match":["13/0","30/0","41/0","155/6","206/1","225/0","250/0","251/0","251/1","579/0","583/1","585/1","586/1","612/0","771/0","779/2","779/5","779/6","882/1"],"_event":["13/0","14/0","14/1","15/0","16/0","17/0","18/0","19/0","19/1","24/3","30/0","31/0","31/1","41/0","42/0","42/1","43/0","44/0","45/0","46/0","47/0","47/1","196/0","216/0","217/0","218/0","219/0","220/0","221/0","222/0","223/0","226/1","227/1","230/0","351/0","353/1","354/0","355/2","356/0","364/0","364/1","365/0","366/0","388/0","393/0","395/0","400/0","403/1","404/0","407/0","408/0","409/0","410/0","418/1","418/2","710/0","847/4","856/0","866/6"],"_query":["13/0","41/0","58/0","208/1","779/0","835/0"],"_filter":["13/0","30/0","31/0","41/0","58/0","208/0","225/0","225/1","226/0","226/1","227/0","227/3","250/0","251/0","252/0","253/0","254/0","287/0","397/0","779/0","779/2","781/0"],"_queryfilter":["13/0","41/0"],"_from":["13/0","24/3","41/0","49/1","52/0","53/0","58/1","58/0","80/0","84/0","87/0","104/0","155/3","167/0","174/2","181/0","186/0","189/0","193/2","197/2","202/1","203/0","204/0","226/2","252/0","267/0","268/1","282/0","296/2","305/0","306/0","313/2","315/3","315/4","319/0","320/0","321/0","322/0","336/1","337/1","337/2","345/0","349/1","357/0","362/0","365/0","370/0","382/0","386/0","399/0","400/0","401/0","402/0","412/0","417/0","420/1","428/0","436/1","437/0","448/0","462/3","484/0","507/0","520/0","521/0","522/0","523/0","538/0","557/2","558/0","574/0","575/0","576/0","610/0","610/1","640/1","661/0","673/0","686/0","687/1","687/2","693/1","696/0","698/0","711/0","730/5","746/0","753/1","795/0","800/1","815/5","830/0","831/1","836/6","844/0","847/4","848/0","850/1","851/2","852/0","858/0","859/0","863/1","866/3","866/4","868/0","872/0"],"_block":["13/0","41/0","172/2","199/0","200/0","201/0","202/0","203/0","204/0","210/0","212/0","227/1","229/1","229/0","236/0","237/0","238/0","239/0","240/0","241/0","242/0","243/0","244/0","245/0","246/0","247/0","248/0","249/0","252/0","253/0","254/0","255/0","256/0","257/0","263/0","264/0","275/0","275/1","276/0","276/1","277/0","277/1","278/0","284/0","285/3","288/0","291/0","292/0","293/0","294/0","301/0","304/0","711/0","731/0","809/0","814/0","817/1"],"_hash":["13/0","41/0","169/0","171/0","171/1","171/2","171/4","215/0","227/0","236/0","237/0","254/0","256/0","262/0","276/0","288/0","289/0","309/4","309/5","351/0","364/1","395/0","404/0","411/0","428/0","493/0","545/0","546/0","552/0","553/0","554/0","562/0","563/0","640/2","684/0","697/1","718/0","718/1","865/0","879/0","882/0"],"_fromblockorblockhash":["13/0","41/0"],"_toblock":["13/0","41/0","253/0"],"_array":["13/0","15/0","41/0","43/0","76/0","77/0","78/0","110/0","120/0","122/0","141/0","164/0","175/2","176/0","204/0","208/0","223/0","226/0","230/2","247/0","249/0","251/2","251/0","261/0","290/0","309/3","309/5","339/0","340/0","345/1","356/0","369/0","374/0","375/3","377/0","377/1","378/0","379/0","387/0","388/0","389/0","391/1","391/0","397/0","406/0","406/2","432/0","466/0","476/0","479/0","480/0","481/0","482/0","489/0","490/0","509/0","511/0","516/2","556/3","651/0","652/0","716/0","759/0","768/0","771/0","773/0","775/3","779/6","870/0","873/0"],"_number":["14/0","22/3","27/0","42/0","49/0","50/0","54/0","82/0","85/0","87/0","88/0","93/0","95/0","96/0","102/0","105/0","138/1","143/1","148/1","177/0","179/0","180/0","181/0","199/0","202/0","210/0","211/0","213/0","222/0","222/1","229/1","231/2","234/0","238/0","239/0","241/0","242/0","243/0","255/0","258/0","263/0","264/0","268/1","268/0","269/0","270/0","272/0","273/0","275/0","277/0","278/0","284/0","286/0","291/0","292/0","293/0","301/0","302/0","303/0","304/0","306/0","359/0","378/0","417/0","429/0","433/0","434/0","437/0","439/0","440/0","441/0","442/0","443/0","444/0","445/0","446/0","448/0","449/0","450/0","451/0","452/0","453/0","454/0","455/0","456/1","456/0","457/0","458/0","459/0","461/8","462/0","462/1","463/0","463/1","463/2","464/0","468/0","469/0","495/0","496/0","497/0","498/0","499/0","500/0","502/0","505/0","507/0","508/0","518/0","520/0","521/0","522/0","523/0","525/0","526/0","527/0","528/0","529/0","530/0","531/0","534/0","535/0","537/0","537/1","537/3","540/0","541/0","585/0","586/1","586/0","609/0","652/0","663/1","663/0","677/0","682/0","687/2","687/0","688/0","689/0","691/0","692/0","695/0","704/0","706/0","707/0","708/0","709/0","710/0","715/0","756/8","760/0","761/0","762/0","786/0","787/1","820/0","820/1","853/7","864/0","866/4","875/0"],"_listeners":["14/0","15/0","19/0","42/0","43/0","47/0","219/0","220/1","221/0","222/0","222/1","223/0"],"_subscribed":["14/0","15/0","42/0","43/0"],"_total":["14/1","42/1","175/1","222/1","243/0"],"_count":["14/1","14/0","42/1","42/0","69/0","70/0","202/0","222/0","304/0","502/0","606/0"],"_all":["14/1","19/0","19/1","42/1","47/0","47/1","110/0","121/0","157/1","160/0","164/0","171/0","171/4","172/4","219/0","220/1","221/0","221/1","229/1","243/0","248/0","264/0","265/1","274/0","287/0","290/0","314/0","316/2","348/0","387/0","388/0","389/0","420/2","461/7","462/4","464/0","464/4","479/0","480/0","482/0","485/0","515/1","560/1","587/1","588/0","595/0","630/0","673/0","674/0","718/0","730/4","731/1","737/0","737/1","741/2","742/0","747/0","751/0","752/1","753/0","756/5","769/3","769/4","771/0","773/0","775/5","779/4","788/0","790/1","792/2","793/2","794/0","811/0","822/4","834/0","839/1","839/2","840/0","844/1","846/0","847/2","848/1","853/0","853/1","854/0","866/1","870/0"],"_listener":["14/0","15/0","16/0","17/0","18/0","42/0","43/0","44/0","45/0","46/0","217/0","218/0","219/0","220/0","220/1","222/0","223/0"],"_listenercount":["14/0","42/0","222/0"],"_list":["15/0","43/0","110/0","122/0","164/0","176/0","203/0","223/0","247/0","249/0","261/0","284/0","293/0","369/0","556/1","663/0","719/0","771/0","773/0","811/1","813/1","866/5","870/1"],"_unsubscribe":["16/0","19/0","44/0","47/0","58/0"],"_off":["16/0","44/0","220/0","634/0"],"_subscribe":["17/0","18/0","45/0","46/0","58/0"],"_calling":["17/0","18/0","45/0","46/0","52/3","56/0","194/2","212/2","305/0","506/0","508/0","564/0","863/2"],"_occurs":["17/0","18/0","45/0","46/0","628/1","629/1","688/2","775/4"],"_for":["19/0","22/1","22/2","22/5","23/2","23/3","23/4","25/0","30/0","31/0","32/0","47/0","50/0","54/0","59/1","60/0","61/0","65/0","65/3","65/5","69/0","75/0","81/0","82/0","84/0","99/0","104/0","104/1","105/1","106/0","108/0","109/0","116/0","119/0","122/0","123/0","123/3","124/1","129/0","130/2","130/3","130/4","136/0","138/1","138/3","139/1","143/1","145/1","148/1","149/1","154/1","155/0","157/0","159/0","160/0","165/1","168/1","171/1","171/2","171/3","178/0","179/0","181/1","182/2","188/0","192/0","196/0","196/1","196/2","202/1","205/1","212/2","213/1","214/2","215/0","217/0","218/0","220/0","220/1","221/0","222/0","223/0","225/2","229/1","247/0","248/0","251/2","252/0","253/0","254/0","261/0","268/0","280/0","293/0","296/2","309/2","310/2","312/0","316/1","316/2","318/0","321/1","323/0","324/0","326/0","328/2","329/0","331/0","336/0","337/2","349/1","354/1","356/0","373/1","373/2","374/1","374/2","375/1","375/3","377/1","378/0","378/1","379/1","390/0","392/0","393/0","394/0","395/0","397/0","398/0","399/0","399/1","400/0","401/0","401/1","402/0","403/0","403/1","405/0","406/2","418/3","421/1","425/0","425/1","434/0","437/0","460/0","461/2","461/5","462/4","462/6","463/2","464/3","472/1","501/1","519/1","520/0","521/0","522/0","523/0","537/4","537/5","543/0","556/0","556/2","558/0","561/0","570/0","571/0","572/0","574/0","575/0","576/0","577/0","578/0","580/1","593/0","600/0","605/1","625/1","625/2","629/0","629/2","629/3","631/0","632/0","633/0","635/0","636/0","637/0","638/0","643/0","647/2","653/0","657/2","658/2","659/2","660/1","665/0","665/1","666/0","667/0","668/0","670/0","671/0","678/0","679/0","680/0","681/0","682/0","684/0","687/0","688/0","689/0","690/0","691/0","692/0","692/2","693/0","694/0","695/0","701/0","702/0","707/0","708/0","713/0","717/0","730/0","730/2","730/3","730/5","730/6","731/0","731/2","732/0","732/2","733/1","733/2","734/0","735/1","735/2","738/2","741/0","743/0","747/2","748/0","752/0","754/0","756/6","757/0","758/0","762/0","772/0","773/0","775/3","785/3","786/0","786/2","786/4","786/7","789/1","789/3","792/0","792/2","793/2","797/3","798/0","798/1","799/2","800/0","812/1","813/0","814/0","815/0","819/0","821/0","825/0","829/0","830/0","831/0","831/1","834/0","836/1","839/1","840/1","842/2","843/0","843/1","844/1","847/3","847/4","850/0","853/2","853/3","855/1","860/0","862/1","863/3","866/1","866/5","867/4","867/5","869/0","870/0","872/3","876/2","880/0","881/0","882/0","885/0"],"_unsubscribed":["19/1","47/1"],"_remove":["19/0","47/0","220/0","221/0","770/0","771/0","772/0","773/0"],"_removealllisteners":["19/0","47/0","221/0"],"_meta":["20/0","23/3","48/0","57/0","308/1","738/2","836/4","844/0","855/1"],"_class":["20/0","23/3","48/0","57/0","61/1","69/1","70/1","184/0","187/0","188/0","296/1","296/4","297/0","314/2","317/0","335/1","385/0","438/0","536/1","557/2","557/0","558/2","587/1","607/1","622/0","752/0","752/1","753/0","836/3","836/4","844/1","850/1","854/0","854/1","855/1"],"_any":["20/0","21/1","22/0","29/1","29/0","31/2","58/1","58/2","111/0","114/0","115/1","116/0","127/0","128/7","130/3","158/1","165/0","171/4","182/2","186/0","187/0","193/0","205/0","212/1","224/0","225/1","226/2","227/0","230/0","231/0","250/0","251/0","251/2","273/1","287/0","296/4","310/1","315/1","315/2","316/1","324/0","345/2","348/0","361/1","368/1","377/1","406/2","418/0","421/2","422/2","424/0","429/1","461/5","466/0","469/0","488/1","490/0","538/1","556/2","560/0","564/0","588/1","610/1","620/2","634/0","645/1","654/1","661/0","672/0","673/0","674/0","688/2","698/0","699/0","735/1","740/0","741/2","756/5","756/8","771/0","775/5","779/4","779/6","789/3","795/0","799/3","815/5","820/0","836/5","844/0","847/1","847/3","847/4","848/2","851/1","866/0","867/1","870/1"],"_its":["20/0","123/4","128/5","155/6","195/1","254/0","296/4","309/0","347/0","364/1","406/1","406/3","514/0","515/0","588/0","591/0","618/0","629/0","647/0","647/1","653/0","662/0","663/0","675/0","741/2","772/0","800/1","802/0","803/0","804/0","805/0","806/0","820/0","821/0","836/4","843/0","852/0","866/1","866/5","868/1","871/0"],"_properties":["20/0","20/1","26/0","32/0","143/2","156/4","159/0","171/4","225/0","261/0","274/0","314/0","314/1","315/1","315/3","316/1","331/0","345/1","405/0","472/0","488/1","556/2","587/1","588/0","604/0","696/0","856/0","857/0"],"_determined":["20/0","134/1","161/2","334/1","819/0"],"_run":["20/0","20/1","53/0","136/1","751/1","752/1","755/0","756/9","769/4","794/0","795/0","866/2","867/1"],"_time":["20/0","20/1","129/0","180/2","195/1","218/0","285/3","706/0","707/0","708/0","732/0","756/5","784/1","785/1","786/0","786/6","787/2","787/3","788/0","788/2","789/0","789/1","796/0","867/6"],"_determine":["20/1","29/2","56/0","426/0","751/1","836/4"],"_what":["20/1","89/0","198/0","385/2","775/1","781/0","836/3","843/0","872/0"],"_methods":["20/1","21/0","24/0","26/0","32/0","48/0","57/0","157/3","159/0","172/0","172/4","172/6","205/0","216/0","224/0","324/0","380/0","430/0","438/0","519/1","558/2","667/2","756/2","836/1","836/3","836/4","836/5","840/2","853/0","853/3","854/1","855/1"],"_available":["20/1","48/0","57/0","157/2","157/4","160/0","174/0","182/1","296/1","406/3","625/0","671/0","720/0","720/1","830/0","834/0","836/3","836/5","846/0","853/1","866/1","868/0","868/1","871/0"],"_so":["20/1","60/1","157/1","194/2","195/1","246/0","299/1","325/0","385/3","386/2","406/0","406/2","418/3","421/1","438/0","462/3","462/5","463/1","464/4","587/1","594/1","628/2","647/1","730/2","742/2","775/2","775/4","786/0","786/4","788/0","789/2","789/3","789/4","794/0","794/1","812/1","813/1","822/1","835/0","847/1","853/3","867/4"],"_following":["20/1","127/0","156/4","192/1","224/0","230/0","231/0","372/0","418/0","612/0","673/0","674/0","775/6","836/6","847/1","872/2"],"_sections":["20/1","802/1","811/0"],"_describe":["20/1","176/0"],"_generic":["20/1","598/0","616/0","683/0"],"_ways":["20/1","662/1","788/0"],"_added":["20/1","103/0","112/0","125/1","844/1","848/1"],"_during":["20/1","52/1","157/1","257/0","320/1","327/1","328/2","359/0","360/0","709/0","745/0","756/5","775/3","786/0"],"_method":["21/0","22/0","23/2","23/0","24/0","25/0","26/0","27/0","28/0","29/3","29/0","160/0","165/0","172/3","185/1","193/1","194/1","227/2","310/1","311/0","313/2","313/0","319/2","325/0","347/0","399/1","401/1","421/1","447/0","464/4","587/1","661/0","763/0","764/1","767/0","768/0","834/0","850/0","850/1","853/2","853/4","853/5","853/6"],"_evaluates":["21/0"],"_small":["21/0","123/2","738/1","786/0","794/1","842/1"],"_amount":["21/0","52/0","53/0","54/0","55/0","136/2","213/0","242/0","243/0","269/0","272/0","286/0","618/0","629/0","706/0","783/0","786/0"],"_evm":["21/0","24/3","59/0","123/0","123/2","172/5","335/0","385/2","736/0"],"_code":["21/0","32/0","73/0","95/0","96/0","97/0","100/0","104/1","111/0","113/0","114/0","115/0","128/1","128/5","200/0","205/2","421/0","428/0","461/6","464/1","584/0","601/0","602/0","612/0","652/0","738/2","741/2","790/0","794/0","794/1","796/0","809/0","809/1","814/0","815/5","825/0","825/1","835/0","836/0","836/6","876/1"],"_against":["21/0","24/1","174/2","718/1","867/1","877/1"],"_current":["21/0","24/1","52/0","53/0","56/0","69/0","70/0","180/1","195/1","303/0","319/1","600/0","651/0","652/0","656/0","687/2","826/0","835/0"],"_blockchain":["21/0","21/1","24/1","56/2","136/0","229/0","324/0","399/1","462/2","544/0","624/0","731/1","734/2","835/0","836/0","843/0"],"_state":["21/0","21/1","24/1","29/0","29/1","56/0","91/0","172/5","196/1","212/1","213/1","285/0","285/3","296/0","361/0","367/1","367/2","368/0","775/5","835/0","860/1"],"_computed":["21/0","472/2","488/1","562/0","663/0","666/0","666/2","667/2","670/0","670/1","693/1","879/0"],"_asking":["21/0"],"_single":["21/0","23/0","78/1","80/0","285/3","391/1","461/2","461/3","479/0","482/0","647/1","647/2","657/1","657/2","769/2","779/5","786/0","793/2","853/4","853/7","857/0"],"_node":["21/0","24/1","29/0","65/2","73/0","74/0","94/1","95/0","96/0","97/0","99/0","100/0","101/0","102/0","103/0","104/0","105/0","106/0","107/0","108/0","109/0","110/0","111/0","112/0","113/0","114/0","115/0","116/0","117/0","118/0","119/0","120/0","121/0","122/0","134/1","154/0","160/0","161/2","162/0","163/0","170/0","171/1","172/0","182/1","182/2","574/0","575/0","576/0","577/0","578/0","579/0","580/0","581/0","582/0","583/0","584/0","585/0","586/0","587/0","588/0","589/0","629/0","629/1","797/1","797/2","826/0","834/0","866/5","867/2","867/5","880/0","882/1"],"_therefore":["21/1","116/0","128/5","463/1","468/0"],"_free":["21/1","29/1","730/5","731/2","732/2","733/2","734/0","847/1","867/3"],"_does":["21/1","29/1","60/1","65/1","65/2","89/0","111/0","114/0","119/2","168/0","171/4","180/1","206/1","207/1","212/1","310/1","315/3","319/1","364/1","367/1","385/2","642/2","668/0","741/3","786/3","786/0","797/1","799/0","809/1","811/1","813/0","848/1"],"_not":["21/1","23/1","23/5","29/0","29/1","31/2","58/1","58/2","60/0","60/1","65/1","65/2","79/1","93/0","111/0","114/0","119/2","128/5","135/0","136/1","161/1","168/0","171/3","171/4","175/1","180/1","184/0","185/0","206/1","207/1","212/1","213/1","215/0","229/1","273/2","275/1","276/1","277/1","280/1","298/0","308/1","309/3","310/1","310/2","311/1","313/2","315/0","315/3","316/0","319/1","322/1","322/3","334/2","364/1","367/1","377/1","378/1","384/2","385/2","399/1","400/1","401/1","447/1","462/3","462/4","462/6","462/0","475/1","522/1","556/4","557/2","558/1","576/1","579/1","580/2","584/1","585/2","586/2","587/1","588/1","594/3","605/0","605/1","606/0","607/0","608/1","609/0","613/0","617/0","621/0","628/0","634/0","642/2","653/1","654/1","661/0","665/0","668/0","675/0","697/1","701/2","702/2","730/4","731/4","753/1","756/4","756/6","756/8","763/1","769/3","779/4","785/0","786/3","787/3","788/0","789/3","797/1","799/0","799/3","809/1","811/1","813/0","815/4","826/0","840/2","847/3","848/1","870/1","872/0"],"_require":["21/1","23/5","124/1","162/0","208/1","212/1","384/2","544/0","558/1","594/4","647/0","769/2","789/3","839/0","840/2","867/5"],"_ether":["21/1","212/1","314/1","360/0","461/3","461/5","494/0","499/0","501/0","501/1","501/2","502/2","502/3","505/0","506/0","507/0","508/0","625/1","688/1"],"_cannot":["21/1","24/2","56/2","91/0","212/1","296/2","297/0","328/0","436/0","519/0","669/0","813/1","840/2"],"_make":["21/1","75/0","205/2","314/1","462/3","601/0","625/0","750/0","756/8","775/1","775/2","784/0","787/0","871/0","876/1"],"_changes":["21/1","775/0","789/3","791/0","794/1","795/0","848/2","855/0","866/3"],"_type":["22/0","22/2","23/0","108/0","130/4","134/1","134/0","230/0","265/1","337/1","355/0","356/0","369/0","372/0","373/0","374/0","375/0","375/2","376/0","377/0","378/0","379/0","381/0","382/0","383/0","384/1","391/1","561/0","564/0","566/0","567/0","568/0","620/0","866/5","871/0"],"_depends":["22/0"],"_values":["22/1","30/0","119/2","180/2","205/0","257/0","336/1","339/0","396/0","397/0","398/0","399/0","400/0","401/0","402/0","404/0","406/1","407/0","412/0","429/0","429/2","430/0","430/1","447/0","461/4","472/2","491/0","501/0","539/0","556/2","559/0","560/1","562/0","566/0","567/0","568/0","610/1","619/0","675/0","769/3","771/0","773/0","799/2","872/0","876/0","882/1"],"_have":["22/1","52/3","65/3","128/0","135/0","157/2","182/1","207/1","278/0","285/1","292/0","295/1","316/2","319/1","319/2","328/2","331/0","385/1","461/8","464/3","564/0","625/1","642/1","658/2","659/1","665/0","667/0","668/0","688/1","695/1","730/4","735/0","742/0","747/0","747/2","752/1","779/2","783/0","789/1","789/4","792/1","802/1","803/1","813/0","835/0","836/5","848/0","848/1","853/7","854/0","854/1","857/0","863/0","867/3","867/4","867/6","871/0"],"_simple":["22/1","59/1","123/2","166/0","205/1","328/0","536/0","594/0","732/1","735/0","745/0","746/0","769/1","796/0","800/0","813/0","815/0","823/0","842/0","866/1"],"_meaning":["22/1","659/1"],"_javascript":["22/1","22/2","22/3","345/2","350/0","429/0","434/0","435/0","456/0","461/4","534/0","534/1","609/0","794/0","800/0","806/0","815/0","825/1","828/1","836/1","844/0","867/6"],"_types":["22/1","23/1","312/0","339/0","340/0","348/0","349/0","350/0","351/0","375/1","385/3","501/2","556/3","558/0","559/0","560/1","560/0","561/0","562/0","564/0","566/0","567/0","568/0","619/1","643/0","793/1","863/0","866/5"],"_fairly":["22/1","132/0","133/0","558/1","789/3","839/0"],"_straight":["22/1","732/1","876/1"],"_forward":["22/1","206/1","732/1","876/1"],"_strings":["22/1","391/1","501/0","536/1","537/0","538/1","646/0","647/0","647/1","647/2","648/0","655/0","667/0","781/0"],"_booleans":["22/1"],"_returned":["22/1","22/4","22/5","79/1","155/3","171/2","174/3","186/0","206/1","207/1","222/1","280/1","391/1","515/1","697/1","710/0","756/7","756/9","872/2","873/1"],"_numbers":["22/2","429/0","429/1","434/0","461/0","461/4","461/7","534/1","822/2","822/5","872/0"],"_safe":["22/2","350/0","429/0","434/0","456/1","462/3","464/4","604/0","609/0","667/1","775/5","844/0","866/0"],"_range":["22/2","429/0","434/0","466/0","466/1","666/0"],"_less":["22/3","172/0","172/4","246/0","456/1","586/1","788/2","875/0"],"_than":["22/3","29/0","227/2","456/1","463/1","481/1","486/1","522/1","537/3","618/0","625/0","648/0","666/1","699/0","787/0","792/2","875/0"],"_bits":["22/3","446/0","518/0","537/1","537/3","537/5","540/0"],"_such":["22/3","52/2","156/3","158/1","165/1","172/2","189/0","233/0","297/1","299/1","308/1","311/1","314/1","331/0","334/2","352/0","432/0","501/2","587/1","620/2","626/0","642/2","730/1","730/6","739/0","741/2","769/1","769/2","776/0","795/1","797/0","797/2","842/2","866/4","867/6"],"_int24":["22/3"],"_uint48":["22/3"],"_normal":["22/3","23/3","64/0","184/1","345/2","795/1","797/2","805/0","836/1"],"_otherwise":["22/4","29/3","103/0","112/0","119/2","192/0","231/2","265/0","391/1","667/0","697/2","756/3","756/4","769/1","811/0","847/4","872/1"],"_bignumber":["22/4","27/0","50/0","54/0","199/0","211/0","213/0","242/0","243/0","269/0","270/0","272/0","286/0","293/0","301/0","303/0","306/0","359/0","417/0","429/1","429/2","429/0","430/0","433/0","436/0","436/1","437/0","438/0","439/0","440/0","441/0","442/0","443/0","444/0","445/0","446/0","448/0","449/0","450/0","451/0","452/0","453/0","454/0","455/0","456/0","457/0","458/0","459/0","462/2","462/4","462/0","464/4","495/0","496/0","497/0","498/0","499/0","500/0","501/2","507/0","508/0","688/0","689/0","691/0","760/0","761/0","849/0","850/0","864/0"],"_bytes":["22/5","23/4","93/0","309/0","309/1","309/2","309/3","420/0","432/0","466/0","467/0","473/0","474/0","475/1","479/0","480/0","481/0","481/1","482/0","483/0","484/0","485/0","486/0","486/1","487/0","488/0","489/0","492/0","493/0","510/0","512/0","515/0","521/0","546/0","547/0","548/0","549/0","550/0","554/1","575/0","637/1","638/1","647/0","647/1","647/2","648/0","649/0","650/1","651/0","654/0","663/0","663/1","665/0","672/0","673/0","674/0","680/0","690/0","696/0","737/0","781/0","785/3","873/0","873/1"],"_both":["22/5","501/1","718/0","789/3","868/0","883/0"],"_fixed":["22/5","447/0","518/0","520/0","521/0","522/0","523/0","525/0","526/0","527/0","528/0","529/0","530/0","531/0","535/0","536/0","537/1","537/5","538/0","539/0","540/0","541/0","542/0","543/0","619/1","785/3","786/0"],"_length":["22/5","96/0","108/0","128/7","130/4","130/5","378/0","406/2","466/1","475/1","475/0","481/0","481/1","483/0","484/1","486/0","486/1","489/0","513/0","554/1","647/0","647/1","650/1","667/0","668/0","737/0","785/3"],"_dynamic":["22/5","378/0"],"_datahexstring":["22/5","74/0","83/0","102/0","126/1","169/0","200/0","201/0","212/0","230/2","236/0","237/0","240/0","247/0","251/0","254/0","256/0","260/0","261/0","262/0","271/0","276/0","279/0","287/0","288/0","289/0","305/0","310/0","326/0","333/0","339/0","394/0","395/0","396/0","397/1","398/0","399/0","420/0","458/0","467/0","468/0","471/0","474/0","475/1","477/0","482/0","483/0","484/0","486/0","488/0","493/0","514/0","515/1","546/0","547/0","548/0","549/0","550/0","551/0","554/0","555/0","562/0","563/0","566/0","567/0","568/0","577/0","578/0","579/0","580/0","584/0","590/0","591/0","636/0","637/0","638/0","640/0","644/0","645/0","650/0","684/0","693/0","694/0","697/0","718/0","874/0"],"_m":["22/0","23/0","25/0","27/0","28/0","29/0","31/0","123/0","613/0","615/0","619/0","620/0","621/0","622/0","623/0","628/0","629/0","665/0","805/0","847/0","871/0"],"_e":["22/0","23/0","25/0","27/0","28/0","29/0","31/0","64/0","159/0","205/0","601/0","602/0","613/0","614/0","615/0","616/0","617/0","618/0","619/0","620/0","621/0","622/0","623/0","624/0","625/0","626/0","627/0","628/0","629/0","630/0","633/0","664/0","665/0","666/0","667/0","668/0","669/0","670/0","739/0","742/0","802/0","803/0","804/0","805/0","806/0","807/0","808/0","810/0","851/0","871/0","881/0"],"_t":["22/0","23/0","25/0","27/0","28/0","29/0","31/0","613/0","615/0","617/0","619/0","620/0","621/0","623/0","624/0","625/0","626/0","628/0","629/0","662/0","665/0","666/0","669/0","670/0","671/0","781/0","802/0","803/0","804/0","805/0","806/0","809/0","810/0","847/0","871/0"],"_h":["22/0","23/0","25/0","27/0","28/0","29/0","569/0","574/0","575/0","576/0","588/0","589/0"],"_o":["22/0","23/0","25/0","27/0","28/0","29/0","343/0","345/0","601/0","602/0","613/0","614/0","615/0","616/0","617/0","618/0","624/0","626/0","627/0","631/0","633/0","634/0","665/0","666/0","667/0","668/0","669/0","670/0","781/0","809/0","810/0"],"_d":["22/0","23/0","25/0","27/0","28/0","29/0","569/0","574/0","575/0","576/0","588/0","589/0","613/0","617/0","620/0","623/0","625/0","627/0","628/0","629/0","630/0","658/0","660/0","664/0","669/0","781/0","872/0"],"_n":["22/0","23/0","25/0","27/0","28/0","29/0","31/0","159/0","205/0","343/0","345/0","462/0","463/0","601/0","602/0","613/0","616/0","617/0","618/0","619/0","620/0","621/0","622/0","623/0","624/0","625/0","626/0","627/0","628/0","629/0","631/0","632/0","657/0","658/0","659/0","660/0","665/0","666/0","667/0","668/0","669/0","732/0","806/0","807/0","808/0","809/0","851/0","871/0","872/0","881/0"],"_a":["22/0","23/0","25/0","27/0","28/0","29/0","31/0","123/0","136/0","139/0","145/0","149/0","157/0","161/0","341/0","342/0","343/0","345/0","346/0","421/0","437/0","478/0","480/0","481/0","483/0","484/0","485/0","486/0","487/0","488/0","510/0","512/0","515/0","521/0","547/0","548/0","549/0","550/0","575/0","617/0","619/0","620/0","621/0","623/0","624/0","628/0","629/0","632/0","649/0","654/0","664/0","666/0","670/0","696/0","730/0","732/0","739/0","742/0","806/0","807/0","808/0","809/0","840/0","869/0","871/0"],"_overrides":["22/0","23/0","25/0","27/0","28/0","29/0","49/0","50/0","51/0","52/0","53/0","54/0","55/0"],"_always":["23/0","94/1","174/2","345/1","464/4","637/1","638/1","692/3","697/3","789/1","789/2","850/0","853/7"],"_even":["23/0","464/2","468/0","647/0","737/0","786/6"],"_value":["23/0","31/2","52/1","52/2","83/0","84/0","85/0","101/0","102/0","103/0","108/0","110/0","112/0","119/2","120/0","126/1","186/0","187/0","201/0","202/1","226/0","227/0","242/1","251/2","272/0","304/1","312/0","320/1","327/1","337/1","360/1","406/0","406/1","406/2","417/0","422/2","429/2","438/0","439/0","440/0","441/0","442/0","443/0","444/0","445/0","446/0","448/0","449/0","450/0","451/0","452/0","453/0","454/0","455/0","456/0","456/1","457/0","458/0","461/5","462/3","466/0","470/0","470/1","478/0","495/0","496/0","497/0","498/0","499/0","500/0","501/2","504/0","505/0","506/0","507/0","508/0","520/0","521/0","522/0","522/1","523/0","525/0","526/0","527/0","528/0","529/0","530/0","531/0","534/0","534/1","535/0","538/0","560/1","560/0","564/0","603/0","607/0","609/0","612/0","620/0","620/1","620/2","625/1","643/0","663/0","663/1","670/0","681/0","691/0","699/0","739/0","755/0","756/6","769/2","771/0","772/0","779/4","781/0","801/1","801/2","828/0","853/7","866/5","872/2","872/3","874/0"],"_simplifies":["23/1","136/1","184/1","335/1"],"_frameworks":["23/1","853/3"],"_use":["23/1","23/2","94/2","113/0","121/0","128/1","130/1","136/3","154/1","154/2","155/0","158/1","187/0","188/0","194/2","195/1","205/1","211/0","242/0","269/0","285/2","297/1","321/2","325/0","335/1","384/2","426/0","429/0","436/1","461/0","462/6","464/1","552/0","553/0","579/1","580/2","584/1","585/2","586/2","642/2","701/0","701/2","702/0","702/2","718/1","745/0","747/0","747/2","759/0","760/0","761/0","762/0","763/0","784/0","786/0","792/2","795/0","797/1","798/0","817/1","829/0","833/0","835/0","836/1","836/5","836/6","840/0","843/1","847/1","847/4","853/3","866/1"],"_since":["23/1","48/0","57/0","61/0","103/0","112/0","136/1","213/1","273/2","278/0","292/0","314/1","335/1","336/0","352/0","464/1","642/2","647/2","648/0","662/1","669/0","730/4","731/4","737/0","756/5","786/3","787/2","790/1","828/1","843/1","849/0","850/0","853/7","867/6"],"_they":["23/1","61/0","155/3","179/2","185/1","196/1","208/1","298/0","308/1","310/2","311/1","336/1","385/3","403/1","675/0","730/4","731/1","732/1","733/1","775/2","775/5","786/3","786/4","789/1","789/3","842/0","844/1","850/0"],"_do":["23/1","136/1","171/3","185/0","334/2","634/0","701/2","702/2","756/8","775/2","844/1","847/1","872/0"],"_need":["23/1","28/0","136/1","185/0","335/1","336/0","399/1","401/1","429/2","447/1","579/1","580/2","584/1","585/2","586/2","642/2","647/2","662/1","775/3","789/3","794/0","798/2","836/5","855/1","876/2"],"_inspect":["23/1"],"_unwrap":["23/1"],"_simplified":["23/1","728/0","844/0"],"_functions":["23/1","23/0","29/3","154/1","389/0","403/0","418/0","420/2","430/0","461/8","462/3","462/6","464/0","464/2","545/0","565/1","600/0","671/0","785/0","830/0","853/0","853/1","853/2","853/3","853/5","854/0","854/1","863/0","863/2","869/0","872/3","882/0"],"_another":["23/2","65/4","65/5","106/0","128/0","180/0","213/1","257/0","463/1","464/0","556/4","640/1","742/1","801/3","813/1","834/0"],"_error":["23/2","23/4","194/2","298/0","315/2","319/1","422/1","456/1","475/1","481/1","486/1","594/0","600/0","601/0","601/1","602/0","603/0","606/0","607/0","608/1","609/0","610/0","610/1","612/0","614/0","616/0","624/0","626/0","628/1","629/1","629/3","633/0","650/1","654/1","654/0","662/1","662/0","663/0","664/0","665/1","665/0","666/2","666/0","667/2","667/0","668/0","669/0","670/1","670/0","671/0","672/0","673/0","674/0","688/2","697/5","704/0","706/0","710/0","740/0","756/5","756/8","763/1","765/0","766/0","815/2","815/3","815/4","853/3","854/1"],"_recovery":["23/2","426/0","853/3"],"_example":["23/3","32/0","65/5","106/0","123/3","129/2","156/3","171/1","181/1","296/2","309/2","328/2","373/2","374/2","418/3","461/2","462/6","464/3","472/1","501/1","537/4","629/3","657/2","658/2","659/2","660/1","692/2","778/0","786/2","794/0","812/1","823/1","842/2","866/5","872/3","876/2"],"_function":["23/3","52/3","94/2","187/0","283/1","309/5","316/2","336/0","337/1","345/2","353/1","354/0","355/2","356/0","367/0","369/0","370/0","371/0","389/0","392/0","394/0","398/0","399/0","401/0","402/0","403/1","405/0","413/0","414/0","415/0","416/0","418/1","418/2","418/4","418/5","421/2","546/0","565/0","620/2","623/0","653/0","654/1","662/1","663/1","663/0","666/2","667/2","670/1","697/2","748/0","775/6","828/1","856/0","863/1"],"_invalid":["23/3","422/1","603/0","619/0","620/0","626/0","662/0","663/0","664/0","672/0","673/0","674/0","756/6"],"_utf":["23/3","23/4","554/1","648/0","651/0","653/1","654/0","654/1","655/0","658/2","659/2","662/1","662/0","663/0","664/0","665/0","666/0","667/0","670/0","671/0","672/0","674/0","840/2","865/0"],"_call":["23/3","29/0","53/0","56/0","212/0","212/1","305/0","314/2","315/1","328/2","337/0","350/0","399/0","402/0","428/0","624/0","690/1","699/0","756/4","863/1"],"_above":["23/3","32/0","192/0","224/0","374/2","793/0","802/1","803/1","820/1","847/2","870/1"],"_throw":["23/3","298/0","308/1","310/2","311/1","315/2","337/2","456/1","602/0","603/0","607/0","650/1","672/0","756/6","756/8","765/0","766/0","772/1","815/3"],"_exception":["23/3","624/0","809/1"],"_allows":["23/4","59/1","64/0","119/0","121/0","129/0","130/0","157/3","165/0","171/4","182/0","196/0","205/0","273/2","421/1","429/1","518/0","642/2","667/0","730/1","735/1","736/0","738/1","738/2","739/0","742/1","787/1","813/0","862/1"],"_low":["23/4","384/2","462/3","558/1","730/3"],"_level":["23/4","123/0","123/1","128/8","335/0","337/2","384/2","462/3","558/1","611/0","661/0","735/0","849/0"],"_reason":["23/4","159/0","196/2","463/0","663/0","664/0","665/0","666/2","666/0","667/2","667/0","668/0","669/0","670/1","670/0","733/4","797/3","799/2","853/2"],"_allowing":["23/4","30/0","61/0","337/2","741/2","799/1"],"_alternate":["23/4"],"_strategy":["23/4"],"_most":["23/5","128/1","154/2","157/3","159/0","171/4","172/4","174/0","205/1","210/0","229/1","296/3","321/2","335/1","336/0","384/2","399/1","401/1","403/0","429/2","447/1","461/1","462/4","537/5","558/1","558/2","579/1","580/2","584/1","585/2","586/2","669/1","671/0","731/0","745/0","775/3","830/0","853/3","855/0","868/0","871/0"],"_developers":["23/5","240/1","241/1","242/2","245/1","285/2","293/1","335/1","384/2","384/3","399/1","401/1","403/0","462/4","558/1","558/2","579/1","580/2","584/1","585/2","586/2","593/0","669/1","775/3","784/0","867/4"],"_non":["24/0","143/2","321/1","379/1","418/1","430/0","565/0","566/0","567/0","568/0","584/0","588/1","625/2","642/1","642/2","667/0","687/1","703/0","839/0","840/2","863/1","882/0"],"_requires":["24/0","25/1","171/0","172/5","174/4","182/1","283/1","328/1","556/1","648/0","730/1","732/4","786/1","786/3","828/1"],"_signed":["24/0","28/0","55/0","214/1","296/0","310/0","426/0","447/0","537/0","537/1","537/5","538/1","539/0","554/1","556/0","556/1","642/0","643/0","675/0","692/2","860/1","861/1","883/0"],"_payment":["24/0"],"_form":["24/0","645/1","651/0","652/0","655/0","656/0","657/0","657/1","658/0","658/1","659/0","660/0","882/0"],"_fee":["24/0","734/2"],"_paid":["24/0","157/4","732/4"],"_miner":["24/0","24/1","241/0","244/0","245/0"],"_verified":["24/1","315/4","560/1","866/4","877/1"],"_every":["24/1","128/8","227/1","337/0","612/0","866/2"],"_entire":["24/1","128/5","264/0","742/2","817/0"],"_well":["24/1","158/0","160/1","274/0","384/1","538/1","544/0","625/1","673/0","733/1","787/2","790/1","792/2","794/0","834/1","853/1"],"_who":["24/1"],"_compute":["24/1","283/1","425/0","464/3","551/0","556/0","576/1","588/1","640/0","642/2","645/0","697/1","697/4","777/0","786/0"],"_after":["24/1","25/0","180/0","213/1","336/1","461/5","752/1","789/3","795/1","798/2","812/1","866/3"],"_executing":["24/1","26/0","29/0","212/0"],"_required":["24/3","27/0","52/2","54/0","129/1","136/2","171/4","202/1","213/0","241/0","265/1","304/1","315/0","316/0","316/1","331/0","384/1","385/0","462/4","556/0","556/4","618/0","629/0","731/1","737/0","745/0","788/0","790/1","842/1"],"_logged":["24/3","30/0"],"_solidity":["24/3","343/0","345/0","351/0","372/0","385/1","386/1","418/5","542/0","565/0","566/0","567/0","568/0","647/0","777/0","836/6","866/5","870/2","882/0"],"_log":["24/3","208/0","225/0","226/1","255/0","256/0","257/0","258/0","259/0","260/0","261/0","262/0","263/0","264/0","287/0","290/0","364/1","400/0","404/0","407/0","408/0","409/0","410/0","411/0","597/0","598/0","599/0","611/0","630/0","631/0","632/0","633/0","730/6","779/2","779/4","779/5","779/6","786/5"],"_then":["24/3","31/2","58/1","58/2","189/0","251/2","462/6","584/0","642/2","682/1","769/4","790/1","820/1","839/2","866/5","882/1"],"_queried":["24/3","197/2","629/0"],"_receipt":["24/3","215/0","280/0","281/0","282/0","283/0","284/0","285/0","286/0","287/0","288/0","289/0","290/0","291/0","292/0","293/0","294/0","295/0"],"_write":["24/0","26/0","52/1","90/0"],"_sent":["25/0","155/2","157/3","171/0","202/0","202/1","265/0","268/1","304/0","628/0","687/1","687/2"],"_several":["26/0","154/1","158/0","227/3","274/0","503/0","519/1","655/0","671/0","793/1","840/1"],"_options":["26/0","154/1","156/4","156/0","319/0","327/0","476/0","699/0","706/0","707/0","708/0","709/0","710/0","711/0","712/0","748/0","751/0","752/1","756/4","756/5","756/6","768/0","769/0","769/1","769/2","769/4","771/0","773/0"],"_analyze":["26/0","730/6"],"_results":["26/0","59/1","111/0","174/2","735/0","786/0","794/0","866/2"],"_without":["26/0","53/0","129/1","157/1","285/3","296/2","462/5","584/0","741/2","786/5","786/7","822/0","847/1","847/3","853/7","855/1"],"_actually":["26/0","29/1","53/0","286/0","421/1","667/2"],"_analysis":["26/0"],"_estimate":["27/0","54/0","213/0","213/1","306/0","852/0"],"_units":["27/0","54/0","503/0","505/0","507/0","884/0"],"_gas":["27/0","54/0","171/1","211/0","213/0","242/0","243/0","269/0","270/0","286/0","293/0","303/0","306/0","359/0","501/1","625/1","625/2","628/0","628/1","628/2","629/0","629/2","678/0","679/0","688/0","688/1","688/2","689/0","741/3","760/0","761/0","782/0","783/0","852/0"],"_execute":["27/0","28/0","111/0","114/0","115/0","208/1","296/0","296/4","746/0"],"_estimategas":["27/0","54/0","213/0","306/0","315/1","852/0"],"_big":["27/0","50/0","54/0","199/0","211/0","213/0","242/0","243/0","269/0","270/0","272/0","286/0","293/0","301/0","303/0","306/0","359/0","417/0","429/0","430/0","433/0","435/0","437/0","439/0","440/0","441/0","442/0","443/0","444/0","445/0","446/0","448/0","449/0","450/0","451/0","452/0","453/0","454/0","455/0","456/0","457/0","458/0","459/0","461/7","461/8","462/0","462/1","463/0","463/1","463/2","464/0","478/0","495/0","496/0","497/0","498/0","499/0","500/0","507/0","508/0","678/0","679/0","681/0","688/0","689/0","691/0","760/0","761/0","864/0"],"_represents":["28/0","78/0","100/0","104/1","106/0","232/0","251/1","323/0","326/0","345/1","404/0","438/0","502/3","502/4","536/0","670/0","675/0"],"_submitted":["28/0","55/0"],"_populate":["28/0","55/0","171/2","171/4","310/1","316/0"],"_populatetransaction":["28/0","55/0","311/0","315/1","316/0"],"_tx":["28/0","55/0","215/0","697/0"],"_unsignedtx":["28/0","55/0"],"_rather":["29/0","463/1","787/0"],"_change":["29/0","29/1","91/0","212/1","257/0","313/0","325/0","367/1","438/0","557/0","743/1","775/0","775/2","775/3","775/4","842/1","872/3"],"_possible":["29/0","52/3","135/0","155/1","187/0","462/3","667/0","692/2","695/1","786/0","867/0"],"_ask":["29/0"],"_pretend":["29/0"],"_changing":["29/0","296/0","298/0","792/2","795/1","822/0","860/1"],"_some":["29/2","65/4","128/4","157/4","171/3","205/3","334/2","384/3","462/4","544/0","667/1","732/0","756/6","784/0","785/0","785/1","786/0","815/0","840/2","848/0","858/0","876/0","876/1"],"_cases":["29/2","56/1","154/1","472/2","619/1","647/1","667/1","789/3","844/1","855/1","866/3","866/4","866/6","872/0","876/0","876/1","878/0","881/0"],"_fail":["29/2","629/3","815/2","815/4"],"_succeed":["29/2"],"_static":["29/0","53/0","56/0","91/0","185/1","314/1","436/1","519/1","558/2","756/2","767/0","768/0","850/1"],"_callstatic":["29/0","53/0"],"_up":["30/0","174/4","207/0","242/1","293/0","321/1","460/0","464/0","647/2","658/2","730/0","730/5","731/2","732/2","733/2","734/0","737/0","779/2","786/1","786/4","790/0","801/0","817/0","835/0","842/2","845/0","873/0"],"_topics":["30/0","225/0","251/0","261/0","287/0","397/0","400/0","400/1","776/0","777/0","779/6"],"_bloom":["30/0","287/0","779/1"],"_efficient":["30/0","779/1"],"_searching":["30/0"],"_entries":["30/0","560/1"],"_filters":["30/0","31/0","57/0","58/0","779/1","779/0"],"_optionally":["31/0","135/0","185/1","318/0","610/0","645/0","651/0","652/0","697/0","698/0","719/0","737/0"],"_filtering":["31/0","778/0"],"_additional":["31/0","32/0","130/4","135/0","157/4","168/0","171/4","172/6","182/1","196/2","601/0","602/0","642/2","705/0","741/3","768/0","786/1","820/0","848/1"],"_constraints":["31/0"],"_indexed":["31/1","261/0","348/1","352/0","376/0","466/1"],"_parameters":["31/1","124/1","158/1","356/0","369/0","373/1","374/1","376/1","378/1","379/1","407/0","412/0","429/2","623/0"],"_may":["31/1","64/0","65/2","69/1","70/1","101/0","102/0","124/0","128/7","138/1","138/2","139/0","143/1","145/0","148/1","149/0","156/3","157/1","158/1","162/0","171/1","180/2","182/1","189/1","196/2","205/2","208/1","213/1","224/0","231/0","245/0","251/1","257/0","265/1","298/0","308/1","310/2","311/1","315/0","316/0","325/0","339/0","340/0","345/2","347/0","359/1","360/0","373/1","374/1","384/3","386/1","386/2","399/1","401/1","418/0","422/2","425/1","431/0","461/6","462/6","464/1","472/0","472/1","472/2","501/1","503/0","514/1","538/1","579/0","588/1","594/3","640/1","642/1","648/0","662/1","663/0","667/1","669/0","692/3","737/0","743/1","751/1","753/1","764/1","779/2","786/2","789/3","798/2","820/0","822/5","823/0","824/1","827/1","836/5","840/2"],"_filtered":["31/1","779/4"],"_parameter":["31/2","328/1","348/0","349/0","372/0","373/0","373/2","374/0","375/0","376/0","377/1","621/0","642/2","735/1","769/2","863/0"],"_null":["31/2","58/1","58/2","79/1","128/3","171/4","206/1","207/1","250/0","251/0","251/1","275/1","276/1","277/1","280/1","281/1","283/0","324/1","354/1","359/1","373/1","374/1","377/1","378/1","379/1","647/1","647/2","667/1","682/1","701/1","702/1","760/1","761/1","779/4","812/0","812/1","817/1"],"_field":["31/2","305/0","306/0","313/2","315/4","556/3","557/2","792/2"],"_matches":["31/2","58/1","58/2","225/1","404/0","405/0","408/0","413/0","779/4"],"_v":["31/0","614/0","618/0","620/0","667/0","668/0","739/0"],"_see":["32/0","168/1","182/2","225/2","342/0","343/0","392/0","393/0","394/0","395/0","397/0","398/0","399/0","400/0","401/0","402/0","419/1","421/3","580/1","660/1","720/1","787/0","863/3","877/2"],"_addition":["32/0","227/3"],"_contact":["32/0","853/1","862/1"],"_automatically":["32/0","65/0","118/1","125/1","161/2","171/1","242/1","328/2","403/1","425/1","536/1","753/1","764/1","853/5"],"_add":["32/0","135/0","217/0","218/0","439/0","464/3","464/4","525/0","752/0","789/3","791/0","836/4","866/3","867/4"],"_defined":["32/0","123/0","464/0","538/0","538/1","739/0","822/1"],"_ethers":["32/0","61/0","63/0","64/0","72/0","73/0","94/0","123/0","123/4","127/0","128/8","135/0","138/0","143/0","148/0","152/0","154/1","156/0","157/1","161/0","171/0","174/0","175/0","185/0","189/0","190/0","197/0","205/2","296/0","313/1","318/0","319/0","320/0","321/0","322/0","329/0","337/0","338/0","348/0","349/0","350/0","351/0","357/0","358/0","362/0","363/0","365/0","366/0","370/0","371/0","382/0","383/0","386/2","386/0","422/0","423/0","424/0","425/0","426/0","427/0","428/0","437/0","459/0","462/2","462/4","464/1","464/2","464/3","473/0","474/0","475/0","476/0","477/0","478/0","479/0","480/0","481/0","482/0","483/0","484/0","485/0","486/0","487/0","488/0","489/0","490/0","491/0","492/0","493/0","494/0","495/0","496/0","497/0","498/0","499/0","500/0","504/0","505/0","506/0","507/0","508/0","509/0","510/0","511/0","512/0","514/0","515/0","546/0","547/0","548/0","549/0","550/0","551/0","552/0","553/0","554/0","555/0","557/1","558/0","566/0","567/0","568/0","570/0","574/0","575/0","576/0","590/0","591/0","592/0","594/0","594/2","595/0","600/0","612/0","635/0","642/0","643/0","644/0","645/0","649/0","650/0","651/0","652/0","654/0","656/0","657/0","658/0","659/0","660/0","664/0","665/0","666/0","667/0","668/0","669/0","670/0","672/0","673/0","674/0","696/0","697/0","698/0","699/0","720/0","720/1","721/0","722/0","723/0","724/0","725/0","726/0","727/0","728/0","729/0","730/2","736/0","738/0","745/0","745/1","787/1","789/0","789/3","792/0","793/0","798/0","830/0","831/0","839/1","839/2","843/0","843/1","846/0","848/0","853/0","858/0","859/0","860/0","861/0","863/1","863/2","865/0","866/1","867/0","867/1","867/4"],"_erc20":["33/0","34/0","35/0","36/0","37/0","38/0","39/0","40/0","41/0","42/0","43/0","44/0","45/0","46/0","47/0","49/0","50/0","51/0","52/0","53/0","54/0","55/0","58/0"],"_depend":["48/0","57/0","296/1","501/0"],"_decimal":["49/0","102/0","126/1","431/0","462/0","502/0","502/2","502/3","518/0","536/0","541/0"],"_places":["49/0","502/0","502/2","502/3"],"_erc":["49/0","50/0"],"_token":["49/0","49/1","50/0","51/0","629/3","733/4"],"_parseunits":["49/1","501/2","507/0","508/0"],"_taking":["49/1"],"_input":["49/1","356/0","407/0","412/0","501/0","753/0","789/3","840/2"],"_user":["49/1","321/1","461/8","464/0","501/0","501/1","501/2","653/0","701/0","785/0","786/2","786/5","786/7","787/0","787/3"],"_formatunits":["49/1","501/3","505/0","506/0"],"_utils":["49/1","337/0","338/0","348/0","349/0","350/0","351/0","357/0","358/0","362/0","363/0","365/0","366/0","370/0","371/0","382/0","383/0","386/0","422/0","423/1","423/0","424/0","425/0","426/0","427/0","428/0","473/0","474/0","475/0","476/0","477/0","478/0","479/0","480/0","481/0","482/0","483/0","484/0","485/0","486/0","487/0","488/0","489/0","490/0","504/0","505/0","506/0","507/0","508/0","509/0","510/0","511/0","512/0","514/0","515/0","546/0","547/0","548/0","549/0","550/0","551/0","552/0","553/0","554/0","555/0","558/0","566/0","567/0","568/0","570/0","590/0","591/0","592/0","595/0","635/0","642/0","643/0","644/0","645/0","649/0","650/0","651/0","652/0","654/0","656/0","657/0","658/0","659/0","660/0","664/0","665/0","666/0","667/0","668/0","669/0","670/0","672/0","673/0","674/0","696/0","697/0","698/0","699/0"],"_displaying":["49/1","501/0","501/3","814/0"],"_amounts":["49/1"],"_ui":["49/1","162/0","775/5"],"_decimals":["49/0","522/1","523/0","529/0","537/0","537/1","537/3","537/5","538/1","541/0"],"_balance":["50/0","199/0","214/2","301/0","501/1","501/3","733/4"],"_owner":["50/0"],"_getbalance":["50/0","199/0","301/0"],"_symbol":["51/0","494/0"],"_transfers":["52/0"],"_tokens":["52/0","53/0","54/0","55/0","629/3","733/1","867/6"],"_target":["52/0","53/0","54/0","55/0","107/0","108/0","128/5","130/2","241/0","605/0","607/0","742/1","742/0"],"_boolean":["52/1","53/0","91/0","92/0","103/0","112/0","170/0","219/0","228/0","257/0","294/0","295/0","300/0","358/0","360/0","363/0","364/0","366/0","367/0","371/0","376/0","383/0","424/0","450/0","451/0","452/0","453/0","454/0","455/0","459/0","473/0","474/0","475/0","530/0","535/0","539/0","592/0","641/0","703/0","770/0"],"_inaccessible":["52/1"],"_operation":["52/1","77/0","78/0","78/1","79/0","79/1","80/0","81/0","82/0","83/0","92/0","103/0","112/0","126/0","321/1","328/2","429/0","608/1","613/0","617/0","619/0","669/1","775/3"],"_other":["52/2","64/0","128/4","135/0","158/0","172/2","173/0","182/0","314/1","385/1","385/3","439/0","440/0","441/0","450/0","451/0","452/0","453/0","454/0","462/2","463/2","464/1","464/3","525/0","526/0","527/0","528/0","588/0","624/0","640/0","699/0","746/0","769/3","781/0","790/1","793/2","813/0","842/0","847/4","853/2","858/0","866/1"],"_techniques":["52/2","384/3","738/2"],"_chain":["52/3","59/1","138/1","143/1","148/1","227/1","231/2","234/0","273/0","273/1","302/0","584/0","626/0","682/0","682/1","692/0","692/3","695/1","697/4","697/5","836/1","836/3","836/5"],"_contracts":["52/3","159/0","212/2","385/0","385/1","501/0","836/0","862/0"],"_transfer":["52/3","52/0","53/0","54/0","55/0","58/0","409/2","410/2","414/2","416/2","418/2","418/4"],"_why":["52/3","461/0","462/0","463/0","786/0","789/3"],"_rw":["52/0"],"_performs":["53/0","74/0","123/2","206/0","605/0"],"_dry":["53/0"],"_transferring":["53/0"],"_signing":["53/0","171/3","308/1","310/2","635/0","636/0","637/0","638/0","639/0","640/0","641/0","682/1"],"_sending":["53/0","165/0","168/0","272/0","311/1","316/1","501/1","501/2","625/1"],"_preflight":["53/1"],"_check":["53/1","315/0","605/0","606/0","607/0","608/0","609/0","718/0","798/1","866/2"],"_successful":["53/1","295/0"],"_how":["54/0","157/3","225/2","336/1","384/0","461/6","704/0","776/0","777/0","781/0","787/2","820/0","836/3","866/6"],"_many":["54/0","56/1","61/0","136/0","155/1","157/2","157/3","160/1","172/0","196/2","208/1","229/1","310/2","314/1","385/1","429/0","430/0","461/0","516/0","544/0","623/0","647/1","669/0","730/5","745/1","756/8","775/3","785/1","789/1","794/1","797/0","797/2","801/2","820/0","834/1","836/5","866/6"],"_could":["55/0","213/1","285/3","799/1","850/0"],"_perform":["56/0","168/0","669/1"],"_taken":["56/0","103/0","112/0","273/2"],"_account":["56/0","65/2","163/1","164/0","165/1","170/0","172/2","214/2","296/0","299/0","304/0","305/0","306/0","317/0","323/0","331/0","334/1","625/0","625/1","629/3","687/1","688/1","692/2","747/2","748/0","759/0","762/0","769/2","861/0","861/2","877/0"],"_best":["56/0","211/0","629/0","629/2","640/2","775/1","775/4","789/4"],"_ethereum":["56/0","59/0","128/0","128/2","134/2","136/0","136/1","142/0","151/0","154/0","155/0","158/0","160/0","163/0","172/0","172/4","205/0","205/1","232/0","296/0","314/1","322/1","385/0","421/0","421/1","429/0","461/0","461/5","513/0","516/0","546/0","570/0","626/0","731/0","731/1","745/0","784/0","785/0","785/1","788/0","833/0","833/1","834/0","834/4","836/0","843/0","844/0","844/1","860/0","860/1","861/0","861/1","862/0"],"_provide":["56/1","157/4","315/0","316/0","462/6","584/0","731/1","735/2","797/2","798/0","800/0"],"_false":["56/1","103/0","112/0","610/0","645/0","703/1","763/0","769/1"],"_positives":["56/1"],"_negatives":["56/1"],"_eventually":["56/2"],"_consistent":["56/2","154/0","872/0"],"_model":["56/2","600/0"],"_also":["56/2","128/5","129/1","154/1","155/0","156/3","157/2","157/4","189/1","196/2","283/1","315/2","345/2","386/2","419/1","462/6","503/0","583/1","593/0","620/1","629/3","692/2","733/0","786/3","786/7","788/2","799/2","815/5","822/3","857/0","866/3","867/6","868/1","869/0"],"_means":["56/2","128/5","461/5","647/0","667/0","730/4","741/1","836/4"],"_certain":["56/2","135/0","172/0","331/0","661/0","662/1","663/0","840/2","867/6"],"_consistency":["56/2"],"_modes":["56/2"],"_known":["56/2","328/1","582/0","583/0","583/1","775/5","853/7","866/4"],"_actual":["56/2","182/2","193/2","292/0"],"_attempted":["56/2","180/0"],"_note":["56/0","139/0","145/0","149/0","157/0","162/0","196/1","309/0","325/0","352/0","648/0","653/0","661/0","737/0","749/0","802/4","803/3","804/2","807/0","827/0","827/2"],"_estimating":["56/0","306/0","629/0"],"_fromaddress":["58/1","58/0"],"_toaddress":["58/2","58/0"],"_abstraction":["59/0","59/2","154/0","296/0","836/0","860/0","861/0","862/0"],"_bytecode":["59/0","59/2","74/0","75/0","76/0","77/0","78/0","79/0","80/0","82/0","85/0","118/1","123/1","123/2","123/4","128/1","128/3","128/4","130/4","396/0","736/0","737/0","738/0","738/1","743/0"],"_way":["59/1","155/0","195/1","421/1","655/0","667/0","667/1","741/2","745/0","779/0","786/7","789/1","789/4","830/0","833/0","848/0"],"_serialize":["59/1","513/0","516/0","697/0"],"_transactions":["59/1","65/0","65/2","65/3","172/5","202/0","203/0","204/0","243/0","246/0","247/0","248/0","249/0","268/1","273/2","284/0","285/1","293/0","295/1","296/0","296/2","304/0","304/1","317/0","401/1","687/2","860/1","861/1","861/2","876/2","883/0"],"_deserialize":["59/1"],"_their":["59/1","61/1","162/0","162/1","196/2","336/1","462/0","503/0","556/1","566/0","567/0","568/0","673/0","730/1","730/4","730/5","735/0","771/0","773/0","775/2","786/2","786/4","801/2","848/1","876/0"],"_emitted":["59/1","227/1","257/0","290/0","386/1"],"_logs":["59/1","208/0","252/0","253/0","254/0","264/0","287/0","290/0","634/0","778/0","835/0"],"_facilitates":["59/2"],"_deploying":["59/2","128/2","882/1"],"_interaction":["59/0","732/1","862/1"],"_experimental":["60/0","132/0","313/0","557/0","748/0","749/0"],"_package":["60/0","720/1","790/1","830/0","842/2","849/0","854/0","868/1"],"_features":["60/0","157/4","789/3","844/0","848/0","848/1","867/6"],"_ready":["60/0","844/1"],"_included":["60/0","171/1","246/0","260/0","284/0","285/1","287/0","288/0","291/0","293/0","295/1","304/1","463/1","587/1","594/1","594/2","772/1","799/2","815/5","839/2","847/2","866/3"],"_base":["60/0","375/0","421/1","457/0","458/0","509/0","510/0","511/0","512/0","518/0","536/0"],"_library":["60/0","71/0","154/1","189/0","336/0","338/0","430/0","462/0","462/3","462/5","462/6","463/0","463/1","463/2","464/0","464/3","593/0","594/0","594/1","594/2","720/1","730/2","750/0","789/0","789/3","790/1","793/0","831/0","843/0","843/1","845/0","846/0","866/0"],"_api":["60/1","71/0","136/0","138/2","138/3","138/0","139/0","139/1","143/2","143/0","144/0","145/0","145/1","148/0","149/0","149/1","157/0","157/1","157/2","157/4","158/1","160/0","161/0","171/0","182/0","185/0","186/0","187/0","188/0","193/0","196/1","205/2","328/1","730/0","730/1","730/2","730/3","730/4","730/5","731/1","731/2","733/2","734/0","735/1","735/2","780/0","787/1","834/0","836/3","853/3","869/0"],"_considered":["60/1","132/0","285/3","661/0","789/3"],"_stable":["60/1","655/0"],"_follow":["60/1","316/1","769/2","793/0"],"_semver":["60/1"],"_versioning":["60/1"],"_applications":["60/1","321/2","610/1","731/0","735/2","831/1","848/1"],"_requiring":["60/1"],"_specify":["60/1","143/2","157/0","158/1","159/0","193/1","194/1","225/2","313/1","384/0","464/0","501/1","557/1","628/0","629/2","692/3","697/3"],"_exact":["60/1","313/1","557/1","794/0"],"_version":["60/1","313/1","557/1","565/0","595/0","789/3","845/1","854/0","859/0","867/5","876/1"],"_needed":["60/1","119/2","135/0","184/1","246/0","248/0","315/0","315/1","316/0","316/2","336/1","601/1","618/0","798/0"],"_removed":["61/0","218/0","220/1","221/1","257/0","480/0","485/0","588/0"],"_support":["61/0","172/4","195/1","229/1","421/1","435/0","751/1","764/1","792/2","801/2","803/2","804/1","805/1","806/1","809/1","811/1","842/1","842/2","867/5"],"_brainwallets":["61/0"],"_v4":["61/0","848/0"],"_unsafe":["61/0","525/0","526/0","527/0","528/0","534/0","667/2"],"_easily":["61/0","75/0","386/2","594/1"],"_guessed":["61/0"],"_attackers":["61/0"],"_steal":["61/0"],"_funds":["61/0","61/1","625/0","775/1","799/1"],"_offered":["61/1"],"_ensure":["61/1","119/2","187/0","462/6","594/4","604/0","607/1","794/0","866/3"],"_older":["61/1","845/0","848/1","858/0"],"_systems":["61/1","642/2"],"_brain":["61/1","61/0","62/0","63/0"],"_wallets":["61/1","133/0","299/1","319/2","844/0","880/0","885/0"],"_still":["61/1","132/0","313/0","349/1","557/0","588/1","642/2","742/2","749/0","793/2","876/0"],"_recover":["61/1","337/2","426/0","644/0"],"_assets":["61/1","314/1","799/1"],"_wallet":["61/0","62/0","63/0","134/0","296/4","297/1","301/0","302/0","308/1","311/1","317/0","318/0","319/0","320/0","321/0","322/0","323/0","324/0","325/0","326/0","327/0","331/0","501/1","569/0","570/0","769/2","785/1","786/2","788/0"],"_brainwallet":["61/0","62/0","63/0"],"_generates":["62/0"],"_slightly":["62/0","162/0"],"_improved":["62/0"],"_experience":["62/0","461/5","785/0","787/2","787/0","867/4"],"_generated":["62/0","259/0","319/0","426/0","741/2","792/0","793/2","866/5","878/0"],"_mnemonic":["62/0","84/1","84/0","86/0","319/2","322/0","334/1","334/2","334/0","571/0","572/0","573/0","574/0","582/0","583/1","587/1","590/0","591/0","592/0","716/0","717/0","747/0","747/2","748/0","844/0","857/0"],"_generate":["62/0","63/0","94/0","111/0","114/0","184/1","756/2","767/0","768/0","793/1"],"_username":["62/0","63/0","701/0"],"_password":["62/0","63/0","170/0","320/0","321/0","327/0","574/0","590/0","702/0","747/0","747/1","747/2","748/0","785/3","786/1","786/2","786/3"],"_progress":["62/0","63/0","320/1","320/0","327/1","327/0","787/1","787/2","787/3","876/0"],"_callback":["62/0","63/0","194/2","194/0","195/0","337/2","787/1"],"_progresscallback":["62/0","63/0"],"_compatible":["63/0","158/0","189/0","190/0","191/0","192/0","196/0","385/1","386/1","421/1","842/0"],"_v3":["63/0"],"_earlier":["63/0"],"_legacy":["63/0","682/1","697/2","845/0"],"_generatelegacy":["63/0"],"_eip1193bridge":["64/0"],"_exposed":["64/0","182/0","462/6","464/4","745/1"],"_standard":["64/0","154/0","189/1","193/1","194/1","317/0","421/1","556/2","560/0","565/0","566/0","567/0","568/0","600/0","717/0","732/1","733/1","775/2","795/0","882/0"],"_eip":["64/0","189/1","190/0","192/0","193/0","273/0","273/1","312/0","554/0","556/0","559/0","561/0","562/0","563/0","642/2","643/0","682/1","692/1","695/1","697/2","697/4","883/0"],"_interacting":["64/0","69/1","70/1","160/0","733/1","834/0","843/0"],"_libraries":["64/0","135/0","314/1","335/0","337/2","462/1","462/2","463/1","463/2","464/1","464/3","667/1","790/1","800/0","858/0","866/4"],"_i":["64/0","136/0","139/0","145/0","149/0","157/0","341/0","342/0","343/0","345/0","346/0","421/0","613/0","615/0","617/0","619/0","620/0","621/0","622/0","624/0","625/0","627/0","628/0","629/0","631/0","632/0","664/0","665/0","669/0","730/0","732/0","751/0","802/0","803/0","804/0","806/0","809/0","840/0","847/0","869/0","880/0"],"_p1193":["64/0"],"_bridge":["64/0"],"_noncemanager":["65/0","65/1","65/3","66/0","67/0","68/0","69/0","70/0"],"_designed":["65/0","299/1","751/1","788/1","800/0","843/1"],"_manage":["65/0","196/1"],"_nonce":["65/0","66/0","67/0","68/0","69/0","70/0","171/1","202/1","214/2","240/0","268/0","283/1","304/1","316/3","627/0","628/0","677/0","687/0","762/0"],"_increasing":["65/0","786/1"],"_sends":["65/0","169/0"],"_currently":["65/1","200/1","229/1","663/0","866/1","867/1"],"_handle":["65/1","662/1","753/0","840/2","853/7"],"_re":["65/1","257/0","352/0","795/1"],"_broadcast":["65/1"],"_attempt":["65/2","421/0","624/0","667/1","786/5"],"_send":["65/2","165/0","169/0","172/3","194/0","195/0","214/0","296/0","296/2","306/0","311/0","629/3","860/1","861/1"],"_lot":["65/2","464/2","800/1"],"_control":["65/2","741/0","821/0","872/2"],"_pool":["65/2","628/1"],"_drop":["65/2","673/0","867/5","867/7"],"_your":["65/2","136/1","138/3","139/1","143/2","145/1","149/1","155/5","196/1","461/6","464/1","594/4","730/0","730/6","735/2","747/2","750/0","775/1","775/5","783/0","789/3","790/0","791/0","798/1","798/2","831/0","831/1","833/1","834/4","844/0","844/1"],"_future":["65/3","65/4","257/0","743/1","764/1","789/3","792/2","866/3"],"_nice":["65/3"],"_remembered":["65/3"],"_watched":["65/3"],"_rebroadcasting":["65/3"],"_appear":["65/3"],"_been":["65/3","155/4","155/6","174/3","257/0","274/0","275/1","276/1","277/1","278/0","280/1","292/0","313/2","376/0","557/2","564/0","627/0","628/0","675/0","732/0","733/0","752/1","848/1","849/0","850/1","854/0","854/1","857/0","866/2","867/3"],"_dropped":["65/3","155/6","208/1"],"_feature":["65/4","313/0","557/0","749/0","789/4"],"_sort":["65/4"],"_failure":["65/4","775/1"],"_mode":["65/4"],"_often":["65/5","246/0","418/5","822/0","836/6","867/4","872/0"],"_dependent":["65/5"],"_being":["65/5","67/0","157/3","213/1","229/1","305/0","306/0","556/3","594/2","605/1","610/0","622/0","627/0","786/7","787/3","866/5"],"_first":["65/5","163/1","174/2","192/1","194/2","309/5","406/3","421/1","461/0","644/1","663/0","748/0","751/1","752/1","793/0","844/1"],"_manager":["65/0","66/0","67/0","68/0","69/0","70/0"],"_create":["66/0","77/0","84/0","138/0","143/0","144/0","148/0","152/0","190/0","191/0","318/0","319/0","320/0","321/0","322/0","325/0","329/0","336/0","337/0","350/0","352/0","386/0","536/1","595/0","600/0","601/0","635/0","750/0","844/0"],"_whose":["67/0","94/1","421/1"],"_managed":["67/0","163/0","164/0"],"_associated":["68/0","307/0","752/1","847/1"],"_set":["69/0","123/2","171/4","205/0","225/0","226/0","257/0","268/1","331/0","385/3","446/0","461/5","464/0","601/0","602/0","610/0","611/0","716/0","734/2","753/0","779/2","779/4","779/5","779/6","790/1","793/2","825/0","840/0"],"_outside":["69/1","70/1","429/0","666/0"],"_settransactioncount":["69/0"],"_void":["69/0","70/0","194/0","195/0","328/0","329/0","330/0","597/0","598/0","599/0","605/0","606/0","607/0","608/0","609/0","610/0","611/0","719/0","752/0","753/0","755/0","759/0","764/0"],"_bump":["70/0"],"_increase":["70/0","136/2","788/2"],"_increasetransactioncount":["70/0"],"_application":["71/0","155/5","189/0","384/0","501/0","593/0","730/0","775/1","775/3","798/1","836/3"],"_programming":["71/0","738/2"],"_formal":["71/0"],"_specification":["71/0","312/0"],"_assembler":["72/0","123/4","127/1","128/6","736/0","738/0","739/0"],"_utilities":["72/0","75/0","384/3","544/0","593/0","594/0","745/0","745/1","750/0"],"_allow":["72/0","136/1","464/0","655/0","667/0","703/0","707/0","708/0","763/0"],"_parsing":["72/0","94/0","403/0","751/0"],"_assembling":["72/0"],"_asm":["72/0","73/0","74/0","76/0","77/0","84/0","94/0","123/0","123/1","123/4","127/0","128/8","736/0","738/0"],"_dialect":["72/0","94/0","123/0","123/4","127/0","128/8","736/0","738/0"],"_source":["72/0","95/0","96/0","97/0","100/0","225/0","299/1","319/1","386/2","790/0","792/2","799/0","823/0","840/0","844/1","866/5"],"_file":["72/0","73/0","94/0","94/2","123/4","182/0","182/1","386/2","737/0","789/3","815/0","823/0","828/1","842/2","866/5"],"_parse":["73/0","94/2","386/1","404/0","405/0","501/2","507/0","508/0","649/0","696/0","698/0","769/0"],"_format":["73/0","77/0","336/1","345/0","347/0","351/0","352/0","381/0","386/2","391/1","391/0","421/0","421/1","421/2","421/3","422/2","424/0","471/0","487/0","488/0","501/3","505/0","506/0","520/0","521/0","522/0","522/1","523/0","524/0","531/0","536/1","536/0","537/0","537/1","538/1","538/0","539/0","540/0","541/0","542/0","650/0","743/1","764/1","885/0"],"_assembly":["73/0","74/0","111/0","114/0","119/0","123/1","123/2","132/0"],"_abstract":["73/0","74/0","94/0","94/2","297/0","605/1","605/0"],"_syntax":["73/0","74/0","94/0","94/2","111/0","114/0","124/0","124/1","737/0","825/0","863/1"],"_tree":["73/0","74/0","94/0","94/2"],"_resulting":["74/0"],"_representation":["74/0","309/0","468/0","470/0","484/0","485/0","486/0","505/0","507/0","509/0","511/0","514/0","532/0","533/0","536/0","587/0","650/0","659/1","684/1"],"_assemble":["74/0","123/4","736/0","738/0"],"_data":["74/0","79/1","83/0","106/0","119/0","119/2","120/0","126/0","128/3","128/4","128/7","129/0","129/1","130/0","130/3","130/4","169/0","200/0","201/0","212/0","236/0","237/0","240/0","245/0","246/0","247/0","251/0","254/0","256/0","260/0","261/0","262/0","271/0","276/0","279/0","287/0","288/0","289/0","305/0","309/1","310/0","312/0","314/1","326/0","333/0","335/0","337/2","339/0","340/0","384/2","385/3","394/0","395/0","396/0","398/0","399/0","400/0","401/0","402/0","405/0","412/0","413/0","415/0","458/0","468/0","476/0","477/0","481/0","482/0","483/0","484/0","486/0","493/0","509/0","511/0","513/0","514/0","514/1","515/0","515/1","516/0","516/1","516/2","536/0","546/0","547/0","548/0","549/0","550/0","551/0","554/0","555/0","556/0","556/1","558/0","559/0","560/0","561/0","562/0","563/0","564/0","566/0","567/0","568/0","577/0","578/0","579/0","580/0","584/0","590/0","591/0","618/0","620/2","625/1","625/2","636/0","637/0","638/0","640/0","642/2","643/0","644/0","645/0","649/0","650/0","655/0","680/0","684/0","690/0","690/1","693/0","694/0","697/0","718/0","730/6","732/4","742/1","775/1","817/2","818/0","819/0","836/1","836/3","840/2","872/0","874/0"],"_hex":["74/0","83/0","169/0","200/0","201/0","212/0","236/0","237/0","240/0","247/0","251/0","254/0","256/0","260/0","261/0","262/0","271/0","276/0","279/0","287/0","288/0","289/0","305/0","310/0","326/0","333/0","339/0","394/0","395/0","396/0","398/0","399/0","458/0","468/0","469/0","475/0","476/0","477/0","478/0","482/0","483/0","484/0","485/0","486/0","493/0","514/0","532/0","546/0","547/0","548/0","549/0","550/0","551/0","554/0","555/0","562/0","563/0","566/0","567/0","568/0","577/0","578/0","579/0","580/0","584/0","590/0","591/0","636/0","637/0","638/0","640/0","644/0","645/0","650/0","684/0","693/0","694/0","697/0","718/0","874/0"],"_disassembler":["75/0","743/0"],"_easy":["75/0","205/0","462/3","750/0","862/1","868/0"],"_convert":["75/0","421/3","461/8","501/0","590/0","591/0","864/0"],"_examined":["75/0"],"_program":["75/0","123/1","125/0","128/0","128/2","128/4","128/5","128/7","128/8","129/0","741/0","741/1","741/2","742/2","743/0","836/0"],"_structure":["75/0","312/0","516/0","556/3","556/4"],"_operations":["76/0","77/0","78/0","123/2","123/3","205/3","229/1","296/0","296/1","296/4","316/3","328/1","331/0","335/1","429/0","429/1","429/2","438/0","447/0","461/8","462/3","544/0","605/0","731/1","797/2","855/1"],"_given":["76/0","79/0","84/0","181/1","227/1","251/2","397/0","398/0","399/0","400/0","401/0","402/0","420/1","428/0","695/1","741/0","743/0","745/1","756/6","785/3","870/0","873/0","875/0"],"_disassemble":["76/0","123/4","736/0"],"_formatted":["77/0","391/0","421/1","505/0","764/0","806/0"],"_output":["77/0","111/0","114/0","119/0","125/1","345/0","347/0","351/0","369/0","381/0","611/0","630/0","631/0","632/0","633/0","634/0","663/0","742/2","764/1","793/1","794/0","809/1","815/5"],"_formatbytecode":["77/0"],"_index":["78/0","105/0","163/0","258/0","263/0","264/0","284/0","579/0","585/0","663/0","665/1","714/0","715/0"],"_collapsing":["78/0"],"_multi":["78/0","771/0"],"_byte":["78/0","79/1","126/1","130/1","397/1","421/1","465/0","466/0","466/1","471/0","625/2","644/1","647/0","647/2","662/0","664/0","665/1","667/0","669/0","737/0","741/0"],"_push":["78/1","79/1","83/0","88/0","93/0","103/0","112/0","119/2","126/0"],"_offset":["79/0","79/1","82/0","95/0","108/0","118/1","121/0","128/7","130/1","484/0","663/0","663/1","741/3"],"_ensures":["79/1","155/6","588/1","687/1"],"_contained":["79/1","814/0"],"_within":["79/1","100/0","123/3","128/1","130/2","386/2","418/1","420/1","434/0","593/0","600/0","715/0","786/6","790/1","813/1","822/0","822/1"],"_case":["79/1","103/0","112/0","128/0","171/1","283/0","309/2","309/4","309/5","420/0","420/1","422/1","469/1","503/0","594/3","642/2","751/1","853/7","870/1","870/0","871/0","872/0","876/2"],"_getoperation":["79/0"],"_command":["80/0","123/4","162/0","736/0","745/1","746/0","750/0","751/0","751/1","752/0","753/1","756/0","769/0","769/2","769/3","769/4"],"_disassembled":["80/0","743/0"],"_stream":["80/0"],"_opcode":["81/0","83/0","84/0","85/0","86/0","87/0","88/0","89/0","90/0","91/0","92/0","93/0","109/0","110/0","124/0"],"_pushvalue":["83/0"],"_numeric":["84/0","461/4","609/0","619/0","619/1"],"_x60":["84/1"],"_push1":["84/1","84/2"],"_valueormnemonic":["84/0"],"_items":["87/0","88/0","853/6"],"_consume":["87/0","104/3","756/5","770/0","771/0","772/0","773/0","868/0"],"_stack":["87/0","88/0","101/0","104/0","104/3","126/0","130/5","131/0"],"_delta":["87/0"],"_onto":["88/0","735/1"],"_alpha":["88/0"],"_short":["89/0","205/0","647/0","647/1","786/6","850/0"],"_description":["89/0","403/1","404/0","405/0","407/0","408/0","409/0","410/0","411/0","412/0","413/0","414/0","415/0","416/0","417/0","824/0"],"_doc":["89/0"],"_true":["90/0","91/0","92/0","103/0","112/0","228/0","257/0","294/0","300/0","367/2","424/0","450/0","451/0","452/0","453/0","454/0","455/0","459/0","473/0","474/0","475/0","530/0","535/0","539/0","592/0","641/0","739/0","763/1","769/1","770/0"],"_accesses":["90/0"],"_memory":["90/0","748/0","785/3","786/0"],"_ismemory":["90/0"],"_full":["90/0","248/0","285/3","348/0","349/0","374/0","421/1","488/0","793/2","844/1"],"_isstatic":["91/0"],"_jumper":["92/0"],"_jump":["92/0","118/0","123/3","128/5","738/2"],"_isjump":["92/0"],"_ispush":["93/0"],"_root":["94/1","159/0","285/0","561/0","742/0","842/2","853/1","853/3","853/5"],"_scopenode":["94/1","121/0","122/0"],"_start":["95/0","789/4","822/5"],"_characters":["96/0","309/2","421/1","469/1","648/0","659/1","661/0","668/0","792/2","840/2","840/0"],"_end":["96/0","253/0","484/0","618/0","688/2","818/0","820/0"],"_place":["98/0","104/0","104/1","104/2","105/1","118/0","462/3"],"_diagram":["98/0"],"_showing":["98/0"],"_hierarchy":["98/0"],"_nodes":["98/0","120/0","122/0","136/1","172/4","182/0","579/0","584/0","734/2","844/0"],"_unique":["99/0","418/1"],"_tag":["99/0","199/0","200/0","201/0","202/0","212/0","229/0","252/0","253/0","301/0","304/0","870/0","870/1"],"_lifetime":["99/0"],"_process":["99/0","123/2","669/0","698/0","751/0","755/0","785/3","786/2","811/1"],"_location":["100/0","129/1","229/0","741/1"],"_valuenode":["101/0","110/0","120/0"],"_manipulate":["101/0"],"_literal":["102/0","103/0","105/0","112/0","113/0","126/0","126/1","130/5"],"_literalnode":["102/0","103/0","105/0","112/0"],"_datanode":["103/0","112/0","119/0","120/0"],"_context":["103/0","112/0"],"_verbatim":["103/0","112/0","120/0"],"_popnode":["104/0","105/0"],"_store":["104/0","647/2"],"_holder":["104/0","104/1","104/2","105/1"],"_implicit":["104/0","104/1","105/1"],"_pop":["104/0"],"_explicit":["104/2"],"_indicates":["104/3","244/0","355/0","502/0","658/2","663/0","820/0"],"_expected":["104/3","606/0","621/0","629/3","665/1","756/8","789/3"],"_position":["104/3","125/0","201/0","741/0","741/2","779/2","779/4","779/5","779/6","779/7"],"_representing":["105/0","225/0","386/0","495/0","496/0","497/0","498/0","499/0","500/0","501/2","818/0"],"_linknode":["106/0","107/0","108/0","116/0","121/0"],"_link":["106/0","107/0","108/0","130/0","130/4","130/5","189/1","594/3","778/1","790/1","792/2","801/1","828/0"],"_foo":["106/0","853/1"],"_bar":["106/0","787/1","787/2","787/3"],"_label":["107/0","118/0","125/0","742/0"],"_whether":["108/0","360/0","364/0","367/0","376/0","847/4"],"_opcodenode":["109/0","110/0"],"_operands":["110/0"],"_evaluationnode":["111/0","113/0","115/0"],"_insert":["111/0","120/0"],"_evaluation":["111/0","113/0","115/0","794/1","794/0","809/1","815/0"],"_evaluate":["113/0"],"_produce":["113/0","643/0"],"_script":["113/0","115/0","746/0","815/0"],"_executionnode":["114/0"],"_execution":["114/0","172/5","328/2","688/2","765/0","766/0","783/0"],"_ignored":["115/1","127/1","737/1","817/3","827/2"],"_labellednode":["116/0","117/0"],"_targeted":["116/0"],"_labelled":["116/0","117/0","129/1","130/1","742/1"],"_labelnode":["118/0"],"_referencing":["118/0"],"_mylabel":["118/0"],"_jumpdest":["118/1","125/1","129/1"],"_inserted":["118/1","119/0","400/1"],"_directly":["119/0","123/1","130/2","184/0","297/0","335/1","436/0","519/0","536/1","558/1","769/3","794/1","856/0","869/0","877/1"],"_mydata":["119/0"],"_padded":["119/2","486/0"],"_regarded":["119/2"],"_impact":["119/2","610/2","667/0","741/2"],"_anything":["119/2","251/1","789/3"],"_past":["119/2","618/0","663/1"],"_child":["120/0","122/0","128/5","128/7","130/3","556/4","584/0","589/0"],"_represent":["120/0","372/0","461/4","518/0","542/0","657/1","683/0"],"_piece":["120/0"],"_frame":["121/0"],"_reference":["121/0"],"_resolving":["121/0"],"_locations":["121/0"],"_myscope":["121/0"],"_scope":["121/0","122/0","128/5","128/7","128/8","130/2","130/3","742/0"],"_statements":["122/0"],"_provides":["123/0","130/4","154/1","171/0","181/0","384/1","384/2","462/4","745/0","785/2","833/0","834/3","836/3","860/0"],"_quick":["123/0","831/1"],"_high":["123/0","735/0"],"_overview":["123/0","784/0"],"_grammar":["123/0"],"_compiled":["123/1","866/5"],"_higher":["123/1","174/2","179/1","335/0","337/2","628/0","730/6","731/4","732/4","733/4"],"_language":["123/1","385/1","542/0","573/0","720/1","787/3","816/0","825/0"],"_hand":["123/1"],"_coded":["123/1"],"_needs":["123/1","336/1","793/2","832/0","836/3","844/1"],"_assembled":["123/1","125/1","741/0","742/0","742/1","742/2"],"_very":["123/2","314/0","314/1","461/1","462/2","594/1","692/3","732/0","733/0","786/0","800/0"],"_intentionally":["123/2","594/1","748/0"],"_closely":["123/2","738/0"],"_related":["123/2","182/2","316/3","854/0","857/0"],"_underlying":["123/2","337/1","462/5"],"_include":["123/3","172/2","245/0","463/2","556/4","595/0","620/1","620/2","667/1","705/0","720/1","738/2","854/0"],"_embedding":["123/3","128/1"],"_programs":["123/3","742/0"],"_bootstrap":["123/3"],"_runtime":["123/3","128/1","836/4"],"_embedded":["123/3","128/0","128/5","129/0"],"_computing":["123/3","351/0","799/0","865/0","877/0"],"_necessary":["123/3","154/1","658/1","697/1","800/0"],"_offsets":["123/3","741/2","743/0"],"_line":["123/4","162/0","736/0","746/0","750/0","751/0","769/0","769/2","769/3","769/4","802/1","803/1","809/2","811/0","815/1","817/2","818/0","822/4"],"_human":["123/4","233/0","342/0","346/0","348/0","348/1","386/2","391/1","736/0","743/1","836/6","844/0"],"_readable":["123/4","233/0","342/0","346/0","348/0","386/2","391/1","501/0","736/0","743/1","836/6","844/0"],"_ish":["123/4"],"_opcodes":["123/4","124/1","124/0"],"_literals":["123/4","126/0"],"_s":["123/0","159/0","205/0","343/0","345/0","614/0","617/0","621/0","622/0","625/0","629/0","665/0","670/0","806/0","840/0","851/0","871/0","881/0"],"_either":["124/0","159/0","175/2","192/0","431/0","467/0","516/1","638/1","640/1","742/1","798/0","823/0","840/2"],"_functional":["124/0","124/1","848/1"],"_instructional":["124/0","124/1"],"_recommended":["124/1","136/3","138/3","139/1","145/1","149/1","157/0","692/3","697/3","730/5","732/0","735/2","788/0","798/1","799/2","823/0"],"_raise":["124/1"],"_warning":["124/1","632/0","740/0","799/3","808/0"],"_examples":["124/2","125/2","126/2","372/0","502/1","517/0","738/0","743/0","744/0","774/0","836/6"],"_jumped":["125/0","741/0"],"_point":["125/1","461/4","534/0","536/0","693/1"],"_labels":["125/0","129/1","130/0","130/2","130/4","741/0"],"_puts":["126/0"],"_executed":["126/0","128/4","692/2","756/0","815/0","866/5"],"_enter":["127/0","745/1","840/2"],"_comment":["127/0","464/0"],"_text":["127/0","509/0","511/0","546/0","650/0","650/1","651/0","652/0","805/0","813/0","817/1","825/0","826/0","829/0"],"_semi":["127/0"],"_colon":["127/0"],"_comments":["127/0"],"_common":["128/0","128/1","138/1","143/1","148/1","158/0","158/1","159/0","172/0","172/4","205/1","227/2","231/1","231/2","296/3","309/4","310/2","461/1","462/6","471/0","503/0","544/0","619/1","671/0","745/0","796/0","797/1","832/0","842/0"],"_one":["128/0","159/0","192/0","192/1","205/1","297/1","334/1","336/0","355/1","462/0","462/2","495/0","497/0","586/1","594/2","612/0","628/1","663/0","667/2","746/0","751/1","779/6","793/2","802/3","876/2"],"_init":["128/1","128/2","128/3","281/1","283/0","428/0"],"_contains":["128/3","246/0","331/0","422/1","491/0","820/1"],"_installed":["128/4","741/1","840/2"],"_important":["128/5","314/0","462/2","785/2","788/2","789/3","842/1","848/0"],"_jumps":["128/5"],"_relative":["128/5","741/2","787/2"],"_itself":["128/5","128/7","385/2","556/1","588/1","853/1"],"_own":["128/5","136/1","138/3","139/1","145/1","149/1","196/1","462/0","730/0","730/4","750/0","786/2","831/0"],"_parent":["128/5","237/0","579/0","580/0"],"_scopes":["128/5","128/7","128/0","130/0","130/3","742/1"],"_enforced":["128/6"],"_segment":["128/7","129/0","129/1","130/0","130/3","130/4","742/1"],"_respect":["128/7"],"_anywhere":["128/7","205/2","844/1"],"_top":["128/8","823/0","849/0"],"_named":["128/8","227/3","406/1","406/2","503/0","742/0"],"_arbitrary":["129/0"],"_lookup":["129/0","206/0","206/1"],"_tables":["129/0","817/0"],"_constants":["129/0","419/1","491/0","492/0","493/0","494/0","495/0","496/0","497/0","498/0","499/0","500/0"],"_empty":["129/1","747/0"],"_adds":["129/1","315/3","316/3","824/0","827/0"],"_item":["130/1","853/4"],"_foobar":["130/1","130/5","372/1","373/2","374/2"],"_must":["130/2","159/0","177/0","192/1","196/1","214/1","251/1","285/3","298/0","299/2","308/1","309/5","310/2","311/1","314/2","315/4","463/1","501/1","522/1","537/2","537/3","625/1","628/0","687/2","688/1","737/0","741/1","756/4","779/2","779/5","779/6","786/3","790/1","792/2","798/0","799/2","818/0","822/2","822/5","839/1"],"_reachable":["130/2"],"_inside":["130/3"],"_respectively":["130/4"],"_accessed":["130/5","337/2","406/0","406/1","739/0","769/3"],"_pushed":["130/5"],"_exampl":["131/0"],"_placeholders":["131/0","400/1"],"_module":["132/0","172/5","797/3"],"_ledger":["133/0","134/0"],"_hardware":["133/0","134/0","299/1"],"_popular":["133/0","142/0","160/0","421/0","797/0","834/0"],"_brand":["133/0"],"_ledgersigner":["133/0","134/0"],"_connects":["134/0","174/1","196/0","735/0"],"_left":["134/1","134/2","756/5"],"_unspecified":["134/1","134/2","197/1","197/2","225/1","760/1","761/1"],"_environment":["134/1","319/1","608/0","746/0","790/0","797/2","799/0","867/1","867/3"],"_default":["134/1","134/2","136/3","139/0","145/0","149/0","154/2","155/0","156/0","157/1","161/1","174/4","177/1","197/1","231/2","246/0","315/3","316/3","322/1","336/0","338/0","570/0","701/1","702/1","703/1","707/1","708/1","709/1","720/1","730/2","735/0","735/1","740/0","742/0","747/0","751/1","775/3"],"_hid":["134/1"],"_browser":["134/1","720/1","795/1","831/0","833/0"],"_u2f":["134/1"],"_path":["134/2","134/0","183/0","322/1","322/0","570/0","572/0","583/0","583/1","585/1","586/1","587/1","589/0"],"_now":["135/0","622/0","842/2","853/3","854/0","855/1","856/0","857/0"],"_more":["135/0","154/1","168/1","174/5","180/2","181/1","196/0","196/1","225/2","227/2","384/2","462/4","522/1","544/0","580/1","610/2","618/0","625/0","628/2","660/1","693/1","730/4","730/6","738/0","738/2","743/1","748/0","787/2","791/0","792/1","793/2","843/1","844/0","863/3","876/0","876/1"],"_modular":["135/0"],"_ancillary":["135/0"],"_packages":["135/0","594/3","790/1","798/1","798/2","830/0"],"_part":["135/0","180/1","227/1","240/0","336/0","376/1","406/2","462/0","667/1","692/1","742/2","797/1","866/0"],"_core":["135/0"],"_functionality":["135/0","154/0","384/1","462/4","462/6","463/1","594/2","594/4","798/0","844/1"],"_situations":["135/0","662/1","671/0","692/3","788/2","792/2"],"_services":["136/0","136/2","155/1","156/0","157/0","157/1","157/2","157/4","160/1","172/2","196/2","730/3","735/0","834/1"],"_offer":["136/0","192/1","731/1","732/1","733/1"],"_web":["136/0","144/0","160/1","195/1","196/0","197/0","795/0","795/1","797/1","797/2","831/1","831/0","834/1","867/0","867/2"],"_accessing":["136/0"],"_these":["136/1","136/3","172/2","172/3","335/1","384/3","430/1","447/1","472/2","544/0","565/1","593/0","594/0","600/0","692/3","730/3","730/4","853/1","867/6","882/1"],"_providers":["136/1","136/0","138/0","143/0","148/0","152/0","154/0","161/0","173/0","174/1","175/0","175/2","179/2","185/0","190/0","192/0","298/0","860/0"],"_connecting":["136/1","162/0","833/0","834/0"],"_development":["136/1","795/1"],"_cluster":["136/1"],"_however":["136/2","298/0","308/1","310/2","311/1","406/2","421/1","421/2","461/3","579/0","669/1","692/3","748/0","786/5","794/1","872/0"],"_reliance":["136/2"],"_third":["136/2","160/1","735/0","834/1"],"_party":["136/2","160/1","640/1","640/2","735/0","834/1"],"_reduce":["136/2","180/2","420/1","788/0"],"_resilience":["136/2"],"_security":["136/2","310/2","661/0","667/0","667/1","785/2","787/0","788/0","788/2","789/3","798/1","799/0","831/0"],"_trust":["136/2","735/0"],"_mitigate":["136/3"],"_issues":["136/3","314/1","420/1","775/3","789/3","866/3"],"_p":["136/0","139/0","145/0","149/0","157/0","421/0","514/0","515/0","613/0","617/0","623/0","624/0","627/0","628/0","629/0","664/0","669/0","730/0","809/0","834/0","869/0","880/0"],"_etherscanprovider":["137/0","138/0"],"_backed":["137/0","142/0","147/0","151/0","156/0","166/0","730/1"],"_combination":["137/0","756/6"],"_various":["137/0","345/1","384/0","385/3","463/2","556/0","560/0","604/0","830/0","866/4","877/0"],"_etherscan":["137/0","138/3","138/0","139/1","730/1","731/0","731/2","844/0"],"_apis":["137/0","162/0","730/6","733/1","733/4","797/1"],"_optional":["138/0","143/0","144/0","148/0","225/0","265/1","334/0","348/0","400/0","420/0","574/0","601/0","602/0","698/0","735/1","765/0","801/1","818/0","823/0"],"_apikey":["138/0","138/2","139/0","143/0","143/2","144/0","144/1","145/0","148/0","149/0","185/0","186/0","187/0","188/0"],"_specified":["138/1","143/1","144/1","148/1","157/2","161/1","161/2","175/1","273/0","315/2","322/1","322/3","400/1","403/1","421/0","430/1","472/1","475/1","501/1","502/0","505/0","507/0","571/1","621/0","627/0","654/1","661/0","688/1","711/0","712/0","735/1","816/0","873/0"],"_id":["138/1","143/1","143/2","148/1","231/2","234/0","273/0","273/1","302/0","546/0","626/0","682/0","682/1","692/0","692/3","695/1","697/4","697/5","732/2"],"_shared":["138/2","139/0","145/0","149/0","157/1","640/0","730/4","731/4"],"_key":["138/2","138/3","138/0","139/0","139/1","143/0","144/0","145/0","145/1","148/0","149/0","149/1","157/0","157/2","157/4","185/0","186/0","187/0","188/0","296/4","315/2","317/0","318/0","319/0","326/0","333/0","406/2","406/3","421/1","425/1","425/0","426/0","551/0","576/0","577/0","578/0","584/0","587/0","588/0","588/1","620/2","635/0","636/0","637/0","638/0","639/0","640/1","640/2","640/0","641/0","644/0","644/1","645/0","645/1","705/0","730/1","730/4","730/5","731/2","733/2","734/0","735/1","739/0","748/0","785/3","785/0","828/0","833/1","834/4","877/0"],"_reduced":["138/2","139/0","145/0","149/0","587/1"],"_performance":["138/2","139/0","145/0","149/0","730/0","730/6","735/2"],"_throttled":["138/2","139/0","145/0","149/0","730/4"],"_requests":["138/2","139/0","145/0","149/0","157/3","180/2","196/0","208/1","789/2","842/0"],"_highly":["138/3","139/1","145/1","149/1","157/0","697/3","730/5","732/0","734/2","735/2","798/1","799/2","823/0"],"_production":["138/3","139/1","145/1","149/1","155/0","157/0","610/1"],"_register":["138/3","139/1","145/1","149/1","719/0"],"_homestead":["138/0","140/0","143/0","146/0","148/0","150/0","152/1","153/0","156/1","231/2","233/0","692/2"],"_keys":["139/0","145/0","149/0","157/1","157/0","205/0","334/2","576/1","730/0","730/2","730/3","730/4","735/1","799/0","799/1","844/0"],"_mainnet":["140/0","146/0","150/0","152/0","153/0","156/2","158/1","775/1"],"_ropsten":["140/0","146/0","150/0","158/1","692/2","775/1"],"_proof":["140/0","146/0","150/0","240/0","285/3"],"_work":["140/0","146/0","150/0","205/3","240/0","384/1","764/1","776/0","788/0","793/2","832/0","867/1","876/0"],"_testnet":["140/0","146/0","150/0"],"_rinkeby":["140/0","146/0","150/0"],"_authority":["140/0","146/0","150/0"],"_ouml":["140/0","146/0","150/0"],"_rli":["140/0","146/0","150/0"],"_clique":["140/0","146/0","150/0"],"_kovan":["140/0","146/0","150/0"],"_supported":["140/0","146/0","150/0","153/0","298/0","308/1","310/2","311/1","421/2","422/2","424/0","539/0","552/0","553/0","617/0","789/3","840/2","867/0"],"_networks":["140/0","146/0","150/0","153/0","158/0","159/0","273/2","692/1","775/2"],"_history":["141/0"],"_gethistory":["141/0"],"_infuraprovider":["142/0","143/0","144/0"],"_infura":["142/0","143/0","144/0","145/1","160/2","730/1","732/0","732/2","834/2","844/0"],"_service":["142/0","157/0","205/0","730/1","730/2","730/5","732/0","733/0","735/1","735/2"],"_project":["143/2","732/2","800/1"],"_projectid":["143/2"],"_projectsecret":["143/2"],"_secret":["143/2","584/0","640/0"],"_public":["143/2","326/0","348/1","425/1","425/0","426/0","464/2","578/0","637/0","638/0","640/1","644/0","645/0","645/1","789/4","839/1"],"_sources":["143/2","319/0","334/2","799/3","866/4"],"_like":["143/2","171/4","244/0","432/0","462/0","467/0","472/0","474/0","479/0","480/0","481/0","482/0","483/0","484/0","485/0","486/0","487/0","488/0","510/0","512/0","515/0","521/0","547/0","548/0","549/0","550/0","575/0","649/0","654/0","680/0","690/0","696/0","740/0","783/0","786/5","787/3","867/4"],"_server":["143/2","196/1","614/0","795/0"],"_further":["143/2","839/1"],"_secure":["143/2","319/0","319/1","703/0","786/6","799/0","799/3","866/0"],"_quotas":["143/2"],"_websocketprovider":["144/0","196/0","197/0"],"_socket":["144/0","196/0","197/0"],"_endpoint":["144/0"],"_getwebsocketprovider":["144/0"],"_alchemyprovider":["147/0","148/0"],"_alchemy":["147/0","148/0","149/1","730/1","733/0","733/2","844/0"],"_cloudflareprovider":["151/0","152/0"],"_cloudflare":["151/0","152/0","844/0"],"_gateway":["151/0","734/0"],"_connection":["154/0","196/0","698/0","700/0","701/0","702/0","703/0","704/0","705/0","833/1","834/4","835/0","847/4","860/0"],"_providing":["154/0","836/5"],"_concise":["154/0"],"_js":["154/1","182/1","189/0","193/2","194/0","462/6","462/0","463/0","789/0","789/3","792/2","797/1","797/2","798/0","823/0","823/1","828/1","843/0","859/0","867/2"],"_cover":["154/1","688/1","848/1"],"_vast":["154/1","775/3"],"_majority":["154/1","155/6"],"_includes":["154/1","227/1","247/0","248/0","249/0","274/0","287/0","516/3","687/1","697/4","730/5","857/0"],"_classes":["154/1","185/0","297/1","298/0","299/2","308/1","310/2","311/1","314/1","314/0","315/0","316/0","384/3","605/1","718/1","830/0","844/0"],"_sub":["154/1","184/0","185/0","196/0","296/1","296/4","297/1","298/0","299/2","308/1","310/2","311/1","314/2","314/0","315/0","316/0","440/0","526/0","718/1","830/0"],"_classing":["154/1"],"_custom":["154/1","158/0","158/1","159/0","172/5","315/0","316/0","654/1","662/1","662/0","666/2","667/2","670/1","877/1"],"_configuration":["154/1","162/0","172/5","178/0","823/0","828/0","828/1"],"_users":["154/2","157/1","447/1","730/4","775/2","775/5","853/3"],"_safest":["155/0"],"_easiest":["155/0","830/0","833/0"],"_begin":["155/0","461/5","664/0","669/0","737/0","817/1","818/0","822/2","833/0"],"_developing":["155/0","833/0","869/0"],"_robust":["155/0","732/0","733/0"],"_enough":["155/0","155/5","421/1","625/1","665/0","668/0","688/1","800/0"],"_creates":["155/1","175/0","558/0","809/0","810/0","814/0"],"_fallbackprovider":["155/1","174/0","175/0"],"_backend":["155/1","155/3","155/6","165/1","174/5","177/0","196/0","730/3"],"_request":["155/2","170/0","174/2","193/1","193/0","194/1","194/0","195/1","195/0","265/0","266/0","267/0","268/0","269/0","270/0","271/0","272/0","273/0","305/0","306/0","310/0","311/0","315/0","316/0","730/6","789/4"],"_backends":["155/2","155/5","171/3","174/1","174/2","174/4","176/0","208/1","229/1","735/0"],"_simultaneously":["155/2"],"_responses":["155/3","155/6","177/0","730/4","730/6"],"_checked":["155/3"],"_agree":["155/3","155/5","174/4","177/0"],"_quorum":["155/4","174/1","174/3","174/4","175/1","175/0","177/0","180/1"],"_reached":["155/4","174/3"],"_become":["155/6","797/0"],"_out":["155/6","462/5","666/0","688/2","730/2","789/0","789/4","798/1","847/4","867/3"],"_sync":["155/6","321/0","794/0"],"_compromised":["155/6"],"_favor":["155/6"],"_url":["156/3","161/0","161/1","184/1","184/0","185/0","186/0","188/0","197/0","197/1","698/0","700/0","828/0"],"_http":["156/3","161/2","703/0","840/2"],"_localhost":["156/3","161/2","197/1"],"_wss":["156/3"],"_com":["156/3","877/1"],"_getdefaultprovider":["156/0"],"_acquire":["157/0"],"_across":["157/1","264/0","594/0","793/2","872/0"],"_throttle":["157/1"],"_periods":["157/1"],"_load":["157/1","831/1","870/0"],"_realizing":["157/1"],"_monitoring":["157/2"],"_usage":["157/2","604/0","730/1","731/4","732/4","733/4","734/2","754/0","756/1","765/0"],"_metrics":["157/2","731/4","732/4","733/4","734/2"],"_tracking":["157/3","730/6"],"_specifying":["157/4","392/0","393/0","394/0","395/0","397/0","398/0","399/0","400/0","401/0","402/0","418/0","741/2"],"_official":["158/0","718/1","720/0"],"_projects":["158/0","730/1","730/3","830/0","866/1"],"_accept":["158/1","429/2","753/1"],"_networkish":["158/1","161/0","231/0"],"_definition":["158/1","373/2","805/0","812/1","844/1"],"_override":["159/0","185/0","185/1","336/1"],"_registry":["159/0","235/0"],"_intercept":["159/0"],"_dev":["159/0"],"_manually":["159/0","336/0","386/2","629/2","830/0"],"_json":["160/0","161/0","162/0","163/0","164/0","165/0","166/0","167/0","168/0","171/0","172/4","182/0","184/1","184/0","185/0","186/0","193/1","193/2","194/1","194/2","196/0","320/0","321/0","327/0","331/0","343/0","345/0","345/1","345/2","350/0","386/0","386/1","391/1","560/0","698/0","732/1","733/1","764/1","769/2","788/0","823/0","823/1","834/0","844/0","866/1","868/0","877/2","885/0"],"_rpc":["160/0","161/0","162/0","163/0","164/0","165/0","166/0","167/0","168/0","171/0","172/4","182/0","184/1","184/0","185/0","186/0","193/1","193/2","194/1","194/2","196/0","560/0","732/1","733/1","759/0","834/0","844/0"],"_major":["160/0","789/3","834/0","867/5","876/1"],"_implementations":["160/0","172/0","834/0","866/4","877/1"],"_geth":["160/1","172/1","172/5","172/6","182/0","834/1","844/0","866/4","877/1"],"_parity":["160/1","172/1","172/5","172/6","182/0","470/0","834/1","844/0","848/1","866/5","882/1"],"_jsonrpcprovider":["160/0","161/0","163/0","164/0","165/0","166/0","167/0","172/3","184/1","188/0","296/4"],"_located":["161/0"],"_anetworkish":["161/0"],"_querying":["161/2","835/0"],"_implementation":["162/0","182/2","315/3","316/3"],"_different":["162/0","463/1","659/1","667/0","692/1","863/0","863/1","866/4"],"_specific":["162/0","165/1","172/0","229/0","254/0","336/1","420/1","545/0","662/1","741/1","785/0","789/3"],"_flags":["162/0","739/0","751/0","752/1","756/5","756/6","769/0","769/1","769/4"],"_settings":["162/0"],"_enable":["162/0"],"_unlock":["162/0","170/0","786/2"],"_accounts":["162/0","164/0","331/0","759/0","876/2","877/2","877/0"],"_expose":["162/0"],"_please":["162/1","313/1","557/1","788/0","789/2","789/4","844/1","848/2","867/3"],"_consult":["162/1"],"_documentation":["162/1","182/2","789/3","792/0","792/2","793/0","793/2","794/0","794/1","840/0","844/1","845/0","847/1"],"_local":["162/0","182/0","373/0","793/2"],"_jsonrpcsigner":["163/0","166/0","171/2","296/4","297/1"],"_addressorindex":["163/0","163/1"],"_getsigner":["163/0","296/4"],"_addresses":["164/0","287/0","419/0","421/0","421/1","576/1","584/0","588/1","844/1"],"_listaccounts":["164/0"],"_raw":["165/0","279/0","308/0","312/0","471/0","472/0","487/0","488/0"],"_messages":["165/0","296/0","296/2","317/0","554/1","861/1","861/2"],"_debugging":["165/1","172/2","205/2","401/1","597/0","610/2","630/0","731/0","733/1","733/4","745/0"],"_management":["165/1","172/2"],"_params":["165/0","193/1","194/1","601/0","602/0"],"_established":["167/0"],"_checks":["168/0","315/3","605/0","718/0"],"_getuncheckedsigner":["168/1"],"_details":["168/1","171/0","171/2","171/3","248/0","580/1","863/3"],"_unchecked":["168/0","169/0","171/0"],"_connectunchecked":["168/0"],"_jsonrpcuncheckedsigner":["168/0","171/0"],"_resolves":["169/0","265/1","299/0","308/0","310/0","311/0","316/3","327/0"],"_opaque":["169/0","171/1"],"_senduncheckedtransaction":["169/0"],"_locked":["170/0"],"_populating":["171/0"],"_before":["171/0","177/0","285/1","640/2","698/0","704/0","706/0","711/0","712/0","789/3","789/4","799/2","851/1"],"_returning":["171/0","327/0","698/0","771/0"],"_price":["171/1","211/0","270/0","303/0","625/1","628/0","628/1","628/2","679/0","689/0","761/0","783/0"],"_limit":["171/1","242/0","269/0","359/0","625/1","629/2","629/0","678/0","688/0","707/0","708/0","710/0","730/6","731/4","732/4","733/4","760/0"],"_adjusted":["171/1"],"_discarded":["171/1"],"_remedy":["171/2","461/7","629/2"],"_immediately":["171/2","171/3","171/4"],"_queries":["171/2","730/6","860/1"],"_respond":["171/3"],"_instead":["171/3","185/1","205/2","248/0","297/1","321/2","436/1","464/3","601/1","620/2","647/1","653/1","742/1","827/2","874/0"],"_defer":["171/3"],"_releasing":["171/3"],"_responsible":["171/3"],"_uncheckedsigner":["171/4"],"_information":["171/4","225/2","246/0","587/1","597/0","598/0","610/1","630/0","791/0","877/0"],"_mock":["171/4","399/1"],"_quickly":["171/4","579/0"],"_vs":["172/1","462/0","470/0","472/1","697/4","775/1"],"_admin":["172/2"],"_deeper":["172/2"],"_exploration":["172/2"],"_swarm":["172/2"],"_whisper":["172/2"],"_trace":["172/5","733/4"],"_debug":["172/5","597/0","630/0"],"_internal":["172/5","516/0","518/0"],"_cache":["172/5"],"_etc":["172/5","348/1","352/0","375/2","462/0"],"_others":["173/0","174/2","720/1","799/1"],"_advanced":["174/0","384/3","462/4","730/6","733/1","733/4","738/2","828/1"],"_configured":["174/1","207/1","594/4"],"_priority":["174/1","174/2","175/3","179/0","179/2"],"_weight":["174/1","174/5","175/3","181/0"],"_dispatched":["174/2"],"_randomly":["174/2"],"_chosen":["174/2","179/2","462/0"],"_selected":["174/2","751/1"],"_compared":["174/2","655/0"],"_accepted":["174/3","789/3"],"_caller":["174/3"],"_rounded":["174/4","529/0"],"_give":["174/5"],"_influence":["174/5"],"_fallback":["174/0","175/0","176/0","178/0","179/0","180/0","181/0","735/1"],"_half":["175/1","177/1","670/1","793/2"],"_sum":["175/1","177/1","293/0"],"_weights":["175/1","177/1"],"_fallbackproviderconfig":["175/2","176/0","178/0","179/0","180/0","181/0"],"_defaults":["175/3","654/1"],"_configurations":["176/0"],"_configs":["176/0"],"_providerconfigs":["176/0"],"_config":["176/0","178/0","179/0","180/0","181/0","792/2","823/0","828/1"],"_upon":["177/0","385/3"],"_priorities":["179/1"],"_favoured":["179/1"],"_over":["179/1","182/0","461/5","462/1","463/2","628/1","703/0","756/5","789/0","796/0","840/2","844/0","850/0","866/1"],"_lower":["179/1","180/2","873/0","873/1","874/0","875/0"],"_share":["179/2"],"_random":["179/2","319/0","489/0","785/3","799/0","799/2","799/3","866/5","872/0","872/2","873/0","874/0","875/0","882/1"],"_timeout":["180/0","215/0","615/0","704/0","706/0"],"_ms":["180/0","709/1"],"_affect":["180/1","798/1"],"_counted":["180/1"],"_traffic":["180/2","730/3"],"_stall":["180/0"],"_stalltimeout":["180/0"],"_trusted":["181/1"],"_ipcprovider":["182/0","183/0"],"_filename":["182/0","811/0"],"_system":["182/0","182/1"],"_complications":["182/1"],"_due":["182/1","421/1","534/1","667/0"],"_permissions":["182/1","730/1"],"_notes":["182/2","460/0"],"_websites":["182/2"],"_ipc":["182/0","183/0"],"_intended":["184/0","273/2","853/3"],"_classed":["184/0"],"_suffice":["184/1"],"_little":["184/1","240/1","241/1","242/2","245/1","285/2","293/1","461/1"],"_extra":["184/1","245/0"],"_effort":["184/1"],"_urljsonrpcprovider":["184/0","185/0","186/0"],"_geturl":["185/1","187/0","188/0"],"_getapikey":["185/1","186/0","187/0"],"_inheritedclass":["186/0"],"_examine":["187/0"],"_valid":["187/0","214/1","273/1","315/3","424/0","466/0","466/1","468/0","473/0","475/0","475/1","514/1","538/1","592/0","607/0","666/0","667/2","669/0","716/0","866/5"],"_modified":["187/0","663/0"],"_inheriting":["187/0","188/0"],"_inheritingclass":["187/0","188/0"],"_web3provider":["189/0","190/0","191/0"],"_meant":["189/0","579/0","750/0"],"_ease":["189/0"],"_moving":["189/0"],"_web3":["189/0","190/0","191/0","192/0","193/2","194/0","859/0","861/2","863/2","865/0","867/0"],"_based":["189/0","308/1","316/3","748/0","797/1"],"_wrapping":["189/0"],"_existing":["189/0","385/1","433/0","792/2"],"_web3httpprovider":["189/0"],"_web3ipcprovider":["189/0"],"_web3wsprovider":["189/0"],"_exposing":["189/0","462/4"],"_rest":["189/0"],"_wrap":["189/1"],"_wraps":["190/0"],"_external":["190/0","192/0","193/0","194/0","195/0","792/2"],"_externalprovider":["190/0","192/0","192/1","193/0","194/0","195/0"],"_web3compatibleprovider":["191/0"],"_mentioned":["192/0"],"_signatures":["192/1","693/0","694/0","695/0","879/0","882/1"],"_matching":["192/1","208/0","252/0","253/0","254/0","403/1","579/0"],"_follows":["193/0","194/0"],"_signature":["193/0","194/0","308/0","312/0","337/1","351/0","410/0","416/0","418/2","418/3","426/0","470/0","471/0","472/0","487/0","488/0","639/0","642/0","642/1","643/0","644/1","644/0","662/1","682/1","697/0","697/1","697/4","697/5","806/0","806/1"],"_payload":["193/1","194/1","560/0"],"_minimum":["193/1","194/1","707/0"],"_differs":["193/2"],"_wrapped":["193/2","194/2"],"_semantics":["194/2"],"_async":["194/0","462/3"],"_sendasync":["194/0","195/0"],"_historically":["195/1","853/1"],"_synchronous":["195/1"],"_browsers":["195/1","867/2"],"_deprecated":["195/1"],"_quite":["195/1","593/0","732/0","785/1","797/0","849/0","867/0","868/0"],"_long":["195/1","309/2","309/3","481/0","481/1","486/1","487/0","571/1","647/2","648/0","675/0","704/0","786/0"],"_ago":["195/1","229/1"],"_websocket":["196/0","196/1","196/2","732/1","733/1"],"_persistent":["196/0"],"_multiplexing":["196/0"],"_pub":["196/0"],"_immediate":["196/0"],"_dispatching":["196/0"],"_newer":["196/1"],"_running":["196/1","738/0","757/0","758/0","866/5"],"_infrastructure":["196/1","734/2"],"_websockets":["196/1"],"_much":["196/1","205/2","227/2","730/6","785/2","786/0","787/2","792/1"],"_intensive":["196/1","785/3"],"_resources":["196/1","208/1"],"_maintain":["196/1","656/0","822/0"],"_client":["196/1","844/0"],"_charge":["196/2","847/1"],"_fees":["196/2","464/3"],"_endpoints":["196/2","731/1"],"_ws":["197/1"],"_blocktag":["199/0","200/0","201/0","202/0","212/0","229/0","229/1","252/0","253/0","301/0","304/0"],"_height":["199/0","200/0","210/0","229/1","238/0","255/0","275/0","291/0"],"_latest":["199/0","200/0","201/0","202/0","212/0","229/1","301/0","304/0"],"_getcode":["200/0"],"_bytes32":["201/0","647/0","649/0","650/0"],"_pos":["201/0"],"_addr":["201/0"],"_storage":["201/0","647/0"],"_getstorageat":["201/0"],"_ever":["202/0","268/1","304/0","687/2"],"_next":["202/1","218/0","789/3","817/0","822/4","828/0","867/5","876/1"],"_gettransactioncount":["202/0","304/0"],"_hashes":["203/0","246/0","247/0","667/0","870/2","882/0"],"_getblock":["203/0"],"_objects":["204/0","345/1","462/3","516/2","844/0","850/0"],"_getblockwithtransactions":["204/0"],"_blockwithtransactions":["204/0","248/0"],"_naming":["205/0"],"_remember":["205/0","842/1"],"_refer":["205/1"],"_nearly":["205/2","788/0"],"_accepts":["205/2","345/2","421/2","620/2"],"_simplify":["205/2","386/2","594/0","780/0","855/1"],"_reading":["205/2"],"_simpler":["205/2"],"_offers":["205/3","730/2"],"_basic":["205/3","701/0","701/2","702/0","702/2","703/0","756/4","877/0"],"_help":["205/3","600/0","754/0","756/2","765/0","767/0","768/0","848/1","853/2","853/3"],"_names":["205/3","348/0","349/0","564/0","771/0","844/1","853/2","870/1"],"_reverse":["206/0"],"_registrar":["206/0"],"_exist":["206/1","315/3"],"_lookupaddress":["206/0"],"_looks":["207/0"],"_owned":["207/1","317/0","331/0"],"_resolver":["207/1"],"_resolvename":["207/0","307/0","564/0"],"_keep":["208/1","257/0","788/0","789/2","789/3","792/2","794/0","837/0","844/0","867/0"],"_mind":["208/1","257/0","663/1","788/0","789/1","789/2","837/0"],"_discard":["208/1"],"_old":["208/1","628/1"],"_too":["208/1","623/0","756/8"],"_broad":["208/1"],"_getlogs":["208/0","397/0","778/1"],"_getnetwork":["209/0"],"_recently":["210/0","229/1"],"_getblocknumber":["210/0"],"_guess":["211/0","629/0","786/1","786/3","799/1"],"_getgasprice":["211/0","303/0"],"_getters":["212/2"],"_submit":["213/0"],"_accurate":["213/1"],"_accounted":["213/1"],"_affected":["213/1"],"_relevant":["213/1"],"_submits":["214/0"],"_correct":["214/2","718/1","786/2","866/4"],"_sufficient":["214/2","462/4"],"_pay":["214/2","270/0","625/1","783/0"],"_sendtransaction":["214/0","311/0","315/1"],"_transactionhash":["215/0","262/0","289/0"],"_wait":["215/0","280/0","704/0","711/0"],"_waitfortransaction":["215/0"],"_confirms":["215/0"],"_txreceipt":["215/0"],"_emitter":["216/0"],"_triggered":["217/0","218/0","257/0"],"_eventname":["217/0","218/0","219/0","220/0","220/1","221/0","221/1","222/0","222/1","223/0","224/0"],"_notify":["219/0"],"_generally":["219/1","240/1","241/1","242/2","245/1","285/2","293/1","315/0","316/0","403/0","429/2","462/4","620/1","628/2","640/1","667/1","831/0"],"_internally":["219/1","421/2","462/4","463/0","464/2","464/3","735/0","735/1"],"_emit":["219/0"],"_topic":["225/0","225/2","226/0","351/0","364/1","395/0","397/0","397/1","404/0","408/0","411/0","777/0","779/2","779/4","779/5","779/6","779/7"],"_sets":["225/2","226/0","779/2","826/0"],"_omitted":["226/1","472/0","472/1","472/2","484/1","735/1","815/5","873/1"],"_isprovider":["228/0"],"_specifies":["229/0","353/0"],"_earliest":["229/1"],"_pending":["229/1"],"_prepared":["229/1"],"_mining":["229/1","245/0"],"_negative":["229/1","431/0","495/0","539/0"],"_blocks":["229/1","278/0","285/1","292/0","295/1","711/0","737/0","739/0","813/1"],"_eventtype":["230/0"],"_eventfilter":["230/3"],"_ensaddress":["231/2","235/0"],"_populated":["231/2"],"_unknown":["231/2","233/1","315/2","601/0","602/0","616/0","756/5"],"_chainid":["234/0","273/0","316/3","682/0","692/0","697/2","697/3"],"_previous":["237/0","658/2"],"_parenthash":["237/0"],"_timestamp":["239/0","277/0"],"_mine":["240/0"],"_property":["240/1","241/1","242/2","245/1","285/1","285/2","295/1","337/2","466/1","556/3","556/4","806/0","851/2","871/0"],"_interest":["240/1","241/1","242/2","245/1","293/1"],"_difficulty":["241/0","788/2"],"_met":["241/0"],"_maximum":["242/0","269/0","500/0","708/0"],"_permitted":["242/0","269/0"],"_voted":["242/1"],"_down":["242/1","461/1","788/2"],"_miners":["242/1"],"_adjust":["242/1"],"_bandwidth":["242/1"],"_requirements":["242/1"],"_gaslimit":["242/0","269/0","316/3","678/0","688/0","760/0"],"_gasused":["243/0","286/0"],"_coinbase":["244/0"],"_subsidy":["244/0"],"_reward":["244/0"],"_go":["244/0"],"_choose":["245/0"],"_extradata":["245/0"],"_substantially":["246/0","610/2"],"_entry":["251/1","251/2","257/0"],"_condition":["251/1","779/2","779/3"],"_treated":["251/2","309/0","309/1","740/0"],"_starting":["252/0","822/4"],"_inclusive":["252/0","253/0","466/1","867/7"],"_search":["252/0","253/0","254/0","403/1","404/0","405/0"],"_criteria":["252/0","253/0","254/0"],"_fromblock":["252/0"],"_blockhash":["254/0","256/0","276/0","288/0"],"_blocknumber":["255/0","275/0","291/0"],"_org":["257/0"],"_orphaned":["257/0"],"_indicate":["257/0","629/3"],"_likely":["257/0","336/1","384/2","464/3","692/2","775/2","786/6","867/5","876/1"],"_again":["257/0","711/0","712/0"],"_near":["257/0"],"_transactionlogindex":["258/0"],"_transactionindex":["263/0","284/0"],"_logindex":["264/0"],"_describes":["265/0"],"_processed":["265/0","337/1","663/0","756/4","783/0"],"_fields":["265/1","310/1","311/0"],"_transactionrequest":["265/0","266/0","267/0","268/0","269/0","270/0","271/0","272/0","273/0","305/0","306/0","310/0","311/0","315/1","315/3","315/0","316/1","316/0"],"_wei":["270/0","272/0","461/3","461/5","461/8","499/0","501/0","501/1","501/2","502/2","502/3","628/2","681/0","689/0","691/0"],"_per":["270/0","499/0","689/0","737/0","741/3","742/2","783/0","802/3","854/0"],"_unit":["270/0","502/0","505/0","507/0","689/0","783/0","884/0"],"_gasprice":["270/0","316/3","679/0","688/1","689/0","761/0"],"_authorized":["273/0"],"_disable":["273/1"],"_dangerous":["273/2"],"_care":["273/2"],"_replayed":["273/2"],"_were":["273/2","412/0","853/2","866/4","866/5","866/6","877/1","882/1"],"_possibly":["273/2","321/1","731/0","799/1"],"_initial":["278/0","762/0","790/1"],"_confirmations":["278/0","280/0","292/0"],"_serialized":["279/0","345/1","587/0","684/1","695/1","696/0","697/0","697/1","883/0"],"_transactionreceipt":["280/0"],"_created":["283/0","319/2","336/0","338/0","386/2","735/1","866/4","866/6","877/1","882/1"],"_getcontractaddress":["283/1","427/0"],"_utility":["283/1","309/5","316/2","736/0","745/0"],"_sender":["283/1"],"_contractaddress":["283/0"],"_intermediate":["285/0"],"_byzantium":["285/1","294/0","295/1"],"_hard":["285/1","294/0","295/1","748/0"],"_fork":["285/1","294/0","295/1"],"_replaced":["285/1","815/1","815/3"],"_status":["285/1","295/0","754/0"],"_verify":["285/3","579/0","642/0","643/0"],"_transition":["285/3"],"_fraud":["285/3"],"_considering":["285/3"],"_logsbloom":["287/0"],"_ordered":["293/0"],"_cumulative":["293/0"],"_cumulativegasused":["293/0"],"_post":["294/0","295/1"],"_reverted":["295/0","688/2"],"_sign":["296/0","296/2","308/0","309/4","310/0","312/0","317/0","328/0","639/0","644/1","697/1","730/0","730/5","731/2","732/2","733/2","734/0","833/1","834/4","861/1","861/2"],"_largely":["296/1"],"_metamask":["296/2","833/0","844/0"],"_broadcasting":["296/2"],"_signers":["296/3","296/0","861/0"],"_encounter":["296/3","461/0","848/2","867/4"],"_knows":["296/4","786/2"],"_private":["296/4","317/0","318/0","319/0","333/0","421/1","425/1","425/0","576/1","577/0","584/0","588/0","588/1","620/2","635/0","636/0","640/1","644/1","645/1","775/1","799/0","799/1","833/1","834/4","844/0","877/0"],"_acquired":["296/4","730/4"],"_instantiated":["297/0","605/1","752/1","756/3"],"_concrete":["297/1"],"_voidsigner":["297/1","311/1","328/0","329/0","330/0"],"_implement":["298/0","299/2","308/1","310/2","311/1","565/1","767/0","768/0"],"_simply":["298/0","385/3","775/4"],"_around":["299/1","461/5","732/0","733/0","786/4","792/2"],"_asynchronous":["299/1","314/1","321/2","462/2"],"_getaddress":["299/0","422/0","423/1","763/0"],"_issigner":["300/0"],"_getchainid":["302/0"],"_cost":["306/0","625/1","625/2","629/1","741/3","786/1"],"_ensname":["307/0"],"_message":["308/0","308/1","309/0","309/1","554/0","554/1","601/0","602/0","603/0","606/0","608/0","609/0","610/1","642/0","754/0","763/0","765/0","766/0"],"_signmessage":["308/0"],"_rawsignature":["308/0","312/0","487/0"],"_converted":["309/0","309/5","421/2","425/1","430/0","448/0","449/0","554/1","673/0","866/5"],"_utf8":["309/0","651/0","652/0","654/0","664/0","665/0","666/0","667/0","668/0","669/0","670/0","672/0","673/0","674/0"],"_binary":["309/1","335/0","336/1","384/0","384/2","461/4","468/0","516/2","769/1","836/3"],"_x1234":["309/2","517/0"],"_equivalent":["309/3","418/3","506/0","508/0","673/0","882/1"],"_x12":["309/3"],"_x34":["309/3"],"_arrayify":["309/5","476/0"],"_missing":["310/1","311/0","472/2","488/1","606/0","607/0","621/0","622/0","665/0","797/2","798/0","799/3","848/2"],"_reasons":["310/2","663/0","789/1","831/0","840/1"],"_clients":["310/2","775/3"],"_signtransaction":["310/0"],"_populates":["311/0"],"_offline":["311/1"],"_signs":["312/0"],"_typed":["312/0","509/0","511/0","556/0","558/0","559/0","560/0","561/0","562/0","563/0","564/0","643/0"],"_domain":["312/0","556/1","556/2","559/0","560/1","560/0","562/0","563/0","564/0","643/0","839/1"],"_signtypeddata":["312/0","313/2","560/0"],"_spcify":["313/2","557/2"],"_renamed":["313/2","406/2","557/2"],"_bit":["313/2","537/0","557/2","647/0","794/1","840/0"],"_immutable":["314/0","325/0","438/0","462/2","850/0"],"_deals":["314/1"],"_critical":["314/1","866/0"],"_potentially":["314/1"],"_valuable":["314/1"],"_crypto":["314/1"],"_keeping":["314/1","663/1","842/2"],"_throughout":["314/1","513/0","544/0","792/2","822/3"],"_life":["314/1","780/0"],"_cycle":["314/1","712/0"],"_helps":["314/1","384/1","853/7"],"_prevent":["314/1","692/1","866/3"],"_serious":["314/1"],"_assumption":["314/1"],"_extend":["314/2","820/0"],"_super":["314/2","756/4"],"_overridden":["315/0","316/0","682/1"],"_behaviour":["315/0","316/0","730/6","775/3"],"_copy":["315/1","316/1","490/0","564/0","831/0","847/0","847/1"],"_checktransaction":["315/0","316/1","316/3"],"_procedure":["316/1"],"_promises":["316/2"],"_resolveproperties":["316/2"],"_inherits":["317/0","824/0"],"_externally":["317/0","331/0"],"_eoa":["317/0","332/0","333/0","334/0"],"_privatekey":["318/0","333/0","577/0","635/0","636/0"],"_cryptographically":["319/0"],"_entropy":["319/0","319/1","591/0"],"_thrown":["319/1","422/1","475/1","481/1","486/1","595/0","601/1","608/1","697/5","815/2","815/4"],"_createrandom":["319/0"],"_encrypted":["320/0","321/0"],"_called":["320/1","327/1","436/0","519/0","622/0","756/3","756/7","756/9","787/1"],"_decryption":["320/1","327/1","787/1"],"_between":["320/1","327/1","335/0","461/8","462/2","466/1","501/0","653/1","697/5","787/1","815/5","853/1","863/2"],"_indicating":["320/1","327/1","783/0"],"_towards":["320/1","327/1"],"_completion":["320/1","327/1","787/1"],"_fromencryptedjson":["320/0","321/2"],"_operate":["321/1"],"_synchronously":["321/1"],"_lock":["321/1"],"_trivial":["321/1","839/0"],"_duration":["321/1"],"_fromencryptedjsonsync":["321/0"],"_phrase":["322/0","571/0","574/0","590/0","591/0","592/0","857/0"],"_wordlist":["322/3","322/0","573/0","574/0","591/0","592/0","713/0","714/0","715/0","716/0","717/0","718/1","718/0","719/0","721/0","722/0","723/0","724/0","725/0","726/0","727/0","728/0","729/0"],"_english":["322/3","720/1","722/0","844/0"],"_frommnemonic":["322/0","574/0"],"_desired":["325/0","692/3"],"_uncompressed":["326/0","425/1","637/0","644/0","645/1","844/1"],"_publickey":["326/0","578/0","637/0"],"_encrypt":["327/0"],"_carried":["328/1"],"_along":["328/2","385/1","464/1","693/1","739/0"],"_minimal":["331/0","349/1","349/0","351/0"],"_performed":["331/0","775/1"],"_encoding":["331/0","384/2","385/0","509/0","510/0","511/0","512/0","513/0","565/0","836/1"],"_externallyownedaccount":["331/0"],"_hd":["334/1","334/2","569/0","570/0","572/0","577/0","578/0","579/0","580/0","581/0","582/0","583/0","584/0","585/0","586/0","587/0","588/0","589/0","844/0","880/0"],"_encode":["334/2","335/0","339/0","384/1","385/3","396/0","397/0","398/0","399/0","447/0","510/0","512/0","514/0","559/0","642/2","648/0","667/1","695/1","836/3"],"_extended":["334/2","576/0","587/0","820/1","828/1"],"_abicoder":["335/0","336/0","337/0","338/0","339/0","340/0"],"_collection":["335/0","353/0","384/0","731/1","733/1","796/0","844/1","876/2"],"_coders":["335/0"],"_decode":["335/0","337/0","340/0","384/1","400/0","401/0","402/0","403/1","447/0","509/0","511/0","515/0","836/3"],"_formats":["335/0","341/0","347/0","385/3","419/0"],"_interoperate":["335/0","385/3"],"_never":["335/1","336/0","602/0","603/0","754/0","765/0","766/0","775/2"],"_greatly":["335/1"],"_coder":["335/0","337/1","337/0","338/0","339/0","340/0"],"_coercion":["336/0"],"_loaded":["336/0"],"_universally":["336/0"],"_those":["336/1","848/1","867/4","869/0","882/1"],"_coerced":["336/1"],"_decoded":["336/1","400/0","401/0","402/0","412/0","509/0","511/0","649/0"],"_coercefunc":["337/0"],"_describing":["337/1","345/1"],"_throws":["337/2","606/0","609/0","654/1"],"_contain":["337/2","522/1","648/0","799/0","822/2","824/1","827/1"],"_errors":["337/2","420/1","461/5","595/0","600/0","610/0","610/1","612/0","613/0","614/0","615/0","616/0","617/0","618/0","619/0","620/0","621/0","622/0","623/0","624/0","625/0","626/0","627/0","628/0","629/0","631/0","632/0","633/0","662/1","854/0"],"_coerce":["337/0"],"_func":["337/0","698/0","699/0"],"_imported":["338/0"],"_defaultabicoder":["338/0"],"_according":["339/0","340/0","566/0","567/0","568/0","590/0","591/0","716/0","810/0"],"_paramtype":["339/0","340/0","347/0","356/0","369/0","372/0","373/0","374/0","375/0","376/0","377/0","378/0","379/0","381/0","382/0","383/0"],"_expand":["341/0"],"_section":["341/0","460/0","784/1","792/1","792/2","798/1","802/0","802/3","832/0","845/0","863/2","876/0"],"_b":["341/0","342/0","343/0","345/0","346/0","462/0","463/0","618/0","629/0","630/0","664/0","742/0","807/0","808/0","880/0"],"_compiler":["343/0","345/0","386/1","836/6"],"_j":["343/0","345/0"],"_fragments":["344/0","353/0","384/0","384/1","387/0","388/0","389/0","390/0","392/0","393/0","394/0","395/0","397/0","398/0","399/0","400/0","401/0","402/0","418/0","801/0"],"_fragment":["345/1","347/0","348/0","349/1","349/0","350/0","351/0","352/0","353/0","354/0","355/0","356/0","357/0","358/0","359/0","360/0","361/0","362/0","363/0","364/0","365/0","366/0","367/0","368/0","369/0","370/0","371/0","387/0","388/0","389/0","390/0","392/0","393/0","394/0","395/0","397/0","398/0","399/0","400/0","401/0","402/0","408/0","413/0","418/0","418/6","801/1","801/3","853/7","856/0"],"_deserialized":["345/2"],"_article":["346/1"],"_humanb":["346/0"],"_modifiers":["348/0","352/0"],"_white":["348/1"],"_space":["348/1","544/0"],"_aid":["348/1"],"_readability":["348/1"],"_fragmenttypes":["348/0","349/0","350/0","351/0"],"_except":["349/0","468/0","472/0","874/0"],"_unnecessary":["349/0","478/0","536/1"],"_whitespace":["349/0","571/1","716/0","717/0","737/1","819/0"],"_storing":["349/1"],"_fully":["349/1","403/1","421/1","657/1","688/2","844/1"],"_reconstruct":["349/1"],"_original":["349/1","352/0","853/2"],"_thinsp":["349/1"],"_stringify":["350/0"],"_sighash":["351/0","352/0","381/0","394/0","405/0","413/0","415/0","418/4","418/5"],"_insufficient":["352/0","625/0","628/1","688/2"],"_discards":["352/0","788/0"],"_anonymous":["352/0","364/0","364/1"],"_statemutability":["352/0","361/0","368/0"],"_constructorfragment":["354/1","362/0","363/0","390/0"],"_inputs":["356/0"],"_param":["356/0","369/0","372/0","373/0","374/0","375/0","376/0","377/0","378/0","379/0","381/0","382/0","383/0"],"_objectorstring":["357/0","362/0","365/0","370/0","382/0"],"_tra":["358/0","362/0","363/0","365/0","366/0","370/0","371/0","380/0","381/0","382/0","383/0","465/0","646/0"],"_lal":["358/0","363/0","366/0","371/0"],"_al":["358/0","363/0","366/0","371/0"],"_isfragment":["358/0"],"_receive":["360/0","421/2","799/3"],"_endowment":["360/0"],"_msg":["360/1"],"_payable":["360/0","361/2","368/2"],"_mutability":["361/0","367/2","368/0"],"_nonpayable":["361/2","368/2"],"_la":["362/0","365/0","370/0","380/0","381/0","382/0","383/0","465/0","646/0"],"_isconstructorfragment":["363/0"],"_inject":["364/1","794/1"],"_topic0":["364/1"],"_eventfragment":["365/0","366/0","376/1","388/0","393/0","408/0"],"_iseventfragment":["366/0"],"_pure":["367/2","368/2"],"_view":["367/2","368/2"],"_outputs":["369/0","853/7","866/5"],"_functionfragment":["370/0","371/0","389/0","392/0","413/0"],"_isfunctionfragment":["371/0"],"_unnamed":["373/1","374/1"],"_tuple":["374/0","375/3","379/0","379/1"],"_symbols":["374/0"],"_primitive":["375/1"],"_uint256":["375/2","410/2","416/2","418/3","500/0"],"_arrays":["375/3","378/0","378/1","513/0"],"_basetype":["375/0"],"_marked":["376/0"],"_applies":["376/1"],"_children":["377/0","579/0","588/1"],"_arraychildren":["377/0"],"_arraylength":["378/0"],"_components":["379/0","384/0","403/1","515/1","537/0","586/1","775/5","853/7"],"_outputtype":["381/0"],"_isparamtype":["383/0"],"_organize":["384/1"],"_component":["384/1","514/1","518/0","585/1"],"_decoding":["384/2","385/0","836/1"],"_convenient":["384/2"],"_framework":["384/3","797/0","853/7"],"_tool":["384/3","731/0","792/0","793/2"],"_find":["384/3","558/2"],"_abstracts":["385/0"],"_standards":["385/1"],"_organically":["385/1","789/0"],"_evolved":["385/1"],"_side":["385/1","464/1"],"_languages":["385/1","386/1","720/0","816/0","866/4","868/0"],"_adopted":["385/1"],"_remain":["385/1","866/0"],"_understand":["385/2","775/3","785/0","785/2"],"_agreed":["385/3"],"_expect":["385/3"],"_parsed":["386/1","507/0"],"_typing":["386/2","420/1"],"_referenced":["386/2"],"_getfunction":["392/0"],"_getevent":["393/0"],"_selector":["394/0","415/0","418/5","866/6","879/0"],"_getsighash":["394/0"],"_geteventtopic":["395/0"],"_encoded":["396/0","397/0","398/0","399/0","510/0","512/0","514/0","515/0","556/0","566/0","567/0","568/0","649/0","684/1"],"_concatenated":["396/0","471/0"],"_pass":["396/0","666/2","667/2","670/1","738/0","836/4"],"_encodedeploy":["396/0"],"_nibble":["397/1","422/1","471/0"],"_encodefiltertopics":["397/0"],"_encodefunctiondata":["398/0"],"_normally":["399/0"],"_authors":["399/1","847/4"],"_encodefunctionresult":["399/0"],"_decodeeventlog":["400/0"],"_inspecting":["401/1"],"_decodefunctiondata":["401/0"],"_decodefunctionresult":["402/0"],"_parselog":["404/0"],"_logdescription":["404/0","407/0","408/0","409/0","410/0","411/0"],"_parsetransaction":["405/0","696/0"],"_transactiondescription":["405/0","412/0","413/0","414/0","415/0","416/0","417/0"],"_positional":["406/0","406/1"],"_argument":["406/0","603/0","606/0","620/0","620/1","621/0","623/0","751/1","752/1","842/0"],"_additionally":["406/1","695/1","787/3"],"_reserved":["406/2","670/0"],"_collision":["406/3"],"_matched":["415/0"],"_ambiguous":["418/1","642/2","675/0"],"_normalized":["418/3","470/0","487/0","560/1","642/2","652/0"],"_uint":["418/3","418/4"],"_topichash":["418/4"],"_referred":["418/5"],"_xa9059cbb":["418/6"],"_checksumming":["419/0"],"_addresszero":["419/1","492/0"],"_nibbles":["420/0","468/0","469/0","487/0","492/0","493/0","637/1","638/1","737/0"],"_mixed":["420/0","420/1","422/1"],"_checksum":["420/1","420/2","421/0","422/0","422/1","592/0"],"_pattern":["420/1"],"_uppercase":["420/1"],"_lowercase":["420/1"],"_letters":["420/1","822/2","822/5"],"_risk":["420/1"],"_introduced":["420/1"],"_cut":["420/1"],"_paste":["420/1"],"_icap":["421/0","421/2","421/3","423/0"],"_early":["421/0","730/3","817/1"],"_introduce":["421/0"],"_banking":["421/0"],"_industry":["421/0"],"_iban":["421/0","421/1"],"_country":["421/0"],"_xe":["421/0"],"_encodes":["421/1","559/0"],"_fit":["421/1","647/1"],"_adapted":["421/1"],"_large":["421/1","461/7","594/3","844/1","866/4","876/2"],"_preferred":["421/1","850/0"],"_select":["421/1"],"_compatibly":["421/1"],"_general":["421/2","787/2","789/4","792/2","796/0","843/1"],"_longer":["421/2","481/1","486/1","792/2","855/1","876/2"],"_widely":["421/2"],"_anymore":["421/2"],"_geticapaddress":["421/3","423/0"],"_c":["421/0","619/0","623/0","624/0","625/0","627/0","628/0","629/0","657/0","659/0","665/0","669/0","751/0","809/0","834/0","840/0"],"_hexstring":["422/1","431/0","468/0","469/0","477/0","478/0","485/0","532/0"],"_invalidargument":["422/1","475/1","481/1","486/1"],"_supports":["423/1","462/3","768/0","802/2","806/1","807/1","808/1","810/1","812/2"],"_restrictions":["423/1"],"_icapaddress":["423/0"],"_isaddress":["424/0"],"_publicorprivatekey":["425/0"],"_compressed":["425/1","638/0","645/1","645/0","844/1"],"_derivation":["425/1","748/0","785/0"],"_computeaddress":["425/0"],"_ecdsa":["426/0"],"_digest":["426/0","547/0","548/0","549/0","550/0","554/0","639/0","644/1","644/0"],"_recoveraddress":["426/0"],"_create2":["428/0"],"_getcreate2address":["428/0"],"_salt":["428/0"],"_initcodehash":["428/0"],"_safely":["429/1","430/0","461/8","836/5"],"_mathematical":["429/1","447/0","461/8"],"_magnitude":["429/1"],"_take":["430/0","785/1","786/2","786/5","786/0"],"_ambiguously":["430/0"],"_numberish":["430/0","437/0","478/0","678/0","679/0","681/0"],"_bignumberish":["430/0","501/3","678/0","679/0","681/0"],"_byteslike":["432/0","467/0","479/0","482/0","514/1","680/0","690/0"],"_uint8array":["432/0","476/0","479/0","480/0","481/0","489/0","509/0","511/0","651/0","873/0","874/0"],"_bigint":["435/0"],"_environments":["435/0","867/6"],"_int":["435/0"],"_instances":["436/0","519/0","558/1","850/0","854/0"],"_abignumberish":["437/0","478/0"],"_othervalue":["439/0","440/0","441/0","450/0","451/0","452/0","453/0","454/0","525/0","526/0","527/0","528/0"],"_times":["441/0","527/0","710/0","772/1"],"_mul":["441/0","527/0"],"_div":["442/0","443/0","528/0"],"_divisor":["442/0","443/0","518/0"],"_remainder":["443/0"],"_mod":["443/0","537/2"],"_power":["444/0"],"_exponent":["444/0"],"_pow":["444/0"],"_absolute":["445/0","741/0"],"_abs":["445/0"],"_beyond":["446/0"],"_bitcount":["446/0"],"_least":["446/0","789/1","873/0","875/0"],"_significant":["446/0"],"_zero":["446/0","455/0","481/0","486/0","492/0","493/0","496/0","530/0","594/1","619/1","625/2","763/1","763/0"],"_mask":["446/0"],"_two":["447/0","463/1","498/0","658/2","695/1"],"_complement":["447/0","448/0","449/0"],"_elegant":["447/0"],"_width":["447/0","518/0","537/0","537/1","537/2","537/3","538/1","540/0"],"_while":["447/0","462/4","836/5","853/5","867/0"],"_efficiently":["447/0"],"_preserving":["447/0"],"_twos":["448/0","449/0"],"_bitwidth":["448/0","449/0"],"_fromtwos":["448/0"],"_totwos":["449/0"],"_eq":["450/0"],"_lt":["451/0"],"_le":["452/0"],"_lte":["452/0"],"_gt":["453/0"],"_ge":["454/0"],"_gte":["454/0"],"_iszero":["455/0","530/0"],"_greater":["456/1","666/1"],"_max":["456/1","500/0"],"_integer":["456/1","461/5"],"_min":["456/1","789/3"],"_tonumber":["456/0"],"_tostring":["457/0","533/0"],"_prefixed":["458/0","554/1","647/0"],"_tohexstring":["458/0","532/0"],"_isbignumber":["459/0"],"_couple":["460/0"],"_questions":["460/0"],"_come":["460/0"],"_frequently":["460/0","464/0","730/4","849/0"],"_problem":["461/0","775/3","789/4"],"_dealing":["461/0","462/2"],"_concept":["461/0"],"_currencies":["461/1"],"_broken":["461/1","462/6","786/6"],"_granularity":["461/1"],"_cents":["461/2"],"_dollar":["461/2"],"_ieee":["461/4"],"_double":["461/4"],"_precision":["461/4"],"_floating":["461/4","534/0"],"_holes":["461/5","797/3"],"_problematic":["461/5","464/1"],"_because":["461/5","463/0","663/0"],"_rounding":["461/5","534/1"],"_demonstrate":["461/6"],"_issue":["461/6","756/5","789/4","860/1","863/3","866/3","867/3","872/1"],"_consider":["461/6"],"_just":["461/0","594/0","667/2"],"_stored":["461/7","746/0"],"_manipulated":["461/7","799/1"],"_parseether":["461/8","508/0"],"_etherstring":["461/8"],"_formatether":["461/8","506/0"],"_representations":["461/8","667/0"],"_displayed":["461/8"],"_entered":["461/8"],"_handled":["461/8"],"_everyone":["462/0"],"_favourite":["462/0"],"_someone":["462/0","462/6"],"_becomes":["462/0","464/1","872/1"],"_identity":["462/0","546/0"],"_editor":["462/0"],"_vi":["462/0"],"_emacs":["462/0"],"_npm":["462/1","594/3"],"_biggest":["462/2"],"_differences":["462/2","863/2"],"_nature":["462/2"],"_capturing":["462/3"],"_immutability":["462/3"],"_protects":["462/3"],"_us":["462/3","464/0","867/4"],"_mistakes":["462/3"],"_myriad":["462/3"],"_second":["462/4","735/1"],"_rare":["462/4","667/1","692/3","853/2"],"_easier":["462/5","822/0","836/1","871/0"],"_swap":["462/5"],"_impacting":["462/5"],"_consumers":["462/5"],"_bn":["462/6","462/0","463/0"],"_greatest":["462/6"],"_denominator":["462/6"],"_replacing":["462/6","628/0"],"_anyone":["462/6"],"_depending":["462/6","730/5"],"_bigdecimal":["462/0"],"_elliptic":["463/0","693/0","694/0","695/0"],"_regardless":["463/1","629/3"],"_we":["463/1","623/0","647/1","647/2","789/4","842/1","842/2","866/3","867/0","867/4","872/0"],"_leverage":["463/1"],"_adding":["463/1","789/3","839/0","842/2"],"_mean":["463/1"],"_offering":["463/1"],"_saved":["463/2"],"_about":["463/2","628/2","775/3","787/0","856/0"],"_kb":["463/2","844/1"],"_size":["463/2","720/1","789/3"],"_separate":["463/2","876/2"],"_purposes":["463/2","537/5"],"_comes":["464/0","836/6"],"_desire":["464/0"],"_global":["464/0","596/0","734/2","854/1"],"_live":["464/1"],"_fact":["464/2"],"_plus":["464/3"],"_break":["464/3","792/2"],"_tries":["464/3"],"_logic":["464/3","501/0","741/2"],"_prototype":["464/4"],"_tomycustombignumber":["464/4"],"_globally":["464/4"],"_manipulation":["465/0"],"_typedarray":["466/0"],"_prefix":["469/0","513/0","664/0","669/0","669/1","672/0","673/0","674/0","737/0","792/2"],"_followed":["469/0","537/1"],"_insensitive":["469/1"],"_hexadecimal":["469/1"],"_co":["470/0"],"_ordinate":["470/0"],"_compact":["470/0","738/2","843/0"],"_recoveryparam":["470/0","472/2","642/2"],"_signaturelike":["472/0"],"_redundant":["472/0","734/2"],"_likewise":["472/2"],"_isbytes":["473/0"],"_isbyteslike":["474/0"],"_ishexstring":["475/0"],"_converts":["476/0","477/0","478/0","738/0"],"_datahexstringorarrayish":["476/0"],"_arrayish":["476/0","477/0"],"_uint8":["476/0","479/0","480/0","481/0","489/0","651/0","873/0"],"_hexstringorarrayish":["477/0"],"_hexlify":["477/0"],"_leading":["478/0","480/0","485/0"],"_zeros":["478/0","480/0","485/0"],"_hexvalue":["478/0"],"_concatenates":["479/0","482/0"],"_arrayofbyteslike":["479/0","482/0"],"_concat":["479/0","482/0"],"_abtyeslike":["480/0"],"_strip":["480/0","485/0"],"_stripzeros":["480/0"],"_abyteslike":["480/0","481/0","481/1","483/0","484/0","484/1","485/0","486/0","486/1","510/0","512/0","515/0","521/0","547/0","548/0","549/0","550/0","575/0","649/0","654/0","696/0"],"_prepended":["481/0"],"_already":["481/1","486/1","627/0","628/0","663/0","663/1","671/0","745/1","775/3","827/2"],"_pad":["481/0","486/0"],"_zeropad":["481/0"],"_hexconcat":["482/0"],"_hexdatalength":["483/0"],"_slice":["484/0","755/0"],"_endoffset":["484/0","484/1"],"_hexdataslice":["484/0"],"_hexstripzeros":["485/0"],"_hexzeropad":["486/0"],"_asignaturelike":["487/0","488/0"],"_concatenating":["487/0"],"_join":["487/0","717/0"],"_joinsignature":["487/0"],"_expanded":["488/0","784/1","843/1"],"_split":["488/0","653/1","716/0"],"_splitsignature":["488/0"],"_asignaturelikeorbyteslike":["488/0"],"_randombytes":["489/0","873/0","874/0"],"_shuffled":["490/0"],"_fisher":["490/0"],"_yates":["490/0"],"_shuffle":["490/0"],"_contants":["491/0"],"_commonly":["491/0","655/0"],"_hashzero":["493/0"],"_xi":["494/0"],"_ethersymbol":["494/0"],"_negativeone":["495/0"],"_weiperether":["499/0"],"_maxuint256":["500/0"],"_friendly":["501/0"],"_usually":["501/0","536/1","741/0","755/0","785/3"],"_machine":["501/0"],"_maths":["501/0"],"_prices":["501/1"],"_gwei":["501/1","628/2"],"_display":["501/0"],"_bitcoin":["502/3","502/4"],"_satoshi":["502/3","502/4"],"_grouped":["504/0"],"_digits":["504/0","505/0","507/0"],"_separated":["504/0","571/1"],"_commify":["504/0"],"_textdata":["509/0","511/0"],"_base58":["509/0","510/0"],"_uin8":["509/0","511/0"],"_uin8array":["509/0","511/0"],"_base64":["511/0","512/0"],"_recursive":["513/0","516/0","872/3"],"_nested":["513/0"],"_structures":["513/0","516/0","556/1"],"_structured":["514/0","515/0","810/0"],"_rlp":["514/0","515/0","684/1"],"_r":["514/0","515/0","601/0","602/0","614/0","616/0","617/0","618/0","619/0","620/0","621/0","623/0","626/0","627/0","628/0","629/0","632/0","633/0","664/0","666/0","667/0","668/0","670/0","732/0","805/0","806/0","807/0","808/0","810/0","834/0","872/0"],"_l":["514/0","515/0","613/0","619/0","620/0","624/0","628/0","629/0","667/0","739/0","742/0","751/0","802/0","803/0","804/0"],"_dataobject":["514/0","515/0"],"_recursively":["516/3","564/0","811/0"],"_nesting":["516/3"],"_xdead":["517/0"],"_xbeef":["517/0"],"_fixednumber":["518/0","519/0","519/1","520/0","521/0","522/0","523/0","524/0","525/0","526/0","527/0","528/0","529/0","530/0","531/0","532/0","533/0","534/0","535/0","536/1"],"_fractional":["518/0"],"_frombytes":["521/0"],"_permits":["522/1","846/0"],"_fromstring":["522/0"],"_fromvalue":["523/0"],"_fixedformat":["524/0","536/0","538/0","538/1","539/0","540/0","541/0","542/0"],"_fixedvalue":["525/0","526/0","527/0","528/0","529/0","531/0"],"_addunsafe":["525/0"],"_subunsafe":["526/0"],"_mulunsafe":["527/0"],"_divunsafe":["528/0"],"_round":["529/0"],"_toformat":["531/0"],"_approximate":["534/1"],"_float":["534/0"],"_tounsafefloat":["534/0"],"_isfixednumber":["535/0"],"_composed":["537/0","657/0","657/1","659/0"],"_three":["537/0"],"_ness":["537/0","539/0"],"_begins":["537/1","637/1","638/1","809/2"],"_ufixed":["537/1","537/5"],"_congruent":["537/2"],"_larger":["537/3"],"_fixed128x18":["537/5","538/0"],"_wide":["537/5","846/0"],"_fixed32x0":["537/5"],"_int32":["537/5"],"_ufixed32x0":["537/5"],"_uint32":["537/5"],"_shorthand":["537/5","543/0"],"_ufixed128x18":["537/5"],"_points":["541/0","652/0","695/1","789/2","867/4"],"_recreate":["542/0"],"_fixed128x80":["543/0"],"_hashing":["544/0","565/0","866/6"],"_algorithms":["544/0","565/0"],"_complex":["544/0","775/1"],"_usages":["544/0"],"_facilitate":["544/0"],"_cryptographic":["545/0"],"_family":["545/0"],"_computes":["546/0","554/0","640/2","645/0","697/0","785/3"],"_keccak256":["546/0","547/0","567/0","684/1","865/0"],"_ripemd":["548/0"],"_ripemd160":["548/0"],"_sha2":["549/0","550/0","552/0","553/0","568/0"],"_sha256":["549/0","552/0","568/0"],"_sha512":["550/0","553/0"],"_hmac":["551/0"],"_algorithm":["551/0","552/0","553/0","565/1","785/3","786/0","786/5","786/7","788/1","881/0"],"_computehmac":["551/0"],"_supportedalgorithm":["552/0","553/0"],"_personal":["554/0","554/1"],"_x19ethereum":["554/1"],"_hashmessage":["554/0"],"_namehash":["555/0","881/0"],"_typeddataencoder":["556/0","557/2","558/0","559/0","560/0","561/0","562/0","563/0","564/0"],"_members":["556/1"],"_mapping":["556/3"],"_descriptions":["556/3"],"_eip712domain":["556/4"],"_unless":["556/4","682/1","775/2"],"_encoder":["556/0","558/0","559/0","560/0","561/0","562/0","563/0","564/0"],"_exported":["557/2","557/0","866/1"],"_below":["558/2","611/0","730/0","787/0","798/1"],"_hashed":["559/0","563/0","655/0"],"_eth":["560/0"],"_getpayload":["560/0"],"_constructs":["561/0"],"_directed":["561/0"],"_acyclic":["561/0"],"_graph":["561/0"],"_primarytype":["561/0"],"_payloads":["561/0"],"_primary":["561/0"],"_getprimarytype":["561/0"],"_hashdomain":["563/0"],"_leaf":["564/0"],"_replacedwith":["564/0"],"_resolvenames":["564/0"],"_packencoded":["565/0"],"_tightly":["565/0","565/1"],"_packed":["565/0","566/0","567/0","568/0","882/0"],"_packing":["565/1"],"_respective":["566/0","567/0","568/0"],"_pack":["566/0"],"_soliditypack":["566/0"],"_soliditykeccak256":["567/0"],"_soliditysha256":["568/0"],"_bip32":["569/0"],"_bip":["569/0","590/0","591/0","844/0","880/0"],"_whatnot":["569/0"],"_defaultpath":["570/0"],"_words":["571/1","647/0","717/0","718/0"],"_locale":["571/1","573/0","713/0","716/0","717/0","857/0"],"_hdnode":["574/0","575/0","576/0","576/1","577/0","578/0","579/0","580/0","581/0","582/0","583/0","584/0","585/0","586/0","587/0","588/0","589/0"],"_seed":["575/0","590/0","872/2","872/3","873/0","874/0","875/0"],"_fromseed":["575/0"],"_extendedkey":["576/0","576/1","587/0"],"_neutered":["576/1"],"_able":["576/1","786/5"],"_fromextendedkey":["576/0","587/1"],"_compresses":["578/0"],"_fingerprint":["579/0","580/0","580/1"],"_together":["579/0","717/0","779/3"],"_collisions":["579/0"],"_occur":["579/0","619/1","712/0","730/4","853/4"],"_software":["579/0","847/1","847/2","847/3","847/4"],"_parentfingerprint":["580/0"],"_ec":["584/0"],"_multiply":["584/0"],"_ability":["584/0","840/2"],"_derive":["584/0","589/0"],"_hardened":["584/0","588/1"],"_chaincode":["584/0"],"_last":["585/1","815/1"],"_depth":["586/0"],"_serialization":["587/1","697/2"],"_serializing":["587/1"],"_deserializing":["587/1"],"_preserved":["588/0"],"_leak":["588/1","775/1"],"_derived":["588/1"],"_neuter":["588/0"],"_deriving":["589/0"],"_derivepath":["589/0"],"_mnemonictoseed":["590/0"],"_mnemonictoentropy":["591/0"],"_testing":["592/0","789/3","866/0","871/0","876/1"],"_isvalidmnemonic":["592/0"],"_extensively":["593/0"],"_few":["594/0","733/0","756/8","786/5","789/2","790/0"],"_logging":["594/0","611/0"],"_standardize":["594/0"],"_facilities":["594/0"],"_logger":["594/1","595/0","596/0","597/0","598/0","599/0","601/0","602/0","603/0","605/0","606/0","607/0","608/0","609/0","610/0","611/0","613/0","614/0","615/0","616/0","617/0","618/0","619/0","620/0","621/0","622/0","623/0","624/0","625/0","626/0","627/0","628/0","629/0","630/0","631/0","632/0","633/0","634/0","854/0","854/1"],"_dependencies":["594/1","789/3","839/1","839/0","844/1","846/0"],"_light":["594/1"],"_censorship":["594/2","600/0","610/0"],"_relies":["594/2"],"_bundled":["594/3"],"_bundling":["594/4"],"_properly":["594/4","872/3"],"_singleton":["596/0"],"_globallogger":["596/0"],"_info":["598/0","631/0","698/0","764/0"],"_warnings":["599/0","631/0","632/0","740/1","740/0","775/5"],"_warn":["599/0"],"_honor":["600/0"],"_detecting":["600/0"],"_processing":["600/0","698/0"],"_rejected":["601/1","663/0"],"_makeerror":["601/0"],"_u":["601/0","602/0","615/0","616/0","617/0","618/0","619/0","620/0","621/0","623/0","625/0","628/0","629/0","630/0","662/0","665/0","666/0","668/0","669/0","670/0","671/0","732/0","739/0","806/0"],"_k":["601/0","602/0","616/0","626/0","659/0","660/0","739/0"],"_w":["601/0","602/0","616/0","622/0","626/0","632/0"],"_throwerror":["602/0","766/0"],"_throwargumenterror":["603/0"],"_actions":["604/0"],"_validation":["604/0","626/0"],"_kind":["605/0","607/0","847/3"],"_checknew":["605/0","607/0"],"_ensuring":["605/1"],"_checkabstract":["605/0"],"_expectedcount":["606/0"],"_unexpected":["606/0","623/0","669/0","789/3"],"_checkargumentcount":["606/0"],"_callers":["607/1"],"_correctly":["608/0","653/0","718/0","799/3"],"_functioning":["608/0"],"_normalize":["608/0"],"_unsupported":["608/1","617/0","775/5"],"_checknormalize":["608/0"],"_fault":["609/0","619/0"],"_uint53":["609/0"],"_checksafeuint53":["609/0"],"_preventing":["610/0"],"_uncensored":["610/0"],"_prevents":["610/1"],"_leaking":["610/1"],"_masking":["610/1"],"_making":["610/2","735/0","750/0","791/0","794/1"],"_difficult":["610/2","748/0","872/1"],"_setcensorship":["610/0"],"_censor":["610/0"],"_permanent":["610/0"],"_suppress":["611/0"],"_particular":["611/0","847/3"],"_setloglevel":["611/0"],"_loglevel":["611/0"],"_codes":["612/0"],"_implemented":["613/0"],"_communicating":["614/0"],"_occurred":["615/0"],"_cause":["618/0","756/5","775/1","775/5"],"_buffer":["618/0"],"_f":["618/0","619/0","625/0","631/0","634/0","657/0","658/0","659/0","660/0","662/0","664/0","666/0","671/0","732/0","739/0","810/0"],"_overrun":["618/0","668/0"],"_done":["619/0","793/2","856/0"],"_overflow":["619/1"],"_arithmetic":["619/1"],"_underflow":["619/1"],"_division":["619/1"],"_sensitive":["620/2"],"_redacted":["620/2"],"_g":["620/0","621/0","622/0","623/0","629/0","630/0","632/0","665/0","666/0","667/0","670/0","739/0","806/0","872/0"],"_x":["623/0","624/0","627/0","664/0","669/0"],"_getter":["624/0"],"_resulted":["624/0"],"_revert":["624/0","733/4"],"_attempting":["625/0","629/3","711/0","712/0"],"_costs":["625/0"],"_intrinsic":["625/1","625/2"],"_expired":["627/0"],"_yet":["628/0","756/4"],"_bribe":["628/1"],"_prefer":["628/1"],"_replacement":["628/2","628/0","674/0"],"_underpriced":["628/0"],"_unable":["629/1"],"_unwilling":["629/1"],"_predict":["629/1"],"_situation":["629/2"],"_unpredictable":["629/0"],"_levels":["630/0","631/0","632/0","633/0","634/0"],"_informational":["631/0"],"_signingkey":["635/0","636/0","637/0","638/0","639/0","640/0","641/0"],"_x04":["637/1","644/1"],"_x02":["638/1"],"_x03":["638/1"],"_compressedpublickey":["638/0"],"_signdigest":["639/0"],"_ecdh":["640/0"],"_otherkey":["640/0","640/1"],"_practice":["640/2","775/4","787/0","831/0"],"_symmetric":["640/2"],"_computesharedsecret":["640/0"],"_anobject":["641/0"],"_issigningkey":["641/0"],"_producing":["642/0"],"_canonical":["642/1","659/0","659/1","660/0","661/0"],"_completely":["642/2","786/4","789/1","844/1"],"_verifymessage":["642/0"],"_verifytypeddata":["643/0"],"_gave":["644/1"],"_recoverpublickey":["644/0"],"_compressing":["645/0"],"_computepublickey":["645/0"],"_deal":["647/1","847/1"],"_prefixing":["647/1"],"_terminate":["647/1","817/1"],"_word":["647/1","647/2","714/0","715/0","716/0","844/0"],"_termination":["647/2"],"_bytes32string":["647/0"],"_fewer":["648/0","730/6"],"_international":["648/0"],"_represented":["649/0","654/0"],"_parsebytes32string":["649/0"],"_exceeds":["650/1"],"_formatbytes32string":["650/0"],"_normalizing":["651/0","655/0"],"_unicodenormalizationform":["651/0","652/0","655/0","656/0","657/0","658/0","659/0","660/0"],"_toutf8bytes":["651/0"],"_codepoints":["652/0","657/1","658/1","658/2","662/0","663/0","666/0"],"_toutf8codepoints":["652/0"],"_splits":["653/0"],"_perceived":["653/0"],"_character":["653/0","657/1","658/1","658/2","667/0","667/1","674/0","716/0"],"_codepoint":["653/0","657/2","658/2","659/2","663/0","666/0","666/1","667/2","670/0"],"_accounting":["653/0"],"_surrogate":["653/0","653/1","670/0","670/1","672/0"],"_pairs":["653/0","653/1","670/0","672/0","739/0"],"_confused":["653/1"],"_destroys":["653/1"],"_splitting":["653/1"],"_codeunit":["653/1"],"_onerror":["654/1","654/0"],"_toutf8string":["654/0"],"_forms":["655/0","877/0"],"_unicode":["655/0","656/0","657/0","658/0","659/0","660/0"],"_normalization":["655/0","656/0","657/0","658/0","659/0","660/0"],"_eacute":["657/2","658/2"],"_x00e9":["657/2"],"_nfc":["657/0"],"_decomposed":["658/0","660/0"],"_compose":["658/1"],"_x0065":["658/2"],"_letter":["658/2","659/2","822/2","822/5"],"_x0301":["658/2"],"_special":["658/2","840/2","853/7","855/1"],"_diacritic":["658/2"],"_acute":["658/2"],"_accent":["658/2"],"_nfd":["658/0"],"_equivalence":["659/0","660/0","661/0"],"_folds":["659/1"],"_syntactic":["659/1"],"_semantic":["659/1"],"_roman":["659/2"],"_numeral":["659/2"],"_x2160":["659/2"],"_folded":["659/2","661/0"],"_capital":["659/2"],"_x0049":["659/2"],"_nfkc":["659/0","660/1"],"_nfkd":["660/0"],"_thus":["661/0"],"_achieve":["661/0"],"_homoglyph":["661/0"],"_attacks":["661/0","692/1"],"_converting":["662/0"],"_possibility":["662/0"],"_sequences":["662/0","667/0","667/1","672/0","673/0","674/0"],"_handling":["662/1","662/0","671/0","775/0","855/1"],"_encountered":["663/0","664/0","801/3"],"_badcodepoint":["663/0"],"_skip":["663/1","794/1"],"_consumed":["663/1","688/2","752/1"],"_errorfunction":["663/0"],"_bad":["663/0","664/0","669/0","669/1"],"_sequence":["664/0","665/0","668/0","669/0","672/0"],"_utf8errorreason":["664/0","665/0","666/0","667/0","668/0","669/0","670/0"],"_begun":["665/0"],"_did":["665/0"],"_continuation":["665/0","665/1","669/0","673/0","674/0","817/2"],"_ofset":["665/1"],"_continue":["665/0","669/0","842/2"],"_x10ffff":["666/1"],"_badcountpoint":["666/2","667/2","670/1"],"_variable":["667/0","817/2","822/2","822/4","822/5"],"_overlong":["667/0","667/1","672/0","673/0"],"_distinguished":["667/0"],"_formed":["667/0"],"_circumvent":["667/1"],"_produced":["667/1"],"_lazy":["667/1"],"_terminating":["667/1"],"_char":["667/1"],"_arrived":["667/2"],"_through":["667/2","748/0","769/3","794/0"],"_remaining":["668/0","787/2","790/1"],"_differently":["669/0"],"_want":["669/1","872/0"],"_trap":["669/1"],"_f16":["670/0"],"_utf16":["670/0"],"_funcs":["672/0","673/0","674/0"],"_utf8errorfuncs":["672/0","673/0","674/0"],"_consuming":["673/0","674/0"],"_final":["673/0","738/0"],"_permit":["673/0","847/1"],"_ignore":["673/0","740/0","836/5"],"_replace":["674/0"],"_fffd":["674/1"],"_flexible":["675/0"],"_disabled":["682/1","883/0"],"_identifier":["684/0"],"_order":["687/1","771/0","773/0","836/3"],"_replayability":["687/1"],"_unused":["688/2"],"_refunded":["688/2"],"_complete":["688/2","756/7","756/9","843/0","844/1"],"_effects":["688/2"],"_replay":["692/1","692/3"],"_unintended":["692/2"],"_almost":["692/3","867/1"],"_portion":["693/0","694/0","695/0","806/1"],"_curve":["693/0","694/0","695/0"],"_accurately":["693/1"],"_coordinate":["693/1","695/1"],"_refine":["695/1"],"_parses":["696/0"],"_present":["697/1","769/1","770/0","811/0","848/0","866/3"],"_explicitly":["697/4"],"_implicitly":["697/4"],"_mismatch":["697/5"],"_serializetransaction":["697/0"],"_fetch":["698/0","835/0"],"_content":["698/0","820/0","820/1","822/0","822/1","822/3"],"_urlorconnectioninfo":["698/0"],"_body":["698/0","801/1","801/2","801/3","802/2","803/2","804/1","805/0","805/1","806/1","807/1","808/1","809/1","810/0","811/0","811/1","812/2","813/1","817/0","817/2"],"_processfun":["698/0"],"_fetchjson":["698/0"],"_processfunc":["698/0"],"_repeatedly":["699/0"],"_pollfunc":["699/0","711/0","712/0"],"_polloptions":["699/0"],"_undefined":["699/0","710/0"],"_poll":["699/0","712/0"],"_authentication":["701/0","701/2","702/0","702/2","703/0"],"_insecure":["703/0"],"_allowinsecureauthentication":["703/0"],"_rejecting":["704/0"],"_headers":["705/0"],"_allowed":["706/0","751/1","756/6"],"_elapse":["706/0"],"_triggering":["706/0"],"_exponential":["707/0","708/0","709/0"],"_backoff":["707/0","708/0","709/0"],"_floor":["707/0"],"_ceiling":["708/0"],"_interval":["709/0"],"_calculation":["709/0"],"_retry":["710/0"],"_retrylimit":["710/0"],"_polling":["711/0","712/0"],"_onceblock":["711/0"],"_oncepoll":["712/0"],"_getword":["714/0"],"_getwordindex":["715/0"],"_individual":["716/0","730/1"],"_joining":["717/0"],"_map":["718/0"],"_directions":["718/0"],"_lists":["718/0","813/0","813/1"],"_validate":["718/1","756/8","769/4"],"_wordlists":["718/0","719/0","720/0","721/0","722/0","723/0","724/0","725/0","726/0","727/0","728/0","729/0"],"_overriding":["719/0"],"_registered":["719/0"],"_increases":["720/1"],"_dist":["720/1","789/3"],"_files":["720/1","811/1","815/0","840/0","844/1","847/1","866/1","868/0"],"_czech":["721/0"],"_cz":["721/0"],"_en":["722/0"],"_spanish":["723/0"],"_es":["723/0","867/2"],"_french":["724/0"],"_fr":["724/0"],"_italian":["725/0","844/0"],"_japanese":["726/0","844/0"],"_ja":["726/0"],"_korean":["727/0","844/0"],"_ko":["727/0"],"_chinese":["728/0","729/0","844/0"],"_zh":["728/0","729/0"],"_cn":["728/0"],"_traditional":["729/0","844/0"],"_tw":["729/0"],"_tl":["730/0"],"_dr":["730/0"],"_ndash":["730/0"],"_improve":["730/0"],"_track":["730/1"],"_works":["730/2"],"_box":["730/2","807/0","808/0"],"_community":["730/3"],"_resource":["730/3"],"_prototyping":["730/3","831/1"],"_aggressively":["730/4"],"_retries":["730/4","730/6"],"_slower":["730/4"],"_tier":["730/5"],"_advantages":["730/5"],"_rate":["730/6","731/4","732/4","733/4"],"_concurrent":["730/6"],"_faster":["730/6","786/7","787/2","788/2","794/1"],"_timeouts":["730/6"],"_metric":["730/6"],"_tuning":["730/6"],"_customer":["730/6","731/4","732/4","733/4","734/2"],"_archive":["730/6","732/4"],"_explorer":["731/0"],"_developer":["731/0","787/1"],"_building":["731/0","790/0","793/1","793/0","794/0","795/1","815/2","815/4"],"_extensive":["731/1","844/1"],"_benefits":["731/3","732/3","733/3","734/1"],"_reliable":["732/0","733/0","866/0"],"_makes":["732/1","748/0","787/2","787/3","836/1","868/0"],"_tools":["732/1"],"_versatile":["732/1"],"_upgrade":["732/4"],"_years":["733/0"],"_assist":["733/1"],"_metadata":["733/4","793/2"],"_pocket":["734/0"],"_decentralized":["734/2"],"_stake":["734/2"],"_opposed":["734/2"],"_paying":["734/2"],"_monthly":["734/2"],"_incentivized":["734/2"],"_cryptoeconomic":["734/2"],"_incentives":["734/2"],"_verifies":["735/0"],"_maximize":["735/2"],"_deployable":["736/0"],"_mnemonics":["736/0","743/0","747/0","748/0"],"_bin":["737/0"],"_passes":["738/0","748/0"],"_stage":["738/0"],"_approximating":["738/0"],"_portions":["738/1","847/2"],"_massaged":["738/1"],"_tweaked":["738/1"],"_stabilizes":["738/1"],"_destinations":["738/2"],"_scripting":["739/0","746/0"],"_somekey":["739/0"],"_define":["739/0"],"_y":["739/0"],"_flag":["739/0","741/2","770/0"],"_enabled":["740/1","883/0"],"_loops":["741/0"],"_flow":["741/0"],"_byt":["741/2"],"_independent":["741/2"],"_moved":["741/2","849/0","850/1","854/0","854/1"],"_incur":["741/3"],"_though":["741/3","831/1"],"_pic":["741/0"],"_option":["742/1","756/5","756/6","768/0","772/0","772/1"],"_usual":["742/2"],"_impacts":["742/2"],"_shows":["743/0","754/0","765/0","766/0","863/2"],"_sandbox":["745/0"],"_learning":["745/0"],"_managing":["745/0"],"_repl":["745/1"],"_eval":["746/0"],"_scripts":["746/0","848/1","877/1"],"_commands":["746/0"],"_variables":["746/0","810/1","815/5","822/1","822/3","822/0"],"_phrases":["747/0","844/0","857/0"],"_prompt":["747/2"],"_decrypt":["747/2","748/0","788/0"],"_xxx":["748/0","749/0"],"_scrypt":["748/0","785/3","788/1"],"_slow":["748/0","785/1"],"_brute":["748/0","786/1"],"_force":["748/0","786/1"],"_attack":["748/0","782/0","786/1"],"_far":["748/0"],"_passwords":["748/0","786/4","786/5","786/6"],"_hence":["749/0"],"_cli":["750/0","751/0","751/1","754/0","756/0","756/2","756/5","769/4"],"_handles":["751/0"],"_arguments":["751/0","751/1","753/1","756/8","769/0","769/3","769/4","789/3","839/0"],"_instantiates":["751/0"],"_plugin":["751/0","751/1","752/0","752/1","753/0","756/0","756/3","756/4","756/5","757/0","758/0","759/0","760/0","761/0","762/0","763/0","764/0","765/0","766/0","767/0","768/0"],"_standalone":["751/1"],"_exactly":["751/1","809/1","873/1"],"_addplugin":["752/0","753/1"],"_pluginclass":["752/0","753/0"],"_dedicated":["753/0"],"_conjunction":["753/1"],"_setplugin":["753/0"],"_screen":["754/0","756/2","765/0","767/0","768/0"],"_terminates":["754/0"],"_show":["754/0"],"_showusage":["754/0"],"_argv":["755/0"],"_manages":["756/0"],"_phases":["756/0"],"_requested":["756/2"],"_gethelp":["756/2","767/0"],"_getoptionhelp":["756/2","768/0"],"_prepareoptions":["756/3","756/4","756/7","769/4"],"_understands":["756/5"],"_bail":["756/5"],"_preparearguments":["756/7","756/9"],"_sense":["756/8"],"_allowzero":["763/1","763/0"],"_raised":["763/1"],"_dumps":["764/0"],"_contents":["764/0","802/1","803/1","810/1","811/0"],"_console":["764/0","799/3"],"_header":["764/0"],"_nicely":["764/0"],"_style":["764/0","792/1","810/2","821/0","829/0"],"_plugins":["764/1"],"_dump":["764/0","793/2"],"_stops":["765/0","766/0"],"_throwusageerror":["765/0"],"_subclass":["767/0","768/0"],"_argparser":["769/0","769/3","769/4","770/0","771/0","772/0","773/0"],"_arg":["769/0","770/0","771/0","772/0","773/0"],"_parser":["769/0","770/0","771/0","772/0","773/0"],"_yes":["769/1"],"_consumes":["769/4","817/0","822/4"],"_leaving":["769/4"],"_behind":["769/4","867/6"],"_prepareargs":["769/4"],"_consumeflag":["770/0"],"_consumemultioptions":["771/0"],"_usageerror":["772/1"],"_consumeoption":["772/0"],"_consumeoptions":["773/0"],"_incredibly":["775/1"],"_slight":["775/1"],"_seem":["775/1","867/4"],"_confusing":["775/1"],"_worst":["775/1"],"_loss":["775/1"],"_misrepresent":["775/1"],"_action":["775/1","847/4","866/2"],"_luckily":["775/2"],"_tricked":["775/2"],"_mistake":["775/2"],"_mainly":["775/3","848/1"],"_worry":["775/3"],"_surrounding":["775/3","819/0"],"_page":["775/3","775/4","793/2","801/0","802/3"],"_reloading":["775/3"],"_refresh":["775/4"],"_reset":["775/5","812/1"],"_banners":["775/5"],"_accomplished":["775/6"],"_hog":["778/0"],"_lightly":["779/1"],"_refers":["779/2"],"_ed":["779/3","779/7"],"_happens":["781/0"],"_retain":["781/0","848/1"],"_things":["781/0","789/1","833/1","837/0"],"_vectors":["782/0"],"_somewhat":["783/0","789/0"],"_bid":["783/0"],"_willing":["783/0","789/1"],"_brief":["784/0"],"_aspects":["784/0","876/0"],"_blockchains":["784/0"],"_aware":["784/0"],"_sparse":["784/1"],"_moment":["784/1"],"_goes":["784/1","788/2"],"_basics":["784/0"],"_technique":["785/0"],"_implications":["785/0"],"_people":["785/1","867/7"],"_concerned":["785/1"],"_encrypting":["785/1"],"_decrypting":["785/1","787/3"],"_intentional":["785/2"],"_stronger":["785/2"],"_cpu":["785/3","786/0"],"_pseudo":["785/3"],"_series":["785/3"],"_goal":["786/0"],"_computer":["786/0","786/4"],"_scale":["786/1"],"_attacker":["786/1","786/3","786/7"],"_computers":["786/1","788/2"],"_seconds":["786/2","786/3","786/4","786/5"],"_proceed":["786/2"],"_know":["786/3","836/3","848/2"],"_try":["786/4","792/2","867/0"],"_guessing":["786/4"],"_million":["786/4","786/5"],"_tied":["786/4"],"_days":["786/4"],"_instantly":["786/5"],"_period":["786/6"],"_legitimate":["786/7"],"_reducing":["787/0"],"_better":["787/0","831/0","867/1"],"_feel":["787/0","787/2","787/3","867/3"],"_waiting":["787/0"],"_encryption":["787/1"],"_incorporate":["787/1"],"_periodically":["787/1"],"_indication":["787/1","787/2"],"_percent":["787/1"],"_comfortable":["787/2"],"_clear":["787/2"],"_needlessly":["787/3","867/7"],"_wasted":["787/3"],"_mitigating":["787/0"],"_doing":["788/0"],"_tuned":["788/1","788/2"],"_main":["788/2","853/4"],"_purpose":["788/2","792/0","843/1","847/3"],"_arounds":["788/0"],"_something":["789/0","842/1"],"_ve":["789/0"],"_written":["789/0","792/0","866/4"],"_necessity":["789/0"],"_grown":["789/0"],"_good":["789/1"],"_welcome":["789/1","789/2"],"_criticism":["789/1"],"_am":["789/1"],"_my":["789/1"],"_changed":["789/1","848/0","851/0","851/2","852/0"],"_pull":["789/2","789/4","842/0"],"_backwards":["789/3","842/0"],"_compatibility":["789/3"],"_breaking":["789/3"],"_convincing":["789/3","839/0"],"_aims":["789/3","843/0","848/1"],"_lean":["789/3"],"_eye":["789/3"],"_test":["789/3","844/1","866/1","866/3","866/4","866/5","866/6","867/4","868/0","868/1","869/0","870/1","870/0","871/0","872/0","876/0","876/1","876/2","878/0","881/0"],"_me":["789/3","848/2"],"_migration":["789/3","848/0","858/0","859/0"],"_overly":["789/3"],"_complicated":["789/3"],"_beginning":["789/4"],"_discussion":["789/4"],"_figure":["789/4"],"_contributing":["789/0"],"_hacking":["789/0","837/0"],"_modify":["790/0","847/1"],"_steps":["790/0","793/0"],"_involved":["790/0"],"_setting":["790/0"],"_monorepo":["790/1"],"_install":["790/1","799/2","868/0"],"_repo":["790/1"],"_documents":["792/0"],"_flatworm":["792/0","792/2","800/0"],"_generation":["792/0"],"_writing":["792/0"],"_guide":["792/1","848/2","858/0","859/0"],"_coming":["792/1","844/0"],"_lines":["792/2","815/5","817/3","822/4"],"_avoid":["792/2"],"_inline":["792/2"],"_externallinks":["792/2"],"_anchor":["792/2"],"_justified":["792/2"],"_symlinks":["792/2"],"_aim":["792/2"],"_xonsistency":["792/2"],"_look":["792/2","835/0","867/6"],"_build":["793/0","794/1","867/4"],"_docs":["793/1","795/0","795/1","800/0","800/1"],"_html":["793/2"],"_pages":["793/2"],"_linking":["793/2","845/0"],"_anchors":["793/2"],"_readme":["793/2"],"_md":["793/2"],"_organized":["793/2"],"_browsable":["793/2"],"_linkable":["793/2"],"_github":["793/2","866/2","867/3","877/1"],"_ingestion":["793/2"],"_latex":["793/2"],"_pdf":["793/2"],"_samples":["794/0","814/0"],"_vm":["794/0"],"_typos":["794/0"],"_injected":["794/0"],"_headache":["794/1"],"_step":["794/1"],"_preview":["795/0"],"_locally":["795/0"],"_folder":["795/0","823/0"],"_built":["795/0"],"_caveats":["795/1"],"_apply":["795/1"],"_flushing":["795/1"],"_caches":["795/1"],"_previewing":["795/0"],"_grow":["796/0"],"_snippets":["796/0"],"_cookbook":["796/0","798/1"],"_react":["797/0","797/1","798/0","799/0","799/2","867/4"],"_native":["797/0","797/1","798/0","799/0","799/2"],"_forks":["797/0"],"_expo":["797/0","867/4"],"_javascriptcore":["797/1"],"_webkit":["797/1"],"_dom":["797/1"],"_shims":["797/3","798/0","799/2"],"_ilk":["797/0"],"_shim":["798/0"],"_reactnative":["798/1"],"_instructions":["798/1"],"_installing":["798/1","798/2","798/0","830/0"],"_restart":["798/2"],"_packager":["798/2"],"_company":["798/2"],"_stolen":["799/1"],"_worked":["799/3"],"_regarding":["799/3"],"_rendering":["800/0"],"_engine":["800/0"],"_formatting":["800/0"],"_documenting":["800/0"],"_inspiration":["800/1"],"_came":["800/1"],"_sphinx":["800/1"],"_directive":["801/1","812/0","814/0","817/0","817/1","822/1","824/0","825/0","827/0","827/2","828/0","828/1","829/0"],"_extensions":["801/1","802/4","803/3","804/2","806/2","809/3","810/2"],"_directives":["801/2"],"_markdown":["801/2","802/2","803/2","804/1","805/1","806/1","807/1","808/1","809/1","810/1","811/1","812/2","813/0","824/1","824/0","827/1","827/0"],"_continues":["801/3"],"_title":["802/0","803/0","803/2","804/0","804/1","805/1","813/1"],"_h1":["802/0"],"_font":["802/0","803/0","804/0"],"_linked":["802/1","803/1","828/0"],"_table":["802/1","803/1","810/0","811/0","817/0","817/1","821/0","822/0","822/1","822/3","822/4","829/0"],"_dividing":["802/1","803/1"],"_drawn":["802/1","803/1"],"_inherit":["802/4","803/3","804/2","824/0","827/2"],"_nav":["802/4","826/0"],"_subsection":["803/0"],"_h2":["803/0"],"_subsections":["803/1","811/0"],"_heading":["804/0"],"_h3":["804/0"],"_term":["805/0"],"_indented":["805/0","812/1"],"_placed":["807/0","808/0","823/0"],"_blue":["807/0"],"_bordered":["807/0","808/0"],"_draw":["807/0","808/0"],"_attention":["807/0","808/0"],"_banner":["807/0","808/0"],"_orange":["808/0"],"_escaped":["809/2"],"_lang":["809/3","816/0","825/0"],"_caption":["809/0"],"_cell":["810/1","818/0","819/0","820/1"],"_footer":["810/0"],"_toc":["811/0"],"_injects":["811/0"],"_loading":["811/0"],"_loads":["811/0"],"_interpreted":["811/1"],"_directories":["811/1"],"_terminated":["812/0"],"_bodies":["812/1"],"_indentation":["812/1"],"_flexibility":["813/0"],"_dialects":["813/0"],"_bold":["813/0"],"_italic":["813/0"],"_underlined":["813/0"],"_monospaced":["813/0"],"_superscript":["813/0"],"_strike":["813/0"],"_supporting":["813/0"],"_rendered":["813/1"],"_monospace":["814/0"],"_substitution":["815/0"],"_bare":["815/1","815/3"],"_statement":["815/1"],"_hide":["815/5"],"_setup":["815/5"],"_java":["815/0"],"_extension":["816/0","821/0","827/2","833/0","870/1"],"_row":["817/2","818/0","820/1","820/0","822/4"],"_declaration":["817/2","822/4"],"_blank":["817/3"],"_gap":["818/0"],"_alignment":["818/0","819/0"],"_column":["818/0","820/0"],"_spanning":["818/0","820/0"],"_columns":["820/0","820/1"],"_appearance":["821/0"],"_styles":["821/0"],"_layout":["822/0"],"_express":["822/0","847/3"],"_uneven":["822/0"],"_separately":["822/1"],"_repeated":["822/3"],"_declared":["822/4"],"_consist":["822/5"],"_z0":["822/7"],"_highlighted":["825/0"],"_evaluated":["825/1"],"_breadcrumbs":["826/0"],"_getsourceurl":["828/0"],"_import":["830/0","844/0","867/6","868/0"],"_under":["830/0","839/2","846/0"],"_ethersproject":["830/0","868/0"],"_organization":["830/0"],"_umbrella":["830/0","849/0"],"_started":["830/0"],"_webserver":["831/0"],"_serve":["831/0"],"_yourself":["831/0"],"_demos":["831/1"],"_our":["831/1"],"_cdn":["831/1"],"_terminology":["832/0"],"_quickest":["833/0"],"_experiment":["833/0"],"_holds":["833/1","834/4"],"_typically":["834/3"],"_thing":["834/4"],"_historic":["835/0"],"_lives":["836/0"],"_mapped":["836/1"],"_familiar":["836/2"],"_databases":["836/2"],"_relational":["836/2"],"_mapper":["836/2"],"_orm":["836/2"],"_communicate":["836/3"],"_don":["836/5","867/7"],"_smaller":["836/5"],"_subset":["836/5"],"_vyper":["836/6"],"_dependency":["839/0"],"_mit":["839/1","839/2","841/0","844/1","846/0","847/0"],"_licensed":["839/1"],"_cc0":["839/1"],"_contributions":["839/2"],"_license":["839/2","841/0","844/1","846/0","847/0"],"_printable":["840/0"],"_ascii":["840/0","840/2"],"_bu":["840/1"],"_transmission":["840/2"],"_servers":["840/2"],"_proxies":["840/2"],"_mangle":["840/2"],"_editors":["840/2"],"_platforms":["840/2","867/0"],"_terminals":["840/2"],"_elegantly":["840/2"],"_keyboards":["840/2"],"_devices":["840/2"],"_administrative":["840/2"],"_priviledges":["840/2"],"_perpetuity":["842/1"],"_obscure":["842/2"],"_platform":["842/2"],"_dot":["842/2"],"_carries":["842/2"],"_implication":["842/2"],"_date":["842/2","845/0"],"_versions":["842/2","845/0","858/0"],"_released":["842/2"],"_considerations":["842/0"],"_ecosystem":["843/0"],"_originally":["843/1"],"_io":["843/1"],"_sound":["844/0"],"_export":["844/0"],"_crowdsale":["844/0"],"_backup":["844/0"],"_soon":["844/0"],"_abiv2":["844/0","876/2"],"_citizens":["844/1"],"_tiny":["844/1"],"_maintained":["844/1"],"_typescript":["844/1","869/0","871/0"],"_open":["844/1"],"_kept":["845/0"],"_variety":["846/0"],"_copyright":["846/0","847/0","847/2","847/4"],"_richard":["847/0"],"_moore":["847/0"],"_permission":["847/1","847/2"],"_hereby":["847/1"],"_granted":["847/1"],"_person":["847/1"],"_obtaining":["847/1"],"_restriction":["847/1"],"_limitation":["847/1"],"_rights":["847/1"],"_merge":["847/1"],"_publish":["847/1"],"_distribute":["847/1"],"_sublicense":["847/1"],"_sell":["847/1"],"_persons":["847/1"],"_whom":["847/1"],"_furnished":["847/1"],"_subject":["847/1"],"_conditions":["847/1"],"_notice":["847/2"],"_shall":["847/2","847/4"],"_substantial":["847/2"],"_warranty":["847/3"],"_implied":["847/3"],"_limited":["847/3"],"_warranties":["847/3"],"_merchantability":["847/3"],"_fitness":["847/3"],"_noninfringement":["847/3"],"_holders":["847/4"],"_liable":["847/4"],"_claim":["847/4"],"_damages":["847/4"],"_liability":["847/4"],"_tort":["847/4"],"_arising":["847/4"],"_dealings":["847/4"],"_document":["848/0"],"_covers":["848/0"],"_v5":["848/0","853/3","859/0"],"_updating":["848/1"],"_let":["848/2"],"_ll":["848/2"],"_update":["848/2"],"_namespace":["849/0","854/0"],"_bignumberify":["850/0"],"_circuit":["850/0"],"_instantiation":["850/0"],"_addresspromise":["851/2"],"_resolution":["851/0"],"_difference":["852/0","853/1","853/4","853/6"],"_estimation":["852/0"],"_bucket":["852/0","853/0","853/2","853/3","853/5"],"_exposes":["853/0"],"_collided":["853/2"],"_buckets":["853/2"],"_dereference":["853/5"],"_preserve":["853/5"],"_having":["853/7"],"_belong":["854/0"],"_undergone":["855/0"],"_dramatic":["855/0"],"_inspection":["855/1","856/0"],"_edge":["855/1"],"_interrogating":["856/0"],"_mostly":["856/0"],"_merged":["857/0","876/2"],"_guides":["858/0"],"_upgrading":["858/0"],"_focuses":["859/0"],"_migrating":["859/0"],"_smart":["862/0","862/1"],"_overloaded":["863/0","863/1","863/2"],"_wishes":["866/0"],"_tests":["866/1","866/2","867/1","870/0","877/1","880/0","882/0","882/1","885/0"],"_among":["866/1"],"_suites":["866/1","866/5","868/0","876/2"],"_gzip":["866/1","868/0"],"_seen":["866/2"],"_ci":["866/2"],"_strive":["866/3"],"_constantly":["866/3"],"_especially":["866/3","867/0"],"_arise":["866/3"],"_prior":["866/3"],"_fix":["866/3"],"_corrected":["866/3"],"_causing":["866/3"],"_regression":["866/3"],"_procedurally":["866/4","866/5","878/0","882/1"],"_generating":["866/5","882/1"],"_choosing":["866/5"],"_solc":["866/5"],"_captured":["866/5"],"_technologies":["867/0"],"_move":["867/0"],"_fast":["867/0"],"_universe":["867/0"],"_accessible":["867/0"],"_es3":["867/1"],"_umd":["867/2"],"_modules":["867/2"],"_overlooked":["867/3"],"_suggestions":["867/3"],"_reach":["867/3"],"_opening":["867/3"],"_pain":["867/4"],"_ideas":["867/4"],"_bug":["867/4"],"_probably":["867/5"],"_summer":["867/5"],"_es2015":["867/5"],"_proxy":["867/5"],"_avoided":["867/6"],"_regular":["867/6"],"_expressions":["867/6"],"_caused":["867/6"],"_conflicts":["867/6"],"_otto":["867/6"],"_basically":["867/7"],"_moral":["867/7"],"_story":["867/7"],"_gzipped":["868/0"],"_testcases":["868/0","870/0","871/0","873/0","874/0","875/0"],"_suite":["868/1","869/0"],"_schema":["868/1","871/0"],"_convenience":["869/0"],"_loadtests":["870/0"],"_testcase":["870/0","871/0"],"_perspective":["872/0"],"_runs":["872/0"],"_reproduce":["872/1"],"_sure":["872/3"],"_tweak":["872/3"],"_iteration":["872/3"],"_concatenate":["872/3"],"_deterministic":["872/0","880/0"],"_drng":["872/0"],"_upper":["873/0","873/1","874/0","875/0"],"_exclusive":["873/0"],"_randomhexstring":["874/0"],"_randomnumber":["875/0"],"_outline":["876/0"],"_nuanced":["876/0"],"_overhaul":["876/1"],"_coverage":["876/1"],"_collapse":["876/1"],"_redundancy":["876/1"],"_schemas":["876/0"],"_ethereumjs":["877/1"],"_https":["877/1"],"_cpp":["877/1"],"_gz":["877/2"],"_coding":["878/0"],"_hierarchal":["880/0"],"_constructing":["882/1"],"_soldity":["882/1"],"_compiling":["882/1"],"_evaluating":["882/1"],"_conversion":["884/0"],"_keystore":["885/0"]}} \ No newline at end of file +{"version":"0.1","summaries":[{"title":"ContractFactory","blocks":[{"link":"/v5/api/contract/contract-factory/#ContractFactory","text":"To deploy a Contract, additional information is needed that is not available on a Contract object itself."},{"link":"/v5/api/contract/contract-factory/#ContractFactory","text":"Mainly, the bytecode (more specifically the initcode) of a contract is required."},{"link":"/v5/api/contract/contract-factory/#ContractFactory","text":"The Contract Factory sends a special type of transaction, an initcode transaction (i.e."},{"link":"/v5/api/contract/contract-factory/#ContractFactory","text":"the to field is null, and the data field is the initcode) where the initcode will be evaluated and the result becomes the new code to be deployed as a new contract."}]},{"title":"ContractFactory -- Creating Instances -- new ethers.ContractFactory( interface , bytecode [ , signer ] )","blocks":[{"link":"/v5/api/contract/contract-factory/#ContractFactory--creating","text":"Creates a new instance of a ContractFactory for the contract described by the interface and bytecode initcode."}]},{"title":"ContractFactory -- Creating Instances -- ContractFactory.fromSolidity( compilerOutput [ , signer ] ) => ContractFactory","blocks":[{"link":"/v5/api/contract/contract-factory/#ContractFactory--creating","text":"Consumes the output of the Solidity compiler, extracting the ABI and bytecode from it, allowing for the various formats the solc compiler has emitted over its life."}]},{"title":"ContractFactory -- Creating Instances -- contractFactory.connect( signer ) => Contract","blocks":[{"link":"/v5/api/contract/contract-factory/#ContractFactory-connect","text":"Returns a new instance of the ContractFactory with the same interface and bytecode, but with a different signer."}]},{"title":"ContractFactory -- Properties -- contractFactory.interface => Interface","blocks":[{"link":"/v5/api/contract/contract-factory/#ContractFactory--properties","text":"The Contract interface."}]},{"title":"ContractFactory -- Properties -- contractFactory.bytecode => string< DataHexString >","blocks":[{"link":"/v5/api/contract/contract-factory/#ContractFactory--properties","text":"The bytecode (i.e."},{"link":"/v5/api/contract/contract-factory/#ContractFactory--properties","text":"initcode) that this ContractFactory will use to deploy the Contract."}]},{"title":"ContractFactory -- Properties -- contractFactory.signer => Signer","blocks":[{"link":"/v5/api/contract/contract-factory/#ContractFactory--properties","text":"The Signer (if any) this ContractFactory will use to deploy instances of the Contract to the Blockchain."}]},{"title":"ContractFactory -- Methods -- contractFactory.attach( address ) => Contract","blocks":[{"link":"/v5/api/contract/contract-factory/#ContractFactory-attach","text":"Return an instance of a Contract attached to address."},{"link":"/v5/api/contract/contract-factory/#ContractFactory-attach","text":"This is the same as using the Contract constructor with address and this the interface and signerOrProvider passed in when creating the ContractFactory."}]},{"title":"ContractFactory -- Methods -- contractFactory.getDeployTransaction( ...args [ , overrides ] ) => UnsignedTransaction","blocks":[{"link":"/v5/api/contract/contract-factory/#ContractFactory--methods","text":"Returns the unsigned transaction which would deploy this Contract with args passed to the Contract's constructor."},{"link":"/v5/api/contract/contract-factory/#ContractFactory--methods","text":"If the optional overrides is specified, they can be used to override the endowment value, transaction nonce, gasLimit or gasPrice."}]},{"title":"ContractFactory -- Methods -- contractFactory.deploy( ...args [ , overrides ] ) => Promise< Contract >","blocks":[{"link":"/v5/api/contract/contract-factory/#ContractFactory-deploy","text":"Uses the signer to deploy the Contract with args passed into the constructor and returns a Contract which is attached to the address where this contract will be deployed once the transaction is mined."},{"link":"/v5/api/contract/contract-factory/#ContractFactory-deploy","text":"The transaction can be found at contract.deployTransaction, and no interactions should be made until the transaction is mined."},{"link":"/v5/api/contract/contract-factory/#ContractFactory-deploy","text":"If the optional overrides is specified, they can be used to override the endowment value, transaction nonce, gasLimit or gasPrice."}]},{"title":"Contract","blocks":[{"link":"/v5/api/contract/contract/#Contract","text":"A Contract is an abstraction of code that has been deployed to the blockchain."},{"link":"/v5/api/contract/contract/#Contract","text":"A Contract may be sent transactions, which will trigger its code to be run with the input of the transaction data."}]},{"title":"Contract -- Creating Instances -- contract.attach( addressOrName ) => Contract","blocks":[{"link":"/v5/api/contract/contract/#Contract-attach","text":"Returns a new instance of the Contract attached to a new address."},{"link":"/v5/api/contract/contract/#Contract-attach","text":"This is useful if there are multiple similar or identical copies of a Contract on the network and you wish to interact with each of them."}]},{"title":"Contract -- Creating Instances -- contract.connect( providerOrSigner ) => Contract","blocks":[{"link":"/v5/api/contract/contract/#Contract-connect","text":"Returns a new instance of the Contract, but connected to providerOrSigner."},{"link":"/v5/api/contract/contract/#Contract-connect","text":"By passing in a Provider, this will return a downgraded Contract which only has read-only access (i.e."},{"link":"/v5/api/contract/contract/#Contract-connect","text":"constant calls)."},{"link":"/v5/api/contract/contract/#Contract-connect","text":"By passing in a Signer."},{"link":"/v5/api/contract/contract/#Contract-connect","text":"this will return a Contract which will act on behalf of that signer."}]},{"title":"Contract -- Properties -- contract.address => string< Address >","blocks":[{"link":"/v5/api/contract/contract/#Contract--properties","text":"This is the address (or ENS name) the contract was constructed with."}]},{"title":"Contract -- Properties -- contract.resolvedAddress => string< Address >","blocks":[{"link":"/v5/api/contract/contract/#Contract--properties","text":"This is a promise that will resolve to the address the Contract object is attached to."},{"link":"/v5/api/contract/contract/#Contract--properties","text":"If an Address was provided to the constructor, it will be equal to this; if an ENS name was provided, this will be the resolved address."}]},{"title":"Contract -- Properties -- contract.deployTransaction => TransactionResponse","blocks":[{"link":"/v5/api/contract/contract/#Contract--properties","text":"If the Contract object is the result of a ContractFactory deployment, this is the transaction which was used to deploy the contract."}]},{"title":"Contract -- Properties -- contract.interface => Interface","blocks":[{"link":"/v5/api/contract/contract/#Contract--properties","text":"This is the ABI as an Interface."}]},{"title":"Contract -- Properties -- contract.provider => Provider","blocks":[{"link":"/v5/api/contract/contract/#Contract--properties","text":"If a provider was provided to the constructor, this is that provider."},{"link":"/v5/api/contract/contract/#Contract--properties","text":"If a signer was provided that had a Provider, this is that provider."}]},{"title":"Contract -- Properties -- contract.signer => Signer","blocks":[{"link":"/v5/api/contract/contract/#Contract--properties","text":"If a signer was provided to the constructor, this is that signer."}]},{"title":"Contract -- Events -- contract.queryFilter( event [ , fromBlockOrBlockHash [ , toBlock ] ) => Promise< Array< Event > >","blocks":[{"link":"/v5/api/contract/contract/#Contract-queryFilter","text":"Return Events that match the event."}]},{"title":"Contract -- Events -- contract.listenerCount( [ event ] ) => number","blocks":[{"link":"/v5/api/contract/contract/#Contract-listenerCount","text":"Return the number of listeners that are subscribed to event."},{"link":"/v5/api/contract/contract/#Contract-listenerCount","text":"If no event is provided, returns the total count of all events."}]},{"title":"Contract -- Events -- contract.listeners( event ) => Array< Listener >","blocks":[{"link":"/v5/api/contract/contract/#Contract-listeners","text":"Return a list of listeners that are subscribed to event."}]},{"title":"Contract -- Events -- contract.off( event , listener ) => this","blocks":[{"link":"/v5/api/contract/contract/#Contract-off","text":"Unsubscribe listener to event."}]},{"title":"Contract -- Events -- contract.on( event , listener ) => this","blocks":[{"link":"/v5/api/contract/contract/#Contract-on","text":"Subscribe to event calling listener when the event occurs."}]},{"title":"Contract -- Events -- contract.once( event , listener ) => this","blocks":[{"link":"/v5/api/contract/contract/#Contract-once","text":"Subscribe once to event calling listener when the event occurs."}]},{"title":"Contract -- Events -- contract.removeAllListeners( [ event ] ) => this","blocks":[{"link":"/v5/api/contract/contract/#Contract-removeAllListeners","text":"Unsubscribe all listeners for event."},{"link":"/v5/api/contract/contract/#Contract-removeAllListeners","text":"If no event is provided, all events are unsubscribed."}]},{"title":"Contract -- Meta-Class","blocks":[{"link":"/v5/api/contract/contract/#Contract--metaclass","text":"A Meta-Class is a Class which has any of its properties determined at run-time."},{"link":"/v5/api/contract/contract/#Contract--metaclass","text":"The Contract object uses a Contract's ABI to determine what methods are available, so the following sections describe the generic ways to interact with the properties added at run-time during the Contract constructor."}]},{"title":"Contract -- Meta-Class -- Read-Only Methods (constant)","blocks":[{"link":"/v5/api/contract/contract/#Contract--readonly","text":"A constant method is read-only and evaluates a small amount of EVM code against the current blockchain state and can be computed by asking a single node, which can return a result."},{"link":"/v5/api/contract/contract/#Contract--readonly","text":"It is therefore free and does not require any ether, but cannot make changes to the blockchain state.."}]},{"title":"Contract -- Meta-Class -- contract.METHOD_NAME( ...args [ , overrides ] ) => Promise< any >","blocks":[{"link":"/v5/api/contract/contract/#Contract-functionsCall","text":"The type of the result depends on the ABI."},{"link":"/v5/api/contract/contract/#Contract-functionsCall","text":"If the method returns a single value, it will be returned directly, otherwise a Result object will be returned with each parameter available positionally and if the parameter is named, it will also be available by its name."},{"link":"/v5/api/contract/contract/#Contract-functionsCall","text":"For values that have a simple meaning in JavaScript, the types are fairly straight forward; strings and booleans are returned as JavaScript strings and booleans."},{"link":"/v5/api/contract/contract/#Contract-functionsCall","text":"For numbers, if the type is in the JavaScript safe range (i.e."},{"link":"/v5/api/contract/contract/#Contract-functionsCall","text":"less than 53 bits, such as an int24 or uint48) a normal JavaScript number is used."},{"link":"/v5/api/contract/contract/#Contract-functionsCall","text":"Otherwise a BigNumber is returned."},{"link":"/v5/api/contract/contract/#Contract-functionsCall","text":"For bytes (both fixed length and dynamic), a DataHexString is returned."},{"link":"/v5/api/contract/contract/#Contract-functionsCall","text":"The overrides object for a read-only method may include any of:."},{"link":"/v5/api/contract/contract/#Contract-functionsCall","text":"overrides.from - the msg.sender (or CALLER) to use during the execution of the code overrides.value - the msg.value (or CALLVALUE) to use during the exectuiont of the code overrides.gasPrice - the price to pay per gas (theoretically); since there is no transaction, there is not going to be any fee charged, but the EVM still requires a value to report to tx.gasprice (or GASPRICE); most developers will not require this overrides.gasLimit - the amount of gas (theoretically) to allow a node to use during the execution of the code; since there is no transaction, there is not going to be any fee charged, but the EVM still processes gas metering so calls like gasleft (or GAS) report meaningful values overrides.blockTag - a block tag to simulate the execution at, which can be used for hypothetical historic analysis; note that many backends do not support this, or may require paid plans to access as the node database storage and processing requirements are much higher."}]},{"title":"Contract -- Meta-Class -- contract.functions.METHOD_NAME( ...args [ , overrides ] ) => Promise< Result >","blocks":[{"link":"/v5/api/contract/contract/#Contract--readonly","text":"The result will always be a Result, even if there is only a single return value type."},{"link":"/v5/api/contract/contract/#Contract--readonly","text":"This simplifies frameworks which wish to use the Contract object, since they do not need to inspect the return types to unwrap simplified functions."},{"link":"/v5/api/contract/contract/#Contract--readonly","text":"Another use for this method is for error recovery."},{"link":"/v5/api/contract/contract/#Contract--readonly","text":"For example, if a function result is an invalid UTF-8 string, the normal call using the above meta-class function will throw an exception."},{"link":"/v5/api/contract/contract/#Contract--readonly","text":"This allows using the Result access error to access the low-level bytes and reason for the error allowing an alternate UTF-8 error strategy to be used."},{"link":"/v5/api/contract/contract/#Contract--readonly","text":"Most developers should not require this."},{"link":"/v5/api/contract/contract/#Contract--readonly","text":"The overrides are identical to the read-only operations above."}]},{"title":"Contract -- Meta-Class -- Write Methods (non-constant)","blocks":[{"link":"/v5/api/contract/contract/#Contract--write","text":"A non-constant method requires a transaction to be signed and requires payment in the form of a fee to be paid to a miner."},{"link":"/v5/api/contract/contract/#Contract--write","text":"This transaction will be verified by every node on the entire network as well by the miner who will compute the new state of the blockchain after executing it against the current state."},{"link":"/v5/api/contract/contract/#Contract--write","text":"It cannot return a result."},{"link":"/v5/api/contract/contract/#Contract--write","text":"If a result is required, it should be logged using a Solidity event (or EVM log), which can then be queried from the transaction receipt."}]},{"title":"Contract -- Meta-Class -- contract.METHOD_NAME( ...args [ , overrides ] ) => Promise< TransactionResponse >","blocks":[{"link":"/v5/api/contract/contract/#contract-functionsSend","text":"Returns a TransactionResponse for the transaction after it is sent to the network."},{"link":"/v5/api/contract/contract/#contract-functionsSend","text":"This requires the Contract has a signer."},{"link":"/v5/api/contract/contract/#contract-functionsSend","text":"The overrides object for write methods may include any of:."},{"link":"/v5/api/contract/contract/#contract-functionsSend","text":"overrides.gasPrice - the price to pay per gas overrides.gasLimit - the limit on the amount of gas to allow the transaction to consume; any unused gas is returned at the gasPrice overrides.value - the amount of ether (in wei) to forward with the call overrides.nonce - the nonce to use for the Signer."},{"link":"/v5/api/contract/contract/#contract-functionsSend","text":"If the wait() method on the returned TransactionResponse is called, there will be additional properties on the receipt:."},{"link":"/v5/api/contract/contract/#contract-functionsSend","text":"receipt.events - an array of the logs, with additional properties (if the ABI included a description for the events) receipt.events[n].args - the parsed arguments receipt.events[n].decode - a method that can be used to parse the log topics and data (this was used to compute args) receipt.events[n].event - the name of the event receipt.events[n].eventSignature - the full signature of the event receipt.removeListener() - a method to remove the listener that trigger this event receipt.getBlock() - a method to return the Block this event occurred in receipt.getTransaction() - a method to return the Transaction this event occurred in receipt.getTransactionReceipt() - a method to return the Transaction Receipt this event occurred in."}]},{"title":"Contract -- Meta-Class -- Write Methods Analysis","blocks":[{"link":"/v5/api/contract/contract/#Contract--check","text":"There are several options to analyze properties and results of a write method without actually executing it."}]},{"title":"Contract -- Meta-Class -- contract.estimateGas.METHOD_NAME( ...args [ , overrides ] ) => Promise< BigNumber >","blocks":[{"link":"/v5/api/contract/contract/#contract-estimateGas","text":"Returns the estimate units of gas that would be required to execute the METHOD_NAME with args and overrides."},{"link":"/v5/api/contract/contract/#contract-estimateGas","text":"The overrides are identical to the overrides above for read-only or write methods, depending on the type of call of METHOD_NAME."}]},{"title":"Contract -- Meta-Class -- contract.populateTransaction.METHOD_NAME( ...args [ , overrides ] ) => Promise< UnsignedTx >","blocks":[{"link":"/v5/api/contract/contract/#contract-populateTransaction","text":"Returns an UnsignedTransaction which represents the transaction that would need to be signed and submitted to the network to execute METHOD_NAME with args and overrides."},{"link":"/v5/api/contract/contract/#contract-populateTransaction","text":"The overrides are identical to the overrides above for read-only or write methods, depending on the type of call of METHOD_NAME."}]},{"title":"Contract -- Meta-Class -- contract.callStatic.METHOD_NAME( ...args [ , overrides ] ) => Promise< any >","blocks":[{"link":"/v5/api/contract/contract/#contract-callStatic","text":"Rather than executing the state-change of a transaction, it is possible to ask a node to pretend that a call is not state-changing and return the result."},{"link":"/v5/api/contract/contract/#contract-callStatic","text":"This does not actually change any state, but is free."},{"link":"/v5/api/contract/contract/#contract-callStatic","text":"This in some cases can be used to determine if a transaction will fail or succeed."},{"link":"/v5/api/contract/contract/#contract-callStatic","text":"This otherwise functions the same as a Read-Only Method."},{"link":"/v5/api/contract/contract/#contract-callStatic","text":"The overrides are identical to the read-only operations above."}]},{"title":"Contract -- Meta-Class -- Event Filters","blocks":[{"link":"/v5/api/contract/contract/#Contract--filters","text":"An event filter is made up of topics, which are values logged in a Bloom Filter, allowing efficient searching for entries which match a filter."}]},{"title":"Contract -- Meta-Class -- contract.filters.EVENT_NAME( ...args ) => Filter","blocks":[{"link":"/v5/api/contract/contract/#Contract--filters","text":"Return a filter for EVENT_NAME, optionally filtering by additional constraints."},{"link":"/v5/api/contract/contract/#Contract--filters","text":"Only indexed event parameters may be filtered."},{"link":"/v5/api/contract/contract/#Contract--filters","text":"If a parameter is null (or not provided) then any value in that field matches."}]},{"title":"Example: ERC-20 Contract -- Connecting to a Contract -- new ethers.Contract( address , abi , providerOrSigner )","blocks":[{"link":"/v5/api/contract/example/","text":"See the above code example for creating an Instance which will (in addition to the Contact methods and properties) automatically add the additional properties defined in abi to a Contract connected to address using the providerOrSigner."}]},{"title":"Example: ERC-20 Contract -- Properties -- erc20.address => string< Address >","blocks":[{"link":"/v5/api/contract/example/","text":"This is the address (or ENS name) the contract was constructed with."}]},{"title":"Example: ERC-20 Contract -- Properties -- erc20.resolvedAddress => string< Address >","blocks":[{"link":"/v5/api/contract/example/","text":"This is a promise that will resolve to the address the Contract object is attached to."},{"link":"/v5/api/contract/example/","text":"If an Address was provided to the constructor, it will be equal to this; if an ENS name was provided, this will be the resolved address."}]},{"title":"Example: ERC-20 Contract -- Properties -- erc20.deployTransaction => TransactionResponse","blocks":[{"link":"/v5/api/contract/example/","text":"If the Contract object is the result of a ContractFactory deployment, this is the transaction which was used to deploy the contract."}]},{"title":"Example: ERC-20 Contract -- Properties -- erc20.interface => Interface","blocks":[{"link":"/v5/api/contract/example/","text":"This is the ABI as an Interface."}]},{"title":"Example: ERC-20 Contract -- Properties -- erc20.provider => Provider","blocks":[{"link":"/v5/api/contract/example/","text":"If a provider was provided to the constructor, this is that provider."},{"link":"/v5/api/contract/example/","text":"If a signer was provided that had a Provider, this is that provider."}]},{"title":"Example: ERC-20 Contract -- Properties -- erc20.signer => Signer","blocks":[{"link":"/v5/api/contract/example/","text":"If a signer was provided to the constructor, this is that signer."}]},{"title":"Example: ERC-20 Contract -- Methods -- erc20.attach( addressOrName ) => Contract","blocks":[{"link":"/v5/api/contract/example/","text":"Returns a new instance of the Contract attached to a new address."},{"link":"/v5/api/contract/example/","text":"This is useful if there are multiple similar or identical copies of a Contract on the network and you wish to interact with each of them."}]},{"title":"Example: ERC-20 Contract -- Methods -- erc20.connect( providerOrSigner ) => Contract","blocks":[{"link":"/v5/api/contract/example/","text":"Returns a new instance of the Contract, but connected to providerOrSigner."},{"link":"/v5/api/contract/example/","text":"By passing in a Provider, this will return a downgraded Contract which only has read-only access (i.e."},{"link":"/v5/api/contract/example/","text":"constant calls)."},{"link":"/v5/api/contract/example/","text":"By passing in a Signer."},{"link":"/v5/api/contract/example/","text":"this will return a Contract which will act on behalf of that signer."}]},{"title":"Example: ERC-20 Contract -- Events -- erc20.queryFilter( event [ , fromBlockOrBlockHash [ , toBlock ] ) => Promise< Array< Event > >","blocks":[{"link":"/v5/api/contract/example/#erc20-queryfilter","text":"Return Events that match the event."}]},{"title":"Example: ERC-20 Contract -- Events -- erc20.listenerCount( [ event ] ) => number","blocks":[{"link":"/v5/api/contract/example/#erc20-events","text":"Return the number of listeners that are subscribed to event."},{"link":"/v5/api/contract/example/#erc20-events","text":"If no event is provided, returns the total count of all events."}]},{"title":"Example: ERC-20 Contract -- Events -- erc20.listeners( event ) => Array< Listener >","blocks":[{"link":"/v5/api/contract/example/#erc20-events","text":"Return a list of listeners that are subscribed to event."}]},{"title":"Example: ERC-20 Contract -- Events -- erc20.off( event , listener ) => this","blocks":[{"link":"/v5/api/contract/example/#erc20-events","text":"Unsubscribe listener to event."}]},{"title":"Example: ERC-20 Contract -- Events -- erc20.on( event , listener ) => this","blocks":[{"link":"/v5/api/contract/example/#erc20-events","text":"Subscribe to event calling listener when the event occurs."}]},{"title":"Example: ERC-20 Contract -- Events -- erc20.once( event , listener ) => this","blocks":[{"link":"/v5/api/contract/example/#erc20-events","text":"Subscribe once to event calling listener when the event occurs."}]},{"title":"Example: ERC-20 Contract -- Events -- erc20.removeAllListeners( [ event ] ) => this","blocks":[{"link":"/v5/api/contract/example/#erc20-events","text":"Unsubscribe all listeners for event."},{"link":"/v5/api/contract/example/#erc20-events","text":"If no event is provided, all events are unsubscribed."}]},{"title":"Example: ERC-20 Contract -- Meta-Class Methods","blocks":[{"link":"/v5/api/contract/example/","text":"Since the Contract is a Meta-Class, the methods available here depend on the ABI which was passed into the Contract."}]},{"title":"Example: ERC-20 Contract -- Meta-Class Methods -- erc20.decimals( [ overrides ] ) => Promise< number >","blocks":[{"link":"/v5/api/contract/example/","text":"Returns the number of decimal places used by this ERC-20 token."},{"link":"/v5/api/contract/example/","text":"This can be used with parseUnits when taking input from the user or [formatUnits](utils-formatunits] when displaying the token amounts in the UI."}]},{"title":"Example: ERC-20 Contract -- Meta-Class Methods -- erc20.getBalance( owner [ , overrides ] ) => Promise< BigNumber >","blocks":[{"link":"/v5/api/contract/example/","text":"Returns the balance of owner for this ERC-20 token."}]},{"title":"Example: ERC-20 Contract -- Meta-Class Methods -- erc20.symbol( [ overrides ] ) => Promise< string >","blocks":[{"link":"/v5/api/contract/example/","text":"Returns the symbol of the token."}]},{"title":"Example: ERC-20 Contract -- Meta-Class Methods -- erc20_rw.transfer( target , amount [ , overrides ] ) => Promise< TransactionResponse >","blocks":[{"link":"/v5/api/contract/example/","text":"Transfers amount tokens to target from the current signer."},{"link":"/v5/api/contract/example/","text":"The return value (a boolean) is inaccessible during a write operation using a transaction."},{"link":"/v5/api/contract/example/","text":"Other techniques (such as events) are required if this value is required."},{"link":"/v5/api/contract/example/","text":"On-chain contracts calling the transfer function have access to this result, which is why it is possible."}]},{"title":"Example: ERC-20 Contract -- Meta-Class Methods -- erc20.callStatic.transfer( target , amount [ , overrides ] ) => Promise< boolean >","blocks":[{"link":"/v5/api/contract/example/","text":"Performs a dry-run of transferring amount tokens to target from the current signer, without actually signing or sending a transaction."},{"link":"/v5/api/contract/example/","text":"This can be used to preflight check that a transaction will be successful."}]},{"title":"Example: ERC-20 Contract -- Meta-Class Methods -- erc20.estimateGas.transfer( target , amount [ , overrides ] ) => Promise< BigNumber >","blocks":[{"link":"/v5/api/contract/example/","text":"Returns an estimate for how many units of gas would be required to transfer amount tokens to target."}]},{"title":"Example: ERC-20 Contract -- Meta-Class Methods -- erc20.populateTransaction.transfer( target , amount [ , overrides ] ) => Promise< UnsignedTx >","blocks":[{"link":"/v5/api/contract/example/","text":"Returns an UnsignedTransaction which could be signed and submitted to the network to transaction amount tokens to target."}]},{"title":"Example: ERC-20 Contract -- Meta-Class Methods -- Note on Estimating and Static Calling","blocks":[{"link":"/v5/api/contract/example/","text":"When you perform a static call, the current state is taken into account as best as Ethereum can determine."},{"link":"/v5/api/contract/example/","text":"There are many cases where this can provide false positives and false negatives."},{"link":"/v5/api/contract/example/","text":"The eventually consistent model of the blockchain also means there are certain consistency modes that cannot be known until an actual transaction is attempted."}]},{"title":"Example: ERC-20 Contract -- Meta-Class Filters","blocks":[{"link":"/v5/api/contract/example/","text":"Since the Contract is a Meta-Class, the methods available here depend on the ABI which was passed into the Contract."}]},{"title":"Example: ERC-20 Contract -- Meta-Class Filters -- erc20.filters.Transfer( [ fromAddress [ , toAddress ] ] ) => Filter","blocks":[{"link":"/v5/api/contract/example/","text":"Returns a new Filter which can be used to query or to subscribe/unsubscribe to events."},{"link":"/v5/api/contract/example/","text":"If fromAddress is null or not provided, then any from address matches."},{"link":"/v5/api/contract/example/","text":"If toAddress is null or not provided, then any to address matches."}]},{"title":"Contract Interaction","blocks":[{"link":"/v5/api/contract/#contracts","text":"A Contract object is an abstraction of a contract (EVM bytecode) deployed on the Ethereum network."},{"link":"/v5/api/contract/#contracts","text":"It allows for a simple way to serialize calls and transactions to an on-chain contract and deserialize their results and emitted logs."},{"link":"/v5/api/contract/#contracts","text":"A ContractFactory is an abstraction of a contract's bytecode and facilitates deploying a contract."}]},{"title":"Experimental","blocks":[{"link":"/v5/api/experimental/","text":"The Experimental package is used for features that are not ready to be included in the base library."},{"link":"/v5/api/experimental/","text":"The API should not be considered stable and does not follow semver versioning, so applications requiring it should specify the exact version needed."}]},{"title":"Experimental -- BrainWallet","blocks":[{"link":"/v5/api/experimental/#experimental-brainwallet","text":"Ethers removed support for BrainWallets in v4, since they are unsafe and many can be easily guessed, allowing attackers to steal the funds."},{"link":"/v5/api/experimental/#experimental-brainwallet","text":"This class is offered to ensure older systems which used brain wallets can still recover their funds and assets."}]},{"title":"Experimental -- BrainWallet -- BrainWallet.generate( username , password [ , progressCallback ] ) => BrainWallet","blocks":[{"link":"/v5/api/experimental/#experimental-brainwallet","text":"Generates a brain wallet, with a slightly improved experience, in which the generated wallet has a mnemonic."}]},{"title":"Experimental -- BrainWallet -- BrainWallet.generateLegacy( username , password [ , progressCallback ] ) => BrainWallet","blocks":[{"link":"/v5/api/experimental/#experimental-brainwallet","text":"Generate a brain wallet which is compatible with the ethers v3 and earlier."}]},{"title":"Experimental -- EIP1193Bridge","blocks":[{"link":"/v5/api/experimental/#experimental-eip1193bridge","text":"The EIP1193Bridge allows a normal Ethers Signer and Provider to be exposed in as a standard EIP-1193 Provider, which may be useful when interacting with other libraries."}]},{"title":"Experimental -- NonceManager","blocks":[{"link":"/v5/api/experimental/#experimental-noncemanager","text":"The NonceManager is designed to manage the nonce for a Signer, automatically increasing it as it sends transactions."},{"link":"/v5/api/experimental/#experimental-noncemanager","text":"Currently the NonceManager does not handle re-broadcast."},{"link":"/v5/api/experimental/#experimental-noncemanager","text":"If you attempt to send a lot of transactions to the network on a node that does not control that account, the transaction pool may drop your transactions."},{"link":"/v5/api/experimental/#experimental-noncemanager","text":"In the future, it'd be nice if the NonceManager remembered transactions and watched for them on the network, rebroadcasting transactions that appear to have been dropped."},{"link":"/v5/api/experimental/#experimental-noncemanager","text":"Another future feature will be some sort of failure mode."},{"link":"/v5/api/experimental/#experimental-noncemanager","text":"For example, often a transaction is dependent on another transaction being mined first."}]},{"title":"Experimental -- NonceManager -- new NonceManager( signer )","blocks":[{"link":"/v5/api/experimental/#experimental-noncemanager","text":"Create a new NonceManager."}]},{"title":"Experimental -- NonceManager -- nonceManager.signer => Signer","blocks":[{"link":"/v5/api/experimental/#experimental-noncemanager","text":"The signer whose nonce is being managed."}]},{"title":"Experimental -- NonceManager -- nonceManager.provider => Provider","blocks":[{"link":"/v5/api/experimental/#experimental-noncemanager","text":"The provider associated with the signer."}]},{"title":"Experimental -- NonceManager -- nonceManager.setTransactionCount( count ) => void","blocks":[{"link":"/v5/api/experimental/#experimental-noncemanager","text":"Set the current transaction count (nonce) for the signer."},{"link":"/v5/api/experimental/#experimental-noncemanager","text":"This may be useful in interacting with the signer outside of using this class."}]},{"title":"Experimental -- NonceManager -- nonceManager.incrementTransactionCount( [ count = 1 ] ) => void","blocks":[{"link":"/v5/api/experimental/#experimental-noncemanager","text":"Bump the current transaction count (nonce) by count."},{"link":"/v5/api/experimental/#experimental-noncemanager","text":"This may be useful in interacting with the signer outside of using this class."}]},{"title":"Application Programming Interface","blocks":[{"link":"/v5/api/#api","text":"An Application Programming Interface (API) is the formal specification of the library."}]},{"title":"Utilities -- Assembler","blocks":[{"link":"/v5/api/other/assembly/api/#asm-utilities","text":"The assembler utilities allow parsing and assembling an Ethers ASM Dialect source file."}]},{"title":"Utilities -- Assembler -- asm.parse( code ) => Node","blocks":[{"link":"/v5/api/other/assembly/api/#asm-parse","text":"Parse an ethers-format assembly file and return the Abstract Syntax Tree."}]},{"title":"Utilities -- Assembler -- asm.assemble( node ) => string< DataHexString >","blocks":[{"link":"/v5/api/other/assembly/api/","text":"Performs assembly of the Abstract Syntax Tree node and return the resulting bytecode representation."}]},{"title":"Utilities -- Disassembler","blocks":[{"link":"/v5/api/other/assembly/api/#asm-utilities","text":"The Disassembler utilities make it easy to convert bytecode into an object which can easily be examined for program structure."}]},{"title":"Utilities -- Disassembler -- asm.disassemble( bytecode ) => Bytecode","blocks":[{"link":"/v5/api/other/assembly/api/","text":"Returns an array of Operations given bytecode."}]},{"title":"Utilities -- Disassembler -- asm.formatBytecode( operations ) => string","blocks":[{"link":"/v5/api/other/assembly/api/","text":"Create a formatted output of an array of Operation."}]},{"title":"Utilities -- Disassembler -- Bytecode","blocks":[{"link":"/v5/api/other/assembly/api/#asm-bytecode","text":"Each array index represents an operation, collapsing multi-byte operations (i.e."},{"link":"/v5/api/other/assembly/api/#asm-bytecode","text":"PUSH) into a single operation."}]},{"title":"Utilities -- Disassembler -- bytecode.getOperation( offset ) => Operation","blocks":[{"link":"/v5/api/other/assembly/api/#asm-bytecode","text":"Get the operation at a given offset into the bytecode."},{"link":"/v5/api/other/assembly/api/#asm-bytecode","text":"This ensures that the byte at offset is an operation and not data contained within a PUSH, in which case null it returned."}]},{"title":"Utilities -- Disassembler -- Operation","blocks":[{"link":"/v5/api/other/assembly/api/#asm-operation","text":"An Operation is a single command from a disassembled bytecode stream."}]},{"title":"Utilities -- Disassembler -- operation.opcode => Opcode","blocks":[{"link":"/v5/api/other/assembly/api/#asm-operation","text":"The opcode for this Operation."}]},{"title":"Utilities -- Disassembler -- operation.offset => number","blocks":[{"link":"/v5/api/other/assembly/api/#asm-operation","text":"The offset into the bytecode for this Operation."}]},{"title":"Utilities -- Disassembler -- operation.pushValue => string< DataHexString >","blocks":[{"link":"/v5/api/other/assembly/api/#asm-operation","text":"If the opcode is a PUSH, this is the value of that push."}]},{"title":"Utilities -- Opcode -- asm.Opcode.from( valueOrMnemonic ) => Opcode","blocks":[{"link":"/v5/api/other/assembly/api/#asm-opcode","text":"Create a new instance of an Opcode for a given numeric value (e.g."},{"link":"/v5/api/other/assembly/api/#asm-opcode","text":"0x60 is PUSH1) or mnemonic string (e.g."},{"link":"/v5/api/other/assembly/api/#asm-opcode","text":"\"PUSH1\")."}]},{"title":"Utilities -- Opcode -- opcode.value => number","blocks":[{"link":"/v5/api/other/assembly/api/","text":"The value (bytecode as a number) of this opcode."}]},{"title":"Utilities -- Opcode -- opcode.mnemonic => string","blocks":[{"link":"/v5/api/other/assembly/api/","text":"The mnemonic string of this opcode."}]},{"title":"Utilities -- Opcode -- opcode.delta => number","blocks":[{"link":"/v5/api/other/assembly/api/","text":"The number of items this opcode will consume from the stack."}]},{"title":"Utilities -- Opcode -- opcode.alpha => number","blocks":[{"link":"/v5/api/other/assembly/api/","text":"The number of items this opcode will push onto the stack."}]},{"title":"Utilities -- Opcode -- opcode.doc => string","blocks":[{"link":"/v5/api/other/assembly/api/","text":"A short description of what this opcode does."}]},{"title":"Utilities -- Opcode -- opcode.isMemory( ) => \"read\" | \"write\" | \"full\"","blocks":[{"link":"/v5/api/other/assembly/api/","text":"Returns true if the opcode accesses memory."}]},{"title":"Utilities -- Opcode -- opcode.isStatic( ) => boolean","blocks":[{"link":"/v5/api/other/assembly/api/","text":"Returns true if the opcode cannot change state."}]},{"title":"Utilities -- Opcode -- opcode.isJump( ) => boolean","blocks":[{"link":"/v5/api/other/assembly/api/","text":"Returns true if the opcode is a jumper operation."}]},{"title":"Utilities -- Opcode -- opcode.isPush( ) => number","blocks":[{"link":"/v5/api/other/assembly/api/","text":"Returns 0 if the opcode is not a PUSH*, or the number of bytes this opcode will push if it is."}]},{"title":"Abstract Syntax Tree","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-ast","text":"Parsing a file using the Ethers ASM Dialect will generate an Abstract Syntax Tree."},{"link":"/v5/api/other/assembly/ast/#asm-ast","text":"The root node will always be a ScopeNode whose name is _."},{"link":"/v5/api/other/assembly/ast/#asm-ast","text":"To parse a file into an Abstract Syntax tree, use the parse function."}]},{"title":"Abstract Syntax Tree -- Types -- offset => number","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-location","text":"The offset into the source code to the start of this node."}]},{"title":"Abstract Syntax Tree -- Types -- length => number","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-location","text":"The length of characters in the source code to the end of this node."}]},{"title":"Abstract Syntax Tree -- Types -- source => string","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-location","text":"The source code of this node."}]},{"title":"Abstract Syntax Tree -- Nodes","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-ast","text":"@TODO: Place a diagram here showing the hierarchy."}]},{"title":"Abstract Syntax Tree -- Nodes -- node.tag => string","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-node","text":"A unique tag for this node for the lifetime of the process."}]},{"title":"Abstract Syntax Tree -- Nodes -- node.location => Location","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-node","text":"The source code and location within the source code that this node represents."}]},{"title":"Abstract Syntax Tree -- Nodes -- ValueNode","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-valuenode","text":"A ValueNode is a node which may manipulate the stack."}]},{"title":"Abstract Syntax Tree -- Nodes -- literalNode.value => string","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-literalnode","text":"The literal value of this node, which may be a DataHexString or string of a decimal number."}]},{"title":"Abstract Syntax Tree -- Nodes -- literalNode.verbatim => boolean","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-literalnode","text":"This is true in a DataNode context, since in that case the value should be taken verbatim and no PUSH operation should be added, otherwise false."}]},{"title":"Abstract Syntax Tree -- Nodes -- PopNode","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-popnode","text":"A PopNode is used to store a place-holder for an implicit pop from the stack."},{"link":"/v5/api/other/assembly/ast/#asm-popnode","text":"It represents the code for an implicit place-holder (i.e."},{"link":"/v5/api/other/assembly/ast/#asm-popnode","text":"$$) or an explicit place-holder (e.g."},{"link":"/v5/api/other/assembly/ast/#asm-popnode","text":"$1), which indicates the expected stack position to consume."}]},{"title":"Abstract Syntax Tree -- Nodes -- literalNode.index => number","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-popnode","text":"The index this PopNode is representing."},{"link":"/v5/api/other/assembly/ast/#asm-popnode","text":"For an implicit place-holder this is 0."}]},{"title":"Abstract Syntax Tree -- Nodes -- LinkNode","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-linknode","text":"A LinkNode represents a link to another Node's data, for example $foo or #bar."}]},{"title":"Abstract Syntax Tree -- Nodes -- linkNode.label => string","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-linknode","text":"The name of the target node."}]},{"title":"Abstract Syntax Tree -- Nodes -- linkNode.type => \"offset\" | \"length\"","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-linknode","text":"Whether this node is for an offset or a length value of the target node."}]},{"title":"Abstract Syntax Tree -- Nodes -- opcodeNode.opcode => Opcode","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-opcodenode","text":"The opcode for this Node."}]},{"title":"Abstract Syntax Tree -- Nodes -- opcodeNode.operands => Array< ValueNode >","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-opcodenode","text":"A list of all operands passed into this Node."}]},{"title":"Abstract Syntax Tree -- Nodes -- EvaluationNode","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-evaluationnode","text":"An EvaluationNode is used to execute code and insert the results but does not generate any output assembly, using the {{! code here }} syntax."}]},{"title":"Abstract Syntax Tree -- Nodes -- literalNode.verbatim => boolean","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-evaluationnode","text":"This is true in a DataNode context, since in that case the value should be taken verbatim and no PUSH operation should be added, otherwise false."}]},{"title":"Abstract Syntax Tree -- Nodes -- evaluationNode.script => string","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-evaluationnode","text":"The code to evaluate and produce the result to use as a literal."}]},{"title":"Abstract Syntax Tree -- Nodes -- ExecutionNode","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-executionnode","text":"An ExecutionNode is used to execute code but does not generate any output assembly, using the {{! code here }} syntax."}]},{"title":"Abstract Syntax Tree -- Nodes -- evaluationNode.script => string","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-executionnode","text":"The code to execute."},{"link":"/v5/api/other/assembly/ast/#asm-executionnode","text":"Any result is ignored."}]},{"title":"Abstract Syntax Tree -- Nodes -- LabelledNode","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-labellednode","text":"A LabelledNode is used for any Node that has a name, and can therefore be targeted by a LinkNode."}]},{"title":"Abstract Syntax Tree -- Nodes -- labelledNode.name => string","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-labellednode","text":"The name of this node."}]},{"title":"Abstract Syntax Tree -- Nodes -- LabelNode","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-labelnode","text":"A LabelNode is used as a place to JUMP to by referencing it name, using @myLabel:."},{"link":"/v5/api/other/assembly/ast/#asm-labelnode","text":"A JUMPDEST is automatically inserted at the bytecode offset."}]},{"title":"Abstract Syntax Tree -- Nodes -- DataNode","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-datanode","text":"A DataNode allows for data to be inserted directly into the output assembly, using @myData[ ..."},{"link":"/v5/api/other/assembly/ast/#asm-datanode","text":"]."},{"link":"/v5/api/other/assembly/ast/#asm-datanode","text":"The data is padded if needed to ensure values that would otherwise be regarded as a PUSH value does not impact anything past the data."}]},{"title":"Abstract Syntax Tree -- Nodes -- dataNode.data => Array< ValueNode >","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-datanode","text":"The child nodes, which each represent a verbatim piece of data in insert."}]},{"title":"Abstract Syntax Tree -- Nodes -- ScopeNode","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-scopenode","text":"A ScopeNode allows a new frame of reference that all LinkNode's will use when resolving offset locations, using @myScope{ ..."},{"link":"/v5/api/other/assembly/ast/#asm-scopenode","text":"}."}]},{"title":"Abstract Syntax Tree -- Nodes -- scopeNode.statements => Array< Node >","blocks":[{"link":"/v5/api/other/assembly/ast/#asm-scopenode","text":"The list of child nodes for this scope."}]},{"title":"Ethers ASM Dialect","blocks":[{"link":"/v5/api/other/assembly/dialect/#asm-dialect","text":"This provides a quick, high-level overview of the Ethers ASM Dialect for EVM, which is defined by the Ethers ASM Dialect Grammar."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect","text":"Once a program is compiled by a higher level language into ASM (assembly), or hand-coded directly in ASM, it needs to be assembled into bytecode."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect","text":"The assembly process performs a very small set of operations and is intentionally simple and closely related to the underlying EVM bytecode."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect","text":"Operations include embedding programs within programs (for example the deployment bootstrap has the runtime embedded in it) and computing the necessary offsets for jump operations."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect","text":"The Command-Line Assembler can be used to assemble an Ethers ASM Dialect file or to disassemble bytecode into its human-readable (ish) opcodes and literals."}]},{"title":"Ethers ASM Dialect -- Opcodes","blocks":[{"link":"/v5/api/other/assembly/dialect/#asm-dialect-opcode","text":"An Opcode may be provided in either a functional or instructional syntax."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-opcode","text":"For Opcodes that require parameters, the functional syntax is recommended and the instructional syntax will raise a warning."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-opcode","text":"@TODO: Examples."}]},{"title":"Ethers ASM Dialect -- Labels","blocks":[{"link":"/v5/api/other/assembly/dialect/#asm-dialect-label","text":"A Label is a position in the program which can be jumped to."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-label","text":"A JUMPDEST is automatically added to this point in the assembled output."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-label","text":"@TODO: Examples."}]},{"title":"Ethers ASM Dialect -- Literals","blocks":[{"link":"/v5/api/other/assembly/dialect/#asm-dialect-literal","text":"A Literal puts data on the stack when executed using a PUSH operation."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-literal","text":"A Literal can be provided using a DataHexString or a decimal byte value."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-literal","text":"@TODO: examples."}]},{"title":"Ethers ASM Dialect -- Comments","blocks":[{"link":"/v5/api/other/assembly/dialect/#asm-dialect-comment","text":"To enter a comment in the Ethers ASM Dialect, any text following a semi-colon (i.e."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-comment","text":";) is ignored by the assembler."}]},{"title":"Ethers ASM Dialect -- Scopes","blocks":[{"link":"/v5/api/other/assembly/dialect/#asm-dialect-scope","text":"A common case in Ethereum is to have one program embedded in another."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-scope","text":"The most common use of this is embedding a Contract runtime bytecode within a deployment bytecode, which can be used as init code."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-scope","text":"When deploying a program to Ethereum, an init transaction is used."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-scope","text":"An init transaction has a null to address and contains bytecode in the data."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-scope","text":"This data bytecode is a program, that when executed returns some other bytecode as a result, this result is the bytecode to be installed."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-scope","text":"Therefore it is important that embedded code uses jumps relative to itself, not the entire program it is embedded in, which also means that a jump can only target its own scope, no parent or child scopes."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-scope","text":"This is enforced by the assembler."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-scope","text":"A scope may access the offset of any child Data Segment or child Scopes (with respect to itself) and may access the length of any Data Segment or Scopes anywhere in the program."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-scope","text":"Every program in the Ethers ASM Dialect has a top-level scope named _."}]},{"title":"Ethers ASM Dialect -- Data Segment","blocks":[{"link":"/v5/api/other/assembly/dialect/#asm-dialect-datasegment","text":"A Data Segment allows arbitrary data to be embedded into a program, which can be useful for lookup tables or deploy-time constants."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-datasegment","text":"An empty Data Segment can also be used when a labelled location is required, but without the JUMPDEST which a Labels adds."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-datasegment","text":"@TODO: Example."}]},{"title":"Ethers ASM Dialect -- Links","blocks":[{"link":"/v5/api/other/assembly/dialect/#asm-dialect-links","text":"A Link allows access to a Scopes, Data Segment or Labels."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-links","text":"To access the byte offset of a labelled item, use $foobar."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-links","text":"For a Labels, the target must be directly reachable within this scope."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-links","text":"For a Data Segment or a Scopes, it can be inside the same scope or any child scope."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-links","text":"For a Data Segment or a Labels, there is an additional type of Link, which provides the length of the data or bytecode respectively."},{"link":"/v5/api/other/assembly/dialect/#asm-dialect-links","text":"A Length Link is accessed by #foobar and is pushed on the stack as a literal."}]},{"title":"Ethers ASM Dialect -- Stack Placeholders","blocks":[{"link":"/v5/api/other/assembly/dialect/#asm-dialect-placeholder","text":"@TODO: exampl."}]},{"title":"Assembly","blocks":[{"link":"/v5/api/other/assembly/","text":"This module should still be considered fairly experimental."}]},{"title":"Hardware Wallets -- LedgerSigner","blocks":[{"link":"/v5/api/other/hardware/#hw-ledger","text":"The Ledger Hardware Wallets are a fairly popular brand."}]},{"title":"Hardware Wallets -- LedgerSigner -- new LedgerSigner( [ provider [ , type [ , path ] ] ] ) => LedgerSigner","blocks":[{"link":"/v5/api/other/hardware/","text":"Connects to a Ledger Hardware Wallet."},{"link":"/v5/api/other/hardware/","text":"The type if left unspecified is determined by the environment; in node the default is \"hid\" and in the browser \"u2f\" is the default."},{"link":"/v5/api/other/hardware/","text":"The default Ethereum path is used if path is left unspecified."}]},{"title":"Other Libraries","blocks":[{"link":"/v5/api/other/","text":"Now that ethers is more modular, it is possible to have additional ancillary packages, which are not part of the core but optionally add functionality only needed in certain situations."}]},{"title":"API Providers","blocks":[{"link":"/v5/api/providers/api-providers/#api-providers","text":"There are many services which offer a web API for accessing the Ethereum Blockchain."},{"link":"/v5/api/providers/api-providers/#api-providers","text":"These Providers allow connecting to them, which simplifies development, since you do not need to run your own instance or cluster of Ethereum nodes."},{"link":"/v5/api/providers/api-providers/#api-providers","text":"However, this reliance on third-party services can reduce resilience, security and increase the amount of required trust."},{"link":"/v5/api/providers/api-providers/#api-providers","text":"To mitigate these issues, it is recommended you use a Default Provider."}]},{"title":"API Providers -- EtherscanProvider","blocks":[{"link":"/v5/api/providers/api-providers/#EtherscanProvider","text":"The EtherscanProvider is backed by a combination of the various Etherscan APIs."}]},{"title":"API Providers -- EtherscanProvider -- new ethers.providers.EtherscanProvider( [ network = \"homestead\" , [ apiKey ] ] )","blocks":[{"link":"/v5/api/providers/api-providers/#EtherscanProvider","text":"Create a new EtherscanProvider connected to network with the optional apiKey."},{"link":"/v5/api/providers/api-providers/#EtherscanProvider","text":"The network may be specified as a string for a common network name, a number for a common chain ID or a [Network Object]provider-(network)."},{"link":"/v5/api/providers/api-providers/#EtherscanProvider","text":"If no apiKey is provided, a shared API key will be used, which may result in reduced performance and throttled requests."},{"link":"/v5/api/providers/api-providers/#EtherscanProvider","text":"It is highly recommended for production, you register with Etherscan for your own API key."}]},{"title":"API Providers -- EtherscanProvider -- Note: Default API keys","blocks":[{"link":"/v5/api/providers/api-providers/#EtherscanProvider","text":"If no apiKey is provided, a shared API key will be used, which may result in reduced performance and throttled requests."},{"link":"/v5/api/providers/api-providers/#EtherscanProvider","text":"It is highly recommended for production, you register with Etherscan for your own API key."}]},{"title":"API Providers -- EtherscanProvider -- Supported Networks","blocks":[{"link":"/v5/api/providers/api-providers/#EtherscanProvider","text":"Homestead (Mainnet) Ropsten (proof-of-work testnet) Rinkeby (proof-of-authority testnet) Görli (clique testnet) Kovan (proof-of-authority testnet)."}]},{"title":"API Providers -- EtherscanProvider -- provider.getHistory( address ) => Array< History >","blocks":[{"link":"/v5/api/providers/api-providers/#EtherscanProvider","text":"@TODO..."},{"link":"/v5/api/providers/api-providers/#EtherscanProvider","text":"Explain."}]},{"title":"API Providers -- InfuraProvider","blocks":[{"link":"/v5/api/providers/api-providers/#InfuraProvider","text":"The InfuraProvider is backed by the popular INFURA Ethereum service."}]},{"title":"API Providers -- InfuraProvider -- new ethers.providers.InfuraProvider( [ network = \"homestead\" , [ apiKey ] ] )","blocks":[{"link":"/v5/api/providers/api-providers/#InfuraProvider","text":"Create a new InfuraProvider connected to network with the optional apiKey."},{"link":"/v5/api/providers/api-providers/#InfuraProvider","text":"The network may be specified as a string for a common network name, a number for a common chain ID or a [Network Object]provider-(network)."},{"link":"/v5/api/providers/api-providers/#InfuraProvider","text":"The apiKey can be a string Project ID or an object with the properties projectId and projectSecret to specify a Project Secret which can be used on non-public sources (like on a server) to further secure your API access and quotas."}]},{"title":"API Providers -- InfuraProvider -- InfuraProvider.getWebSocketProvider( [ network [ , apiKey ] ] ) => WebSocketProvider","blocks":[{"link":"/v5/api/providers/api-providers/#InfuraProvider-getWebSocketProvider","text":"Create a new WebSocketProvider using the INFURA web-socket endpoint to connect to network with the optional apiKey."},{"link":"/v5/api/providers/api-providers/#InfuraProvider-getWebSocketProvider","text":"The network and apiKey are specified the same as the constructor."}]},{"title":"API Providers -- InfuraProvider -- Note: Default API keys","blocks":[{"link":"/v5/api/providers/api-providers/#InfuraProvider","text":"If no apiKey is provided, a shared API key will be used, which may result in reduced performance and throttled requests."},{"link":"/v5/api/providers/api-providers/#InfuraProvider","text":"It is highly recommended for production, you register with INFURA for your own API key."}]},{"title":"API Providers -- InfuraProvider -- Supported Networks","blocks":[{"link":"/v5/api/providers/api-providers/#InfuraProvider","text":"Homestead (Mainnet) Ropsten (proof-of-work testnet) Rinkeby (proof-of-authority testnet) Görli (clique testnet) Kovan (proof-of-authority testnet)."}]},{"title":"API Providers -- AlchemyProvider","blocks":[{"link":"/v5/api/providers/api-providers/#AlchemyProvider","text":"The AlchemyProvider is backed by Alchemy."}]},{"title":"API Providers -- AlchemyProvider -- new ethers.providers.AlchemyProvider( [ network = \"homestead\" , [ apiKey ] ] )","blocks":[{"link":"/v5/api/providers/api-providers/#AlchemyProvider","text":"Create a new AlchemyProvider connected to network with the optional apiKey."},{"link":"/v5/api/providers/api-providers/#AlchemyProvider","text":"The network may be specified as a string for a common network name, a number for a common chain ID or a Network Object."}]},{"title":"API Providers -- AlchemyProvider -- Note: Default API keys","blocks":[{"link":"/v5/api/providers/api-providers/#AlchemyProvider","text":"If no apiKey is provided, a shared API key will be used, which may result in reduced performance and throttled requests."},{"link":"/v5/api/providers/api-providers/#AlchemyProvider","text":"It is highly recommended for production, you register with Alchemy for your own API key."}]},{"title":"API Providers -- AlchemyProvider -- Supported Networks","blocks":[{"link":"/v5/api/providers/api-providers/#AlchemyProvider","text":"Homestead (Mainnet) Ropsten (proof-of-work testnet) Rinkeby (proof-of-authority testnet) Görli (clique testnet) Kovan (proof-of-authority testnet)."}]},{"title":"API Providers -- CloudflareProvider","blocks":[{"link":"/v5/api/providers/api-providers/#CloudflareProvider","text":"The CloudflareProvider is backed by the Cloudflare Ethereum Gateway."}]},{"title":"API Providers -- CloudflareProvider -- new ethers.providers.CloudflareProvider( )","blocks":[{"link":"/v5/api/providers/api-providers/#CloudflareProvider","text":"Create a new CloudflareProvider connected to mainnet (i.e."},{"link":"/v5/api/providers/api-providers/#CloudflareProvider","text":"\"homestead\")."}]},{"title":"API Providers -- CloudflareProvider -- Supported Networks","blocks":[{"link":"/v5/api/providers/api-providers/#CloudflareProvider","text":"Homestead (Mainnet)."}]},{"title":"Providers","blocks":[{"link":"/v5/api/providers/#providers","text":"A Provider is an abstraction of a connection to the Ethereum network, providing a concise, consistent interface to standard Ethereum node functionality."},{"link":"/v5/api/providers/#providers","text":"The ethers.js library provides several options which should cover the vast majority of use-cases, but also includes the necessary functions and classes for sub-classing if a more custom configuration is necessary."},{"link":"/v5/api/providers/#providers","text":"Most users should use the Default Provider."}]},{"title":"Providers -- Default Provider","blocks":[{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"The default provider is the safest, easiest way to begin developing on Ethereum, and it is also robust enough for use in production."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"It creates a FallbackProvider connected to as many backend services as possible."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"When a request is made, it is sent to multiple backends simultaneously."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"As responses from each backend are returned, they are checked that they agree."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"Once a quorum has been reached (i.e."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"enough of the backends agree), the response is provided to your application."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"This ensures that if a backend has become out-of-sync, or if it has been compromised that its responses are dropped in favor of responses that match the majority."}]},{"title":"Providers -- Default Provider -- ethers.getDefaultProvider( [ network , [ options ] ] ) => Provider","blocks":[{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"Returns a new Provider, backed by multiple services, connected to network."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"If no network is provided, homestead (i.e."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"mainnet) is used."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"The network may also be a URL to connect to, such as http://localhost:8545 or wss://example.com."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"The options is an object, with the following properties:."}]},{"title":"Providers -- Default Provider -- Note: API Keys","blocks":[{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"It is highly recommended for production services to acquire and specify an API Key for each service."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"The default API Keys used by ethers are shared across all users, so services may throttle all services that are using the default API Keys during periods of load without realizing it."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"Many services also have monitoring and usage metrics, which are only available if an API Key is specified."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"This allows tracking how many requests are being sent and which methods are being used the most."},{"link":"/v5/api/providers/#providers-getDefaultProvider","text":"Some services also provide additional paid features, which are only available when specifying an API Key."}]},{"title":"Providers -- Networks","blocks":[{"link":"/v5/api/providers/#providers","text":"There are several official common Ethereum networks as well as custom networks and other compatible projects."},{"link":"/v5/api/providers/#providers","text":"Any API that accept a Networkish can be passed a common name (such as \"mainnet\" or \"ropsten\") to use that network definition or may specify custom parameters."}]},{"title":"Providers -- Networks -- Custom ENS Contract","blocks":[{"link":"/v5/api/providers/","text":"One common reason to specify custom properties for a Network is to override the address of the root ENS registry, either on a common network to intercept the ENS Methods or to specify the ENS registry on a dev network (on most dev networks you must deploy the ENS contracts manually)."}]},{"title":"JsonRpcProvider","blocks":[{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider","text":"The JSON-RPC API is a popular method for interacting with Ethereum and is available in all major Ethereum node implementations (e.g."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider","text":"Geth and Parity) as well as many third-party web services (e.g."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider","text":"INFURA)."}]},{"title":"JsonRpcProvider -- Provider Documentation -- new ethers.providers.JsonRpcProvider( [ urlOrConnectionInfo [ , networkish ] ] )","blocks":[{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider","text":"Connect to a JSON-RPC HTTP API using the URL or ConnectionInfo urlOrConnectionInfo connected to the networkish network."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider","text":"If urlOrConnectionInfo is not specified, the default (i.e."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider","text":"http://localhost:8545) is used and if no network is specified, it will be determined automatically by querying the node using eth_chaindId and falling back on eth_networkId."}]},{"title":"JsonRpcProvider -- Provider Documentation -- Note: Connecting to a Local Node","blocks":[{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider","text":"Each node implementation is slightly different and may require specific command-line flags, configuration or settings in their UI to enable JSON-RPC, unlock accounts or expose specific APIs."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider","text":"Please consult their documentation."}]},{"title":"JsonRpcProvider -- Provider Documentation -- jsonRpcProvider.getSigner( [ addressOrIndex ] ) => JsonRpcSigner","blocks":[{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider-getSigner","text":"Returns a JsonRpcSigner which is managed by this Ethereum node, at addressOrIndex."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider-getSigner","text":"If no addressOrIndex is provided, the first account (account #0) is used."}]},{"title":"JsonRpcProvider -- Provider Documentation -- jsonRpcProvider.listAccounts( ) => Array< string >","blocks":[{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider-listAccounts","text":"Returns a list of all account addresses managed by this provider."}]},{"title":"JsonRpcProvider -- Provider Documentation -- jsonRpcProvider.send( method , params ) => Promise< any >","blocks":[{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider-send","text":"Allows sending raw messages to the provider."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider-send","text":"This can be used for backend-specific calls, such as for debugging or specific account management."}]},{"title":"JsonRpcProvider -- JsonRpcSigner","blocks":[{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcSigner","text":"A JsonRpcSigner is a simple Signer which is backed by a connected JsonRpcProvider."}]},{"title":"JsonRpcProvider -- JsonRpcSigner -- signer.provider => JsonRpcProvider","blocks":[{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcSigner","text":"The provider this signer was established from."}]},{"title":"JsonRpcProvider -- JsonRpcSigner -- signer.connectUnchecked( ) => JsonRpcUncheckedSigner","blocks":[{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcSigner-connectUnchecked","text":"Returns a new Signer object which does not perform additional checks when sending a transaction."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcSigner-connectUnchecked","text":"See getUncheckedSigner for more details."}]},{"title":"JsonRpcProvider -- JsonRpcSigner -- signer.sendUncheckedTransaction( transaction ) => Promise< string< DataHexString< 32 > > >","blocks":[{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcSigner-sendUncheckedTransaction","text":"Sends the transaction and returns a Promise which resolves to the opaque transaction hash."}]},{"title":"JsonRpcProvider -- JsonRpcSigner -- signer.unlock( password ) => Promise< boolean >","blocks":[{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcSigner-unlock","text":"Request the node unlock the account (if locked) using password."}]},{"title":"JsonRpcProvider -- JsonRpcUncheckedSigner","blocks":[{"link":"/v5/api/providers/jsonrpc-provider/#UncheckedJsonRpcSigner","text":"The JSON-RPC API only provides a transaction hash as the response when a transaction is sent, but the ethers Provider requires populating all details of a transaction before returning it."},{"link":"/v5/api/providers/jsonrpc-provider/#UncheckedJsonRpcSigner","text":"For example, the gas price and gas limit may be adjusted by the node or the nonce automatically included, in which case the opaque transaction hash has discarded this."},{"link":"/v5/api/providers/jsonrpc-provider/#UncheckedJsonRpcSigner","text":"To remedy this, the JsonRpcSigner immediately queries the provider for the details using the returned transaction hash to populate the TransactionResponse object."},{"link":"/v5/api/providers/jsonrpc-provider/#UncheckedJsonRpcSigner","text":"Some backends do not respond immediately and instead defer releasing the details of a transaction it was responsible for signing until it is mined."},{"link":"/v5/api/providers/jsonrpc-provider/#UncheckedJsonRpcSigner","text":"The UncheckedSigner does not populate any additional information and will immediately return the result as a mock TransactionResponse-like object, with most of the properties set to null, but allows access to the transaction hash quickly, if that is all that is required."}]},{"title":"JsonRpcProvider -- Node-Specific Methods","blocks":[{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider--other","text":"Many methods are less common or specific to certain Ethereum Node implementations (e.g."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider--other","text":"Parity vs Geth."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider--other","text":"These include account and admin management, debugging, deeper block and transaction exploration and other services (such as Swarm and Whisper)."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider--other","text":"The jsonRpcProvider.send method can be used to access these."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider--other","text":"All JSON-RPC methods (including the less common methods) which most Ethereum Nodes support."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider--other","text":"Parity's Trace Module can be used to trace and debug EVM execution of a transaction (requires custom configuration) Geth's Debug Module can be used to debug transactions and internal cache state, etc."},{"link":"/v5/api/providers/jsonrpc-provider/#JsonRpcProvider--other","text":"Additional Geth Methods Additional Parity Methods."}]},{"title":"Other Providers -- FallbackProvider","blocks":[{"link":"/v5/api/providers/other/#FallbackProvider","text":"The FallbackProvider is the most advanced Provider available in ethers."},{"link":"/v5/api/providers/other/#FallbackProvider","text":"It uses a quorum and connects to multiple Providers as backends, each configured with a priority and a weight."},{"link":"/v5/api/providers/other/#FallbackProvider","text":"When a request is made, the request is dispatched to multiple backends, randomly chosen (lower-value priority backends are always selected first) and the results from each are compared against the others."},{"link":"/v5/api/providers/other/#FallbackProvider","text":"Only once the quorum has been reached will that result be accepted and returned to the caller."},{"link":"/v5/api/providers/other/#FallbackProvider","text":"By default the quorum requires 50% (rounded up) of the backends to agree."},{"link":"/v5/api/providers/other/#FallbackProvider","text":"The weight can be used to give a backend Provider more influence."}]},{"title":"Other Providers -- FallbackProvider -- new ethers.providers.FallbackProvider( providers [ , quorum ] )","blocks":[{"link":"/v5/api/providers/other/#FallbackProvider","text":"Creates a new instance of a FallbackProvider connected to providers."},{"link":"/v5/api/providers/other/#FallbackProvider","text":"If quorum is not specified, half of the total sum of the provider weights is used."},{"link":"/v5/api/providers/other/#FallbackProvider","text":"The providers can be either an array of Provider or FallbackProviderConfig."},{"link":"/v5/api/providers/other/#FallbackProvider","text":"If a Provider is provided, the defaults are a priority of 1 and a weight of 1."}]},{"title":"Other Providers -- FallbackProvider -- provider.providerConfigs => Array< FallbackProviderConfig >","blocks":[{"link":"/v5/api/providers/other/#FallbackProvider","text":"The list of Provider Configurations that describe the backends."}]},{"title":"Other Providers -- FallbackProvider -- provider.quorum => number","blocks":[{"link":"/v5/api/providers/other/#FallbackProvider","text":"The quorum the backend responses must agree upon before a result will be resolved."},{"link":"/v5/api/providers/other/#FallbackProvider","text":"By default this is half the sum of the weights."}]},{"title":"Other Providers -- FallbackProvider -- fallbackProviderConfig.provider => Provider","blocks":[{"link":"/v5/api/providers/other/#FallbackProviderConfig","text":"The provider for this configuration."}]},{"title":"Other Providers -- FallbackProvider -- fallbackProviderConfig.priority => number","blocks":[{"link":"/v5/api/providers/other/#FallbackProviderConfig","text":"The priority used for the provider."},{"link":"/v5/api/providers/other/#FallbackProviderConfig","text":"Lower-value priorities are favoured over higher-value priorities."},{"link":"/v5/api/providers/other/#FallbackProviderConfig","text":"If multiple providers share the same priority, they are chosen at random."}]},{"title":"Other Providers -- FallbackProvider -- fallbackProviderConfig.stallTimeout => number","blocks":[{"link":"/v5/api/providers/other/#FallbackProviderConfig","text":"The timeout (in ms) after which another Provider will be attempted."},{"link":"/v5/api/providers/other/#FallbackProviderConfig","text":"This does not affect the current Provider; if it returns a result it is counted as part of the quorum."},{"link":"/v5/api/providers/other/#FallbackProviderConfig","text":"Lower values will result in more network traffic, but may reduce the response time of requests."}]},{"title":"Other Providers -- FallbackProvider -- fallbackProviderConfig.weight => number","blocks":[{"link":"/v5/api/providers/other/#FallbackProviderConfig","text":"The weight a response from this provider provides."},{"link":"/v5/api/providers/other/#FallbackProviderConfig","text":"This can be used if a given Provider is more trusted, for example."}]},{"title":"Other Providers -- IpcProvider","blocks":[{"link":"/v5/api/providers/other/#IpcProvider","text":"The IpcProvider allows the JSON-RPC API to be used over a local filename on the file system, exposed by Geth, Parity and other nodes."},{"link":"/v5/api/providers/other/#IpcProvider","text":"This is only available in node.js (as it requires file system access, and may have additional complications due to file permissions."},{"link":"/v5/api/providers/other/#IpcProvider","text":"See any related notes on the documentation for the actual node implementation websites."}]},{"title":"Other Providers -- IpcProvider -- ipcProvider.path => string","blocks":[{"link":"/v5/api/providers/other/#IpcProvider","text":"The path this Provider is connected to."}]},{"title":"Other Providers -- UrlJsonRpcProvider","blocks":[{"link":"/v5/api/providers/other/#UrlJsonRpcProvider","text":"This class is intended to be sub-classed and not used directly."},{"link":"/v5/api/providers/other/#UrlJsonRpcProvider","text":"It simplifies creating a Provider where a normal JsonRpcProvider would suffice, with a little extra effort needed to generate the JSON-RPC URL."}]},{"title":"Other Providers -- UrlJsonRpcProvider -- new ethers.providers.UrlJsonRpcProvider( [ network [ , apiKey ] ] )","blocks":[{"link":"/v5/api/providers/other/#UrlJsonRpcProvider","text":"Sub-classes do not need to override this."},{"link":"/v5/api/providers/other/#UrlJsonRpcProvider","text":"Instead they should override the static method getUrl and optionally getApiKey."}]},{"title":"Other Providers -- UrlJsonRpcProvider -- urlJsonRpcProvider.apiKey => any","blocks":[{"link":"/v5/api/providers/other/#UrlJsonRpcProvider","text":"The value of the apiKey that was returned from InheritedClass.getApiKey."}]},{"title":"Other Providers -- UrlJsonRpcProvider -- InheritingClass.getApiKey( apiKey ) => any","blocks":[{"link":"/v5/api/providers/other/#UrlJsonRpcProvider","text":"This function should examine the apiKey to ensure it is valid and return a (possible modified) value to use in getUrl."}]},{"title":"Other Providers -- UrlJsonRpcProvider -- InheritingClass.getUrl( network , apiKey ) => string","blocks":[{"link":"/v5/api/providers/other/#UrlJsonRpcProvider","text":"The URL to use for the JsonRpcProvider instance."}]},{"title":"Other Providers -- Web3Provider","blocks":[{"link":"/v5/api/providers/other/#Web3Provider","text":"The Web3Provider is meant to ease moving from a web3.js based application to ethers by wrapping an existing Web3-compatible (such as a Web3HttpProvider, Web3IpcProvider or Web3WsProvider) and exposing it as an ethers.js Provider which can then be used with the rest of the library."},{"link":"/v5/api/providers/other/#Web3Provider","text":"This may also be used to wrap a standard [EIP-1193 Provider](link-eip-1193]."}]},{"title":"Other Providers -- Web3Provider -- new ethers.providers.Web3Provider( externalProvider [ , network ] )","blocks":[{"link":"/v5/api/providers/other/#Web3Provider","text":"Create a new Web3Provider, which wraps an EIP-1193 Provider or Web3Provider-compatible Provider."}]},{"title":"Other Providers -- Web3Provider -- web3Provider.provider => Web3CompatibleProvider","blocks":[{"link":"/v5/api/providers/other/#Web3Provider","text":"The provider used to create this instance."}]},{"title":"Other Providers -- Web3Provider -- ExternalProvider","blocks":[{"link":"/v5/api/providers/other/#Web3Provider--ExternalProvider","text":"An ExternalProvider can be either one for the above mentioned Web3 Providers (or otherwise compatible) or an EIP-1193 provider."},{"link":"/v5/api/providers/other/#Web3Provider--ExternalProvider","text":"An ExternalProvider must offer one of the following signatures, and the first matching is used:."}]},{"title":"Other Providers -- Web3Provider -- externalProvider.request( request ) => Promise< any >","blocks":[{"link":"/v5/api/providers/other/#Web3Provider--ExternalProvider","text":"This follows the EIP-1193 API signature."},{"link":"/v5/api/providers/other/#Web3Provider--ExternalProvider","text":"The request should be a standard JSON-RPC payload, which should at a minimum specify the method and params."},{"link":"/v5/api/providers/other/#Web3Provider--ExternalProvider","text":"The result should be the actual result, which differs from the Web3.js response, which is a wrapped JSON-RPC response."}]},{"title":"Other Providers -- Web3Provider -- externalProvider.sendAsync( request , callback ) => void","blocks":[{"link":"/v5/api/providers/other/#Web3Provider--ExternalProvider","text":"This follows the Web3.js Provider Signature."},{"link":"/v5/api/providers/other/#Web3Provider--ExternalProvider","text":"The request should be a standard JSON-RPC payload, which should at a minimum specify the method and params."},{"link":"/v5/api/providers/other/#Web3Provider--ExternalProvider","text":"The callback should use the error-first calling semantics, so (error, result) where the result is a JSON-RPC wrapped result."}]},{"title":"Other Providers -- Web3Provider -- externalProvider.send( request , callback ) => void","blocks":[{"link":"/v5/api/providers/other/#Web3Provider--ExternalProvider","text":"This is identical to sendAsync."},{"link":"/v5/api/providers/other/#Web3Provider--ExternalProvider","text":"Historically, this used a synchronous web request, but no current browsers support this, so its use this way was deprecated quite a long time ago."}]},{"title":"Other Providers -- WebSocketProvider","blocks":[{"link":"/v5/api/providers/other/#WebSocketProvider","text":"The WebSocketProvider connects to a JSON-RPC WebSocket-compatible backend which allows for a persistent connection, multiplexing requests and pub-sub events for a more immediate event dispatching."},{"link":"/v5/api/providers/other/#WebSocketProvider","text":"The WebSocket API is newer, and if running your own infrastructure, note that WebSockets are much more intensive on your server resources, as they must manage and maintain the state for each client."},{"link":"/v5/api/providers/other/#WebSocketProvider","text":"For this reason, many services may also charge additional fees for using their WebSocket endpoints."}]},{"title":"Other Providers -- WebSocketProvider -- new ethers.providers.WebSocketProvider( [ url [ , network ] ] )","blocks":[{"link":"/v5/api/providers/other/#WebSocketProvider","text":"Returns a new WebSocketProvider connected to url as the network."},{"link":"/v5/api/providers/other/#WebSocketProvider","text":"If url is unspecified, the default \"ws://localhost:8546\" will be used."},{"link":"/v5/api/providers/other/#WebSocketProvider","text":"If network is unspecified, it will be queried from the network."}]},{"title":"Provider","blocks":[{"link":"/v5/api/providers/provider/#Provider","text":"A Provider in ethers is a read-only abstraction to access the blockchain data."}]},{"title":"Provider -- WebSocketProvider -- Coming from Web3.js?","blocks":[{"link":"/v5/api/providers/provider/#Provider","text":"If you are coming from Web3.js, this is one of the biggest differences you will encounter using ethers."},{"link":"/v5/api/providers/provider/#Provider","text":"The ethers library creates a strong division between the operation a Provider can perform and those of a Signer, which Web3.js lumps together."},{"link":"/v5/api/providers/provider/#Provider","text":"This separation of concerns and a stricted subset of Provider operations allows for a larger variety of backends, a more consistent API and ensures other libraries to operate without being able to rely on any underlying assumption."}]},{"title":"Provider -- Accounts Methods -- provider.getBalance( address [ , blockTag = latest ] ) => Promise< BigNumber >","blocks":[{"link":"/v5/api/providers/provider/#Provider-getBalance","text":"Returns the balance of address as of the blockTag block height."}]},{"title":"Provider -- Accounts Methods -- provider.getCode( address [ , blockTag = latest ] ) => Promise< string< DataHexString > >","blocks":[{"link":"/v5/api/providers/provider/#Provider-getCode","text":"Returns the contract code of address as of the blockTag block height."},{"link":"/v5/api/providers/provider/#Provider-getCode","text":"If there is no contract currently deployed, the result is 0x."}]},{"title":"Provider -- Accounts Methods -- provider.getStorageAt( addr , pos [ , blockTag = latest ] ) => Promise< string< DataHexString > >","blocks":[{"link":"/v5/api/providers/provider/#Provider-getStorageAt","text":"Returns the Bytes32 value of the position pos at address addr, as of the blockTag."}]},{"title":"Provider -- Accounts Methods -- provider.getTransactionCount( address [ , blockTag = latest ] ) => Promise< number >","blocks":[{"link":"/v5/api/providers/provider/#Provider-getTransactionCount","text":"Returns the number of transactions address has ever sent, as of blockTag."},{"link":"/v5/api/providers/provider/#Provider-getTransactionCount","text":"This value is required to be the nonce for the next transaction from address sent to the network."}]},{"title":"Provider -- Blocks Methods -- provider.getBlock( block ) => Promise< Block >","blocks":[{"link":"/v5/api/providers/provider/#Provider-getBlock","text":"Get the block from the network, where the result.transactions is a list of transaction hashes."}]},{"title":"Provider -- Blocks Methods -- provider.getBlockWithTransactions( block ) => Promise< BlockWithTransactions >","blocks":[{"link":"/v5/api/providers/provider/#Provider-getBlockWithTransactions","text":"Get the block from the network, where the result.transactions is an Array of TransactionResponse objects."}]},{"title":"Provider -- Ethereum Naming Service (ENS) Methods","blocks":[{"link":"/v5/api/providers/provider/#Provider--ens-methods","text":"The Ethereum Naming Service (ENS) allows a short and easy-to-remember ENS Name to be attached to any set of keys and values."},{"link":"/v5/api/providers/provider/#Provider--ens-methods","text":"One of the most common uses for this is to use a simple name to refer to an Ethereum Address."},{"link":"/v5/api/providers/provider/#Provider--ens-methods","text":"In the ethers API, nearly anywhere that accepts an address, an ENS name may be used instead, which can simplify code and make reading and debugging much simpler."},{"link":"/v5/api/providers/provider/#Provider--ens-methods","text":"The provider offers some basic operations to help resolve and work with ENS names."}]},{"title":"Provider -- Ethereum Naming Service (ENS) Methods -- provider.getResolver( name ) => Promise< EnsResolver >","blocks":[{"link":"/v5/api/providers/provider/#Provider--ens-methods","text":"Returns an EnsResolver instance which can be used to further inquire about specific entries for an ENS name."}]},{"title":"Provider -- Ethereum Naming Service (ENS) Methods -- provider.lookupAddress( address ) => Promise< string >","blocks":[{"link":"/v5/api/providers/provider/#Provider-lookupAddress","text":"Performs a reverse lookup of the address in ENS using the Reverse Registrar."},{"link":"/v5/api/providers/provider/#Provider-lookupAddress","text":"If the name does not exist, or the forward lookup does not match, null is returned."}]},{"title":"Provider -- Ethereum Naming Service (ENS) Methods -- provider.resolveName( name ) => Promise< string< Address > >","blocks":[{"link":"/v5/api/providers/provider/#Provider-ResolveName","text":"Looks up the address of name."},{"link":"/v5/api/providers/provider/#Provider-ResolveName","text":"If the name is not owned, or does not have a Resolver configured, or the Resolver does not have an address configured, null is returned."}]},{"title":"Provider -- EnsResolver -- resolver.name => string","blocks":[{"link":"/v5/api/providers/provider/#EnsResolver","text":"The name of this resolver."}]},{"title":"Provider -- EnsResolver -- resolver.address => string< Address >","blocks":[{"link":"/v5/api/providers/provider/#EnsResolver","text":"The address of the Resolver."}]},{"title":"Provider -- EnsResolver -- resolver.getAddress( [ cointType = 60 ] ) => Promise< string >","blocks":[{"link":"/v5/api/providers/provider/#EnsResolver","text":"Returns a Promise which resolves to the EIP-2304 multicoin address stored for the coinType."},{"link":"/v5/api/providers/provider/#EnsResolver","text":"By default an Ethereum Address (coinType = 60) will be returned."}]},{"title":"Provider -- EnsResolver -- resolver.getContentHash( ) => Promise< string >","blocks":[{"link":"/v5/api/providers/provider/#EnsResolver","text":"Returns a Promise which resolves to any stored EIP-1577 content hash."}]},{"title":"Provider -- EnsResolver -- resolver.getText( key ) => Promise< string >","blocks":[{"link":"/v5/api/providers/provider/#EnsResolver","text":"Returns a Promise which resolves to any stored EIP-634 text entry for key."}]},{"title":"Provider -- Logs Methods -- provider.getLogs( filter ) => Promise< Array< Log > >","blocks":[{"link":"/v5/api/providers/provider/#Provider-getLogs","text":"Returns the Array of Log matching the filter."},{"link":"/v5/api/providers/provider/#Provider-getLogs","text":"Keep in mind that many backends will discard old events, and that requests which are too broad may get dropped as they require too many resources to execute the query."}]},{"title":"Provider -- Network Status Methods -- provider.getNetwork( ) => Promise< Network >","blocks":[{"link":"/v5/api/providers/provider/#Provider-getNetwork","text":"Returns the Network this Provider is connected to."}]},{"title":"Provider -- Network Status Methods -- provider.getBlockNumber( ) => Promise< number >","blocks":[{"link":"/v5/api/providers/provider/#Provider-getBlockNumber","text":"Returns the block number (or height) of the most recently mined block."}]},{"title":"Provider -- Network Status Methods -- provider.getGasPrice( ) => Promise< BigNumber >","blocks":[{"link":"/v5/api/providers/provider/#Provider-getGasPrice","text":"Returns a best guess of the Gas Price to use in a transaction."}]},{"title":"Provider -- Network Status Methods -- provider.ready => Promise< Network >","blocks":[{"link":"/v5/api/providers/provider/#Provider-ready","text":"Returns a Promise which will stall until the network has heen established, ignoring errors due to the target node not being active yet."},{"link":"/v5/api/providers/provider/#Provider-ready","text":"This can be used for testing or attaching scripts to wait until the node is up and running smoothly."}]},{"title":"Provider -- Transactions Methods -- provider.call( transaction [ , blockTag = latest ] ) => Promise< string< DataHexString > >","blocks":[{"link":"/v5/api/providers/provider/#Provider-call","text":"Returns the result of executing the transaction, using call."},{"link":"/v5/api/providers/provider/#Provider-call","text":"A call does not require any ether, but cannot change any state."},{"link":"/v5/api/providers/provider/#Provider-call","text":"This is useful for calling getters on Contracts."}]},{"title":"Provider -- Transactions Methods -- provider.estimateGas( transaction ) => Promise< BigNumber >","blocks":[{"link":"/v5/api/providers/provider/#Provider-estimateGas","text":"Returns an estimate of the amount of gas that would be required to submit transaction to the network."},{"link":"/v5/api/providers/provider/#Provider-estimateGas","text":"An estimate may not be accurate since there could be another transaction on the network that was not accounted for, but after being mined affected relevant state."}]},{"title":"Provider -- Transactions Methods -- provider.getTransaction( hash ) => Promise< TransactionResponse >","blocks":[{"link":"/v5/api/providers/provider/#Provider-getTransaction","text":"Returns the transaction with hash or null if the transaction is unknown."},{"link":"/v5/api/providers/provider/#Provider-getTransaction","text":"If a transaction has not been mined, this method will search the transaction pool."},{"link":"/v5/api/providers/provider/#Provider-getTransaction","text":"Various backends may have more restrictive transaction pool access (e.g."},{"link":"/v5/api/providers/provider/#Provider-getTransaction","text":"if the gas price is too low or the transaction was only recently sent and not yet indexed) in which case this method may also return null."}]},{"title":"Provider -- Transactions Methods -- provider.getTransactionReceipt( hash ) => Promise< TransactionReceipt >","blocks":[{"link":"/v5/api/providers/provider/#Provider-getTransactionReceipt","text":"Returns the transaction receipt for hash or null if the transaction has not been mined."},{"link":"/v5/api/providers/provider/#Provider-getTransactionReceipt","text":"To stall until the transaction has been mined, consider the waitForTransaction method below."}]},{"title":"Provider -- Transactions Methods -- provider.sendTransaction( transaction ) => Promise< TransactionResponse >","blocks":[{"link":"/v5/api/providers/provider/#Provider-sendTransaction","text":"Submits transaction to the network to be mined."},{"link":"/v5/api/providers/provider/#Provider-sendTransaction","text":"The transaction must be signed, and be valid (i.e."},{"link":"/v5/api/providers/provider/#Provider-sendTransaction","text":"the nonce is correct and the account has sufficient balance to pay for the transaction)."}]},{"title":"Provider -- Transactions Methods -- provider.waitForTransaction( hash [ , confirms = 1 [ , timeout ] ] ) => Promise< TxReceipt >","blocks":[{"link":"/v5/api/providers/provider/#Provider-waitForTransaction","text":"Returns a Promise which will not resolve until transactionHash is mined."},{"link":"/v5/api/providers/provider/#Provider-waitForTransaction","text":"If confirms is 0, this method is non-blocking and if the transaction has not been mined returns null."},{"link":"/v5/api/providers/provider/#Provider-waitForTransaction","text":"Otherwise, this method will block until the transaction has confirms blocks mined on top of the block in which is was mined."}]},{"title":"Provider -- Event Emitter Methods","blocks":[{"link":"/v5/api/providers/provider/#Provider--event-methods","text":"The EventEmitter API allows applications to use an Obeserver Pattern to register callbacks for when various events occur."},{"link":"/v5/api/providers/provider/#Provider--event-methods","text":"This closely follows the Event Emitter provided by other JavaScript libraries with the exception that event names support some more complex objects, not only strings."},{"link":"/v5/api/providers/provider/#Provider--event-methods","text":"The objects are normalized internally."}]},{"title":"Provider -- Event Emitter Methods -- provider.on( eventName , listener ) => this","blocks":[{"link":"/v5/api/providers/provider/#Provider-on","text":"Add a listener to be triggered for each eventName event."}]},{"title":"Provider -- Event Emitter Methods -- provider.once( eventName , listener ) => this","blocks":[{"link":"/v5/api/providers/provider/#Provider-once","text":"Add a listener to be triggered for only the next eventName event, at which time it will be removed."}]},{"title":"Provider -- Event Emitter Methods -- provider.emit( eventName , ...args ) => boolean","blocks":[{"link":"/v5/api/providers/provider/#Provider-emit","text":"Notify all listeners of the eventName event, passing args to each listener."},{"link":"/v5/api/providers/provider/#Provider-emit","text":"This is generally only used internally."}]},{"title":"Provider -- Event Emitter Methods -- provider.off( eventName [ , listener ] ) => this","blocks":[{"link":"/v5/api/providers/provider/#Provider-off","text":"Remove a listener for the eventName event."},{"link":"/v5/api/providers/provider/#Provider-off","text":"If no listener is provided, all listeners for eventName are removed."}]},{"title":"Provider -- Event Emitter Methods -- provider.removeAllListeners( [ eventName ] ) => this","blocks":[{"link":"/v5/api/providers/provider/#Provider-removeAllListeners","text":"Remove all the listeners for the eventName events."},{"link":"/v5/api/providers/provider/#Provider-removeAllListeners","text":"If no eventName is provided, all events are removed."}]},{"title":"Provider -- Event Emitter Methods -- provider.listenerCount( [ eventName ] ) => number","blocks":[{"link":"/v5/api/providers/provider/#Provider-listenerCount","text":"Returns the number of listeners for the eventName events."},{"link":"/v5/api/providers/provider/#Provider-listenerCount","text":"If no eventName is provided, the total number of listeners is returned."}]},{"title":"Provider -- Event Emitter Methods -- provider.listeners( eventName ) => Array< Listener >","blocks":[{"link":"/v5/api/providers/provider/#Provider-listeners","text":"Returns the list of Listeners for the eventName events."}]},{"title":"Provider -- Event Emitter Methods -- Events","blocks":[{"link":"/v5/api/providers/provider/#Provider--events","text":"Any of the following may be used as the eventName in the above methods."}]},{"title":"Provider -- Event Emitter Methods -- Log Filter","blocks":[{"link":"/v5/api/providers/provider/#Provider--events","text":"A filter is an object, representing a contract log Filter, which has the optional properties address (the source contract) and topics (a topic-set to match)."},{"link":"/v5/api/providers/provider/#Provider--events","text":"If address is unspecified, the filter matches any contract address."},{"link":"/v5/api/providers/provider/#Provider--events","text":"See EventFilters for more information on filtering events."}]},{"title":"Provider -- Event Emitter Methods -- Topic-Set Filter","blocks":[{"link":"/v5/api/providers/provider/#Provider--events","text":"The value of a Topic-Set Filter is a array of Topic-Sets."},{"link":"/v5/api/providers/provider/#Provider--events","text":"This event is identical to a Log Filter with the address omitted (i.e."},{"link":"/v5/api/providers/provider/#Provider--events","text":"from any contract)."},{"link":"/v5/api/providers/provider/#Provider--events","text":"See EventFilters for more information on filtering events."}]},{"title":"Provider -- Event Emitter Methods -- Transaction Filter","blocks":[{"link":"/v5/api/providers/provider/#Provider--events","text":"The value of a Transaction Filter is any transaction hash."},{"link":"/v5/api/providers/provider/#Provider--events","text":"This event is emitted on every block that is part of a chain that includes the given mined transaction."},{"link":"/v5/api/providers/provider/#Provider--events","text":"It is much more common that the once method is used than the on method."},{"link":"/v5/api/providers/provider/#Provider--events","text":"In addition to transaction and filter events, there are several named events."}]},{"title":"Provider -- Inspection Methods -- Provider.isProvider( object ) => boolean","blocks":[{"link":"/v5/api/providers/provider/#Provider-isProvider","text":"Returns true if and only if object is a Provider."}]},{"title":"Types -- BlockTag","blocks":[{"link":"/v5/api/providers/types/#providers-BlockTag","text":"A BlockTag specifies a specific block location in the Blockchain."},{"link":"/v5/api/providers/types/#providers-BlockTag","text":"\"latest\" - The most recently mined block \"earliest\" - Block #0 \"pending\" - The block currently being prepared for mining; not all operations and backends support this BlockTag number - The block at this height a negative number - The block this many blocks ago hex string - The block at this height (as a hexidecimal value)."}]},{"title":"Types -- Networkish","blocks":[{"link":"/v5/api/providers/types/#providers-Networkish","text":"A Networkish may be any of the following:."},{"link":"/v5/api/providers/types/#providers-Networkish","text":"a Network object the name of a common network as a string (e.g."},{"link":"/v5/api/providers/types/#providers-Networkish","text":"\"homestead\") the chain ID a network as a number; if the chain ID is that of a common network, the name and ensAddress will be populated, otherwise, the default name \"unknown\" and no ensAddress is used."}]},{"title":"Types -- Network","blocks":[{"link":"/v5/api/providers/types/#providers-Network","text":"A Network represents an Ethereum network."}]},{"title":"Types -- Network -- network.name => string","blocks":[{"link":"/v5/api/providers/types/#providers-Network","text":"The human-readable name of the network, such as homestead."},{"link":"/v5/api/providers/types/#providers-Network","text":"If the network name is unknown, this will be \"unknown\"."}]},{"title":"Types -- Network -- network.chainId => number","blocks":[{"link":"/v5/api/providers/types/#providers-Network","text":"The Chain ID of the network."}]},{"title":"Types -- Network -- network.ensAddress => string< Address >","blocks":[{"link":"/v5/api/providers/types/#providers-Network","text":"The address at which the ENS registry is deployed on this network."}]},{"title":"Types -- Block -- block.hash => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/providers/types/#providers-Block","text":"The hash of this block."}]},{"title":"Types -- Block -- block.parentHash => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/providers/types/#providers-Block","text":"The hash of the previous block."}]},{"title":"Types -- Block -- block.number => number","blocks":[{"link":"/v5/api/providers/types/#providers-Block","text":"The height (number) of this block."}]},{"title":"Types -- Block -- block.timestamp => number","blocks":[{"link":"/v5/api/providers/types/#providers-Block","text":"The timestamp of this block."}]},{"title":"Types -- Block -- block.nonce => string< DataHexString >","blocks":[{"link":"/v5/api/providers/types/#providers-Block","text":"The nonce used as part of the proof-of-work to mine this block."},{"link":"/v5/api/providers/types/#providers-Block","text":"This property is generally of little interest to developers."}]},{"title":"Types -- Block -- block.difficulty => number","blocks":[{"link":"/v5/api/providers/types/#providers-Block","text":"The difficulty target required to be met by the miner of the block."},{"link":"/v5/api/providers/types/#providers-Block","text":"This property is generally of little interest to developers."}]},{"title":"Types -- Block -- block.gasLimit => BigNumber","blocks":[{"link":"/v5/api/providers/types/#providers-Block","text":"The maximum amount of gas that this block was permitted to use."},{"link":"/v5/api/providers/types/#providers-Block","text":"This is a value that can be voted up or voted down by miners and is used to automatically adjust the bandwidth requirements of the network."},{"link":"/v5/api/providers/types/#providers-Block","text":"This property is generally of little interest to developers."}]},{"title":"Types -- Block -- block.gasUsed => BigNumber","blocks":[{"link":"/v5/api/providers/types/#providers-Block","text":"The total amount of gas used by all transactions in this block."}]},{"title":"Types -- Block -- block.miner => string","blocks":[{"link":"/v5/api/providers/types/#providers-Block","text":"The coinbase address of this block, which indicates the address the miner that mined this block would like the subsidy reward to go to."}]},{"title":"Types -- Block -- block.extraData => string","blocks":[{"link":"/v5/api/providers/types/#providers-Block","text":"This is extra data a miner may choose to include when mining a block."},{"link":"/v5/api/providers/types/#providers-Block","text":"This property is generally of little interest to developers."}]},{"title":"Types -- Block -- Block (with transaction hashes)","blocks":[{"link":"/v5/api/providers/types/#providers-Block","text":"Often only the hashes of the transactions included in a block are needed, so by default a block only contains this information, as it is substantially less data."}]},{"title":"Types -- Block -- block.transactions => Array< string< DataHexString< 32 > > >","blocks":[{"link":"/v5/api/providers/types/","text":"A list of the transactions hashes for each transaction this block includes."}]},{"title":"Types -- Block -- BlockWithTransactions","blocks":[{"link":"/v5/api/providers/types/#providers-BlockWithTransactions","text":"If all transactions for a block are needed, this object instead includes the full details on each transaction."}]},{"title":"Types -- Block -- block.transactions => Array< TransactionResponse >","blocks":[{"link":"/v5/api/providers/types/#providers-BlockWithTransactions","text":"A list of the transactions this block includes."}]},{"title":"Types -- Events and Logs -- filter.address => string< Address >","blocks":[{"link":"/v5/api/providers/types/#providers-EventFilter","text":"The address to filter by, or null to match any address."}]},{"title":"Types -- Events and Logs -- filter.topics => Array< string< Data< 32 > > | Array< string< Data< 32 > > > >","blocks":[{"link":"/v5/api/providers/types/#providers-EventFilter","text":"The topics to filter by or null to match any topics."},{"link":"/v5/api/providers/types/#providers-EventFilter","text":"Each entry represents an AND condition that must match, or may be null to match anything."},{"link":"/v5/api/providers/types/#providers-EventFilter","text":"If a given entry is an Array, then that entry is treated as an OR for any value in the entry."},{"link":"/v5/api/providers/types/#providers-EventFilter","text":"See Filters for more details and examples on specifying complex filters."}]},{"title":"Types -- Events and Logs -- filter.fromBlock => BlockTag","blocks":[{"link":"/v5/api/providers/types/#providers-Filter","text":"The starting block (inclusive) to search for logs matching the filter criteria."}]},{"title":"Types -- Events and Logs -- filter.toBlock => BlockTag","blocks":[{"link":"/v5/api/providers/types/#providers-Filter","text":"The end block (inclusive) to search for logs matching the filter criteria."}]},{"title":"Types -- Events and Logs -- filter.blockHash => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/providers/types/#providers-FilterByBlockHash","text":"The specific block (by its block hash) to search for logs matching the filter criteria."}]},{"title":"Types -- Events and Logs -- log.blockNumber => number","blocks":[{"link":"/v5/api/providers/types/#providers-Log","text":"The block height (number) of the block including the transaction of this log."}]},{"title":"Types -- Events and Logs -- log.blockHash => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/providers/types/#providers-Log","text":"The block hash of the block including the transaction of this log."}]},{"title":"Types -- Events and Logs -- log.removed => boolean","blocks":[{"link":"/v5/api/providers/types/#providers-Log","text":"During a re-org, if a transaction is orphaned, this will be set to true to indicate the Log entry has been removed; it will likely be emitted again in the near future when another block is mined with the transaction that triggered this log, but keep in mind the values may change."}]},{"title":"Types -- Events and Logs -- log.transactionLogIndex => number","blocks":[{"link":"/v5/api/providers/types/#providers-Log","text":"The index of this log in the transaction."}]},{"title":"Types -- Events and Logs -- log.address => string< Address >","blocks":[{"link":"/v5/api/providers/types/#providers-Log","text":"The address of the contract that generated this log."}]},{"title":"Types -- Events and Logs -- log.data => string< DataHexString >","blocks":[{"link":"/v5/api/providers/types/#providers-Log","text":"The data included in this log."}]},{"title":"Types -- Events and Logs -- log.topics => Array< string< DataHexString< 32 > > >","blocks":[{"link":"/v5/api/providers/types/#providers-Log","text":"The list of topics (indexed properties) for this log."}]},{"title":"Types -- Events and Logs -- log.transactionHash => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/providers/types/#providers-Log","text":"The transaction hash of the transaction of this log."}]},{"title":"Types -- Events and Logs -- log.transactionIndex => number","blocks":[{"link":"/v5/api/providers/types/#providers-Log","text":"The index of the transaction in the block of the transaction of this log."}]},{"title":"Types -- Events and Logs -- log.logIndex => number","blocks":[{"link":"/v5/api/providers/types/#providers-Log","text":"The index of this log across all logs in the entire block."}]},{"title":"Types -- Transactions -- TransactionRequest","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionRequest","text":"A transaction request describes a transaction that is to be sent to the network or otherwise processed."},{"link":"/v5/api/providers/types/#providers-TransactionRequest","text":"All fields are optional and may be a promise which resolves to the required type."}]},{"title":"Types -- Transactions -- transactionRequest.to => string | Promise< string >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionRequest","text":"The address (or ENS name) this transaction it to."}]},{"title":"Types -- Transactions -- transactionRequest.from => string< Address > | Promise< string< Address > >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionRequest","text":"The address this transaction is from."}]},{"title":"Types -- Transactions -- transactionRequest.nonce => number | Promise< number >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionRequest","text":"The nonce for this transaction."},{"link":"/v5/api/providers/types/#providers-TransactionRequest","text":"This should be set to the number of transactions ever sent from this address."}]},{"title":"Types -- Transactions -- transactionRequest.gasLimit => BigNumber | Promise< BigNumber >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionRequest","text":"The maximum amount of gas this transaction is permitted to use."}]},{"title":"Types -- Transactions -- transactionRequest.gasPrice => BigNumber | Promise< BigNumber >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionRequest","text":"The price (in wei) per unit of gas this transaction will pay."}]},{"title":"Types -- Transactions -- transactionRequest.data => DataHexString | Promise< DataHexString >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionRequest","text":"The transaction data."}]},{"title":"Types -- Transactions -- transactionRequest.value => BigNumber | Promise< BigNumber >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionRequest","text":"The amount (in wei) this transaction is sending."}]},{"title":"Types -- Transactions -- transactionRequest.chainId => number | Promise< number >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionRequest","text":"The chain ID this transaction is authorized on, as specified by EIP-155."},{"link":"/v5/api/providers/types/#providers-TransactionRequest","text":"If the chain ID is 0 will disable EIP-155 and the transaction will be valid on any network."},{"link":"/v5/api/providers/types/#providers-TransactionRequest","text":"This can be dangerous and care should be taken, since it allows transactions to be replayed on networks that were possibly not intended."}]},{"title":"Types -- Transactions -- TransactionResponse","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionResponse","text":"A TransactionResponse includes all properties of a Transaction as well as several properties that are useful once it has been mined."}]},{"title":"Types -- Transactions -- transaction.blockNumber => number","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionResponse","text":"The number (\"height\") of the block this transaction was mined in."},{"link":"/v5/api/providers/types/#providers-TransactionResponse","text":"If the block has not been mined, this is null."}]},{"title":"Types -- Transactions -- transaction.blockHash => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionResponse","text":"The hash of the block this transaction was mined in."},{"link":"/v5/api/providers/types/#providers-TransactionResponse","text":"If the block has not been mined, this is null."}]},{"title":"Types -- Transactions -- transaction.timestamp => number","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionResponse","text":"The timestamp of the block this transaction was mined in."},{"link":"/v5/api/providers/types/#providers-TransactionResponse","text":"If the block has not been mined, this is null."}]},{"title":"Types -- Transactions -- transaction.confirmations => number","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionResponse","text":"The number of blocks that have been mined (including the initial block) since this transaction was mined."}]},{"title":"Types -- Transactions -- transaction.raw => string< DataHexString >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionResponse","text":"The serialized transaction."}]},{"title":"Types -- Transactions -- transaction.wait( [ confirms = 1 ] ) => Promise< TransactionReceipt >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionResponse","text":"Resolves to the TransactionReceipt once the transaction has been included in the chain for confirms blocks."},{"link":"/v5/api/providers/types/#providers-TransactionResponse","text":"If confirms is 0, and the transaction has not been mined, null is returned."},{"link":"/v5/api/providers/types/#providers-TransactionResponse","text":"If the transaction execution failed (i.e."},{"link":"/v5/api/providers/types/#providers-TransactionResponse","text":"the receipt status is 0), a CALL_EXCEPTION Error will be rejected with the following properties:."},{"link":"/v5/api/providers/types/#providers-TransactionResponse","text":"error.transaction - the original transaction error.transactionHash - the hash of the transaction error.receipt - the actual receipt, with the status of 0."}]},{"title":"Types -- Transactions -- receipt.to => string< Address >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"The address this transaction is to."},{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"This is null if the transaction was an init transaction, used to deploy a contract."}]},{"title":"Types -- Transactions -- receipt.from => string< Address >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"The address this transaction is from."}]},{"title":"Types -- Transactions -- receipt.contractAddress => string< Address >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"If this transaction has a null to address, it is an init transaction used to deploy a contract, in which case this is the address created by that contract."},{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"To compute a contract address, the getContractAddress utility function can also be used with a TransactionResponse object, which requires the transaction nonce and the address of the sender."}]},{"title":"Types -- Transactions -- receipt.transactionIndex => number","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"The index of this transaction in the list of transactions included in the block this transaction was mined in."}]},{"title":"Types -- Transactions -- receipt.root => string","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"The intermediate state root of a receipt."},{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"Only transactions included in blocks before the Byzantium Hard Fork have this property, as it was replaced by the status property."},{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"The property is generally of little use to developers."},{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"At the time it could be used to verify a state transition with a fraud-proof only considering the single transaction; without it the full block must be considered."}]},{"title":"Types -- Transactions -- receipt.gasUsed => BigNumber","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"The amount of gas actually used by this transaction."}]},{"title":"Types -- Transactions -- receipt.logsBloom => string< DataHexString >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"A bloom-filter, which includes all the addresses and topics included in any log in this transaction."}]},{"title":"Types -- Transactions -- receipt.blockHash => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"The block hash of the block that this transaction was included in."}]},{"title":"Types -- Transactions -- receipt.transactionHash => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"The transaction hash of this transaction."}]},{"title":"Types -- Transactions -- receipt.logs => Array< Log >","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"All the logs emitted by this transaction."}]},{"title":"Types -- Transactions -- receipt.blockNumber => number","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"The block height (number) of the block that this transaction was included in."}]},{"title":"Types -- Transactions -- receipt.confirmations => number","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"The number of blocks that have been mined since this transaction, including the actual block it was mined in."}]},{"title":"Types -- Transactions -- receipt.cumulativeGasUsed => BigNumber","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"For the block this transaction was included in, this is the sum of the gas used by each transaction in the ordered list of transactions up to (and including) this transaction."},{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"This is generally of little interest to developers."}]},{"title":"Types -- Transactions -- receipt.byzantium => boolean","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"This is true if the block is in a post-Byzantium Hard Fork block."}]},{"title":"Types -- Transactions -- receipt.status => boolean","blocks":[{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"The status of a transaction is 1 is successful or 0 if it was reverted."},{"link":"/v5/api/providers/types/#providers-TransactionReceipt","text":"Only transactions included in blocks post-Byzantium Hard Fork have this property."}]},{"title":"Signers","blocks":[{"link":"/v5/api/signer/#signers","text":"A Signer in ethers is an abstraction of an Ethereum Account, which can be used to sign messages and transactions and send signed transactions to the Ethereum Network to execute state changing operations."},{"link":"/v5/api/signer/#signers","text":"The available operations depend largely on the sub-class used."},{"link":"/v5/api/signer/#signers","text":"For example, a Signer from MetaMask can send transactions and sign messages but cannot sign a transaction (without broadcasting it)."},{"link":"/v5/api/signer/#signers","text":"The most common Signers you will encounter are:."},{"link":"/v5/api/signer/#signers","text":"Wallet, which is a class which knows its private key and can execute any operations with it JsonRpcSigner, which is connected to a JsonRpcProvider (or sub-class) and is acquired using getSigner."}]},{"title":"Signers -- Signer","blocks":[{"link":"/v5/api/signer/#Signer","text":"The Signer class is abstract and cannot be directly instantiated."},{"link":"/v5/api/signer/#Signer","text":"Instead use one of the concrete sub-classes, such as the Wallet, VoidSigner or JsonRpcSigner."}]},{"title":"Signers -- Signer -- signer.connect( provider ) => Signer","blocks":[{"link":"/v5/api/signer/#Signer-connect","text":"Sub-classes must implement this, however they may simply throw an error if changing providers is not supported."}]},{"title":"Signers -- Signer -- signer.getAddress( ) => Promise< string< Address > >","blocks":[{"link":"/v5/api/signer/#Signer-getaddress","text":"Returns a Promise that resolves to the account address."},{"link":"/v5/api/signer/#Signer-getaddress","text":"This is a Promise so that a Signer can be designed around an asynchronous source, such as hardware wallets."},{"link":"/v5/api/signer/#Signer-getaddress","text":"Sub-classes must implement this."}]},{"title":"Signers -- Signer -- Signer.isSigner( object ) => boolean","blocks":[{"link":"/v5/api/signer/#Signer-isSigner","text":"Returns true if an only if object is a Signer."}]},{"title":"Signers -- Signer -- signer.getBalance( [ blockTag = \"latest\" ] ) => Promise< BigNumber >","blocks":[{"link":"/v5/api/signer/#Signer-getBalance","text":"Returns the balance of this wallet at blockTag."}]},{"title":"Signers -- Signer -- signer.getChainId( ) => Promise< number >","blocks":[{"link":"/v5/api/signer/#Signer-getChainId","text":"Returns the chain ID this wallet is connected to."}]},{"title":"Signers -- Signer -- signer.getGasPrice( ) => Promise< BigNumber >","blocks":[{"link":"/v5/api/signer/#Signer-getGasPrice","text":"Returns the current gas price."}]},{"title":"Signers -- Signer -- signer.getTransactionCount( [ blockTag = \"latest\" ] ) => Promise< number >","blocks":[{"link":"/v5/api/signer/#Signer-getTransactionCount","text":"Returns the number of transactions this account has ever sent."},{"link":"/v5/api/signer/#Signer-getTransactionCount","text":"This is the value required to be included in transactions as the nonce."}]},{"title":"Signers -- Signer -- signer.call( transactionRequest ) => Promise< string< DataHexString > >","blocks":[{"link":"/v5/api/signer/#Signer-call","text":"Returns the result of calling using the transactionRequest, with this account address being used as the from field."}]},{"title":"Signers -- Signer -- signer.estimateGas( transactionRequest ) => Promise< BigNumber >","blocks":[{"link":"/v5/api/signer/#Signer-estimateGas","text":"Returns the result of estimating the cost to send the transactionRequest, with this account address being used as the from field."}]},{"title":"Signers -- Signer -- signer.resolveName( ensName ) => Promise< string< Address > >","blocks":[{"link":"/v5/api/signer/#Signer-resolveName","text":"Returns the address associated with the ensName."}]},{"title":"Signers -- Signer -- signer.signMessage( message ) => Promise< string< RawSignature > >","blocks":[{"link":"/v5/api/signer/#Signer-signMessage","text":"This returns a Promise which resolves to the Raw Signature of message."},{"link":"/v5/api/signer/#Signer-signMessage","text":"Sub-classes must implement this, however they may throw if signing a message is not supported, such as in a Contract-based Wallet or Meta-Transaction-based Wallet."}]},{"title":"Signers -- Signer -- Note","blocks":[{"link":"/v5/api/signer/#Signer--signing-methods","text":"If message is a string, it is treated as a string and converted to its representation in UTF8 bytes."},{"link":"/v5/api/signer/#Signer--signing-methods","text":"If and only if a message is a Bytes will it be treated as binary data."},{"link":"/v5/api/signer/#Signer--signing-methods","text":"For example, the string \"0x1234\" is 6 characters long (and in this case 6 bytes long)."},{"link":"/v5/api/signer/#Signer--signing-methods","text":"This is not equivalent to the array [ 0x12, 0x34 ], which is 2 bytes long."},{"link":"/v5/api/signer/#Signer--signing-methods","text":"A common case is to sign a hash."},{"link":"/v5/api/signer/#Signer--signing-methods","text":"In this case, if the hash is a string, it must be converted to an array first, using the arrayify utility function."}]},{"title":"Signers -- Signer -- signer.signTransaction( transactionRequest ) => Promise< string< DataHexString > >","blocks":[{"link":"/v5/api/signer/#Signer-signTransaction","text":"Returns a Promise which resolves to the signed transaction of the transactionRequest."},{"link":"/v5/api/signer/#Signer-signTransaction","text":"This method does not populate any missing fields."},{"link":"/v5/api/signer/#Signer-signTransaction","text":"Sub-classes must implement this, however they may throw if signing a transaction is not supported, which is common for security reasons in many clients."}]},{"title":"Signers -- Signer -- signer.sendTransaction( transactionRequest ) => Promise< TransactionResponse >","blocks":[{"link":"/v5/api/signer/#Signer-sendTransaction","text":"This method populates the transactionRequest with missing fields, using populateTransaction and returns a Promise which resolves to the transaction."},{"link":"/v5/api/signer/#Signer-sendTransaction","text":"Sub-classes must implement this, however they may throw if sending a transaction is not supported, such as the VoidSigner or if the Wallet is offline and not connected to a Provider."}]},{"title":"Signers -- Signer -- signer._signTypedData( domain , types , value ) => Promise< string< RawSignature > >","blocks":[{"link":"/v5/api/signer/#Signer-signTypedData","text":"Signs the typed data value with types data structure for domain using the EIP-712 specification."}]},{"title":"Signers -- Signer -- Experimental feature (this method name will change)","blocks":[{"link":"/v5/api/signer/#Signer--signing-methods","text":"This is still an experimental feature."},{"link":"/v5/api/signer/#Signer--signing-methods","text":"If using it, please specify the exact version of ethers you are using (e.g."},{"link":"/v5/api/signer/#Signer--signing-methods","text":"spcify \"5.0.18\", not \"^5.0.18\") as the method name will be renamed from _signTypedData to signTypedData once it has been used in the field a bit."}]},{"title":"Signers -- Signer -- Sub-Classes","blocks":[{"link":"/v5/api/signer/#Signer--subclassing","text":"It is very important that all important properties of a Signer are immutable."},{"link":"/v5/api/signer/#Signer--subclassing","text":"Since Ethereum is very asynchronous and deals with critical data (such as ether and other potentially valuable crypto assets), keeping properties such as the provider and address static throughout the life-cycle of the Signer helps prevent serious issues and many other classes and libraries make this assumption."},{"link":"/v5/api/signer/#Signer--subclassing","text":"A sub-class must extend Signer and must call super()."}]},{"title":"Signers -- Signer -- signer.checkTransaction( transactionRequest ) => TransactionRequest","blocks":[{"link":"/v5/api/signer/#Signer-checkTransaction","text":"This is generally not required to be overridden, but may be needed to provide custom behaviour in sub-classes."},{"link":"/v5/api/signer/#Signer-checkTransaction","text":"This should return a copy of the transactionRequest, with any properties needed by call, estimateGas and populateTransaction (which is used by sendTransaction)."},{"link":"/v5/api/signer/#Signer-checkTransaction","text":"It should also throw an error if any unknown key is specified."},{"link":"/v5/api/signer/#Signer-checkTransaction","text":"The default implementation checks only if valid TransactionRequest properties exist and adds from to the transaction if it does not exist."},{"link":"/v5/api/signer/#Signer-checkTransaction","text":"If there is a from field it must be verified to be equal to the Signer's address."}]},{"title":"Signers -- Signer -- signer.populateTransaction( transactionRequest ) => Promise< TransactionRequest >","blocks":[{"link":"/v5/api/signer/#Signer-populateTransaction","text":"This is generally not required to be overridden, but may be needed to provide custom behaviour in sub-classes."},{"link":"/v5/api/signer/#Signer-populateTransaction","text":"This should return a copy of transactionRequest, follow the same procedure as checkTransaction and fill in any properties required for sending a transaction."},{"link":"/v5/api/signer/#Signer-populateTransaction","text":"The result should have all promises resolved; if needed the resolveProperties utility function can be used for this."},{"link":"/v5/api/signer/#Signer-populateTransaction","text":"The default implementation calls checkTransaction and resolves to if it is an ENS name, adds gasPrice, nonce, gasLimit and chainId based on the related operations on Signer."}]},{"title":"Signers -- Wallet","blocks":[{"link":"/v5/api/signer/#Wallet","text":"The Wallet class inherits Signer and can sign transactions and messages using a private key as a standard Externally Owned Account (EOA)."}]},{"title":"Signers -- Wallet -- new ethers.Wallet( privateKey [ , provider ] )","blocks":[{"link":"/v5/api/signer/#Wallet-constructor","text":"Create a new Wallet instance for privateKey and optionally connected to the provider."}]},{"title":"Signers -- Wallet -- ethers.Wallet.createRandom( [ options = {} ] ) => Wallet","blocks":[{"link":"/v5/api/signer/#Wallet-createRandom","text":"Returns a new Wallet with a random private key, generated from cryptographically secure entropy sources."},{"link":"/v5/api/signer/#Wallet-createRandom","text":"If the current environment does not have a secure entropy source, an error is thrown."},{"link":"/v5/api/signer/#Wallet-createRandom","text":"Wallets created using this method will have a mnemonic."}]},{"title":"Signers -- Wallet -- ethers.Wallet.fromEncryptedJson( json , password [ , progress ] ) => Promise< Wallet >","blocks":[{"link":"/v5/api/signer/#Wallet-fromEncryptedJson","text":"Create an instance from an encrypted JSON wallet."},{"link":"/v5/api/signer/#Wallet-fromEncryptedJson","text":"If progress is provided it will be called during decryption with a value between 0 and 1 indicating the progress towards completion."}]},{"title":"Signers -- Wallet -- ethers.Wallet.fromEncryptedJsonSync( json , password ) => Wallet","blocks":[{"link":"/v5/api/signer/#Wallet-fromEncryptedJsonSync","text":"Create an instance from an encrypted JSON wallet."},{"link":"/v5/api/signer/#Wallet-fromEncryptedJsonSync","text":"This operation will operate synchronously which will lock up the user interface, possibly for a non-trivial duration."},{"link":"/v5/api/signer/#Wallet-fromEncryptedJsonSync","text":"Most applications should use the asynchronous fromEncryptedJson instead."}]},{"title":"Signers -- Wallet -- ethers.Wallet.fromMnemonic( mnemonic [ , path , [ wordlist ] ] ) => Wallet","blocks":[{"link":"/v5/api/signer/#Wallet.fromMnemonic","text":"Create an instance from a mnemonic phrase."},{"link":"/v5/api/signer/#Wallet.fromMnemonic","text":"If path is not specified, the Ethereum default path is used (i.e."},{"link":"/v5/api/signer/#Wallet.fromMnemonic","text":"m/44'/60'/0'/0/0)."},{"link":"/v5/api/signer/#Wallet.fromMnemonic","text":"If wordlist is not specified, the English Wordlist is used."}]},{"title":"Signers -- Wallet -- wallet.address => string< Address >","blocks":[{"link":"/v5/api/signer/#Wallet--properties","text":"The address for the account this Wallet represents."}]},{"title":"Signers -- Wallet -- wallet.provider => Provider","blocks":[{"link":"/v5/api/signer/#Wallet--properties","text":"The provider this wallet is connected to, which will be used for any Blockchain Methods methods."},{"link":"/v5/api/signer/#Wallet--properties","text":"This can be null."}]},{"title":"Signers -- Wallet -- Note","blocks":[{"link":"/v5/api/signer/#Wallet--properties","text":"A Wallet instance is immutable, so if you wish to change the Provider, you may use the connect method to create a new instance connected to the desired provider."}]},{"title":"Signers -- Wallet -- wallet.publicKey => string< DataHexString< 65 > >","blocks":[{"link":"/v5/api/signer/#Wallet--properties","text":"The uncompressed public key for this Wallet represents."}]},{"title":"Signers -- Wallet -- wallet.encrypt( password , [ options = {} , [ progress ] ] ) => Promise< string >","blocks":[{"link":"/v5/api/signer/#Wallet-encrypt","text":"Encrypt the wallet using password returning a Promise which resolves to a JSON wallet."},{"link":"/v5/api/signer/#Wallet-encrypt","text":"If progress is provided it will be called during decryption with a value between 0 and 1 indicating the progress towards completion."}]},{"title":"Signers -- VoidSigner","blocks":[{"link":"/v5/api/signer/#VoidSigner","text":"A VoidSigner is a simple Signer which cannot sign."},{"link":"/v5/api/signer/#VoidSigner","text":"It is useful as a read-only signer, when an API requires a Signer as a parameter, but it is known only read-only operations will be carried."},{"link":"/v5/api/signer/#VoidSigner","text":"For example, the call operation will automatically have the provided address passed along during the execution."}]},{"title":"Signers -- VoidSigner -- new ethers.VoidSigner( address [ , provider ] ) => VoidSigner","blocks":[{"link":"/v5/api/signer/#VoidSigner","text":"Create a new instance of a VoidSigner for address."}]},{"title":"Signers -- VoidSigner -- voidSigner.address => string< Address >","blocks":[{"link":"/v5/api/signer/#VoidSigner","text":"The address of this VoidSigner."}]},{"title":"Signers -- ExternallyOwnedAccount","blocks":[{"link":"/v5/api/signer/#ExternallyOwnedAccount","text":"This is an interface which contains a minimal set of properties required for Externally Owned Accounts which can have certain operations performed, such as encoding as a JSON wallet."}]},{"title":"Signers -- ExternallyOwnedAccount -- eoa.address => string< Address >","blocks":[{"link":"/v5/api/signer/#ExternallyOwnedAccount","text":"The Address of this EOA."}]},{"title":"Signers -- ExternallyOwnedAccount -- eoa.privateKey => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/signer/#ExternallyOwnedAccount","text":"The privateKey of this EOA."}]},{"title":"Signers -- ExternallyOwnedAccount -- eoa.mnemonic => Mnemonic","blocks":[{"link":"/v5/api/signer/#ExternallyOwnedAccount","text":"Optional."},{"link":"/v5/api/signer/#ExternallyOwnedAccount","text":"The account HD mnemonic, if it has one and can be determined."},{"link":"/v5/api/signer/#ExternallyOwnedAccount","text":"Some sources do not encode the mnemonic, such as HD extended keys."}]},{"title":"AbiCoder","blocks":[{"link":"/v5/api/utils/abi/coder/#AbiCoder","text":"The AbiCoder is a collection of Coders which can be used to encode and decode the binary data formats used to interoperate between the EVM and higher level libraries."},{"link":"/v5/api/utils/abi/coder/#AbiCoder","text":"Most developers will never need to use this class directly, since the Interface class greatly simplifies these operations."}]},{"title":"AbiCoder -- Creating Instance","blocks":[{"link":"/v5/api/utils/abi/coder/#AbiCoder--creating","text":"For the most part, there should never be a need to manually create an instance of an AbiCoder, since one is created with the default coercion function when the library is loaded which can be used universally."},{"link":"/v5/api/utils/abi/coder/#AbiCoder--creating","text":"This is likely only needed by those with specific needs to override how values are coerced after they are decoded from their binary format."}]},{"title":"AbiCoder -- Creating Instance -- new ethers.utils.AbiCoder( [ coerceFunc ] )","blocks":[{"link":"/v5/api/utils/abi/coder/#AbiCoder--creating","text":"Create a new AbiCoder instance, which will call the coerceFunc on every decode, where the result of the call will be used in the Result."},{"link":"/v5/api/utils/abi/coder/#AbiCoder--creating","text":"The function signature is `(type, value)`, where the type is the string describing the type and the value is the processed value from the underlying Coder."},{"link":"/v5/api/utils/abi/coder/#AbiCoder--creating","text":"If the callback throws, the Result will contain a property that when accessed will throw, allowing for higher level libraries to recover from data errors."}]},{"title":"AbiCoder -- Creating Instance -- ethers.utils.defaultAbiCoder => AbiCoder","blocks":[{"link":"/v5/api/utils/abi/coder/#AbiCoder--creating","text":"An AbiCoder created when the library is imported which is used by the Interface."}]},{"title":"AbiCoder -- Coding Methods -- abiCoder.encode( types , values ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/abi/coder/#AbiCoder-encode","text":"Encode the array values according to the array of types, each of which may be a string or a ParamType."}]},{"title":"AbiCoder -- Coding Methods -- abiCoder.decode( types , data ) => Result","blocks":[{"link":"/v5/api/utils/abi/coder/#AbiCoder-decode","text":"Decode the data according to the array of types, each of which may be a string or ParamType."}]},{"title":"ABI Formats","blocks":[{"link":"/v5/api/utils/abi/formats/#abi-formats","text":"@TODO: Expand this section."}]},{"title":"ABI Formats -- Human-Readable ABI","blocks":[{"link":"/v5/api/utils/abi/formats/#abi-formats--human-readable-abi","text":"See Human-Readable Abi."}]},{"title":"ABI Formats -- Solidity JSON ABI","blocks":[{"link":"/v5/api/utils/abi/formats/#abi-formats--solidity","text":"See Solidity compiler."}]},{"title":"Fragments","blocks":[{"link":"/v5/api/utils/abi/fragments/#fragments","text":"Explain an ABI."}]},{"title":"Fragments -- Formats -- JSON String ABI (Solidity Output JSON)","blocks":[{"link":"/v5/api/utils/abi/fragments/","text":"The JSON ABI Format is the format that is output from the Solidity compiler."},{"link":"/v5/api/utils/abi/fragments/","text":"A JSON serialized object is always a string, which represents an Array of Objects, where each Object has various properties describing the Fragment of the ABI."},{"link":"/v5/api/utils/abi/fragments/","text":"The deserialized JSON string (which is a normal JavaScript Object) may also be passed into any function which accepts a JSON String ABI."}]},{"title":"Fragments -- Formats -- Humanb-Readable ABI","blocks":[{"link":"/v5/api/utils/abi/fragments/","text":"The Human-Readable ABI was @TODO."},{"link":"/v5/api/utils/abi/fragments/","text":"article."}]},{"title":"Fragments -- Formats -- Output Formats","blocks":[{"link":"/v5/api/utils/abi/fragments/#fragments--output-formats","text":"Each Fragment and ParamType may be output using its format method."}]},{"title":"Fragments -- Formats -- ethers.utils.FragmentTypes.full => string","blocks":[{"link":"/v5/api/utils/abi/fragments/#fragments--output-formats","text":"This is a full human-readable string, including all parameter names, any optional modifiers (e.g."},{"link":"/v5/api/utils/abi/fragments/#fragments--output-formats","text":"indexed, public, etc) and white-space to aid in human readability."}]},{"title":"Fragments -- Formats -- ethers.utils.FragmentTypes.minimal => string","blocks":[{"link":"/v5/api/utils/abi/fragments/#fragments--output-formats","text":"This is similar to full, except with no unnecessary whitespace or parameter names."},{"link":"/v5/api/utils/abi/fragments/#fragments--output-formats","text":"This is useful for storing a minimal string which can still fully reconstruct the original Fragment using Fragment . from."}]},{"title":"Fragments -- Formats -- ethers.utils.FragmentTypes.json => string","blocks":[{"link":"/v5/api/utils/abi/fragments/#fragments--output-formats","text":"This returns a JavaScript Object which is safe to call JSON.stringify on to create a JSON string."}]},{"title":"Fragments -- Formats -- ethers.utils.FragmentTypes.sighash => string","blocks":[{"link":"/v5/api/utils/abi/fragments/#fragments--output-formats","text":"This is a minimal output format, which is used by Solidity when computing a signature hash or an event topic hash."}]},{"title":"Fragments -- Formats -- Note","blocks":[{"link":"/v5/api/utils/abi/fragments/#fragments--output-formats","text":"The sighash format is insufficient to re-create the original Fragment, since it discards modifiers such as indexed, anonymous, stateMutability, etc."}]},{"title":"Fragments -- Fragment","blocks":[{"link":"/v5/api/utils/abi/fragments/#Fragment","text":"An ABI is a collection of Fragments, where each fragment specifies:."},{"link":"/v5/api/utils/abi/fragments/#Fragment","text":"An Event A Function A Constructor."}]},{"title":"Fragments -- Fragment -- fragment.name => string","blocks":[{"link":"/v5/api/utils/abi/fragments/","text":"This is the name of the Event or Function."},{"link":"/v5/api/utils/abi/fragments/","text":"This will be null for a ConstructorFragment."}]},{"title":"Fragments -- Fragment -- fragment.type => string","blocks":[{"link":"/v5/api/utils/abi/fragments/","text":"This is a string which indicates the type of the Fragment."},{"link":"/v5/api/utils/abi/fragments/","text":"This will be one of:."},{"link":"/v5/api/utils/abi/fragments/","text":"constructor event function."}]},{"title":"Fragments -- Fragment -- fragment.inputs => Array< ParamType >","blocks":[{"link":"/v5/api/utils/abi/fragments/","text":"This is an array of each ParamType for the input parameters to the Constructor, Event of Function."}]},{"title":"Fragments -- Fragment -- ethers.utils.Fragment.from( objectOrString ) => Fragment","blocks":[{"link":"/v5/api/utils/abi/fragments/#Fragment-from","text":"Returns a."}]},{"title":"Fragments -- Fragment -- ethers.utils.Fragment.isFragment( object ) => boolean","blocks":[{"link":"/v5/api/utils/abi/fragments/#Fragment-isFragment","text":"Tra lal al."}]},{"title":"Fragments -- ConstructorFragment -- fragment.gas => BigNumber","blocks":[{"link":"/v5/api/utils/abi/fragments/","text":"This is the gas limit that should be used during deployment."},{"link":"/v5/api/utils/abi/fragments/","text":"It may be null."}]},{"title":"Fragments -- ConstructorFragment -- fragment.payable => boolean","blocks":[{"link":"/v5/api/utils/abi/fragments/","text":"This is whether the constructor may receive ether during deployment as an endowment (i.e."},{"link":"/v5/api/utils/abi/fragments/","text":"msg.value != 0)."}]},{"title":"Fragments -- ConstructorFragment -- fragment.stateMutability => string","blocks":[{"link":"/v5/api/utils/abi/fragments/","text":"This is the state mutability of the constructor."},{"link":"/v5/api/utils/abi/fragments/","text":"It can be any of:."},{"link":"/v5/api/utils/abi/fragments/","text":"nonpayable payable."}]},{"title":"Fragments -- ConstructorFragment -- ethers.utils.ConstructorFragment.from( objectOrString ) => ConstructorFragment","blocks":[{"link":"/v5/api/utils/abi/fragments/#ConstructorFragment-from","text":"Tra la la..."}]},{"title":"Fragments -- ConstructorFragment -- ethers.utils.ConstructorFragment.isConstructorFragment( object ) => boolean","blocks":[{"link":"/v5/api/utils/abi/fragments/#ConstructorFragment-isConstructorFragment","text":"Tra lal al."}]},{"title":"Fragments -- EventFragment -- fragment.anonymous => boolean","blocks":[{"link":"/v5/api/utils/abi/fragments/","text":"This is whether the event is anonymous."},{"link":"/v5/api/utils/abi/fragments/","text":"An anonymous Event does not inject its topic hash as topic0 when creating a log."}]},{"title":"Fragments -- EventFragment -- ethers.utils.EventFragment.from( objectOrString ) => EventFragment","blocks":[{"link":"/v5/api/utils/abi/fragments/#EventFragment-from","text":"Tra la la..."}]},{"title":"Fragments -- EventFragment -- ethers.utils.EventFragment.isEventFragment( object ) => boolean","blocks":[{"link":"/v5/api/utils/abi/fragments/#EventFragment-isEventFragment","text":"Tra lal al."}]},{"title":"Fragments -- FunctionFragment -- fragment.constant => boolean","blocks":[{"link":"/v5/api/utils/abi/fragments/","text":"This is whether the function is constant (i.e."},{"link":"/v5/api/utils/abi/fragments/","text":"does not change state)."},{"link":"/v5/api/utils/abi/fragments/","text":"This is true if the state mutability is pure or view."}]},{"title":"Fragments -- FunctionFragment -- fragment.stateMutability => string","blocks":[{"link":"/v5/api/utils/abi/fragments/","text":"This is the state mutability of the constructor."},{"link":"/v5/api/utils/abi/fragments/","text":"It can be any of:."},{"link":"/v5/api/utils/abi/fragments/","text":"nonpayable payable pure view."}]},{"title":"Fragments -- FunctionFragment -- fragment.outputs => Array< ParamType >","blocks":[{"link":"/v5/api/utils/abi/fragments/","text":"A list of the Function output parameters."}]},{"title":"Fragments -- FunctionFragment -- ethers.utils.FunctionFragment.from( objectOrString ) => FunctionFragment","blocks":[{"link":"/v5/api/utils/abi/fragments/#FunctionFragment-from","text":"Tra la la..."}]},{"title":"Fragments -- FunctionFragment -- ethers.utils.FunctionFragment.isFunctionFragment( object ) => boolean","blocks":[{"link":"/v5/api/utils/abi/fragments/#FunctionFragment-isFunctionFragment","text":"Tra lal al."}]},{"title":"Fragments -- ParamType","blocks":[{"link":"/v5/api/utils/abi/fragments/#ParamType","text":"The following examples will represent the Solidity parameter:."},{"link":"/v5/api/utils/abi/fragments/#ParamType","text":"string foobar."}]},{"title":"Fragments -- ParamType -- paramType.name => string","blocks":[{"link":"/v5/api/utils/abi/fragments/#ParamType-name","text":"The local parameter name."},{"link":"/v5/api/utils/abi/fragments/#ParamType-name","text":"This may be null for unnamed parameters."},{"link":"/v5/api/utils/abi/fragments/#ParamType-name","text":"For example, the parameter definition string foobar would be foobar."}]},{"title":"Fragments -- ParamType -- paramType.type => string","blocks":[{"link":"/v5/api/utils/abi/fragments/#ParamType-type","text":"The full type of the parameter, including tuple and array symbols."},{"link":"/v5/api/utils/abi/fragments/#ParamType-type","text":"This may be null for unnamed parameters."},{"link":"/v5/api/utils/abi/fragments/#ParamType-type","text":"For the above example, this would be foobar."}]},{"title":"Fragments -- ParamType -- paramType.baseType => string","blocks":[{"link":"/v5/api/utils/abi/fragments/#ParamType-baseType","text":"The base type of the parameter."},{"link":"/v5/api/utils/abi/fragments/#ParamType-baseType","text":"For primitive types (e.g."},{"link":"/v5/api/utils/abi/fragments/#ParamType-baseType","text":"address, uint256, etc) this is equal to type."},{"link":"/v5/api/utils/abi/fragments/#ParamType-baseType","text":"For arrays, it will be the string array and for a tuple, it will be the string tuple."}]},{"title":"Fragments -- ParamType -- paramType.indexed => boolean","blocks":[{"link":"/v5/api/utils/abi/fragments/#ParamType-indexed","text":"Whether the parameter has been marked as indexed."},{"link":"/v5/api/utils/abi/fragments/#ParamType-indexed","text":"This only applies to parameters which are part of an EventFragment."}]},{"title":"Fragments -- ParamType -- paramType.arrayChildren => ParamType","blocks":[{"link":"/v5/api/utils/abi/fragments/#ParamType-arrayChildren","text":"The type of children of the array."},{"link":"/v5/api/utils/abi/fragments/#ParamType-arrayChildren","text":"This is null for any parameter which is not an array."}]},{"title":"Fragments -- ParamType -- paramType.arrayLength => number","blocks":[{"link":"/v5/api/utils/abi/fragments/#ParamType-arrayLength","text":"The length of the array, or -1 for dynamic-length arrays."},{"link":"/v5/api/utils/abi/fragments/#ParamType-arrayLength","text":"This is null for parameters which are not arrays."}]},{"title":"Fragments -- ParamType -- paramType.components => Array< ParamType >","blocks":[{"link":"/v5/api/utils/abi/fragments/#ParamType-components","text":"The components of a tuple."},{"link":"/v5/api/utils/abi/fragments/#ParamType-components","text":"This is null for non-tuple parameters."}]},{"title":"Fragments -- ParamType -- Methods","blocks":[{"link":"/v5/api/utils/abi/fragments/#ParamType","text":"Tra la la..."}]},{"title":"Fragments -- ParamType -- paramType.format( [ outputType = sighash ] )","blocks":[{"link":"/v5/api/utils/abi/fragments/","text":"Tra la la..."}]},{"title":"Fragments -- ParamType -- ethers.utils.ParamType.from( objectOrString ) => ParamType","blocks":[{"link":"/v5/api/utils/abi/fragments/#ParamType-from","text":"Tra la la..."}]},{"title":"Fragments -- ParamType -- ethers.utils.ParamType.isParamType( object ) => boolean","blocks":[{"link":"/v5/api/utils/abi/fragments/#ParamType-isParamType","text":"Tra la la..."}]},{"title":"Application Binary Interface","blocks":[{"link":"/v5/api/utils/abi/","text":"An Application Binary Interface (ABI) is a collection of Fragments which specify how to interact with various components of a Contract."},{"link":"/v5/api/utils/abi/","text":"An Interface helps organize Fragments by type as well as provides the functionality required to encode, decode and work with each component."},{"link":"/v5/api/utils/abi/","text":"Most developers will not require this low-level access to encoding and decoding the binary data on the network and will most likely use a Contract which provides a more convenient interface."},{"link":"/v5/api/utils/abi/","text":"Some framework, tool developers or developers using advanced techniques may find these classes and utilities useful."}]},{"title":"Interface","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface","text":"The Interface Class abstracts the encoding and decoding required to interact with contracts on the Ethereum network."},{"link":"/v5/api/utils/abi/interface/#Interface","text":"Many of the standards organically evolved along side the Solidity language, which other languages have adopted to remain compatible with existing deployed contracts."},{"link":"/v5/api/utils/abi/interface/#Interface","text":"The EVM itself does not understand what the ABI is."},{"link":"/v5/api/utils/abi/interface/#Interface","text":"It is simply an agreed upon set of formats to encode various types of data which each contract can expect so they can interoperate with each other."}]},{"title":"Interface -- Creating Instances -- new ethers.utils.Interface( abi )","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--creating","text":"Create a new Interface from a JSON string or object representing abi."},{"link":"/v5/api/utils/abi/interface/#Interface--creating","text":"The abi may be a JSON string or the parsed Object (using JSON.parse) which is emitted by the Solidity compiler (or compatible languages)."},{"link":"/v5/api/utils/abi/interface/#Interface--creating","text":"The abi may also be a Human-Readable Abi, which is a format the Ethers created to simplify manually typing the ABI into the source and so that a Contract ABI can also be referenced easily within the same source file."}]},{"title":"Interface -- Properties -- interface.fragments => Array< Fragment >","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--properties","text":"All the Fragments in the interface."}]},{"title":"Interface -- Properties -- interface.events => Array< EventFragment >","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--properties","text":"All the Event Fragments in the interface."}]},{"title":"Interface -- Properties -- interface.functions => Array< FunctionFragment >","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--properties","text":"All the Function Fragments in the interface."}]},{"title":"Interface -- Properties -- interface.deploy => ConstructorFragment","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--properties","text":"The Constructor Fragments for the interface."}]},{"title":"Interface -- Formatting -- interface.format( [ format ] ) => string | Array< string >","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--formatting","text":"Return the formatted Interface."},{"link":"/v5/api/utils/abi/interface/#Interface--formatting","text":"If the format type is json a single string is returned, otherwise an Array of the human-readable strings is returned."}]},{"title":"Interface -- Fragment Access -- interface.getFunction( fragment ) => FunctionFragment","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--fragments","text":"Returns the FunctionFragment for fragment (see Specifying Fragments)."}]},{"title":"Interface -- Fragment Access -- interface.getEvent( fragment ) => EventFragment","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--fragments","text":"Returns the EventFragment for fragment (see Specifying Fragments)."}]},{"title":"Interface -- Signature and Topic Hashes -- interface.getSighash( fragment ) => string< DataHexString< 4 > >","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--selectors","text":"Return the sighash (or Function Selector) for fragment (see Specifying Fragments)."}]},{"title":"Interface -- Signature and Topic Hashes -- interface.getEventTopic( fragment ) => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--selectors","text":"Return the topic hash for fragment (see Specifying Fragments)."}]},{"title":"Interface -- Encoding Data -- interface.encodeDeploy( [ values ] ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--encoding","text":"Return the encoded deployment data, which can be concatenated to the deployment bytecode of a contract to pass values into the contract constructor."}]},{"title":"Interface -- Encoding Data -- interface.encodeFilterTopics( fragment [ , values ] ) => Array< topic | Array< topic > >","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--encoding","text":"Returns the encoded topic filter, which can be passed to getLogs for fragment (see Specifying Fragments) for the given values."},{"link":"/v5/api/utils/abi/interface/#Interface--encoding","text":"Each topic is a 32 byte (64 nibble) DataHexString."}]},{"title":"Interface -- Encoding Data -- interface.encodeFunctionData( fragment [ , values ] ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--encoding","text":"Returns the encoded data, which can be used as the data for a transaction for fragment (see Specifying Fragments) for the given values."}]},{"title":"Interface -- Encoding Data -- interface.encodeFunctionResult( fragment [ , values ] ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--encoding","text":"Returns the encoded result, which would normally be the response from a call for fragment (see Specifying Fragments) for the given values."},{"link":"/v5/api/utils/abi/interface/#Interface--encoding","text":"Most developers will not need this method, but may be useful for authors of a mock blockchain."}]},{"title":"Interface -- Decoding Data -- interface.decodeEventLog( fragment , data [ , topics ] ) => Result","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--decoding","text":"Returns the decoded event values from an event log for fragment (see Specifying Fragments) for the given data with the optional topics."},{"link":"/v5/api/utils/abi/interface/#Interface--decoding","text":"If topics is not specified, placeholders will be inserted into the result."}]},{"title":"Interface -- Decoding Data -- interface.decodeFunctionData( fragment , data ) => Result","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--decoding","text":"Returns the decoded values from transaction data for fragment (see Specifying Fragments) for the given data."},{"link":"/v5/api/utils/abi/interface/#Interface--decoding","text":"Most developers will not need this method, but may be useful for debugging or inspecting transactions."}]},{"title":"Interface -- Decoding Data -- interface.decodeFunctionResult( fragment , data ) => Result","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--decoding","text":"Returns the decoded values from the result of a call for fragment (see Specifying Fragments) for the given data."}]},{"title":"Interface -- Parsing","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--parsing","text":"The functions are generally the most useful for most developers."},{"link":"/v5/api/utils/abi/interface/#Interface--parsing","text":"They will automatically search the ABI for a matching Event or Function and decode the components as a fully specified description."}]},{"title":"Interface -- Parsing -- interface.parseLog( log ) => LogDescription","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--parsing","text":"Search the event that matches the log topic hash and parse the values the log represents."}]},{"title":"Interface -- Parsing -- interface.parseTransaction( transaction ) => TransactionDescription","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--parsing","text":"Search for the function that matches the transaction data sighash and parse the transaction properties."}]},{"title":"Interface -- Types -- Result","blocks":[{"link":"/v5/api/utils/abi/interface/#Result","text":"A Result is an array, so each value can be accessed as a positional argument."},{"link":"/v5/api/utils/abi/interface/#Result","text":"Additionally, if values are named, the identical object as its positional value can be accessed by its name."},{"link":"/v5/api/utils/abi/interface/#Result","text":"The name length is however reserved as it is part of the Array, so any named value for this key is renamed to _length."},{"link":"/v5/api/utils/abi/interface/#Result","text":"If there is a name collision, only the first is available by its key."}]},{"title":"Interface -- Types -- logDescription.args => Result","blocks":[{"link":"/v5/api/utils/abi/interface/#LogDescription","text":"The values of the input parameters of the event."}]},{"title":"Interface -- Types -- logDescription.eventFragment => EventFragment","blocks":[{"link":"/v5/api/utils/abi/interface/#LogDescription","text":"The EventFragment which matches the topic in the Log."}]},{"title":"Interface -- Types -- logDescription.name => string","blocks":[{"link":"/v5/api/utils/abi/interface/#LogDescription","text":"The event name."},{"link":"/v5/api/utils/abi/interface/#LogDescription","text":"(e.g."},{"link":"/v5/api/utils/abi/interface/#LogDescription","text":"Transfer)."}]},{"title":"Interface -- Types -- logDescription.signature => string","blocks":[{"link":"/v5/api/utils/abi/interface/#LogDescription","text":"The event signature."},{"link":"/v5/api/utils/abi/interface/#LogDescription","text":"(e.g."},{"link":"/v5/api/utils/abi/interface/#LogDescription","text":"Transfer(address,address,uint256))."}]},{"title":"Interface -- Types -- logDescription.topic => string","blocks":[{"link":"/v5/api/utils/abi/interface/#LogDescription","text":"The topic hash."}]},{"title":"Interface -- Types -- transactionDescription.args => Result","blocks":[{"link":"/v5/api/utils/abi/interface/#TransactionDescription","text":"The decoded values from the transaction data which were passed as the input parameters."}]},{"title":"Interface -- Types -- transactionDescription.functionFragment => FunctionFragment","blocks":[{"link":"/v5/api/utils/abi/interface/#TransactionDescription","text":"The FunctionFragment which matches the sighash in the transaction data."}]},{"title":"Interface -- Types -- transactionDescription.name => string","blocks":[{"link":"/v5/api/utils/abi/interface/#TransactionDescription","text":"The name of the function."},{"link":"/v5/api/utils/abi/interface/#TransactionDescription","text":"(e.g."},{"link":"/v5/api/utils/abi/interface/#TransactionDescription","text":"transfer)."}]},{"title":"Interface -- Types -- transactionDescription.sighash => string","blocks":[{"link":"/v5/api/utils/abi/interface/#TransactionDescription","text":"The sighash (or function selector) that matched the transaction data."}]},{"title":"Interface -- Types -- transactionDescription.signature => string","blocks":[{"link":"/v5/api/utils/abi/interface/#TransactionDescription","text":"The signature of the function."},{"link":"/v5/api/utils/abi/interface/#TransactionDescription","text":"(e.g."},{"link":"/v5/api/utils/abi/interface/#TransactionDescription","text":"transfer(address,uint256))."}]},{"title":"Interface -- Types -- transactionDescription.value => BigNumber","blocks":[{"link":"/v5/api/utils/abi/interface/#TransactionDescription","text":"The value from the transaction."}]},{"title":"Interface -- Specifying Fragments","blocks":[{"link":"/v5/api/utils/abi/interface/#Interface--specifying-fragments","text":"When specifying a fragment to any of the functions in an Interface, any of the following may be used:."},{"link":"/v5/api/utils/abi/interface/#Interface--specifying-fragments","text":"The name of the event or function, if it is unique and non-ambiguous within the ABI (e.g."},{"link":"/v5/api/utils/abi/interface/#Interface--specifying-fragments","text":"transfer) The signature of the event or function."},{"link":"/v5/api/utils/abi/interface/#Interface--specifying-fragments","text":"The signature is normalized, so, for example, uint and uint256 are equivalent (e.g."},{"link":"/v5/api/utils/abi/interface/#Interface--specifying-fragments","text":"transfer(address, uint)) The sighash or topichash of the function."},{"link":"/v5/api/utils/abi/interface/#Interface--specifying-fragments","text":"The sighash is often referred to the function selector in Solidity (e.g."},{"link":"/v5/api/utils/abi/interface/#Interface--specifying-fragments","text":"0xa9059cbb) A Fragment."}]},{"title":"Addresses","blocks":[{"link":"/v5/api/utils/address/#addresses","text":"Explain addresses,formats and checksumming here."},{"link":"/v5/api/utils/address/#addresses","text":"Also see: constants.AddressZero."}]},{"title":"Addresses -- Address Formats -- Address","blocks":[{"link":"/v5/api/utils/address/#address","text":"An Address is a DataHexString of 20 bytes (40 nibbles), with optional mixed case."},{"link":"/v5/api/utils/address/#address","text":"If the case is mixed, it is a Checksum Address, which uses a specific pattern of uppercase and lowercase letters within a given address to reduce the risk of errors introduced from typing an address or cut and paste issues."},{"link":"/v5/api/utils/address/#address","text":"All functions that return an Address will return a Checksum Address."}]},{"title":"Addresses -- Address Formats -- ICAP Address","blocks":[{"link":"/v5/api/utils/address/#address-icap","text":"The ICAP Address Format was an early attempt to introduce a checksum into Ethereum addresses using the popular banking industry's IBAN format with the country code specified as XE."},{"link":"/v5/api/utils/address/#address-icap","text":"Due to the way IBAN encodes address, only addresses that fit into 30 base-36 characters are actually compatible, so the format was adapted to support 31 base-36 characters which is large enough for a full Ethereum address, however the preferred method was to select a private key whose address has a 0 as the first byte, which allows the address to be formatted as a fully compatibly standard IBAN address with 30 base-36 characters."},{"link":"/v5/api/utils/address/#address-icap","text":"In general this format is no longer widely supported anymore, however any function that accepts an address can receive an ICAP address, and it will be converted internally."},{"link":"/v5/api/utils/address/#address-icap","text":"To convert an address into the ICAP format, see getIcapAddress."}]},{"title":"Addresses -- Converting and Verifying -- ethers.utils.getAddress( address ) => string< Address >","blocks":[{"link":"/v5/api/utils/address/#utils-getAddress","text":"Returns address as a Checksum Address."},{"link":"/v5/api/utils/address/#utils-getAddress","text":"If address is an invalid 40-nibble HexString or if it contains mixed case and the checksum is invalid, an INVALID_ARGUMENT Error is thrown."},{"link":"/v5/api/utils/address/#utils-getAddress","text":"The value of address may be any supported address format."}]},{"title":"Addresses -- Converting and Verifying -- ethers.utils.getIcapAddress( address ) => string< IcapAddress >","blocks":[{"link":"/v5/api/utils/address/#utils-getIcapAddress","text":"Returns address as an ICAP address."},{"link":"/v5/api/utils/address/#utils-getIcapAddress","text":"Supports the same restrictions as getAddress."}]},{"title":"Addresses -- Converting and Verifying -- ethers.utils.isAddress( address ) => boolean","blocks":[{"link":"/v5/api/utils/address/#utils-isAddress","text":"Returns true if address is valid (in any supported format)."}]},{"title":"Addresses -- Derivation -- ethers.utils.computeAddress( publicOrPrivateKey ) => string< Address >","blocks":[{"link":"/v5/api/utils/address/#utils-computeAddress","text":"Returns the address for publicOrPrivateKey."},{"link":"/v5/api/utils/address/#utils-computeAddress","text":"A public key may be compressed or uncompressed, and a private key will be converted automatically to a public key for the derivation."}]},{"title":"Addresses -- Derivation -- ethers.utils.recoverAddress( digest , signature ) => string< Address >","blocks":[{"link":"/v5/api/utils/address/#utils-recoverAddress","text":"Use ECDSA Public Key Recovery to determine the address that signed digest to which generated signature."}]},{"title":"Addresses -- Contracts Addresses -- ethers.utils.getContractAddress( transaction ) => string< Address >","blocks":[{"link":"/v5/api/utils/address/#utils-getContractAddress","text":"Returns the contract address that would result if transaction was used to deploy a contract."}]},{"title":"Addresses -- Contracts Addresses -- ethers.utils.getCreate2Address( from , salt , initCodeHash ) => string< Address >","blocks":[{"link":"/v5/api/utils/address/#utils-getCreate2Address","text":"Returns the contract address that would result from the given CREATE2 call."}]},{"title":"BigNumber","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumber","text":"Many operations in Ethereum operation on numbers which are outside the range of safe values to use in JavaScript."},{"link":"/v5/api/utils/bignumber/#BigNumber","text":"A BigNumber is an object which safely allows mathematical operations on numbers of any magnitude."},{"link":"/v5/api/utils/bignumber/#BigNumber","text":"Most operations which need to return a value will return a BigNumber and parameters which accept values will generally accept them."}]},{"title":"BigNumber -- Types -- BigNumberish","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumberish","text":"Many functions and methods in this library take in values which can be non-ambiguously and safely converted to a BigNumber."},{"link":"/v5/api/utils/bignumber/#BigNumberish","text":"These values can be specified as:."}]},{"title":"BigNumber -- Types -- string","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumberish","text":"A HexString or a decimal string, either of which may be negative."}]},{"title":"BigNumber -- Types -- BytesLike","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumberish","text":"A BytesLike Object, such as an Array or Uint8Array."}]},{"title":"BigNumber -- Types -- BigNumber","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumberish","text":"An existing BigNumber instance."}]},{"title":"BigNumber -- Types -- number","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumberish","text":"A number that is within the safe range for JavaScript numbers."}]},{"title":"BigNumber -- Types -- BigInt","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumberish","text":"A JavaScript BigInt object, on environments that support BigInt."}]},{"title":"BigNumber -- Creating Instances","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumber--creating","text":"The constructor of BigNumber cannot be called directly."},{"link":"/v5/api/utils/bignumber/#BigNumber--creating","text":"Instead, Use the static BigNumber.from."}]},{"title":"BigNumber -- Creating Instances -- ethers.BigNumber.from( aBigNumberish ) => BigNumber","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumber--creating","text":"Returns an instance of a BigNumber for aBigNumberish."}]},{"title":"BigNumber -- Methods","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumber--methods","text":"The BigNumber class is immutable, so no operations can change the value it represents."}]},{"title":"BigNumber -- Methods -- BigNumber.add( otherValue ) => BigNumber","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns a BigNumber with the value of BigNumber + otherValue."}]},{"title":"BigNumber -- Methods -- BigNumber.sub( otherValue ) => BigNumber","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns a BigNumber with the value of BigNumber - otherValue."}]},{"title":"BigNumber -- Methods -- BigNumber.mul( otherValue ) => BigNumber","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns a BigNumber with the value of BigNumber × otherValue."}]},{"title":"BigNumber -- Methods -- BigNumber.div( divisor ) => BigNumber","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns a BigNumber with the value of BigNumber ÷ divisor."}]},{"title":"BigNumber -- Methods -- BigNumber.mod( divisor ) => BigNumber","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns a BigNumber with the value of the remainder of BigNumber ÷ divisor."}]},{"title":"BigNumber -- Methods -- BigNumber.pow( exponent ) => BigNumber","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns a BigNumber with the value of BigNumber to the power of exponent."}]},{"title":"BigNumber -- Methods -- BigNumber.abs( ) => BigNumber","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns a BigNumber with the absolute value of BigNumber."}]},{"title":"BigNumber -- Methods -- BigNumber.mask( bitcount ) => BigNumber","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns a BigNumber with the value of BigNumber with bits beyond the bitcount least significant bits set to zero."}]},{"title":"BigNumber -- Methods -- Two's Complement","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumber--methods","text":"Two's Complement is an elegant method used to encode and decode fixed-width signed values while efficiently preserving mathematical operations."},{"link":"/v5/api/utils/bignumber/#BigNumber--methods","text":"Most users will not need to interact with these."}]},{"title":"BigNumber -- Methods -- BigNumber.fromTwos( bitwidth ) => BigNumber","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns a BigNumber with the value of BigNumber converted from twos-complement with bitwidth."}]},{"title":"BigNumber -- Methods -- BigNumber.toTwos( bitwidth ) => BigNumber","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns a BigNumber with the value of BigNumber converted to twos-complement with bitwidth."}]},{"title":"BigNumber -- Methods -- BigNumber.eq( otherValue ) => boolean","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns true if and only if the value of BigNumber is equal to otherValue."}]},{"title":"BigNumber -- Methods -- BigNumber.lt( otherValue ) => boolean","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns true if and only if the value of BigNumber < otherValue."}]},{"title":"BigNumber -- Methods -- BigNumber.lte( otherValue ) => boolean","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns true if and only if the value of BigNumber ≤ otherValue."}]},{"title":"BigNumber -- Methods -- BigNumber.gt( otherValue ) => boolean","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns true if and only if the value of BigNumber > otherValue."}]},{"title":"BigNumber -- Methods -- BigNumber.gte( otherValue ) => boolean","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns true if and only if the value of BigNumber ≥ otherValue."}]},{"title":"BigNumber -- Methods -- BigNumber.isZero( ) => boolean","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns true if and only if the value of BigNumber is zero."}]},{"title":"BigNumber -- Methods -- BigNumber.toNumber( ) => number","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns the value of BigNumber as a JavaScript value."},{"link":"/v5/api/utils/bignumber/","text":"This will throw an error if the value is greater than or equal to Number.MAX_SAFE_INTEGER or less than or equal to Number.MIN_SAFE_INTEGER."}]},{"title":"BigNumber -- Methods -- BigNumber.toString( ) => string","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns the value of BigNumber as a base-10 string."}]},{"title":"BigNumber -- Methods -- BigNumber.toHexString( ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns the value of BigNumber as a base-16, 0x-prefixed DataHexString."}]},{"title":"BigNumber -- Methods -- ethers.BigNumber.isBigNumber( object ) => boolean","blocks":[{"link":"/v5/api/utils/bignumber/","text":"Returns true if and only if the object is a BigNumber object."}]},{"title":"BigNumber -- Notes","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"This section is a for a couple of questions that come up frequently."}]},{"title":"BigNumber -- Notes -- Why can't I just use numbers?","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumber--notes-safenumbers","text":"The first problem many encounter when dealing with Ethereum is the concept of numbers."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes-safenumbers","text":"Most common currencies are broken down with very little granularity."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes-safenumbers","text":"For example, there are only 100 cents in a single dollar."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes-safenumbers","text":"However, there are 1018 wei in a single ether."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes-safenumbers","text":"JavaScript uses IEEE 754 double-precision binary floating point numbers to represent numeric values."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes-safenumbers","text":"As a result, there are holes in the integer set after 9,007,199,254,740,991; which is problematic for Ethereum because that is only around 0.009 ether (in wei), which means any value over that will begin to experience rounding errors."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes-safenumbers","text":"To demonstrate how this may be an issue in your code, consider:."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes-safenumbers","text":"To remedy this, all numbers (which can be large) are stored and manipulated as Big Numbers."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes-safenumbers","text":"The functions parseEther( etherString ) and formatEther( wei ) can be used to convert between string representations, which are displayed to or entered by the user and Big Number representations which can have mathematical operations handled safely."}]},{"title":"BigNumber -- Notes -- Why not BigNumber.js, BN.js, BigDecimal, etc?","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"Everyone has their own favourite Big Number library, and once someone has chosen one, it becomes part of their identity, like their editor, vi vs emacs."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"There are over 100 Big Number libraries on npm."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"One of the biggest differences between the Ethers BigNumber object and other libraries is that it is immutable, which is very important when dealing with the asynchronous nature of the blockchain."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"Capturing the value is not safe in async functions, so immutability protects us from easy to make mistakes, which is not possible on the low-level library's objects which supports myriad in-place operations."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"Second, the Ethers BigNumber provides all the functionality required internally and should generally be sufficient for most developers while not exposing some of the more advanced and rare functionality."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"So it will be easier to swap out the underlying library without impacting consumers."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"For example, if BN.js was exposed, someone may use the greatest-common-denominator functions, which would then be functionality the replacing library should also provide to ensure anyone depending on that functionality is not broken."}]},{"title":"BigNumber -- Notes -- Why BN.js??","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"The reason why BN.js is used internally as the big number is because that is the library used by elliptic."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"Therefore it must be included regardless, so we leverage that library rather than adding another Big Number library, which would mean two different libraries offering the same functionality."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"This has saved about 85kb (80% of this library size) of library size over other libraries which include separate Big Number libraries for various purposes."}]},{"title":"BigNumber -- Notes -- Allow us to set a global Big Number library?","blocks":[{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"Another comment that comes up frequently is the desire to specify a global user-defined Big Number library, which all functions would return."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"This becomes problematic since your code may live along side other libraries or code that use Ethers."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"In fact, even Ethers uses a lot of the public functions internally."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"If you, for example, used a library that used a.plus(b) instead of a.add(b), this would break Ethers when it tries to compute fees internally, and other libraries likely have similar logic."},{"link":"/v5/api/utils/bignumber/#BigNumber--notes","text":"But, the BigNumber prototype is exposed, so you can always add a toMyCustomBigNumber() method to all BigNumber's globally which is safe."}]},{"title":"Byte Manipulation","blocks":[{"link":"/v5/api/utils/bytes/","text":"While there are many high-level APIs for interacting with Ethereum, such as Contracts and Providers, a lot of the low level access requires byte manipulation operations."},{"link":"/v5/api/utils/bytes/","text":"Many of these operations are used internally, but can also be used to help normalize binary data representations from the output of various functions and methods."}]},{"title":"Byte Manipulation -- Types -- Bytes","blocks":[{"link":"/v5/api/utils/bytes/#Bytes","text":"A Bytes is any object which is an Array or TypedArray with each value in the valid byte range (i.e."},{"link":"/v5/api/utils/bytes/#Bytes","text":"between 0 and 255 inclusive), or is an Object with a length property where each indexed property is in the valid byte range."}]},{"title":"Byte Manipulation -- Types -- BytesLike","blocks":[{"link":"/v5/api/utils/bytes/#BytesLike","text":"A BytesLike can be either a Bytes or a DataHexString."}]},{"title":"Byte Manipulation -- Types -- DataHexString","blocks":[{"link":"/v5/api/utils/bytes/#DataHexString","text":"A DataHexstring is identical to a HexString except that it has an even number of nibbles, and therefore is a valid representation of binary data as a string."}]},{"title":"Byte Manipulation -- Types -- HexString","blocks":[{"link":"/v5/api/utils/bytes/#HexString","text":"A Hexstring is a string which has a 0x prefix followed by any number of nibbles (i.e."},{"link":"/v5/api/utils/bytes/#HexString","text":"case-insensitive hexadecimal characters, 0-9 and a-f)."}]},{"title":"Byte Manipulation -- Types -- Signature","blocks":[{"link":"/v5/api/utils/bytes/#Signature","text":"r and s --- The x co-ordinate of r and the s value of the signature v --- The parity of the y co-ordinate of r _vs --- The compact representation of the s and v recoveryParam --- The normalized (i.e."},{"link":"/v5/api/utils/bytes/#Signature","text":"0 or 1) value of v."}]},{"title":"Byte Manipulation -- Types -- Raw Signature","blocks":[{"link":"/v5/api/utils/bytes/#signature-raw","text":"A Raw Signature is a common Signature format where the r, s and v are concatenated into a 65 byte (130 nibble) DataHexString."}]},{"title":"Byte Manipulation -- Types -- SignatureLike","blocks":[{"link":"/v5/api/utils/bytes/#SignatureLike","text":"A SignatureLike is similar to a Signature, except redundant properties may be omitted or it may be a Raw Signature."},{"link":"/v5/api/utils/bytes/#SignatureLike","text":"For example, if _vs is specified, s and v may be omitted."},{"link":"/v5/api/utils/bytes/#SignatureLike","text":"Likewise, if recoveryParam is provided, v may be omitted (as in these cases the missing values can be computed)."}]},{"title":"Byte Manipulation -- Inspection -- ethers.utils.isBytes( object ) => boolean","blocks":[{"link":"/v5/api/utils/bytes/#utils-isBytes","text":"Returns true if and only if object is a valid Bytes."}]},{"title":"Byte Manipulation -- Inspection -- ethers.utils.isBytesLike( object ) => boolean","blocks":[{"link":"/v5/api/utils/bytes/#utils-isBytesLike","text":"Returns true if and only if object is a Bytes or DataHexString."}]},{"title":"Byte Manipulation -- Inspection -- ethers.utils.isHexString( object , [ length ] ) => boolean","blocks":[{"link":"/v5/api/utils/bytes/#utils-isHexString","text":"Returns true if and only if object is a valid hex string."},{"link":"/v5/api/utils/bytes/#utils-isHexString","text":"If length is specified and object is not a valid DataHexString of length bytes, an InvalidArgument error is thrown."}]},{"title":"Byte Manipulation -- Converting between Arrays and Hexstrings -- ethers.utils.arrayify( DataHexStringOrArrayish [ , options ] ) => Uint8Array","blocks":[{"link":"/v5/api/utils/bytes/#utils-arrayify","text":"Converts DataHexStringOrArrayish to a Uint8Array."}]},{"title":"Byte Manipulation -- Converting between Arrays and Hexstrings -- ethers.utils.hexlify( hexstringOrArrayish ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/bytes/#utils-hexlify","text":"Converts hexstringOrArrayish to a DataHexString."}]},{"title":"Byte Manipulation -- Converting between Arrays and Hexstrings -- ethers.utils.hexValue( aBigNumberish ) => string< HexString >","blocks":[{"link":"/v5/api/utils/bytes/#utils-hexValue","text":"Converts aBigNumberish to a HexString, with no unnecessary leading zeros."}]},{"title":"Byte Manipulation -- Array Manipulation -- ethers.utils.concat( arrayOfBytesLike ) => Uint8Array","blocks":[{"link":"/v5/api/utils/bytes/#utils-concat","text":"Concatenates all the BytesLike in arrayOfBytesLike into a single Uint8Array."}]},{"title":"Byte Manipulation -- Array Manipulation -- ethers.utils.stripZeros( aBytesLike ) => Uint8Array","blocks":[{"link":"/v5/api/utils/bytes/#utils-stripZeros","text":"Returns a Uint8Array with all leading 0 bytes of aBtyesLike removed."}]},{"title":"Byte Manipulation -- Array Manipulation -- ethers.utils.zeroPad( aBytesLike , length ) => Uint8Array","blocks":[{"link":"/v5/api/utils/bytes/#utils-zeroPad","text":"Returns a Uint8Array of the data in aBytesLike with 0 bytes prepended to length bytes long."},{"link":"/v5/api/utils/bytes/#utils-zeroPad","text":"If aBytesLike is already longer than length bytes long, an InvalidArgument error will be thrown."}]},{"title":"Byte Manipulation -- Hexstring Manipulation -- ethers.utils.hexConcat( arrayOfBytesLike ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/bytes/#utils-hexConcat","text":"Concatenates all the BytesLike in arrayOfBytesLike into a single DataHexString."}]},{"title":"Byte Manipulation -- Hexstring Manipulation -- ethers.utils.hexDataLength( aBytesLike ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/bytes/#utils-hexDataLength","text":"Returns the length (in bytes) of aBytesLike."}]},{"title":"Byte Manipulation -- Hexstring Manipulation -- ethers.utils.hexDataSlice( aBytesLike , offset [ , endOffset ] ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/bytes/#utils-hexDataSlice","text":"Returns a DataHexString representation of a slice of aBytesLike, from offset (in bytes) to endOffset (in bytes)."},{"link":"/v5/api/utils/bytes/#utils-hexDataSlice","text":"If endOffset is omitted, the length of aBytesLike is used."}]},{"title":"Byte Manipulation -- Hexstring Manipulation -- ethers.utils.hexStripZeros( aBytesLike ) => string< HexString >","blocks":[{"link":"/v5/api/utils/bytes/#utils-hexStripZeros","text":"Returns a HexString representation of aBytesLike with all leading zeros removed."}]},{"title":"Byte Manipulation -- Hexstring Manipulation -- ethers.utils.hexZeroPad( aBytesLike , length ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/bytes/#utils-hexZeroPad","text":"Returns a DataHexString representation of aBytesLike padded to length bytes."},{"link":"/v5/api/utils/bytes/#utils-hexZeroPad","text":"If aBytesLike is already longer than length bytes long, an InvalidArgument error will be thrown."}]},{"title":"Byte Manipulation -- Signature Conversion -- ethers.utils.joinSignature( aSignatureLike ) => string< RawSignature >","blocks":[{"link":"/v5/api/utils/bytes/#utils-joinSignature","text":"Return the raw-format of aSignaturelike, which is 65 bytes (130 nibbles) long, concatenating the r, s and (normalized) v of a Signature."}]},{"title":"Byte Manipulation -- Signature Conversion -- ethers.utils.splitSignature( aSignatureLikeOrBytesLike ) => Signature","blocks":[{"link":"/v5/api/utils/bytes/#utils-splitSignature","text":"Return the full expanded-format of aSignaturelike or a raw-format DataHexString."},{"link":"/v5/api/utils/bytes/#utils-splitSignature","text":"Any missing properties will be computed."}]},{"title":"Byte Manipulation -- Random Bytes -- ethers.utils.randomBytes( length ) => Uint8Array","blocks":[{"link":"/v5/api/utils/bytes/#utils-randomBytes","text":"Return a new Uint8Array of length random bytes."}]},{"title":"Byte Manipulation -- Random Bytes -- ethers.utils.shuffled( array ) => Array< any >","blocks":[{"link":"/v5/api/utils/bytes/#utils-shuffled","text":"Return a copy of array shuffled using Fisher-Yates Shuffle."}]},{"title":"Constants","blocks":[{"link":"/v5/api/utils/constants/#constants","text":"The ethers.contants Object contains commonly used values."}]},{"title":"Constants -- Bytes -- ethers.constants.AddressZero => string< Address >","blocks":[{"link":"/v5/api/utils/constants/#constants-AddressZero","text":"The Address Zero, which is 20 bytes (40 nibbles) of zero."}]},{"title":"Constants -- Bytes -- ethers.constants.HashZero => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/constants/#constants-HashZero","text":"The Hash Zero, which is 32 bytes (64 nibbles) of zero."}]},{"title":"Constants -- Strings -- ethers.constants.EtherSymbol => string","blocks":[{"link":"/v5/api/utils/constants/#constants-EtherSymbol","text":"The Ether symbol, Ξ."}]},{"title":"Constants -- BigNumber -- ethers.constants.NegativeOne => BigNumber","blocks":[{"link":"/v5/api/utils/constants/#constants-NegativeOne","text":"The BigNumber value representing \"-1\"."}]},{"title":"Constants -- BigNumber -- ethers.constants.Zero => BigNumber","blocks":[{"link":"/v5/api/utils/constants/#constants-Zero","text":"The BigNumber value representing \"0\"."}]},{"title":"Constants -- BigNumber -- ethers.constants.One => BigNumber","blocks":[{"link":"/v5/api/utils/constants/#constants-One","text":"The BigNumber value representing \"1\"."}]},{"title":"Constants -- BigNumber -- ethers.constants.Two => BigNumber","blocks":[{"link":"/v5/api/utils/constants/#constants-Two","text":"The BigNumber value representing \"2\"."}]},{"title":"Constants -- BigNumber -- ethers.constants.WeiPerEther => BigNumber","blocks":[{"link":"/v5/api/utils/constants/#constants-WeiPerEther","text":"The BigNumber value representing \"1000000000000000000\", which is the number of Wei per Ether."}]},{"title":"Constants -- BigNumber -- ethers.constants.MaxUint256 => BigNumber","blocks":[{"link":"/v5/api/utils/constants/#constants-MaxUint256","text":"The BigNumber value representing the maximum uint256 value."}]},{"title":"Display Logic and Input","blocks":[{"link":"/v5/api/utils/display-logic/#display-logic","text":"When creating an Application, it is useful to convert between user-friendly strings (usually displaying ether) and the machine-readable values that contracts and maths depend on (usually in wei)."},{"link":"/v5/api/utils/display-logic/#display-logic","text":"For example, a Wallet may specify the balance in ether, and gas prices in gwei for the User Interface, but when sending a transaction, both must be specified in wei."},{"link":"/v5/api/utils/display-logic/#display-logic","text":"The parseUnits will parse a string representing ether, such as 1.1 into a BigNumber in wei, and is useful when a user types in a value, such as sending 1.1 ether."},{"link":"/v5/api/utils/display-logic/#display-logic","text":"The formatUnits will format a BigNumberish into a string, which is useful when displaying a balance."}]},{"title":"Display Logic and Input -- Units -- Decimal Count","blocks":[{"link":"/v5/api/utils/display-logic/#display-logic--units","text":"A Unit can be specified as a number, which indicates the number of decimal places that should be used."},{"link":"/v5/api/utils/display-logic/#display-logic--units","text":"Examples:."},{"link":"/v5/api/utils/display-logic/#display-logic--units","text":"1 ether in wei, has 18 decimal places (i.e."},{"link":"/v5/api/utils/display-logic/#display-logic--units","text":"1 ether represents 1018 wei) 1 bitcoin in Satoshi, has 8 decimal places (i.e."},{"link":"/v5/api/utils/display-logic/#display-logic--units","text":"1 bitcoin represents 108 satoshi)."}]},{"title":"Display Logic and Input -- Units -- Named Units","blocks":[{"link":"/v5/api/utils/display-logic/#display-logic--named-units","text":"There are also several common Named Units, in which case their name (as a string) may be used."}]},{"title":"Display Logic and Input -- Functions -- ethers.utils.commify( value ) => string","blocks":[{"link":"/v5/api/utils/display-logic/#utils-commify","text":"Returns a string with value grouped by 3 digits, separated by ,."}]},{"title":"Display Logic and Input -- Functions -- ethers.utils.formatUnits( value [ , unit = \"ether\" ] ) => string","blocks":[{"link":"/v5/api/utils/display-logic/#utils-formatUnits","text":"Returns a string representation of value formatted with unit digits (if it is a number) or to the unit specified (if a string)."}]},{"title":"Display Logic and Input -- Functions -- ethers.utils.formatEther( value ) => string","blocks":[{"link":"/v5/api/utils/display-logic/#utils-formatEther","text":"The equivalent to calling formatUnits(value, \"ether\")."}]},{"title":"Display Logic and Input -- Functions -- ethers.utils.parseUnits( value [ , unit = \"ether\" ] ) => BigNumber","blocks":[{"link":"/v5/api/utils/display-logic/#utils-parseUnits","text":"Returns a BigNumber representation of value, parsed with unit digits (if it is a number) or from the unit specified (if a string)."}]},{"title":"Display Logic and Input -- Functions -- ethers.utils.parseEther( value ) => BigNumber","blocks":[{"link":"/v5/api/utils/display-logic/#utils-parseEther","text":"The equivalent to calling parseUnits(value, \"ether\")."}]},{"title":"Encoding Utilities -- Base58 -- ethers.utils.base58.decode( textData ) => Uin8Array","blocks":[{"link":"/v5/api/utils/encoding/#Bse58","text":"Return a typed Uint8Array representation of textData decoded using base-58 encoding."}]},{"title":"Encoding Utilities -- Base58 -- ethers.utils.base58.encode( aBytesLike ) => string","blocks":[{"link":"/v5/api/utils/encoding/#Bse58","text":"Return aBytesLike encoded as a string using the base-58 encoding."}]},{"title":"Encoding Utilities -- Base64 -- ethers.utils.base64.decode( textData ) => Uin8Array","blocks":[{"link":"/v5/api/utils/encoding/#Base64","text":"Return a typed Uint8Array representation of textData decoded using base-64 encoding."}]},{"title":"Encoding Utilities -- Base64 -- ethers.utils.base64.encode( aBytesLike ) => string","blocks":[{"link":"/v5/api/utils/encoding/#Base64","text":"Return aBytesLike encoded as a string using the base-64 encoding."}]},{"title":"Encoding Utilities -- Recursive-Length Prefix","blocks":[{"link":"/v5/api/utils/encoding/#rlp--methods","text":"The Recursive Length Prefix encoding is used throughout Ethereum to serialize nested structures of Arrays and data."}]},{"title":"Encoding Utilities -- Recursive-Length Prefix -- ethers.utils.RLP.encode( dataObject ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/encoding/#utils-rlpEncode","text":"Encode a structured Data Object into its RLP-encoded representation."},{"link":"/v5/api/utils/encoding/#utils-rlpEncode","text":"Each Data component may be a valid BytesLike."}]},{"title":"Encoding Utilities -- Recursive-Length Prefix -- ethers.utils.RLP.decode( aBytesLike ) => DataObject","blocks":[{"link":"/v5/api/utils/encoding/#utils.rlpDecode","text":"Decode an RLP-encoded aBytesLike into its structured Data Object."},{"link":"/v5/api/utils/encoding/#utils.rlpDecode","text":"All Data components will be returned as a DataHexString."}]},{"title":"Encoding Utilities -- Recursive-Length Prefix -- Data Object","blocks":[{"link":"/v5/api/utils/encoding/#rlp--dataobject","text":"A Data Object is a recursive structure which is used to serialize many internal structures in Ethereum."},{"link":"/v5/api/utils/encoding/#rlp--dataobject","text":"Each Data Object can either be:."},{"link":"/v5/api/utils/encoding/#rlp--dataobject","text":"Binary Data An Array of Data Objects (i.e."},{"link":"/v5/api/utils/encoding/#rlp--dataobject","text":"this recursively includes Nesting)."}]},{"title":"Encoding Utilities -- Recursive-Length Prefix -- Examples","blocks":[{"link":"/v5/api/utils/encoding/#rlp--dataobject","text":"\"0x1234\" [ \"0x1234\", [ \"0xdead\", \"0xbeef\" ], [ ] ]."}]},{"title":"FixedNumber","blocks":[{"link":"/v5/api/utils/fixednumber/#FixedNumber","text":"A FixedNumber is a fixed-width (in bits) number with an internal base-10 divisor, which allows it to represent a decimal fractional component."}]},{"title":"FixedNumber -- Creating Instances","blocks":[{"link":"/v5/api/utils/fixednumber/#FixedNumber","text":"The FixedNumber constructor cannot be called directly."},{"link":"/v5/api/utils/fixednumber/#FixedNumber","text":"There are several static methods for creating a FixedNumber."}]},{"title":"FixedNumber -- Creating Instances -- FixedNumber.from( value [ , format = \"fixed\" ] ) => FixedNumber","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns an instance of a FixedNumber for value as a format."}]},{"title":"FixedNumber -- Creating Instances -- FixedNumber.fromBytes( aBytesLike [ , format = \"fixed\" ] ) => FixedNumber","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns an instance of a FixedNumber for value as a format."}]},{"title":"FixedNumber -- Creating Instances -- FixedNumber.fromString( value [ , format = \"fixed\" ] ) => FixedNumber","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns an instance of a FixedNumber for value as a format."},{"link":"/v5/api/utils/fixednumber/","text":"The value must not contain more decimals than the format permits."}]},{"title":"FixedNumber -- Creating Instances -- FixedNumber.fromValue( value [ , decimals = 0 [ , format = \"fixed\" ] ] ) => FixedNumber","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns an instance of a FixedNumber for value with decimals as a format."}]},{"title":"FixedNumber -- Properties -- fixednumber.format","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"The FixedFormat of fixednumber."}]},{"title":"FixedNumber -- Methods -- fixednumber.addUnsafe( otherValue ) => FixedNumber","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns a new FixedNumber with the value of fixedvalue + otherValue."}]},{"title":"FixedNumber -- Methods -- fixednumber.subUnsafe( otherValue ) => FixedNumber","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns a new FixedNumber with the value of fixedvalue - otherValue."}]},{"title":"FixedNumber -- Methods -- fixednumber.mulUnsafe( otherValue ) => FixedNumber","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns a new FixedNumber with the value of fixedvalue × otherValue."}]},{"title":"FixedNumber -- Methods -- fixednumber.divUnsafe( otherValue ) => FixedNumber","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns a new FixedNumber with the value of fixedvalue ÷ otherValue."}]},{"title":"FixedNumber -- Methods -- fixednumber.round( [ decimals = 0 ] ) => FixedNumber","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns a new FixedNumber with the value of fixedvalue rounded to decimals."}]},{"title":"FixedNumber -- Methods -- FixedNumber.isZero( ) => boolean","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns true if and only if the value of FixedNumber is zero."}]},{"title":"FixedNumber -- Methods -- fixednumber.toFormat( format ) => FixedNumber","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns a new FixedNumber with the value of fixedvalue with format."}]},{"title":"FixedNumber -- Methods -- fixednumber.toHexString( ) => string","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns a HexString representation of fixednumber."}]},{"title":"FixedNumber -- Methods -- fixednumber.toString( ) => string","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns a string representation of fixednumber."}]},{"title":"FixedNumber -- Methods -- fixednumber.toUnsafeFloat( ) => float","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns a floating-point JavaScript number value of fixednumber."},{"link":"/v5/api/utils/fixednumber/","text":"Due to rounding in JavaScript numbers, the value is only approximate."}]},{"title":"FixedNumber -- Methods -- FixedNumber.isFixedNumber( value ) => boolean","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"Returns true if and only if value is a FixedNumber."}]},{"title":"FixedNumber -- FixedFormat","blocks":[{"link":"/v5/api/utils/fixednumber/#FixedFormat","text":"A FixedFormat is a simple object which represents a decimal (base-10) Fixed-Point data representation."},{"link":"/v5/api/utils/fixednumber/#FixedFormat","text":"Usually using this class directly is unnecessary, as passing in a Format Strings directly into the FixedNumber will automatically create this."}]},{"title":"FixedNumber -- FixedFormat -- Format Strings","blocks":[{"link":"/v5/api/utils/fixednumber/#FixedFormat--strings","text":"A format string is composed of three components, including signed-ness, bit-width and number of decimals."},{"link":"/v5/api/utils/fixednumber/#FixedFormat--strings","text":"A signed format string begins with fixed, which an unsigned format string begins with ufixed, followed by the width (in bits) and the number of decimals."},{"link":"/v5/api/utils/fixednumber/#FixedFormat--strings","text":"The width must be congruent to 0 mod 8 (i.e."},{"link":"/v5/api/utils/fixednumber/#FixedFormat--strings","text":"(width % 8) == 0) and no larger than 256 bits and the number of decimals must be no larger than 80."},{"link":"/v5/api/utils/fixednumber/#FixedFormat--strings","text":"For example:."},{"link":"/v5/api/utils/fixednumber/#FixedFormat--strings","text":"fixed128x18 is signed, 128 bits wide and has 18 decimals; this is useful for most purposes fixed32x0 is signed, 32 bits wide and has 0 decimals; this would be the same as a int32_t in C ufixed32x0 is unsigned, 32 bits wide and has 0 decimals; this would be the same as a uint32_t in C fixed is shorthand for fixed128x18 ufixed is shorthand for ufixed128x18."}]},{"title":"FixedNumber -- FixedFormat -- FixedFormat.from( value = \"fixed128x18\" ) => FixedFormat","blocks":[{"link":"/v5/api/utils/fixednumber/#FixedNumber-from","text":"Returns a new instance of a FixedFormat defined by value."},{"link":"/v5/api/utils/fixednumber/#FixedNumber-from","text":"Any valid Format Strings may be passed in as well as any object which has any of signed, width and decimals defined, including a FixedFormat object."}]},{"title":"FixedNumber -- FixedFormat -- fixedFormat.signed => boolean","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"The signed-ness of fixedFormat, true if negative values are supported."}]},{"title":"FixedNumber -- FixedFormat -- fixedFormat.width => number","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"The width (in bits) of fixedFormat."}]},{"title":"FixedNumber -- FixedFormat -- fixedFormat.decimals => number","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"The number of decimal points of fixedFormat."}]},{"title":"FixedNumber -- FixedFormat -- fixedFormat.name => string","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"The name of the fixedFormat, which can be used to recreate the format and is the string that the Solidity language uses to represent this format."}]},{"title":"FixedNumber -- FixedFormat -- \"fixed\"","blocks":[{"link":"/v5/api/utils/fixednumber/","text":"A shorthand for fixed128x80."}]},{"title":"Hashing Algorithms","blocks":[{"link":"/v5/api/utils/hashing/#hashing-algorithms","text":"There are many hashing algorithms used throughout the blockchain space as well as some more complex usages which require utilities to facilitate these common operations."}]},{"title":"Hashing Algorithms -- Cryptographic Hash Functions","blocks":[{"link":"/v5/api/utils/hashing/#cryptographic-hash-functions","text":"The Cryptographic Hash Functions are a specific family of hash functions."}]},{"title":"Hashing Algorithms -- Cryptographic Hash Functions -- ethers.utils.id( text ) => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/hashing/#utils-id","text":"The Ethereum Identity function computes the KECCAK256 hash of the text bytes."}]},{"title":"Hashing Algorithms -- Cryptographic Hash Functions -- ethers.utils.keccak256( aBytesLike ) => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/hashing/#utils-keccak256","text":"Returns the KECCAK256 digest aBytesLike."}]},{"title":"Hashing Algorithms -- Cryptographic Hash Functions -- ethers.utils.ripemd160( aBytesLike ) => string< DataHexString< 20 > >","blocks":[{"link":"/v5/api/utils/hashing/#utils-ripemd160","text":"Returns the RIPEMD-160 digest of aBytesLike."}]},{"title":"Hashing Algorithms -- Cryptographic Hash Functions -- ethers.utils.sha256( aBytesLike ) => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/hashing/#utils-sha256","text":"Returns the SHA2-256 digest of aBytesLike."}]},{"title":"Hashing Algorithms -- Cryptographic Hash Functions -- ethers.utils.sha512( aBytesLike ) => string< DataHexString< 64 > >","blocks":[{"link":"/v5/api/utils/hashing/#utils-sha512","text":"Returns the SHA2-512 digest of aBytesLike."}]},{"title":"Hashing Algorithms -- HMAC -- ethers.utils.computeHmac( algorithm , key , data ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/hashing/#utils-computeHmac","text":"Returns the HMAC of data with key using the Algorithm algorithm."}]},{"title":"Hashing Algorithms -- HMAC -- ethers.utils.SupportedAlgorithm.sha256 => string","blocks":[{"link":"/v5/api/utils/hashing/#utils--hmac-supported-algorithm","text":"Use the SHA2-256 hash algorithm."}]},{"title":"Hashing Algorithms -- HMAC -- ethers.utils.SupportedAlgorithm.sha512 => string","blocks":[{"link":"/v5/api/utils/hashing/#utils--hmac-supported-algorithm","text":"Use the SHA2-512 hash algorithm."}]},{"title":"Hashing Algorithms -- Hashing Helpers -- ethers.utils.hashMessage( message ) => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/hashing/#utils-hashMessage","text":"Computes the EIP-191 personal message digest of message."},{"link":"/v5/api/utils/hashing/#utils-hashMessage","text":"Personal messages are converted to UTF-8 bytes and prefixed with \\x19Ethereum Signed Message: and the length of message."}]},{"title":"Hashing Algorithms -- Hashing Helpers -- ethers.utils.namehash( name ) => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/hashing/#utils-namehash","text":"Returns the ENS Namehash of name."}]},{"title":"Hashing Algorithms -- Hashing Helpers -- Typed Data Encoder","blocks":[{"link":"/v5/api/utils/hashing/#TypedDataEncoder","text":"The TypedDataEncoder is used to compute the various encoded data required for EIP-712 signed data."},{"link":"/v5/api/utils/hashing/#TypedDataEncoder","text":"Signed data requires a domain, list of structures and their members and the data itself."},{"link":"/v5/api/utils/hashing/#TypedDataEncoder","text":"The domain is an object with values for any of the standard domain properties."},{"link":"/v5/api/utils/hashing/#TypedDataEncoder","text":"The types is an object with each property being the name of a structure, mapping to an array of field descriptions."},{"link":"/v5/api/utils/hashing/#TypedDataEncoder","text":"It should not include the EIP712Domain property unless it is required as a child structure of another."}]},{"title":"Hashing Algorithms -- Hashing Helpers -- Experimental Feature (this exported class name will change)","blocks":[{"link":"/v5/api/utils/hashing/#TypedDataEncoder","text":"This is still an experimental feature."},{"link":"/v5/api/utils/hashing/#TypedDataEncoder","text":"If using it, please specify the exact version of ethers you are using (e.g."},{"link":"/v5/api/utils/hashing/#TypedDataEncoder","text":"spcify \"5.0.18\", not \"^5.0.18\") as the exported class name will be renamed from _TypedDataEncoder to TypedDataEncoder once it has been used in the field a bit."}]},{"title":"Hashing Algorithms -- Hashing Helpers -- ethers.utils._TypedDataEncoder.from( types ) => [TypedDataEncoder]","blocks":[{"link":"/v5/api/utils/hashing/#TypedDataEncoder-from","text":"Creates a new TypedDataEncoder for types."},{"link":"/v5/api/utils/hashing/#TypedDataEncoder-from","text":"This object is a fairly low-level object that most developers should not require using instances directly."},{"link":"/v5/api/utils/hashing/#TypedDataEncoder-from","text":"Most developers will find the static class methods below the most useful."}]},{"title":"Hashing Algorithms -- Hashing Helpers -- TypedDataEncoder.encode( domain , types , values ) => string","blocks":[{"link":"/v5/api/utils/hashing/#TypedDataEncoder-encode","text":"Encodes the Returns the hashed EIP-712 domain."}]},{"title":"Hashing Algorithms -- Hashing Helpers -- TypedDataEncoder.getPayload( domain , types , value ) => any","blocks":[{"link":"/v5/api/utils/hashing/#TypedDataEncoder-getPayload","text":"Returns the standard payload used by various JSON-RPC eth_signTypedData* calls."},{"link":"/v5/api/utils/hashing/#TypedDataEncoder-getPayload","text":"All domain values and entries in value are normalized and the types are verified."}]},{"title":"Hashing Algorithms -- Hashing Helpers -- TypedDataEncoder.getPrimaryType( types ) => string","blocks":[{"link":"/v5/api/utils/hashing/#TypedDataEncoder-getPrimaryType","text":"Constructs a directed acyclic graph of the types and returns the root type, which can be used as the primaryType for EIP-712 payloads."}]},{"title":"Hashing Algorithms -- Hashing Helpers -- TypedDataEncoder.hash( domain , types , values ) => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/hashing/#TypedDataEncoder-hash","text":"Returns the computed EIP-712 hash."}]},{"title":"Hashing Algorithms -- Hashing Helpers -- TypedDataEncoder.hashDomain( domain ) => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/hashing/#TypedDataEncoder-hashDomain","text":"Returns the hashed EIP-712 domain."}]},{"title":"Hashing Algorithms -- Hashing Helpers -- TypedDataEncoder.resolveNames( domain , types , value , resolveName ) => Promise< any >","blocks":[{"link":"/v5/api/utils/hashing/#TypedDataEncoder-resolveNames","text":"Returns a copy of value, where any leaf value with a type of address will have been recursively replacedwith the value of calling resolveName with that value."}]},{"title":"Hashing Algorithms -- Solidity Hashing Algorithms","blocks":[{"link":"/v5/api/utils/hashing/#utils--solidity-hashing","text":"When using the Solidity abi.packEncoded(...) function, a non-standard tightly packed version of encoding is used."},{"link":"/v5/api/utils/hashing/#utils--solidity-hashing","text":"These functions implement the tightly packing algorithm."}]},{"title":"Hashing Algorithms -- Solidity Hashing Algorithms -- ethers.utils.solidityPack( types , values ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/hashing/#utils-solidityPack","text":"Returns the non-standard encoded values packed according to their respective type in types."}]},{"title":"Hashing Algorithms -- Solidity Hashing Algorithms -- ethers.utils.solidityKeccak256( types , values ) => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/hashing/#utils-solidityKeccak256","text":"Returns the KECCAK256 of the non-standard encoded values packed according to their respective type in types."}]},{"title":"Hashing Algorithms -- Solidity Hashing Algorithms -- ethers.utils.soliditySha256( types , values ) => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/hashing/#utils-soliditySha256","text":"Returns the SHA2-256 of the non-standard encoded values packed according to their respective type in types."}]},{"title":"HD Wallet","blocks":[{"link":"/v5/api/utils/hdnode/#hdnodes","text":"The Hierarchal Desterministic (HD) Wallet was a standard created for Bitcoin, but lends itself well to a wide variety of Blockchains which rely on secp256k1 private keys."},{"link":"/v5/api/utils/hdnode/#hdnodes","text":"For a more detailed technical understanding:."},{"link":"/v5/api/utils/hdnode/#hdnodes","text":"BIP-32 - the hierarchal deterministic description BIP-39 - the method used to derive the BIP-32 seed from human-readable sequences of words (i.e."},{"link":"/v5/api/utils/hdnode/#hdnodes","text":"a mnemonic) BIP-44 - a standard defined to make BIP-32 easy to adapt to any future compatible blockchain."}]},{"title":"HD Wallet -- Types -- ethers.utils.defaultPath => \"m/44'/60'/0'/0/0\"","blocks":[{"link":"/v5/api/utils/hdnode/#hdnodes--defaultpath","text":"The default path for Ethereum in an HD Wallet."}]},{"title":"HD Wallet -- Types -- mnemonic.phrase => string","blocks":[{"link":"/v5/api/utils/hdnode/#Mnemonic","text":"The mnemonic phrase for this mnemonic."},{"link":"/v5/api/utils/hdnode/#Mnemonic","text":"It is 12, 15, 18, 21 or 24 words long and separated by the whitespace specified by the locale."}]},{"title":"HD Wallet -- Types -- mnemonic.path => string","blocks":[{"link":"/v5/api/utils/hdnode/#Mnemonic","text":"The HD path for this mnemonic."}]},{"title":"HD Wallet -- Types -- mnemonic.locale => string","blocks":[{"link":"/v5/api/utils/hdnode/#Mnemonic","text":"The language of the wordlist this mnemonic is using."}]},{"title":"HD Wallet -- HDNode -- ethers.HDNode.fromMnemonic( phrase [ , password [ , wordlist ] ] ) => HDNode","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode-fromMnemonic","text":"Return the HDNode for phrase with the optional password and wordlist."}]},{"title":"HD Wallet -- HDNode -- ethers.HDNode.fromSeed( aBytesLike ) => HDNode","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode-fromSeed","text":"Return the HDNode for the seed aBytesLike."}]},{"title":"HD Wallet -- HDNode -- ethers.HDNode.fromExtendedKey( extendedKey ) => HDNode","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode-fromExtendedKey","text":"Return the HDNode for the extendedKey."},{"link":"/v5/api/utils/hdnode/#HDNode-fromExtendedKey","text":"If extendedKey was neutered, the HDNode will only be able to compute addresses and not private keys."}]},{"title":"HD Wallet -- HDNode -- hdNode.privateKey => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"The private key for this HDNode."}]},{"title":"HD Wallet -- HDNode -- hdNode.publicKey => string< DataHexString< 33 > >","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"The (compresses) public key for this HDNode."}]},{"title":"HD Wallet -- HDNode -- hdNode.fingerprint => string< DataHexString< 4 > >","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"The fingerprint is meant as an index to quickly match parent and children nodes together, however collisions may occur and software should verify matching nodes."},{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"Most developers will not need to use this."}]},{"title":"HD Wallet -- HDNode -- hdNode.parentFingerprint => string< DataHexString< 4 > >","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"The fingerprint of the parent node."},{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"See fingerprint for more details."},{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"Most developers will not need to use this."}]},{"title":"HD Wallet -- HDNode -- hdNode.address => string< Address >","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"The address of this HDNode."}]},{"title":"HD Wallet -- HDNode -- hdNode.mnemonic => Mnemonic","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"The mnemonic of this HDNode, if known."}]},{"title":"HD Wallet -- HDNode -- hdNode.path => string","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"The path of this HDNode, if known."},{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"If the mnemonic is also known, this will match mnemonic.path."}]},{"title":"HD Wallet -- HDNode -- hdNode.chainCode => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"The chain code is used as a non-secret private key which is then used with EC-multiply to provide the ability to derive addresses without the private key of child non-hardened nodes."},{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"Most developers will not need to use this."}]},{"title":"HD Wallet -- HDNode -- hdNode.index => number","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"The index of this HDNode."},{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"This will match the last component of the path."},{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"Most developers will not need to use this."}]},{"title":"HD Wallet -- HDNode -- hdNode.depth => number","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"The depth of this HDNode."},{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"This will match the number of components (less one, the m/) of the path."},{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"Most developers will not need to use this."}]},{"title":"HD Wallet -- HDNode -- hdNode.extendedKey => string","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"A serialized string representation of this HDNode."},{"link":"/v5/api/utils/hdnode/#HDNode--properties","text":"Not all properties are included in the serialization, such as the mnemonic and path, so serializing and deserializing (using the fromExtendedKey class method) will result in reduced information."}]},{"title":"HD Wallet -- HDNode -- hdNode.neuter( ) => HDNode","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode-neuter","text":"Return a new instance of hdNode with its private key removed but all other properties preserved."},{"link":"/v5/api/utils/hdnode/#HDNode-neuter","text":"This ensures that the key can not leak the private key of itself or any derived children, but may still be used to compute the addresses of itself and any non-hardened children."}]},{"title":"HD Wallet -- HDNode -- hdNode.derivePath( path ) => HDNode","blocks":[{"link":"/v5/api/utils/hdnode/#HDNode-derivePath","text":"Return a new HDNode which is the child of hdNode found by deriving path."}]},{"title":"HD Wallet -- Other Functions -- ethers.utils.mnemonicToSeed( phrase [ , password ] ) => string< DataHexString< 64 > >","blocks":[{"link":"/v5/api/utils/hdnode/#utils-mnemonicToSeed","text":"Convert a mnemonic phrase to a seed, according to BIP-39."}]},{"title":"HD Wallet -- Other Functions -- ethers.utils.mnemonicToEntropy( phrase [ , wordlist ] ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/hdnode/#utils-mnemonicToEntropy","text":"Convert a mnemonic phrase to its entropy, according to BIP-39."}]},{"title":"HD Wallet -- Other Functions -- ethers.utils.isValidMnemonic( phrase [ , wordlist ] ) => boolean","blocks":[{"link":"/v5/api/utils/hdnode/#utils-isValidMnemonic","text":"Returns true if phrase is a valid mnemonic phrase, by testing the checksum."}]},{"title":"Utilities","blocks":[{"link":"/v5/api/utils/","text":"These utilities are used extensively within the library, but are also quite useful for application developers."}]},{"title":"Logging","blocks":[{"link":"/v5/api/utils/logger/#logging","text":"These are just a few simple logging utilities provided to simplify and standardize the error facilities across the Ethers library."},{"link":"/v5/api/utils/logger/#logging","text":"The Logger library has zero dependencies and is intentionally very light so it can be easily included in each library."},{"link":"/v5/api/utils/logger/#logging","text":"The Censorship functionality relies on one instance of the Ethers library being included."},{"link":"/v5/api/utils/logger/#logging","text":"In large bundled packages or when npm link is used, this may not be the case."},{"link":"/v5/api/utils/logger/#logging","text":"If you require this functionality, ensure that your bundling is configured properly."}]},{"title":"Logging -- Logger -- new ethers.utils.Logger( version )","blocks":[{"link":"/v5/api/utils/logger/#Logger","text":"Create a new logger which will include version in all errors thrown."}]},{"title":"Logging -- Logger -- Logger.globalLogger( ) => Logger","blocks":[{"link":"/v5/api/utils/logger/#Logger","text":"Returns the singleton global logger."}]},{"title":"Logging -- Logger -- logger.debug( ...args ) => void","blocks":[{"link":"/v5/api/utils/logger/","text":"Log debugging information."}]},{"title":"Logging -- Logger -- logger.info( ...args ) => void","blocks":[{"link":"/v5/api/utils/logger/","text":"Log generic information."}]},{"title":"Logging -- Logger -- logger.warn( ...args ) => void","blocks":[{"link":"/v5/api/utils/logger/","text":"Log warnings."}]},{"title":"Logging -- Logger -- Errors","blocks":[{"link":"/v5/api/utils/logger/#Logger","text":"These functions honor the current Censorship and help create a standard error model for detecting and processing errors within Ethers."}]},{"title":"Logging -- Logger -- logger.makeError( message [ , code = UNKNOWN_ERROR [ , params ] ] ) => Error","blocks":[{"link":"/v5/api/utils/logger/","text":"Create an Error object with message and an optional code and additional params set."},{"link":"/v5/api/utils/logger/","text":"This is useful when an error is needed to be rejected instead of thrown."}]},{"title":"Logging -- Logger -- logger.throwError( message [ , code = UNKNOWN_ERROR [ , params ] ] ) => never","blocks":[{"link":"/v5/api/utils/logger/","text":"Throw an Error with message and an optional code and additional params set."}]},{"title":"Logging -- Logger -- logger.throwArgumentError( message , name , value ) => never","blocks":[{"link":"/v5/api/utils/logger/","text":"Throw an INVALID_ARGUMENT Error with name and value."}]},{"title":"Logging -- Logger -- Usage Validation","blocks":[{"link":"/v5/api/utils/logger/#Logger","text":"There can be used to ensure various properties and actions are safe."}]},{"title":"Logging -- Logger -- logger.checkAbstract( target , kind ) => void","blocks":[{"link":"/v5/api/utils/logger/#Logger-checkAbstract","text":"If target is kind, throws a UNSUPPORTED_OPERATION error otherwise performs the same operations as checkNew."},{"link":"/v5/api/utils/logger/#Logger-checkAbstract","text":"This is useful for ensuring abstract classes are not being instantiated."}]},{"title":"Logging -- Logger -- logger.checkArgumentCount( count , expectedCount [ , message ) => void","blocks":[{"link":"/v5/api/utils/logger/#Logger-checkArgumentCount","text":"If count is not equal to expectedCount, throws a MISSING_ARGUMENT or UNEXPECTED_ARGUMENT error."}]},{"title":"Logging -- Logger -- logger.checkNew( target , kind ) => void","blocks":[{"link":"/v5/api/utils/logger/#Logger-checkNew","text":"If target is not a valid this or target value, throw a MISSING_NEW error."},{"link":"/v5/api/utils/logger/#Logger-checkNew","text":"This is useful to ensure callers of a Class are using new."}]},{"title":"Logging -- Logger -- logger.checkNormalize( message ) => void","blocks":[{"link":"/v5/api/utils/logger/#Logger-checkNoralize","text":"Check that the environment has a correctly functioning String.normalize."},{"link":"/v5/api/utils/logger/#Logger-checkNoralize","text":"If not, a UNSUPPORTED_OPERATION error is thrown."}]},{"title":"Logging -- Logger -- logger.checkSafeUint53( value [ , message ] ) => void","blocks":[{"link":"/v5/api/utils/logger/#Logger-checkSafeUint53","text":"If value is not safe as a JavaScript number, throws a NUMERIC_FAULT error."}]},{"title":"Logging -- Logger -- Logger.setCensorship( censor [ , permanent = false ] ) => void","blocks":[{"link":"/v5/api/utils/logger/#Logger-setCensorship","text":"Set error censorship, optionally preventing errors from being uncensored."},{"link":"/v5/api/utils/logger/#Logger-setCensorship","text":"In production applications, this prevents any error from leaking information by masking the message and values of errors."},{"link":"/v5/api/utils/logger/#Logger-setCensorship","text":"This can impact debugging, making it substantially more difficult."}]},{"title":"Logging -- Logger -- Logger.setLogLevel( logLevel ) => void","blocks":[{"link":"/v5/api/utils/logger/#Logger-setLogLevel","text":"Set the log level, to suppress logging output below a particular log level."}]},{"title":"Logging -- Errors","blocks":[{"link":"/v5/api/utils/logger/#errors","text":"Every error in Ethers has a code value, which is a string that will match one of the following error codes."}]},{"title":"Logging -- Errors -- Logger.errors.NOT_IMPLEMENTED","blocks":[{"link":"/v5/api/utils/logger/#errors--not-implemented","text":"The operation is not implemented."},{"link":"/v5/api/utils/logger/#errors--not-implemented","text":"This may occur when calling a method on a sub-class that has not fully implemented its abstract superclass."}]},{"title":"Logging -- Errors -- Logger.errors.SERVER_ERROR","blocks":[{"link":"/v5/api/utils/logger/#errors--server-error","text":"There was an error communicating with a server."},{"link":"/v5/api/utils/logger/#errors--server-error","text":"This may occur for a number of reasons, for example:."},{"link":"/v5/api/utils/logger/#errors--server-error","text":"a CORS issue; this is quite often the problem and also the hardest to diagnose and fix, so it is very beneficial to familiarize yourself with CORS; some backends allow you configure your CORS, such as the geth command-line or conifguration files or the INFURA and Alchemy dashboards by specifing allowed Origins, methods, etc."},{"link":"/v5/api/utils/logger/#errors--server-error","text":"an SSL issue; for example, if you are trying to connect to a local node via HTTP but are serving the content from a secure HTTPS website a link issue; a firewall is preventing the traffic from reaching the server a server issue; the server is down, or is returning 500 error codes a backend DDoS mitigation proxy; for example, Etherscan operates behind a Cloudflare proxy, which will block traffic if the request is sent via specific User Agents or the client fingerprint is detected as a bot in some cases."}]},{"title":"Logging -- Errors -- Logger.errors.TIMEOUT","blocks":[{"link":"/v5/api/utils/logger/#errors--timeout","text":"A timeout occurred."}]},{"title":"Logging -- Errors -- Logger.errors.UNKNOWN_ERROR","blocks":[{"link":"/v5/api/utils/logger/#errors--unknown-error","text":"A generic unknown error."}]},{"title":"Logging -- Errors -- Logger.errors.UNSUPPORTED_OPERATION","blocks":[{"link":"/v5/api/utils/logger/#errors--unsupported-operation","text":"The operation is not supported."},{"link":"/v5/api/utils/logger/#errors--unsupported-operation","text":"This can happen for a variety reasons, for example:."},{"link":"/v5/api/utils/logger/#errors--unsupported-operation","text":"Some backends do not support certain operations; such as passing a blockTag to an EtherscanProvider for call A Contract object connected to Provider (instead of a Signer) cannot sign or send transactions a Contract connected to a Signer without a Provider is write-only and cannot estimate gas or execute static calls."}]},{"title":"Logging -- Errors -- Logger.errors.BUFFER_OVERRUN","blocks":[{"link":"/v5/api/utils/logger/#errors--buffer-overrun","text":"The amount of data needed is more than the amount of data required, which would cause the data buffer to read past its end."},{"link":"/v5/api/utils/logger/#errors--buffer-overrun","text":"This can occur if a contract erroneously returns invalid ABI-encoded data or RLP data is malformed."}]},{"title":"Logging -- Errors -- Logger.errors.NUMERIC_FAULT","blocks":[{"link":"/v5/api/utils/logger/#errors--numeric-fault","text":"There was an invalid operation done on numeric values."},{"link":"/v5/api/utils/logger/#errors--numeric-fault","text":"Common cases of this occur when there is overflow, arithmetic underflow in fixed numeric types or division by zero."}]},{"title":"Logging -- Errors -- Logger.errors.INVALID_ARGUMENT","blocks":[{"link":"/v5/api/utils/logger/#errors--invalid-argument","text":"The type or value of an argument is invalid."},{"link":"/v5/api/utils/logger/#errors--invalid-argument","text":"This will generally also include the name and value of the argument."},{"link":"/v5/api/utils/logger/#errors--invalid-argument","text":"Any function which accepts sensitive data (such as a private key) will include the string \"[[REDACTED]]\" instead of the value passed in."}]},{"title":"Logging -- Errors -- Logger.errors.MISSING_ARGUMENT","blocks":[{"link":"/v5/api/utils/logger/#errors--missing-argument","text":"An expected parameter was not specified."}]},{"title":"Logging -- Errors -- Logger.errors.MISSING_NEW","blocks":[{"link":"/v5/api/utils/logger/#errors--missing-new","text":"An object is a Class, but is not being called with new."}]},{"title":"Logging -- Errors -- Logger.errors.UNEXPECTED_ARGUMENT","blocks":[{"link":"/v5/api/utils/logger/#errors--unexpected-argument","text":"Too many parameters we passed into a function."}]},{"title":"Logging -- Errors -- Logger.errors.CALL_EXCEPTION","blocks":[{"link":"/v5/api/utils/logger/#errors--call-exception","text":"An attempt to call a blockchain contract (getter) resulted in a revert or other error, such as insufficient gas (out-of-gas) or an invalid opcode."},{"link":"/v5/api/utils/logger/#errors--call-exception","text":"This can also occur during gas estimation or if waiting for a TransactionReceipt which failed during execution."},{"link":"/v5/api/utils/logger/#errors--call-exception","text":"Consult the contract to determine the cause, such as a failed condition in a require statement."},{"link":"/v5/api/utils/logger/#errors--call-exception","text":"The reason property may provide more context for the cause of this error."}]},{"title":"Logging -- Errors -- Logger.errors.INSUFFICIENT_FUNDS","blocks":[{"link":"/v5/api/utils/logger/#errors--insufficient-funds","text":"The account is attempting to make a transaction which costs more than is available."},{"link":"/v5/api/utils/logger/#errors--insufficient-funds","text":"A sending account must have enough ether to pay for the value, the gas limit (at the gas price) as well as the intrinsic cost of data."},{"link":"/v5/api/utils/logger/#errors--insufficient-funds","text":"The intrinsic cost of data is 4 gas for each zero byte and 68 gas for each non-zero byte, as well as 35000 gas if a transaction contains no to property and is therefore expected to create a new account."}]},{"title":"Logging -- Errors -- Logger.errors.NETWORK_ERROR","blocks":[{"link":"/v5/api/utils/logger/#errors--network","text":"An Ethereum network validation error, such as an invalid chain ID."}]},{"title":"Logging -- Errors -- Logger.errors.NONCE_EXPIRED","blocks":[{"link":"/v5/api/utils/logger/#errors--nonce-expired","text":"The nonce being specified has already been used in a mined transaction."}]},{"title":"Logging -- Errors -- Logger.errors.REPLACEMENT_UNDERPRICED","blocks":[{"link":"/v5/api/utils/logger/#errors--replacement-underpriced","text":"When replacing a transaction, by using a nonce which has already been sent to the network, but which has not been mined yet the new transaction must specify a higher gas price."},{"link":"/v5/api/utils/logger/#errors--replacement-underpriced","text":"This error occurs when the gas price is insufficient to bribe the transaction pool to prefer the new transaction over the old one."},{"link":"/v5/api/utils/logger/#errors--replacement-underpriced","text":"Generally, the new gas price should be about 50% + 1 wei more, so if a gas price of 10 gwei was used, the replacement should be 15.000000001 gwei."},{"link":"/v5/api/utils/logger/#errors--replacement-underpriced","text":"This is not enforced by the protocol, as it deals with unmined transactions, and can be configured by each node, however to ensure a transaction is propagated to a miner it is best practice to follow the defaults most nodes have enabled."}]},{"title":"Logging -- Errors -- Logger.errors.UNPREDICTABLE_GAS_LIMIT","blocks":[{"link":"/v5/api/utils/logger/#errors--unpredicatable-gas-limit","text":"When estimating the required amount of gas for a transaction, a node is queried for its best guess."},{"link":"/v5/api/utils/logger/#errors--unpredicatable-gas-limit","text":"If a node is unable (or unwilling) to predict the cost, this error occurs."},{"link":"/v5/api/utils/logger/#errors--unpredicatable-gas-limit","text":"The best remedy for this situation is to specify a gas limit in the transaction manually."},{"link":"/v5/api/utils/logger/#errors--unpredicatable-gas-limit","text":"This error can also indicate that the transaction is expected to fail regardless, if for example an account with no tokens is attempting to send a token."}]},{"title":"Logging -- Log Levels -- Logger.levels.DEBUG","blocks":[{"link":"/v5/api/utils/logger/#Logger-levels","text":"Log all output, including debugging information."}]},{"title":"Logging -- Log Levels -- Logger.levels.INFO","blocks":[{"link":"/v5/api/utils/logger/#Logger-levels","text":"Only log output for informational, warnings and errors."}]},{"title":"Logging -- Log Levels -- Logger.levels.WARNING","blocks":[{"link":"/v5/api/utils/logger/#Logger-levels","text":"Only log output for warnings and errors."}]},{"title":"Logging -- Log Levels -- Logger.levels.ERROR","blocks":[{"link":"/v5/api/utils/logger/#Logger-levels","text":"Only log output for errors."}]},{"title":"Logging -- Log Levels -- Logger.levels.OFF","blocks":[{"link":"/v5/api/utils/logger/#Logger-levels","text":"Do not output any logs."}]},{"title":"Property Utilities","blocks":[{"link":"/v5/api/utils/properties/","text":"This is a collection of utility functions used for handling properties in a platform-safe way."},{"link":"/v5/api/utils/properties/","text":"The next major version of ethers will no longer be compatible with ES3, so many of these will be removed in favor of the built-in options available in ES2015 and above."}]},{"title":"Property Utilities -- Log Levels -- ethers.utils.checkProperties( object , check ) => void","blocks":[{"link":"/v5/api/utils/properties/","text":"Checks that object only contains properties included in check, and throws INVALID_ARGUMENT if not."}]},{"title":"Property Utilities -- Log Levels -- ethers.utils.deepCopy( anObject ) => any","blocks":[{"link":"/v5/api/utils/properties/","text":"Creates a recursive copy of anObject."},{"link":"/v5/api/utils/properties/","text":"Frozen (i.e."},{"link":"/v5/api/utils/properties/","text":"and other known immutable) objects are copied by reference."}]},{"title":"Property Utilities -- Log Levels -- ethers.utils.defineReadOnly( anObject , name , value ) => void","blocks":[{"link":"/v5/api/utils/properties/","text":"Uses the Object.defineProperty method to set a read-only property on an object."}]},{"title":"Property Utilities -- Log Levels -- ethers.utils.getStatic( aConstructor , key ) => any","blocks":[{"link":"/v5/api/utils/properties/","text":"Recursively check for a static method key on an inheritance chain from aConstructor to all ancestors."},{"link":"/v5/api/utils/properties/","text":"This is used to mimic behaviour in other languages where this in a static method will also search ancestors."}]},{"title":"Property Utilities -- Log Levels -- ethers.utils.resolveProperties( anObject ) => Promise< any >","blocks":[{"link":"/v5/api/utils/properties/#utils-resolveproperties","text":"Retruns a Promise which resolves all child values on anObject."}]},{"title":"Property Utilities -- Log Levels -- ethers.utils.shallowCopy( anObject ) => any","blocks":[{"link":"/v5/api/utils/properties/","text":"Returns a shallow copy of anObject."},{"link":"/v5/api/utils/properties/","text":"This is the same as using Object.assign({ }, anObject)."}]},{"title":"Signing Key -- Log Levels -- new ethers.utils.SigningKey( privateKey )","blocks":[{"link":"/v5/api/utils/signing-key/#SigningKey-constructor","text":"Create a new SigningKey for privateKey."}]},{"title":"Signing Key -- Log Levels -- signingKey.privateKey => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/signing-key/#SigningKey","text":"The private key for this Signing Key."}]},{"title":"Signing Key -- Log Levels -- signingKey.publicKey => string< DataHexString< 65 > >","blocks":[{"link":"/v5/api/utils/signing-key/#SigningKey","text":"The uncompressed public key for this Signing Key."},{"link":"/v5/api/utils/signing-key/#SigningKey","text":"It will always be 65 bytes (130 nibbles) and begins with 0x04."}]},{"title":"Signing Key -- Log Levels -- signingKey.compressedPublicKey => string< DataHexString< 33 > >","blocks":[{"link":"/v5/api/utils/signing-key/#SigningKey","text":"The compressed public key for this Signing Key."},{"link":"/v5/api/utils/signing-key/#SigningKey","text":"It will always be 33 bytes (66 nibbles) and begins with either 0x02 or 0x03."}]},{"title":"Signing Key -- Log Levels -- signingKey.signDigest( digest ) => Signature","blocks":[{"link":"/v5/api/utils/signing-key/#SigningKey","text":"Sign the digest and return the signature."}]},{"title":"Signing Key -- Log Levels -- signingKey.computeSharedSecret( otherKey ) => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/signing-key/#SigningKey","text":"Compute the ECDH shared secret with otherKey."},{"link":"/v5/api/utils/signing-key/#SigningKey","text":"The otherKey may be either a public key or a private key, but generally will be a public key from another party."},{"link":"/v5/api/utils/signing-key/#SigningKey","text":"It is best practice that each party computes the hash of this before using it as a symmetric key."}]},{"title":"Signing Key -- Log Levels -- SigningKey.isSigningKey( anObject ) => boolean","blocks":[{"link":"/v5/api/utils/signing-key/#SigningKey","text":"Returns true if anObject is a SigningKey."}]},{"title":"Signing Key -- Other Functions -- ethers.utils.verifyMessage( message , signature ) => string< Address >","blocks":[{"link":"/v5/api/utils/signing-key/#utils-verifyMessage","text":"Returns the address that signed message producing signature."},{"link":"/v5/api/utils/signing-key/#utils-verifyMessage","text":"The signature may have a non-canonical v (i.e."},{"link":"/v5/api/utils/signing-key/#utils-verifyMessage","text":"does not need to be 27 or 28), in which case it will be normalized to compute the `recoveryParam` which will then be used to compute the address; this allows systems which use the v to encode additional data (such as EIP-155) to be used since the v parameter is still completely non-ambiguous."}]},{"title":"Signing Key -- Other Functions -- ethers.utils.verifyTypedData( domain , types , value , signature ) => string< Address >","blocks":[{"link":"/v5/api/utils/signing-key/#utils-verifyTypedData","text":"Returns the address that signed the EIP-712 value for the domain and types to produce the signature."}]},{"title":"Signing Key -- Other Functions -- ethers.utils.recoverPublicKey( digest , signature ) => string< DataHexString< 65 > >","blocks":[{"link":"/v5/api/utils/signing-key/#utils-recoverPublicKey","text":"Returns the uncompressed public key (i.e."},{"link":"/v5/api/utils/signing-key/#utils-recoverPublicKey","text":"the first byte will be 0x04) of the private key that was used to sign digest which gave the signature."}]},{"title":"Signing Key -- Other Functions -- ethers.utils.computePublicKey( key [ , compressed = false ] ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/signing-key/#utils-computePublicKey","text":"Computes the public key of key, optionally compressing it."},{"link":"/v5/api/utils/signing-key/#utils-computePublicKey","text":"The key can be any form of public key (compressed or uncompressed) or a private key."}]},{"title":"Strings","blocks":[{"link":"/v5/api/utils/strings/#strings","text":"A String is a representation of a human-readable input of output, which are often taken for granted."},{"link":"/v5/api/utils/strings/#strings","text":"When dealing with blockchains, properly handling human-readable and human-provided data is important to prevent loss of funds, assets, incorrect permissions, etc."}]},{"title":"Strings -- Bytes32String","blocks":[{"link":"/v5/api/utils/strings/#Bytes32String","text":"A string in Solidity is length prefixed with its 256-bit (32 byte) length, which means that even short strings require 2 words (64 bytes) of storage."},{"link":"/v5/api/utils/strings/#Bytes32String","text":"In many cases, we deal with short strings, so instead of prefixing the string with its length, we can null-terminate it and fit it in a single word (32 bytes)."},{"link":"/v5/api/utils/strings/#Bytes32String","text":"Since we need only a single byte for the null termination, we can store strings up to 31 bytes long in a word."}]},{"title":"Strings -- Bytes32String -- Note","blocks":[{"link":"/v5/api/utils/strings/#Bytes32String","text":"Strings that are 31 bytes long may contain fewer than 31 characters, since UTF-8 requires multiple bytes to encode international characters."}]},{"title":"Strings -- Bytes32String -- ethers.utils.parseBytes32String( aBytesLike ) => string","blocks":[{"link":"/v5/api/utils/strings/#utils-parseBytes32","text":"Returns the decoded string represented by the Bytes32 encoded data."}]},{"title":"Strings -- Bytes32String -- ethers.utils.formatBytes32String( text ) => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/strings/#utils-formatBytes32","text":"Returns a bytes32 string representation of text."},{"link":"/v5/api/utils/strings/#utils-formatBytes32","text":"If the length of text exceeds 31 bytes, it will throw an error."}]},{"title":"Strings -- UTF-8 Strings -- ethers.utils.toUtf8Bytes( text [ , form = current ] ) => Uint8Array","blocks":[{"link":"/v5/api/utils/strings/#utils-toUtf8Bytes","text":"Returns the UTF-8 bytes of text, optionally normalizing it using the UnicodeNormalizationForm form."}]},{"title":"Strings -- UTF-8 Strings -- ethers.utils.toUtf8CodePoints( text [ , form = current ] ) => Array< number >","blocks":[{"link":"/v5/api/utils/strings/#utils-toUtf8CodePoints","text":"Returns the Array of codepoints of text, optionally normalized using the UnicodeNormalizationForm form."}]},{"title":"Strings -- UTF-8 Strings -- Note","blocks":[{"link":"/v5/api/utils/strings/#strings-utf8","text":"This function correctly splits each user-perceived character into its codepoint, accounting for surrogate pairs."},{"link":"/v5/api/utils/strings/#strings-utf8","text":"This should not be confused with string.split(\"\"), which destroys surrogate pairs, splitting between each UTF-16 codeunit instead."}]},{"title":"Strings -- UTF-8 Strings -- ethers.utils.toUtf8String( aBytesLike [ , onError = error ] ) => string","blocks":[{"link":"/v5/api/utils/strings/#utils-toUtf8String","text":"Returns the string represented by the UTF-8 bytes of aBytesLike."},{"link":"/v5/api/utils/strings/#utils-toUtf8String","text":"The onError is a Custom UTF-8 Error function and if not specified it defaults to the error function, which throws an error on any UTF-8 error."}]},{"title":"Strings -- UnicodeNormalizationForm","blocks":[{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"There are several commonly used forms when normalizing UTF-8 data, which allow strings to be compared or hashed in a stable way."}]},{"title":"Strings -- UnicodeNormalizationForm -- ethers.utils.UnicodeNormalizationForm.current","blocks":[{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"Maintain the current normalization form."}]},{"title":"Strings -- UnicodeNormalizationForm -- ethers.utils.UnicodeNormalizationForm.NFC","blocks":[{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"The Composed Normalization Form."},{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"This form uses single codepoints which represent the fully composed character."},{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"For example, the é is a single codepoint, 0x00e9."}]},{"title":"Strings -- UnicodeNormalizationForm -- ethers.utils.UnicodeNormalizationForm.NFD","blocks":[{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"The Decomposed Normalization Form."},{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"This form uses multiple codepoints (when necessary) to compose a character."},{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"For example, the é is made up of two codepoints, \"0x0065\" (which is the letter \"e\") and \"0x0301\" which is a special diacritic UTF-8 codepoint which indicates the previous character should have an acute accent."}]},{"title":"Strings -- UnicodeNormalizationForm -- ethers.utils.UnicodeNormalizationForm.NFKC","blocks":[{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"The Composed Normalization Form with Canonical Equivalence."},{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"The Canonical representation folds characters which have the same syntactic representation but different semantic meaning."},{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"For example, the Roman Numeral I, which has a UTF-8 codepoint \"0x2160\", is folded into the capital letter I, \"0x0049\"."}]},{"title":"Strings -- UnicodeNormalizationForm -- ethers.utils.UnicodeNormalizationForm.NFKD","blocks":[{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"The Decomposed Normalization Form with Canonical Equivalence."},{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"See NFKC for more an example."}]},{"title":"Strings -- UnicodeNormalizationForm -- Note","blocks":[{"link":"/v5/api/utils/strings/#strings--unicode-normalization-form","text":"Only certain specified characters are folded in Canonical Equivalence, and thus it should not be considered a method to achieve any level of security from homoglyph attacks."}]},{"title":"Strings -- Custom UTF-8 Error Handling","blocks":[{"link":"/v5/api/utils/strings/#strings--error-handling","text":"When converting a string to its codepoints, there is the possibility of invalid byte sequences."},{"link":"/v5/api/utils/strings/#strings--error-handling","text":"Since certain situations may need specific ways to handle UTF-8 errors, a custom error handling function can be used, which has the signature:."}]},{"title":"Strings -- Custom UTF-8 Error Handling -- errorFunction( reason , offset , bytes , output [ , badCodepoint ] ) => number","blocks":[{"link":"/v5/api/utils/strings/#strings--error-handling","text":"The reason is one of the UTF-8 Error Reasons, offset is the index into bytes where the error was first encountered, output is the list of codepoints already processed (and may be modified) and in certain Error Reasons, the badCodepoint indicates the currently computed codepoint, but which would be rejected because its value is invalid."},{"link":"/v5/api/utils/strings/#strings--error-handling","text":"This function should return the number of bytes to skip past keeping in mind the value at offset will already be consumed."}]},{"title":"Strings -- Custom UTF-8 Error Handling -- ethers.utils.Utf8ErrorReason.BAD_PREFIX","blocks":[{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"A byte was encountered which is invalid to begin a UTF-8 byte sequence with."}]},{"title":"Strings -- Custom UTF-8 Error Handling -- ethers.utils.Utf8ErrorReason.MISSING_CONTINUE","blocks":[{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"A UTF-8 sequence was begun, but did not have enough continuation bytes for the sequence."},{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"For this error the ofset is the index at which a continuation byte was expected."}]},{"title":"Strings -- Custom UTF-8 Error Handling -- ethers.utils.Utf8ErrorReason.OUT_OF_RANGE","blocks":[{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"The computed codepoint is outside the range for valid UTF-8 codepoints (i.e."},{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"the codepoint is greater than 0x10ffff)."},{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"This reason will pass the computed badCountpoint into the custom error function."}]},{"title":"Strings -- Custom UTF-8 Error Handling -- ethers.utils.Utf8ErrorReason.OVERLONG","blocks":[{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"Due to the way UTF-8 allows variable length byte sequences to be used, it is possible to have multiple representations of the same character, which means overlong sequences allow for a non-distinguished string to be formed, which can impact security as multiple strings that are otherwise equal can have different hashes."},{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"Generally, overlong sequences are an attempt to circumvent some part of security, but in rare cases may be produced by lazy libraries or used to encode the null terminating character in a way that is safe to include in a char*."},{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"This reason will pass the computed badCountpoint into the custom error function, which is actually a valid codepoint, just one that was arrived at through unsafe methods."}]},{"title":"Strings -- Custom UTF-8 Error Handling -- ethers.utils.Utf8ErrorReason.OVERRUN","blocks":[{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"The string does not have enough characters remaining for the length of this sequence."}]},{"title":"Strings -- Custom UTF-8 Error Handling -- ethers.utils.Utf8ErrorReason.UNEXPECTED_CONTINUE","blocks":[{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"This error is similar to BAD_PREFIX, since a continuation byte cannot begin a valid sequence, but many may wish to process this differently."},{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"However, most developers would want to trap this and perform the same operation as a BAD_PREFIX."}]},{"title":"Strings -- Custom UTF-8 Error Handling -- ethers.utils.Utf8ErrorReason.UTF16_SURROGATE","blocks":[{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"The computed codepoint represents a value reserved for UTF-16 surrogate pairs."},{"link":"/v5/api/utils/strings/#strings--error-reasons","text":"This reason will pass the computed surrogate half badCountpoint into the custom error function."}]},{"title":"Strings -- Custom UTF-8 Error Handling -- Provided UTF-8 Error Handling Functions","blocks":[{"link":"/v5/api/utils/strings/#strings--error-handling","text":"There are already several functions available for the most common situations."}]},{"title":"Strings -- Custom UTF-8 Error Handling -- ethers.utils.Utf8ErrorFuncs.error","blocks":[{"link":"/v5/api/utils/strings/#strings--Utf8Error","text":"The will throw an error on any error with a UTF-8 sequence, including invalid prefix bytes, overlong sequences, UTF-16 surrogate pairs."}]},{"title":"Strings -- Custom UTF-8 Error Handling -- ethers.utils.Utf8ErrorFuncs.ignore","blocks":[{"link":"/v5/api/utils/strings/#strings--Utf8Ignore","text":"This will drop all invalid sequences (by consuming invalid prefix bytes and any following continuation bytes) from the final string as well as permit overlong sequences to be converted to their equivalent string."}]},{"title":"Strings -- Custom UTF-8 Error Handling -- ethers.utils.Utf8ErrorFuncs.replace","blocks":[{"link":"/v5/api/utils/strings/#strings--Utf8Replace","text":"This will replace all invalid sequences (by consuming invalid prefix bytes and any following continuation bytes) with the UTF-8 Replacement Character, (i.e."},{"link":"/v5/api/utils/strings/#strings--Utf8Replace","text":"U+FFFD)."}]},{"title":"Transactions -- Types -- UnsignedTransaction","blocks":[{"link":"/v5/api/utils/transactions/#UnsignedTransaction","text":"An unsigned transaction represents a transaction that has not been signed and its values are flexible as long as they are not ambiguous."}]},{"title":"Transactions -- Types -- unsignedTransaction.to => string< Address >","blocks":[{"link":"/v5/api/utils/transactions/#UnsignedTransaction","text":"The address this transaction is to."}]},{"title":"Transactions -- Types -- unsignedTransaction.nonce => number","blocks":[{"link":"/v5/api/utils/transactions/#UnsignedTransaction","text":"The nonce of this transaction."}]},{"title":"Transactions -- Types -- unsignedTransaction.gasLimit => BigNumberish","blocks":[{"link":"/v5/api/utils/transactions/#UnsignedTransaction","text":"The gas limit for this transaction."}]},{"title":"Transactions -- Types -- unsignedTransaction.gasPrice => BigNumberish","blocks":[{"link":"/v5/api/utils/transactions/#UnsignedTransaction","text":"The gas price for this transaction."}]},{"title":"Transactions -- Types -- unsignedTransaction.data => BytesLike","blocks":[{"link":"/v5/api/utils/transactions/#UnsignedTransaction","text":"The data for this transaction."}]},{"title":"Transactions -- Types -- unsignedTransaction.value => BigNumberish","blocks":[{"link":"/v5/api/utils/transactions/#UnsignedTransaction","text":"The value (in wei) for this transaction."}]},{"title":"Transactions -- Types -- unsignedTransaction.chainId => number","blocks":[{"link":"/v5/api/utils/transactions/#UnsignedTransaction","text":"The chain ID for this transaction."},{"link":"/v5/api/utils/transactions/#UnsignedTransaction","text":"If the chain ID is 0 or null, then EIP-155 is disabled and legacy signing is used, unless overridden in a signature."}]},{"title":"Transactions -- Types -- Transaction","blocks":[{"link":"/v5/api/utils/transactions/#Transaction","text":"A generic object to represent a transaction."}]},{"title":"Transactions -- Types -- transaction.hash => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/transactions/#Transaction","text":"The transaction hash, which can be used as an identifier for transaction."},{"link":"/v5/api/utils/transactions/#Transaction","text":"This is the keccak256 of the serialized RLP encoded representation of transaction."}]},{"title":"Transactions -- Types -- unsignedTransaction.to => string< Address >","blocks":[{"link":"/v5/api/utils/transactions/#Transaction","text":"The address transaction is to."}]},{"title":"Transactions -- Types -- transaction.from => string< Address >","blocks":[{"link":"/v5/api/utils/transactions/#Transaction","text":"The address transaction is from."}]},{"title":"Transactions -- Types -- transaction.nonce => number","blocks":[{"link":"/v5/api/utils/transactions/#Transaction","text":"The nonce for transaction."},{"link":"/v5/api/utils/transactions/#Transaction","text":"Each transaction sent to the network from an account includes this, which ensures the order and non-replayability of a transaction."},{"link":"/v5/api/utils/transactions/#Transaction","text":"This must be equal to the current number of transactions ever sent to the network by the from address."}]},{"title":"Transactions -- Types -- transaction.gasLimit => BigNumber","blocks":[{"link":"/v5/api/utils/transactions/#Transaction","text":"The gas limit for transaction."},{"link":"/v5/api/utils/transactions/#Transaction","text":"An account must have enough ether to cover the gas (at the specified gasPrice)."},{"link":"/v5/api/utils/transactions/#Transaction","text":"Any unused gas is refunded at the end of the transaction, and if there is insufficient gas to complete execution, the effects of the transaction are reverted, but the gas is fully consumed and an out-of-gas error occurs."}]},{"title":"Transactions -- Types -- transaction.gasPrice => BigNumber","blocks":[{"link":"/v5/api/utils/transactions/#Transaction","text":"The price (in wei) per unit of gas for transaction."}]},{"title":"Transactions -- Types -- transaction.data => BytesLike","blocks":[{"link":"/v5/api/utils/transactions/#Transaction","text":"The data for transaction."},{"link":"/v5/api/utils/transactions/#Transaction","text":"In a contract this is the call data."}]},{"title":"Transactions -- Types -- transaction.value => BigNumber","blocks":[{"link":"/v5/api/utils/transactions/#Transaction","text":"The value (in wei) for transaction."}]},{"title":"Transactions -- Types -- transaction.chainId => number","blocks":[{"link":"/v5/api/utils/transactions/#Transaction","text":"The chain ID for transaction."},{"link":"/v5/api/utils/transactions/#Transaction","text":"This is used as part of EIP-155 to prevent replay attacks on different networks."},{"link":"/v5/api/utils/transactions/#Transaction","text":"For example, if a transaction was made on ropsten with an account also used on homestead, it would be possible for a transaction signed on ropsten to be executed on homestead, which is likely unintended."},{"link":"/v5/api/utils/transactions/#Transaction","text":"There are situations where replay may be desired, however these are very rare and it is almost always recommended to specify the chain ID."}]},{"title":"Transactions -- Types -- transaction.r => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/transactions/#Transaction","text":"The r portion of the elliptic curve signatures for transaction."},{"link":"/v5/api/utils/transactions/#Transaction","text":"This is more accurately, the x coordinate of the point r (from which the y can be computed, along with v)."}]},{"title":"Transactions -- Types -- transaction.s => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/transactions/#Transaction","text":"The s portion of the elliptic curve signatures for transaction."}]},{"title":"Transactions -- Types -- transaction.v => number","blocks":[{"link":"/v5/api/utils/transactions/#Transaction","text":"The v portion of the elliptic curve signatures for transaction."},{"link":"/v5/api/utils/transactions/#Transaction","text":"This is used to refine which of the two possible points a given x-coordinate can have, and in EIP-155 is additionally used to encode the chain ID into the serialized transaction."}]},{"title":"Transactions -- Functions -- ethers.utils.parseTransaction( aBytesLike ) => Transaction","blocks":[{"link":"/v5/api/utils/transactions/#utils-parseTransaction","text":"Parses the transaction properties from a serialized transaction."}]},{"title":"Transactions -- Functions -- ethers.utils.serializeTransaction( tx [ , signature ] ) => string< DataHexString >","blocks":[{"link":"/v5/api/utils/transactions/#utils-serializeTransaction","text":"Computes the serialized transaction, optionally serialized with the a signature."},{"link":"/v5/api/utils/transactions/#utils-serializeTransaction","text":"If signature is not present, the unsigned serialized transaction is returned, which can be used to compute the hash necessary to sign."},{"link":"/v5/api/utils/transactions/#utils-serializeTransaction","text":"This function uses EIP-155 if a chainId is provided, otherwise legacy serialization is used."},{"link":"/v5/api/utils/transactions/#utils-serializeTransaction","text":"It is highly recommended to always specify a chainId."},{"link":"/v5/api/utils/transactions/#utils-serializeTransaction","text":"If signature includes a chain ID (explicitly or implicitly by using an EIP-155 v or _vs) it will be used to compute the chain ID."},{"link":"/v5/api/utils/transactions/#utils-serializeTransaction","text":"If there is a mismatch between the chain ID of transaction and signature an error is thrown."}]},{"title":"Web Utilities -- Functions -- ethers.utils.fetchJson( urlOrConnectionInfo [ , json [ , processFunc ] ] ) => Promise< any >","blocks":[{"link":"/v5/api/utils/web/#utils-fetchJson","text":"Fetch and parse the JSON content from urlOrConnectionInfo, with the optional body json and optionally processing the result with processFun before returning it."}]},{"title":"Web Utilities -- Functions -- ethers.utils.poll( pollFunc [ , options ] ) => Promise< any >","blocks":[{"link":"/v5/api/utils/web/#utils-poll","text":"Repeatedly call pollFunc using the PollOptions until it returns a value other than undefined."}]},{"title":"Web Utilities -- Functions -- connection.url => string","blocks":[{"link":"/v5/api/utils/web/#ConnectionInfo","text":"The URL to connect to."}]},{"title":"Web Utilities -- Functions -- connection.user => string","blocks":[{"link":"/v5/api/utils/web/#ConnectionInfo","text":"The username to use for Basic Authentication."},{"link":"/v5/api/utils/web/#ConnectionInfo","text":"The default is null (i.e."},{"link":"/v5/api/utils/web/#ConnectionInfo","text":"do not use basic authentication)."}]},{"title":"Web Utilities -- Functions -- connection.password => string","blocks":[{"link":"/v5/api/utils/web/#ConnectionInfo","text":"The password to use for Basic Authentication."},{"link":"/v5/api/utils/web/#ConnectionInfo","text":"The default is null (i.e."},{"link":"/v5/api/utils/web/#ConnectionInfo","text":"do not use basic authentication)."}]},{"title":"Web Utilities -- Functions -- connection.allowInsecureAuthentication => boolean","blocks":[{"link":"/v5/api/utils/web/#ConnectionInfo","text":"Allow Basic Authentication over non-secure HTTP."},{"link":"/v5/api/utils/web/#ConnectionInfo","text":"The default is false."}]},{"title":"Web Utilities -- Functions -- connection.timeout => number","blocks":[{"link":"/v5/api/utils/web/#ConnectionInfo","text":"How long to wait before rejecting with a timeout error."}]},{"title":"Web Utilities -- Functions -- connection.headers => {[key:string]:string}","blocks":[{"link":"/v5/api/utils/web/#ConnectionInfo","text":"Additional headers to include in the connection."}]},{"title":"Web Utilities -- Functions -- options.timeout => number","blocks":[{"link":"/v5/api/utils/web/#PollOptions","text":"The amount of time allowed to elapse before triggering a timeout error."}]},{"title":"Web Utilities -- Functions -- options.floor => number","blocks":[{"link":"/v5/api/utils/web/#PollOptions","text":"The minimum time limit to allow for Exponential Backoff."},{"link":"/v5/api/utils/web/#PollOptions","text":"The default is 0s."}]},{"title":"Web Utilities -- Functions -- options.ceiling => number","blocks":[{"link":"/v5/api/utils/web/#PollOptions","text":"The maximum time limit to allow for Exponential Backoff."},{"link":"/v5/api/utils/web/#PollOptions","text":"The default is 10s."}]},{"title":"Web Utilities -- Functions -- options.interval => number","blocks":[{"link":"/v5/api/utils/web/#PollOptions","text":"The interval used during Exponential Backoff calculation."},{"link":"/v5/api/utils/web/#PollOptions","text":"The default is 250ms."}]},{"title":"Web Utilities -- Functions -- options.retryLimit => number","blocks":[{"link":"/v5/api/utils/web/#PollOptions","text":"The number of times to retry in the event of an error or undefined is returned."}]},{"title":"Web Utilities -- Functions -- options.onceBlock => Provider","blocks":[{"link":"/v5/api/utils/web/#PollOptions","text":"If this is specified, the polling will wait on new blocks from provider before attempting the pollFunc again."}]},{"title":"Web Utilities -- Functions -- options.oncePoll => Provider","blocks":[{"link":"/v5/api/utils/web/#PollOptions","text":"If this is specified, the polling will occur on each poll cycle of provider before attempting the pollFunc again."}]},{"title":"Wordlists -- Wordlist -- wordlist.locale => string","blocks":[{"link":"/v5/api/utils/wordlists/#Wordlist","text":"The locale for this wordlist."}]},{"title":"Wordlists -- Wordlist -- wordlist.getWord( index ) => string","blocks":[{"link":"/v5/api/utils/wordlists/#Wordlist","text":"Returns the word at index."}]},{"title":"Wordlists -- Wordlist -- wordlist.getWordIndex( word ) => number","blocks":[{"link":"/v5/api/utils/wordlists/#Wordlist","text":"Returns the index of word within the wordlist."}]},{"title":"Wordlists -- Wordlist -- wordlist.split( mnemonic ) => Array< string >","blocks":[{"link":"/v5/api/utils/wordlists/#Wordlist","text":"Returns the mnemonic split into each individual word, according to a locale's valid whitespace character set."}]},{"title":"Wordlists -- Wordlist -- wordlist.join( words ) => string","blocks":[{"link":"/v5/api/utils/wordlists/#Wordlist","text":"Returns the mnemonic by joining words together using the whitespace that is standard for the locale."}]},{"title":"Wordlists -- Wordlist -- Wordlist.check( wordlists ) => string< DataHexString< 32 > >","blocks":[{"link":"/v5/api/utils/wordlists/#Wordlist","text":"Checks that all words map both directions correctly and return the hash of the lists."},{"link":"/v5/api/utils/wordlists/#Wordlist","text":"Sub-classes should use this to validate the wordlist is correct against the official wordlist hash."}]},{"title":"Wordlists -- Wordlist -- Wordlist.register( wordlist [ , name ] ) => void","blocks":[{"link":"/v5/api/utils/wordlists/#Wordlist","text":"Register a wordlist with the list of wordlists, optionally overriding the registered name."}]},{"title":"Wordlists -- Languages","blocks":[{"link":"/v5/api/utils/wordlists/#wordlists--languages","text":"The official wordlists available at `ethers.wordlists`."},{"link":"/v5/api/utils/wordlists/#wordlists--languages","text":"In the browser, only the english language is available by default; to include the others (which increases the size of the library), see the dist files in the `ethers` package."}]},{"title":"Wordlists -- Languages -- ethers.wordlists.cz => Wordlist","blocks":[{"link":"/v5/api/utils/wordlists/#wordlists--languages","text":"The Czech Wordlist."}]},{"title":"Wordlists -- Languages -- ethers.wordlists.en => Wordlist","blocks":[{"link":"/v5/api/utils/wordlists/#wordlists--languages","text":"The English Wordlist."}]},{"title":"Wordlists -- Languages -- ethers.wordlists.es => Wordlist","blocks":[{"link":"/v5/api/utils/wordlists/#wordlists--languages","text":"The Spanish Wordlist."}]},{"title":"Wordlists -- Languages -- ethers.wordlists.fr => Wordlist","blocks":[{"link":"/v5/api/utils/wordlists/#wordlists--languages","text":"The French Wordlist."}]},{"title":"Wordlists -- Languages -- ethers.wordlists.it => Wordlist","blocks":[{"link":"/v5/api/utils/wordlists/#wordlists--languages","text":"The Italian Wordlist."}]},{"title":"Wordlists -- Languages -- ethers.wordlists.ja => Wordlist","blocks":[{"link":"/v5/api/utils/wordlists/#wordlists--languages","text":"The Japanese Wordlist."}]},{"title":"Wordlists -- Languages -- ethers.wordlists.ko => Wordlist","blocks":[{"link":"/v5/api/utils/wordlists/#wordlists--languages","text":"The Korean Wordlist."}]},{"title":"Wordlists -- Languages -- ethers.wordlists.zh_cn => Wordlist","blocks":[{"link":"/v5/api/utils/wordlists/#wordlists--languages","text":"The Simplified Chinese Wordlist."}]},{"title":"Wordlists -- Languages -- ethers.wordlists.zh_tw => Wordlist","blocks":[{"link":"/v5/api/utils/wordlists/#wordlists--languages","text":"The Traditional Chinese Wordlist."}]},{"title":"Provider API Keys","blocks":[{"link":"/v5/api-keys/#api-keys","text":"( TL; DR – sign up for your own API keys with the links below to improve your application performance )."},{"link":"/v5/api-keys/#api-keys","text":"When using a Provider backed by an API service (such as Alchemy, Etherscan or INFURA), the service requires an API key, which allows each service to track individual projects and their usage and permissions."},{"link":"/v5/api-keys/#api-keys","text":"The ethers library offers default API keys for each service, so that each Provider works out-of-the-box."},{"link":"/v5/api-keys/#api-keys","text":"These API keys are provided as a community resource by the backend services for low-traffic projects and for early prototyping."},{"link":"/v5/api-keys/#api-keys","text":"Since these API keys are shared by all users (that have not acquired their own API key), they are aggressively throttled which means retries occur more frequently and the responses are slower."},{"link":"/v5/api-keys/#api-keys","text":"It is highly recommended that you sign up for a free API key from each service for their free tier, which (depending on the service) includes many advantages:."},{"link":"/v5/api-keys/#api-keys","text":"a much higher request rate and concurrent request limit faster responses with fewer retries and timeouts useful metric tracking for performance tuning and to analyze your customer behaviour more advanced APIs, such as archive data or advanced log queries."}]},{"title":"Provider API Keys -- Etherscan","blocks":[{"link":"/v5/api-keys/#api-keys--etherscan","text":"Etherscan is an Ethereum block explorer, which is possibly the most useful developer tool for building and debugging Ethereum applications."},{"link":"/v5/api-keys/#api-keys--etherscan","text":"They offer an extensive collection of API endpoints which provide all the operations required to interact with the Ethereum Blockchain."},{"link":"/v5/api-keys/#api-keys--etherscan","text":"Sign up for a free API key on Etherscan."},{"link":"/v5/api-keys/#api-keys--etherscan","text":"Benefits:."},{"link":"/v5/api-keys/#api-keys--etherscan","text":"higher rate limit (since you are not using the shared rate limit) customer usage metrics."}]},{"title":"Provider API Keys -- INFURA","blocks":[{"link":"/v5/api-keys/#api-keys--infura","text":"The INFURA service has been around for quite some time and is very robust and reliable and highly recommended."},{"link":"/v5/api-keys/#api-keys--infura","text":"They offer a standard JSON-RPC interface and a WebSocket interface, which makes interaction with standard tools versatile, simple and straight forward."},{"link":"/v5/api-keys/#api-keys--infura","text":"Sign up for a free Project ID on INFURA."},{"link":"/v5/api-keys/#api-keys--infura","text":"Benefits:."},{"link":"/v5/api-keys/#api-keys--infura","text":"higher rate limit customer usage metrics access to archive data (requires paid upgrade)."}]},{"title":"Provider API Keys -- Alchemy","blocks":[{"link":"/v5/api-keys/#api-keys--alchemy","text":"The Alchemy service has been around a few years and is also very robust and reliable."},{"link":"/v5/api-keys/#api-keys--alchemy","text":"They offer a standard JSON-RPC interface and a WebSocket interface, as well as a collection of advanced APIs for interacting with tokens and to assist with debugging."},{"link":"/v5/api-keys/#api-keys--alchemy","text":"Sign up for a free API key on Alchemy."},{"link":"/v5/api-keys/#api-keys--alchemy","text":"Benefits:."},{"link":"/v5/api-keys/#api-keys--alchemy","text":"higher rate limit customer usage metrics access to advanced token balance and metadata APIs access to advanced debugging trace and revert reason APIs."}]},{"title":"Provider API Keys -- Pocket Gateway","blocks":[{"link":"/v5/api-keys/#api-keys--pocket-gateway","text":"Sign up for a free API key on Pocket."},{"link":"/v5/api-keys/#api-keys--pocket-gateway","text":"Benefits:."},{"link":"/v5/api-keys/#api-keys--pocket-gateway","text":"customer usage metrics decentralized Access to Blockchain Infrastructure Stake as opposed to paying a monthly fee Highly redundant global set of nodes incentivized by cryptoeconomic incentives."}]},{"title":"Provider API Keys -- Creating a Default Provider","blocks":[{"link":"/v5/api-keys/#api-keys--getDefaultProvider","text":"The default provider connects to multiple backends and verifies their results internally, making it simple to have a high level of trust in third-party services."},{"link":"/v5/api-keys/#api-keys--getDefaultProvider","text":"A second optional parameter allows API keys to be specified to each Provider created internally and any API key omitted will fallback onto using the default API key for that service."},{"link":"/v5/api-keys/#api-keys--getDefaultProvider","text":"It is highly recommended that you provide an API for each service, to maximize your applications performance."}]},{"title":"Assembler","blocks":[{"link":"/v5/cli/asm/#cli-asm","text":"The assembler Command-Line utility allows you to assemble the Ethers ASM Dialect into deployable EVM bytecode and disassemble EVM bytecode into human-readable mnemonics."}]},{"title":"Assembler -- Example Input Files -- Note: Bytecode File Syntax","blocks":[{"link":"/v5/cli/asm/","text":"A bin file may be made up of multiple blocks of bytecode, each may optionally begin with a 0x prefix, all of which must be of even length (since bytes are required, with 2 nibbles per byte)."},{"link":"/v5/cli/asm/","text":"All whitespace is ignored."}]},{"title":"Assembler -- Assembler Examples","blocks":[{"link":"/v5/cli/asm/#cli-asm","text":"The assembler converts an Ethers ASM Dialect into bytecode by running multiple passes of an assemble stage, each pass more closely approximating the final result."},{"link":"/v5/cli/asm/#cli-asm","text":"This allows small portions of the bytecode to be massaged and tweaked until the bytecode stabilizes."},{"link":"/v5/cli/asm/#cli-asm","text":"This allows for more compact jump destinations and for code to include more advanced meta-programming techniques."}]},{"title":"Assembler -- Assembler Examples -- --define KEY=VALUE or --define FLAG","blocks":[{"link":"/v5/cli/asm/","text":"This allows key/value pairs (where the value is a string) and flags (which the value is true) to be passed along to the assembler, which can be accessed in Scripting Blocks, such as {{= defined.someKey }}."}]},{"title":"Assembler -- Assembler Examples -- --ignore-warnings","blocks":[{"link":"/v5/cli/asm/","text":"By default any warning will be treated like an error."},{"link":"/v5/cli/asm/","text":"This enabled by-passing warnings."}]},{"title":"Assembler -- Assembler Examples -- --pic","blocks":[{"link":"/v5/cli/asm/","text":"When a program is assembled, the labels are usually given as an absolute byte position, which can be jumped to for loops and control flow."},{"link":"/v5/cli/asm/","text":"This means that a program must be installed at a specific location."},{"link":"/v5/cli/asm/","text":"Byt specifying the Position Independent Code flag, code will be generated in a way such that all offsets are relative, allowing the program to be moved without any impact to its logic."},{"link":"/v5/cli/asm/","text":"This does incur an additional gas cost of 8 gas per offset access though."}]},{"title":"Assembler -- Assembler Examples -- --target LABEL","blocks":[{"link":"/v5/cli/asm/","text":"All programs have a root scope named _ which is by default assembled."},{"link":"/v5/cli/asm/","text":"This option allows another labelled target (either a Scopes or a Data Segment to be assembled instead."},{"link":"/v5/cli/asm/","text":"The entire program is still assembled per usual, so this only impacts which part of the program is output."}]},{"title":"Assembler -- Disassembler Examples","blocks":[{"link":"/v5/cli/asm/#cli-asm","text":"A disassembled program shows offsets and mnemonics for the given bytecode."},{"link":"/v5/cli/asm/#cli-asm","text":"This format may change in the future to be more human-readable."}]},{"title":"Ethereum Naming Service -- Examples","blocks":[{"link":"/v5/cli/ens/","text":"TODO examples."}]},{"title":"Sandbox Utility","blocks":[{"link":"/v5/cli/ethers/","text":"The sandbox utility provides a simple way to use the most common ethers utilities required during learning, debugging and managing interactions with the Ethereum network."},{"link":"/v5/cli/ethers/","text":"If no command is given, it will enter a REPL interface with many of the ethers utilities already exposed."}]},{"title":"Sandbox Utility -- Examples -- Scripting","blocks":[{"link":"/v5/cli/ethers/#cliex-scripting","text":"The eval command can be used to execute simple one-line scripts from the command line to be passed into other commands or stored in script environment variables."}]},{"title":"Sandbox Utility -- Examples -- Using Mnemonics (with a password)","blocks":[{"link":"/v5/cli/ethers/#cliex-mnemonicpassword","text":"All mnemonic phrases have a password, but the default is to use the empty string (i.e."},{"link":"/v5/cli/ethers/#cliex-mnemonicpassword","text":"\"\") as the password."},{"link":"/v5/cli/ethers/#cliex-mnemonicpassword","text":"If you have a password on your mnemonic, the --mnemonic-password will prompt for the password to use to decrypt the account."}]},{"title":"Sandbox Utility -- Examples -- Using Mnemonics (with experimental memory-hard passwords)","blocks":[{"link":"/v5/cli/ethers/#cliex-mnemonicpassword-xxx","text":"The --xxx-mnemonic-password is similar to the --mnemonic-password options, which uses a password to decrypt the account for a mnemonic, however it passes the password through the scrypt password-based key derivation function first, which is intentionally slow and makes a brute-force attack far more difficult."}]},{"title":"Sandbox Utility -- Examples -- Note","blocks":[{"link":"/v5/cli/ethers/#cliex-mnemonicpassword-xxx","text":"This is still an experimental feature (hence the xxx)."}]},{"title":"Making Your Own","blocks":[{"link":"/v5/cli/plugin/#cli-diy","text":"The cli library is meant to make it easy to create command line utilities of your own."}]},{"title":"Making Your Own -- CLI","blocks":[{"link":"/v5/cli/plugin/#cli-cli","text":"A CLI handles parsing all the command-line flags, options and arguments and instantiates a Plugin to process the command."},{"link":"/v5/cli/plugin/#cli-cli","text":"A CLI may support multiple Plugin's in which case the first argument is used to determine which to run (or if no arguments, the default plugin will be selected) or may be designed to be standalone, in which case exactly one Plugin will be used and no command argument is allowed."}]},{"title":"Making Your Own -- CLI -- addPlugin( command , pluginClass ) => void","blocks":[{"link":"/v5/cli/plugin/#cli-addplugin","text":"Add a plugin class for the command."},{"link":"/v5/cli/plugin/#cli-addplugin","text":"After all options and flags have been consumed, the first argument will be consumed and the associated plugin class will be instantiated and run."}]},{"title":"Making Your Own -- CLI -- setPlugin( pluginClass ) => void","blocks":[{"link":"/v5/cli/plugin/#cli-setplugin","text":"Set a dedicated Plugin class which will handle all input."},{"link":"/v5/cli/plugin/#cli-setplugin","text":"This may not be used in conjunction with addPlugin and will not automatically accept a command from the arguments."}]},{"title":"Making Your Own -- CLI -- showUsage( [ message = \"\" [ , status = 0 ] ] ) => never","blocks":[{"link":"/v5/cli/plugin/#cli-showusage","text":"Shows the usage help screen for the CLI and terminates."}]},{"title":"Making Your Own -- CLI -- run( args ) => Promise< void >","blocks":[{"link":"/v5/cli/plugin/#cli-run","text":"Usually the value of args passed in will be process.argv.slice(2)."}]},{"title":"Making Your Own -- Plugin","blocks":[{"link":"/v5/cli/plugin/#cli-plugin","text":"Each Plugin manages each command of a CLI and is executed in phases."},{"link":"/v5/cli/plugin/#cli-plugin","text":"If the usage (i.e."},{"link":"/v5/cli/plugin/#cli-plugin","text":"help) of a CLI is requested, the static methods getHelp and getOptionHelp are used to generate the help screen."},{"link":"/v5/cli/plugin/#cli-plugin","text":"Otherwise, a plugin is instantiated and the prepareOptions is called."},{"link":"/v5/cli/plugin/#cli-plugin","text":"Each plugin must call super.prepareOptions, otherwise the basic options are not yet processed."},{"link":"/v5/cli/plugin/#cli-plugin","text":"During this time a Plugin should consume all the flags and options it understands, since any left over flags or options will cause the CLI to bail and issue an unknown option error."},{"link":"/v5/cli/plugin/#cli-plugin","text":"This should throw if a value for a given option is invalid or some combination of options and flags is not allowed."},{"link":"/v5/cli/plugin/#cli-plugin","text":"Once the prepareOptions is complete (the returned promise is resolved), the prepareArguments is called."},{"link":"/v5/cli/plugin/#cli-plugin","text":"This should validate the number of arguments expected and throw an error if there are too many or too few arguments or if any arguments do not make sense."},{"link":"/v5/cli/plugin/#cli-plugin","text":"Once the prepareArguments is complete (the returned promise is resolved), the run is called."}]},{"title":"Making Your Own -- Plugin -- plugin.network => Network","blocks":[{"link":"/v5/cli/plugin/#cli-plugin","text":"The network this plugin is running for."}]},{"title":"Making Your Own -- Plugin -- plugin.provider => Provider","blocks":[{"link":"/v5/cli/plugin/#cli-plugin","text":"The provider for this plugin is running for."}]},{"title":"Making Your Own -- Plugin -- plugin.accounts => Array< Signer >","blocks":[{"link":"/v5/cli/plugin/#cli-plugin","text":"The accounts passed into the plugin using --account, --account-rpc and --account-void which this plugin can use."}]},{"title":"Making Your Own -- Plugin -- plugin.gasLimit => BigNumber","blocks":[{"link":"/v5/cli/plugin/#cli-plugin","text":"The gas limit this plugin should use."},{"link":"/v5/cli/plugin/#cli-plugin","text":"This is null if unspecified."}]},{"title":"Making Your Own -- Plugin -- plugin.gasPrice => BigNumber","blocks":[{"link":"/v5/cli/plugin/#cli-plugin","text":"The gas price this plugin should use."},{"link":"/v5/cli/plugin/#cli-plugin","text":"This is null if unspecified."}]},{"title":"Making Your Own -- Plugin -- plugin.nonce => number","blocks":[{"link":"/v5/cli/plugin/#cli-plugin","text":"The initial nonce for the account this plugin should use."}]},{"title":"Making Your Own -- Plugin -- plugin.getAddress( addressOrName [ , message = \"\" , [ allowZero = false ] ] ) => Promise< string >","blocks":[{"link":"/v5/cli/plugin/#plugin-getaddress","text":"A plugin should use this method to resolve an address."},{"link":"/v5/cli/plugin/#plugin-getaddress","text":"If the resolved address is the zero address and allowZero is not true, an error is raised."}]},{"title":"Making Your Own -- Plugin -- plugin.dump( header , info ) => void","blocks":[{"link":"/v5/cli/plugin/#plugin-dump","text":"Dumps the contents of info to the console with a header in a nicely formatted style."},{"link":"/v5/cli/plugin/#plugin-dump","text":"In the future, plugins may support a JSON output format which will automatically work with this method."}]},{"title":"Making Your Own -- Plugin -- plugin.throwUsageError( [ message = \"\" ] ) => never","blocks":[{"link":"/v5/cli/plugin/#plugin-throwusageerror","text":"Stops execution of the plugin and shows the help screen of the plugin with the optional message."}]},{"title":"Making Your Own -- Plugin -- plugin.throwError( message ) => never","blocks":[{"link":"/v5/cli/plugin/#plugin-throwerror","text":"Stops execution of the plugin and shows message."}]},{"title":"Making Your Own -- Plugin -- Plugin.getHelp => Help","blocks":[{"link":"/v5/cli/plugin/#plugin-gethelp","text":"Each subclass should implement this static method which is used to generate the help screen."}]},{"title":"Making Your Own -- Plugin -- Plugin.getOptionHelp => Array< Help >","blocks":[{"link":"/v5/cli/plugin/#plugin-getoptionshelp","text":"Each subclass should implement this static method if it supports additional options which is used to generate the help screen."}]},{"title":"Making Your Own -- ArgParser","blocks":[{"link":"/v5/cli/plugin/#cli-argparser","text":"The ArgParser is used to parse a command line into flags, options and arguments."},{"link":"/v5/cli/plugin/#cli-argparser","text":"Flags are simple binary options (such as the --yes), which are true if present otherwise false."},{"link":"/v5/cli/plugin/#cli-argparser","text":"Options require a single parameter follow them on the command line (such as --account wallet.json, which has the name account and the value wallet.json)."},{"link":"/v5/cli/plugin/#cli-argparser","text":"Arguments are all other values on the command line, and are not accessed through the ArgParser directly."},{"link":"/v5/cli/plugin/#cli-argparser","text":"When a CLI is run, an ArgParser is used to validate the command line by using prepareOptions, which consumes all flags and options leaving only the arguments behind, which are then passed into prepareArgs."}]},{"title":"Making Your Own -- ArgParser -- argParser.consumeFlag( name ) => boolean","blocks":[{"link":"/v5/cli/plugin/#argparser-consumeflag","text":"Remove the flag name and return true if it is present."}]},{"title":"Making Your Own -- ArgParser -- argParser.consumeMultiOptions( names ) => Array< {name:string,value:string} >","blocks":[{"link":"/v5/cli/plugin/#argparser-consumemultioptions","text":"Remove all options which match any name in the Array of names with their values returning the list (in order) of values."}]},{"title":"Making Your Own -- ArgParser -- argParser.consumeOption( name ) => string","blocks":[{"link":"/v5/cli/plugin/#argparser-consumeoption","text":"Remove the option with its value for name and return the value."},{"link":"/v5/cli/plugin/#argparser-consumeoption","text":"This will throw a UsageError if the option is included multiple times."}]},{"title":"Making Your Own -- ArgParser -- argParser.consumeOptions( name ) => Array< string >","blocks":[{"link":"/v5/cli/plugin/#argparser-consumeoptions","text":"Remove all options with their values for name and return the list (in order) of values."}]},{"title":"TypeScript -- Examples","blocks":[{"link":"/v5/cli/typescript/","text":"TODO."}]},{"title":"Best Practices -- Network Changes","blocks":[{"link":"/v5/concepts/best-practices/#best-practices","text":"Handling a change in the network (e.g."},{"link":"/v5/concepts/best-practices/#best-practices","text":"Ropsten vs Mainnet) is incredibly complex and a slight failure can at best make your application seem confusing and at worst cause the loss of funds, leak private data or misrepresent what an action performed."},{"link":"/v5/concepts/best-practices/#best-practices","text":"Luckily, standard users should likely never change their networks unless tricked to do so or they make a mistake."},{"link":"/v5/concepts/best-practices/#best-practices","text":"This is a problem you mainly need to worry about for developers, and most developers should understand the vast array of issues surrounding a network change during application operation and will understand the page reloading (which is already the default behaviour in many clients)."},{"link":"/v5/concepts/best-practices/#best-practices","text":"So, the best practice when a network change occurs is to simply refresh the page."},{"link":"/v5/concepts/best-practices/#best-practices","text":"This should cause all your UI components to reset to a known-safe state, including any banners and warnings to your users if they are on an unsupported network."},{"link":"/v5/concepts/best-practices/#best-practices","text":"This can be accomplished by using the following function:."}]},{"title":"Events -- Logs and Filtering","blocks":[{"link":"/v5/concepts/events/#events","text":"Logs and filtering are used quite often in blockchain applications, since they allow for efficient queries of indexed data and provide lower-cost data storage when the data is not required to be accessed on-chain."},{"link":"/v5/concepts/events/#events","text":"These can be used in conjunction with the Provider Events API and with the Contract Events API."},{"link":"/v5/concepts/events/#events","text":"The Contract Events API also provides higher-level methods to compute and query this data, which should be preferred over the lower-level filter."}]},{"title":"Events -- Logs and Filtering -- Filters","blocks":[{"link":"/v5/concepts/events/#events--filters","text":"When a Contract creates a log, it can include up to 4 pieces of data to be indexed by."},{"link":"/v5/concepts/events/#events--filters","text":"The indexed data is hashed and included in a Bloom Filter, which is a data structure that allows for efficient filtering."},{"link":"/v5/concepts/events/#events--filters","text":"So, a filter may correspondingly have up to 4 topic-sets, where each topic-set refers to a condition that must match the indexed log topic in that position (i.e."},{"link":"/v5/concepts/events/#events--filters","text":"each condition is AND-ed together)."},{"link":"/v5/concepts/events/#events--filters","text":"If a topic-set is null, a log topic in that position is not filtered at all and any value matches."},{"link":"/v5/concepts/events/#events--filters","text":"If a topic-set is a single topic, a log topic in that position must match that topic."},{"link":"/v5/concepts/events/#events--filters","text":"If a topic-set is an array of topics, a log topic in that position must match any one of the topics (i.e."},{"link":"/v5/concepts/events/#events--filters","text":"the topic in this position are OR-ed)."},{"link":"/v5/concepts/events/#events--filters","text":"This may sound complicated at first, but is more easily understood with some examples."}]},{"title":"Events -- Logs and Filtering -- Example Log Matching","blocks":[{"link":"/v5/concepts/events/#events--filters","text":"To simplify life, ..., explain here, the contract API."}]},{"title":"Events -- Solidity Topics","blocks":[{"link":"/v5/concepts/events/#events-solidity","text":"This is a quick (and non-comprehensive) overview of how events are computed in Solidity."},{"link":"/v5/concepts/events/#events-solidity","text":"This is likely out of the scope for most developers, but may be intersting to those who want to learn a bit more about the underlying technology."},{"link":"/v5/concepts/events/#events-solidity","text":"Solidity provides two types of events, anonymous and non-anonymous."},{"link":"/v5/concepts/events/#events-solidity","text":"The default is non-anonymous, and most developers will not need to worry about anonymous events."},{"link":"/v5/concepts/events/#events-solidity","text":"For non-anonymous events, up to 3 topics may be indexed (instead of 4), since the first topic is reserved to specify the event signature."},{"link":"/v5/concepts/events/#events-solidity","text":"This allows non-anonymous events to always be filtered by their event signature."},{"link":"/v5/concepts/events/#events-solidity","text":"This topic hash is always in the first slot of the indexed data, and is computed by normalizing the Event signature and taking the keccak256 hash of it."},{"link":"/v5/concepts/events/#events-solidity","text":"For anonymous events, up to 4 topics may be indexed, and there is no signature topic hash, so the events cannot be filtered by the event signature."},{"link":"/v5/concepts/events/#events-solidity","text":"Each additional indexed property is processed depending on whether its length is fixed or dynamic."},{"link":"/v5/concepts/events/#events-solidity","text":"For fixed length types (e.g."},{"link":"/v5/concepts/events/#events-solidity","text":"uint, bytes5), all of which are internally exactly 32 bytes (shorter types are padded with zeros; numeric values are padded on the left, data values padded on the right), these are included directly by their actual value, 32 bytes of data."},{"link":"/v5/concepts/events/#events-solidity","text":"For dynamic types (e.g."},{"link":"/v5/concepts/events/#events-solidity","text":"string, uint256[]) , the value is hashed using keccak256 and this hash is used."},{"link":"/v5/concepts/events/#events-solidity","text":"Because dynamic types are hashed, there are important consequences in parsing events that should be kept in mind."},{"link":"/v5/concepts/events/#events-solidity","text":"Mainly that the original value is lost in the event."},{"link":"/v5/concepts/events/#events-solidity","text":"So, it is possible to tell is a topic is equal to a given string, but if they do not match, there is no way to determine what the value was."},{"link":"/v5/concepts/events/#events-solidity","text":"If a developer requires that a string value is required to be both able to be filtered and also able to be read, the value must be included in the signature twice, once indexed and once non-indexed (e.g."},{"link":"/v5/concepts/events/#events-solidity","text":"someEvent(string indexed searchBy, string clearText))."},{"link":"/v5/concepts/events/#events-solidity","text":"For a more detailed description, please refer to the Solidity Event Documentation."}]},{"title":"Events -- Solidity Topics -- Other Things? TODO","blocks":[{"link":"/v5/concepts/events/#events-solidity","text":"Explain what happens to strings and bytes, how to filter and retain the value."}]},{"title":"Gas","blocks":[{"link":"/v5/concepts/gas/#gas","text":"Explain attack vectors."}]},{"title":"Gas -- Gas Price","blocks":[{"link":"/v5/concepts/gas/#gas-price","text":"The gas price is used somewhat like a bid, indicating an amount you are willing to pay (per unit of execution) to have your transaction processed."}]},{"title":"Ethereum Basics","blocks":[{"link":"/v5/concepts/","text":"This is a brief overview of some aspects of Ethereum and blockchains which developers can make use of or should be aware of."},{"link":"/v5/concepts/","text":"This section is sparse at the moment, but will be expanded as time goes on."}]},{"title":"Security -- Key Derivation Functions","blocks":[{"link":"/v5/concepts/security/#security--pbkdf","text":"This is not specific to Ethereum, but is a useful technique to understand and has some implications on User Experience."},{"link":"/v5/concepts/security/#security--pbkdf","text":"Many people are concerned that encrypting and decrypting an Ethereum wallet is quite slow and can take quite some time."},{"link":"/v5/concepts/security/#security--pbkdf","text":"It is important to understand this is intentional and provides much stronger security."},{"link":"/v5/concepts/security/#security--pbkdf","text":"The algorithm usually used for this process is scrypt, which is a memory and CPU intensive algorithm which computes a key (fixed-length pseudo-random series of bytes) for a given password."}]},{"title":"Security -- Key Derivation Functions -- Why does it take so long?","blocks":[{"link":"/v5/concepts/security/#security--pbkdf","text":"The goal is to use as much CPU and memory as possible during this algorithm, so that a single computer can only compute a very small number of results for some fixed amount of time."},{"link":"/v5/concepts/security/#security--pbkdf","text":"To scale up an attack, the attacker requires additional computers, increasing the cost to brute-force attack to guess the password."},{"link":"/v5/concepts/security/#security--pbkdf","text":"For example, if a user knows their correct password, this process may take 10 seconds for them to unlock their own wallet and proceed."},{"link":"/v5/concepts/security/#security--pbkdf","text":"But since an attacker does not know the password, they must guess; and each guess also requires 10 seconds."},{"link":"/v5/concepts/security/#security--pbkdf","text":"So, if they wish to try guessing 1 million passwords, their computer would be completely tied up for 10 million seconds, or around 115 days."},{"link":"/v5/concepts/security/#security--pbkdf","text":"Without using an algorithm like this, a user would be able to log in instantly, however, 1 million passwords would only take a few seconds to attempt."},{"link":"/v5/concepts/security/#security--pbkdf","text":"Even secure passwords would likely be broken within a short period of time."},{"link":"/v5/concepts/security/#security--pbkdf","text":"There is no way the algorithm can be faster for a legitimate user without also being faster for an attacker."}]},{"title":"Security -- Key Derivation Functions -- Mitigating the User Experience","blocks":[{"link":"/v5/concepts/security/#security--pbkdf","text":"Rather than reducing the security (see below), a better practice is to make the user feel better about waiting."},{"link":"/v5/concepts/security/#security--pbkdf","text":"The Ethers encryption and decryption API allows the developer to incorporate a progress bar, by passing in a progress callback which will be periodically called with a number between 0 and 1 indication percent completion."},{"link":"/v5/concepts/security/#security--pbkdf","text":"In general a progress bar makes the experience feel faster, as well as more comfortable since there is a clear indication how much (relative) time is remaining."},{"link":"/v5/concepts/security/#security--pbkdf","text":"Additionally, using language like \"decrypting...\" in a progress bar makes a user feel like there time is not being needlessly wasted."}]},{"title":"Security -- Key Derivation Functions -- Work-Arounds (not recommended)","blocks":[{"link":"/v5/concepts/security/#security--pbkdf","text":"There are ways to reduce the time required to decrypt an Ethereum JSON Wallet, but please keep in mind that doing so discards nearly all security on that wallet."},{"link":"/v5/concepts/security/#security--pbkdf","text":"The scrypt algorithm is designed to be tuned."},{"link":"/v5/concepts/security/#security--pbkdf","text":"The main purpose of this is to increase the difficulty as time goes on and computers get faster, but it can also be tuned down in situations where the security is less important."}]},{"title":"Contributing and Hacking","blocks":[{"link":"/v5/contributing/#contributing","text":"The ethers.js library is something that I've written out of necessity, and has grown somewhat organically over time."},{"link":"/v5/contributing/#contributing","text":"Many things are the way they are for good (at the time, at least) reasons, but I always welcome criticism, and am completely willing to have my mind changed on things."},{"link":"/v5/contributing/#contributing","text":"Pull requests are always welcome, but please keep a few points in mind:."},{"link":"/v5/contributing/#contributing","text":"Backwards-compatibility-breaking changes will not be accepted; they may be considered for the next major version Security is important; adding dependencies require fairly convincing arguments as to why The library aims to be lean, so keep an eye on the dist/ethers.min.js file size before and after your changes Keep the PR simple and readable; only modify files in the docs.wrm/ and packages/*/src.ts/ folders, as this allows the changes to be easily verified Add test cases for both expected and unexpected input Any new features need to be supported by me (future issues, documentation, testing, migration), so anything that is overly complicated or specific may not be accepted."},{"link":"/v5/contributing/#contributing","text":"In general, please start an issue before beginning a pull request, so we can have a public discussion and figure out the best way to address the problem/feature."},{"link":"/v5/contributing/#contributing","text":":)."}]},{"title":"Contributing and Hacking -- Building","blocks":[{"link":"/v5/contributing/#contributing--building","text":"The build process for ethers is unfortunatly not super trivial, but I have attempted to make it as straight-forward as possible."},{"link":"/v5/contributing/#contributing--building","text":"It is a mono-repo which attempts to be compatibile with a large number of environments, build tools and platforms, which is why there are a some weird things it must do."},{"link":"/v5/contributing/#contributing--building","text":"There are several custom scripts in the misc/admin folder to help manage the monorepo."},{"link":"/v5/contributing/#contributing--building","text":"Developers working on contributing to ethers should not generally need to worry about those, since they are wrapped up behind npm run SCRIPT operations."}]},{"title":"Contributing and Hacking -- Building -- Making Changes","blocks":[{"link":"/v5/contributing/#contributing--updating","text":"Once your environment is set up, you should be able to simply start the auto-build feature, and make changes to the TypeScript source."}]},{"title":"Contributing and Hacking -- Building -- Creating Browser-Ready Files","blocks":[{"link":"/v5/contributing/#contributing--building","text":"To create files for use directly in a browser, the distribution files (located in packages/ethers/dist) need to be built which requires several intermediate builds, scripts and for various rollup scripts to execute."}]},{"title":"Contributing and Hacking -- Building -- Distribution","blocks":[{"link":"/v5/contributing/#contributing--building","text":"Most developers should not ever require this step, but for people forking ethers and creating alternates (for example if you have a non-EVM compatible chain but are trying to reuse this package)."},{"link":"/v5/contributing/#contributing--building","text":"This script will rebuild the entire ethers project, compare it against npm, re-write package versions, update internal hashes, re-write various TypeScript files (to get around some ES+TS limitations for Tree Shaking and linking), re-write map files, bundle stripped versions of dependencies and basically just a whole bunch of stuff."},{"link":"/v5/contributing/#contributing--building","text":"If you use this and get stuck, message me."}]},{"title":"Contributing and Hacking -- Building -- Do NOT check in dist files in a PR","blocks":[{"link":"/v5/contributing/","text":"For Pull Requests, please ONLY commit files in the docs.wrm/ and packages/*/src.ts/ folders."},{"link":"/v5/contributing/","text":"I will prepare the distribution builds myself and keeping the PR relevant makes it easier to verify the changes."}]},{"title":"Contributing and Hacking -- Building -- Publishing","blocks":[{"link":"/v5/contributing/#contributing--building","text":"Again, this should not be necessary for most developers."},{"link":"/v5/contributing/#contributing--building","text":"This step requires using the misc/admin/cmds/config-set script for a number of values, including private keys, NPM session keys, AWS access keys, GitHub API tokens, etc."},{"link":"/v5/contributing/#contributing--building","text":"The config file is encrypted with about 30 seconds of scrypt password-based key derivation function, so brute-forcing the file is quite expensive."},{"link":"/v5/contributing/#contributing--building","text":"The config file also contains a plain-text mnemonic."},{"link":"/v5/contributing/#contributing--building","text":"This is a money-pot."},{"link":"/v5/contributing/#contributing--building","text":"Place a tempting amount of ether or Bitcoin on this account and set up an e-mail alert for this account."},{"link":"/v5/contributing/#contributing--building","text":"If any attacker happens across your encrypted config, they will have instant access to the plain-text mnemonic, so they have the option to immediately steal the ether (i.e."},{"link":"/v5/contributing/#contributing--building","text":"the responsible-disclosure bond)."},{"link":"/v5/contributing/#contributing--building","text":"If you ever see this ether taken, your encrypted file is compromised! Rotate all your AWS keys, NPM session keys, etc."},{"link":"/v5/contributing/#contributing--building","text":"immedately."},{"link":"/v5/contributing/#contributing--building","text":"@TODO: document all the keys that need to be set for each step."}]},{"title":"Contributing and Hacking -- Documentation","blocks":[{"link":"/v5/contributing/#contributing--documentation","text":"The documents are generated using Flatworm documentation generation tool, which was written for the purpose of writing the documentation for ethers."},{"link":"/v5/contributing/#contributing--documentation","text":"Style Guide (this section will have much more coming):."},{"link":"/v5/contributing/#contributing--documentation","text":"Try to keep lines no longer than around 80 characters Avoid inline links in the source; use the externalLinks field in the config.js Prefix external links with link- Changing an anchor name must be well justified, as it will break all existing links to that section; flatworm will support symlinks in the future In general, I aim for consistency; look to similar situations throughout the documentation."}]},{"title":"Contributing and Hacking -- Documentation -- Building","blocks":[{"link":"/v5/contributing/#contributing--documentation","text":"To build the documentation, you should first follow the above steps to build the ethers library."},{"link":"/v5/contributing/#contributing--documentation","text":"Building the docs will generate several types of output:."},{"link":"/v5/contributing/#contributing--documentation","text":"A full set of HTML pages, linking across each other A single one-page HTML page with all pages linking to local anchors A full set of README.md pages organized to be browsable and linkable in GitHub A metadata dump for tool ingestion (still needs more work) (@TODO; only half done) The documentation as a LaTeX and generated PDF."}]},{"title":"Contributing and Hacking -- Documentation -- Evaluation","blocks":[{"link":"/v5/contributing/#contributing--documentation","text":"When building the documentation, all code samples are run through a JavaScript VM to ensure there are no typos in the example code, as well the exact output of results are injected into the output, so there is no need to keep the results and code in-sync."},{"link":"/v5/contributing/#contributing--documentation","text":"However, this can be a bit of a headache when making many small changes, so to build the documentation faster, you can skip the evaluation step, which will inject the code directly."}]},{"title":"Contributing and Hacking -- Documentation -- Previewing Changes","blocks":[{"link":"/v5/contributing/#contributing--documentation","text":"To preview the changes locally, you can use any standard web server and run from the /docs/ folder, or use the built-in web server."},{"link":"/v5/contributing/#contributing--documentation","text":"The same caveats as normal web development apply, such flushing browser caches after changing (and re-building) the docs."}]},{"title":"Cookbook","blocks":[{"link":"/v5/cookbook/","text":"A collection (that will grow over time) of common, simple snippets of code that are in general useful."}]},{"title":"React Native (and ilk)","blocks":[{"link":"/v5/cookbook/react-native/#cookbook-reactnative","text":"The React Native framework has become quite popular and has many popular forks, such as Expo."},{"link":"/v5/cookbook/react-native/#cookbook-reactnative","text":"React Native is based on JavaScriptCore (part of WebKit) and does not use Node.js or the common Web and DOM APIs."},{"link":"/v5/cookbook/react-native/#cookbook-reactnative","text":"As such, there are many operations missing that a normal web environment or Node.js instance would provide."},{"link":"/v5/cookbook/react-native/#cookbook-reactnative","text":"For this reason, there is a Shims module provided to fill in the holes."}]},{"title":"React Native (and ilk) -- Installing","blocks":[{"link":"/v5/cookbook/react-native/#cookbook-reactnative-shims","text":"To use ethers in React Native, you must either provide shims for the needed missing functionality, or use the ethers.js shim."},{"link":"/v5/cookbook/react-native/#cookbook-reactnative-shims","text":"It is HIGHLY RECOMMENDED you check out the security section below for instructions on installing packages which can affect the security of your application."},{"link":"/v5/cookbook/react-native/#cookbook-reactnative-shims","text":"After installing packages, you may need to restart your packager and company."}]},{"title":"React Native (and ilk) -- Security","blocks":[{"link":"/v5/cookbook/react-native/#cookbook-reactnative-security","text":"The React Native environment does not contain a secure random source, which is used when computing random private keys."},{"link":"/v5/cookbook/react-native/#cookbook-reactnative-security","text":"This could result in private keys that others could possibly guess, allowing funds to be stolen and assets manipulated."},{"link":"/v5/cookbook/react-native/#cookbook-reactnative-security","text":"For this reason, it is HIGHLY RECOMMENDED to also install the React Native get-random-values, which must be included before the shims."},{"link":"/v5/cookbook/react-native/#cookbook-reactnative-security","text":"If it worked correctly you should not receive any warning in the console regarding missing secure random sources."}]},{"title":"Flatworm Docs","blocks":[{"link":"/v5/documentation/#flatworm","text":"The Flatworm Docs rendering engine is designed to be very simple, but provide enough formatting necessary for documenting JavaScript libraries."},{"link":"/v5/documentation/#flatworm","text":"A lot of its inspiration came from Read the Docs and the Sphinx project."}]},{"title":"Flatworm Docs -- Fragments","blocks":[{"link":"/v5/documentation/#flatworm-fragments","text":"Each page is made up of fragments."},{"link":"/v5/documentation/#flatworm-fragments","text":"A fragment is a directive, with an value and optional link, extensions and a body."},{"link":"/v5/documentation/#flatworm-fragments","text":"Many directives support markdown in their value and body."},{"link":"/v5/documentation/#flatworm-fragments","text":"A fragment's body continues until another fragment is encountered."}]},{"title":"Flatworm Docs -- Fragments -- _section: TITLE","blocks":[{"link":"/v5/documentation/#flatworm-directive","text":"A section has its TITLE in an H1 font."},{"link":"/v5/documentation/#flatworm-directive","text":"Sections are linked to in Table of Contents and have a dividing line drawn above them."},{"link":"/v5/documentation/#flatworm-directive","text":"The body supports markdown."},{"link":"/v5/documentation/#flatworm-directive","text":"There should only be one _section: per page."},{"link":"/v5/documentation/#flatworm-directive","text":"Extensions: @inherit, @src, @nav, @note."}]},{"title":"Flatworm Docs -- Fragments -- _subsection: TITLE","blocks":[{"link":"/v5/documentation/#flatworm-directive","text":"A subsection has its TITLE in an H2 font."},{"link":"/v5/documentation/#flatworm-directive","text":"Subsections are linked to in Table of Contents and have a dividing line drawn above them."},{"link":"/v5/documentation/#flatworm-directive","text":"The title and body support markdown."},{"link":"/v5/documentation/#flatworm-directive","text":"Extensions: @inherit, @src, @note."}]},{"title":"Flatworm Docs -- Fragments -- _heading: TITLE","blocks":[{"link":"/v5/documentation/#flatworm-directive","text":"A heading has its TITLE in an H3 font."},{"link":"/v5/documentation/#flatworm-directive","text":"The title and body support markdown."},{"link":"/v5/documentation/#flatworm-directive","text":"Extensions: @inherit, @src, @note."}]},{"title":"Flatworm Docs -- Fragments -- _definition: TERM","blocks":[{"link":"/v5/documentation/#flatworm-directive","text":"A definition has its TERM in normal text and the body is indented."},{"link":"/v5/documentation/#flatworm-directive","text":"The title and body support markdown."}]},{"title":"Flatworm Docs -- Fragments -- _property: SIGNATURE","blocks":[{"link":"/v5/documentation/#flatworm-directive","text":"A property has its JavaScript SIGNATURE formatted."},{"link":"/v5/documentation/#flatworm-directive","text":"The body supports markdown and the return portion of the signature support markdown links."},{"link":"/v5/documentation/#flatworm-directive","text":"Extensions: @src."}]},{"title":"Flatworm Docs -- Fragments -- _note: BANNER","blocks":[{"link":"/v5/documentation/#flatworm-directive","text":"A note is placed in a blue bordered-box to draw attention to it."},{"link":"/v5/documentation/#flatworm-directive","text":"The body supports markdown."}]},{"title":"Flatworm Docs -- Fragments -- _warning: BANNER","blocks":[{"link":"/v5/documentation/#flatworm-directive","text":"A warning is placed in an orange bordered-box to draw attention to it."},{"link":"/v5/documentation/#flatworm-directive","text":"The body supports markdown."}]},{"title":"Flatworm Docs -- Fragments -- _code: CAPTION","blocks":[{"link":"/v5/documentation/#flatworm-directive","text":"Creates a Code block."},{"link":"/v5/documentation/#flatworm-directive","text":"The body does not support markdown, and will be output exactly as is, with the exception of Code Evaluation."},{"link":"/v5/documentation/#flatworm-directive","text":"If a line begins with a \"_\", it should be escaped with a \"\\\"."},{"link":"/v5/documentation/#flatworm-directive","text":"Extensions: @lang."}]},{"title":"Flatworm Docs -- Fragments -- _table: FOOTER","blocks":[{"link":"/v5/documentation/#flatworm-directive","text":"Creates a Table structured according to the body."},{"link":"/v5/documentation/#flatworm-directive","text":"Each cell contents supports markdown and variables supports markdown."},{"link":"/v5/documentation/#flatworm-directive","text":"Extensions: @style."}]},{"title":"Flatworm Docs -- Fragments -- _toc:","blocks":[{"link":"/v5/documentation/#flatworm-directive","text":"A toc injects a Table of Contents, loading each line of the body as a filename and recursively loads the toc if present, otherwise all the sections and subsections."},{"link":"/v5/documentation/#flatworm-directive","text":"The body does not support markdown, as it is interpreted as a list of files and directories to process."}]},{"title":"Flatworm Docs -- Fragments -- _null:","blocks":[{"link":"/v5/documentation/#flatworm-directive","text":"A null is used to terminated a directive."},{"link":"/v5/documentation/#flatworm-directive","text":"For example, after a definition, the bodies are indented, so a null can be used to reset the indentation."},{"link":"/v5/documentation/#flatworm-directive","text":"The body supports markdown."}]},{"title":"Flatworm Docs -- Markdown","blocks":[{"link":"/v5/documentation/#flatworm-markdown","text":"The markdown is simple and does not have the flexibility of other dialects, but allows for bold, italic, underlined, monospaced, superscript and strike text, supporting links and lists."},{"link":"/v5/documentation/#flatworm-markdown","text":"Lists are rendered as blocks of a body, so cannot be used within a title or within another list."}]},{"title":"Flatworm Docs -- Code","blocks":[{"link":"/v5/documentation/#flatworm--code","text":"The code directive creates a monospace, contained block useful for displaying code samples."}]},{"title":"Flatworm Docs -- Code -- JavaScript Evaluation","blocks":[{"link":"/v5/documentation/#flatworm--code-eval","text":"For JavaScript files, the file is executed with some simple substitution."},{"link":"/v5/documentation/#flatworm--code-eval","text":"A bare //! on a line is replaced with the result of the last statement."},{"link":"/v5/documentation/#flatworm--code-eval","text":"Building will fail if an error is thrown."},{"link":"/v5/documentation/#flatworm--code-eval","text":"A bare //!error is replaced with the throw error."},{"link":"/v5/documentation/#flatworm--code-eval","text":"Building will fail if an error is not thrown."},{"link":"/v5/documentation/#flatworm--code-eval","text":"Also any code included between the lines // and // will be omitted from the output, which can be used to setup variables."}]},{"title":"Flatworm Docs -- Code -- Languages","blocks":[{"link":"/v5/documentation/#flatworm--code","text":"The language can be specified using the @lang extension."}]},{"title":"Flatworm Docs -- Tables","blocks":[{"link":"/v5/documentation/#flatworm--table","text":"The table directive consumes the entire body up until the next directive."},{"link":"/v5/documentation/#flatworm--table","text":"To terminate a table early to begin a text block, use a _null: directive."},{"link":"/v5/documentation/#flatworm--table","text":"Each line of the body should be Row Data or a Variable Declaration (or continuation of a Variable Declaration)."},{"link":"/v5/documentation/#flatworm--table","text":"Blank lines are ignored."}]},{"title":"Flatworm Docs -- Tables -- Row Data","blocks":[{"link":"/v5/documentation/#flatworm--table-row","text":"Each Row Data line must begin and end with a \"|\", with each gap representing the cell data, alignment with optional column and row spanning."}]},{"title":"Flatworm Docs -- Tables -- Alignment","blocks":[{"link":"/v5/documentation/#flatworm--table-alignment","text":"The alignment for a cell is determined by the whitespace surrounding the cell data."}]},{"title":"Flatworm Docs -- Tables -- Row and Column Spanning","blocks":[{"link":"/v5/documentation/#flatworm--table-spanning","text":"A column may end its content with any number of \"<\" which indicates how many additional columns to extend into."},{"link":"/v5/documentation/#flatworm--table-spanning","text":"If the cell content contains only a \"^\", then the row above is extended into this cell (into the same number of columns)."}]},{"title":"Flatworm Docs -- Tables -- Styles","blocks":[{"link":"/v5/documentation/#flatworm--table-style","text":"The @style extension for a table can be used to control its appearance."}]},{"title":"Flatworm Docs -- Tables -- Variables","blocks":[{"link":"/v5/documentation/#flatworm--table-variable","text":"Often the layout of a table is easier to express and maintain without uneven or changing content within it."},{"link":"/v5/documentation/#flatworm--table-variable","text":"So the content can be defined separately within a table directive using variables."},{"link":"/v5/documentation/#flatworm--table-variable","text":"A variable name must begin with a letter and must only contain letters and numbers."},{"link":"/v5/documentation/#flatworm--table-variable","text":"Variables are also useful when content is repeated throughout a table."},{"link":"/v5/documentation/#flatworm--table-variable","text":"A variable is declared by starting a line with \"$NAME:\", which consumes all lines until the next variable declaration or until the next table row line."},{"link":"/v5/documentation/#flatworm--table-variable","text":"A variable name must start with a letter and may consist of letters and numbers."},{"link":"/v5/documentation/#flatworm--table-variable","text":"(i.e."},{"link":"/v5/documentation/#flatworm--table-variable","text":"/[a-z][a-z0-9]*/i)."}]},{"title":"Flatworm Docs -- Configuration","blocks":[{"link":"/v5/documentation/#flatworm-config","text":"Configuration is optional (but highly recommended) and may be either a simple JSON file (config.json) or a JS file (config.js) placed in the top of the source folder."},{"link":"/v5/documentation/#flatworm-config","text":"TODO: example JSON and example JS."}]},{"title":"Flatworm Docs -- Extensions -- @inherit< markdown >","blocks":[{"link":"/v5/documentation/#flatworm--ext-inherit","text":"Adds an inherits description to a directive."},{"link":"/v5/documentation/#flatworm--ext-inherit","text":"The markdown may contain links."}]},{"title":"Flatworm Docs -- Extensions -- @lang< text >","blocks":[{"link":"/v5/documentation/#flatworm--ext-lang","text":"Set the language a code directive should be syntax-highlighted for."},{"link":"/v5/documentation/#flatworm--ext-lang","text":"If \"javascript\", the code will be evaluated."}]},{"title":"Flatworm Docs -- Extensions -- @nav< text >","blocks":[{"link":"/v5/documentation/#flatworm--ext-nav","text":"Sets the name in the breadcrumbs when not the current node."}]},{"title":"Flatworm Docs -- Extensions -- @note< markdown >","blocks":[{"link":"/v5/documentation/#flatworm--ext-note","text":"Adds a note to a directive."},{"link":"/v5/documentation/#flatworm--ext-note","text":"The markdown may contain links."},{"link":"/v5/documentation/#flatworm--ext-note","text":"If the directive already has an @INHERIT extension, that will be used instead and the @NOTE will be ignored."}]},{"title":"Flatworm Docs -- Extensions -- @src< key >","blocks":[{"link":"/v5/documentation/#flatworm--ext-src","text":"Calls the configuration getSourceUrl(key, VALUE) to get a URL which will be linked to by a link next to the directive."},{"link":"/v5/documentation/#flatworm--ext-src","text":"This extended directive function requires an advanced config.js Configuration file since it requires a JavaScript function."}]},{"title":"Flatworm Docs -- Extensions -- @style< text >","blocks":[{"link":"/v5/documentation/#flatworm--ext-style","text":"The Table Style to use for a table directive."}]},{"title":"Getting Started -- Installing","blocks":[{"link":"/v5/getting-started/#installing","text":"Ethers' various Classes and Functions are available to import manually from sub-packages under the @ethersproject organization but for most projects, the umbrella package is the easiest way to get started."}]},{"title":"Getting Started -- Importing -- Web Browser","blocks":[{"link":"/v5/getting-started/#importing","text":"It is generally better practice (for security reasons) to copy the ethers library to your own webserver and serve it yourself."},{"link":"/v5/getting-started/#importing","text":"For quick demos or prototyping though, you can load it in your Web Applications from our CDN."}]},{"title":"Getting Started -- Common Terminology","blocks":[{"link":"/v5/getting-started/#getting-started--glossary","text":"This section needs work..."}]},{"title":"Getting Started -- Connecting to Ethereum: Metamask","blocks":[{"link":"/v5/getting-started/#getting-started--connecting","text":"The quickest and easiest way to experiment and begin developing on Ethereum is to use Metamask, which is a browser extension that provides:."},{"link":"/v5/getting-started/#getting-started--connecting","text":"A connection to the Ethereum network (a Provider) Holds your private key and can sign things (a Signer)."}]},{"title":"Getting Started -- Connecting to Ethereum: RPC","blocks":[{"link":"/v5/getting-started/#getting-started--connecting-rpc","text":"The JSON-RPC API is another popular method for interacting with Ethereum and is available in all major Ethereum node implementations (e.g."},{"link":"/v5/getting-started/#getting-started--connecting-rpc","text":"Geth and Parity) as well as many third-party web services (e.g."},{"link":"/v5/getting-started/#getting-started--connecting-rpc","text":"INFURA)."},{"link":"/v5/getting-started/#getting-started--connecting-rpc","text":"It typically provides:."},{"link":"/v5/getting-started/#getting-started--connecting-rpc","text":"A connection to the Ethereum network (a Provider) Holds your private key and can sign thing (a Signer)."}]},{"title":"Getting Started -- Connecting to Ethereum: RPC -- Querying the Blockchain","blocks":[{"link":"/v5/getting-started/#getting-started--querying","text":"Once you have a Provider, you have a read-only connection to the blockchain, which you can use to query the current state, fetch historic logs, look up deployed code and so on."}]},{"title":"Getting Started -- Contracts","blocks":[{"link":"/v5/getting-started/#getting-started--contracts","text":"A Contract is an abstraction of program code which lives on the Ethereum blockchain."},{"link":"/v5/getting-started/#getting-started--contracts","text":"The Contract object makes it easier to use an on-chain Contract as a normal JavaScript object, with the methods mapped to encoding and decoding data for you."},{"link":"/v5/getting-started/#getting-started--contracts","text":"If you are familiar with Databases, this is similar to an Object Relational Mapper (ORM)."},{"link":"/v5/getting-started/#getting-started--contracts","text":"In order to communicate with the Contract on-chain, this class needs to know what methods are available and how to encode and decode the data, which is what the Application Binary Interface (ABI) provides."},{"link":"/v5/getting-started/#getting-started--contracts","text":"This class is a meta-class, which means its methods are constructed at runtime, and when you pass in the ABI to the constructor it uses it to determine which methods to add."},{"link":"/v5/getting-started/#getting-started--contracts","text":"While an on-chain Contract may have many methods available, you can safely ignore any methods you don't need or use, providing a smaller subset of the ABI to the contract."},{"link":"/v5/getting-started/#getting-started--contracts","text":"An ABI often comes from the Solidity or Vyper compiler, but you can use the Human-Readable ABI in code, which the following examples use."}]},{"title":"Hacking","blocks":[{"link":"/v5/hacking/","text":"Things to keep in mind:."}]},{"title":"Hacking -- Signing Messages -- Supported Platforms","blocks":[{"link":"/v5/hacking/","text":"..."}]},{"title":"Hacking -- Signing Messages -- Dependencies","blocks":[{"link":"/v5/hacking/","text":"Adding a dependency is non-trivial and will require fairly convincing arguments."},{"link":"/v5/hacking/","text":"Further, ALL dependencies for ethers, must be MIT licensed or public domain (CC0)."},{"link":"/v5/hacking/","text":"All contributions to ethers are then included under the MIT license."}]},{"title":"Hacking -- Signing Messages -- Printable ASCII (7-bit) Characters","blocks":[{"link":"/v5/hacking/","text":"All source and documentation files should ONLY use the printable ASCII set."},{"link":"/v5/hacking/","text":"This is for several reasons, bu..."},{"link":"/v5/hacking/","text":"Transmission over certain HTTP servers and proxies can mangle UTF-8 data Certain editors on some platforms, or in certain terminals cannot handle UTF-8 characters elegantly The ability to enter non-ASCII characters on some platforms require special keyboards, input devices or input methods to be installed, which either not be supported, or may require administrative priviledges."}]},{"title":"Hacking -- Signing Messages -- License","blocks":[{"link":"/v5/hacking/","text":"MIT..."}]},{"title":"Hacking -- Signing Messages -- Other Considerations","blocks":[{"link":"/v5/hacking/","text":"A common argument to Pull Requests is that they are simple, backwards compatible and."},{"link":"/v5/hacking/","text":"It is important to remember that a small change is something that we are required to support in perpetuity."},{"link":"/v5/hacking/","text":"For example, adding support for an obscure platform, such as adding a dot-file to the root of the package, now carries the implication that we will continue keeping that dot-file up-to-date as new versions of that platform are released."}]},{"title":"Documentation -- What is Ethers?","blocks":[{"link":"/v5/#preamble","text":"The ethers.js library aims to be a complete and compact library for interacting with the Ethereum Blockchain and its ecosystem."},{"link":"/v5/#preamble","text":"It was originally designed for use with ethers.io and has since expanded into a more general-purpose library."}]},{"title":"Documentation -- Features","blocks":[{"link":"/v5/#features","text":"Keep your private keys in your client, safe and sound Import and export JSON wallets (Geth, Parity and crowdsale) Import and export BIP 39 mnemonic phrases (12 word backup phrases) and HD Wallets (English, Italian, Japanese, Korean, Simplified Chinese, Traditional Chinese; more coming soon) Meta-classes create JavaScript objects from any contract ABI, including ABIv2 and Human-Readable ABI Connect to Ethereum nodes over JSON-RPC, INFURA, Etherscan, Alchemy, Cloudflare or MetaMask."},{"link":"/v5/#features","text":"ENS names are first-class citizens; they can be used anywhere an Ethereum addresses can be used Tiny (~88kb compressed; 284kb uncompressed) Complete functionality for all your Ethereum needs Extensive documentation Large collection of test cases which are maintained and added to Fully TypeScript ready, with definition files and full TypeScript source MIT License (including ALL dependencies); completely open source to do with as you please."}]},{"title":"Documentation -- Legacy Documentation","blocks":[{"link":"/v5/#documentation--legacy","text":"This section will be kept up to date, linking to documentation of older versions of the library."},{"link":"/v5/#documentation--legacy","text":"version 4.0 version 3.0."}]},{"title":"License and Copyright","blocks":[{"link":"/v5/license/#license","text":"The ethers library (including all dependencies) are available under the MIT License, which permits a wide variety of uses."}]},{"title":"License and Copyright -- Legacy Documentation -- MIT License","blocks":[{"link":"/v5/license/#license","text":"Copyright © 2019 Richard Moore."},{"link":"/v5/license/#license","text":"Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:."},{"link":"/v5/license/#license","text":"The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software."},{"link":"/v5/license/#license","text":"THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT."},{"link":"/v5/license/#license","text":"IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."}]},{"title":"Migration: From Ethers v4","blocks":[{"link":"/v5/migration/ethers-v4/#migration-v4","text":"This document only covers the features present in v4 which have changed in some important way in v5."},{"link":"/v5/migration/ethers-v4/#migration-v4","text":"It does not cover all the new additional features that have been added and mainly aims to help those updating their older scripts and applications to retain functional parity."},{"link":"/v5/migration/ethers-v4/#migration-v4","text":"If you encounter any missing changes, please let me know and I'll update this guide."}]},{"title":"Migration: From Ethers v4 -- BigNumber -- Namespace","blocks":[{"link":"/v5/migration/ethers-v4/","text":"Since BigNumber is used quite frequently, it has been moved to the top level of the umbrella package."}]},{"title":"Migration: From Ethers v4 -- BigNumber -- Creating Instances","blocks":[{"link":"/v5/migration/ethers-v4/","text":"The bigNumberify method was always preferred over the constructor since it could short-circuit an object instantiation for [[BigNumber] objects (since they are immutable)."},{"link":"/v5/migration/ethers-v4/","text":"This has been moved to a static from class method."}]},{"title":"Migration: From Ethers v4 -- Contracts -- ENS Name Resolution","blocks":[{"link":"/v5/migration/ethers-v4/","text":"The name of the resolved address has changed."},{"link":"/v5/migration/ethers-v4/","text":"If the address passed into the constructor was an ENS name, the address will be resolved before any calls are made to the contract."},{"link":"/v5/migration/ethers-v4/","text":"The name of the property where the resolved address has changed from addressPromise to resolvedAddress."}]},{"title":"Migration: From Ethers v4 -- Contracts -- Gas Estimation","blocks":[{"link":"/v5/migration/ethers-v4/","text":"The only difference in gas estimation is that the bucket has changed its name from estimate to estimateGas."}]},{"title":"Migration: From Ethers v4 -- Contracts -- Functions","blocks":[{"link":"/v5/migration/ethers-v4/","text":"In a contract in ethers, there is a functions bucket, which exposes all the methods of a contract."},{"link":"/v5/migration/ethers-v4/","text":"All these functions are available on the root contract itself as well and historically there was no difference between contact.foo and contract.functions.foo."},{"link":"/v5/migration/ethers-v4/","text":"The original reason for the functions bucket was to help when there were method names that collided with other buckets, which is rare."},{"link":"/v5/migration/ethers-v4/","text":"In v5, the functions bucket is now intended to help with frameworks and for the new error recovery API, so most users should use the methods on the root contract."},{"link":"/v5/migration/ethers-v4/","text":"The main difference will occur when a contract method only returns a single item."},{"link":"/v5/migration/ethers-v4/","text":"The root method will dereference this automatically while the functions bucket will preserve it as an Result."},{"link":"/v5/migration/ethers-v4/","text":"If a method returns multiple items, there is no difference."},{"link":"/v5/migration/ethers-v4/","text":"This helps when creating a framework, since the result will always be known to have the same number of components as the Fragment outputs, without having to handle the special case of a single return value."}]},{"title":"Migration: From Ethers v4 -- Errors -- Namespace","blocks":[{"link":"/v5/migration/ethers-v4/","text":"All errors now belong to the Logger class and the related functions have been moved to Logger instances, which can include a per-package version string."},{"link":"/v5/migration/ethers-v4/","text":"Global error functions have been moved to Logger class methods."}]},{"title":"Migration: From Ethers v4 -- Interface","blocks":[{"link":"/v5/migration/ethers-v4/#migration-v4","text":"The Interface object has undergone the most dramatic changes."},{"link":"/v5/migration/ethers-v4/#migration-v4","text":"It is no longer a meta-class and now has methods that simplify handling contract interface operations without the need for object inspection and special edge cases."}]},{"title":"Migration: From Ethers v4 -- Interface -- Inspection","blocks":[{"link":"/v5/migration/ethers-v4/","text":"Interrogating properties about a function or event can now (mostly) be done directly on the Fragment object."}]},{"title":"Migration: From Ethers v4 -- Wallet -- Mnemonic Phrases","blocks":[{"link":"/v5/migration/ethers-v4/","text":"The mnemonic phrase and related properties have been merged into a single mnemonic object, which also now includes the locale."}]},{"title":"Migration Guide","blocks":[{"link":"/v5/migration/#migration","text":"Here are some migration guides when upgrading from older versions of Ethers or other libraries."}]},{"title":"Migration: From Web3.js","blocks":[{"link":"/v5/migration/web3/","text":"This migration guide focuses on migrating web3.js version 1.2.9 to ethers.js v5."}]},{"title":"Migration: From Web3.js -- Providers","blocks":[{"link":"/v5/migration/web3/","text":"In ethers, a provider provides an abstraction for a connection to the Ethereum Network."},{"link":"/v5/migration/web3/","text":"It can be used to issue read only queries and send signed state changing transactions to the Ethereum Network."}]},{"title":"Migration: From Web3.js -- Signers","blocks":[{"link":"/v5/migration/web3/","text":"In ethers, a signer is an abstraction of an Ethereum Account."},{"link":"/v5/migration/web3/","text":"It can be used to sign messages and transactions and send signed transactions to the Ethereum Network."},{"link":"/v5/migration/web3/","text":"In web3, an account can be used to sign messages and transactions."}]},{"title":"Migration: From Web3.js -- Contracts","blocks":[{"link":"/v5/migration/web3/","text":"A contract object is an abstraction of a smart contract on the Ethereum Network."},{"link":"/v5/migration/web3/","text":"It allows for easy interaction with the smart contact."}]},{"title":"Migration: From Web3.js -- Contracts -- Overloaded Functions","blocks":[{"link":"/v5/migration/web3/","text":"Overloaded functions are functions that have the same name but different parameter types."},{"link":"/v5/migration/web3/","text":"In ethers, the syntax to call an overloaded contract function is different from the non-overloaded function."},{"link":"/v5/migration/web3/","text":"This section shows the differences between web3 and ethers when calling overloaded functions."},{"link":"/v5/migration/web3/","text":"See issue #407 for more details."}]},{"title":"Migration: From Web3.js -- Numbers -- BigNumber","blocks":[{"link":"/v5/migration/web3/","text":"Convert to BigNumber:."}]},{"title":"Migration: From Web3.js -- Utilities -- Hash","blocks":[{"link":"/v5/migration/web3/","text":"Computing Keccak256 hash of a UTF-8 string in web3 and ethers:."}]},{"title":"Other Resources","blocks":[{"link":"/v5/other-resources/","text":"There is a lot of documentation on the internet to help you get started, learn more or cover advanced topics."},{"link":"/v5/other-resources/","text":"Here are a few resources to check out."}]},{"title":"Other Resources -- Ethereum Overview","blocks":[{"link":"/v5/other-resources/","text":"Official Ethereum Developer Documentations The Solidity Documentation, the defactor language for smart contracts as well as a resource for some of the core concepts of Ethereum."}]},{"title":"Other Resources -- Tutorials","blocks":[{"link":"/v5/other-resources/","text":"I do not manage or maintain these tutorials, but have happened across them."},{"link":"/v5/other-resources/","text":"If a link is dead or outdated, please let me know and I'll update it."},{"link":"/v5/other-resources/","text":"No links yet; send me some."}]},{"title":"Testing","blocks":[{"link":"/v5/testing/","text":"Testing is a critical part of any library which wishes to remain secure, safe and reliable."},{"link":"/v5/testing/","text":"Ethers currently has over 23k tests among its test suites, which are all made available for other projects to use as simple exported GZIP-JSON files."},{"link":"/v5/testing/","text":"The tests are run on every check-in and the results can been seen on the GitHub CI Action."},{"link":"/v5/testing/","text":"We also strive to constantly add new test cases, especially when issues arise to ensure the issue is present prior to the fix, corrected after the fix and included to prevent future changes from causing a regression."},{"link":"/v5/testing/","text":"A large number of the test cases were created procedurally by using known correct implementations from various sources (such as Geth) and written in different languages and verified with multiple libraries."},{"link":"/v5/testing/","text":"For example, the ABI test suites were generated by procedurally generating a list of types, for each type choosing a random (valid) value, which then was converted into a Solidity source file, compiled using solc and deployed to a running Parity node and executed, with its outputs being captured."},{"link":"/v5/testing/","text":"Similar to the how many of the hashing, event and selector test cases were created."}]},{"title":"Testing -- Supported Platforms","blocks":[{"link":"/v5/testing/#testing-supported","text":"While web technologies move quite fast, especially in the Web3 universe, we try to keep ethers as accessible as possible."},{"link":"/v5/testing/#testing-supported","text":"Currently ethers should work on almost any ES3 or better environment and tests are run against:."},{"link":"/v5/testing/#testing-supported","text":"node.js 8.x node.js 10.x node.js 12.x node.js 13.x Web Browsers (using UMD) Web Browsers (using ES modules)."},{"link":"/v5/testing/#testing-supported","text":"If there is an environment you feel has been overlooked or have suggestions, please feel free to reach out by opening an issue on Github."},{"link":"/v5/testing/#testing-supported","text":"We would like to add a test build for Expo and React as those developers often seem to encounter pain points when using ethers, so if you have experience or ideas on this, bug us."},{"link":"/v5/testing/#testing-supported","text":"The next Major version (probably summer 2021) will likely drop support for node 8.x and will require ES2015 for Proxy."},{"link":"/v5/testing/#testing-supported","text":"Certain features in JavaScript are also avoided, such as look-behind tokens in regular expressions, since these have caused conflicts (at import time) with certain JavaScript environments such as Otto."},{"link":"/v5/testing/#testing-supported","text":"Basically, the moral of the story is \"be inclusive and don't drop people needlessly\"."}]},{"title":"Testing -- Test Suites","blocks":[{"link":"/v5/testing/#testing-suites","text":"The test suites are available as gzipped JSON files in the @ethersproject/testcases, which makes it easy to install and import (both GZIP and JSON are quite easy to consume from most languages)."},{"link":"/v5/testing/#testing-suites","text":"Each test suite also has its schema available in this package."}]},{"title":"Testing -- Test Suite API","blocks":[{"link":"/v5/testing/#testing-api","text":"There are also convenience functions for those developing directly in TypeScript."}]},{"title":"Testing -- Test Suite API -- testcases.loadTests( tag ) => Array< TestCase >","blocks":[{"link":"/v5/testing/#testing-api","text":"Load all the given testcases for the tag."},{"link":"/v5/testing/#testing-api","text":"A tag is the string in the above list of test case names not including any extension (e.g."},{"link":"/v5/testing/#testing-api","text":"\"solidity-hashes\")."}]},{"title":"Testing -- Test Suite API -- testcases.TestCase.TEST_NAME","blocks":[{"link":"/v5/testing/#testing-api","text":"Most testcases have its schema available as a TypeScript type to make testing each property easier."}]},{"title":"Testing -- Test Suite API -- Deterministic Random Numbers (DRNG)","blocks":[{"link":"/v5/testing/#testing-api","text":"When creating test cases, often we want want random data from the perspective we do not case what values are used, however we want the values to be consistent across runs."},{"link":"/v5/testing/#testing-api","text":"Otherwise it becomes difficult to reproduce an issue."},{"link":"/v5/testing/#testing-api","text":"In each of the following the seed is used to control the random value returned."},{"link":"/v5/testing/#testing-api","text":"Be sure to tweak the seed properly, for example on each iteration change the value and in recursive functions, concatenate to the seed."}]},{"title":"Testing -- Test Suite API -- testcases.randomBytes( seed , lower [ , upper ] ) => Uint8Array","blocks":[{"link":"/v5/testing/","text":"Return at least lower random bytes, up to upper (exclusive) if specified, given seed."},{"link":"/v5/testing/","text":"If upper is omitted, exactly /lower bytes are returned."}]},{"title":"Testing -- Test Suite API -- testcases.randomHexString( seed , lower [ , upper ] ) => string< DataHexString >","blocks":[{"link":"/v5/testing/","text":"Identical to randomBytes, except returns the value as a DataHexString instead of a Uint8Array."}]},{"title":"Testing -- Test Suite API -- testcases.randomNumber( seed , lower , upper ) => number","blocks":[{"link":"/v5/testing/","text":"Returns a random number of at least lower and less than upper given seed."}]},{"title":"Testing -- Schemas","blocks":[{"link":"/v5/testing/#testing-schemas","text":"This section is still a work in progress, but will outline some of the more nuanced aspects of the test cases and their values."},{"link":"/v5/testing/#testing-schemas","text":"There will likely be an overhaul of the test cases in the next major version, to make code coverage testing more straight forward and to collapse some of the redundancy."},{"link":"/v5/testing/#testing-schemas","text":"For example, there is no longer a need to separate the ABI and ABIv2 test case and the accounts and transactions suites can be merged into one large collection."}]},{"title":"Testing -- Schemas -- Accounts","blocks":[{"link":"/v5/testing/#testing-schemas","text":"Basic account information using a private key and computing various address forms."},{"link":"/v5/testing/#testing-schemas","text":"Tests were verified against [EthereumJS](https://github.com/ethereumjs) and custom scripts created to directly interact with Geth and cpp implementations."},{"link":"/v5/testing/#testing-schemas","text":"See: accounts.json.gz."}]},{"title":"Testing -- Schemas -- Contract Interface","blocks":[{"link":"/v5/testing/#testing-schemas","text":"Procedurally generated test cases to test ABI coding."}]},{"title":"Testing -- Schemas -- Contract Signatures","blocks":[{"link":"/v5/testing/#testing-schemas","text":"Computed ABI signatures and the selector hash."}]},{"title":"Testing -- Schemas -- Hierarchal Deterministic Node (BIP-32)","blocks":[{"link":"/v5/testing/#testing-schemas","text":"Tests for BIP-32 HD Wallets."}]},{"title":"Testing -- Schemas -- ENS Namehash","blocks":[{"link":"/v5/testing/#testing-schemas","text":"Test cases for the ENS Namehash Algorithm."}]},{"title":"Testing -- Schemas -- Solidity Hashes","blocks":[{"link":"/v5/testing/#testing-schemas","text":"Tests for the non-standard packed form of the Solidity hash functions."},{"link":"/v5/testing/#testing-schemas","text":"These tests were created by procedurally generating random signatures and values that match those signatures, constructing the equivalent Soldity, compiling it and deploying it to a Parity node then evaluating the response."}]},{"title":"Testing -- Schemas -- Transactions","blocks":[{"link":"/v5/testing/#testing-schemas","text":"Serialized signed and unsigned transactions with both EIP-155 enabled and disabled."}]},{"title":"Testing -- Schemas -- Units","blocks":[{"link":"/v5/testing/#testing-schemas","text":"Unit conversion."}]},{"title":"Testing -- Schemas -- Wallets","blocks":[{"link":"/v5/testing/#testing-schemas","text":"Tests for the JSON keystore format."}]}],"indices":{"_to":["0/0","0/3","5/1","6/0","7/0","8/0","8/1","9/0","9/2","10/0","10/1","11/0","11/1","12/0","14/0","14/1","15/0","17/0","18/0","19/0","20/0","21/0","22/0","23/0","24/0","26/1","27/1","28/8","29/1","29/4","29/6","30/0","31/0","31/3","31/5","32/0","33/0","33/1","34/0","34/1","35/0","35/2","35/4","38/0","40/0","40/1","41/0","43/0","44/0","45/0","45/1","46/0","47/0","48/0","49/0","50/0","51/0","52/0","58/0","58/3","59/0","59/1","60/0","61/0","64/0","64/2","65/1","66/0","67/0","67/1","70/0","71/0","71/2","71/3","81/0","100/2","101/0","102/0","110/0","110/3","112/0","117/0","119/0","120/0","121/0","124/0","125/0","125/2","129/1","129/2","129/4","131/0","131/1","133/0","134/0","134/2","134/3","134/4","134/5","134/7","135/0","136/0","136/1","140/0","141/0","142/1","142/3","144/0","149/0","149/2","150/0","154/0","158/0","160/0","161/0","161/1","161/2","161/5","162/0","162/3","163/0","164/1","165/0","167/0","168/0","171/0","175/0","177/2","177/4","178/0","178/3","178/5","179/1","179/2","179/3","179/4","179/5","180/0","187/0","187/1","188/0","189/0","189/1","190/0","192/0","193/0","194/0","194/1","196/0","200/0","201/0","202/0","203/0","204/2","208/1","211/0","211/1","211/3","212/0","217/0","218/0","219/0","220/1","221/0","223/0","224/0","224/1","226/0","228/1","229/0","229/2","231/0","232/0","233/0","234/0","240/0","241/1","242/3","254/0","254/1","255/0","255/1","256/0","256/1","256/2","258/0","259/0","259/1","264/0","265/0","265/1","266/0","267/0","268/0","271/0","279/0","279/1","280/0","282/1","283/0","287/2","294/0","295/0","295/1","297/0","297/1","299/2","299/3","307/0","307/1","310/0","310/4","313/0","316/0","318/1","320/0","322/0","323/0","323/3","323/4","323/5","324/0","325/0","325/1","327/2","329/0","329/3","329/4","330/0","330/3","332/0","338/0","339/0","341/0","349/0","349/1","350/0","350/1","351/2","353/0","354/0","362/1","363/0","364/0","366/0","370/0","389/2","390/1","398/0","398/1","398/2","399/0","399/1","399/3","400/2","410/0","411/0","420/2","432/0","432/5","434/1","435/0","435/1","435/3","439/1","440/0","441/0","443/0","443/2","444/0","458/0","460/0","461/0","461/1","463/0","464/0","470/1","470/0","471/0","472/0","475/4","475/5","475/6","475/7","475/8","476/3","476/5","476/6","478/0","478/3","478/4","479/1","482/0","486/0","490/0","491/0","492/0","495/0","498/0","500/0","515/0","519/0","520/0","522/0","527/0","530/0","532/0","543/0","545/0","546/0","547/0","548/1","548/0","551/2","556/0","558/0","568/1","570/0","570/3","571/2","580/0","581/0","582/0","583/0","583/2","583/3","590/1","593/0","593/1","594/2","598/0","598/1","599/2","600/2","602/1","604/0","605/0","608/0","615/1","618/0","620/0","621/1","625/0","628/2","628/3","631/2","632/0","638/0","638/2","639/0","639/1","639/2","642/0","642/1","642/3","643/1","643/2","643/3","652/0","653/0","653/1","663/2","664/0","665/1","667/1","668/2","669/0","672/0","673/0","675/1","675/0","676/0","679/1","682/0","683/0","683/1","684/1","685/0","688/0","688/1","690/0","690/1","694/0","697/0","704/0","706/0","708/1","708/2","709/1","709/2","713/1","713/2","713/3","716/1","718/1","718/3","718/4","721/0","722/0","723/0","725/0","726/0","727/0","728/0","729/0","731/0","737/0","739/1","741/1","751/0","751/1","751/6","752/1","753/4","754/1","754/4","755/2","756/0","756/1","756/2","757/0","759/1","759/2","760/0","762/0","762/2","763/1","764/1","766/0","767/0","768/0","768/2","769/0","771/0","772/0","772/1","777/2","777/5","784/0","785/0","788/0","789/0","790/0","790/4","796/2","796/3","796/4","796/5","797/0","797/2","798/0","798/2","799/0","800/1","800/3","800/4","800/5","800/7","800/15","800/16","800/18","801/0","803/0","805/0","805/2","806/0","806/1","806/2","806/4","806/5","807/0","807/1","808/0","808/1","808/2","809/1","809/3","809/4","810/0","810/1","810/2","810/3","811/0","812/0","813/0","813/1","814/1","815/6","815/10","816/2","817/0","817/2","818/0","818/1","819/0","821/3","822/0","822/2","823/1","823/2","824/0","826/1","827/1","831/0","832/0","834/0","835/1","836/0","836/1","839/5","841/1","844/0","845/0","846/0","848/0","851/0","852/0","853/0","854/0","855/0","857/0","857/1","858/4","858/0","859/0","860/1","860/2","860/3","860/4","860/5","861/0","863/2","864/2","866/0","866/1","866/2","867/0","868/0","868/1","869/0","871/1","871/3","872/1","873/0","874/1","875/1","875/2","876/0","877/2","877/3","877/7","878/0","878/1","883/0","884/0","884/1","885/1","885/2","887/1","888/0","890/0","890/1","893/0","893/1","893/3","893/5","893/6","894/0","894/3","894/4","895/0","898/0","899/0","899/1","899/2","899/3","900/0","901/0","903/1","903/2","904/1","905/0","909/1"],"_deploy":["0/0","5/1","6/0","8/0","9/0","15/0","41/0","135/0","165/0","295/1","297/0","404/0","410/0","441/0"],"_contract":["0/0","0/1","0/2","0/3","1/0","2/0","3/0","4/0","5/1","5/0","6/0","7/0","7/1","8/0","9/0","9/1","10/0","10/1","11/0","11/1","12/0","12/1","12/4","13/0","14/0","15/0","16/0","17/0","18/0","19/0","20/0","21/0","22/0","23/0","24/0","25/0","26/1","28/0","29/1","29/0","31/1","31/0","33/0","34/0","35/0","37/0","38/0","39/0","40/0","41/0","45/0","45/1","46/0","46/1","46/4","54/0","63/0","65/0","65/1","65/2","134/1","165/0","206/0","206/1","240/0","240/1","241/2","273/0","295/1","297/0","297/1","322/1","398/0","398/2","399/3","400/2","410/0","441/0","442/0","631/2","632/1","638/0","638/2","711/1","797/1","797/2","798/0","799/0","860/0","860/1","860/3","860/5","868/0","871/4","875/1","877/0","877/1","877/3","877/4","879/1","886/0","887/1","905/0","906/0"],"_additional":["0/0","31/4","31/5","37/0","38/0","136/4","141/0","163/4","174/0","177/4","178/6","187/1","201/2","615/0","616/0","663/2","726/0","762/3","789/0","800/8","806/1","844/0","872/1"],"_information":["0/0","177/4","240/2","241/3","260/0","601/1","611/0","612/0","624/1","644/0","904/0"],"_is":["0/0","0/1","0/3","7/1","8/1","9/0","9/1","9/2","10/0","11/1","13/0","14/0","15/0","16/0","17/0","17/1","18/0","20/1","25/1","26/0","27/0","27/1","28/1","28/3","28/4","28/5","28/6","28/8","29/0","29/2","29/3","30/3","31/0","31/3","31/4","35/0","35/1","36/0","37/2","39/0","40/0","41/0","42/0","43/0","43/1","44/0","45/1","48/1","53/1","54/0","58/1","58/2","58/3","62/0","62/2","63/0","64/1","64/2","65/0","65/2","66/0","67/1","69/0","71/0","71/5","73/0","77/0","85/1","86/0","89/0","90/1","96/0","97/0","98/0","99/0","100/1","107/0","109/0","110/0","111/0","111/1","114/0","117/0","118/0","120/0","121/1","122/0","124/0","124/1","125/2","129/0","129/1","129/2","130/1","131/0","131/1","133/1","134/0","134/1","134/2","134/4","134/5","134/6","135/1","136/4","136/5","140/1","140/2","141/0","142/3","143/0","144/2","144/3","145/0","145/1","148/0","151/0","151/1","153/0","155/0","155/1","157/0","160/0","160/1","161/0","161/2","161/5","162/1","162/2","162/4","163/0","163/2","165/0","166/0","167/1","167/2","168/0","169/0","169/1","172/0","177/0","177/3","177/4","179/0","179/2","180/1","180/3","182/1","185/1","186/1","187/1","188/0","189/0","192/0","194/0","197/1","198/2","199/2","200/0","201/1","202/1","202/2","203/0","204/0","206/1","208/1","209/0","210/0","211/1","213/1","214/1","221/0","224/1","225/2","227/0","227/3","229/2","230/0","230/1","230/2","234/1","235/1","236/1","237/1","240/0","240/1","241/0","241/1","242/0","242/1","242/2","243/0","245/2","247/1","249/0","254/1","255/1","256/1","256/2","259/0","259/1","260/0","265/2","271/0","279/0","281/0","283/0","286/0","287/0","287/1","289/1","290/1","291/1","294/1","294/3","295/0","295/1","296/0","297/0","299/2","307/0","307/1","308/0","309/0","310/0","310/4","311/0","312/0","313/1","314/0","316/0","318/1","322/1","323/0","323/1","323/2","323/3","323/4","323/5","324/2","325/1","327/0","328/0","328/1","329/0","329/1","329/2","329/4","330/0","330/3","333/1","334/1","336/1","336/3","338/0","339/0","341/1","342/0","342/1","345/0","349/0","350/0","350/1","351/1","352/0","359/0","359/1","359/2","362/0","363/0","363/1","364/0","365/0","366/0","367/0","368/0","369/0","370/0","372/0","373/0","374/0","375/0","377/0","378/0","380/0","381/0","381/2","382/0","385/0","389/2","391/1","392/1","393/1","397/0","398/0","399/2","399/3","400/1","400/2","405/1","411/1","414/1","420/0","420/2","420/3","432/1","432/3","432/5","434/0","434/1","435/1","435/2","436/1","438/0","443/1","448/0","452/0","461/0","464/0","469/0","470/1","473/0","474/0","475/0","475/5","476/2","476/3","476/6","477/0","478/0","478/4","480/0","480/1","482/0","483/0","485/0","486/0","486/1","486/2","487/0","488/0","489/0","489/1","495/1","498/1","500/1","501/0","506/0","507/0","513/0","515/0","515/2","515/3","519/0","521/0","527/0","530/0","532/0","544/0","548/1","549/0","550/0","550/1","551/0","551/5","556/0","570/0","570/2","570/3","570/4","571/0","572/1","579/0","585/1","587/0","593/0","597/1","598/0","603/0","606/0","608/1","608/3","608/4","615/1","619/0","619/1","620/0","621/0","621/1","622/1","623/0","626/0","627/0","628/2","628/3","631/0","631/2","632/0","632/1","633/1","634/0","636/0","639/0","639/2","642/1","642/3","643/0","643/1","643/2","643/3","649/0","653/1","655/1","661/2","662/0","663/2","667/0","667/1","668/0","675/1","678/2","679/2","680/2","683/0","684/0","685/0","686/1","687/0","687/1","688/0","688/1","688/2","690/0","697/0","703/1","705/1","706/0","707/0","709/2","711/1","713/1","713/2","713/3","714/1","716/1","718/1","718/2","718/3","718/5","722/1","723/1","724/1","728/1","729/1","730/1","731/0","732/0","733/0","738/0","739/1","741/1","751/5","752/0","753/0","754/0","756/2","758/1","760/0","762/0","763/0","763/2","766/1","768/0","769/0","770/0","771/0","772/1","777/0","777/2","777/3","777/6","777/7","777/9","778/0","779/0","781/1","782/1","784/1","788/0","789/0","790/0","790/4","791/0","793/1","796/1","796/3","796/4","797/0","798/1","798/3","798/4","798/5","798/6","798/8","800/0","800/1","800/3","800/4","800/6","800/7","800/8","800/12","800/14","800/15","800/16","803/0","804/0","804/1","805/0","805/1","805/2","805/3","806/0","806/7","807/0","807/2","807/3","808/1","808/2","809/0","809/3","810/0","810/1","811/0","815/2","815/4","815/8","818/0","821/1","821/3","822/1","823/0","823/2","824/0","825/0","825/1","825/3","829/0","831/0","832/0","833/1","835/1","836/0","837/0","839/0","839/1","839/2","839/3","839/4","843/0","844/1","846/0","846/3","846/4","847/0","854/0","855/0","857/0","858/0","860/0","860/2","860/3","860/4","863/0","864/1","866/0","866/1","867/0","871/1","871/3","873/0","876/0","877/0","877/2","877/3","877/6","879/1","885/0","886/0","887/1","890/0","892/1","893/0","893/3","894/3","894/7","897/1","899/2","900/1","903/0","903/2"],"_needed":["0/0","66/1","125/2","141/0","189/1","260/0","262/0","329/0","329/1","330/0","330/2","350/1","615/1","632/0","822/0"],"_that":["0/0","5/1","10/0","12/4","14/0","17/0","17/1","18/0","19/0","20/0","21/0","28/2","28/8","31/5","33/0","34/0","35/0","37/2","40/0","43/0","43/1","44/0","46/4","47/0","48/0","49/0","59/1","62/2","66/0","71/2","71/3","85/1","89/0","106/0","109/0","118/0","122/0","125/2","127/0","130/1","134/4","134/5","141/0","161/3","161/6","163/1","164/1","177/4","179/3","181/0","191/0","201/1","211/2","220/1","226/0","226/1","231/1","242/1","242/2","245/2","256/0","256/1","258/0","265/1","265/2","271/0","273/0","279/0","287/2","288/0","292/0","297/0","302/0","305/0","306/0","313/0","313/1","328/0","351/2","359/0","373/0","400/2","418/0","419/0","429/0","434/2","435/1","435/2","440/0","441/0","442/0","448/0","449/0","474/0","475/5","476/2","476/6","477/0","477/1","478/0","478/1","478/3","482/0","515/0","516/0","556/0","572/1","578/0","602/1","608/4","622/0","626/0","627/1","643/3","650/0","661/2","663/0","664/0","665/1","668/0","669/0","688/0","688/1","688/2","696/0","738/0","739/0","751/2","751/4","751/5","756/1","756/2","762/1","762/2","798/1","798/2","798/4","798/5","798/6","800/13","800/14","800/16","805/1","806/0","808/0","809/0","809/3","815/10","816/2","820/0","821/2","823/1","851/2","857/0","866/0","866/1","866/2","872/1","876/0","877/2","879/1","887/0","909/1"],"_not":["0/0","27/1","28/8","29/1","29/5","35/0","35/1","37/2","64/1","64/2","66/0","66/1","71/1","71/2","85/1","99/0","117/0","120/0","125/2","134/5","141/0","142/1","167/1","174/0","177/3","177/4","180/1","185/1","189/0","190/0","213/1","214/1","224/0","225/1","226/1","227/1","227/3","228/0","230/0","230/1","231/1","244/1","287/2","289/1","290/1","291/1","294/1","312/0","322/1","323/3","324/1","324/2","325/1","327/2","329/0","329/3","330/0","333/1","336/1","336/3","348/2","378/1","381/1","391/1","392/1","398/2","399/2","413/1","414/1","415/1","461/1","476/3","476/4","476/6","476/0","489/1","536/1","570/4","571/2","572/1","590/1","593/1","594/2","598/1","599/2","600/2","601/1","602/1","608/3","619/1","620/0","621/0","622/1","623/0","627/0","627/1","631/0","631/2","635/0","636/0","642/0","642/3","648/0","650/0","663/2","674/1","675/1","682/0","686/0","689/0","696/0","718/1","722/2","723/2","751/4","752/4","774/1","777/4","777/6","777/8","784/1","790/3","797/0","798/4","800/3","800/15","805/0","806/3","807/3","808/0","809/3","810/0","810/3","813/0","814/0","815/0","821/1","823/0","823/3","833/1","835/1","837/0","839/4","850/0","864/2","871/3","872/1","892/0","897/1","899/0"],"_available":["0/0","26/1","28/1","54/0","63/0","163/2","163/4","166/0","179/0","187/1","310/1","420/3","639/0","649/1","692/0","741/0","741/1","854/0","858/0","860/3","860/5","870/0","877/1","893/1","895/0","895/1","898/0"],"_on":["0/0","11/1","12/4","23/0","28/0","30/1","31/3","31/4","33/1","34/1","45/1","46/4","51/0","54/0","58/3","62/0","63/0","65/0","65/1","71/2","71/3","71/5","132/0","136/5","142/2","149/2","161/0","165/0","167/2","187/0","187/2","201/1","204/2","225/2","226/1","230/2","232/0","240/2","241/3","242/1","242/2","249/0","262/0","265/3","287/0","287/1","287/2","310/1","330/3","351/0","364/0","398/2","399/0","443/0","443/1","449/0","476/1","476/3","476/6","515/0","583/0","608/2","627/1","633/0","652/0","653/0","654/0","675/1","675/0","693/0","713/1","713/2","732/0","733/0","751/5","752/2","753/2","754/2","755/0","768/2","790/2","790/3","796/5","797/0","800/8","800/10","804/1","805/0","808/0","808/2","809/1","809/3","810/3","815/5","821/1","822/1","839/1","857/0","859/0","860/0","860/1","860/3","860/5","864/2","877/1","877/3","880/0","883/0","886/0","890/0","893/2","894/1","894/3","894/4","899/3"],"_object":["0/0","14/0","15/0","26/1","28/1","28/7","29/1","31/2","40/0","41/0","65/0","81/0","144/1","149/1","149/2","154/1","162/4","174/0","177/2","177/4","240/0","243/0","245/1","262/0","297/1","314/0","359/1","359/2","364/0","371/0","372/0","376/0","377/0","379/0","380/0","384/0","385/0","396/0","397/0","400/0","400/1","420/1","443/1","446/0","449/0","473/0","476/2","480/0","480/1","487/0","488/0","489/0","489/1","505/0","528/0","529/0","530/0","530/1","550/0","552/1","570/2","570/3","572/1","615/0","631/2","636/0","650/0","651/0","652/0","654/0","655/1","655/0","662/0","704/0","860/1","860/2","874/0","879/0","879/1","880/0","881/0","886/0"],"_itself":["0/0","134/5","134/7","399/2","570/1","583/0","602/1","877/1"],"_mainly":["0/1","796/3","800/14","872/1"],"_the":["0/1","0/2","0/3","1/0","2/0","3/0","4/0","5/0","5/1","6/0","7/1","8/0","8/1","9/0","9/1","9/2","10/0","10/1","11/0","11/1","12/0","13/0","14/0","14/1","15/0","16/0","17/0","18/0","19/0","20/0","20/1","23/0","24/0","26/1","27/0","27/1","28/0","28/1","28/2","28/3","28/7","28/8","29/0","29/1","29/3","29/4","29/6","30/0","30/1","30/3","31/0","31/1","31/2","31/3","31/4","31/5","33/0","33/1","34/0","34/1","35/0","35/3","35/4","38/0","39/0","40/0","40/1","41/0","42/0","43/0","44/0","45/0","45/1","46/0","47/0","48/0","48/1","51/0","52/0","54/0","55/0","55/1","56/0","57/0","58/0","58/1","58/3","59/0","61/0","62/0","62/2","63/0","65/0","66/0","66/1","67/0","68/0","69/0","70/0","71/0","71/1","71/2","71/3","73/0","74/0","75/0","75/1","76/0","76/1","77/0","78/0","79/0","80/0","81/0","85/0","85/1","87/0","88/0","89/0","91/0","92/0","93/0","94/0","96/0","97/0","98/0","99/0","100/0","100/1","100/2","101/0","102/0","103/0","104/0","105/0","106/0","107/0","108/0","109/0","110/0","110/1","110/3","111/0","113/0","114/0","115/0","117/0","118/0","119/0","120/0","121/0","123/0","124/1","125/0","125/2","126/0","128/0","129/0","129/2","129/3","129/4","130/1","131/0","131/1","132/0","133/0","133/1","134/1","134/3","134/4","134/5","134/6","134/7","134/8","135/1","136/1","136/2","136/3","136/4","136/5","139/0","140/1","140/2","141/0","142/0","142/2","143/0","144/0","144/1","148/0","149/0","149/1","149/2","150/0","150/1","153/0","154/0","154/1","157/0","160/0","160/1","160/2","161/0","161/5","161/6","162/3","162/4","163/1","163/3","165/0","166/0","167/0","167/1","167/2","169/1","171/0","173/0","175/0","176/0","177/0","177/1","177/2","177/3","177/4","178/3","178/4","179/0","179/2","179/3","179/4","179/5","180/1","180/2","180/3","181/0","182/0","182/1","183/0","184/0","184/2","185/0","185/1","185/2","186/0","187/0","187/2","188/0","189/1","190/1","191/0","192/0","193/0","194/0","196/0","197/0","197/1","198/0","198/1","198/2","199/0","199/1","199/2","201/0","201/1","202/0","202/1","202/2","203/0","204/0","204/1","205/0","206/0","206/1","207/0","208/0","208/1","209/0","210/0","211/0","211/1","211/2","211/3","213/0","213/1","214/0","214/1","215/0","216/0","217/0","220/0","220/1","221/0","222/0","223/0","224/0","224/1","225/0","226/0","226/1","227/0","227/1","227/3","228/0","228/1","229/0","229/1","229/2","230/1","230/2","231/0","231/1","231/2","233/0","234/0","235/0","236/0","237/0","237/1","238/0","239/0","240/0","240/1","241/0","241/1","242/0","242/1","242/2","244/0","244/1","245/0","245/1","245/2","247/0","247/1","248/0","249/0","250/0","251/0","252/0","253/0","254/0","255/0","256/0","256/1","257/0","258/0","260/0","261/0","262/0","263/0","264/0","265/0","265/2","266/0","267/0","268/0","269/0","270/0","271/0","272/0","273/0","274/0","275/0","276/0","277/0","278/0","279/0","279/1","280/0","281/0","282/0","282/1","283/0","284/0","285/0","286/0","287/0","287/1","289/0","289/1","290/0","290/1","291/0","291/1","292/0","293/0","294/0","294/1","294/2","294/3","294/4","295/0","295/1","296/0","297/0","297/1","298/0","299/0","299/1","299/2","299/3","300/0","301/0","302/0","303/0","304/0","305/0","306/0","307/0","308/0","309/0","310/0","310/1","310/3","311/0","311/1","313/0","315/0","316/0","317/0","318/0","318/1","319/0","320/0","321/0","322/0","323/2","323/3","323/5","324/0","325/0","325/1","326/0","327/1","327/2","328/1","329/1","329/3","329/4","330/1","330/2","330/3","331/0","332/0","333/1","334/1","335/1","335/2","336/1","336/3","337/0","338/0","339/0","340/0","341/0","341/1","342/2","344/0","346/0","347/0","348/1","348/2","349/0","349/1","350/0","351/0","351/1","351/2","352/0","353/0","354/0","359/0","359/1","359/2","360/0","363/1","366/0","368/0","369/0","370/0","373/0","374/0","375/0","378/0","381/0","381/2","382/0","383/0","386/0","387/0","387/2","388/0","388/2","389/0","389/3","390/0","391/0","392/0","393/0","398/1","398/2","399/0","399/1","399/2","400/1","400/2","401/0","402/0","403/0","404/0","405/0","405/1","406/0","407/0","408/0","409/0","410/0","411/0","412/0","413/0","414/0","414/1","415/0","416/0","417/0","417/1","418/0","419/0","420/1","420/2","420/3","421/0","422/0","423/0","424/0","425/0","426/0","427/0","428/0","429/0","430/0","431/0","432/0","432/1","432/2","432/3","432/4","432/5","434/1","435/0","435/1","435/3","436/1","436/2","437/1","439/0","439/1","440/0","441/0","442/0","443/0","448/0","450/0","450/1","452/0","453/0","454/0","455/0","456/0","457/0","458/0","459/0","460/0","462/0","463/0","464/0","465/0","466/0","467/0","468/0","469/0","470/0","470/1","471/0","472/0","473/0","475/0","475/5","475/8","476/2","476/3","476/4","476/5","476/6","477/0","477/1","478/0","478/2","478/4","479/0","479/1","480/0","480/1","484/0","485/0","486/2","493/0","495/0","496/0","497/0","498/1","501/0","502/0","505/0","506/0","507/0","508/0","509/0","510/0","511/0","512/0","513/0","514/0","515/0","515/1","515/2","515/3","516/0","519/0","520/0","521/0","522/0","524/0","526/0","527/0","533/0","536/1","538/0","539/0","540/0","541/0","542/0","543/0","544/0","545/0","548/1","550/1","551/1","551/2","551/3","551/5","553/0","554/0","555/0","556/0","558/0","559/0","560/0","561/0","562/0","563/0","564/0","565/0","566/0","567/0","568/0","568/1","569/0","570/0","570/1","570/2","570/3","570/4","571/1","571/2","572/2","573/0","574/0","574/1","575/0","576/0","577/0","578/0","579/0","579/1","580/0","581/0","582/0","583/0","583/2","584/0","585/0","585/1","586/0","587/0","588/0","589/0","590/0","590/1","591/0","592/0","593/0","594/0","595/0","596/0","597/0","597/1","598/0","599/0","599/1","600/0","600/1","601/1","602/1","603/0","606/0","607/0","608/0","608/1","608/2","608/3","610/0","614/0","619/0","622/0","624/1","625/0","626/0","627/0","628/2","628/3","631/0","632/0","634/0","634/1","634/2","638/2","638/3","639/0","639/1","639/2","641/0","642/0","642/1","642/2","642/3","643/0","643/1","643/2","643/3","649/1","652/0","655/1","657/0","658/0","659/0","660/0","661/0","661/1","661/2","663/0","663/1","663/2","664/0","665/0","665/1","666/0","666/1","668/1","668/2","670/0","671/1","672/0","673/0","675/0","675/1","677/0","678/0","678/1","678/2","679/0","679/2","680/0","680/1","680/2","681/0","683/0","683/1","684/0","684/1","686/0","686/1","687/0","687/1","687/2","688/0","688/1","688/2","689/0","690/1","691/0","691/1","692/0","693/0","694/0","695/0","697/0","698/0","699/0","700/0","701/0","702/0","703/0","703/1","705/0","705/1","706/0","707/0","708/0","708/1","708/2","709/0","709/1","709/2","710/0","711/0","711/1","712/0","713/0","713/3","714/0","714/1","715/0","716/0","716/1","717/0","718/0","718/1","718/4","718/5","719/0","720/0","721/0","722/0","722/1","723/0","723/1","724/1","726/0","727/0","728/0","728/1","729/0","729/1","730/0","730/1","731/0","732/0","733/0","734/0","735/0","736/0","737/0","738/0","739/0","739/1","740/0","741/0","741/1","742/0","743/0","744/0","745/0","746/0","747/0","748/0","749/0","750/0","751/0","751/1","751/2","751/3","751/4","751/5","752/0","752/1","752/4","753/0","754/0","756/0","756/1","757/0","759/0","759/1","760/0","762/0","762/2","763/2","764/0","764/1","766/0","766/1","767/0","768/0","768/1","768/2","769/0","770/0","771/0","772/0","772/1","773/0","773/1","774/1","775/0","776/0","777/1","777/2","777/3","777/4","777/5","777/7","777/8","777/9","778/0","779/0","780/0","781/0","782/0","783/0","784/1","785/0","785/1","786/0","787/0","788/0","789/0","790/0","790/1","790/2","790/3","790/4","791/0","792/0","793/0","793/1","794/0","796/0","796/1","796/3","796/4","796/6","797/0","797/1","797/2","798/1","798/2","798/6","798/7","799/0","800/1","800/3","800/4","800/6","800/7","800/10","800/12","800/14","800/15","800/16","800/18","801/0","803/0","804/1","805/3","806/0","806/1","806/3","806/7","807/0","807/1","807/2","808/0","808/1","808/2","809/0","809/1","809/3","809/4","810/0","810/2","811/0","812/0","813/1","814/0","814/1","815/1","815/2","815/3","815/6","815/7","815/10","816/0","816/2","817/0","817/1","817/2","818/0","818/1","819/0","819/1","821/0","821/1","821/3","822/0","822/1","823/0","823/2","823/3","824/0","824/1","826/2","827/2","828/1","829/0","829/1","830/1","831/1","832/1","833/1","834/0","835/0","835/1","836/1","836/2","837/0","838/0","839/0","839/1","839/3","839/5","840/0","841/0","841/2","842/0","843/0","844/1","845/0","846/0","846/1","846/4","847/0","848/1","849/0","849/1","850/0","851/1","851/2","852/0","853/0","854/0","855/0","857/0","857/1","858/0","858/4","859/0","860/0","860/1","860/3","860/4","860/5","860/6","863/2","864/0","864/2","866/2","867/0","869/0","870/0","871/1","871/2","871/3","871/4","872/0","872/1","873/0","874/0","875/0","875/1","875/2","876/0","877/0","877/1","877/2","877/3","877/4","877/5","877/7","878/0","879/0","879/1","880/0","881/0","884/0","884/1","885/1","886/0","886/1","887/0","887/1","887/2","890/0","891/0","893/2","893/3","893/4","893/5","893/6","894/0","894/5","894/7","895/0","897/0","897/1","899/0","899/2","899/3","901/0","903/0","903/1","903/2","906/0","908/0","909/0","909/1","912/0"],"_bytecode":["0/1","1/0","2/0","3/0","5/0","65/0","65/2","80/0","81/0","82/0","83/0","84/0","85/0","86/0","88/0","91/0","124/1","129/1","129/2","129/4","134/1","134/3","134/4","136/4","410/0","757/0","758/0","759/0","759/1","764/0"],"_more":["0/1","141/0","160/1","174/1","179/5","185/2","186/1","201/0","201/1","204/2","227/2","231/1","240/2","241/3","242/2","265/3","398/2","476/4","536/1","558/0","583/1","594/1","624/2","632/0","638/3","639/0","642/2","681/1","714/1","751/4","751/6","759/0","759/2","764/1","769/0","798/8","800/1","800/18","807/2","816/1","817/2","867/1","868/0","887/3","890/0","903/0","903/1"],"_specifically":["0/1"],"_initcode":["0/1","0/2","0/3","1/0","5/1"],"_of":["0/1","0/2","1/0","2/0","3/0","6/0","7/0","10/0","10/1","11/0","11/1","12/0","12/4","15/0","20/0","20/1","21/0","26/0","27/0","28/0","28/7","28/8","30/0","30/1","31/2","31/3","31/5","32/0","33/0","33/1","34/1","35/0","36/0","41/0","45/0","45/1","46/0","46/4","48/0","48/1","49/0","55/0","56/0","57/0","59/0","60/0","62/2","65/0","65/2","71/2","71/4","75/1","76/1","77/0","80/0","82/0","83/0","89/0","90/0","91/0","92/0","93/0","94/0","95/0","99/0","101/0","102/0","103/0","105/0","108/0","113/0","114/0","116/0","123/0","126/0","127/0","128/0","129/0","129/2","134/1","134/7","136/1","136/4","141/0","142/1","142/2","143/0","146/0","152/0","156/0","160/0","160/1","161/5","161/6","163/1","165/0","170/0","177/0","177/3","177/4","178/5","179/4","180/0","180/1","180/2","180/3","181/0","182/1","185/1","185/2","191/0","194/0","197/1","204/0","204/1","204/2","205/0","206/0","207/0","208/0","209/0","210/0","211/0","211/1","213/0","214/0","215/0","216/0","220/0","222/0","223/0","225/0","226/0","230/2","234/0","237/0","237/1","238/0","239/0","241/0","242/0","242/1","245/0","245/1","245/2","247/0","248/0","250/0","251/0","252/0","253/0","254/0","254/1","255/0","255/1","256/0","256/1","256/2","257/0","258/0","259/1","260/0","261/0","263/0","269/0","270/0","272/0","273/0","275/0","276/0","277/0","278/0","282/1","283/0","284/0","288/0","289/0","290/0","291/0","292/0","294/4","297/1","298/0","299/0","299/2","300/0","302/0","303/0","305/0","306/0","307/0","307/1","309/0","310/0","311/1","315/0","318/0","319/0","320/0","322/0","324/0","327/1","328/0","328/1","329/1","330/1","343/0","344/0","345/0","346/0","347/0","349/0","350/0","351/0","353/0","354/0","359/1","367/0","368/0","369/0","369/1","370/0","375/0","375/1","382/0","382/1","383/0","388/0","389/0","390/1","391/0","392/0","393/0","398/0","399/1","399/3","405/1","410/0","413/1","416/0","420/2","421/0","428/0","430/0","432/0","432/1","432/2","432/4","434/0","434/1","436/2","443/0","443/1","445/0","450/0","451/0","453/0","454/0","455/0","456/0","457/0","458/0","459/0","460/0","462/0","463/0","464/0","465/0","466/0","467/0","468/0","469/0","470/0","471/0","472/0","474/0","475/0","476/0","476/2","476/4","477/2","478/2","478/3","479/0","479/1","482/0","483/0","484/0","484/1","489/1","493/0","494/0","495/0","496/0","497/0","498/0","498/1","499/0","500/0","501/0","502/0","503/0","504/0","506/0","507/0","513/0","516/0","519/0","521/0","523/0","525/0","527/0","530/2","534/0","535/0","536/0","537/0","538/0","539/0","540/0","541/0","542/0","543/0","544/0","545/0","546/0","547/0","548/0","551/0","551/1","551/3","552/0","552/1","553/0","554/0","555/0","556/0","559/0","560/0","562/0","563/0","564/0","565/0","568/0","568/1","569/0","570/1","570/2","570/3","570/4","571/1","575/0","578/0","579/0","581/0","582/0","583/0","583/2","587/0","594/0","595/0","596/0","597/0","598/0","599/0","599/1","600/0","600/1","601/0","602/0","602/1","603/0","608/2","615/1","621/1","624/1","626/0","628/1","631/2","632/0","633/1","634/0","634/1","634/2","638/0","638/3","639/1","639/2","642/2","643/0","649/0","649/1","651/0","655/0","661/2","665/1","666/0","666/1","667/0","667/1","668/0","668/1","671/0","671/1","672/0","673/0","675/0","679/2","682/0","683/0","684/0","684/1","687/0","688/0","688/1","689/0","698/0","705/1","708/1","708/2","709/2","710/0","713/1","714/0","714/1","715/0","716/0","716/1","718/5","727/0","731/0","733/0","736/0","739/0","740/0","741/1","751/2","752/1","754/1","755/2","756/0","758/0","759/0","759/1","762/3","763/2","766/1","771/0","776/0","777/0","777/2","777/6","777/8","785/0","786/0","787/0","792/0","794/0","796/1","796/3","797/0","798/0","798/6","800/0","800/1","800/2","800/4","800/6","800/10","803/0","804/0","805/3","806/0","806/6","808/2","809/0","810/1","813/1","815/1","815/2","815/5","816/0","817/1","817/2","818/0","818/1","820/0","821/1","822/1","824/1","825/0","826/1","827/1","830/1","833/1","835/0","835/1","837/0","837/1","839/1","841/2","844/0","844/1","846/0","846/5","847/0","860/0","860/5","866/2","868/1","869/0","870/0","871/1","871/2","871/3","871/4","873/0","875/0","875/2","877/0","877/7","882/0","885/0","886/0","889/0","890/0","891/0","893/0","893/4","893/5","893/6","894/7","897/1","899/2","901/0","902/0","903/0","903/1","909/0"],"_required":["0/1","30/3","33/0","58/2","60/0","135/1","142/2","177/4","208/1","226/0","255/0","279/1","318/1","329/0","330/0","330/1","345/0","398/1","399/0","476/4","570/0","570/4","632/0","643/0","752/1","758/0","766/0","797/0","800/16","808/0","866/1"],"_factory":["0/2","0/0","1/0","2/0","3/0","4/0","5/0","6/0","7/0","8/0","9/0"],"_sends":["0/2","71/0","175/0"],"_special":["0/2","679/2","864/2","877/7","879/1"],"_type":["0/2","28/0","28/3","29/0","33/1","34/1","114/0","136/4","140/1","140/0","217/0","279/1","351/1","369/0","370/0","383/0","386/0","387/0","388/0","389/0","389/2","390/0","391/0","392/0","393/0","395/0","396/0","397/0","398/1","405/1","575/0","578/0","580/0","581/0","582/0","634/0","893/5","898/0"],"_transaction":["0/2","8/0","8/1","9/0","9/1","9/2","10/1","15/0","28/8","30/0","30/1","30/3","31/0","31/3","31/5","34/0","35/0","35/2","41/0","58/1","58/0","59/0","59/1","61/0","62/2","71/2","71/5","75/0","76/0","134/2","134/3","174/0","175/0","177/0","177/1","177/2","177/3","177/4","178/2","178/5","208/1","208/0","209/0","223/0","225/0","226/0","226/1","227/0","227/1","227/2","227/3","228/0","228/1","229/0","229/1","229/2","230/1","230/2","230/0","242/0","242/1","242/3","260/0","261/0","262/0","263/0","269/0","270/0","271/0","272/0","276/0","277/0","279/0","280/0","281/0","282/0","283/0","284/0","285/0","286/0","287/0","287/1","288/0","289/0","290/0","291/0","292/0","293/0","294/0","294/1","294/2","294/4","295/0","295/1","296/0","297/0","297/1","298/0","299/3","300/0","301/0","302/0","303/0","304/0","305/0","306/0","307/0","309/0","310/2","318/0","319/0","320/0","322/1","324/0","324/2","325/0","325/1","329/3","329/0","330/1","330/0","412/0","415/0","419/0","426/0","427/0","428/0","429/0","430/0","431/0","441/0","515/1","639/0","639/2","641/0","642/0","642/1","642/3","643/0","643/2","643/3","696/0","697/0","698/0","699/0","700/0","701/0","702/0","703/0","704/0","705/0","705/1","706/0","707/0","708/0","708/1","709/0","709/2","710/0","711/0","712/0","713/0","713/2","714/0","715/0","716/0","716/1","717/0","718/0","718/1","718/5","803/0"],"_an":["0/2","7/0","10/0","14/1","16/0","28/4","29/3","29/4","31/5","34/0","36/0","38/0","40/1","42/0","60/0","61/0","62/2","65/0","65/1","65/2","77/0","78/0","79/0","81/0","82/0","83/0","84/0","85/1","86/0","90/0","100/0","100/2","110/0","110/1","110/2","111/1","114/0","117/0","120/0","129/4","130/0","134/2","134/3","135/1","136/4","149/2","160/0","162/4","163/0","163/2","163/4","180/2","194/0","195/0","197/0","197/1","210/0","211/1","211/2","212/0","214/1","217/1","226/0","226/1","231/0","240/0","246/0","265/1","265/2","295/1","297/0","310/0","312/0","313/1","314/0","323/5","327/0","329/2","330/3","333/1","334/0","335/0","336/0","342/1","345/0","350/0","352/0","358/0","359/1","365/0","367/0","367/1","370/0","374/0","378/1","390/1","391/1","398/0","398/1","399/3","405/1","414/0","420/0","432/0","434/0","434/1","434/2","435/0","435/2","435/3","436/1","437/0","443/1","446/0","447/0","451/0","461/0","470/1","475/6","480/0","480/1","482/0","489/1","495/1","500/1","515/0","529/0","530/2","532/0","534/0","535/0","536/0","537/0","551/1","570/2","570/3","571/0","584/0","593/0","615/0","615/1","616/0","617/0","628/0","628/3","631/2","633/0","634/0","635/0","636/0","638/0","640/0","643/3","651/0","652/0","653/0","654/0","655/0","662/0","671/1","675/1","679/2","681/1","688/1","693/0","696/0","705/0","708/1","709/1","709/2","713/2","718/4","718/5","731/0","751/1","752/0","752/1","756/2","759/0","761/0","762/0","762/3","770/0","777/5","777/8","784/0","784/1","790/4","796/1","796/5","798/6","803/0","805/1","806/1","806/3","806/5","806/7","808/0","809/3","809/4","815/5","816/2","825/1","826/0","827/0","828/0","832/0","839/2","839/4","848/0","851/2","852/1","860/0","860/1","860/2","860/5","860/6","866/2","868/1","871/4","874/0","875/1","877/5","884/0","885/0","885/2","886/0","887/1","894/3","899/1","903/1"],"_field":["0/3","37/2","319/0","320/0","327/2","329/4","570/3","571/2","816/2"],"_null":["0/3","37/2","64/1","64/2","85/1","134/3","177/4","213/1","214/1","227/0","227/3","228/0","230/1","264/0","265/0","265/1","289/1","290/1","291/1","294/1","295/1","297/0","338/1","368/1","373/1","387/1","388/1","391/1","392/1","393/1","668/1","668/2","688/1","703/1","722/1","723/1","781/1","782/1","798/4","836/0","836/1","841/1"],"_and":["0/3","1/0","2/0","3/0","7/1","9/0","9/1","11/1","27/0","27/1","28/1","28/2","28/6","28/8","29/4","30/0","31/5","32/0","33/0","34/0","35/0","38/0","45/1","61/0","62/1","62/0","65/1","65/2","66/1","67/0","67/1","69/0","70/0","71/3","78/0","79/0","80/0","85/1","106/0","109/0","117/0","118/0","119/0","122/0","129/2","129/3","129/4","130/1","134/3","134/7","136/5","140/1","142/2","144/2","145/0","149/2","150/1","151/0","155/0","160/1","161/0","163/0","163/2","163/3","164/0","166/0","166/1","167/2","168/0","175/0","177/1","177/3","177/4","178/2","178/5","179/1","179/2","179/3","180/3","187/0","187/1","189/0","190/1","192/0","194/0","197/1","198/1","199/1","201/0","201/1","204/1","204/2","211/0","211/2","211/3","220/1","224/1","227/3","229/1","229/2","230/1","240/0","242/3","243/0","244/1","245/2","256/1","265/1","265/3","279/1","287/1","287/2","294/1","297/1","301/0","307/0","310/0","310/2","310/4","311/0","323/0","323/1","323/2","325/0","325/1","328/1","328/2","329/1","329/3","330/1","330/3","331/0","332/0","334/1","341/1","348/1","349/0","351/1","361/0","362/1","388/0","389/3","398/1","398/2","398/3","399/0","400/2","417/1","418/0","419/0","432/1","432/3","433/0","434/1","435/2","436/1","439/1","443/2","444/0","461/0","464/0","465/0","466/0","467/0","468/0","469/0","473/0","475/7","475/8","476/0","476/2","476/4","478/3","479/0","479/1","480/1","482/0","483/1","484/0","485/0","486/1","487/0","488/0","489/0","489/1","501/0","515/0","515/1","515/2","527/0","544/0","549/0","551/0","551/1","551/3","551/5","552/1","556/0","568/1","570/1","574/1","575/0","585/1","588/0","590/1","593/0","601/1","602/1","608/0","608/1","614/0","615/0","616/0","617/0","618/0","624/1","628/2","631/2","634/1","639/2","642/3","645/0","646/0","649/1","650/0","651/2","658/1","659/1","660/0","664/0","667/1","668/1","675/1","679/2","682/0","684/0","690/1","694/0","695/0","696/0","703/1","708/1","709/2","713/3","716/1","718/5","719/0","739/0","751/1","751/3","751/4","751/6","752/0","753/0","753/1","754/0","754/1","754/4","756/0","756/1","757/0","759/1","759/2","760/0","762/0","764/0","766/0","769/0","772/0","772/1","773/1","774/1","775/0","777/0","777/2","777/3","777/5","777/6","777/8","780/0","784/1","786/0","787/0","790/0","790/2","790/3","790/4","791/0","793/0","794/0","796/1","796/3","796/5","797/0","797/1","797/2","798/1","798/3","798/4","800/0","800/2","800/3","800/6","800/7","800/12","800/16","801/0","804/0","805/0","805/1","805/2","805/3","806/0","806/2","806/3","807/1","808/2","809/0","809/1","809/3","809/4","810/1","811/0","812/0","813/0","813/1","813/2","814/0","814/1","815/5","817/2","818/0","819/0","819/1","821/0","821/1","822/2","823/1","824/1","825/1","825/2","826/1","827/1","827/2","828/1","829/0","829/1","830/1","833/1","834/1","835/0","835/1","837/0","839/5","842/0","844/0","846/0","846/2","846/5","847/0","847/1","851/2","854/0","855/0","857/0","857/1","858/0","858/1","858/4","859/0","860/1","860/3","860/4","863/0","864/0","864/2","866/0","867/0","867/1","868/0","868/1","870/0","871/1","871/2","871/3","872/1","872/2","877/1","877/3","878/0","879/1","881/0","884/1","885/1","885/2","887/2","889/0","892/1","893/0","893/2","893/3","893/4","893/5","893/6","894/1","894/4","894/5","894/7","895/0","899/3","902/0","903/0","903/1","903/2","904/0","904/1","906/0","909/1","910/0"],"_data":["0/3","5/0","10/1","31/5","80/0","85/1","89/0","112/0","125/0","125/2","126/0","132/0","134/3","134/4","134/7","135/0","135/1","136/0","136/3","136/4","175/0","203/0","206/0","207/0","225/0","250/0","251/0","254/0","259/0","260/0","261/0","265/0","268/0","270/0","274/0","275/0","276/0","285/0","290/0","293/0","301/0","302/0","303/0","319/0","323/1","324/0","326/0","328/1","340/0","347/0","349/0","351/2","353/0","354/0","398/2","399/3","408/0","409/0","410/0","412/0","413/0","414/0","415/0","416/0","419/0","426/0","427/0","429/0","472/0","479/1","482/0","490/0","491/0","495/0","496/0","497/0","498/0","500/0","507/0","523/0","525/0","527/0","528/0","528/1","529/0","529/1","530/0","530/1","530/2","550/0","560/0","561/0","562/0","563/0","564/0","565/0","568/0","569/0","570/0","570/1","572/0","573/0","574/0","575/0","576/0","577/0","578/0","580/0","581/0","582/0","591/0","592/0","593/0","594/0","598/0","604/0","605/0","632/0","632/1","634/2","639/1","639/2","657/0","658/0","659/0","661/0","663/2","664/0","665/0","666/0","667/1","670/0","671/0","676/0","701/0","705/0","711/0","711/1","714/0","715/0","718/0","739/0","751/6","753/4","763/1","796/1","797/0","797/2","798/0","798/1","800/6","800/10","841/2","842/0","843/0","860/1","860/3","864/2","899/0","901/0"],"_where":["0/3","9/0","62/1","189/1","199/2","209/0","210/0","351/0","351/1","359/1","367/0","480/1","485/0","578/0","653/1","684/0","713/3","760/0","798/2","808/2","875/2"],"_will":["0/3","5/1","6/0","9/0","10/1","12/1","12/4","14/0","14/1","28/1","28/8","29/0","29/3","30/1","31/4","35/2","38/0","40/0","40/1","46/1","46/4","59/1","71/4","93/0","94/0","99/0","100/0","100/1","127/0","130/1","144/2","145/0","151/0","155/0","167/2","177/4","179/3","182/0","185/0","185/2","202/1","202/2","204/0","217/1","220/1","224/0","227/1","230/0","230/2","233/0","245/2","247/1","271/0","284/0","287/1","294/3","310/3","323/1","327/2","327/0","333/2","334/1","335/1","338/0","341/1","342/1","342/2","349/1","351/0","351/2","368/1","369/1","386/0","389/3","398/2","413/1","414/1","415/1","417/1","434/2","435/2","439/1","443/2","461/1","470/1","475/5","476/5","495/1","500/1","502/1","515/2","515/3","529/1","550/1","571/2","571/0","572/2","578/0","590/1","593/1","594/2","597/1","598/1","599/1","599/2","600/1","600/2","601/1","609/0","626/0","628/3","634/1","634/2","649/1","653/1","658/1","659/1","661/1","663/2","665/1","671/1","684/1","687/2","688/2","691/1","693/0","694/0","695/0","718/4","732/0","733/0","756/1","761/0","762/2","766/1","768/2","772/1","773/1","774/0","774/1","776/0","777/5","785/1","793/1","796/3","800/3","804/1","807/1","809/3","813/1","814/1","815/6","816/1","816/2","817/1","818/1","820/0","833/1","839/2","839/4","839/5","849/1","851/2","852/0","863/0","866/2","869/0","875/1","877/4","877/5","877/7","894/5","903/0","903/1"],"_be":["0/3","8/1","9/0","9/1","9/2","10/1","14/1","27/0","28/1","28/8","29/0","29/4","30/0","30/1","30/3","31/4","31/5","33/0","34/0","35/2","37/1","40/1","55/1","59/1","60/0","61/0","62/2","64/0","66/0","66/1","67/0","70/0","71/3","71/4","75/1","76/1","81/0","100/1","108/0","109/0","118/0","122/0","125/0","125/2","129/1","129/4","130/0","131/0","132/1","134/1","134/4","135/0","135/1","136/2","136/3","138/0","144/1","144/2","145/0","149/1","149/2","151/0","154/1","155/0","162/3","164/1","167/2","171/1","177/1","178/3","178/5","179/3","179/5","180/2","182/0","185/0","186/1","187/0","189/0","194/0","194/1","197/0","198/1","198/2","199/1","202/1","202/2","208/1","211/0","211/2","212/0","217/1","224/1","226/0","226/1","229/0","229/1","232/0","233/0","239/0","245/0","245/2","247/1","255/0","256/1","265/1","271/0","279/0","279/1","282/1","287/1","287/2","294/3","297/1","299/3","310/0","311/0","313/1","318/1","323/1","323/5","327/2","329/0","329/4","330/0","330/2","334/1","338/0","338/1","341/1","342/1","348/1","349/0","350/0","351/0","353/0","354/0","359/2","361/0","368/1","369/1","373/0","373/1","375/1","382/1","387/1","387/2","388/1","388/2","389/3","400/1","400/2","410/0","411/0","412/0","413/0","413/1","414/1","415/1","420/0","420/1","432/0","435/1","435/2","436/2","439/1","444/0","444/1","445/0","450/0","475/6","475/7","475/8","476/4","476/5","476/6","477/1","479/1","481/0","486/0","486/1","486/2","495/1","500/1","502/1","515/1","516/0","517/0","528/1","529/1","530/1","533/0","551/2","551/3","551/5","552/1","556/0","571/2","575/0","590/1","602/1","608/1","608/3","615/1","618/0","642/2","642/3","649/1","658/1","659/1","661/1","663/2","665/1","666/1","674/1","676/0","682/0","683/1","684/0","684/1","688/0","688/1","694/0","705/0","708/2","713/2","713/3","714/1","718/1","718/4","756/1","758/0","759/1","760/0","761/0","762/0","762/1","762/2","763/1","764/1","767/0","772/1","773/1","774/1","776/0","796/6","797/0","797/1","797/2","798/0","800/1","800/4","800/5","800/7","800/13","800/16","804/0","804/1","806/4","806/5","806/6","806/7","807/1","808/1","808/2","809/3","810/1","811/0","812/0","815/0","815/10","816/2","817/2","818/1","823/1","823/2","824/0","826/3","833/1","833/2","836/1","837/1","839/5","840/0","841/2","845/0","846/1","847/0","849/0","849/1","851/2","852/0","863/1","864/2","867/0","868/1","869/0","871/2","871/4","875/1","877/7","880/0","884/1","885/1","885/2","894/7","899/0","899/3","903/1","903/2"],"_evaluated":["0/3","849/1"],"_result":["0/3","15/0","27/0","28/0","28/1","29/0","29/3","29/4","30/2","30/3","35/0","41/0","58/3","119/0","121/1","134/4","144/2","145/0","151/0","155/0","177/4","179/3","182/0","185/1","185/2","198/2","199/2","206/1","209/0","210/0","225/0","319/0","320/0","330/2","351/0","351/2","354/0","413/0","414/1","414/0","415/0","416/0","420/0","421/0","426/0","441/0","442/0","475/5","601/1","719/0","759/0","823/1","839/1","877/5","877/7"],"_becomes":["0/3","476/0","478/1","899/1"],"_new":["0/3","1/0","3/0","11/0","12/0","30/1","38/0","45/0","46/0","64/0","72/0","90/0","127/0","140/0","144/0","149/0","150/0","154/0","158/0","162/0","167/0","174/0","180/0","190/0","195/0","202/0","332/0","333/0","339/0","343/0","351/0","400/0","503/0","539/0","540/0","541/0","542/0","543/0","545/0","552/0","572/0","602/0","603/0","609/0","621/0","621/1","636/0","639/2","642/0","642/1","642/2","656/0","732/0","809/3","866/2","872/1","877/3","893/3"],"_code":["0/3","10/0","10/1","27/0","28/8","38/0","79/0","101/0","102/0","103/0","106/0","110/1","117/0","119/0","120/0","121/0","134/1","134/5","206/0","211/2","435/0","442/0","475/6","478/1","598/0","615/0","616/0","626/0","673/0","759/2","762/2","818/0","818/1","820/0","833/0","833/1","838/0","839/5","849/0","849/1","859/0","860/0","860/6","903/1"],"_deployed":["0/3","9/0","10/0","65/0","206/1","249/0","399/1","859/0","893/5"],"_as":["0/3","7/1","16/0","28/2","28/4","28/8","30/1","35/3","42/0","58/2","62/0","70/0","71/0","91/0","119/0","124/0","125/2","134/1","134/4","136/5","144/1","149/1","150/1","154/1","161/1","161/3","162/3","164/0","164/1","166/1","171/1","177/0","177/4","178/2","179/1","185/1","187/1","194/0","201/1","202/0","205/0","206/0","207/0","208/0","220/1","239/0","244/1","245/1","245/2","247/0","254/0","260/0","265/2","287/0","288/0","299/1","311/1","313/1","318/1","319/0","320/0","322/1","323/0","323/1","325/1","327/2","328/1","330/1","331/0","342/1","345/0","348/2","366/0","374/0","378/1","390/0","398/1","412/0","417/1","420/0","420/1","420/2","426/0","435/0","435/1","436/0","437/0","437/1","444/1","446/0","470/0","471/0","472/0","475/5","475/7","477/0","479/0","482/0","486/2","515/2","516/0","517/0","524/0","526/0","529/1","534/0","535/0","536/0","537/0","550/1","551/5","552/1","558/0","570/4","571/2","575/0","593/0","598/0","601/1","619/0","623/0","628/2","628/3","631/2","634/2","638/0","638/2","639/1","639/2","640/0","642/3","655/1","661/2","663/2","688/0","690/1","694/0","696/0","705/0","713/1","751/1","751/3","751/6","754/1","755/2","760/0","762/0","768/1","790/1","790/2","804/1","806/0","807/2","808/2","809/3","810/0","816/2","817/2","818/0","819/1","821/0","821/2","833/1","835/0","835/1","837/1","858/1","860/1","866/2","868/1","871/3","877/1","877/5","877/7","891/0","893/1","893/4","894/0","894/4","894/6","895/0","898/0","901/0"],"_contractfactory":["0/0","1/0","2/0","3/0","4/0","5/1","5/0","6/0","7/1","7/0","8/0","9/0","15/0","41/0","65/2"],"_creates":["1/0","161/1","180/0","204/1","572/0","651/0","798/0","833/0","834/0","838/0"],"_instance":["1/0","3/0","7/0","11/0","12/0","38/0","45/0","46/0","90/0","142/1","180/0","193/0","196/0","212/0","332/0","334/0","335/0","336/0","339/0","343/0","350/0","351/0","447/0","451/0","534/0","535/0","536/0","537/0","552/0","602/0","608/2","821/2"],"_for":["1/0","2/0","25/0","28/2","28/3","28/6","28/7","28/8","29/2","29/3","29/4","31/0","31/2","31/3","31/5","33/1","34/1","36/0","37/0","38/0","53/0","56/0","60/0","65/1","66/0","67/0","71/0","71/3","71/5","75/0","81/0","87/0","88/0","90/0","105/0","110/0","110/1","111/1","112/0","114/0","115/0","122/0","125/0","128/0","129/0","129/3","130/1","135/0","136/2","136/3","136/4","142/0","144/1","144/3","145/1","149/1","151/1","154/1","155/1","160/1","161/0","163/0","165/0","166/0","171/1","174/1","177/1","177/2","177/3","183/0","184/0","186/1","187/2","193/0","197/0","201/0","201/1","201/2","204/2","208/1","211/1","212/0","217/0","219/0","224/1","225/2","226/1","228/0","229/2","230/0","231/0","232/0","233/0","235/0","235/1","236/0","237/0","238/0","240/2","241/3","244/1","261/0","262/0","265/2","265/3","266/0","267/0","268/0","275/0","282/0","294/0","307/0","310/2","323/2","324/2","326/0","330/1","330/2","332/0","335/1","337/0","338/0","340/0","342/2","343/0","345/0","350/0","351/2","363/1","368/1","370/0","387/1","387/2","388/1","388/2","389/1","389/3","391/1","392/0","392/1","393/1","404/0","406/0","407/0","408/0","409/0","411/0","412/0","413/0","413/1","414/0","415/0","415/1","416/0","417/0","417/1","419/0","420/2","432/3","435/1","439/0","439/1","448/0","451/0","474/0","475/2","475/5","476/4","476/6","477/2","478/3","479/0","486/1","515/1","533/1","534/0","535/0","536/0","537/0","551/4","551/5","557/0","570/0","570/2","572/0","575/0","583/0","583/1","584/0","585/0","586/0","588/0","589/0","590/0","591/0","592/0","594/1","607/0","614/0","619/1","628/1","628/3","631/1","631/2","638/1","638/3","639/1","639/2","643/0","643/2","643/3","645/0","646/0","647/0","649/0","653/0","656/0","657/0","658/0","659/0","664/0","667/0","668/2","674/0","678/2","679/2","680/2","681/1","686/0","686/1","687/0","688/0","689/0","691/0","692/0","699/0","700/0","701/0","702/0","703/0","705/0","708/0","709/0","710/0","711/0","712/0","713/0","713/2","714/0","715/0","716/0","722/0","723/0","728/0","729/0","734/0","738/0","751/0","751/2","751/3","751/5","751/6","752/0","752/2","753/0","753/2","754/1","754/2","755/0","756/1","756/2","759/2","762/0","764/0","768/2","769/0","773/0","775/0","777/6","778/0","779/0","783/0","793/0","794/0","796/3","797/0","798/1","800/1","800/4","800/7","800/9","800/11","800/18","805/3","806/0","806/2","806/4","806/7","809/1","809/3","810/0","812/0","813/0","813/1","814/0","815/0","815/1","815/5","815/10","816/0","816/2","817/2","821/3","822/0","822/1","823/2","824/0","836/1","837/0","838/0","839/0","843/0","845/0","849/0","853/0","854/0","855/0","855/1","858/0","860/1","863/1","864/1","866/2","867/0","867/1","868/1","871/3","871/4","874/0","877/2","877/3","879/1","884/0","886/1","887/3","891/0","893/1","893/5","894/4","894/5","896/0","897/0","899/3","903/2","907/0","908/0","909/0","912/0"],"_described":["1/0"],"_by":["1/0","12/1","12/3","27/0","28/1","30/1","37/0","46/1","46/3","55/0","76/0","122/0","124/0","129/0","129/1","133/1","134/6","136/5","140/1","143/0","148/0","153/0","157/0","162/0","163/1","167/2","169/0","170/0","172/0","177/1","179/4","182/1","187/0","194/0","217/1","231/1","255/0","256/1","257/0","260/0","264/0","265/0","268/0","287/0","297/0","299/1","300/0","304/0","307/0","329/1","350/1","352/0","365/0","398/1","400/1","420/1","420/3","475/8","477/0","483/0","518/0","551/1","552/0","574/0","585/1","603/0","606/0","624/1","628/2","633/1","642/0","642/3","651/2","670/0","675/0","688/1","694/0","695/0","708/2","718/4","738/0","741/1","751/1","751/3","751/4","755/2","759/0","761/0","761/1","763/0","790/4","796/6","798/0","800/5","800/6","800/7","800/10","807/1","809/3","843/0","846/4","852/0","893/4","893/5","894/3","909/1"],"_interface":["1/0","3/0","4/0","7/1","16/0","42/0","77/0","160/0","335/1","345/0","349/1","352/0","398/0","398/1","398/2","399/0","400/0","401/0","402/0","403/0","404/0","405/0","406/0","407/0","408/0","409/0","410/0","411/0","412/0","413/0","414/0","415/0","416/0","418/0","419/0","432/0","515/1","753/1","754/1","766/1","860/3","879/0","879/1","905/0"],"_ethers":["1/0","38/0","67/0","69/0","70/0","78/0","79/0","100/0","129/0","129/4","133/0","134/8","141/0","144/0","149/0","154/0","158/0","160/1","162/0","163/1","167/0","177/0","179/0","180/0","190/0","194/0","195/0","202/0","203/0","204/0","204/1","211/2","310/0","327/1","332/0","333/0","334/0","335/0","336/0","343/0","351/0","352/0","362/0","363/0","364/0","365/0","371/0","372/0","376/0","377/0","379/0","380/0","384/0","385/0","396/0","397/0","400/2","400/0","436/0","437/0","438/0","439/0","440/0","441/0","442/0","451/0","473/0","476/2","476/4","478/1","478/2","478/3","487/0","488/0","489/0","490/0","491/0","492/0","493/0","494/0","495/0","496/0","497/0","498/0","499/0","500/0","501/0","502/0","503/0","504/0","505/0","506/0","507/0","508/0","509/0","510/0","511/0","512/0","513/0","514/0","518/0","519/0","520/0","521/0","522/0","523/0","524/0","525/0","526/0","528/0","529/0","560/0","561/0","562/0","563/0","564/0","565/0","566/0","567/0","568/0","569/0","571/1","572/0","580/0","581/0","582/0","584/0","588/0","589/0","590/0","604/0","605/0","606/0","608/0","608/2","609/0","614/0","626/0","649/1","650/0","651/0","652/0","653/0","654/0","655/0","656/0","663/0","664/0","665/0","666/0","670/0","671/0","672/0","673/0","675/0","677/0","678/0","679/0","680/0","681/0","685/0","686/0","687/0","688/0","689/0","690/0","691/0","693/0","694/0","695/0","717/0","718/0","719/0","720/0","741/0","741/1","742/0","743/0","744/0","745/0","746/0","747/0","748/0","749/0","750/0","751/2","757/0","759/0","766/0","766/1","807/1","809/0","809/3","810/0","810/3","812/0","813/0","813/1","816/0","817/0","822/0","854/0","855/0","863/1","863/2","867/0","867/1","870/0","872/0","877/0","882/0","883/0","884/0","885/0","887/1","887/2","889/0","893/1","894/0","894/1","894/4"],"_signer":["1/0","2/0","3/0","6/0","9/0","12/3","12/4","12/0","17/1","18/0","31/1","31/3","38/0","43/1","44/0","46/3","46/4","46/0","58/0","59/0","70/0","71/0","72/0","73/0","74/0","75/0","75/1","76/1","139/0","140/0","169/0","172/0","173/0","174/0","175/0","176/0","177/0","204/1","310/0","310/2","311/0","312/0","313/1","313/0","314/0","315/0","316/0","317/0","318/0","319/0","320/0","321/0","322/0","324/0","325/0","326/0","328/0","328/1","328/2","329/4","329/0","330/3","330/0","331/0","342/0","342/1","343/0","344/0","631/2","780/0","857/1","858/4","885/0"],"_consumes":["2/0","790/4","841/0","846/4"],"_output":["2/0","83/0","117/0","120/0","125/0","131/1","359/0","361/0","365/0","383/0","395/0","479/1","625/0","644/0","645/0","646/0","647/0","648/0","667/0","684/0","763/2","785/1","817/1","818/0","833/1","839/5"],"_solidity":["2/0","30/3","357/0","359/0","365/0","386/0","399/1","400/1","432/5","556/0","579/0","580/0","581/0","582/0","668/0","800/0","800/2","800/18","860/6","891/0","893/5","897/2","909/0"],"_compiler":["2/0","357/0","359/0","400/1","860/6"],"_extracting":["2/0"],"_abi":["2/0","16/0","26/1","28/0","31/5","38/0","42/0","54/0","63/0","349/0","351/0","352/0","353/0","354/0","355/0","356/0","357/0","358/0","359/0","359/1","359/2","360/0","367/0","398/0","399/2","400/0","400/1","400/2","417/1","432/1","579/0","632/1","860/3","860/4","860/5","860/6","868/0","893/5","903/2","905/0","906/0"],"_from":["2/0","19/0","28/8","30/3","47/0","55/1","58/0","59/0","64/1","64/0","86/0","90/0","93/0","110/0","161/3","173/0","179/2","186/0","191/0","194/0","198/2","202/2","204/0","208/1","209/0","210/0","241/2","266/0","281/0","282/1","296/0","310/2","319/0","320/0","327/2","329/3","329/4","333/0","334/0","335/0","336/0","350/1","351/1","351/2","359/0","363/1","371/0","376/0","379/0","384/0","396/0","400/0","413/0","414/0","415/0","416/0","426/0","431/0","434/1","442/0","450/1","451/0","462/0","476/3","479/1","498/0","521/0","534/0","535/0","536/0","537/0","552/0","571/2","572/0","583/2","588/0","589/0","590/0","624/0","624/1","628/3","653/0","661/1","682/0","694/0","707/0","708/1","708/2","714/1","717/0","719/0","732/0","751/5","767/0","774/1","819/0","824/1","839/5","854/0","855/1","860/6","868/0","871/4","872/0","874/1","875/2","876/0","882/0","883/0","887/1","893/3","893/4","895/0","899/0"],"_it":["2/0","14/1","27/1","28/1","30/1","30/2","30/3","31/0","32/0","35/0","40/1","58/3","65/1","66/1","71/0","71/3","81/0","85/1","99/0","110/1","124/0","129/1","129/3","134/5","136/3","141/0","142/3","144/3","145/1","151/1","155/1","161/0","161/1","161/2","161/6","163/0","163/1","167/2","177/0","177/3","179/1","185/1","187/1","189/1","192/0","194/0","202/2","233/0","242/2","260/0","271/0","280/0","287/2","288/0","297/0","299/1","299/3","306/0","309/0","310/2","310/4","323/0","323/1","323/5","327/1","327/2","328/0","329/2","329/3","329/4","330/3","334/1","341/1","342/1","348/1","366/0","373/1","375/1","382/1","389/3","399/3","420/2","432/1","434/1","435/2","436/1","452/0","476/0","476/2","476/5","477/1","478/3","482/0","486/0","515/0","519/0","521/0","532/0","570/4","571/1","571/2","585/1","608/1","624/2","628/2","642/3","658/1","659/1","661/2","663/2","666/0","668/1","671/1","672/0","675/1","682/0","688/0","713/2","713/3","718/3","718/4","719/0","720/0","746/0","751/5","756/0","756/2","766/1","769/0","771/0","777/5","789/0","791/0","798/0","800/6","800/15","805/2","806/0","808/2","810/0","810/1","813/1","814/1","816/2","822/1","823/2","823/3","831/0","832/0","833/2","835/1","846/0","852/1","855/0","855/1","858/3","860/1","860/4","866/1","867/1","872/1","873/0","874/0","877/5","879/1","884/1","885/1","886/1","892/1","895/0","899/1","909/1"],"_allowing":["2/0","29/4","36/0","67/0","351/2","762/2","823/1"],"_various":["2/0","143/0","227/2","231/0","359/1","398/0","399/3","477/2","479/1","570/0","574/0","618/0","812/0","813/1","854/0","893/4","904/0"],"_formats":["2/0","349/0","355/0","361/0","399/3","433/0"],"_solc":["2/0","893/5"],"_has":["2/0","10/0","12/1","26/0","31/1","46/1","68/0","122/0","129/3","134/3","134/8","161/4","161/6","177/1","179/3","208/0","224/0","227/1","228/0","228/1","229/2","230/1","230/2","240/0","271/0","288/0","289/1","290/1","291/1","294/0","294/1","297/0","318/0","327/2","348/1","359/1","390/0","435/1","476/0","477/2","482/0","483/0","516/2","516/3","551/5","552/1","571/2","608/1","622/0","626/0","627/1","641/0","642/0","680/2","683/1","696/0","753/0","754/0","790/2","805/0","809/0","821/0","826/0","827/0","828/0","829/0","830/0","851/2","867/1","873/0","874/1","875/0","875/2","876/0","879/0","879/1","893/1","894/3","895/1"],"_emitted":["2/0","65/1","242/1","271/0","304/0","400/1"],"_over":["2/0","184/1","187/0","475/5","476/1","477/2","642/1","724/0","777/5","797/2","809/0","820/0","864/2","868/0","874/0","893/1"],"_its":["2/0","10/1","26/0","28/1","129/4","134/5","161/6","200/1","268/0","310/4","323/0","361/0","378/1","420/1","420/3","528/0","529/0","602/0","605/0","627/1","632/0","643/0","668/0","668/1","674/0","683/0","684/0","696/0","762/2","793/0","800/8","824/1","826/0","827/0","828/0","829/0","830/0","844/0","845/0","860/4","867/0","876/0","893/1","893/5","895/1","898/0"],"_life":["2/0","328/1","799/0"],"_fromsolidity":["2/0"],"_compileroutput":["2/0"],"_returns":["3/0","8/0","9/0","11/0","12/0","20/1","28/1","31/0","33/0","34/0","45/0","46/0","48/1","55/0","56/0","57/0","60/0","61/0","64/0","82/0","96/0","97/0","98/0","99/0","134/4","162/0","169/0","170/0","174/0","175/0","185/1","202/0","205/0","206/0","207/0","208/0","212/0","217/0","218/0","219/0","220/0","221/0","222/0","223/0","224/0","225/0","226/0","227/0","228/0","230/0","230/1","237/0","238/0","243/0","313/0","314/0","315/0","316/0","317/0","318/0","319/0","320/0","321/0","322/0","324/0","325/0","333/0","364/0","371/0","406/0","407/0","411/0","412/0","413/0","414/0","415/0","416/0","436/0","437/0","438/0","439/0","441/0","442/0","451/0","453/0","454/0","455/0","456/0","457/0","458/0","459/0","460/0","462/0","463/0","464/0","465/0","466/0","467/0","468/0","469/0","470/0","471/0","472/0","473/0","487/0","488/0","489/0","494/0","495/0","497/0","498/0","499/0","500/0","518/0","519/0","521/0","534/0","535/0","536/0","537/0","539/0","540/0","541/0","542/0","543/0","544/0","545/0","546/0","547/0","548/0","549/0","552/0","561/0","562/0","563/0","564/0","565/0","569/0","573/0","574/0","575/0","576/0","577/0","578/0","580/0","581/0","582/0","606/0","610/0","632/1","655/0","662/0","663/0","664/0","665/0","670/0","671/0","672/0","673/0","675/0","720/0","735/0","736/0","737/0","738/0","877/4","877/6","901/0","902/0"],"_with":["3/0","7/1","8/0","9/0","10/1","11/1","13/0","26/1","28/1","31/3","31/5","33/0","34/0","39/0","45/1","55/1","68/0","69/0","70/0","74/0","75/1","76/1","134/7","144/0","144/3","145/1","149/0","149/2","150/0","151/1","154/0","155/1","162/4","166/0","177/4","179/1","189/1","194/0","210/0","211/3","227/0","231/1","241/1","260/0","262/0","271/0","294/3","294/4","297/1","299/3","310/4","319/0","320/0","321/0","325/0","326/0","328/1","329/1","333/0","334/1","341/1","350/0","350/1","363/0","398/0","398/1","399/0","399/1","399/3","414/0","434/0","435/0","435/1","453/0","454/0","455/0","456/0","457/0","458/0","459/0","460/0","461/1","462/0","463/0","475/0","475/1","476/2","479/0","480/0","480/1","492/0","494/0","495/0","499/0","518/0","519/0","521/0","532/0","537/0","539/0","540/0","541/0","542/0","543/0","545/0","551/1","565/0","568/1","570/2","570/3","578/0","588/0","598/0","602/0","615/0","616/0","617/0","628/0","628/2","636/0","642/3","643/3","649/1","658/1","659/1","661/0","667/1","668/0","668/1","674/1","680/0","681/0","685/0","693/0","695/0","713/2","714/1","718/0","719/0","725/0","740/0","751/0","751/6","752/1","753/1","754/1","758/0","766/0","766/1","768/0","769/0","774/1","785/0","785/1","786/0","792/0","793/0","794/0","797/1","798/8","800/10","807/1","810/1","815/2","816/2","817/2","825/1","833/1","833/2","839/0","839/1","839/3","842/0","844/0","846/2","846/4","846/5","858/0","860/1","860/2","860/3","867/0","867/1","868/1","871/4","877/2","877/3","886/1","893/4","893/5","894/6","904/1","910/0"],"_same":["3/0","7/1","35/3","136/3","150/1","184/2","330/1","400/2","437/1","477/1","551/5","619/0","655/1","680/1","688/0","690/1","819/1","844/1","877/7","887/0"],"_but":["3/0","12/0","27/1","28/8","35/1","46/0","117/0","120/0","135/1","141/0","160/1","177/0","177/4","185/2","200/1","225/1","226/1","271/0","310/2","329/0","330/0","342/1","413/1","415/1","478/4","479/1","515/1","583/0","602/0","602/1","607/0","628/3","636/0","642/0","661/1","680/1","684/0","686/0","688/1","690/0","709/2","768/0","798/8","800/1","800/15","804/1","805/0","806/3","808/0","808/2","809/1","809/2","810/0","813/0","824/0","837/0","847/0","854/0","860/6","871/3","887/0","892/0","903/0"],"_different":["3/0","168/0","477/1","680/1","688/0","713/1","887/0","887/1","893/4"],"_connect":["3/0","12/0","46/0","150/0","162/3","167/0","174/0","312/0","339/0","628/3","721/0","868/0"],"_this":["5/1","6/0","7/1","8/0","9/0","11/1","12/1","12/4","13/0","14/0","14/1","15/0","16/0","17/0","17/1","18/0","22/0","23/0","24/0","25/0","28/8","29/1","29/2","29/4","29/5","30/1","31/1","31/5","35/1","35/2","35/3","39/0","40/0","40/1","41/0","42/0","43/0","43/1","44/0","45/1","46/1","46/4","50/0","51/0","52/0","53/0","55/0","55/1","56/0","58/2","58/3","59/1","62/1","67/1","75/1","76/1","85/1","87/0","88/0","89/0","91/0","92/0","93/0","94/0","95/0","99/0","101/0","102/0","103/0","105/0","106/0","108/0","109/0","111/0","111/1","114/0","115/0","116/0","118/0","123/0","128/0","129/0","131/1","134/1","134/4","134/6","136/2","138/0","142/2","161/6","163/3","169/0","170/0","171/1","173/0","177/1","177/2","182/1","183/0","185/1","186/0","186/1","187/1","188/0","189/0","190/0","192/0","194/1","196/0","198/0","199/0","200/0","200/1","201/2","204/0","204/2","208/1","211/1","215/0","221/0","224/1","225/2","227/1","227/3","230/1","230/2","231/1","232/0","233/0","234/1","235/0","236/0","241/1","242/1","244/1","247/1","249/0","250/0","252/0","253/0","254/0","254/1","255/1","256/0","256/1","256/2","257/0","258/0","259/0","259/1","260/0","261/0","262/0","263/0","269/0","270/0","271/0","272/0","273/0","274/0","275/0","276/0","277/0","278/0","280/0","281/0","282/0","282/1","283/0","284/0","286/0","287/0","287/2","289/0","289/1","290/0","290/1","291/0","291/1","292/0","295/0","295/1","296/0","297/0","298/0","299/1","300/0","301/0","302/0","303/0","304/0","305/0","306/0","307/0","307/1","308/0","309/1","312/0","313/1","313/2","315/0","316/0","318/0","318/1","319/0","320/0","322/0","322/1","323/2","323/3","323/5","324/1","324/2","325/0","325/1","327/0","328/1","329/0","329/1","330/0","330/1","330/2","333/2","335/1","337/0","338/0","338/1","340/0","344/0","345/0","346/0","347/0","349/1","350/1","355/0","362/0","363/0","363/1","364/0","365/0","368/0","368/1","369/0","369/1","370/0","373/0","374/0","375/0","378/0","381/0","381/2","382/0","387/1","388/1","388/2","389/2","390/1","391/1","392/1","393/1","398/2","413/1","415/1","420/2","435/2","444/0","470/1","474/0","475/6","475/7","477/2","478/1","478/3","530/3","550/1","551/5","556/0","571/0","572/1","585/0","586/0","587/0","591/0","592/0","593/1","594/2","595/0","596/0","597/0","597/1","598/1","599/0","599/1","599/2","600/0","600/1","600/2","601/0","602/1","608/3","608/4","615/1","619/1","621/0","621/1","624/1","624/2","627/1","628/1","628/2","631/1","632/1","633/1","634/1","638/1","638/3","642/1","642/3","643/1","643/2","643/3","649/0","653/1","655/1","657/0","658/0","659/0","661/2","663/2","674/0","674/1","678/1","679/1","684/1","686/1","687/2","688/2","689/0","690/0","690/1","691/1","694/0","695/0","697/0","698/0","699/0","700/0","701/0","702/0","703/0","705/1","708/1","708/2","711/1","713/1","714/1","716/1","718/2","732/0","733/0","734/0","739/1","759/1","759/2","760/0","761/1","762/1","762/3","763/1","763/2","764/1","770/0","774/1","777/5","777/6","777/8","778/0","779/0","780/0","781/0","781/1","782/0","782/1","783/0","784/0","785/1","788/0","789/0","793/1","796/3","796/5","796/6","797/2","798/7","798/8","800/0","800/1","800/5","800/6","800/12","804/0","804/1","805/0","805/2","805/3","806/0","806/2","806/5","808/2","809/3","813/0","813/1","813/2","815/0","815/1","815/4","815/5","815/8","816/1","818/1","821/3","823/1","823/2","844/1","852/1","856/0","860/2","860/3","860/4","864/1","869/0","871/1","871/2","872/0","872/2","874/1","877/5","877/7","883/0","887/2","894/4","895/1","903/0"],"_use":["5/1","6/0","28/8","29/1","29/2","31/3","100/2","119/0","127/0","134/1","136/1","142/3","160/1","160/2","161/0","164/1","192/0","193/0","199/2","200/1","211/1","223/0","231/0","256/0","283/0","299/2","311/1","335/2","339/0","349/1","398/2","440/0","443/0","450/1","475/0","476/6","478/1","566/0","567/0","593/1","594/2","598/1","599/2","600/2","663/2","722/0","722/2","723/0","723/2","739/1","766/0","768/0","768/2","780/0","781/0","782/0","783/0","784/0","804/0","806/0","812/0","813/2","816/2","819/0","821/1","822/0","841/1","853/0","857/0","859/0","860/1","860/5","860/6","864/0","867/1","871/1","871/4","877/3","893/1"],"_string":["5/0","13/0","14/0","29/3","39/0","40/0","57/0","80/0","83/0","89/0","90/1","92/0","95/0","103/0","105/0","108/0","113/0","119/0","121/0","123/0","144/1","149/1","149/2","154/1","170/0","175/0","188/0","193/0","206/0","207/0","213/0","214/0","215/0","216/0","217/0","218/0","219/0","225/0","244/1","245/1","247/0","249/0","250/0","251/0","254/0","258/0","259/0","261/0","264/0","265/0","268/0","270/0","273/0","274/0","275/0","276/0","280/0","281/0","285/0","290/0","293/0","295/0","296/0","297/0","299/0","301/0","302/0","303/0","313/0","319/0","321/0","322/0","323/0","323/2","323/5","324/0","326/0","337/0","340/0","341/0","344/0","346/0","347/0","351/1","353/0","354/0","359/1","359/2","359/0","362/0","363/1","363/0","364/0","365/0","368/0","369/0","371/0","375/0","376/0","379/0","382/0","384/0","386/1","387/2","387/0","388/0","389/3","389/0","396/0","400/0","400/1","405/1","405/0","408/0","409/0","410/0","412/0","413/0","423/0","424/0","425/0","428/0","429/0","430/0","436/0","437/0","439/0","440/0","441/0","442/0","445/0","471/0","472/0","475/8","482/0","483/0","489/0","490/0","491/0","492/0","496/0","497/0","498/0","499/0","500/0","501/0","506/0","507/0","508/0","515/2","515/3","517/0","518/0","519/0","520/0","521/0","524/0","526/0","528/0","536/0","546/0","547/0","551/0","551/1","556/0","560/0","561/0","562/0","563/0","564/0","565/0","566/0","567/0","568/0","569/0","573/0","575/0","576/0","577/0","580/0","581/0","582/0","585/0","586/0","587/0","591/0","592/0","593/0","594/0","595/0","597/0","598/0","601/0","604/0","605/0","622/0","626/0","634/2","657/0","658/0","659/0","661/0","663/0","664/0","665/0","666/0","667/0","668/0","668/1","670/0","671/0","674/1","675/0","683/0","688/0","689/0","694/0","697/0","705/0","706/0","707/0","714/0","715/0","718/0","721/0","722/0","723/0","726/0","734/0","735/0","737/0","738/0","739/0","760/0","768/0","784/0","792/0","793/0","794/0","800/12","800/15","800/16","800/17","878/0","889/0","897/1","901/0"],"_hex":["5/0","80/0","89/0","175/0","206/0","207/0","225/0","244/1","250/0","251/0","254/0","261/0","268/0","270/0","274/0","275/0","276/0","285/0","290/0","293/0","301/0","302/0","303/0","319/0","324/0","340/0","347/0","353/0","408/0","409/0","410/0","412/0","413/0","472/0","482/0","483/0","489/0","490/0","491/0","492/0","496/0","497/0","498/0","499/0","500/0","507/0","528/0","546/0","560/0","561/0","562/0","563/0","564/0","565/0","568/0","569/0","576/0","577/0","580/0","581/0","582/0","591/0","592/0","593/0","594/0","598/0","604/0","605/0","657/0","658/0","659/0","661/0","665/0","666/0","671/0","705/0","714/0","715/0","718/0","739/0","901/0"],"_datahexstring":["5/0","28/6","80/0","89/0","108/0","132/1","175/0","206/0","207/0","225/0","250/0","251/0","254/0","261/0","268/0","270/0","274/0","275/0","276/0","285/0","290/0","293/0","301/0","302/0","303/0","319/0","324/0","340/0","347/0","353/0","408/0","409/0","410/0","411/1","412/0","413/0","434/0","472/0","481/0","482/0","485/0","488/0","489/1","491/0","496/0","497/0","498/0","500/0","502/0","507/0","528/0","529/1","560/0","561/0","562/0","563/0","564/0","565/0","568/0","569/0","576/0","577/0","580/0","581/0","582/0","591/0","592/0","593/0","594/0","598/0","604/0","605/0","657/0","658/0","659/0","661/0","665/0","666/0","671/0","705/0","714/0","715/0","718/0","739/0","901/0"],"_if":["6/0","8/1","9/2","11/1","14/1","15/0","17/0","17/1","18/0","20/1","25/1","28/1","28/3","29/0","29/3","30/3","31/4","31/5","35/2","37/2","40/1","41/0","43/0","43/1","44/0","45/1","48/1","53/1","58/2","64/1","64/2","71/2","71/3","89/0","96/0","97/0","98/0","99/0","125/2","140/1","140/2","144/2","145/0","151/0","155/0","160/1","161/6","162/1","163/2","167/1","167/2","169/1","176/0","177/4","180/1","180/3","184/2","185/1","186/1","201/1","202/1","202/2","204/0","206/1","213/1","214/1","227/0","227/1","227/3","228/0","230/1","235/1","236/1","237/1","240/1","243/0","245/2","247/1","262/0","265/2","271/0","287/1","289/1","290/1","291/1","294/1","294/2","295/1","297/0","308/0","309/0","312/0","314/0","322/1","323/0","323/1","323/5","324/2","325/1","327/1","329/2","329/3","329/4","330/2","330/3","333/1","334/1","336/1","336/3","339/0","341/1","348/1","351/2","381/2","405/1","414/1","420/1","420/3","432/1","434/1","436/1","438/0","441/0","464/0","465/0","466/0","467/0","468/0","469/0","470/1","473/0","476/6","478/3","486/1","486/2","487/0","488/0","489/0","489/1","495/1","498/1","500/1","519/0","521/0","544/0","549/0","553/0","571/1","590/1","596/0","597/0","597/1","606/0","608/4","619/0","620/0","621/0","622/1","623/0","628/3","632/1","638/1","639/2","642/2","643/1","643/3","650/0","662/0","671/1","675/1","703/1","709/2","713/2","718/1","718/2","718/4","718/5","732/0","733/0","766/1","768/2","772/1","777/1","777/6","777/8","781/1","782/1","784/1","789/0","790/1","791/0","793/1","796/5","798/4","798/5","798/6","800/15","800/16","806/2","806/4","813/0","813/2","815/6","815/8","823/3","833/2","835/0","839/2","839/4","844/1","849/1","851/2","860/2","872/2","875/1","877/6","892/1","894/3","894/4","900/0","900/1"],"_any":["6/0","26/0","27/1","28/7","28/8","28/0","31/2","31/3","35/1","35/0","37/2","64/1","64/2","117/0","120/0","121/1","122/0","133/0","134/7","136/3","164/1","171/0","177/4","187/2","191/0","192/0","198/0","204/2","211/0","218/0","219/0","225/1","239/0","240/1","241/2","242/0","245/0","264/0","265/0","265/2","287/1","301/0","310/4","324/1","329/1","329/2","330/1","338/0","359/2","362/0","375/1","382/1","391/1","420/2","432/0","435/2","436/2","438/0","443/1","475/5","480/0","483/0","502/1","504/0","552/1","570/2","574/0","578/0","583/3","602/1","624/1","634/2","648/0","651/0","653/0","654/0","655/0","666/1","675/1","682/0","693/0","694/0","695/0","709/2","719/0","720/0","756/1","761/0","762/2","777/5","777/8","792/0","796/5","798/4","798/6","809/3","815/6","819/0","823/3","839/5","844/0","860/5","868/0","871/1","871/3","871/4","872/2","875/1","893/0","894/1","897/1"],"_instances":["6/0","450/0","533/0","572/1","874/0","878/0"],"_blockchain":["6/0","10/0","27/0","27/1","30/1","62/2","142/0","203/0","244/0","338/0","413/1","476/2","558/0","583/3","638/0","752/1","755/2","797/0","859/0","860/0","867/0"],"_return":["7/0","12/1","12/4","19/0","20/0","21/0","27/0","29/0","29/1","30/2","31/5","35/0","37/0","46/1","46/4","47/0","48/0","49/0","58/1","79/0","80/0","177/4","192/0","227/3","329/1","330/1","405/0","408/0","409/0","410/0","434/2","443/2","478/0","501/0","502/0","503/0","504/0","523/0","524/0","525/0","526/0","588/0","589/0","590/0","602/0","603/0","660/0","684/1","739/0","791/0","793/0","794/0","830/1","877/7","900/0"],"_attached":["7/0","9/0","11/0","14/0","40/0","45/0","211/0"],"_address":["7/0","7/1","9/0","11/0","13/0","14/0","14/1","38/0","39/0","40/0","40/1","45/0","64/1","64/2","64/0","134/3","147/0","165/0","169/0","205/0","206/0","207/0","208/0","208/1","211/1","211/2","213/0","214/0","214/1","216/0","217/0","217/1","240/0","240/1","241/1","249/0","258/0","264/0","273/0","280/0","281/0","282/1","295/0","296/0","297/0","297/1","313/0","319/0","320/0","321/0","328/1","329/4","337/0","342/2","343/0","344/0","346/0","389/2","424/2","430/2","432/4","434/0","434/1","434/2","435/0","435/1","435/2","435/3","436/0","436/1","436/2","437/0","438/0","439/0","440/0","441/0","442/0","506/0","578/0","595/0","663/0","663/2","664/0","697/0","706/0","707/0","708/2","784/0","784/1","809/4","875/0","875/1","875/2","904/0"],"_using":["7/1","29/3","29/4","30/3","38/0","58/1","75/1","76/1","100/0","117/0","120/0","124/0","125/0","127/0","132/0","132/1","150/0","163/1","167/0","167/2","176/0","177/2","201/2","204/0","213/0","225/0","310/4","319/0","323/5","325/0","326/0","327/1","331/0","333/2","341/0","361/0","363/1","398/3","400/1","435/0","504/0","523/0","524/0","525/0","526/0","550/1","565/0","571/1","572/1","579/0","587/0","601/1","621/1","642/0","655/1","661/2","672/0","673/0","718/4","720/0","738/0","751/1","752/4","756/1","768/0","769/0","780/0","790/4","796/6","800/12","806/5","807/3","815/1","816/0","840/0","846/1","893/4","893/5","894/2","894/4","904/0"],"_constructor":["7/1","8/0","9/0","14/1","17/0","18/0","26/1","40/1","43/0","44/0","150/1","367/1","369/2","370/0","374/0","375/0","376/0","377/0","382/0","404/0","410/0","450/0","533/0","653/0","860/4","874/0","875/1"],"_signerorprovider":["7/1"],"_passed":["7/1","8/0","9/0","54/0","63/0","116/0","164/1","342/2","359/2","411/0","426/0","552/1","634/2","637/0","760/0","767/0","776/0","780/0","790/4","875/1"],"_in":["7/1","12/1","12/3","28/2","28/3","30/0","31/3","31/5","35/2","36/0","37/2","38/0","46/1","46/3","55/1","66/0","67/0","68/0","70/0","71/3","75/1","76/1","85/1","102/0","109/0","118/0","126/0","129/1","129/3","130/0","131/0","131/1","133/0","134/0","134/3","134/5","134/7","134/8","140/1","141/0","144/2","145/0","151/0","155/0","161/0","161/6","166/0","168/0","177/1","179/0","185/0","185/2","187/1","192/0","203/0","211/2","213/0","220/1","223/0","227/3","230/2","239/0","242/3","244/0","257/0","260/0","265/2","271/0","272/0","274/0","277/0","278/0","284/0","286/0","289/0","290/0","291/0","294/0","297/0","298/0","299/1","301/0","302/0","305/0","306/0","307/0","308/0","309/1","310/0","318/1","322/1","323/0","323/2","323/5","324/2","327/2","329/0","330/0","330/1","351/0","362/1","401/0","402/0","403/0","422/0","427/0","432/0","432/5","435/2","438/0","443/0","444/0","475/2","475/3","475/5","475/6","476/3","478/2","480/0","480/1","486/2","493/0","495/0","496/0","497/0","498/0","515/0","515/1","515/2","516/2","516/3","517/0","530/0","532/0","548/1","550/1","551/1","551/5","552/1","554/0","571/2","574/1","580/0","581/0","582/0","584/0","601/1","608/1","608/3","609/0","624/1","626/0","628/3","633/1","634/2","638/0","638/2","641/0","643/2","649/0","649/1","650/0","653/1","663/2","668/0","668/1","668/2","676/0","682/0","684/0","684/1","688/1","702/0","703/1","710/0","711/1","712/0","716/1","726/0","731/0","741/1","756/0","760/0","762/2","764/1","767/0","772/1","774/1","776/0","777/0","785/0","785/1","792/0","794/0","796/0","796/3","797/0","797/1","798/1","798/2","798/4","798/5","798/6","798/7","800/0","800/6","800/13","800/14","800/16","806/5","807/1","807/2","807/3","808/0","808/2","809/2","809/3","809/4","810/2","812/0","814/0","816/2","817/2","818/0","819/0","820/0","821/3","822/0","823/1","823/3","825/2","826/0","826/1","827/0","827/1","828/0","829/0","831/0","832/0","847/0","850/0","855/1","858/0","860/3","860/4","860/6","861/0","864/2","866/1","868/0","871/1","871/2","871/4","872/0","876/0","877/0","877/3","884/0","885/0","885/2","887/1","889/0","893/2","893/4","894/0","894/6","895/0","895/1","896/0","897/1","899/2","899/3","903/0","903/1"],"_when":["7/1","23/0","24/0","51/0","52/0","55/1","62/0","70/0","127/0","132/0","134/2","134/4","135/1","161/2","163/4","174/0","177/0","179/2","231/0","259/0","271/0","342/1","350/0","351/2","352/0","365/0","378/1","432/0","475/0","476/2","478/3","515/0","515/1","515/2","515/3","579/0","608/3","615/1","627/1","633/1","642/0","642/1","643/0","667/1","676/0","679/1","683/0","751/1","762/0","790/4","796/4","797/0","798/0","818/0","818/1","823/0","846/3","850/0","860/4","877/2","877/4","877/7","882/0","887/2","893/3","894/4","899/0"],"_creating":["7/1","38/0","189/1","350/0","378/1","450/0","515/0","533/1","533/0","756/0","812/0","813/0","874/0","877/7","899/0"],"_attach":["7/0","11/0","45/0"],"_unsigned":["8/0","34/0","61/0","551/1","551/5","696/0","697/0","698/0","699/0","700/0","701/0","702/0","703/0","706/0","718/1","910/0"],"_which":["8/0","9/0","10/1","12/1","12/4","15/0","26/0","27/0","28/8","29/1","30/3","34/0","36/0","38/0","41/0","46/1","46/4","54/0","58/3","61/0","63/0","64/0","67/1","68/0","69/0","70/0","81/0","85/1","107/0","108/0","110/3","126/0","129/0","131/0","134/1","134/5","135/0","135/1","136/4","141/0","142/0","142/1","144/2","145/0","149/2","151/0","155/0","160/1","163/2","163/3","163/4","169/0","172/0","174/0","175/0","177/1","178/4","185/0","194/0","195/0","198/1","198/2","199/1","201/0","204/1","211/2","212/0","217/0","218/0","219/0","220/1","224/0","227/3","230/0","230/2","233/0","240/0","249/0","258/0","279/1","297/0","297/1","301/0","310/0","310/4","322/0","323/3","324/0","324/2","325/0","329/1","335/1","338/0","341/0","342/0","345/0","349/0","350/0","351/0","352/0","353/0","354/0","359/1","359/2","363/1","364/0","365/0","369/0","390/1","391/1","392/1","398/0","398/2","399/1","399/3","400/1","400/2","410/0","411/0","412/0","413/0","422/0","426/0","427/0","434/1","435/1","440/0","443/0","443/1","443/2","444/0","445/0","475/5","475/7","475/8","476/2","476/3","476/6","477/1","477/2","478/0","478/4","480/0","483/0","501/0","506/0","507/0","513/0","515/3","516/0","517/0","530/0","532/0","550/0","551/1","552/1","556/0","558/0","575/0","583/0","598/0","603/0","609/0","626/0","628/3","632/0","634/2","638/1","639/0","642/0","654/0","663/2","665/1","667/0","668/0","674/1","675/1","676/0","678/1","679/2","680/1","680/2","683/1","684/0","685/0","686/1","688/0","688/2","705/0","708/1","713/2","714/1","716/1","718/1","741/1","751/1","751/4","751/5","752/0","752/1","753/1","758/0","760/0","762/0","763/0","763/2","769/0","772/1","774/0","780/0","785/1","788/0","789/0","790/1","790/2","790/4","792/0","796/3","797/2","798/1","800/10","804/0","805/3","807/1","810/1","812/0","816/0","818/1","822/1","823/0","823/2","839/5","844/0","846/4","852/0","857/0","859/0","860/0","860/3","860/4","860/6","864/2","868/1","870/0","872/0","877/0","877/2","878/0","881/0","893/0","893/1","893/5","895/0"],"_would":["8/0","33/0","34/0","60/0","125/2","189/1","226/0","258/0","387/2","388/2","413/0","441/0","442/0","476/6","477/1","478/0","478/3","551/5","632/0","684/0","690/1","713/2","806/4","806/5","806/6","821/2","894/4"],"_args":["8/0","9/0","28/0","29/0","31/5","31/0","33/0","34/0","35/0","37/0","234/0","421/0","426/0","611/0","612/0","613/0","776/0"],"_optional":["8/1","9/2","144/0","149/0","150/0","154/0","240/0","279/1","348/0","362/0","414/0","434/0","588/0","615/0","616/0","719/0","756/1","786/0","825/1","842/0","847/0"],"_overrides":["8/1","8/0","9/2","9/0","28/7","28/8","28/0","29/6","29/0","31/2","31/3","31/0","33/0","33/1","34/0","34/1","35/4","35/0","55/0","56/0","57/0","58/0","59/0","60/0","61/0"],"_specified":["8/1","9/2","144/1","149/1","150/1","154/1","163/2","167/1","167/2","180/1","287/0","329/2","336/1","336/3","414/1","417/1","435/0","444/1","486/1","489/1","515/1","516/0","519/0","521/0","585/1","635/0","641/0","675/1","682/0","709/1","732/0","733/0","756/1","840/0","900/0"],"_they":["8/1","9/2","29/1","67/0","161/3","184/2","190/1","201/1","220/1","312/0","322/1","324/2","325/1","350/1","399/3","417/1","696/0","751/4","752/1","753/1","754/1","796/2","796/5","797/0","800/15","806/3","806/4","809/1","809/3","810/3","815/6","866/0","868/1","874/0"],"_can":["8/1","9/1","9/2","27/0","28/8","30/3","31/5","35/2","55/1","59/1","62/0","62/1","64/0","67/0","67/1","81/0","122/0","129/4","131/0","132/1","134/1","134/5","135/0","135/1","136/3","142/2","149/2","164/1","171/1","178/3","178/5","179/5","180/2","186/1","194/0","197/0","204/1","211/2","212/0","224/1","256/1","287/2","297/1","310/0","310/2","310/4","313/1","330/2","331/0","338/1","345/0","348/1","349/0","350/0","363/1","375/1","382/1","399/3","400/2","410/0","411/0","412/0","420/0","420/1","435/2","444/0","444/1","452/0","475/0","475/7","475/8","478/4","479/1","481/0","486/2","516/0","530/1","556/0","575/0","602/1","608/1","618/0","624/2","631/1","632/1","638/1","642/3","643/3","666/1","668/1","668/2","683/1","688/0","705/0","714/1","716/1","718/1","760/0","762/0","767/0","780/0","796/1","796/6","797/1","798/0","804/0","805/1","806/0","806/7","808/2","809/4","818/1","819/0","822/1","836/1","839/5","840/0","845/0","846/1","855/1","857/1","858/4","859/0","860/5","860/6","864/2","868/1","878/0","880/0","884/1","885/1","885/2","893/2","903/2"],"_used":["8/1","9/2","15/0","28/4","28/8","29/4","31/5","35/2","41/0","55/0","55/1","59/1","64/0","66/0","67/1","110/0","117/0","120/0","122/0","124/0","129/4","134/1","134/2","135/1","140/2","144/2","145/0","149/2","151/0","155/0","162/2","163/1","163/3","167/2","169/1","171/1","178/3","178/5","179/5","180/1","184/0","186/1","187/0","189/0","194/0","194/1","196/0","197/1","200/1","202/1","211/2","212/0","224/1","234/1","239/0","242/2","245/2","254/0","256/1","257/0","295/1","297/0","297/1","299/3","300/0","307/0","310/0","310/1","319/0","320/0","327/2","329/1","330/2","336/1","336/3","338/0","349/0","350/0","351/0","352/0","365/0","373/0","412/0","432/0","441/0","461/0","475/8","477/0","478/3","479/1","498/1","505/0","516/0","517/0","527/0","530/0","556/0","558/0","570/0","571/2","574/0","575/0","579/0","583/2","598/0","602/1","607/0","608/3","618/0","641/0","642/2","649/0","653/1","663/2","665/1","676/0","683/1","688/0","688/1","703/1","705/0","713/1","713/2","716/1","718/1","718/2","718/4","730/0","767/0","772/1","774/1","777/2","788/0","789/0","790/0","790/4","797/0","797/1","800/12","803/0","805/3","823/0","836/0","836/1","837/1","839/5","845/0","851/2","868/1","873/0","884/1","885/1","885/2","899/0","899/2"],"_override":["8/1","9/2","165/0","190/0","190/1","350/1"],"_endowment":["8/1","9/2","374/0"],"_value":["8/1","9/2","28/1","28/8","29/0","31/3","37/2","58/1","58/2","89/0","90/0","91/0","107/0","108/0","109/0","114/0","116/0","118/0","125/2","126/0","132/1","179/2","184/1","191/0","192/0","207/0","208/1","241/0","242/0","244/1","256/1","265/2","286/0","318/1","326/0","334/1","341/1","351/1","374/1","420/0","420/1","420/2","431/0","436/2","443/2","452/0","453/0","454/0","455/0","456/0","457/0","458/0","459/0","460/0","462/0","463/0","464/0","465/0","466/0","467/0","468/0","469/0","470/0","470/1","471/0","472/0","475/5","476/3","480/0","484/0","484/1","492/0","509/0","510/0","511/0","512/0","513/0","514/0","515/2","518/0","519/0","520/0","521/0","522/0","534/0","535/0","536/0","536/1","537/0","539/0","540/0","541/0","542/0","543/0","544/0","545/0","548/0","548/1","549/0","552/0","574/1","574/0","578/0","617/0","621/0","623/0","626/0","634/0","634/1","634/2","639/1","652/0","664/0","684/0","684/1","691/0","702/0","712/0","720/0","760/0","776/0","777/6","790/2","792/0","793/0","798/4","800/10","800/12","800/14","800/15","800/16","801/0","825/1","825/2","852/0","877/7","893/5","899/2","899/3","901/0"],"_nonce":["8/1","9/2","31/3","71/0","72/0","73/0","74/0","75/0","76/0","177/1","208/1","229/2","254/0","282/0","297/1","318/1","330/3","641/0","642/0","698/0","708/0","783/0"],"_gaslimit":["8/1","9/2","28/8","31/3","256/0","283/0","330/3","699/0","709/0","781/0"],"_or":["8/1","9/2","11/1","11/0","12/0","13/0","19/0","28/4","28/8","30/3","33/1","34/1","35/2","37/2","38/0","39/0","45/1","45/0","46/0","47/0","55/1","59/0","64/0","64/1","64/2","90/1","90/0","99/0","108/0","110/2","112/0","114/0","129/1","129/4","130/0","132/1","134/5","134/7","135/0","136/0","136/3","136/4","142/1","144/1","149/1","149/2","154/1","161/6","162/3","164/1","165/0","167/0","168/0","169/0","171/1","177/1","178/0","180/2","194/0","195/0","197/0","213/1","214/1","222/0","224/1","227/0","227/3","228/0","256/1","264/0","265/0","265/1","265/2","279/0","280/0","309/0","310/4","311/1","322/1","325/1","353/0","354/0","363/0","365/0","368/0","371/0","376/0","379/0","381/2","384/0","392/0","396/0","398/3","400/0","400/1","408/0","415/1","417/1","429/0","432/1","432/2","432/4","434/1","436/1","439/1","439/0","445/0","446/0","470/1","475/8","478/1","480/0","480/1","481/0","484/1","486/0","488/0","490/0","491/0","502/0","519/0","521/0","585/1","602/1","608/3","620/0","621/0","628/2","628/3","631/2","632/1","633/1","634/0","638/0","638/1","643/1","659/1","661/1","663/2","666/1","676/0","688/1","703/1","718/4","719/0","731/0","751/1","751/6","760/0","763/1","767/0","772/1","777/5","777/6","777/8","784/0","796/1","796/2","798/7","800/8","804/0","806/4","809/3","815/5","819/0","821/1","821/2","822/0","837/1","841/2","846/0","846/4","847/0","855/1","860/5","860/6","863/1","864/2","868/0","871/1","871/2","871/3","871/4","880/0","882/0","890/0","892/0","892/1","894/1","894/3","894/4"],"_gasprice":["8/1","9/2","28/8","31/3","284/0","330/3","700/0","709/1","710/0","782/0"],"_get":["8/0","56/0","85/0","147/0","150/0","162/0","169/0","192/0","193/0","205/0","206/0","207/0","208/0","209/0","210/0","212/0","217/0","218/0","219/0","220/1","220/0","221/0","222/0","223/0","227/0","228/0","313/0","315/0","316/0","317/0","318/0","406/0","407/0","408/0","409/0","436/0","437/0","441/0","442/0","574/0","575/0","653/0","735/0","736/0","784/0","788/0","789/0","808/2","813/1","813/2","823/2","852/0","854/0","890/0"],"_getdeploytransaction":["8/0"],"_unsignedtransaction":["8/0","34/0","61/0","696/0","697/0","698/0","699/0","700/0","701/0","702/0","703/0","706/0"],"_uses":["9/0","26/1","134/5","179/1","211/1","434/1","475/4","478/2","556/0","652/0","678/1","679/1","718/2","769/0","860/4","870/0"],"_into":["9/0","54/0","62/0","63/0","81/0","84/1","85/0","88/0","100/2","101/0","116/0","125/0","129/1","129/4","135/0","359/2","400/2","410/0","414/1","435/0","435/1","435/3","485/0","493/0","496/0","515/2","515/3","528/0","529/0","550/1","637/0","674/0","680/2","684/0","687/2","688/2","691/1","716/1","737/0","757/0","759/0","767/0","780/0","790/0","790/4","818/0","844/0","844/1","867/1","875/1","881/0","893/5","903/2"],"_once":["9/0","24/0","52/0","129/1","161/4","179/3","233/0","242/2","288/0","294/0","327/2","476/0","571/2","732/0","733/0","777/7","777/9","800/16","811/0","859/0"],"_mined":["9/0","9/1","71/5","177/3","222/0","226/1","227/1","228/0","228/1","229/0","230/0","230/1","230/2","242/1","244/1","258/0","271/0","288/0","289/0","289/1","290/0","290/1","291/0","291/1","292/0","294/1","298/0","306/0","641/0","642/0"],"_found":["9/1","603/0"],"_at":["9/1","26/0","26/1","28/8","31/3","85/0","85/1","124/1","169/0","184/2","198/1","199/1","207/0","233/0","244/1","249/0","299/3","315/0","639/1","684/1","686/1","688/2","709/1","709/2","735/0","741/0","762/1","796/1","798/4","798/8","804/1","809/1","860/4","894/6","900/0","902/0"],"_deploytransaction":["9/1","15/0","41/0"],"_no":["9/1","20/1","25/1","28/8","48/1","53/1","109/0","118/0","134/5","144/2","145/0","151/0","155/0","162/1","167/2","169/1","200/1","206/1","235/1","236/1","237/1","245/2","363/0","435/2","452/0","492/0","551/3","639/2","643/3","649/1","766/1","772/1","800/7","800/15","806/7","816/2","818/0","871/4","877/1","877/6","879/1","892/2","903/2"],"_interactions":["9/1","766/0"],"_should":["9/1","29/5","30/3","66/1","109/0","118/0","138/0","160/1","160/2","190/1","192/0","198/1","198/2","199/1","199/2","282/1","287/2","329/1","329/2","330/1","330/2","335/2","350/0","373/0","476/4","476/6","516/0","570/4","572/1","593/0","642/2","674/1","679/2","682/0","684/1","739/1","777/5","777/6","777/8","781/0","782/0","783/0","784/0","788/0","789/0","796/2","796/3","796/5","797/2","800/13","804/0","810/3","811/0","813/0","815/0","817/0","823/3","826/3","833/2","841/2","849/0","864/0","877/3","894/1"],"_made":["9/1","36/0","161/2","179/2","679/2","713/2","758/0","825/0","875/1","893/1"],"_until":["9/1","62/2","177/3","224/0","224/1","228/1","230/0","230/2","720/0","759/1","825/3","841/0","846/4"],"_promise":["9/0","14/0","19/0","28/0","29/0","31/0","33/0","34/0","35/0","40/0","47/0","55/0","56/0","57/0","58/0","59/0","60/0","61/0","171/0","175/0","176/0","198/0","205/0","206/0","207/0","208/0","209/0","210/0","212/0","213/0","214/0","217/0","218/0","219/0","220/0","221/0","222/0","223/0","224/0","225/0","226/0","227/0","228/0","229/0","230/0","279/1","280/0","281/0","282/0","283/0","284/0","285/0","286/0","287/0","294/0","313/0","313/1","315/0","316/0","317/0","318/0","319/0","320/0","321/0","322/0","324/0","325/0","326/0","330/0","334/0","341/0","578/0","654/0","719/0","720/0","776/0","777/7","777/9","784/0"],"_abstraction":["10/0","65/0","65/2","160/0","203/0","310/0","860/0","884/0","885/0","886/0"],"_been":["10/0","71/3","161/4","161/6","179/3","227/1","228/0","228/1","230/1","271/0","288/0","289/1","290/1","291/1","292/0","294/0","294/1","306/0","327/2","390/0","571/2","578/0","641/0","642/0","696/0","753/0","754/0","773/1","872/1","873/0","874/1","878/0","878/1","881/0","893/2","894/3"],"_may":["10/1","28/7","28/8","31/2","37/1","70/0","71/2","75/1","76/1","107/0","108/0","130/0","134/7","144/1","144/2","145/0","149/1","151/0","154/1","155/0","162/3","163/1","164/1","168/0","177/1","185/2","187/1","194/1","201/2","211/2","220/1","226/1","227/2","227/3","239/0","245/0","259/0","265/1","271/0","279/1","312/0","322/1","324/2","325/1","329/0","330/0","339/0","353/0","354/0","359/2","361/0","373/1","374/0","387/1","388/1","398/3","400/1","400/2","413/1","415/1","432/0","436/2","439/1","445/0","475/6","476/6","478/1","486/0","486/1","486/2","515/1","517/0","528/1","552/1","593/0","602/1","608/3","627/1","628/1","638/3","661/1","663/1","669/0","683/1","684/0","688/1","690/0","713/3","758/0","764/1","772/1","774/1","785/1","798/2","798/8","800/1","800/4","800/7","806/2","809/3","822/2","844/0","846/5","847/0","848/1","851/1","860/5","864/2"],"_sent":["10/1","31/0","161/2","163/3","177/0","208/0","208/1","227/3","279/0","282/1","318/0","628/3","642/0","708/1","708/2"],"_transactions":["10/1","65/1","71/0","71/2","71/3","178/5","208/0","209/0","210/0","257/0","260/0","261/0","262/0","263/0","282/1","287/2","298/0","299/1","307/0","309/1","310/0","310/2","318/0","318/1","331/0","415/1","631/2","642/3","708/2","884/1","885/1","885/2","903/2","910/0"],"_trigger":["10/1","31/5"],"_run":["10/1","26/0","26/1","59/0","142/1","772/1","773/1","776/0","777/9","790/4","810/3","818/0","819/0","893/2","894/1"],"_input":["10/1","55/1","370/0","421/0","426/0","515/0","667/0","774/0","809/3","864/2"],"_useful":["11/1","45/1","70/0","75/1","76/1","135/0","225/2","288/0","342/1","363/1","398/3","413/1","415/1","417/0","515/0","515/2","515/3","551/5","572/2","607/0","615/1","619/1","621/1","751/6","752/0","805/0","820/0","838/0","846/3"],"_there":["11/1","28/8","29/0","31/4","32/0","45/1","62/1","62/2","136/4","142/0","164/0","206/1","226/1","242/3","329/4","350/0","420/3","475/2","475/3","475/5","476/1","479/0","517/0","533/1","558/0","618/0","628/0","633/0","633/1","676/0","683/0","692/0","709/2","713/3","718/5","777/8","800/7","800/13","800/15","806/7","807/2","807/3","808/0","810/1","810/2","818/0","821/2","821/3","826/3","877/0","877/1","877/2","877/6","890/0","894/3","896/0","903/1","903/2"],"_are":["11/1","20/0","21/0","25/1","26/1","28/2","28/8","29/6","32/0","33/1","34/1","35/4","36/0","45/1","48/0","49/0","53/1","58/2","62/1","62/2","66/0","67/0","139/0","141/0","142/0","150/1","161/3","161/6","163/1","163/2","163/3","163/4","164/0","178/0","179/2","180/3","184/1","184/2","201/1","204/0","220/1","231/2","235/1","236/1","242/3","260/0","262/0","279/1","288/0","310/3","327/1","328/0","350/1","390/1","392/1","417/0","420/1","432/3","435/1","443/0","475/1","475/2","475/3","475/5","475/7","475/8","476/1","479/0","479/1","485/0","517/0","533/1","553/0","558/0","559/0","568/1","571/1","574/1","601/1","607/0","608/0","618/0","619/1","621/1","628/3","651/2","667/0","669/0","676/0","682/0","688/0","688/1","692/0","696/0","709/2","713/3","751/3","751/4","752/4","758/0","762/0","762/2","777/2","777/4","777/8","790/1","790/3","790/4","796/5","797/0","798/7","800/0","800/10","800/13","803/0","805/1","808/0","809/1","809/2","810/1","810/2","810/3","813/0","816/0","818/0","820/0","821/2","826/1","827/1","836/1","837/1","841/3","846/3","854/0","860/2","860/3","860/4","863/2","866/0","866/1","866/2","868/1","870/0","874/0","875/1","877/1","882/0","887/0","890/1","893/1","893/2","894/1","894/6","895/0","896/0","899/0","900/1"],"_multiple":["11/1","45/1","161/2","162/0","179/1","179/2","184/2","669/0","679/1","688/0","756/0","758/0","759/0","772/1","793/1","877/6","893/4"],"_similar":["11/1","45/1","363/0","478/3","486/0","690/0","769/0","816/2","860/2","893/6"],"_identical":["11/1","29/6","33/1","34/1","35/4","45/1","200/0","241/1","420/1","482/0","901/0"],"_copies":["11/1","45/1","871/1","871/2"],"_network":["11/1","30/1","31/0","34/0","45/1","61/0","65/0","71/2","71/3","144/0","144/1","149/0","149/1","150/0","150/1","154/0","154/1","160/0","162/0","162/1","162/3","164/1","165/0","167/0","167/2","185/2","190/0","193/0","195/0","202/0","202/2","208/1","209/0","210/0","221/0","224/0","226/0","226/1","229/0","245/1","245/2","246/0","247/0","247/1","248/0","249/0","256/1","279/0","287/1","310/0","398/2","399/0","640/0","642/0","708/1","708/2","766/0","778/0","796/0","796/3","796/4","796/5","857/1","858/4","884/0","884/1","885/1","886/0"],"_you":["11/1","45/1","62/0","71/2","142/1","142/3","144/3","145/1","151/1","155/1","165/0","204/0","310/3","327/1","339/0","478/3","478/4","571/1","608/4","628/2","628/3","751/5","752/4","756/2","757/0","768/2","796/3","803/0","811/0","813/0","813/2","815/8","817/0","818/1","819/0","822/0","822/1","822/2","823/3","855/1","859/0","860/1","860/2","860/4","860/5","860/6","868/1","872/2","890/0","894/3","894/4"],"_wish":["11/1","29/1","45/1","339/0","690/0","806/4"],"_interact":["11/1","26/1","45/1","398/0","399/0","461/1","752/1","904/1"],"_each":["11/1","28/1","45/1","84/0","126/0","161/3","163/0","168/0","179/1","179/2","201/1","232/0","234/0","261/0","262/0","265/1","307/0","353/0","354/0","359/1","361/0","367/0","370/0","398/1","399/3","411/1","420/0","480/0","480/1","528/1","530/1","570/3","608/1","639/2","642/3","661/2","674/0","674/1","708/1","733/0","737/0","751/1","751/2","751/5","756/1","756/2","758/0","759/0","777/0","777/4","788/0","789/0","798/2","798/3","800/8","806/3","815/10","817/2","825/0","834/1","835/0","841/2","842/0","893/5","895/1","898/0","899/2","899/3"],"_them":["11/1","45/1","71/3","142/1","443/2","790/2","806/2","826/1","827/1","892/0"],"_name":["11/0","13/0","14/1","28/1","28/0","29/0","31/5","31/0","33/0","33/1","34/0","34/1","35/0","37/0","39/0","40/1","45/0","100/1","113/0","122/0","123/0","124/0","144/1","149/1","154/1","164/1","211/0","211/1","211/2","212/0","213/1","214/0","214/1","215/0","232/0","233/0","234/0","235/0","236/0","237/0","238/0","245/1","245/2","247/0","247/1","280/0","321/0","327/2","327/0","330/3","368/0","387/0","420/1","420/2","420/3","423/0","428/0","432/1","517/0","556/0","569/0","570/3","571/2","571/0","578/0","617/0","634/1","652/0","740/0","784/0","790/2","791/0","792/0","793/0","794/0","816/2","846/2","846/4","846/5","850/0","875/0","875/1","875/2","876/0","887/0","898/0"],"_addressorname":["11/0","45/0","784/0"],"_connected":["12/0","38/0","46/0","144/0","149/0","154/0","158/0","161/1","162/0","167/0","172/0","180/0","188/0","202/0","221/0","310/4","316/0","325/1","332/0","338/0","339/0","631/2"],"_providerorsigner":["12/0","38/0","46/0"],"_passing":["12/1","12/3","46/1","46/3","234/0","550/1","631/2","761/1","807/1"],"_provider":["12/1","12/0","17/0","17/1","38/0","43/0","43/1","46/1","46/0","70/0","74/0","140/0","142/3","143/0","144/1","144/0","147/0","148/0","149/1","149/0","150/0","153/0","154/0","157/0","158/0","160/0","160/2","161/0","162/0","166/0","167/0","169/0","170/0","171/0","173/0","177/0","177/2","179/0","179/5","180/1","180/2","180/3","180/0","181/0","182/0","183/0","184/0","185/0","185/1","186/0","186/1","187/0","188/0","189/1","189/0","190/0","191/0","194/0","194/1","195/0","196/0","197/0","198/0","199/0","200/0","201/0","202/0","203/0","204/1","204/2","205/0","206/0","207/0","208/0","209/0","210/0","211/3","212/0","213/0","214/0","220/0","221/0","222/0","223/0","224/0","225/0","226/0","227/0","228/0","229/0","230/0","232/0","233/0","234/0","235/0","236/0","237/0","238/0","243/0","312/0","325/1","328/1","332/0","338/0","339/0","343/0","631/2","732/0","733/0","751/1","751/2","751/0","756/0","756/1","779/0","797/1","857/1","858/4","859/0","884/0"],"_downgraded":["12/1","46/1"],"_only":["12/1","27/0","28/7","29/0","29/6","33/1","34/1","35/3","35/4","37/1","46/1","134/5","141/0","163/2","163/4","177/0","179/3","187/1","203/0","227/3","231/1","233/0","234/1","243/0","260/0","299/1","299/3","309/1","314/0","323/1","329/3","342/1","350/1","390/1","420/3","435/1","464/0","465/0","466/0","467/0","468/0","469/0","473/0","475/2","475/5","487/0","488/0","489/0","544/0","548/1","549/0","590/1","631/2","645/0","646/0","647/0","650/0","652/0","668/2","682/0","741/1","763/2","790/4","806/0","806/5","809/3","814/0","817/2","826/3","844/1","846/2","859/0","864/0","872/0","876/0","877/4","884/1"],"_read":["12/1","27/0","28/7","29/6","33/1","34/1","35/3","35/4","46/1","96/0","203/0","342/1","632/0","652/0","800/16","824/1","859/0","884/1"],"_access":["12/1","28/8","29/4","46/1","58/3","134/7","136/0","136/1","149/2","177/4","178/3","187/1","203/0","227/2","398/2","479/0","753/4","754/4","755/2","762/3","815/1","815/6"],"_constant":["12/2","27/0","30/0","46/2","381/0"],"_calls":["12/2","28/8","46/2","65/1","171/1","330/3","574/0","631/2","852/0","875/1"],"_act":["12/4","46/4"],"_behalf":["12/4","46/4"],"_ens":["13/0","14/1","39/0","40/1","165/0","211/0","211/2","211/3","212/0","213/0","249/0","280/0","321/0","330/3","569/0","868/1","875/1","875/0","908/0"],"_was":["13/0","14/1","15/0","17/0","17/1","18/0","31/5","39/0","40/1","41/0","43/0","43/1","44/0","54/0","63/0","173/0","177/3","191/0","200/1","226/1","227/3","230/2","256/0","289/0","290/0","291/0","292/0","295/1","298/0","299/1","302/0","305/0","306/0","307/0","309/0","360/0","435/0","435/1","441/0","476/6","583/0","590/1","628/0","633/0","635/0","642/2","665/1","684/0","685/0","686/0","686/1","688/2","713/2","800/15","816/0","867/1","874/0","875/1","877/1","877/2","893/5"],"_constructed":["13/0","39/0","860/4"],"_resolve":["14/0","40/0","211/3","214/0","230/0","321/0","578/0","654/0","784/0"],"_provided":["14/1","17/0","17/1","18/0","20/1","25/1","37/2","40/1","43/0","43/1","44/0","48/1","53/1","64/1","64/2","130/0","132/1","144/2","145/0","151/0","155/0","161/5","162/1","169/1","180/3","231/1","235/1","236/1","237/1","334/1","341/1","342/2","486/2","608/0","667/1","692/0","718/2","751/3","821/3","871/3"],"_equal":["14/1","40/1","329/4","389/2","464/0","470/1","620/0","688/0","708/2","800/15"],"_resolved":["14/1","14/0","40/1","40/0","182/0","330/2","777/7","777/9","784/1","875/0","875/1","875/2"],"_resolvedaddress":["14/0","40/0","875/2"],"_deployment":["15/0","41/0","129/3","134/1","373/0","374/0","410/0"],"_response":["15/0","31/0","41/0","58/0","161/5","177/0","185/2","186/0","198/2","227/0","229/0","263/0","288/0","325/0","413/0","909/1"],"_transactionresponse":["15/0","31/0","31/4","41/0","58/0","177/2","177/4","210/0","227/0","229/0","263/0","288/0","297/1","325/0"],"_had":["17/1","43/1"],"_events":["19/0","20/1","25/1","31/5","47/0","48/1","53/1","58/2","64/0","201/0","220/1","231/0","236/0","236/1","237/0","238/0","239/0","240/2","241/3","242/3","402/0","797/1","797/2","800/0","800/2","800/3","800/4","800/5","800/7","800/13"],"_match":["19/0","36/0","47/0","161/6","213/1","240/0","264/0","265/0","265/1","593/0","597/1","599/1","600/1","626/0","792/0","798/2","798/5","798/6","800/15","909/1"],"_event":["19/0","20/0","20/1","21/0","22/0","23/0","24/0","25/0","25/1","30/3","31/5","36/0","37/0","37/1","47/0","48/0","48/1","49/0","50/0","51/0","52/0","53/0","53/1","201/0","231/1","231/0","232/0","233/0","234/0","235/0","236/0","237/0","238/0","241/1","242/1","365/0","367/1","368/0","369/2","370/0","378/0","378/1","379/0","380/0","402/0","407/0","409/0","414/0","417/1","418/0","421/0","422/0","423/0","424/0","432/1","432/2","731/0","800/4","800/5","800/6","800/7","800/14","800/18","871/4","880/0","893/6"],"_query":["19/0","47/0","64/0","220/1","797/2","859/0"],"_filter":["19/0","36/0","37/0","47/0","64/0","220/0","240/0","240/1","241/0","241/1","242/0","242/3","264/0","265/0","266/0","267/0","268/0","301/0","411/0","797/2","798/1","798/2","801/0"],"_queryfilter":["19/0","47/0"],"_block":["19/0","28/8","31/5","47/0","178/2","205/0","206/0","207/0","208/0","209/0","210/0","222/0","225/0","230/2","242/1","244/0","244/1","250/0","251/0","252/0","253/0","254/0","255/0","256/0","257/0","258/0","259/0","260/0","261/0","262/0","263/0","266/0","267/0","268/0","269/0","270/0","271/0","277/0","278/0","289/0","289/1","290/0","290/1","291/0","291/1","292/0","298/0","299/3","302/0","305/0","306/0","307/0","308/0","315/0","318/0","628/3","732/0","752/0","833/0","838/0","841/1"],"_hash":["19/0","47/0","175/0","177/0","177/1","177/2","177/4","218/0","227/0","228/0","230/0","242/0","250/0","251/0","268/0","270/0","276/0","290/0","294/4","302/0","303/0","323/4","323/5","365/0","378/1","409/0","418/0","425/0","442/0","507/0","559/0","560/0","566/0","567/0","568/0","576/0","577/0","661/2","705/0","718/1","739/0","739/1","800/6","800/7","800/12","889/0","906/0","909/0"],"_fromblockorblockhash":["19/0","47/0"],"_toblock":["19/0","47/0","267/0"],"_array":["19/0","21/0","31/5","47/0","49/0","82/0","83/0","84/0","116/0","126/0","128/0","147/0","170/0","180/2","181/0","210/0","220/0","238/0","241/0","261/0","263/0","265/2","265/0","275/0","304/0","323/3","323/5","353/0","354/0","359/1","370/0","383/0","388/0","389/3","391/0","391/1","392/0","393/0","401/0","402/0","403/0","405/1","405/0","411/0","420/0","420/2","446/0","480/0","490/0","493/0","494/0","495/0","496/0","503/0","504/0","523/0","525/0","530/2","570/3","672/0","673/0","737/0","780/0","789/0","792/0","794/0","796/3","798/6","897/0","900/0"],"_number":["20/0","28/4","33/0","48/0","55/0","56/0","60/0","88/0","91/0","93/0","94/0","99/0","101/0","102/0","108/0","111/0","144/1","149/1","154/1","182/0","184/0","185/0","186/0","205/0","208/0","222/0","223/0","226/0","237/0","237/1","244/1","245/2","248/0","252/0","253/0","255/0","256/0","257/0","269/0","272/0","277/0","278/0","282/1","282/0","283/0","284/0","286/0","287/0","289/0","291/0","292/0","298/0","300/0","305/0","306/0","307/0","315/0","316/0","317/0","318/0","320/0","373/0","392/0","431/0","443/0","447/0","448/0","451/0","453/0","454/0","455/0","456/0","457/0","458/0","459/0","460/0","462/0","463/0","464/0","465/0","466/0","467/0","468/0","469/0","470/1","470/0","471/0","472/0","473/0","475/8","476/0","476/1","477/0","477/1","477/2","478/0","482/0","483/0","509/0","510/0","511/0","512/0","513/0","514/0","516/0","519/0","521/0","522/0","532/0","534/0","535/0","536/0","537/0","539/0","540/0","541/0","542/0","543/0","544/0","545/0","548/0","549/0","551/0","551/1","551/3","554/0","555/0","599/0","600/1","600/0","623/0","628/1","673/0","684/1","684/0","698/0","703/0","708/2","708/0","709/0","710/0","712/0","713/0","716/0","725/0","727/0","728/0","729/0","730/0","731/0","736/0","777/8","781/0","782/0","783/0","806/0","807/1","810/1","815/1","844/0","844/1","877/7","888/0","893/4","902/0"],"_listeners":["20/0","21/0","25/0","48/0","49/0","53/0","234/0","235/1","236/0","237/0","237/1","238/0"],"_subscribed":["20/0","21/0","48/0","49/0"],"_total":["20/1","48/1","180/1","237/1","257/0"],"_count":["20/1","20/0","48/1","48/0","75/0","76/0","208/0","237/0","318/0","516/0","620/0"],"_all":["20/1","25/0","25/1","48/1","53/0","53/1","116/0","127/0","163/1","166/0","170/0","177/0","177/4","178/4","234/0","235/1","236/0","236/1","244/1","257/0","262/0","278/0","279/1","288/0","301/0","304/0","328/0","330/2","362/0","401/0","402/0","403/0","434/2","475/7","476/4","478/0","478/4","493/0","494/0","496/0","499/0","529/1","574/1","601/1","602/0","609/0","644/0","653/0","654/0","694/0","695/0","739/0","751/4","752/1","758/0","758/1","762/2","763/0","768/0","772/0","773/1","774/0","777/5","790/3","790/4","792/0","794/0","796/5","798/4","800/10","808/0","815/8","815/10","816/2","817/2","818/0","835/0","846/4","858/0","863/1","863/2","864/0","868/1","870/0","871/2","872/1","877/0","877/1","878/0","893/1","897/0"],"_listener":["20/0","21/0","22/0","23/0","24/0","31/5","48/0","49/0","50/0","51/0","52/0","232/0","233/0","234/0","235/0","235/1","237/0","238/0"],"_listenercount":["20/0","48/0","237/0"],"_list":["21/0","49/0","116/0","128/0","170/0","181/0","209/0","238/0","261/0","263/0","275/0","298/0","307/0","383/0","570/1","684/0","740/0","792/0","794/0","835/1","837/1","893/5","897/1"],"_unsubscribe":["22/0","25/0","50/0","53/0","64/0"],"_off":["22/0","50/0","235/0","648/0"],"_subscribe":["23/0","24/0","51/0","52/0","64/0"],"_calling":["23/0","24/0","51/0","52/0","58/3","62/0","199/2","225/2","319/0","520/0","522/0","578/0","627/1","887/2"],"_occurs":["23/0","24/0","51/0","52/0","642/1","643/1","709/2","796/4"],"_unsubscribed":["25/1","53/1"],"_remove":["25/0","31/5","53/0","235/0","236/0","791/0","792/0","793/0","794/0"],"_removealllisteners":["25/0","53/0","236/0"],"_meta":["26/0","29/3","54/0","63/0","322/1","759/2","860/4","868/0","879/1"],"_class":["26/0","29/3","54/0","63/0","67/1","75/1","76/1","189/0","192/0","193/0","310/1","310/4","311/0","328/2","331/0","349/1","399/0","452/0","550/1","571/2","571/0","572/2","601/1","621/1","627/1","636/0","773/0","773/1","774/0","860/3","860/4","868/1","874/1","878/0","878/1","879/1"],"_properties":["26/0","26/1","31/4","31/5","32/0","38/0","149/2","162/4","165/0","177/4","240/0","275/0","288/0","294/3","328/0","328/1","329/1","329/3","330/1","345/0","359/1","419/0","486/0","502/1","570/2","601/1","602/0","618/0","649/0","650/0","654/0","717/0","880/0","881/0"],"_determined":["26/0","140/1","167/2","348/1","843/0"],"_time":["26/0","26/1","135/0","185/2","200/1","233/0","299/3","727/0","728/0","729/0","753/0","777/5","804/1","805/1","806/0","806/6","807/2","807/3","808/0","808/2","809/0","809/1","820/0","894/6"],"_determine":["26/1","35/2","62/0","440/0","638/2","772/1","800/15","860/4"],"_what":["26/1","95/0","399/2","796/1","800/15","801/0","860/3","867/0","899/0"],"_methods":["26/1","27/0","30/0","31/2","32/0","33/1","34/1","38/0","54/0","63/0","163/3","165/0","178/0","178/4","178/6","211/0","231/0","239/0","338/0","394/0","444/0","452/0","479/1","533/1","572/2","628/2","688/2","777/2","797/2","860/1","860/3","860/4","860/5","864/2","877/0","877/3","878/1","879/1"],"_so":["26/1","28/8","66/1","163/1","199/2","200/1","260/0","313/1","339/0","399/3","400/2","420/0","420/2","432/3","435/1","452/0","476/3","476/5","477/1","478/4","601/1","608/1","628/2","642/2","649/1","668/1","751/2","763/2","796/2","796/4","798/2","800/7","800/15","806/0","806/4","808/0","809/3","809/4","815/2","815/6","818/0","818/1","836/1","837/1","846/1","859/0","871/1","877/3","894/4"],"_following":["26/1","133/0","162/4","197/1","239/0","245/0","294/3","386/0","432/0","626/0","694/0","695/0","796/6","860/6","871/1","899/2"],"_sections":["26/1","826/1","835/0"],"_describe":["26/1","181/0"],"_generic":["26/1","612/0","630/0","704/0"],"_ways":["26/1","683/1","808/0"],"_added":["26/1","109/0","118/0","131/1","868/1","872/1"],"_during":["26/1","28/8","58/1","163/1","271/0","334/1","341/1","342/2","373/0","374/0","638/1","730/0","766/0","777/5","796/3","806/0"],"_method":["27/0","28/1","28/7","28/0","29/2","29/0","30/0","31/4","31/5","31/0","32/0","33/0","33/1","34/0","34/1","35/3","35/0","166/0","171/0","178/3","190/1","198/1","199/1","227/1","227/3","228/1","230/1","230/2","242/2","324/1","325/0","327/2","327/0","333/2","339/0","361/0","413/1","415/1","435/1","461/0","478/4","583/2","601/1","627/1","652/0","653/0","653/1","682/0","784/0","785/1","788/0","789/0","858/0","874/0","874/1","877/2","877/4","877/5","877/6"],"_evaluates":["27/0"],"_small":["27/0","129/2","759/1","806/0","818/1","866/1"],"_amount":["27/0","28/8","31/3","58/0","59/0","60/0","61/0","142/2","226/0","256/0","257/0","283/0","286/0","300/0","632/0","643/0","727/0","803/0","806/0","815/5"],"_evm":["27/0","28/8","30/3","65/0","129/0","129/2","178/5","349/0","399/2","757/0","813/0"],"_against":["27/0","30/1","179/2","739/1","813/1","894/1","904/1"],"_current":["27/0","30/1","58/0","59/0","62/0","75/0","76/0","185/1","200/1","317/0","333/1","614/0","672/0","673/0","677/0","708/2","850/0","859/0"],"_state":["27/0","27/1","30/1","35/0","35/1","62/0","97/0","178/5","201/1","225/1","226/1","299/0","299/3","310/0","375/0","381/1","381/2","382/0","796/5","859/0","884/1"],"_computed":["27/0","486/2","502/1","576/0","684/0","687/0","687/2","688/2","691/0","691/1","714/1","800/0","800/6","906/0"],"_asking":["27/0"],"_single":["27/0","28/1","29/0","84/1","86/0","299/3","405/1","475/2","475/3","493/0","496/0","668/1","668/2","678/1","678/2","790/2","798/5","806/0","817/2","877/4","877/7","881/0"],"_node":["27/0","28/8","30/1","35/0","71/2","79/0","80/0","100/1","101/0","102/0","103/0","105/0","106/0","107/0","108/0","109/0","110/0","111/0","112/0","113/0","114/0","115/0","116/0","117/0","118/0","119/0","120/0","121/0","122/0","123/0","124/0","125/0","126/0","127/0","128/0","140/1","160/0","166/0","167/2","168/0","169/0","176/0","177/1","178/0","187/1","187/2","224/0","224/1","588/0","589/0","590/0","591/0","592/0","593/0","594/0","595/0","596/0","597/0","598/0","599/0","600/0","601/0","602/0","603/0","628/3","642/3","643/0","643/1","821/1","821/2","850/0","858/0","893/5","894/2","894/5","907/0","909/1"],"_therefore":["27/1","122/0","134/5","477/1","482/0","639/2"],"_free":["27/1","35/1","751/5","752/2","753/2","754/2","755/0","871/1","894/3"],"_does":["27/1","35/1","66/1","71/1","71/2","95/0","117/0","120/0","125/2","174/0","177/4","185/1","213/1","214/1","225/1","324/1","329/3","333/1","378/1","381/1","399/2","663/2","689/0","762/3","806/3","806/0","821/1","823/0","833/1","835/1","837/0","872/1"],"_require":["27/1","28/8","29/5","130/1","168/0","220/1","225/1","398/2","558/0","572/1","608/4","638/2","668/0","790/2","809/3","813/0","863/0","864/2","894/5"],"_ether":["27/1","31/3","225/1","328/1","374/0","475/3","475/5","508/0","513/0","515/0","515/1","515/2","516/2","516/3","519/0","520/0","521/0","522/0","639/1","709/1","815/5","815/6","815/8"],"_cannot":["27/1","30/2","62/2","97/0","225/1","310/2","311/0","342/0","450/0","533/0","631/2","690/0","800/7","837/1","864/2"],"_make":["27/1","81/0","211/2","328/1","476/3","583/3","615/0","639/0","771/0","777/8","796/1","796/2","804/0","807/0","810/0","811/0","898/0","903/1"],"_changes":["27/1","796/0","809/3","811/0","814/1","818/1","819/0","872/2","879/0","893/3"],"_depends":["28/0"],"_returned":["28/1","28/2","28/5","28/6","31/3","31/4","85/1","161/3","177/2","179/3","191/0","213/1","214/1","217/1","237/1","294/1","405/1","529/1","718/1","731/0","777/7","777/9","899/2","900/1"],"_directly":["28/1","125/0","129/1","136/2","189/0","311/0","349/1","450/0","533/0","550/1","572/1","790/3","800/10","812/0","818/1","880/0","896/0","904/1"],"_otherwise":["28/1","28/5","35/3","109/0","118/0","125/2","197/0","230/2","245/2","279/0","405/1","619/0","688/0","718/2","777/3","777/4","790/1","835/0","871/4","899/1"],"_parameter":["28/1","37/2","342/1","362/0","363/0","386/0","387/0","387/2","388/0","389/0","390/0","391/1","635/0","663/2","756/1","790/2","887/0"],"_positionally":["28/1"],"_named":["28/1","134/8","242/3","420/1","420/2","517/0","763/0"],"_also":["28/1","62/2","134/5","135/1","160/1","161/0","162/3","163/2","163/4","194/1","201/2","227/3","297/1","329/2","359/2","400/2","433/1","476/6","479/1","517/0","597/1","607/0","628/2","634/1","638/1","643/3","653/1","713/2","754/0","797/2","800/16","806/3","806/7","808/2","815/3","823/2","839/5","846/3","881/0","893/3","894/6","895/1","896/0"],"_values":["28/2","28/8","36/0","125/2","185/2","211/0","271/0","350/1","353/0","410/0","411/0","412/0","413/0","414/0","415/0","416/0","418/0","420/1","421/0","426/0","443/0","443/2","444/0","444/1","461/0","475/4","486/2","505/0","515/0","553/0","570/2","573/0","574/1","576/0","580/0","581/0","582/0","624/1","633/0","654/0","696/0","790/3","792/0","794/0","800/10","815/1","823/2","899/0","903/0","909/1"],"_have":["28/2","58/3","71/3","134/0","141/0","163/2","187/1","214/1","227/2","292/0","299/1","306/0","309/1","330/2","333/1","333/2","342/2","345/0","399/1","475/8","478/3","578/0","639/1","642/3","663/1","679/2","680/1","686/0","688/0","689/0","709/1","716/1","751/4","756/0","763/0","768/0","768/2","773/1","798/2","803/0","809/1","809/4","810/0","813/0","815/6","816/1","826/1","827/1","837/0","859/0","860/5","872/0","872/1","877/7","878/0","878/1","881/0","887/0","892/0","894/3","894/4","894/6","898/0"],"_simple":["28/2","65/1","129/2","172/0","211/1","342/0","550/0","608/0","753/1","756/0","766/0","767/0","790/1","809/3","820/0","824/0","837/0","839/0","847/0","866/0","893/1"],"_meaning":["28/2","680/1"],"_javascript":["28/2","28/3","28/4","231/1","359/2","364/0","443/0","448/0","449/0","470/0","475/4","548/0","548/1","623/0","818/0","824/0","830/0","839/0","849/1","852/1","860/1","868/0","894/6"],"_types":["28/2","29/1","326/0","353/0","354/0","362/0","363/0","364/0","365/0","389/1","399/3","515/2","570/3","572/0","573/0","574/1","574/0","575/0","576/0","578/0","580/0","581/0","582/0","633/1","664/0","800/2","800/9","800/10","800/11","800/13","817/1","887/0","893/5"],"_fairly":["28/2","138/0","139/0","572/1","809/3","863/0"],"_straight":["28/2","753/1","810/0","903/1"],"_forward":["28/2","31/3","213/1","753/1","810/0","903/1"],"_strings":["28/2","231/1","405/1","515/0","550/1","551/0","552/1","667/0","668/0","668/1","668/2","669/0","676/0","688/0","801/0"],"_booleans":["28/2"],"_numbers":["28/3","443/0","443/1","448/0","475/0","475/4","475/7","548/1","846/2","846/5","899/0"],"_safe":["28/3","364/0","443/0","448/0","470/1","476/3","478/4","618/0","623/0","649/0","688/1","796/5","868/0","893/0"],"_range":["28/3","443/0","448/0","480/0","480/1","687/0"],"_less":["28/4","178/0","178/4","260/0","470/1","600/1","808/2","902/0"],"_than":["28/4","35/0","242/2","470/1","477/1","495/1","500/1","536/1","551/3","632/0","639/0","669/0","687/1","720/0","807/0","816/2","902/0"],"_bits":["28/4","460/0","532/0","551/1","551/3","551/5","554/0"],"_such":["28/4","58/2","162/3","164/1","171/1","178/2","194/0","247/0","311/1","313/1","322/1","325/1","328/1","345/0","348/2","366/0","446/0","479/0","515/2","601/1","628/2","631/2","634/2","638/0","638/2","640/0","663/2","751/1","751/6","760/0","762/2","790/1","790/2","819/1","821/0","821/2","866/2","893/4","894/6"],"_int24":["28/4"],"_uint48":["28/4"],"_normal":["28/4","29/3","70/0","189/1","359/2","819/1","821/2","829/0","860/1"],"_bignumber":["28/5","33/0","56/0","60/0","205/0","223/0","226/0","256/0","257/0","283/0","284/0","286/0","300/0","307/0","315/0","317/0","320/0","373/0","431/0","443/1","443/2","443/0","444/0","447/0","450/0","450/1","451/0","452/0","453/0","454/0","455/0","456/0","457/0","458/0","459/0","460/0","462/0","463/0","464/0","465/0","466/0","467/0","468/0","469/0","470/0","471/0","472/0","473/0","476/2","476/4","476/0","478/4","509/0","510/0","511/0","512/0","513/0","514/0","515/2","521/0","522/0","709/0","710/0","712/0","781/0","782/0","873/0","874/0","888/0"],"_bytes":["28/6","29/4","99/0","323/0","323/1","323/2","323/3","434/0","446/0","480/0","481/0","487/0","488/0","489/1","493/0","494/0","495/0","495/1","496/0","497/0","498/0","499/0","500/0","500/1","501/0","502/0","503/0","506/0","507/0","524/0","526/0","529/0","535/0","560/0","561/0","562/0","563/0","564/0","568/1","589/0","658/1","659/1","668/0","668/1","668/2","669/0","670/0","671/1","672/0","675/0","684/0","684/1","686/0","693/0","694/0","695/0","701/0","711/0","717/0","758/0","800/10","801/0","805/3","900/0","900/1"],"_both":["28/6","515/1","739/0","800/16","809/3","895/0","910/0"],"_fixed":["28/6","461/0","532/0","534/0","535/0","536/0","537/0","539/0","540/0","541/0","542/0","543/0","544/0","545/0","549/0","550/0","551/1","551/5","552/0","553/0","554/0","555/0","556/0","557/0","633/1","800/8","800/9","805/3","806/0"],"_length":["28/6","102/0","114/0","134/7","136/4","136/5","392/0","420/2","480/1","489/1","489/0","495/0","495/1","497/0","498/1","500/0","500/1","503/0","527/0","568/1","668/0","668/1","671/1","688/0","689/0","758/0","800/8","800/9","805/3"],"_dynamic":["28/6","392/0","800/8","800/11","800/13"],"_include":["28/7","31/2","129/3","178/2","259/0","477/2","570/4","609/0","634/1","634/2","688/1","726/0","741/1","759/2","798/0","878/0"],"_msg":["28/8","374/1"],"_sender":["28/8","297/1"],"_caller":["28/8","179/3"],"_execution":["28/8","120/0","178/5","294/2","342/2","638/1","709/2","786/0","787/0","803/0"],"_callvalue":["28/8"],"_exectuiont":["28/8"],"_price":["28/8","31/3","177/1","223/0","227/3","284/0","317/0","639/1","642/0","642/1","642/2","700/0","710/0","782/0","803/0"],"_pay":["28/8","31/3","229/2","284/0","639/1","803/0"],"_per":["28/8","31/3","284/0","513/0","710/0","758/0","762/3","763/2","803/0","826/3","878/0"],"_gas":["28/8","31/3","33/0","60/0","177/1","223/0","226/0","227/3","256/0","257/0","283/0","284/0","300/0","307/0","317/0","320/0","373/0","515/1","631/2","638/0","638/1","639/1","639/2","642/0","642/1","642/2","643/0","643/2","699/0","700/0","709/0","709/1","709/2","710/0","762/3","781/0","782/0","802/0","803/0","876/0"],"_theoretically":["28/8"],"_since":["28/8","29/1","54/0","63/0","67/0","109/0","118/0","142/1","226/1","287/2","292/0","306/0","328/1","349/1","350/0","366/0","478/1","663/2","668/2","669/0","683/1","690/0","751/4","752/4","758/0","777/5","797/0","800/4","806/3","807/2","810/3","852/1","867/1","873/0","874/0","877/7","894/6"],"_going":["28/8"],"_fee":["28/8","30/0","755/2"],"_charged":["28/8"],"_still":["28/8","67/1","138/0","327/0","363/1","571/0","602/1","663/2","763/2","770/0","817/2","903/0"],"_requires":["28/8","30/0","31/1","177/0","178/5","179/4","187/1","297/1","342/1","479/0","570/1","669/0","751/1","753/4","800/16","806/1","806/3","812/0","815/1","852/1"],"_report":["28/8"],"_tx":["28/8","34/0","61/0","230/0","718/0"],"_most":["28/8","29/5","134/1","160/2","163/3","165/0","177/4","178/4","179/0","211/1","222/0","244/1","310/3","335/2","349/1","350/0","398/2","413/1","415/1","417/0","443/2","461/1","475/1","476/4","551/5","572/1","572/2","593/1","594/2","598/1","599/2","600/2","642/3","690/1","692/0","752/0","766/0","796/3","800/1","800/3","813/0","815/0","854/0","877/3","879/0","895/0","898/0"],"_developers":["28/8","29/5","254/1","255/1","256/2","259/1","299/2","307/1","349/1","398/2","398/3","413/1","415/1","417/0","476/4","572/1","572/2","593/1","594/2","598/1","599/2","600/2","607/0","690/1","796/3","800/1","800/3","804/0","810/3","813/0","815/0","894/4"],"_allow":["28/8","31/3","78/0","142/1","478/0","628/2","676/0","688/0","724/0","728/0","729/0","784/0","797/0"],"_processes":["28/8"],"_metering":["28/8"],"_like":["28/8","149/2","177/4","258/0","446/0","476/0","481/0","486/0","488/0","493/0","494/0","495/0","496/0","497/0","498/0","499/0","500/0","501/0","502/0","524/0","526/0","529/0","535/0","561/0","562/0","563/0","564/0","589/0","670/0","675/0","701/0","711/0","717/0","761/0","803/0","806/5","807/3","894/4"],"_gasleft":["28/8"],"_meaningful":["28/8"],"_blocktag":["28/8","205/0","206/0","207/0","208/0","225/0","244/0","244/1","266/0","267/0","315/0","318/0","631/2"],"_tag":["28/8","105/0","205/0","206/0","207/0","208/0","225/0","244/0","266/0","267/0","315/0","318/0","897/0","897/1"],"_simulate":["28/8"],"_hypothetical":["28/8"],"_historic":["28/8","859/0"],"_analysis":["28/8","32/0"],"_note":["28/8","62/0","145/0","151/0","155/0","163/0","168/0","201/1","323/0","339/0","366/0","669/0","674/0","682/0","758/0","770/0","826/4","827/3","828/2","831/0","851/0","851/2"],"_many":["28/8","60/0","62/1","67/0","142/0","161/1","163/2","163/3","166/1","178/0","201/2","220/1","244/1","324/2","328/1","399/1","443/0","444/0","475/0","479/0","479/1","530/0","558/0","637/0","649/1","668/1","690/0","751/5","766/1","777/8","796/3","805/1","809/1","818/1","821/0","821/2","825/2","844/0","858/1","860/5","893/6"],"_backends":["28/8","161/2","161/5","177/3","179/1","179/2","179/4","181/0","204/2","220/1","227/2","244/1","628/2","631/2","756/0"],"_do":["28/8","29/1","142/1","177/3","190/0","348/2","631/2","648/0","722/2","723/2","777/8","796/2","800/15","810/1","814/0","868/1","871/1","892/0","899/0"],"_support":["28/8","67/0","178/4","200/1","231/1","244/1","435/1","449/0","631/2","772/1","785/1","816/2","825/2","827/2","828/1","829/1","830/1","833/1","835/1","866/1","866/2","894/5"],"_paid":["28/8","30/0","163/4","753/4"],"_plans":["28/8"],"_database":["28/8"],"_storage":["28/8","207/0","668/0","797/0"],"_processing":["28/8","614/0","719/0"],"_requirements":["28/8","256/1"],"_much":["28/8","201/1","211/2","242/2","751/6","805/2","806/0","807/2","816/1"],"_higher":["28/8","129/1","184/1","349/0","351/2","642/0","751/6","752/4","753/4","754/4","797/2"],"_m":["28/0","29/0","31/0","33/0","34/0","35/0","37/0","129/0","627/0","629/0","633/0","634/0","635/0","636/0","637/0","642/0","643/0","686/0","829/0","871/0","898/0"],"_e":["28/0","29/0","31/0","33/0","34/0","35/0","37/0","70/0","165/0","211/0","615/0","616/0","627/0","628/0","629/0","630/0","631/0","632/0","633/0","634/0","635/0","636/0","637/0","638/0","639/0","640/0","641/0","642/0","643/0","644/0","647/0","685/0","686/0","687/0","688/0","689/0","690/0","691/0","760/0","763/0","826/0","827/0","828/0","829/0","830/0","831/0","832/0","834/0","875/0","898/0","908/0"],"_t":["28/0","29/0","31/0","33/0","34/0","35/0","37/0","627/0","629/0","631/0","633/0","634/0","635/0","637/0","638/0","639/0","640/0","642/0","643/0","683/0","686/0","687/0","690/0","691/0","692/0","801/0","814/0","826/0","827/0","828/0","829/0","830/0","833/0","834/0","871/0","898/0"],"_h":["28/0","29/0","31/0","33/0","34/0","35/0","583/0","588/0","589/0","590/0","602/0","603/0"],"_o":["28/0","29/0","31/0","33/0","34/0","35/0","357/0","359/0","615/0","616/0","627/0","628/0","629/0","630/0","631/0","632/0","638/0","640/0","641/0","645/0","647/0","648/0","686/0","687/0","688/0","689/0","690/0","691/0","801/0","814/0","833/0","834/0"],"_d":["28/0","29/0","31/0","33/0","34/0","35/0","583/0","588/0","589/0","590/0","602/0","603/0","627/0","631/0","634/0","637/0","639/0","641/0","642/0","643/0","644/0","679/0","681/0","685/0","690/0","801/0","899/0"],"_n":["28/0","29/0","31/0","33/0","34/0","35/0","37/0","165/0","211/0","357/0","359/0","476/0","477/0","615/0","616/0","627/0","630/0","631/0","632/0","633/0","634/0","635/0","636/0","637/0","638/0","639/0","640/0","641/0","642/0","643/0","645/0","646/0","678/0","679/0","680/0","681/0","686/0","687/0","688/0","689/0","690/0","753/0","814/0","830/0","831/0","832/0","833/0","875/0","898/0","899/0","908/0"],"_a":["28/0","29/0","31/0","33/0","34/0","35/0","37/0","129/0","142/0","145/0","151/0","155/0","163/0","355/0","356/0","357/0","359/0","360/0","435/0","451/0","492/0","494/0","495/0","497/0","498/0","499/0","500/0","501/0","502/0","524/0","526/0","529/0","535/0","561/0","562/0","563/0","564/0","589/0","631/0","633/0","634/0","635/0","637/0","638/0","642/0","643/0","646/0","653/0","670/0","675/0","685/0","687/0","691/0","717/0","751/0","753/0","760/0","763/0","830/0","831/0","832/0","833/0","864/0","896/0","898/0"],"_always":["29/0","100/1","179/2","359/1","478/4","658/1","659/1","713/3","718/3","800/5","800/6","809/1","809/2","874/0","877/7"],"_even":["29/0","478/2","482/0","668/0","758/0","806/6"],"_simplifies":["29/1","142/1","189/1","349/1"],"_frameworks":["29/1","877/3"],"_need":["29/1","34/0","142/1","190/0","349/1","350/0","413/1","415/1","443/2","461/1","593/1","594/2","598/1","599/2","600/2","663/2","668/2","683/1","796/3","800/3","809/3","810/3","812/0","815/10","818/0","822/2","860/5","879/1","903/2"],"_inspect":["29/1"],"_unwrap":["29/1"],"_simplified":["29/1","749/0","868/0"],"_functions":["29/1","29/0","35/3","160/1","403/0","417/0","432/0","434/2","444/0","475/8","476/3","476/6","478/0","478/2","479/1","559/0","579/1","614/0","649/0","692/0","805/0","854/0","877/0","877/1","877/2","877/3","877/5","878/0","878/1","887/0","887/2","896/0","899/3","909/0"],"_another":["29/2","71/4","71/5","112/0","134/0","185/0","226/1","271/0","477/1","478/0","570/4","661/1","763/1","825/3","837/1","858/0"],"_error":["29/2","29/4","199/2","294/3","294/4","312/0","329/2","333/1","436/1","470/1","489/1","495/1","500/1","608/0","614/0","615/0","615/1","616/0","617/0","619/0","620/0","621/0","622/1","623/0","624/0","624/1","626/0","628/0","628/3","630/0","638/0","638/3","640/0","642/1","643/1","643/3","647/0","671/1","675/1","675/0","683/1","683/0","684/0","685/0","686/1","686/0","687/2","687/0","688/2","688/0","689/0","690/0","691/1","691/0","692/0","693/0","694/0","695/0","709/2","718/5","725/0","727/0","731/0","761/0","777/5","777/8","784/1","786/0","787/0","839/2","839/3","839/4","877/3","878/1"],"_recovery":["29/2","440/0","877/3"],"_example":["29/3","38/0","71/5","112/0","129/3","135/2","162/3","177/1","186/1","310/2","323/2","342/2","387/2","388/2","432/3","475/2","476/6","478/3","486/1","515/1","551/4","628/1","628/3","631/1","643/3","678/2","679/2","680/2","681/1","713/2","806/2","813/0","818/0","836/1","847/1","866/2","893/5","899/3","903/2"],"_function":["29/3","58/3","100/2","192/0","297/1","323/5","330/2","350/0","351/1","359/2","367/1","368/0","369/2","370/0","381/0","383/0","384/0","385/0","403/0","406/0","408/0","412/0","413/0","415/0","416/0","417/1","419/0","427/0","428/0","429/0","430/0","432/1","432/2","432/4","432/5","435/2","560/0","579/0","634/2","637/0","674/0","675/1","683/1","684/1","684/0","687/2","688/2","691/1","718/2","769/0","796/6","815/2","852/1","880/0","887/1"],"_invalid":["29/3","436/1","617/0","632/1","633/0","634/0","638/0","640/0","650/0","683/0","684/0","685/0","693/0","694/0","695/0","777/6"],"_utf":["29/3","29/4","568/1","669/0","672/0","674/1","675/0","675/1","676/0","679/2","680/2","683/1","683/0","684/0","685/0","686/0","687/0","688/0","691/0","692/0","693/0","695/0","864/2","889/0"],"_call":["29/3","31/3","33/1","34/1","35/0","59/0","62/0","225/0","225/1","294/3","319/0","328/2","329/1","342/2","351/0","364/0","413/0","416/0","442/0","631/2","638/0","711/1","720/0","777/4","887/1"],"_above":["29/3","29/6","33/1","34/1","35/4","38/0","197/0","239/0","388/2","649/1","817/0","826/1","827/1","844/1","871/2","897/1"],"_throw":["29/3","312/0","322/1","324/2","325/1","329/2","351/2","470/1","616/0","617/0","621/0","671/1","693/0","777/6","777/8","786/0","787/0","793/1","839/3"],"_exception":["29/3","231/1","294/3","638/0","833/1"],"_allows":["29/4","65/1","70/0","125/0","127/0","135/0","136/0","163/3","171/0","177/4","187/0","201/0","204/2","211/0","231/0","287/2","435/1","443/1","532/0","663/2","688/0","751/1","756/1","757/0","759/1","759/2","760/0","763/1","798/1","800/5","807/1","809/3","837/0","886/1"],"_low":["29/4","227/3","398/2","476/3","479/0","572/1","751/3"],"_level":["29/4","129/0","129/1","134/8","349/0","351/2","398/2","476/3","479/0","572/1","625/0","682/0","756/0","797/2","873/0"],"_reason":["29/4","165/0","201/2","477/0","638/3","684/0","685/0","686/0","687/2","687/0","688/2","688/0","689/0","690/0","691/1","691/0","754/4","821/3","823/2","877/2"],"_alternate":["29/4"],"_strategy":["29/4"],"_operations":["29/6","35/4","82/0","83/0","84/0","129/2","129/3","204/2","211/3","244/1","310/0","310/1","310/4","330/3","342/1","345/0","349/1","443/0","443/1","443/2","452/0","461/0","475/8","476/3","479/0","479/1","558/0","619/0","631/2","752/1","810/3","821/2","879/1"],"_non":["30/0","149/2","230/1","335/1","393/1","432/1","444/0","579/0","580/0","581/0","582/0","598/0","602/1","639/2","663/1","663/2","688/0","708/1","724/0","800/0","800/2","800/3","800/4","800/5","800/16","813/0","863/0","864/2","887/1","909/0"],"_signed":["30/0","34/0","61/0","229/1","310/0","324/0","440/0","461/0","551/0","551/1","551/5","552/1","553/0","568/1","570/0","570/1","663/0","664/0","696/0","713/2","884/1","885/1","910/0"],"_payment":["30/0"],"_form":["30/0","666/1","672/0","673/0","676/0","677/0","678/0","678/1","679/0","679/1","680/0","681/0","909/0"],"_miner":["30/0","30/1","255/0","258/0","259/0","642/3"],"_verified":["30/1","329/4","574/1","809/3","893/4","904/1"],"_every":["30/1","134/8","242/1","351/0","626/0","893/2"],"_entire":["30/1","134/5","278/0","763/2","813/1","841/0"],"_well":["30/1","164/0","166/1","288/0","398/1","552/1","558/0","583/0","639/1","639/2","694/0","754/1","807/2","816/2","818/0","858/1","877/1","891/0"],"_who":["30/1","800/1"],"_compute":["30/1","31/5","297/1","439/0","478/3","565/0","570/0","590/1","602/1","661/0","663/2","666/0","718/1","718/4","797/2","806/0"],"_after":["30/1","31/0","185/0","226/1","350/1","475/5","773/1","809/3","819/1","822/2","836/1","893/3"],"_executing":["30/1","32/0","35/0","225/0"],"_logged":["30/3","36/0"],"_log":["30/3","31/5","220/0","240/0","241/1","269/0","270/0","271/0","272/0","273/0","274/0","275/0","276/0","277/0","278/0","301/0","304/0","378/1","414/0","418/0","421/0","422/0","423/0","424/0","425/0","611/0","612/0","613/0","625/0","644/0","645/0","646/0","647/0","751/6","798/0","798/2","798/4","798/5","798/6","806/5"],"_then":["30/3","37/2","64/1","64/2","194/0","265/2","476/6","598/0","663/2","703/1","790/4","844/1","863/2","893/5","909/1"],"_queried":["30/3","202/2","643/0"],"_receipt":["30/3","31/4","31/5","228/0","230/0","294/3","294/4","294/0","295/0","296/0","297/0","298/0","299/0","300/0","301/0","302/0","303/0","304/0","305/0","306/0","307/0","308/0","309/0"],"_write":["30/0","31/2","32/0","33/1","34/1","58/1","96/0","631/2","813/1"],"_limit":["31/3","177/1","256/0","283/0","373/0","639/1","643/2","643/0","699/0","709/0","728/0","729/0","731/0","751/6","752/4","753/4","754/4","781/0"],"_consume":["31/3","93/0","110/3","777/5","791/0","792/0","793/0","794/0","895/0"],"_unused":["31/3","709/2"],"_wei":["31/3","284/0","286/0","475/3","475/5","475/8","513/0","515/0","515/1","515/2","516/2","516/3","642/2","702/0","710/0","712/0"],"_wait":["31/4","224/1","230/0","294/0","725/0","732/0"],"_called":["31/4","334/1","341/1","450/0","533/0","636/0","777/3","777/7","777/9","807/1"],"_logs":["31/5","65/1","220/0","266/0","267/0","268/0","278/0","301/0","304/0","648/0","797/0","859/0"],"_included":["31/5","66/0","177/1","260/0","274/0","294/0","298/0","299/1","301/0","302/0","305/0","307/0","309/1","318/1","477/1","601/1","608/1","608/2","650/0","793/1","798/1","800/10","800/16","823/2","839/5","863/2","871/2","893/3"],"_description":["31/5","95/0","417/1","418/0","419/0","421/0","422/0","423/0","424/0","425/0","426/0","427/0","428/0","429/0","430/0","431/0","583/2","800/18","848/0"],"_parsed":["31/5","400/1","521/0"],"_arguments":["31/5","772/0","772/1","774/1","777/8","790/0","790/3","790/4","809/3","863/0"],"_decode":["31/5","349/0","351/0","354/0","398/1","414/0","415/0","416/0","417/1","461/0","523/0","525/0","529/0","860/3"],"_parse":["31/5","79/0","100/2","400/1","418/0","419/0","515/2","521/0","522/0","670/0","717/0","719/0","790/0"],"_topics":["31/5","36/0","240/0","265/0","275/0","301/0","411/0","414/0","414/1","798/6","800/4","800/7","800/0","890/0"],"_eventsignature":["31/5"],"_full":["31/5","96/0","262/0","299/3","362/0","363/0","388/0","435/1","502/0","817/2","868/1"],"_signature":["31/5","198/0","199/0","322/0","326/0","351/1","365/0","424/0","430/0","432/2","432/3","440/0","484/0","485/0","486/0","501/0","502/0","660/0","663/0","663/1","664/0","665/1","665/0","683/1","703/1","718/0","718/1","718/4","718/5","800/4","800/5","800/6","800/7","800/16","830/0","830/1"],"_removelistener":["31/5"],"_getblock":["31/5","209/0"],"_occurred":["31/5","629/0"],"_gettransaction":["31/5","227/0"],"_gettransactionreceipt":["31/5","228/0"],"_several":["32/0","160/1","164/0","242/3","288/0","517/0","533/1","676/0","692/0","810/2","812/0","817/1","864/1"],"_options":["32/0","160/1","162/4","162/0","333/0","341/0","490/0","649/1","720/0","727/0","728/0","729/0","730/0","731/0","732/0","733/0","769/0","772/0","773/1","777/4","777/5","777/6","789/0","790/0","790/1","790/2","790/4","792/0","794/0"],"_analyze":["32/0","751/6"],"_results":["32/0","65/1","117/0","179/2","756/0","806/0","818/0","893/2"],"_without":["32/0","59/0","135/1","163/1","204/2","299/3","310/2","476/5","598/0","631/2","762/2","806/5","806/7","846/0","871/1","871/3","877/7","879/1"],"_actually":["32/0","35/1","59/0","300/0","435/1","688/2"],"_estimate":["33/0","60/0","226/0","226/1","320/0","631/2","876/0"],"_units":["33/0","60/0","517/0","519/0","521/0","911/0"],"_execute":["33/0","34/0","117/0","120/0","121/0","220/1","310/0","310/4","631/2","767/0","812/0"],"_depending":["33/1","34/1","476/6","751/5","800/8"],"_estimategas":["33/0","60/0","226/0","320/0","329/1","876/0"],"_big":["33/0","56/0","60/0","205/0","223/0","226/0","256/0","257/0","283/0","284/0","286/0","300/0","307/0","315/0","317/0","320/0","373/0","431/0","443/0","444/0","447/0","449/0","451/0","453/0","454/0","455/0","456/0","457/0","458/0","459/0","460/0","462/0","463/0","464/0","465/0","466/0","467/0","468/0","469/0","470/0","471/0","472/0","473/0","475/7","475/8","476/0","476/1","477/0","477/1","477/2","478/0","492/0","509/0","510/0","511/0","512/0","513/0","514/0","521/0","522/0","699/0","700/0","702/0","709/0","710/0","712/0","781/0","782/0","888/0"],"_represents":["34/0","84/0","106/0","110/1","112/0","246/0","265/1","337/0","340/0","359/1","418/0","452/0","516/3","516/4","550/0","691/0","696/0"],"_submitted":["34/0","61/0"],"_populate":["34/0","61/0","177/2","177/4","324/1","330/0"],"_populatetransaction":["34/0","61/0","325/0","329/1","330/0"],"_unsignedtx":["34/0","61/0"],"_rather":["35/0","477/1","807/0"],"_change":["35/0","35/1","97/0","225/1","271/0","327/0","339/0","381/1","452/0","571/0","764/1","796/0","796/2","796/3","796/4","866/1","899/3"],"_possible":["35/0","58/3","141/0","161/1","192/0","476/3","688/0","713/2","716/1","800/15","806/0","810/0","894/0"],"_ask":["35/0"],"_pretend":["35/0"],"_changing":["35/0","310/0","312/0","816/2","819/1","846/0","884/1"],"_some":["35/2","71/4","134/4","163/4","177/3","211/3","231/1","348/2","398/3","476/4","558/0","628/2","628/3","631/2","688/1","753/0","777/6","798/8","804/0","805/0","805/1","806/0","810/1","813/1","839/0","864/2","872/0","882/0","891/0","892/2","903/0","903/1"],"_cases":["35/2","62/1","160/1","486/2","628/3","633/1","668/1","688/1","809/3","868/1","879/1","893/3","893/4","893/6","899/0","903/0","903/1","905/0","908/0"],"_fail":["35/2","643/3","839/2","839/4"],"_succeed":["35/2"],"_static":["35/0","59/0","62/0","97/0","190/1","328/1","450/1","533/1","572/2","631/2","653/0","653/1","777/2","788/0","789/0","874/1"],"_callstatic":["35/0","59/0"],"_up":["36/0","179/4","214/0","224/1","256/1","307/0","335/1","474/0","478/0","668/2","679/2","751/0","751/5","752/2","753/2","754/2","755/0","758/0","798/0","798/2","800/4","800/7","806/1","806/4","810/3","811/0","815/5","825/0","841/0","859/0","866/2","869/0","900/0"],"_bloom":["36/0","301/0","798/1"],"_efficient":["36/0","797/0","798/1"],"_searching":["36/0"],"_entries":["36/0","212/0","574/1"],"_filters":["36/0","37/0","63/0","64/0","265/3","798/0"],"_optionally":["37/0","141/0","190/1","332/0","624/0","666/0","672/0","673/0","718/0","719/0","740/0","758/0"],"_filtering":["37/0","240/2","241/3","797/0","798/1"],"_constraints":["37/0"],"_indexed":["37/1","227/3","275/0","362/1","366/0","390/0","480/1","797/0","798/0","798/1","798/2","800/4","800/6","800/7","800/8","800/16","800/17"],"_parameters":["37/1","130/1","164/1","370/0","383/0","387/1","388/1","390/1","392/1","393/1","421/0","426/0","443/2","637/0"],"_filtered":["37/1","798/4","800/5","800/7","800/16"],"_matches":["37/2","64/1","64/2","240/1","418/0","419/0","422/0","427/0","798/4"],"_v":["37/0","628/0","632/0","634/0","688/0","689/0","760/0"],"_see":["38/0","174/1","187/2","240/2","241/3","265/3","356/0","357/0","406/0","407/0","408/0","409/0","411/0","412/0","413/0","414/0","415/0","416/0","433/1","435/3","594/1","681/1","741/1","807/0","815/8","887/3","904/2"],"_addition":["38/0","242/3"],"_contact":["38/0","877/1","886/1"],"_automatically":["38/0","71/0","124/1","131/1","167/2","177/1","256/1","342/2","417/1","439/1","550/1","774/1","785/1","877/5"],"_add":["38/0","141/0","232/0","233/0","453/0","478/3","478/4","539/0","773/0","809/3","860/4","893/3","894/4"],"_defined":["38/0","129/0","478/0","552/0","552/1","583/3","760/0","846/1"],"_erc20":["39/0","40/0","41/0","42/0","43/0","44/0","45/0","46/0","47/0","48/0","49/0","50/0","51/0","52/0","53/0","55/0","56/0","57/0","58/0","59/0","60/0","61/0","64/0"],"_here":["54/0","63/0","104/0","117/0","120/0","433/0","799/0","882/0","890/1"],"_depend":["54/0","63/0","310/1","515/0"],"_decimal":["55/0","108/0","132/1","445/0","476/0","516/0","516/2","516/3","532/0","550/0","555/0"],"_places":["55/0","516/0","516/2","516/3"],"_erc":["55/0","56/0"],"_token":["55/0","55/1","56/0","57/0","643/3","754/4"],"_parseunits":["55/1","515/2","521/0","522/0"],"_taking":["55/1","800/6"],"_user":["55/1","335/1","475/8","478/0","515/0","515/1","515/2","628/3","674/0","722/0","805/0","806/2","806/5","806/7","807/0","807/3"],"_formatunits":["55/1","515/3","519/0","520/0"],"_utils":["55/1","351/0","352/0","362/0","363/0","364/0","365/0","371/0","372/0","376/0","377/0","379/0","380/0","384/0","385/0","396/0","397/0","400/0","436/0","437/0","438/0","439/0","440/0","441/0","442/0","487/0","488/0","489/0","490/0","491/0","492/0","493/0","494/0","495/0","496/0","497/0","498/0","499/0","500/0","501/0","502/0","503/0","504/0","518/0","519/0","520/0","521/0","522/0","523/0","524/0","525/0","526/0","528/0","529/0","560/0","561/0","562/0","563/0","564/0","565/0","566/0","567/0","568/0","569/0","572/0","580/0","581/0","582/0","584/0","604/0","605/0","606/0","609/0","650/0","651/0","652/0","653/0","654/0","655/0","656/0","663/0","664/0","665/0","666/0","670/0","671/0","672/0","673/0","675/0","677/0","678/0","679/0","680/0","681/0","685/0","686/0","687/0","688/0","689/0","690/0","691/0","693/0","694/0","695/0","717/0","718/0","719/0","720/0"],"_displaying":["55/1","515/0","515/3","838/0"],"_amounts":["55/1"],"_ui":["55/1","168/0","796/5"],"_decimals":["55/0","536/1","537/0","543/0","551/0","551/1","551/3","551/5","552/1","555/0"],"_balance":["56/0","205/0","229/2","315/0","515/1","515/3","754/4"],"_owner":["56/0"],"_getbalance":["56/0","205/0","315/0"],"_symbol":["57/0","508/0"],"_transfers":["58/0"],"_tokens":["58/0","59/0","60/0","61/0","643/3","754/1","815/1","894/6"],"_target":["58/0","59/0","60/0","61/0","113/0","114/0","134/5","136/2","224/0","255/0","619/0","621/0","763/1","763/0"],"_boolean":["58/1","59/0","97/0","98/0","109/0","118/0","176/0","234/0","243/0","271/0","308/0","309/0","314/0","372/0","374/0","377/0","378/0","380/0","381/0","385/0","390/0","397/0","438/0","464/0","465/0","466/0","467/0","468/0","469/0","473/0","487/0","488/0","489/0","544/0","549/0","553/0","606/0","662/0","724/0","791/0"],"_inaccessible":["58/1"],"_operation":["58/1","83/0","84/0","84/1","85/0","85/1","86/0","87/0","88/0","89/0","98/0","109/0","118/0","132/0","204/1","335/1","342/2","443/0","619/0","622/1","627/0","631/0","633/0","690/1","796/3"],"_other":["58/2","70/0","134/4","141/0","164/0","178/2","187/0","204/2","231/1","328/1","399/1","399/3","453/0","454/0","455/0","464/0","465/0","466/0","467/0","468/0","476/2","477/2","478/1","478/3","539/0","540/0","541/0","542/0","602/0","638/0","651/2","653/1","661/0","720/0","767/0","790/3","801/0","817/2","837/0","866/0","871/4","877/2","882/0","890/0","893/1"],"_techniques":["58/2","398/3","759/2"],"_chain":["58/3","65/1","144/1","149/1","154/1","242/1","245/2","248/0","287/0","287/1","294/0","316/0","598/0","640/0","653/0","703/0","703/1","713/0","713/3","716/1","718/4","718/5","797/0","813/0","860/1","860/3","860/5"],"_contracts":["58/3","165/0","225/2","399/0","399/1","479/0","515/0","860/0","886/0","891/0"],"_transfer":["58/3","58/0","59/0","60/0","61/0","64/0","423/2","424/2","428/2","430/2","432/2","432/4"],"_why":["58/3","475/0","476/0","477/0","806/0","809/3","810/1"],"_rw":["58/0"],"_performs":["59/0","80/0","129/2","213/0","619/0"],"_dry":["59/0"],"_transferring":["59/0"],"_signing":["59/0","177/3","322/1","324/2","656/0","657/0","658/0","659/0","660/0","661/0","662/0","703/1"],"_sending":["59/0","171/0","174/0","286/0","325/1","330/1","515/1","515/2","639/1"],"_preflight":["59/1"],"_check":["59/1","329/0","619/0","620/0","621/0","622/0","623/0","650/0","653/0","739/0","814/0","822/1","890/1","893/2"],"_successful":["59/1","309/0"],"_how":["60/0","163/3","350/1","398/0","475/6","725/0","800/0","801/0","807/2","844/0","860/3","893/6"],"_could":["61/0","226/1","299/3","823/1","874/0"],"_perform":["62/0","174/0","204/1","690/1"],"_taken":["62/0","109/0","118/0","287/2","667/0","815/8"],"_account":["62/0","71/2","169/1","170/0","171/1","176/0","178/2","229/2","310/0","313/0","318/0","319/0","320/0","331/0","337/0","345/0","348/1","639/0","639/1","639/2","643/3","708/1","709/1","713/2","768/2","769/0","780/0","783/0","790/2","815/5","885/0","885/2","904/0"],"_best":["62/0","223/0","642/3","643/0","643/2","661/2","796/1","796/4","809/4"],"_ethereum":["62/0","65/0","134/0","134/2","140/2","142/0","142/1","148/0","157/0","160/0","161/0","164/0","166/0","169/0","178/0","178/4","211/0","211/1","217/1","246/0","310/0","328/1","336/1","399/0","435/0","435/1","443/0","475/0","475/5","479/0","527/0","530/0","560/0","584/0","640/0","752/0","752/1","766/0","804/0","805/0","805/1","808/0","857/0","857/1","858/0","858/4","860/0","867/0","868/0","868/1","884/0","884/1","885/0","885/1","886/0","891/0"],"_provide":["62/1","163/4","329/0","330/0","476/6","598/0","638/3","752/1","756/2","797/0","821/2","822/0","824/0"],"_false":["62/1","109/0","118/0","624/0","666/0","724/1","784/0","790/1"],"_positives":["62/1"],"_negatives":["62/1"],"_eventually":["62/2"],"_consistent":["62/2","160/0","204/2","899/0"],"_model":["62/2","614/0"],"_means":["62/2","134/5","475/5","668/0","688/0","751/4","762/1","860/4"],"_certain":["62/2","141/0","178/0","345/0","631/2","682/0","683/1","684/0","864/2","894/6"],"_consistency":["62/2","816/2"],"_modes":["62/2"],"_known":["62/2","342/1","596/0","597/0","597/1","651/2","796/5","877/7","893/4"],"_actual":["62/2","187/2","198/2","294/4","306/0","800/10"],"_attempted":["62/2","185/0","810/0"],"_estimating":["62/0","320/0","643/0"],"_fromaddress":["64/1","64/0"],"_toaddress":["64/2","64/0"],"_way":["65/1","161/0","200/1","435/1","649/0","676/0","688/0","688/1","762/2","766/0","800/15","806/7","809/1","809/4","854/0","857/0","872/0"],"_serialize":["65/1","527/0","530/0","718/0"],"_deserialize":["65/1"],"_their":["65/1","67/1","168/0","168/1","201/2","350/1","476/0","517/0","570/1","580/0","581/0","582/0","694/0","751/1","751/4","751/5","756/0","792/0","794/0","796/2","800/5","800/10","806/2","806/4","825/2","872/1","903/0"],"_facilitates":["65/2"],"_deploying":["65/2","134/2","909/1"],"_interaction":["65/0","753/1","886/1"],"_experimental":["66/0","138/0","327/0","571/0","769/0","770/0"],"_package":["66/0","741/1","813/0","813/1","854/0","866/2","873/0","878/0","895/1"],"_features":["66/0","163/4","809/3","868/0","872/0","872/1","894/6"],"_ready":["66/0","224/0","812/0","868/1"],"_base":["66/0","389/0","435/1","471/0","472/0","523/0","524/0","525/0","526/0","532/0","550/0"],"_library":["66/0","77/0","160/1","194/0","204/1","350/0","352/0","444/0","476/0","476/3","476/5","476/6","477/0","477/1","477/2","478/0","478/3","607/0","608/0","608/1","608/2","741/1","751/2","771/0","809/0","809/3","817/0","855/0","867/0","867/1","869/0","870/0","893/0"],"_api":["66/1","77/0","142/0","144/2","144/3","144/0","145/0","145/1","149/2","149/0","150/0","151/0","151/1","154/0","155/0","155/1","163/0","163/1","163/2","163/4","164/1","166/0","167/0","177/0","187/0","190/0","191/0","192/0","193/0","198/0","201/1","204/2","211/2","231/0","342/1","751/0","751/1","751/2","751/3","751/4","751/5","752/1","752/2","754/2","755/0","756/1","756/2","797/1","797/2","799/0","807/1","815/1","858/0","877/3","896/0"],"_considered":["66/1","138/0","299/3","682/0","809/3"],"_stable":["66/1","676/0"],"_follow":["66/1","330/1","642/3","790/2","817/0"],"_semver":["66/1"],"_versioning":["66/1"],"_applications":["66/1","231/0","335/2","624/1","752/0","756/2","797/0","855/1","872/1"],"_requiring":["66/1"],"_specify":["66/1","149/2","163/0","164/1","165/0","198/1","199/1","327/1","398/0","478/0","515/1","571/1","642/0","643/2","713/3","718/3","800/4"],"_exact":["66/1","327/1","571/1","818/0"],"_version":["66/1","327/1","571/1","579/0","609/0","649/1","809/3","869/1","878/0","883/0","894/5","903/1"],"_removed":["67/0","233/0","235/1","236/1","271/0","494/0","499/0","602/0","649/1"],"_brainwallets":["67/0"],"_v4":["67/0","872/0"],"_unsafe":["67/0","539/0","540/0","541/0","542/0","548/0","688/2"],"_easily":["67/0","81/0","400/2","608/1","798/8","809/3"],"_guessed":["67/0"],"_attackers":["67/0"],"_steal":["67/0","815/6"],"_funds":["67/0","67/1","639/0","667/1","796/1","823/1"],"_offered":["67/1"],"_ensure":["67/1","125/2","192/0","476/6","608/4","618/0","621/1","642/3","818/0","893/3"],"_older":["67/1","869/0","872/1","882/0"],"_systems":["67/1","663/2"],"_brain":["67/1","67/0","68/0","69/0"],"_wallets":["67/1","139/0","313/1","333/2","868/0","907/0","912/0"],"_recover":["67/1","351/2","440/0","665/0"],"_assets":["67/1","328/1","667/1","823/1"],"_wallet":["67/0","68/0","69/0","140/0","310/4","311/1","315/0","316/0","322/1","325/1","331/0","332/0","333/0","334/0","335/0","336/0","337/0","338/0","339/0","340/0","341/0","345/0","515/1","583/0","584/0","790/2","805/1","806/2","808/0"],"_brainwallet":["67/0","68/0","69/0"],"_generates":["68/0"],"_slightly":["68/0","168/0"],"_improved":["68/0"],"_experience":["68/0","475/5","805/0","807/2","807/0","894/4"],"_generated":["68/0","273/0","333/0","440/0","762/2","816/0","817/2","893/5","905/0"],"_mnemonic":["68/0","90/1","90/0","92/0","333/2","336/0","348/1","348/2","348/0","583/3","585/0","586/0","587/0","588/0","596/0","597/1","601/1","604/0","605/0","606/0","737/0","738/0","768/0","768/2","769/0","815/3","815/6","868/0","881/0"],"_generate":["68/0","69/0","100/0","117/0","120/0","189/1","777/2","788/0","789/0","817/1"],"_username":["68/0","69/0","722/0"],"_password":["68/0","69/0","176/0","334/0","335/0","341/0","588/0","604/0","723/0","768/0","768/1","768/2","769/0","805/3","806/1","806/2","806/3","815/2"],"_progress":["68/0","69/0","334/1","334/0","341/1","341/0","807/1","807/2","807/3","903/0"],"_callback":["68/0","69/0","199/2","199/0","200/0","351/2","807/1"],"_progresscallback":["68/0","69/0"],"_compatible":["69/0","164/0","194/0","195/0","196/0","197/0","201/0","399/1","400/1","435/1","583/3","649/1","813/0","866/0"],"_v3":["69/0"],"_earlier":["69/0"],"_legacy":["69/0","703/1","718/2","869/0"],"_generatelegacy":["69/0"],"_eip1193bridge":["70/0"],"_exposed":["70/0","187/0","476/6","478/4","766/1"],"_standard":["70/0","160/0","194/1","198/1","199/1","331/0","435/1","570/2","574/0","579/0","580/0","581/0","582/0","583/0","583/3","614/0","738/0","753/1","754/1","796/2","819/0","909/0"],"_eip":["70/0","194/1","195/0","197/0","198/0","217/0","218/0","219/0","287/0","287/1","326/0","568/0","570/0","573/0","575/0","576/0","577/0","663/2","664/0","703/1","713/1","716/1","718/2","718/4","910/0"],"_interacting":["70/0","75/1","76/1","166/0","479/0","754/1","858/0","867/0"],"_libraries":["70/0","141/0","204/2","231/1","328/1","349/0","351/2","476/1","476/2","477/1","477/2","478/1","478/3","688/1","824/0","882/0","893/4"],"_i":["70/0","142/0","145/0","151/0","155/0","163/0","355/0","356/0","357/0","359/0","360/0","435/0","627/0","629/0","631/0","633/0","634/0","635/0","636/0","638/0","639/0","641/0","642/0","643/0","645/0","646/0","685/0","686/0","690/0","751/0","753/0","772/0","826/0","827/0","828/0","830/0","833/0","864/0","871/0","896/0","907/0"],"_p1193":["70/0"],"_bridge":["70/0"],"_noncemanager":["71/0","71/1","71/3","72/0","73/0","74/0","75/0","76/0"],"_designed":["71/0","313/1","772/1","808/1","824/0","867/1"],"_manage":["71/0","201/1","810/2","892/0"],"_increasing":["71/0","806/1"],"_currently":["71/1","206/1","244/1","684/0","893/1","894/1"],"_handle":["71/1","683/1","774/0","864/2","877/7"],"_re":["71/1","271/0","366/0","813/1","819/1"],"_broadcast":["71/1"],"_attempt":["71/2","435/0","638/0","688/1","806/5"],"_send":["71/2","171/0","175/0","178/3","199/0","200/0","229/0","310/0","310/2","320/0","325/0","631/2","643/3","884/1","885/1","892/2"],"_lot":["71/2","478/2","479/0","824/1","890/0"],"_control":["71/2","762/0","845/0","899/2"],"_pool":["71/2","227/1","227/2","642/1"],"_drop":["71/2","694/0","894/5","894/7"],"_your":["71/2","142/1","144/3","145/1","149/2","151/1","155/1","161/5","201/1","475/6","478/1","608/4","628/2","751/0","751/6","756/2","768/2","771/0","796/1","796/5","803/0","809/3","811/0","815/6","815/8","822/1","822/2","855/0","855/1","857/1","858/4","868/0","868/1"],"_future":["71/3","71/4","271/0","583/3","764/1","785/1","809/3","816/2","893/3"],"_nice":["71/3"],"_remembered":["71/3"],"_watched":["71/3"],"_rebroadcasting":["71/3"],"_appear":["71/3"],"_dropped":["71/3","161/6","220/1"],"_feature":["71/4","327/0","571/0","770/0","809/4","811/0"],"_sort":["71/4"],"_failure":["71/4","796/1"],"_mode":["71/4"],"_often":["71/5","260/0","432/5","628/2","667/0","797/0","846/0","860/6","894/4","899/0"],"_dependent":["71/5"],"_being":["71/5","73/0","163/3","204/2","224/0","226/1","244/1","319/0","320/0","570/3","608/2","619/1","624/0","636/0","641/0","806/7","807/3","893/5"],"_first":["71/5","169/1","179/2","197/1","199/2","323/5","420/3","435/1","475/0","665/1","684/0","769/0","772/1","773/1","798/8","800/4","800/6","817/0","868/1"],"_manager":["71/0","72/0","73/0","74/0","75/0","76/0"],"_create":["72/0","83/0","90/0","144/0","149/0","150/0","154/0","158/0","195/0","196/0","332/0","333/0","334/0","335/0","336/0","339/0","343/0","350/0","351/0","364/0","366/0","400/0","550/1","609/0","614/0","615/0","639/2","656/0","771/0","812/0","868/0"],"_whose":["73/0","100/1","435/1"],"_managed":["73/0","169/0","170/0"],"_associated":["74/0","321/0","773/1","871/1"],"_set":["75/0","129/2","177/4","211/0","240/0","241/0","271/0","282/1","345/0","399/3","460/0","475/5","478/0","615/0","616/0","624/0","625/0","652/0","737/0","755/2","774/0","798/2","798/4","798/5","798/6","811/0","815/1","815/5","815/10","817/2","849/0","864/0"],"_outside":["75/1","76/1","443/0","687/0"],"_settransactioncount":["75/0"],"_void":["75/0","76/0","199/0","200/0","342/0","343/0","344/0","611/0","612/0","613/0","619/0","620/0","621/0","622/0","623/0","624/0","625/0","650/0","652/0","740/0","773/0","774/0","776/0","780/0","785/0"],"_bump":["76/0"],"_increment":["76/0"],"_incrementtransactioncount":["76/0"],"_application":["77/0","161/5","194/0","398/0","515/0","607/0","751/0","796/1","796/3","822/1","860/3"],"_programming":["77/0","759/2"],"_formal":["77/0"],"_specification":["77/0","326/0"],"_assembler":["78/0","129/4","133/1","134/6","757/0","759/0","760/0"],"_utilities":["78/0","81/0","398/3","558/0","607/0","608/0","649/0","766/0","766/1","771/0"],"_parsing":["78/0","100/0","417/0","772/0","800/13"],"_assembling":["78/0"],"_asm":["78/0","79/0","80/0","82/0","83/0","90/0","100/0","129/0","129/1","129/4","133/0","134/8","757/0","759/0"],"_dialect":["78/0","100/0","129/0","129/4","133/0","134/8","757/0","759/0"],"_source":["78/0","101/0","102/0","103/0","106/0","240/0","313/1","333/1","400/2","811/0","816/2","823/0","847/0","864/0","868/1","893/5"],"_file":["78/0","79/0","100/0","100/2","129/4","187/0","187/1","400/2","758/0","809/3","815/2","815/3","815/8","839/0","847/0","852/1","866/2","893/5"],"_format":["79/0","83/0","350/1","359/0","361/0","365/0","366/0","395/0","400/2","405/1","405/0","435/0","435/1","435/2","435/3","436/2","438/0","485/0","501/0","502/0","515/3","519/0","520/0","534/0","535/0","536/0","536/1","537/0","538/0","545/0","550/1","550/0","551/0","551/1","552/1","552/0","553/0","554/0","555/0","556/0","671/0","764/1","785/1","912/0"],"_assembly":["79/0","80/0","117/0","120/0","125/0","129/1","129/2","138/0"],"_abstract":["79/0","80/0","100/0","100/2","311/0","619/1","619/0","627/1"],"_syntax":["79/0","80/0","100/0","100/2","117/0","120/0","130/0","130/1","758/0","849/0","887/1"],"_tree":["79/0","80/0","100/0","100/2","813/1"],"_resulting":["80/0"],"_representation":["80/0","323/0","482/0","484/0","498/0","499/0","500/0","519/0","521/0","523/0","525/0","528/0","546/0","547/0","550/0","601/0","667/0","671/0","680/1","705/1"],"_assemble":["80/0","129/4","757/0","759/0"],"_disassembler":["81/0","764/0"],"_easy":["81/0","211/0","476/3","583/3","771/0","886/1","895/0"],"_convert":["81/0","435/3","475/8","515/0","604/0","605/0","888/0"],"_examined":["81/0"],"_program":["81/0","129/1","131/0","134/0","134/2","134/4","134/5","134/7","134/8","135/0","762/0","762/1","762/2","763/2","764/0","860/0"],"_structure":["81/0","326/0","530/0","570/3","570/4","798/1"],"_given":["82/0","85/0","90/0","186/1","242/1","265/2","411/0","412/0","413/0","414/0","415/0","416/0","434/1","442/0","716/1","762/0","764/0","766/1","777/6","800/15","805/3","897/0","900/0","902/0"],"_disassemble":["82/0","129/4","757/0"],"_formatted":["83/0","405/0","435/1","519/0","785/0","830/0"],"_formatbytecode":["83/0"],"_index":["84/0","111/0","169/0","272/0","277/0","278/0","298/0","593/0","599/0","684/0","686/1","735/0","736/0"],"_collapsing":["84/0"],"_multi":["84/0","792/0"],"_byte":["84/0","85/1","132/1","136/1","411/1","435/1","479/0","480/0","480/1","485/0","639/2","665/1","668/0","668/2","683/0","685/0","686/1","688/0","690/0","758/0","762/0"],"_push":["84/1","85/1","89/0","94/0","99/0","109/0","118/0","125/2","132/0"],"_offset":["85/0","85/1","88/0","101/0","114/0","124/1","127/0","134/7","136/1","498/0","684/0","684/1","762/3"],"_ensures":["85/1","161/6","204/2","602/1","708/1"],"_contained":["85/1","838/0"],"_within":["85/1","106/0","129/3","134/1","136/2","400/2","432/1","434/1","448/0","607/0","614/0","736/0","806/6","837/1","846/0","846/1"],"_case":["85/1","109/0","118/0","134/0","177/1","227/3","297/0","323/2","323/4","323/5","434/0","434/1","436/1","483/1","517/0","608/3","663/2","772/1","877/7","897/1","897/0","898/0","899/0","903/2"],"_getoperation":["85/0"],"_command":["86/0","129/4","168/0","628/2","757/0","766/1","767/0","771/0","772/0","772/1","773/0","774/1","777/0","790/0","790/2","790/3","790/4"],"_disassembled":["86/0","764/0"],"_stream":["86/0"],"_opcode":["87/0","89/0","90/0","91/0","92/0","93/0","94/0","95/0","96/0","97/0","98/0","99/0","115/0","116/0","130/0","638/0"],"_pushvalue":["89/0"],"_numeric":["90/0","475/4","623/0","633/0","633/1","800/10"],"_x60":["90/1"],"_push1":["90/1","90/2"],"_valueormnemonic":["90/0"],"_items":["93/0","94/0","877/6"],"_stack":["93/0","94/0","107/0","110/0","110/3","132/0","136/5","137/0"],"_delta":["93/0"],"_onto":["94/0","756/1"],"_alpha":["94/0"],"_short":["95/0","211/0","668/0","668/1","806/6","874/0"],"_doc":["95/0"],"_true":["96/0","97/0","98/0","109/0","118/0","243/0","271/0","308/0","314/0","381/2","438/0","464/0","465/0","466/0","467/0","468/0","469/0","473/0","487/0","488/0","489/0","544/0","549/0","553/0","606/0","662/0","760/0","784/1","790/1","791/0"],"_accesses":["96/0"],"_memory":["96/0","769/0","805/3","806/0"],"_ismemory":["96/0"],"_isstatic":["97/0"],"_jumper":["98/0"],"_jump":["98/0","124/0","129/3","134/5","759/2"],"_isjump":["98/0"],"_ispush":["99/0"],"_root":["100/1","165/0","299/0","575/0","763/0","866/2","877/1","877/3","877/5"],"_scopenode":["100/1","127/0","128/0"],"_start":["101/0","809/4","811/0","846/5"],"_characters":["102/0","323/2","435/1","483/1","669/0","680/1","682/0","689/0","816/2","864/2","864/0"],"_end":["102/0","267/0","498/0","632/0","709/2","842/0","844/0"],"_todo":["104/0","130/2","131/2","132/2","135/2","137/0","147/0","355/0","360/0","765/0","795/0","801/0","815/10","817/2","847/1"],"_place":["104/0","110/0","110/1","110/2","111/1","124/0","476/3","815/5"],"_diagram":["104/0"],"_showing":["104/0"],"_hierarchy":["104/0"],"_nodes":["104/0","126/0","128/0","142/1","178/4","187/0","593/0","598/0","642/3","755/2","868/0"],"_unique":["105/0","432/1"],"_lifetime":["105/0"],"_process":["105/0","129/2","690/0","719/0","772/0","776/0","805/3","806/2","810/0","835/1"],"_location":["106/0","135/1","244/0","762/1"],"_valuenode":["107/0","116/0","126/0"],"_manipulate":["107/0"],"_literal":["108/0","109/0","111/0","118/0","119/0","132/0","132/1","136/5"],"_literalnode":["108/0","109/0","111/0","118/0"],"_datanode":["109/0","118/0","125/0","126/0"],"_context":["109/0","118/0","638/3"],"_verbatim":["109/0","118/0","126/0"],"_popnode":["110/0","111/0"],"_store":["110/0","668/2"],"_holder":["110/0","110/1","110/2","111/1"],"_implicit":["110/0","110/1","111/1"],"_pop":["110/0"],"_explicit":["110/2"],"_indicates":["110/3","258/0","369/0","516/0","679/2","684/0","844/0"],"_expected":["110/3","620/0","635/0","639/2","643/3","686/1","777/8","809/3"],"_position":["110/3","131/0","207/0","762/0","762/2","798/2","798/4","798/5","798/6","798/7"],"_representing":["111/0","240/0","400/0","509/0","510/0","511/0","512/0","513/0","514/0","515/2","842/0"],"_linknode":["112/0","113/0","114/0","122/0","127/0"],"_link":["112/0","113/0","114/0","136/0","136/4","136/5","194/1","608/3","628/3","816/2","825/1","852/0","892/1"],"_foo":["112/0","877/1"],"_bar":["112/0","807/1","807/2","807/3"],"_label":["113/0","124/0","131/0","763/0"],"_whether":["114/0","374/0","378/0","381/0","390/0","800/8","871/4"],"_opcodenode":["115/0","116/0"],"_operands":["116/0"],"_evaluationnode":["117/0","119/0","121/0"],"_insert":["117/0","126/0"],"_evaluation":["117/0","119/0","121/0","818/1","818/0","833/1","839/0"],"_evaluate":["119/0"],"_produce":["119/0","664/0"],"_script":["119/0","121/0","767/0","810/3","813/1","815/1","839/0"],"_executionnode":["120/0"],"_ignored":["121/1","133/1","758/1","841/3","851/2"],"_labellednode":["122/0","123/0"],"_targeted":["122/0"],"_labelled":["122/0","123/0","135/1","136/1","763/1"],"_labelnode":["124/0"],"_referencing":["124/0"],"_mylabel":["124/0"],"_jumpdest":["124/1","131/1","135/1"],"_inserted":["124/1","125/0","414/1"],"_mydata":["125/0"],"_padded":["125/2","500/0","800/10"],"_regarded":["125/2"],"_impact":["125/2","624/2","688/0","762/2"],"_anything":["125/2","265/1","809/3"],"_past":["125/2","632/0","684/1"],"_child":["126/0","128/0","134/5","134/7","136/3","570/4","598/0","603/0","654/0"],"_represent":["126/0","386/0","475/4","532/0","556/0","678/1","704/0"],"_piece":["126/0"],"_frame":["127/0"],"_reference":["127/0","651/2"],"_resolving":["127/0"],"_locations":["127/0"],"_myscope":["127/0"],"_scope":["127/0","128/0","134/5","134/7","134/8","136/2","136/3","763/0","800/1"],"_statements":["128/0"],"_provides":["129/0","136/4","160/1","177/0","186/0","398/1","398/2","476/4","766/0","797/2","800/2","805/2","857/0","858/3","860/3","884/0"],"_quick":["129/0","800/0","855/1"],"_high":["129/0","479/0","756/0"],"_overview":["129/0","800/0","804/0","891/0"],"_grammar":["129/0"],"_compiled":["129/1","893/5"],"_language":["129/1","399/1","556/0","587/0","741/1","807/3","840/0","849/0","891/0"],"_hand":["129/1"],"_coded":["129/1"],"_needs":["129/1","350/1","817/2","856/0","860/3","868/1"],"_assembled":["129/1","131/1","762/0","763/0","763/1","763/2"],"_very":["129/2","328/0","328/1","475/1","476/2","608/1","628/2","713/3","753/0","754/0","806/0","824/0"],"_intentionally":["129/2","608/1","769/0"],"_closely":["129/2","231/1","759/0"],"_related":["129/2","187/2","330/3","878/0","881/0"],"_underlying":["129/2","204/2","351/1","476/5","800/1"],"_embedding":["129/3","134/1"],"_programs":["129/3","763/0"],"_bootstrap":["129/3"],"_runtime":["129/3","134/1","860/4"],"_embedded":["129/3","134/0","134/5","135/0"],"_computing":["129/3","365/0","823/0","889/0","904/0"],"_necessary":["129/3","160/1","679/1","718/1","815/0","824/0"],"_offsets":["129/3","762/2","764/0"],"_line":["129/4","168/0","628/2","757/0","767/0","771/0","772/0","790/0","790/2","790/3","790/4","826/1","827/1","833/2","835/0","839/1","841/2","842/0","846/4"],"_human":["129/4","247/0","356/0","360/0","362/0","362/1","400/2","405/1","583/2","667/0","667/1","757/0","764/1","860/6","868/0"],"_readable":["129/4","247/0","356/0","360/0","362/0","400/2","405/1","515/0","583/2","667/0","667/1","757/0","764/1","809/3","860/6","868/0"],"_ish":["129/4"],"_opcodes":["129/4","130/1","130/0"],"_literals":["129/4","132/0"],"_s":["129/0","165/0","211/0","357/0","359/0","628/0","631/0","635/0","636/0","639/0","643/0","686/0","691/0","830/0","864/0","875/0","898/0","908/0"],"_either":["130/0","165/0","180/2","197/0","445/0","481/0","530/1","659/1","661/1","763/1","822/0","847/0","864/2"],"_functional":["130/0","130/1","872/1"],"_instructional":["130/0","130/1"],"_recommended":["130/1","142/3","144/3","145/1","151/1","155/1","163/0","713/3","718/3","751/5","753/0","756/2","808/0","822/1","823/2","847/0"],"_raise":["130/1"],"_warning":["130/1","646/0","761/0","823/3","832/0"],"_examples":["130/2","131/2","132/2","265/3","386/0","516/1","531/0","759/0","764/0","765/0","795/0","798/8","860/6"],"_jumped":["131/0","762/0"],"_point":["131/1","475/4","548/0","550/0","714/1"],"_labels":["131/0","135/1","136/0","136/2","136/4","762/0"],"_puts":["132/0"],"_executed":["132/0","134/4","713/2","777/0","839/0","893/5"],"_enter":["133/0","766/1","864/2"],"_comment":["133/0","478/0"],"_text":["133/0","219/0","523/0","525/0","560/0","671/0","671/1","672/0","673/0","815/3","815/6","829/0","837/0","841/1","849/0","850/0","853/0"],"_semi":["133/0"],"_colon":["133/0"],"_comments":["133/0"],"_common":["134/0","134/1","144/1","149/1","154/1","164/0","164/1","165/0","178/0","178/4","211/1","242/2","245/1","245/2","310/3","323/4","324/2","475/1","476/6","485/0","517/0","558/0","633/1","692/0","766/0","820/0","821/1","856/0","866/0"],"_one":["134/0","165/0","197/0","197/1","204/0","211/1","311/1","348/1","350/0","369/1","476/0","476/2","509/0","511/0","600/1","608/2","626/0","642/1","684/0","688/2","767/0","772/1","798/6","817/2","826/3","903/2"],"_init":["134/1","134/2","134/3","295/1","297/0","442/0"],"_contains":["134/3","260/0","345/0","436/1","505/0","639/2","650/0","815/3","844/1"],"_installed":["134/4","762/1","864/2"],"_important":["134/5","328/0","476/2","667/1","800/13","805/2","808/2","809/3","866/1","872/0"],"_jumps":["134/5"],"_relative":["134/5","762/2","807/2"],"_own":["134/5","142/1","144/3","145/1","151/1","155/1","201/1","476/0","751/0","751/4","771/0","806/2","855/0"],"_parent":["134/5","251/0","593/0","594/0"],"_scopes":["134/5","134/7","134/0","136/0","136/3","763/1"],"_enforced":["134/6","642/3"],"_segment":["134/7","135/0","135/1","136/0","136/3","136/4","763/1"],"_respect":["134/7"],"_anywhere":["134/7","211/2","868/1"],"_top":["134/8","230/2","847/0","873/0"],"_arbitrary":["135/0"],"_lookup":["135/0","213/0","213/1"],"_tables":["135/0","841/0"],"_constants":["135/0","433/1","505/0","506/0","507/0","508/0","509/0","510/0","511/0","512/0","513/0","514/0"],"_empty":["135/1","768/0"],"_adds":["135/1","329/3","330/3","848/0","851/0"],"_item":["136/1","877/4"],"_foobar":["136/1","136/5","386/1","387/2","388/2"],"_must":["136/2","165/0","182/0","197/1","201/1","229/1","265/1","299/3","312/0","313/2","322/1","323/5","324/2","325/1","328/2","329/4","477/1","515/1","536/1","551/2","551/3","639/1","642/0","708/2","709/1","758/0","762/1","777/4","798/2","798/5","798/6","800/16","806/3","810/1","816/2","822/0","823/2","842/0","846/2","846/5","863/1"],"_reachable":["136/2"],"_inside":["136/3"],"_respectively":["136/4"],"_accessed":["136/5","351/2","420/0","420/1","760/0","790/3","797/0"],"_pushed":["136/5"],"_links":["136/0","751/0","816/2","830/1","837/0","848/1","851/1","892/2"],"_exampl":["137/0"],"_placeholders":["137/0","414/1"],"_module":["138/0","178/5","821/3"],"_ledger":["139/0","140/0"],"_hardware":["139/0","140/0","313/1"],"_popular":["139/0","148/0","166/0","435/0","821/0","858/0"],"_brand":["139/0"],"_ledgersigner":["139/0","140/0"],"_connects":["140/0","179/1","201/0","756/0"],"_left":["140/1","140/2","777/5","800/10"],"_unspecified":["140/1","140/2","202/1","202/2","240/1","781/1","782/1"],"_environment":["140/1","333/1","622/0","767/0","811/0","821/2","823/0","894/1","894/3"],"_default":["140/1","140/2","142/3","145/0","151/0","155/0","160/2","161/0","162/0","163/1","167/1","179/4","182/1","202/1","217/1","245/2","260/0","329/3","330/3","336/1","350/0","352/0","584/0","722/1","723/1","724/1","728/1","729/1","730/1","741/1","751/2","756/0","756/1","761/0","763/0","768/0","772/1","796/3","800/3"],"_hid":["140/1"],"_browser":["140/1","741/1","812/0","819/1","855/0","857/0"],"_u2f":["140/1"],"_path":["140/2","140/0","188/0","336/1","336/0","584/0","586/0","597/0","597/1","599/1","600/1","601/1","603/0"],"_now":["141/0","866/2","877/3","878/0","879/1","880/0","881/0"],"_modular":["141/0"],"_ancillary":["141/0"],"_packages":["141/0","608/3","809/3","812/0","814/0","822/1","822/2","854/0"],"_part":["141/0","185/1","242/1","254/0","350/0","390/1","420/2","476/0","688/1","713/1","763/2","821/1","893/0"],"_core":["141/0","891/0"],"_functionality":["141/0","160/0","398/1","476/4","476/6","477/1","608/2","608/4","822/0","868/1"],"_situations":["141/0","683/1","692/0","713/3","808/2","816/2"],"_services":["142/0","142/2","161/1","162/0","163/0","163/1","163/2","163/4","166/1","178/2","201/2","751/3","756/0","858/1"],"_offer":["142/0","197/1","752/1","753/1","754/1"],"_web":["142/0","150/0","166/1","200/1","201/0","202/0","819/0","819/1","821/1","821/2","855/1","855/0","858/1","894/0","894/2"],"_accessing":["142/0"],"_these":["142/1","142/3","178/2","178/3","349/1","398/3","444/1","461/1","479/1","486/2","558/0","579/1","607/0","608/0","614/0","649/1","713/3","751/3","751/4","797/1","800/10","877/1","892/0","894/6","909/1"],"_providers":["142/1","142/0","144/0","149/0","154/0","158/0","160/0","167/0","179/1","180/0","180/2","184/2","190/0","195/0","197/0","202/0","312/0","479/0","884/0"],"_connecting":["142/1","168/0","857/0","858/0"],"_development":["142/1","819/1"],"_cluster":["142/1"],"_however":["142/2","312/0","322/1","324/2","325/1","420/2","435/1","435/2","475/3","593/0","642/3","690/1","713/3","769/0","806/5","818/1","899/0"],"_reliance":["142/2"],"_third":["142/2","166/1","756/0","858/1"],"_party":["142/2","166/1","661/1","661/2","756/0","858/1"],"_reduce":["142/2","185/2","434/1","808/0"],"_resilience":["142/2"],"_security":["142/2","324/2","682/0","688/0","688/1","805/2","807/0","808/0","808/2","809/3","822/1","823/0","855/0"],"_increase":["142/2","808/2"],"_trust":["142/2","756/0"],"_mitigate":["142/3"],"_issues":["142/3","328/1","434/1","796/3","809/3","893/3"],"_p":["142/0","145/0","151/0","155/0","163/0","435/0","528/0","529/0","627/0","631/0","637/0","638/0","641/0","642/0","643/0","685/0","690/0","751/0","814/0","833/0","858/0","896/0","907/0"],"_etherscanprovider":["143/0","144/0","631/2"],"_backed":["143/0","148/0","153/0","157/0","162/0","172/0","751/1"],"_combination":["143/0","777/6"],"_etherscan":["143/0","144/3","144/0","145/1","628/3","751/1","752/0","752/2","868/0"],"_apis":["143/0","168/0","479/0","751/6","754/1","754/4","821/1"],"_apikey":["144/0","144/2","145/0","149/0","149/2","150/0","150/1","151/0","154/0","155/0","190/0","191/0","192/0","193/0"],"_id":["144/1","149/1","149/2","154/1","245/2","248/0","287/0","287/1","316/0","560/0","640/0","703/0","703/1","713/0","713/3","716/1","718/4","718/5","753/2"],"_shared":["144/2","145/0","151/0","155/0","163/1","661/0","751/4","752/4"],"_key":["144/2","144/3","144/0","145/0","145/1","149/0","150/0","151/0","151/1","154/0","155/0","155/1","163/0","163/2","163/4","190/0","191/0","192/0","193/0","219/0","310/4","329/2","331/0","332/0","333/0","340/0","347/0","420/2","420/3","435/1","439/1","439/0","440/0","565/0","590/0","591/0","592/0","598/0","601/0","602/0","602/1","634/2","653/0","656/0","657/0","658/0","659/0","660/0","661/1","661/2","661/0","662/0","665/0","665/1","666/0","666/1","726/0","751/1","751/4","751/5","752/2","754/2","755/0","756/1","760/0","769/0","805/3","805/0","815/2","852/0","857/1","858/4","904/0"],"_reduced":["144/2","145/0","151/0","155/0","601/1"],"_performance":["144/2","145/0","151/0","155/0","751/0","751/6","756/2"],"_throttled":["144/2","145/0","151/0","155/0","751/4"],"_requests":["144/2","145/0","151/0","155/0","163/3","185/2","201/0","220/1","809/2","814/0","866/0"],"_highly":["144/3","145/1","151/1","155/1","163/0","718/3","751/5","753/0","755/2","756/2","822/1","823/2","847/0"],"_production":["144/3","145/1","151/1","155/1","161/0","163/0","624/1"],"_register":["144/3","145/1","151/1","155/1","231/0","740/0"],"_homestead":["144/0","146/0","149/0","152/0","154/0","156/0","158/1","159/0","162/1","245/2","247/0","713/2"],"_keys":["145/0","151/0","155/0","163/1","163/0","211/0","348/2","583/0","590/1","751/0","751/2","751/3","751/4","756/1","815/1","815/8","815/10","823/0","823/1","868/0"],"_mainnet":["146/0","152/0","156/0","158/0","159/0","162/2","164/1","796/1"],"_ropsten":["146/0","152/0","156/0","164/1","713/2","796/1"],"_proof":["146/0","152/0","156/0","254/0","299/3"],"_work":["146/0","152/0","156/0","211/3","254/0","398/1","785/1","808/0","817/2","856/0","894/1","903/0"],"_testnet":["146/0","152/0","156/0"],"_rinkeby":["146/0","152/0","156/0"],"_authority":["146/0","152/0","156/0"],"_ouml":["146/0","152/0","156/0"],"_rli":["146/0","152/0","156/0"],"_clique":["146/0","152/0","156/0"],"_kovan":["146/0","152/0","156/0"],"_supported":["146/0","152/0","156/0","159/0","312/0","322/1","324/2","325/1","435/2","436/2","438/0","553/0","566/0","567/0","631/0","809/3","864/2","894/0"],"_networks":["146/0","152/0","156/0","159/0","164/0","165/0","287/2","713/1","796/2"],"_explain":["147/1","358/0","433/0","799/0","801/0","802/0"],"_history":["147/0"],"_gethistory":["147/0"],"_infuraprovider":["148/0","149/0","150/0"],"_infura":["148/0","149/0","150/0","151/1","166/2","628/2","751/1","753/0","753/2","858/2","868/0"],"_service":["148/0","163/0","211/0","751/1","751/2","751/5","753/0","754/0","756/1","756/2"],"_project":["149/2","753/2","813/1","824/1"],"_projectid":["149/2"],"_projectsecret":["149/2"],"_secret":["149/2","598/0","661/0"],"_public":["149/2","340/0","362/1","439/1","439/0","440/0","478/2","592/0","658/0","659/0","661/1","665/0","666/0","666/1","809/4","863/1"],"_sources":["149/2","333/0","348/2","823/3","893/4"],"_server":["149/2","201/1","628/0","628/3","819/0"],"_further":["149/2","212/0","863/1"],"_secure":["149/2","333/0","333/1","628/3","724/0","806/6","823/0","823/3","893/0"],"_quotas":["149/2"],"_websocketprovider":["150/0","201/0","202/0"],"_socket":["150/0","201/0","202/0"],"_endpoint":["150/0"],"_getwebsocketprovider":["150/0"],"_alchemyprovider":["153/0","154/0"],"_alchemy":["153/0","154/0","155/1","628/2","751/1","754/0","754/2","868/0"],"_cloudflareprovider":["157/0","158/0"],"_cloudflare":["157/0","158/0","628/3","868/0"],"_gateway":["157/0","755/0"],"_connection":["160/0","167/0","201/0","719/0","721/0","722/0","723/0","724/0","725/0","726/0","857/1","858/4","859/0","871/4","884/0"],"_providing":["160/0","860/5"],"_concise":["160/0"],"_js":["160/1","187/1","194/0","198/2","199/0","204/0","204/1","476/6","476/0","477/0","809/0","809/3","816/2","821/1","821/2","822/0","847/0","847/1","852/1","867/0","883/0","894/2"],"_cover":["160/1","709/1","872/1","890/0"],"_vast":["160/1","796/3"],"_majority":["160/1","161/6"],"_includes":["160/1","242/1","261/0","262/0","263/0","288/0","301/0","530/3","708/1","718/4","751/5","881/0"],"_classes":["160/1","190/0","311/1","312/0","313/2","322/1","324/2","325/1","328/1","328/0","329/0","330/0","398/3","619/1","739/1","854/0","868/0"],"_sub":["160/1","189/0","190/0","201/0","310/1","310/4","311/1","312/0","313/2","322/1","324/2","325/1","328/2","328/0","329/0","330/0","454/0","540/0","627/1","739/1","854/0"],"_classing":["160/1"],"_custom":["160/1","164/0","164/1","165/0","178/5","329/0","330/0","675/1","683/1","683/0","687/2","688/2","691/1","810/2","904/1"],"_configuration":["160/1","168/0","178/5","183/0","847/0","852/0","852/1"],"_users":["160/2","163/1","461/1","751/4","796/2","796/5","877/3"],"_safest":["161/0"],"_easiest":["161/0","854/0","857/0"],"_begin":["161/0","475/5","685/0","690/0","758/0","841/1","842/0","846/2","857/0"],"_developing":["161/0","857/0","896/0"],"_robust":["161/0","753/0","754/0"],"_enough":["161/0","161/5","435/1","639/1","686/0","689/0","709/1","824/0"],"_fallbackprovider":["161/1","179/0","180/0"],"_backend":["161/1","161/3","161/6","171/1","179/5","182/0","201/0","628/3","751/3"],"_request":["161/2","176/0","179/2","198/1","198/0","199/1","199/0","200/1","200/0","279/0","280/0","281/0","282/0","283/0","284/0","285/0","286/0","287/0","319/0","320/0","324/0","325/0","329/0","330/0","628/3","751/6","809/4"],"_simultaneously":["161/2"],"_responses":["161/3","161/6","182/0","751/4","751/6"],"_checked":["161/3"],"_agree":["161/3","161/5","179/4","182/0"],"_quorum":["161/4","179/1","179/3","179/4","180/1","180/0","182/0","185/1"],"_reached":["161/4","179/3"],"_become":["161/6","821/0"],"_out":["161/6","476/5","638/0","687/0","709/2","751/2","800/1","809/0","809/4","822/1","871/4","890/1","894/3"],"_sync":["161/6","335/0","818/0"],"_compromised":["161/6","815/8"],"_favor":["161/6","649/1"],"_url":["162/3","167/0","189/1","189/0","190/0","191/0","193/0","202/0","202/1","719/0","721/0","852/0"],"_http":["162/3","167/0","167/2","628/3","724/0","864/2"],"_localhost":["162/3","167/2","202/1"],"_wss":["162/3"],"_com":["162/3","904/1"],"_getdefaultprovider":["162/0"],"_acquire":["163/0"],"_across":["163/1","278/0","608/0","815/6","817/2","892/0","899/0"],"_throttle":["163/1"],"_periods":["163/1"],"_load":["163/1","855/1","897/0"],"_realizing":["163/1"],"_monitoring":["163/2"],"_usage":["163/2","618/0","751/1","752/4","753/4","754/4","755/2","775/0","777/1","786/0"],"_metrics":["163/2","752/4","753/4","754/4","755/2"],"_tracking":["163/3","751/6"],"_specifying":["163/4","265/3","406/0","407/0","408/0","409/0","411/0","412/0","413/0","414/0","415/0","416/0","432/0","762/2"],"_official":["164/0","739/1","741/0","891/0"],"_projects":["164/0","751/1","751/3","854/0","893/1"],"_accept":["164/1","443/2","774/1"],"_networkish":["164/1","167/0","245/0"],"_definition":["164/1","387/2","829/0","836/1","868/1"],"_registry":["165/0","249/0"],"_intercept":["165/0"],"_dev":["165/0"],"_manually":["165/0","350/0","400/2","643/2","854/0"],"_json":["166/0","167/0","168/0","169/0","170/0","171/0","172/0","173/0","174/0","177/0","178/4","187/0","189/1","189/0","190/0","191/0","198/1","198/2","199/1","199/2","201/0","334/0","335/0","341/0","345/0","357/0","359/0","359/1","359/2","364/0","400/0","400/1","405/1","574/0","719/0","753/1","754/1","785/1","790/2","808/0","847/0","847/1","858/0","868/0","893/1","895/0","904/2","912/0"],"_rpc":["166/0","167/0","168/0","169/0","170/0","171/0","172/0","173/0","174/0","177/0","178/4","187/0","189/1","189/0","190/0","191/0","198/1","198/2","199/1","199/2","201/0","574/0","753/1","754/1","780/0","858/0","868/0"],"_major":["166/0","649/1","809/3","858/0","894/5","903/1"],"_implementations":["166/0","178/0","858/0","893/4","904/1"],"_geth":["166/1","178/1","178/5","178/6","187/0","628/2","858/1","868/0","893/4","904/1"],"_parity":["166/1","178/1","178/5","178/6","187/0","484/0","858/1","868/0","872/1","893/5","909/1"],"_jsonrpcprovider":["166/0","167/0","169/0","170/0","171/0","172/0","173/0","178/3","189/1","193/0","310/4"],"_connectioninfo":["167/0"],"_urlorconnectioninfo":["167/0","167/1","719/0"],"_querying":["167/2","859/0"],"_eth":["167/2","574/0"],"_chaindid":["167/2"],"_falling":["167/2"],"_back":["167/2"],"_networkid":["167/2"],"_info":["167/0","612/0","645/0","719/0","785/0"],"_implementation":["168/0","187/2","329/3","330/3"],"_specific":["168/0","171/1","178/0","212/0","244/0","268/0","350/1","434/1","559/0","628/3","683/1","762/1","805/0","809/3"],"_flags":["168/0","760/0","772/0","773/1","777/5","777/6","790/0","790/1","790/4"],"_settings":["168/0"],"_enable":["168/0"],"_unlock":["168/0","176/0","806/2"],"_accounts":["168/0","170/0","345/0","780/0","903/2","904/2","904/0"],"_expose":["168/0"],"_please":["168/1","327/1","571/1","800/18","808/0","809/2","809/4","814/0","868/1","872/2","892/1","894/3"],"_consult":["168/1","638/2"],"_documentation":["168/1","187/2","800/18","809/3","816/0","816/2","817/0","817/2","818/0","818/1","864/0","868/1","869/0","871/1","890/0","891/0"],"_local":["168/0","187/0","387/0","628/3","817/2"],"_jsonrpcsigner":["169/0","172/0","177/2","310/4","311/1"],"_addressorindex":["169/0","169/1"],"_getsigner":["169/0","310/4"],"_addresses":["170/0","301/0","433/0","435/0","435/1","590/1","598/0","602/1","868/1"],"_listaccounts":["170/0"],"_raw":["171/0","293/0","322/0","326/0","485/0","486/0","501/0","502/0"],"_messages":["171/0","310/0","310/2","331/0","568/1","885/1","885/2"],"_debugging":["171/1","178/2","211/2","415/1","611/0","624/2","644/0","752/0","754/1","754/4","766/0"],"_management":["171/1","178/2"],"_params":["171/0","198/1","199/1","615/0","616/0"],"_established":["173/0","224/0"],"_checks":["174/0","329/3","650/0","739/0"],"_getuncheckedsigner":["174/1"],"_details":["174/1","177/0","177/2","177/3","262/0","265/3","594/1","887/3"],"_unchecked":["174/0","175/0","177/0"],"_connectunchecked":["174/0"],"_jsonrpcuncheckedsigner":["174/0","177/0"],"_resolves":["175/0","217/0","218/0","219/0","279/1","294/0","313/0","322/0","324/0","325/0","330/3","341/0","654/0"],"_opaque":["175/0","177/1"],"_senduncheckedtransaction":["175/0"],"_locked":["176/0"],"_populating":["177/0"],"_before":["177/0","182/0","299/1","661/2","719/0","725/0","727/0","732/0","733/0","809/3","809/4","823/2","875/1"],"_returning":["177/0","341/0","628/3","719/0","792/0"],"_adjusted":["177/1"],"_discarded":["177/1"],"_remedy":["177/2","475/7","643/2"],"_immediately":["177/2","177/3","177/4","815/6"],"_queries":["177/2","751/6","797/0","884/1"],"_respond":["177/3"],"_instead":["177/3","190/1","211/2","262/0","311/1","335/2","450/1","478/3","615/1","631/2","634/2","668/1","674/1","763/1","800/4","851/2","901/0"],"_defer":["177/3"],"_releasing":["177/3"],"_responsible":["177/3","815/7"],"_uncheckedsigner":["177/4"],"_mock":["177/4","413/1"],"_quickly":["177/4","593/0"],"_vs":["178/1","476/0","484/0","486/1","718/4","796/1"],"_admin":["178/2","810/2","815/1"],"_deeper":["178/2"],"_exploration":["178/2"],"_swarm":["178/2"],"_whisper":["178/2"],"_including":["178/4","269/0","270/0","292/0","306/0","307/0","362/0","388/0","551/0","552/1","644/0","693/0","796/5","815/1","868/0","868/1","870/0","871/1","871/3","897/1"],"_trace":["178/5","754/4"],"_debug":["178/5","611/0","644/0"],"_internal":["178/5","530/0","532/0","813/1"],"_cache":["178/5"],"_etc":["178/5","362/1","366/0","389/2","476/0","628/2","667/1","815/1","815/8"],"_advanced":["179/0","398/3","476/4","751/6","754/1","754/4","759/2","852/1","890/0"],"_configured":["179/1","214/1","608/4","642/3"],"_priority":["179/1","179/2","180/3","184/0","184/2"],"_weight":["179/1","179/5","180/3","186/0"],"_dispatched":["179/2"],"_randomly":["179/2"],"_chosen":["179/2","184/2","476/0"],"_lower":["179/2","184/1","185/2","797/0","797/2","900/0","900/1","901/0","902/0"],"_selected":["179/2","772/1"],"_compared":["179/2","676/0"],"_others":["179/2","741/1","823/1"],"_accepted":["179/3","809/3"],"_rounded":["179/4","543/0"],"_give":["179/5"],"_influence":["179/5"],"_fallback":["179/0","180/0","181/0","183/0","184/0","185/0","186/0","756/1"],"_half":["180/1","182/1","691/1","817/2"],"_sum":["180/1","182/1","307/0"],"_weights":["180/1","182/1"],"_fallbackproviderconfig":["180/2","181/0","183/0","184/0","185/0","186/0"],"_defaults":["180/3","642/3","675/1"],"_configurations":["181/0"],"_configs":["181/0"],"_providerconfigs":["181/0"],"_config":["181/0","183/0","184/0","185/0","186/0","815/1","815/2","815/3","815/6","816/2","847/0","852/1"],"_upon":["182/0","399/3"],"_priorities":["184/1"],"_favoured":["184/1"],"_share":["184/2"],"_random":["184/2","333/0","503/0","805/3","823/0","823/2","823/3","893/5","899/0","899/2","900/0","901/0","902/0","909/1"],"_timeout":["185/0","230/0","629/0","725/0","727/0"],"_ms":["185/0","730/1"],"_affect":["185/1","822/1"],"_counted":["185/1"],"_traffic":["185/2","628/3","751/3"],"_stall":["185/0","224/0","228/1"],"_stalltimeout":["185/0"],"_trusted":["186/1"],"_ipcprovider":["187/0","188/0"],"_filename":["187/0","835/0"],"_system":["187/0","187/1"],"_complications":["187/1"],"_due":["187/1","224/0","435/1","548/1","688/0"],"_permissions":["187/1","667/1","751/1"],"_notes":["187/2","474/0"],"_websites":["187/2"],"_ipc":["187/0","188/0"],"_intended":["189/0","287/2","877/3"],"_classed":["189/0"],"_suffice":["189/1"],"_little":["189/1","254/1","255/1","256/2","259/1","299/2","307/1","475/1"],"_extra":["189/1","259/0"],"_effort":["189/1"],"_urljsonrpcprovider":["189/0","190/0","191/0"],"_geturl":["190/1","192/0","193/0"],"_getapikey":["190/1","191/0","192/0"],"_inheritedclass":["191/0"],"_examine":["192/0"],"_valid":["192/0","229/1","287/1","329/3","438/0","480/0","480/1","482/0","487/0","489/0","489/1","528/1","552/1","606/0","621/0","687/0","688/2","690/0","737/0","893/5"],"_modified":["192/0","684/0"],"_inheriting":["192/0","193/0"],"_inheritingclass":["192/0","193/0"],"_web3provider":["194/0","195/0","196/0"],"_meant":["194/0","593/0","771/0"],"_ease":["194/0"],"_moving":["194/0"],"_web3":["194/0","195/0","196/0","197/0","198/2","199/0","204/0","204/1","883/0","885/2","887/2","889/0","894/0"],"_based":["194/0","322/1","330/3","769/0","815/2","821/1"],"_wrapping":["194/0"],"_existing":["194/0","399/1","447/0","816/2"],"_web3httpprovider":["194/0"],"_web3ipcprovider":["194/0"],"_web3wsprovider":["194/0"],"_exposing":["194/0","476/4"],"_rest":["194/0"],"_wrap":["194/1"],"_wraps":["195/0"],"_external":["195/0","197/0","198/0","199/0","200/0","816/2"],"_externalprovider":["195/0","197/0","197/1","198/0","199/0","200/0"],"_web3compatibleprovider":["196/0"],"_mentioned":["197/0"],"_signatures":["197/1","714/0","715/0","716/0","906/0","909/1"],"_matching":["197/1","220/0","266/0","267/0","268/0","417/1","593/0"],"_follows":["198/0","199/0","231/1"],"_payload":["198/1","199/1","574/0"],"_minimum":["198/1","199/1","728/0"],"_differs":["198/2"],"_wrapped":["198/2","199/2","810/3"],"_semantics":["199/2"],"_async":["199/0","476/3"],"_sendasync":["199/0","200/0"],"_historically":["200/1","877/1"],"_synchronous":["200/1"],"_browsers":["200/1","894/2"],"_deprecated":["200/1"],"_quite":["200/1","607/0","628/2","753/0","797/0","805/1","815/2","821/0","873/0","894/0","895/0"],"_long":["200/1","323/2","323/3","495/0","495/1","500/1","501/0","585/1","668/2","669/0","696/0","725/0","806/0"],"_ago":["200/1","244/1"],"_websocket":["201/0","201/1","201/2","753/1","754/1"],"_persistent":["201/0"],"_multiplexing":["201/0"],"_pub":["201/0"],"_immediate":["201/0"],"_dispatching":["201/0"],"_newer":["201/1"],"_running":["201/1","224/1","759/0","778/0","779/0","893/5"],"_infrastructure":["201/1","755/2"],"_websockets":["201/1"],"_intensive":["201/1","805/3"],"_resources":["201/1","220/1","890/1","890/0"],"_maintain":["201/1","677/0","846/0","892/0"],"_client":["201/1","628/3","868/0"],"_charge":["201/2","871/1"],"_fees":["201/2","478/3"],"_endpoints":["201/2","752/1"],"_ws":["202/1"],"_coming":["204/0","816/1","868/0"],"_biggest":["204/0","476/2"],"_differences":["204/0","476/2","887/2"],"_encounter":["204/0","310/3","475/0","872/2","894/4"],"_strong":["204/1"],"_division":["204/1","633/1"],"_between":["204/1","334/1","341/1","349/0","475/8","476/2","480/1","515/0","674/1","718/5","807/1","839/5","877/1","887/2"],"_those":["204/1","350/1","800/1","810/3","872/1","894/4","896/0","909/1"],"_lumps":["204/1"],"_together":["204/1","593/0","738/0","798/3"],"_separation":["204/2"],"_concerns":["204/2"],"_stricted":["204/2"],"_subset":["204/2","860/5"],"_larger":["204/2","551/3"],"_variety":["204/2","583/0","631/1","870/0"],"_operate":["204/2","335/1"],"_able":["204/2","590/1","800/16","806/5","811/0"],"_rely":["204/2","583/0"],"_assumption":["204/2","328/1"],"_height":["205/0","206/0","222/0","244/1","252/0","269/0","289/0","305/0"],"_latest":["205/0","206/0","207/0","208/0","225/0","244/1","315/0","318/0"],"_getcode":["206/0"],"_bytes32":["207/0","668/0","670/0","671/0"],"_pos":["207/0"],"_addr":["207/0"],"_getstorageat":["207/0"],"_ever":["208/0","282/1","318/0","708/2","813/0","815/8"],"_next":["208/1","233/0","649/1","809/3","841/0","846/4","852/0","894/5","903/1"],"_gettransactioncount":["208/0","318/0"],"_hashes":["209/0","260/0","261/0","688/0","813/1","897/2","909/0"],"_objects":["210/0","231/1","231/2","359/1","476/3","530/2","651/2","868/0","874/0"],"_getblockwithtransactions":["210/0"],"_blockwithtransactions":["210/0","262/0"],"_naming":["211/0"],"_remember":["211/0","866/1"],"_refer":["211/1","800/18"],"_nearly":["211/2","808/0"],"_accepts":["211/2","359/2","435/2","634/2"],"_simplify":["211/2","400/2","608/0","799/0","879/1"],"_reading":["211/2"],"_simpler":["211/2"],"_offers":["211/3","751/2"],"_basic":["211/3","722/0","722/2","723/0","723/2","724/0","777/4","904/0"],"_help":["211/3","479/1","614/0","775/0","777/2","786/0","788/0","789/0","810/2","872/1","877/2","877/3","890/0"],"_names":["211/3","231/1","362/0","363/0","578/0","792/0","868/1","877/2","897/1"],"_ensresolver":["212/0"],"_inquire":["212/0"],"_about":["212/0","477/2","642/2","796/3","800/1","800/3","807/0","810/3","815/2","880/0"],"_resolver":["212/0","214/1","215/0","216/0","217/0","218/0","219/0"],"_getresolver":["212/0"],"_reverse":["213/0"],"_registrar":["213/0"],"_exist":["213/1","329/3"],"_lookupaddress":["213/0"],"_looks":["214/0"],"_owned":["214/1","331/0","345/0"],"_resolvename":["214/0","321/0","578/0"],"_multicoin":["217/0"],"_stored":["217/0","218/0","219/0","475/7","767/0"],"_cointype":["217/0","217/1"],"_getaddress":["217/0","313/0","436/0","437/1","784/0"],"_coint":["217/0"],"_cointtype":["217/0"],"_content":["218/0","628/3","719/0","844/0","844/1","846/0","846/1","846/3"],"_getcontenthash":["218/0"],"_entry":["219/0","265/1","265/2","271/0"],"_gettext":["219/0"],"_keep":["220/1","271/0","808/0","809/2","809/3","816/2","818/0","861/0","868/0","894/0"],"_mind":["220/1","271/0","684/1","800/13","808/0","809/1","809/2","861/0"],"_discard":["220/1"],"_old":["220/1","642/1"],"_too":["220/1","227/3","637/0","777/8"],"_broad":["220/1"],"_getlogs":["220/0","411/0"],"_getnetwork":["221/0"],"_recently":["222/0","227/3","244/1"],"_getblocknumber":["222/0"],"_guess":["223/0","643/0","806/1","806/3","823/1"],"_getgasprice":["223/0","317/0"],"_heen":["224/0"],"_ignoring":["224/0"],"_errors":["224/0","351/2","434/1","475/5","609/0","614/0","624/0","624/1","626/0","627/0","628/0","629/0","630/0","631/0","632/0","633/0","634/0","635/0","636/0","637/0","638/0","639/0","640/0","641/0","642/0","643/0","645/0","646/0","647/0","683/1","878/0"],"_active":["224/0"],"_yet":["224/0","227/3","642/0","777/4","892/2"],"_testing":["224/1","606/0","809/3","893/0","898/0","903/1"],"_attaching":["224/1"],"_scripts":["224/1","767/0","810/2","812/0","872/1","904/1"],"_smoothly":["224/1"],"_getters":["225/2"],"_submit":["226/0"],"_accurate":["226/1"],"_accounted":["226/1"],"_affected":["226/1"],"_relevant":["226/1","814/1"],"_unknown":["227/0","245/2","247/1","329/2","615/0","616/0","630/0","777/5"],"_search":["227/1","266/0","267/0","268/0","417/1","418/0","419/0","653/1"],"_restrictive":["227/2"],"_consider":["228/1","475/6"],"_waitfortransaction":["228/1","230/0"],"_below":["228/1","572/2","625/0","751/0","807/0","822/1"],"_transactionreceipt":["228/0","294/0","638/1"],"_submits":["229/0"],"_correct":["229/2","739/1","806/2","893/4"],"_sufficient":["229/2","476/4"],"_sendtransaction":["229/0","325/0","329/1"],"_transactionhash":["230/0","276/0","294/4","303/0"],"_confirms":["230/1","230/2","230/0","294/0","294/1"],"_blocking":["230/1"],"_blocks":["230/2","244/1","292/0","294/0","299/1","306/0","309/1","732/0","758/0","760/0","837/1"],"_txreceipt":["230/0"],"_eventemitter":["231/0"],"_obeserver":["231/0"],"_pattern":["231/0","434/1"],"_callbacks":["231/0"],"_occur":["231/0","593/0","627/1","628/1","632/1","633/1","638/1","733/0","751/4","877/4"],"_emitter":["231/1","231/0"],"_complex":["231/1","265/3","558/0","796/1"],"_normalized":["231/2","432/3","484/0","501/0","574/1","663/2","673/0"],"_internally":["231/2","234/1","435/2","476/4","477/0","478/2","478/3","479/1","756/0","756/1","800/10"],"_triggered":["232/0","233/0","271/0"],"_eventname":["232/0","233/0","234/0","235/0","235/1","236/0","236/1","237/0","237/1","238/0","239/0"],"_notify":["234/0"],"_generally":["234/1","254/1","255/1","256/2","259/1","299/2","307/1","329/0","330/0","417/0","443/2","476/4","634/1","642/2","661/1","688/1","810/3","855/0"],"_emit":["234/0"],"_topic":["240/0","241/0","365/0","378/1","409/0","411/0","411/1","418/0","422/0","425/0","798/2","798/4","798/5","798/6","798/7","800/4","800/6","800/7","800/15"],"_eventfilters":["240/2","241/3"],"_sets":["241/0","798/2","850/0"],"_omitted":["241/1","486/0","486/1","486/2","498/1","756/1","839/5","900/1"],"_isprovider":["243/0"],"_specifies":["244/0","367/0"],"_earliest":["244/1"],"_pending":["244/1"],"_prepared":["244/1"],"_mining":["244/1","259/0"],"_negative":["244/1","445/0","509/0","553/0"],"_hexidecimal":["244/1"],"_ensaddress":["245/2","249/0"],"_populated":["245/2"],"_chainid":["248/0","287/0","330/3","703/0","713/0","718/2","718/3"],"_previous":["251/0","679/2"],"_parenthash":["251/0"],"_timestamp":["253/0","291/0"],"_mine":["254/0"],"_property":["254/1","255/1","256/2","259/1","299/1","299/2","309/1","351/2","480/1","570/3","570/4","638/3","639/2","649/0","652/0","800/8","830/0","875/2","898/0"],"_interest":["254/1","255/1","256/2","259/1","307/1"],"_difficulty":["255/0","808/2"],"_met":["255/0"],"_maximum":["256/0","283/0","514/0","729/0"],"_permitted":["256/0","283/0"],"_voted":["256/1"],"_down":["256/1","475/1","628/3","808/2"],"_miners":["256/1"],"_adjust":["256/1"],"_bandwidth":["256/1"],"_gasused":["257/0","300/0"],"_coinbase":["258/0"],"_subsidy":["258/0"],"_reward":["258/0"],"_go":["258/0"],"_choose":["259/0"],"_extradata":["259/0"],"_substantially":["260/0","624/2"],"_condition":["265/1","638/2","798/2","798/3"],"_treated":["265/2","323/0","323/1","761/0"],"_starting":["266/0","846/4"],"_inclusive":["266/0","267/0","480/1","894/7"],"_criteria":["266/0","267/0","268/0"],"_fromblock":["266/0"],"_blockhash":["268/0","270/0","290/0","302/0"],"_blocknumber":["269/0","289/0","305/0"],"_org":["271/0"],"_orphaned":["271/0"],"_indicate":["271/0","643/3"],"_likely":["271/0","350/1","398/2","478/3","713/2","796/2","800/1","806/6","894/5","903/1"],"_again":["271/0","732/0","733/0","815/0"],"_near":["271/0"],"_transactionlogindex":["272/0"],"_transactionindex":["277/0","298/0"],"_logindex":["278/0"],"_describes":["279/0"],"_processed":["279/0","351/1","684/0","777/4","800/8","803/0"],"_fields":["279/1","324/1","325/0"],"_transactionrequest":["279/0","280/0","281/0","282/0","283/0","284/0","285/0","286/0","287/0","319/0","320/0","324/0","325/0","329/1","329/3","329/0","330/1","330/0"],"_unit":["284/0","516/0","519/0","521/0","710/0","803/0","911/0"],"_authorized":["287/0"],"_disable":["287/1"],"_dangerous":["287/2"],"_care":["287/2"],"_replayed":["287/2"],"_were":["287/2","426/0","877/2","893/4","893/5","893/6","904/1","909/1"],"_possibly":["287/2","335/1","752/0","823/1"],"_initial":["292/0","783/0"],"_confirmations":["292/0","306/0"],"_serialized":["293/0","359/1","601/0","705/1","716/1","717/0","718/0","718/1","910/0"],"_failed":["294/2","638/1","638/2"],"_status":["294/3","294/4","299/1","309/0","775/0"],"_rejected":["294/3","615/1","684/0"],"_original":["294/4","363/1","366/0","800/14","877/2"],"_created":["297/0","333/2","350/0","352/0","400/2","583/0","756/1","893/4","893/6","904/1","909/1"],"_getcontractaddress":["297/1","441/0"],"_utility":["297/1","323/5","330/2","649/0","757/0","766/0"],"_contractaddress":["297/0"],"_intermediate":["299/0","812/0"],"_byzantium":["299/1","308/0","309/1"],"_hard":["299/1","308/0","309/1","769/0"],"_fork":["299/1","308/0","309/1"],"_replaced":["299/1","839/1","839/3"],"_verify":["299/3","593/0","663/0","664/0","814/1"],"_transition":["299/3"],"_fraud":["299/3"],"_considering":["299/3"],"_logsbloom":["301/0"],"_ordered":["307/0"],"_cumulative":["307/0"],"_cumulativegasused":["307/0"],"_post":["308/0","309/1"],"_reverted":["309/0","709/2"],"_sign":["310/0","310/2","322/0","323/4","324/0","326/0","331/0","342/0","631/2","660/0","665/1","718/1","751/0","751/5","752/2","753/2","754/2","755/0","857/1","858/4","885/1","885/2"],"_largely":["310/1"],"_metamask":["310/2","857/0","868/0"],"_broadcasting":["310/2"],"_signers":["310/3","310/0","885/0"],"_knows":["310/4","806/2"],"_private":["310/4","331/0","332/0","333/0","347/0","435/1","439/1","439/0","583/0","590/1","591/0","598/0","602/0","602/1","634/2","656/0","657/0","661/1","665/1","666/1","796/1","815/1","823/0","823/1","857/1","858/4","868/0","904/0"],"_acquired":["310/4","751/4"],"_instantiated":["311/0","619/1","773/1","777/3"],"_concrete":["311/1"],"_voidsigner":["311/1","325/1","342/0","343/0","344/0"],"_implement":["312/0","313/2","322/1","324/2","325/1","579/1","788/0","789/0"],"_simply":["312/0","399/3","796/4","811/0"],"_around":["313/1","475/5","753/0","754/0","806/4","813/1","816/2"],"_asynchronous":["313/1","328/1","335/2","476/2"],"_issigner":["314/0"],"_getchainid":["316/0"],"_cost":["320/0","639/1","639/2","643/1","762/3","797/0","806/1"],"_ensname":["321/0"],"_message":["322/0","322/1","323/0","323/1","568/0","568/1","615/0","616/0","617/0","620/0","622/0","623/0","624/1","663/0","775/0","784/0","786/0","787/0","813/2"],"_signmessage":["322/0"],"_rawsignature":["322/0","326/0","501/0"],"_converted":["323/0","323/5","435/2","439/1","444/0","462/0","463/0","568/1","694/0","893/5"],"_utf8":["323/0","672/0","673/0","675/0","685/0","686/0","687/0","688/0","689/0","690/0","691/0","693/0","694/0","695/0"],"_binary":["323/1","349/0","350/1","398/0","398/2","475/4","479/1","482/0","530/2","790/1","860/3"],"_x1234":["323/2","531/0"],"_equivalent":["323/3","432/3","520/0","522/0","694/0","909/1"],"_x12":["323/3"],"_x34":["323/3"],"_arrayify":["323/5","490/0"],"_missing":["324/1","325/0","486/2","502/1","620/0","621/0","635/0","636/0","686/0","821/2","822/0","823/3","872/2"],"_reasons":["324/2","628/1","631/1","684/0","809/1","855/0","864/1"],"_clients":["324/2","796/3"],"_signtransaction":["324/0"],"_populates":["325/0"],"_offline":["325/1"],"_signs":["326/0"],"_typed":["326/0","523/0","525/0","570/0","572/0","573/0","574/0","575/0","576/0","577/0","578/0","664/0"],"_domain":["326/0","570/1","570/2","573/0","574/1","574/0","576/0","577/0","578/0","664/0","863/1"],"_signtypeddata":["326/0","327/2","574/0"],"_spcify":["327/2","571/2"],"_renamed":["327/2","420/2","571/2"],"_bit":["327/2","551/0","571/2","668/0","800/1","818/1","864/0"],"_immutable":["328/0","339/0","452/0","476/2","651/2","874/0"],"_deals":["328/1","642/3"],"_critical":["328/1","893/0"],"_potentially":["328/1"],"_valuable":["328/1"],"_crypto":["328/1"],"_keeping":["328/1","684/1","814/1","866/2"],"_throughout":["328/1","527/0","558/0","816/2","846/3"],"_cycle":["328/1","733/0"],"_helps":["328/1","398/1","877/7"],"_prevent":["328/1","667/1","713/1","893/3"],"_serious":["328/1"],"_extend":["328/2","844/0"],"_super":["328/2","777/4","810/0"],"_overridden":["329/0","330/0","703/1"],"_behaviour":["329/0","330/0","653/1","751/6","796/3"],"_copy":["329/1","330/1","504/0","578/0","651/0","655/0","855/0","871/0","871/1"],"_checktransaction":["329/0","330/1","330/3"],"_procedure":["330/1"],"_fill":["330/1","821/3"],"_promises":["330/2"],"_resolveproperties":["330/2","654/0"],"_inherits":["331/0","848/0"],"_externally":["331/0","345/0"],"_eoa":["331/0","346/0","347/0","348/0"],"_privatekey":["332/0","347/0","591/0","656/0","657/0"],"_cryptographically":["333/0"],"_entropy":["333/0","333/1","605/0"],"_thrown":["333/1","436/1","489/1","495/1","500/1","609/0","615/1","622/1","718/5","839/2","839/4"],"_createrandom":["333/0"],"_encrypted":["334/0","335/0","815/2","815/6","815/8"],"_decryption":["334/1","341/1","807/1"],"_indicating":["334/1","341/1","803/0"],"_towards":["334/1","341/1"],"_completion":["334/1","341/1","807/1"],"_fromencryptedjson":["334/0","335/2"],"_synchronously":["335/1"],"_lock":["335/1"],"_trivial":["335/1","810/0","863/0"],"_duration":["335/1"],"_fromencryptedjsonsync":["335/0"],"_phrase":["336/0","585/0","588/0","604/0","605/0","606/0","881/0"],"_wordlist":["336/3","336/0","587/0","588/0","605/0","606/0","734/0","735/0","736/0","737/0","738/0","739/1","739/0","740/0","742/0","743/0","744/0","745/0","746/0","747/0","748/0","749/0","750/0"],"_english":["336/3","741/1","743/0","868/0"],"_frommnemonic":["336/0","588/0"],"_desired":["339/0","713/3"],"_uncompressed":["340/0","439/1","658/0","665/0","666/1","868/1"],"_publickey":["340/0","592/0","658/0"],"_encrypt":["341/0"],"_carried":["342/1"],"_along":["342/2","399/1","478/1","714/1","760/0"],"_minimal":["345/0","363/1","363/0","365/0"],"_performed":["345/0","796/1"],"_encoding":["345/0","398/2","399/0","523/0","524/0","525/0","526/0","527/0","579/0","860/1"],"_externallyownedaccount":["345/0"],"_hd":["348/1","348/2","583/0","584/0","586/0","591/0","592/0","593/0","594/0","595/0","596/0","597/0","598/0","599/0","600/0","601/0","602/0","603/0","868/0","907/0"],"_encode":["348/2","349/0","353/0","398/1","399/3","410/0","411/0","412/0","413/0","461/0","524/0","526/0","528/0","573/0","663/2","669/0","688/1","716/1","860/3"],"_extended":["348/2","590/0","601/0","844/1","852/1"],"_abicoder":["349/0","350/0","351/0","352/0","353/0","354/0"],"_collection":["349/0","367/0","398/0","649/0","752/1","754/1","820/0","868/1","903/2"],"_coders":["349/0"],"_interoperate":["349/0","399/3"],"_never":["349/1","350/0","616/0","617/0","775/0","786/0","787/0","796/2"],"_greatly":["349/1"],"_coder":["349/0","351/1","351/0","352/0","353/0","354/0"],"_coercion":["350/0"],"_loaded":["350/0"],"_universally":["350/0"],"_coerced":["350/1"],"_decoded":["350/1","414/0","415/0","416/0","426/0","523/0","525/0","670/0"],"_coercefunc":["351/0"],"_describing":["351/1","359/1"],"_throws":["351/2","619/0","620/0","623/0","650/0","675/1"],"_contain":["351/2","536/1","669/0","823/0","846/2","848/1","851/1"],"_coerce":["351/0"],"_func":["351/0","719/0","720/0"],"_imported":["352/0"],"_defaultabicoder":["352/0"],"_according":["353/0","354/0","580/0","581/0","582/0","604/0","605/0","737/0","834/0"],"_paramtype":["353/0","354/0","361/0","370/0","383/0","386/0","387/0","388/0","389/0","390/0","391/0","392/0","393/0","395/0","396/0","397/0"],"_expand":["355/0"],"_section":["355/0","474/0","804/1","816/1","816/2","822/1","826/0","826/3","856/0","869/0","887/2","903/0"],"_b":["355/0","356/0","357/0","359/0","360/0","476/0","477/0","632/0","643/0","644/0","685/0","763/0","831/0","832/0","907/0"],"_j":["357/0","359/0"],"_fragments":["358/0","367/0","398/0","398/1","401/0","402/0","403/0","404/0","406/0","407/0","408/0","409/0","411/0","412/0","413/0","414/0","415/0","416/0","432/0","825/0"],"_fragment":["359/1","361/0","362/0","363/1","363/0","364/0","365/0","366/0","367/0","368/0","369/0","370/0","371/0","372/0","373/0","374/0","375/0","376/0","377/0","378/0","379/0","380/0","381/0","382/0","383/0","384/0","385/0","401/0","402/0","403/0","404/0","406/0","407/0","408/0","409/0","411/0","412/0","413/0","414/0","415/0","416/0","422/0","427/0","432/0","432/6","825/1","825/3","877/7","880/0"],"_deserialized":["359/2"],"_article":["360/1"],"_humanb":["360/0"],"_modifiers":["362/0","366/0"],"_white":["362/1"],"_space":["362/1","558/0"],"_aid":["362/1"],"_readability":["362/1"],"_fragmenttypes":["362/0","363/0","364/0","365/0"],"_except":["363/0","482/0","486/0","901/0"],"_unnecessary":["363/0","492/0","550/1"],"_whitespace":["363/0","585/1","737/0","738/0","758/1","843/0"],"_storing":["363/1"],"_fully":["363/1","417/1","435/1","627/1","678/1","709/2","868/1"],"_reconstruct":["363/1"],"_thinsp":["363/1"],"_stringify":["364/0"],"_sighash":["365/0","366/0","395/0","408/0","419/0","427/0","429/0","432/4","432/5"],"_insufficient":["366/0","638/0","639/0","642/1","709/2"],"_discards":["366/0","808/0"],"_anonymous":["366/0","378/0","378/1","800/2","800/3","800/4","800/5","800/7"],"_statemutability":["366/0","375/0","382/0"],"_constructorfragment":["368/1","376/0","377/0","404/0"],"_inputs":["370/0"],"_param":["370/0","383/0","386/0","387/0","388/0","389/0","390/0","391/0","392/0","393/0","395/0","396/0","397/0"],"_objectorstring":["371/0","376/0","379/0","384/0","396/0"],"_tra":["372/0","376/0","377/0","379/0","380/0","384/0","385/0","394/0","395/0","396/0","397/0"],"_lal":["372/0","377/0","380/0","385/0"],"_al":["372/0","377/0","380/0","385/0"],"_isfragment":["372/0"],"_receive":["374/0","435/2","823/3"],"_payable":["374/0","375/2","382/2"],"_mutability":["375/0","381/2","382/0"],"_nonpayable":["375/2","382/2"],"_la":["376/0","379/0","384/0","394/0","395/0","396/0","397/0"],"_isconstructorfragment":["377/0"],"_inject":["378/1","818/1"],"_topic0":["378/1"],"_eventfragment":["379/0","380/0","390/1","402/0","407/0","422/0"],"_iseventfragment":["380/0"],"_pure":["381/2","382/2"],"_view":["381/2","382/2"],"_outputs":["383/0","877/7","893/5"],"_functionfragment":["384/0","385/0","403/0","406/0","427/0"],"_isfunctionfragment":["385/0"],"_unnamed":["387/1","388/1"],"_tuple":["388/0","389/3","393/0","393/1"],"_symbols":["388/0"],"_primitive":["389/1"],"_uint256":["389/2","424/2","430/2","432/3","514/0","800/12"],"_arrays":["389/3","392/0","392/1","527/0"],"_basetype":["389/0"],"_marked":["390/0"],"_applies":["390/1"],"_children":["391/0","593/0","602/1"],"_arraychildren":["391/0"],"_arraylength":["392/0"],"_components":["393/0","398/0","417/1","529/1","551/0","600/1","796/5","877/7"],"_outputtype":["395/0"],"_isparamtype":["397/0"],"_organize":["398/1"],"_component":["398/1","528/1","532/0","599/1"],"_decoding":["398/2","399/0","860/1"],"_convenient":["398/2"],"_framework":["398/3","821/0","877/7"],"_tool":["398/3","752/0","816/0","817/2"],"_find":["398/3","572/2"],"_abstracts":["399/0"],"_standards":["399/1"],"_organically":["399/1","809/0"],"_evolved":["399/1"],"_side":["399/1","478/1"],"_languages":["399/1","400/1","653/1","741/0","840/0","893/4","895/0"],"_adopted":["399/1"],"_remain":["399/1","893/0"],"_understand":["399/2","796/3","805/0","805/2"],"_agreed":["399/3"],"_expect":["399/3"],"_typing":["400/2","434/1"],"_referenced":["400/2"],"_getfunction":["406/0"],"_getevent":["407/0"],"_selector":["408/0","429/0","432/5","893/6","906/0"],"_getsighash":["408/0"],"_geteventtopic":["409/0"],"_encoded":["410/0","411/0","412/0","413/0","524/0","526/0","528/0","529/0","570/0","580/0","581/0","582/0","632/1","670/0","705/1"],"_concatenated":["410/0","485/0"],"_pass":["410/0","687/2","688/2","691/1","759/0","860/4"],"_encodedeploy":["410/0"],"_nibble":["411/1","436/1","485/0"],"_encodefiltertopics":["411/0"],"_encodefunctiondata":["412/0"],"_normally":["413/0"],"_authors":["413/1","871/4"],"_encodefunctionresult":["413/0"],"_decodeeventlog":["414/0"],"_inspecting":["415/1"],"_decodefunctiondata":["415/0"],"_decodefunctionresult":["416/0"],"_parselog":["418/0"],"_logdescription":["418/0","421/0","422/0","423/0","424/0","425/0"],"_parsetransaction":["419/0","717/0"],"_transactiondescription":["419/0","426/0","427/0","428/0","429/0","430/0","431/0"],"_positional":["420/0","420/1"],"_argument":["420/0","436/1","617/0","620/0","634/0","634/1","635/0","637/0","650/0","772/1","773/1","866/0"],"_additionally":["420/1","716/1","807/3"],"_reserved":["420/2","691/0","800/4"],"_collision":["420/3"],"_matched":["429/0"],"_ambiguous":["432/1","663/2","696/0"],"_uint":["432/3","432/4","800/10"],"_topichash":["432/4"],"_referred":["432/5"],"_xa9059cbb":["432/6"],"_checksumming":["433/0"],"_addresszero":["433/1","506/0"],"_nibbles":["434/0","482/0","483/0","501/0","506/0","507/0","658/1","659/1","758/0"],"_mixed":["434/0","434/1","436/1"],"_checksum":["434/1","434/2","435/0","436/0","436/1","606/0"],"_uppercase":["434/1"],"_lowercase":["434/1"],"_letters":["434/1","846/2","846/5"],"_risk":["434/1"],"_introduced":["434/1"],"_cut":["434/1"],"_paste":["434/1"],"_icap":["435/0","435/2","435/3","437/0"],"_early":["435/0","751/3","841/1"],"_introduce":["435/0"],"_banking":["435/0"],"_industry":["435/0"],"_iban":["435/0","435/1"],"_country":["435/0"],"_xe":["435/0"],"_encodes":["435/1","573/0"],"_fit":["435/1","668/1"],"_adapted":["435/1"],"_large":["435/1","475/7","608/3","810/1","868/1","893/4","903/2"],"_preferred":["435/1","797/2","874/0"],"_select":["435/1"],"_compatibly":["435/1"],"_general":["435/2","807/2","809/4","816/2","820/0","867/1"],"_longer":["435/2","495/1","500/1","649/1","816/2","879/1","903/2"],"_widely":["435/2"],"_anymore":["435/2"],"_geticapaddress":["435/3","437/0"],"_c":["435/0","633/0","637/0","638/0","639/0","641/0","642/0","643/0","678/0","680/0","686/0","690/0","772/0","833/0","858/0","864/0"],"_hexstring":["436/1","445/0","482/0","483/0","491/0","492/0","499/0","546/0"],"_supports":["437/1","476/3","789/0","826/2","830/1","831/1","832/1","834/1","836/2"],"_restrictions":["437/1"],"_icapaddress":["437/0"],"_isaddress":["438/0"],"_publicorprivatekey":["439/0"],"_compressed":["439/1","659/0","666/1","666/0","868/1"],"_derivation":["439/1","769/0","805/0","815/2"],"_computeaddress":["439/0"],"_ecdsa":["440/0"],"_digest":["440/0","561/0","562/0","563/0","564/0","568/0","660/0","665/1","665/0"],"_recoveraddress":["440/0"],"_create2":["442/0"],"_getcreate2address":["442/0"],"_salt":["442/0"],"_initcodehash":["442/0"],"_safely":["443/1","444/0","475/8","860/5"],"_mathematical":["443/1","461/0","475/8"],"_magnitude":["443/1"],"_take":["444/0","805/1","806/2","806/5","806/0"],"_ambiguously":["444/0"],"_numberish":["444/0","451/0","492/0","699/0","700/0","702/0"],"_bignumberish":["444/0","515/3","699/0","700/0","702/0"],"_byteslike":["446/0","481/0","493/0","496/0","528/1","701/0","711/0"],"_uint8array":["446/0","490/0","493/0","494/0","495/0","503/0","523/0","525/0","672/0","900/0","901/0"],"_bigint":["449/0"],"_environments":["449/0","810/1","894/6"],"_int":["449/0"],"_abignumberish":["451/0","492/0"],"_othervalue":["453/0","454/0","455/0","464/0","465/0","466/0","467/0","468/0","539/0","540/0","541/0","542/0"],"_times":["455/0","541/0","731/0","793/1"],"_mul":["455/0","541/0"],"_div":["456/0","457/0","542/0"],"_divisor":["456/0","457/0","532/0"],"_remainder":["457/0"],"_mod":["457/0","551/2"],"_power":["458/0"],"_exponent":["458/0"],"_pow":["458/0"],"_absolute":["459/0","762/0"],"_abs":["459/0"],"_beyond":["460/0"],"_bitcount":["460/0"],"_least":["460/0","809/1","900/0","902/0"],"_significant":["460/0"],"_zero":["460/0","469/0","495/0","500/0","506/0","507/0","510/0","544/0","608/1","633/1","639/2","784/1","784/0"],"_mask":["460/0"],"_two":["461/0","477/1","512/0","679/2","716/1","800/2"],"_complement":["461/0","462/0","463/0"],"_elegant":["461/0"],"_width":["461/0","532/0","551/0","551/1","551/2","551/3","552/1","554/0"],"_while":["461/0","476/4","479/0","860/5","877/5","894/0"],"_efficiently":["461/0"],"_preserving":["461/0"],"_twos":["462/0","463/0"],"_bitwidth":["462/0","463/0"],"_fromtwos":["462/0"],"_totwos":["463/0"],"_eq":["464/0"],"_lt":["465/0"],"_le":["466/0"],"_lte":["466/0"],"_gt":["467/0"],"_ge":["468/0"],"_gte":["468/0"],"_iszero":["469/0","544/0"],"_greater":["470/1","687/1"],"_max":["470/1","514/0"],"_integer":["470/1","475/5"],"_min":["470/1","809/3"],"_tonumber":["470/0"],"_tostring":["471/0","547/0"],"_prefixed":["472/0","568/1","668/0"],"_tohexstring":["472/0","546/0"],"_isbignumber":["473/0"],"_couple":["474/0"],"_questions":["474/0"],"_come":["474/0"],"_frequently":["474/0","478/0","751/4","873/0"],"_problem":["475/0","628/2","796/3","809/4"],"_dealing":["475/0","476/2","667/1"],"_concept":["475/0"],"_currencies":["475/1"],"_broken":["475/1","476/6","806/6"],"_granularity":["475/1"],"_cents":["475/2"],"_dollar":["475/2"],"_ieee":["475/4"],"_double":["475/4"],"_precision":["475/4"],"_floating":["475/4","548/0"],"_holes":["475/5","821/3"],"_problematic":["475/5","478/1"],"_because":["475/5","477/0","684/0","800/13"],"_rounding":["475/5","548/1"],"_demonstrate":["475/6"],"_issue":["475/6","628/2","628/3","777/5","809/4","884/1","887/3","893/3","894/3","899/1"],"_just":["475/0","608/0","688/2","813/1"],"_manipulated":["475/7","823/1"],"_parseether":["475/8","522/0"],"_etherstring":["475/8"],"_formatether":["475/8","520/0"],"_representations":["475/8","479/1","688/0"],"_displayed":["475/8"],"_entered":["475/8"],"_handled":["475/8"],"_everyone":["476/0"],"_favourite":["476/0"],"_someone":["476/0","476/6"],"_identity":["476/0","560/0"],"_editor":["476/0"],"_vi":["476/0"],"_emacs":["476/0"],"_npm":["476/1","608/3","810/3","813/1","815/1","815/8"],"_nature":["476/2"],"_capturing":["476/3"],"_immutability":["476/3"],"_protects":["476/3"],"_us":["476/3","478/0","894/4"],"_mistakes":["476/3"],"_myriad":["476/3"],"_second":["476/4","756/1"],"_rare":["476/4","688/1","713/3","877/2"],"_easier":["476/5","814/1","846/0","860/1","898/0"],"_swap":["476/5"],"_impacting":["476/5"],"_consumers":["476/5"],"_bn":["476/6","476/0","477/0"],"_greatest":["476/6"],"_denominator":["476/6"],"_replacing":["476/6","642/0"],"_anyone":["476/6"],"_bigdecimal":["476/0"],"_elliptic":["477/0","714/0","715/0","716/0"],"_regardless":["477/1","643/3"],"_we":["477/1","637/0","668/1","668/2","809/4","866/1","866/2","893/3","894/0","894/4","899/0"],"_leverage":["477/1"],"_adding":["477/1","809/3","863/0","866/2"],"_mean":["477/1"],"_offering":["477/1"],"_saved":["477/2"],"_kb":["477/2","868/1"],"_size":["477/2","741/1","809/3"],"_separate":["477/2","903/2"],"_purposes":["477/2","551/5"],"_comes":["478/0","860/6"],"_desire":["478/0"],"_global":["478/0","610/0","755/2","878/1"],"_live":["478/1"],"_fact":["478/2"],"_plus":["478/3"],"_break":["478/3","816/2"],"_tries":["478/3"],"_logic":["478/3","515/0","762/2"],"_prototype":["478/4"],"_tomycustombignumber":["478/4"],"_globally":["478/4"],"_manipulation":["479/0"],"_normalize":["479/1","622/0"],"_typedarray":["480/0"],"_prefix":["483/0","527/0","685/0","690/0","690/1","693/0","694/0","695/0","758/0","816/2"],"_followed":["483/0","551/1"],"_insensitive":["483/1"],"_hexadecimal":["483/1"],"_co":["484/0"],"_ordinate":["484/0"],"_compact":["484/0","759/2","867/0"],"_recoveryparam":["484/0","486/2","663/2"],"_signaturelike":["486/0"],"_redundant":["486/0","755/2"],"_likewise":["486/2"],"_isbytes":["487/0"],"_isbyteslike":["488/0"],"_invalidargument":["489/1","495/1","500/1"],"_ishexstring":["489/0"],"_converts":["490/0","491/0","492/0","759/0"],"_datahexstringorarrayish":["490/0"],"_arrayish":["490/0","491/0"],"_uint8":["490/0","493/0","494/0","495/0","503/0","672/0","900/0"],"_hexstringorarrayish":["491/0"],"_hexlify":["491/0"],"_leading":["492/0","494/0","499/0"],"_zeros":["492/0","494/0","499/0","800/10"],"_hexvalue":["492/0"],"_concatenates":["493/0","496/0"],"_arrayofbyteslike":["493/0","496/0"],"_concat":["493/0","496/0"],"_abtyeslike":["494/0"],"_strip":["494/0","499/0"],"_stripzeros":["494/0"],"_abyteslike":["494/0","495/0","495/1","497/0","498/0","498/1","499/0","500/0","500/1","524/0","526/0","529/0","535/0","561/0","562/0","563/0","564/0","589/0","670/0","675/0","717/0"],"_prepended":["495/0"],"_already":["495/1","500/1","641/0","642/0","684/0","684/1","692/0","766/1","796/3","851/2"],"_pad":["495/0","500/0"],"_zeropad":["495/0"],"_hexconcat":["496/0"],"_hexdatalength":["497/0"],"_slice":["498/0","776/0"],"_endoffset":["498/0","498/1"],"_hexdataslice":["498/0"],"_hexstripzeros":["499/0"],"_hexzeropad":["500/0"],"_asignaturelike":["501/0","502/0"],"_concatenating":["501/0"],"_join":["501/0","738/0"],"_joinsignature":["501/0"],"_expanded":["502/0","804/1","867/1"],"_split":["502/0","674/1","737/0"],"_splitsignature":["502/0"],"_asignaturelikeorbyteslike":["502/0"],"_randombytes":["503/0","900/0","901/0"],"_shuffled":["504/0"],"_fisher":["504/0"],"_yates":["504/0"],"_shuffle":["504/0"],"_contants":["505/0"],"_commonly":["505/0","676/0"],"_hashzero":["507/0"],"_xi":["508/0"],"_ethersymbol":["508/0"],"_negativeone":["509/0"],"_weiperether":["513/0"],"_maxuint256":["514/0"],"_friendly":["515/0"],"_usually":["515/0","550/1","762/0","776/0","805/3"],"_machine":["515/0"],"_maths":["515/0"],"_prices":["515/1"],"_gwei":["515/1","642/2"],"_display":["515/0"],"_bitcoin":["516/3","516/4","583/0","815/5"],"_satoshi":["516/3","516/4"],"_grouped":["518/0"],"_digits":["518/0","519/0","521/0"],"_separated":["518/0","585/1"],"_commify":["518/0"],"_textdata":["523/0","525/0"],"_base58":["523/0","524/0"],"_uin8":["523/0","525/0"],"_uin8array":["523/0","525/0"],"_base64":["525/0","526/0"],"_recursive":["527/0","530/0","651/0","899/3"],"_nested":["527/0"],"_structures":["527/0","530/0","570/1"],"_structured":["528/0","529/0","834/0"],"_rlp":["528/0","529/0","632/1","705/1"],"_r":["528/0","529/0","615/0","616/0","628/0","630/0","631/0","632/0","633/0","634/0","635/0","637/0","640/0","641/0","642/0","643/0","646/0","647/0","685/0","687/0","688/0","689/0","691/0","753/0","814/0","829/0","830/0","831/0","832/0","834/0","858/0","899/0"],"_l":["528/0","529/0","627/0","633/0","634/0","638/0","642/0","643/0","688/0","760/0","763/0","772/0","826/0","827/0","828/0"],"_dataobject":["528/0","529/0"],"_recursively":["530/3","578/0","653/0","835/0"],"_nesting":["530/3"],"_xdead":["531/0"],"_xbeef":["531/0"],"_fixednumber":["532/0","533/0","533/1","534/0","535/0","536/0","537/0","538/0","539/0","540/0","541/0","542/0","543/0","544/0","545/0","546/0","547/0","548/0","549/0","550/1"],"_fractional":["532/0"],"_frombytes":["535/0"],"_permits":["536/1","870/0"],"_fromstring":["536/0"],"_fromvalue":["537/0"],"_fixedformat":["538/0","550/0","552/0","552/1","553/0","554/0","555/0","556/0"],"_fixedvalue":["539/0","540/0","541/0","542/0","543/0","545/0"],"_addunsafe":["539/0"],"_subunsafe":["540/0"],"_mulunsafe":["541/0"],"_divunsafe":["542/0"],"_round":["543/0"],"_toformat":["545/0"],"_approximate":["548/1"],"_float":["548/0"],"_tounsafefloat":["548/0"],"_isfixednumber":["549/0"],"_composed":["551/0","678/0","678/1","680/0"],"_three":["551/0"],"_ness":["551/0","553/0"],"_begins":["551/1","658/1","659/1","833/2"],"_ufixed":["551/1","551/5"],"_congruent":["551/2"],"_fixed128x18":["551/5","552/0"],"_wide":["551/5","583/0","870/0"],"_fixed32x0":["551/5"],"_int32":["551/5"],"_ufixed32x0":["551/5"],"_uint32":["551/5"],"_shorthand":["551/5","557/0"],"_ufixed128x18":["551/5"],"_points":["555/0","673/0","716/1","809/2","894/4"],"_recreate":["556/0"],"_fixed128x80":["557/0"],"_hashing":["558/0","579/0","893/6"],"_algorithms":["558/0","579/0"],"_usages":["558/0"],"_facilitate":["558/0"],"_cryptographic":["559/0"],"_family":["559/0"],"_computes":["560/0","568/0","661/2","666/0","718/0","805/3"],"_keccak256":["560/0","561/0","581/0","705/1","800/6","800/12","889/0"],"_ripemd":["562/0"],"_ripemd160":["562/0"],"_sha2":["563/0","564/0","566/0","567/0","582/0"],"_sha256":["563/0","566/0","582/0"],"_sha512":["564/0","567/0"],"_hmac":["565/0"],"_algorithm":["565/0","566/0","567/0","579/1","805/3","806/0","806/5","806/7","808/1","908/0"],"_computehmac":["565/0"],"_supportedalgorithm":["566/0","567/0"],"_personal":["568/0","568/1"],"_x19ethereum":["568/1"],"_hashmessage":["568/0"],"_namehash":["569/0","908/0"],"_typeddataencoder":["570/0","571/2","572/0","573/0","574/0","575/0","576/0","577/0","578/0"],"_members":["570/1"],"_mapping":["570/3"],"_descriptions":["570/3"],"_eip712domain":["570/4"],"_unless":["570/4","703/1","796/2"],"_encoder":["570/0","572/0","573/0","574/0","575/0","576/0","577/0","578/0"],"_exported":["571/2","571/0","893/1"],"_hashed":["573/0","577/0","676/0","798/1","800/12","800/13"],"_getpayload":["574/0"],"_constructs":["575/0"],"_directed":["575/0"],"_acyclic":["575/0"],"_graph":["575/0"],"_primarytype":["575/0"],"_payloads":["575/0"],"_primary":["575/0"],"_getprimarytype":["575/0"],"_hashdomain":["577/0"],"_leaf":["578/0"],"_replacedwith":["578/0"],"_resolvenames":["578/0"],"_packencoded":["579/0"],"_tightly":["579/0","579/1"],"_packed":["579/0","580/0","581/0","582/0","909/0"],"_packing":["579/1"],"_respective":["580/0","581/0","582/0"],"_pack":["580/0"],"_soliditypack":["580/0"],"_soliditykeccak256":["581/0"],"_soliditysha256":["582/0"],"_hierarchal":["583/0","583/2","907/0"],"_desterministic":["583/0"],"_lends":["583/0"],"_blockchains":["583/0","667/1","804/0"],"_secp256k1":["583/0"],"_detailed":["583/1","800/18"],"_technical":["583/1"],"_understanding":["583/1"],"_bip":["583/2","583/3","604/0","605/0","868/0","907/0"],"_deterministic":["583/2","899/0","907/0"],"_derive":["583/2","598/0","603/0"],"_seed":["583/2","589/0","604/0","899/2","899/3","900/0","901/0","902/0"],"_sequences":["583/2","683/0","688/0","688/1","693/0","694/0","695/0"],"_words":["583/2","585/1","668/0","738/0","739/0"],"_adapt":["583/3"],"_defaultpath":["584/0"],"_locale":["585/1","587/0","734/0","737/0","738/0","881/0"],"_hdnode":["588/0","589/0","590/0","590/1","591/0","592/0","593/0","594/0","595/0","596/0","597/0","598/0","599/0","600/0","601/0","602/0","603/0"],"_fromseed":["589/0"],"_extendedkey":["590/0","590/1","601/0"],"_neutered":["590/1"],"_fromextendedkey":["590/0","601/1"],"_compresses":["592/0"],"_fingerprint":["593/0","594/0","594/1","628/3"],"_collisions":["593/0"],"_software":["593/0","871/1","871/2","871/3","871/4"],"_parentfingerprint":["594/0"],"_ec":["598/0"],"_multiply":["598/0"],"_ability":["598/0","864/2"],"_hardened":["598/0","602/1"],"_chaincode":["598/0"],"_last":["599/1","839/1"],"_depth":["600/0"],"_serialization":["601/1","718/2"],"_serializing":["601/1"],"_deserializing":["601/1"],"_preserved":["602/0"],"_leak":["602/1","796/1"],"_derived":["602/1"],"_neuter":["602/0"],"_deriving":["603/0"],"_derivepath":["603/0"],"_mnemonictoseed":["604/0"],"_mnemonictoentropy":["605/0"],"_isvalidmnemonic":["606/0"],"_extensively":["607/0"],"_few":["608/0","754/0","777/8","806/5","809/2","890/1"],"_logging":["608/0","625/0"],"_standardize":["608/0"],"_facilities":["608/0"],"_logger":["608/1","609/0","610/0","611/0","612/0","613/0","615/0","616/0","617/0","619/0","620/0","621/0","622/0","623/0","624/0","625/0","627/0","628/0","629/0","630/0","631/0","632/0","633/0","634/0","635/0","636/0","637/0","638/0","639/0","640/0","641/0","642/0","643/0","644/0","645/0","646/0","647/0","648/0","878/0","878/1"],"_dependencies":["608/1","809/3","813/1","863/1","863/0","868/1","870/0"],"_light":["608/1"],"_censorship":["608/2","614/0","624/0"],"_relies":["608/2"],"_bundled":["608/3"],"_bundling":["608/4"],"_properly":["608/4","667/1","899/3"],"_singleton":["610/0"],"_globallogger":["610/0"],"_warnings":["613/0","645/0","646/0","761/1","761/0","796/5"],"_warn":["613/0"],"_honor":["614/0"],"_detecting":["614/0"],"_makeerror":["615/0"],"_u":["615/0","616/0","629/0","630/0","631/0","632/0","633/0","634/0","635/0","637/0","639/0","642/0","643/0","644/0","683/0","686/0","687/0","689/0","690/0","691/0","692/0","753/0","760/0","830/0"],"_k":["615/0","616/0","630/0","640/0","680/0","681/0","760/0"],"_w":["615/0","616/0","630/0","636/0","640/0","646/0"],"_throwerror":["616/0","787/0"],"_throwargumenterror":["617/0"],"_actions":["618/0"],"_validation":["618/0","640/0"],"_kind":["619/0","621/0","871/3"],"_unsupported":["619/0","622/1","631/0","796/5"],"_checknew":["619/0","621/0"],"_ensuring":["619/1"],"_checkabstract":["619/0"],"_expectedcount":["620/0"],"_unexpected":["620/0","637/0","690/0","809/3"],"_checkargumentcount":["620/0"],"_callers":["621/1"],"_correctly":["622/0","674/0","739/0","823/3"],"_functioning":["622/0"],"_checknormalize":["622/0"],"_fault":["623/0","633/0"],"_uint53":["623/0"],"_checksafeuint53":["623/0"],"_preventing":["624/0","628/3"],"_uncensored":["624/0"],"_prevents":["624/1"],"_leaking":["624/1"],"_masking":["624/1"],"_making":["624/2","756/0","771/0","811/0","818/1"],"_difficult":["624/2","769/0","899/1"],"_setcensorship":["624/0"],"_censor":["624/0"],"_permanent":["624/0"],"_suppress":["625/0"],"_particular":["625/0","871/3"],"_setloglevel":["625/0"],"_loglevel":["625/0"],"_codes":["626/0","628/3"],"_implemented":["627/0","627/1"],"_superclass":["627/1"],"_communicating":["628/0"],"_cors":["628/2"],"_hardest":["628/2"],"_diagnose":["628/2"],"_fix":["628/2","893/3"],"_beneficial":["628/2"],"_familiarize":["628/2"],"_yourself":["628/2","855/0"],"_configure":["628/2"],"_conifguration":["628/2"],"_files":["628/2","741/1","809/3","812/0","813/1","814/0","835/1","839/0","864/0","868/1","871/1","893/1","895/0"],"_dashboards":["628/2"],"_specifing":["628/2"],"_allowed":["628/2","727/0","772/1","777/6"],"_origins":["628/2"],"_ssl":["628/3"],"_trying":["628/3","813/0"],"_via":["628/3"],"_serving":["628/3"],"_https":["628/3","904/1"],"_website":["628/3"],"_firewall":["628/3"],"_reaching":["628/3"],"_ddos":["628/3"],"_mitigation":["628/3"],"_proxy":["628/3","894/5"],"_operates":["628/3"],"_behind":["628/3","790/4","810/3","894/6"],"_agents":["628/3"],"_detected":["628/3"],"_bot":["628/3"],"_happen":["631/1"],"_cause":["632/0","638/2","638/3","777/5","796/1","796/5"],"_buffer":["632/0"],"_erroneously":["632/1"],"_malformed":["632/1"],"_f":["632/0","633/0","639/0","645/0","648/0","678/0","679/0","680/0","681/0","683/0","685/0","687/0","692/0","753/0","760/0","834/0"],"_overrun":["632/0","689/0"],"_done":["633/0","817/2","880/0"],"_overflow":["633/1"],"_arithmetic":["633/1"],"_underflow":["633/1"],"_sensitive":["634/2"],"_redacted":["634/2"],"_g":["634/0","635/0","636/0","637/0","643/0","644/0","646/0","686/0","687/0","688/0","691/0","760/0","830/0","899/0"],"_x":["637/0","638/0","641/0","685/0","690/0"],"_getter":["638/0"],"_resulted":["638/0"],"_revert":["638/0","754/4"],"_estimation":["638/1","876/0"],"_waiting":["638/1","807/0"],"_statement":["638/2","839/1"],"_attempting":["639/0","643/3","732/0","733/0"],"_costs":["639/0"],"_intrinsic":["639/1","639/2"],"_expired":["641/0"],"_bribe":["642/1"],"_prefer":["642/1"],"_replacement":["642/2","642/0","695/0"],"_protocol":["642/3"],"_unmined":["642/3"],"_propagated":["642/3"],"_practice":["642/3","661/2","796/4","807/0","855/0"],"_enabled":["642/3","761/1","910/0"],"_underpriced":["642/0"],"_unable":["643/1"],"_unwilling":["643/1"],"_predict":["643/1"],"_situation":["643/2"],"_unpredictable":["643/0"],"_levels":["644/0","645/0","646/0","647/0","648/0"],"_informational":["645/0"],"_handling":["649/0","667/1","683/1","683/0","692/0","796/0","879/1"],"_platform":["649/0","866/2"],"_es3":["649/1","894/1"],"_built":["649/1","812/0","819/0"],"_es2015":["649/1","894/5"],"_checkproperties":["650/0"],"_anobject":["651/0","652/0","654/0","655/0","655/1","662/0"],"_frozen":["651/1"],"_copied":["651/2"],"_deep":["651/0"],"_deepcopy":["651/0"],"_defineproperty":["652/0"],"_define":["652/0","760/0"],"_definereadonly":["652/0"],"_inheritance":["653/0"],"_aconstructor":["653/0"],"_ancestors":["653/0","653/1"],"_mimic":["653/1"],"_getstatic":["653/0"],"_retruns":["654/0"],"_shallow":["655/0"],"_assign":["655/1"],"_shallowcopy":["655/0"],"_signingkey":["656/0","657/0","658/0","659/0","660/0","661/0","662/0"],"_x04":["658/1","665/1"],"_x02":["659/1"],"_x03":["659/1"],"_compressedpublickey":["659/0"],"_signdigest":["660/0"],"_ecdh":["661/0"],"_otherkey":["661/0","661/1"],"_symmetric":["661/2"],"_computesharedsecret":["661/0"],"_issigningkey":["662/0"],"_producing":["663/0"],"_canonical":["663/1","680/0","680/1","681/0","682/0"],"_completely":["663/2","806/4","809/1","868/1"],"_verifymessage":["663/0"],"_verifytypeddata":["664/0"],"_gave":["665/1"],"_recoverpublickey":["665/0"],"_compressing":["666/0"],"_computepublickey":["666/0"],"_granted":["667/0","871/1"],"_loss":["667/1","796/1"],"_incorrect":["667/1"],"_deal":["668/1","871/1"],"_prefixing":["668/1"],"_terminate":["668/1","841/1"],"_word":["668/1","668/2","735/0","736/0","737/0","868/0"],"_termination":["668/2"],"_bytes32string":["668/0"],"_fewer":["669/0","751/6"],"_international":["669/0"],"_represented":["670/0","675/0"],"_parsebytes32string":["670/0"],"_exceeds":["671/1"],"_formatbytes32string":["671/0"],"_normalizing":["672/0","676/0","800/6"],"_unicodenormalizationform":["672/0","673/0","676/0","677/0","678/0","679/0","680/0","681/0"],"_toutf8bytes":["672/0"],"_codepoints":["673/0","678/1","679/1","679/2","683/0","684/0","687/0"],"_toutf8codepoints":["673/0"],"_splits":["674/0"],"_perceived":["674/0"],"_character":["674/0","678/1","679/1","679/2","688/0","688/1","695/0","737/0"],"_codepoint":["674/0","678/2","679/2","680/2","684/0","687/0","687/1","688/2","691/0"],"_accounting":["674/0"],"_surrogate":["674/0","674/1","691/0","691/1","693/0"],"_pairs":["674/0","674/1","691/0","693/0","760/0"],"_confused":["674/1"],"_destroys":["674/1"],"_splitting":["674/1"],"_codeunit":["674/1"],"_onerror":["675/1","675/0"],"_toutf8string":["675/0"],"_forms":["676/0","904/0"],"_unicode":["676/0","677/0","678/0","679/0","680/0","681/0"],"_normalization":["676/0","677/0","678/0","679/0","680/0","681/0"],"_eacute":["678/2","679/2"],"_x00e9":["678/2"],"_nfc":["678/0"],"_decomposed":["679/0","681/0"],"_compose":["679/1"],"_x0065":["679/2"],"_letter":["679/2","680/2","846/2","846/5"],"_x0301":["679/2"],"_diacritic":["679/2"],"_acute":["679/2"],"_accent":["679/2"],"_nfd":["679/0"],"_equivalence":["680/0","681/0","682/0"],"_folds":["680/1"],"_syntactic":["680/1"],"_semantic":["680/1"],"_roman":["680/2"],"_numeral":["680/2"],"_x2160":["680/2"],"_folded":["680/2","682/0"],"_capital":["680/2"],"_x0049":["680/2"],"_nfkc":["680/0","681/1"],"_nfkd":["681/0"],"_thus":["682/0"],"_achieve":["682/0"],"_homoglyph":["682/0"],"_attacks":["682/0","713/1"],"_converting":["683/0"],"_possibility":["683/0"],"_encountered":["684/0","685/0","825/3"],"_badcodepoint":["684/0"],"_skip":["684/1","818/1"],"_consumed":["684/1","709/2","773/1"],"_errorfunction":["684/0"],"_bad":["684/0","685/0","690/0","690/1"],"_sequence":["685/0","686/0","689/0","690/0","693/0"],"_utf8errorreason":["685/0","686/0","687/0","688/0","689/0","690/0","691/0"],"_begun":["686/0"],"_did":["686/0"],"_continuation":["686/0","686/1","690/0","694/0","695/0","841/2"],"_ofset":["686/1"],"_continue":["686/0","690/0","866/2"],"_x10ffff":["687/1"],"_badcountpoint":["687/2","688/2","691/1"],"_variable":["688/0","841/2","846/2","846/4","846/5"],"_overlong":["688/0","688/1","693/0","694/0"],"_distinguished":["688/0"],"_formed":["688/0"],"_circumvent":["688/1"],"_produced":["688/1"],"_lazy":["688/1"],"_terminating":["688/1"],"_char":["688/1"],"_arrived":["688/2"],"_through":["688/2","769/0","790/3","818/0"],"_remaining":["689/0","807/2"],"_differently":["690/0"],"_want":["690/1","800/1","899/0"],"_trap":["690/1"],"_f16":["691/0"],"_utf16":["691/0"],"_funcs":["693/0","694/0","695/0"],"_utf8errorfuncs":["693/0","694/0","695/0"],"_consuming":["694/0","695/0"],"_final":["694/0","759/0"],"_permit":["694/0","871/1"],"_ignore":["694/0","761/0","860/5"],"_replace":["695/0"],"_fffd":["695/1"],"_flexible":["696/0"],"_disabled":["703/1","910/0"],"_identifier":["705/0"],"_order":["708/1","792/0","794/0","860/3"],"_replayability":["708/1"],"_refunded":["709/2"],"_complete":["709/2","777/7","777/9","867/0","868/1"],"_effects":["709/2"],"_replay":["713/1","713/3"],"_unintended":["713/2"],"_almost":["713/3","894/1"],"_portion":["714/0","715/0","716/0","830/1"],"_curve":["714/0","715/0","716/0"],"_accurately":["714/1"],"_coordinate":["714/1","716/1"],"_refine":["716/1"],"_parses":["717/0"],"_present":["718/1","790/1","791/0","835/0","872/0","893/3"],"_explicitly":["718/4"],"_implicitly":["718/4"],"_mismatch":["718/5"],"_serializetransaction":["718/0"],"_fetch":["719/0","859/0"],"_body":["719/0","825/1","825/2","825/3","826/2","827/2","828/1","829/0","829/1","830/1","831/1","832/1","833/1","834/0","835/0","835/1","836/2","837/1","841/0","841/2"],"_processfun":["719/0"],"_fetchjson":["719/0"],"_processfunc":["719/0"],"_repeatedly":["720/0"],"_pollfunc":["720/0","732/0","733/0"],"_polloptions":["720/0"],"_undefined":["720/0","731/0"],"_poll":["720/0","733/0"],"_authentication":["722/0","722/2","723/0","723/2","724/0"],"_insecure":["724/0"],"_allowinsecureauthentication":["724/0"],"_rejecting":["725/0"],"_headers":["726/0"],"_elapse":["727/0"],"_triggering":["727/0"],"_exponential":["728/0","729/0","730/0"],"_backoff":["728/0","729/0","730/0"],"_floor":["728/0"],"_ceiling":["729/0"],"_interval":["730/0"],"_calculation":["730/0"],"_retry":["731/0"],"_retrylimit":["731/0"],"_polling":["732/0","733/0"],"_onceblock":["732/0"],"_oncepoll":["733/0"],"_getword":["735/0"],"_getwordindex":["736/0"],"_individual":["737/0","751/1"],"_joining":["738/0"],"_map":["739/0","813/1"],"_directions":["739/0"],"_lists":["739/0","837/0","837/1"],"_validate":["739/1","777/8","790/4"],"_wordlists":["739/0","740/0","741/0","742/0","743/0","744/0","745/0","746/0","747/0","748/0","749/0","750/0"],"_overriding":["740/0"],"_registered":["740/0"],"_increases":["741/1"],"_dist":["741/1","809/3","812/0","814/0"],"_czech":["742/0"],"_cz":["742/0"],"_en":["743/0"],"_spanish":["744/0"],"_es":["744/0","813/1","894/2"],"_french":["745/0"],"_fr":["745/0"],"_italian":["746/0","868/0"],"_japanese":["747/0","868/0"],"_ja":["747/0"],"_korean":["748/0","868/0"],"_ko":["748/0"],"_chinese":["749/0","750/0","868/0"],"_zh":["749/0","750/0"],"_cn":["749/0"],"_traditional":["750/0","868/0"],"_tw":["750/0"],"_tl":["751/0"],"_dr":["751/0"],"_ndash":["751/0"],"_improve":["751/0"],"_track":["751/1"],"_works":["751/2"],"_box":["751/2","831/0","832/0"],"_community":["751/3"],"_resource":["751/3","891/0"],"_prototyping":["751/3","855/1"],"_aggressively":["751/4"],"_retries":["751/4","751/6"],"_slower":["751/4"],"_tier":["751/5"],"_advantages":["751/5"],"_rate":["751/6","752/4","753/4","754/4"],"_concurrent":["751/6"],"_faster":["751/6","806/7","807/2","808/2","818/1"],"_timeouts":["751/6"],"_metric":["751/6"],"_tuning":["751/6"],"_customer":["751/6","752/4","753/4","754/4","755/2"],"_archive":["751/6","753/4"],"_explorer":["752/0"],"_developer":["752/0","800/16","807/1","891/0"],"_building":["752/0","810/0","817/1","817/0","818/0","819/1","839/2","839/4"],"_extensive":["752/1","868/1"],"_benefits":["752/3","753/3","754/3","755/1"],"_reliable":["753/0","754/0","893/0"],"_makes":["753/1","769/0","807/2","807/3","814/1","860/1","895/0"],"_tools":["753/1","810/1"],"_versatile":["753/1"],"_upgrade":["753/4"],"_years":["754/0"],"_assist":["754/1"],"_metadata":["754/4","817/2"],"_pocket":["755/0"],"_decentralized":["755/2"],"_stake":["755/2"],"_opposed":["755/2"],"_paying":["755/2"],"_monthly":["755/2"],"_incentivized":["755/2"],"_cryptoeconomic":["755/2"],"_incentives":["755/2"],"_verifies":["756/0"],"_maximize":["756/2"],"_deployable":["757/0"],"_mnemonics":["757/0","764/0","768/0","769/0"],"_bin":["758/0"],"_passes":["759/0","769/0"],"_stage":["759/0"],"_approximating":["759/0"],"_portions":["759/1","871/2"],"_massaged":["759/1"],"_tweaked":["759/1"],"_stabilizes":["759/1"],"_destinations":["759/2"],"_scripting":["760/0","767/0"],"_somekey":["760/0"],"_y":["760/0"],"_flag":["760/0","762/2","791/0"],"_loops":["762/0"],"_flow":["762/0"],"_byt":["762/2"],"_independent":["762/2"],"_moved":["762/2","873/0","874/1","878/0","878/1"],"_incur":["762/3"],"_though":["762/3","855/1"],"_pic":["762/0"],"_option":["763/1","777/5","777/6","789/0","793/0","793/1","815/6"],"_usual":["763/2"],"_impacts":["763/2"],"_shows":["764/0","775/0","786/0","787/0","887/2"],"_sandbox":["766/0"],"_learning":["766/0"],"_managing":["766/0"],"_repl":["766/1"],"_eval":["767/0"],"_commands":["767/0"],"_variables":["767/0","834/1","839/5","846/1","846/3","846/0"],"_phrases":["768/0","868/0","881/0"],"_prompt":["768/2"],"_decrypt":["768/2","769/0","808/0"],"_xxx":["769/0","770/0"],"_scrypt":["769/0","805/3","808/1","815/2"],"_slow":["769/0","805/1"],"_brute":["769/0","806/1","815/2"],"_force":["769/0","806/1"],"_attack":["769/0","802/0","806/1"],"_far":["769/0"],"_passwords":["769/0","806/4","806/5","806/6"],"_hence":["770/0"],"_cli":["771/0","772/0","772/1","775/0","777/0","777/2","777/5","790/4"],"_handles":["772/0"],"_instantiates":["772/0"],"_plugin":["772/0","772/1","773/0","773/1","774/0","777/0","777/3","777/4","777/5","778/0","779/0","780/0","781/0","782/0","783/0","784/0","785/0","786/0","787/0","788/0","789/0"],"_standalone":["772/1"],"_exactly":["772/1","800/10","833/1","900/1"],"_addplugin":["773/0","774/1"],"_pluginclass":["773/0","774/0"],"_dedicated":["774/0"],"_conjunction":["774/1","797/1"],"_setplugin":["774/0"],"_screen":["775/0","777/2","786/0","788/0","789/0"],"_terminates":["775/0"],"_show":["775/0"],"_showusage":["775/0"],"_argv":["776/0"],"_manages":["777/0"],"_phases":["777/0"],"_requested":["777/2"],"_gethelp":["777/2","788/0"],"_getoptionhelp":["777/2","789/0"],"_prepareoptions":["777/3","777/4","777/7","790/4"],"_understands":["777/5"],"_bail":["777/5"],"_preparearguments":["777/7","777/9"],"_sense":["777/8"],"_allowzero":["784/1","784/0"],"_raised":["784/1"],"_dumps":["785/0"],"_contents":["785/0","826/1","827/1","834/1","835/0"],"_console":["785/0","823/3"],"_header":["785/0"],"_nicely":["785/0"],"_style":["785/0","816/1","834/2","845/0","853/0"],"_plugins":["785/1"],"_dump":["785/0","817/2"],"_stops":["786/0","787/0"],"_throwusageerror":["786/0"],"_subclass":["788/0","789/0"],"_argparser":["790/0","790/3","790/4","791/0","792/0","793/0","794/0"],"_arg":["790/0","791/0","792/0","793/0","794/0"],"_parser":["790/0","791/0","792/0","793/0","794/0"],"_yes":["790/1"],"_leaving":["790/4"],"_prepareargs":["790/4"],"_consumeflag":["791/0"],"_consumemultioptions":["792/0"],"_usageerror":["793/1"],"_consumeoption":["793/0"],"_consumeoptions":["794/0"],"_incredibly":["796/1"],"_slight":["796/1"],"_seem":["796/1","894/4"],"_confusing":["796/1"],"_worst":["796/1"],"_misrepresent":["796/1"],"_action":["796/1","871/4","893/2"],"_luckily":["796/2"],"_tricked":["796/2"],"_mistake":["796/2"],"_worry":["796/3","800/3","810/3"],"_surrounding":["796/3","843/0"],"_page":["796/3","796/4","817/2","825/0","826/3"],"_reloading":["796/3"],"_refresh":["796/4"],"_reset":["796/5","836/1"],"_banners":["796/5"],"_accomplished":["796/6"],"_pieces":["798/0"],"_correspondingly":["798/2"],"_refers":["798/2"],"_ed":["798/3","798/7"],"_sound":["798/8","868/0"],"_complicated":["798/8","809/3"],"_understood":["798/8"],"_comprehensive":["800/0"],"_intersting":["800/1"],"_learn":["800/1","890/0"],"_technology":["800/1"],"_slot":["800/6"],"_bytes5":["800/10"],"_shorter":["800/10"],"_right":["800/10"],"_consequences":["800/13"],"_kept":["800/13","869/0"],"_lost":["800/14"],"_tell":["800/15"],"_twice":["800/16"],"_someevent":["800/17"],"_searchby":["800/17"],"_cleartext":["800/17"],"_happens":["801/0","815/6"],"_retain":["801/0","872/1"],"_things":["801/0","809/1","810/1","857/1","861/0"],"_vectors":["802/0"],"_somewhat":["803/0","809/0"],"_bid":["803/0"],"_willing":["803/0","809/1"],"_brief":["804/0"],"_aspects":["804/0","903/0"],"_aware":["804/0"],"_sparse":["804/1"],"_moment":["804/1"],"_goes":["804/1","808/2"],"_basics":["804/0"],"_technique":["805/0"],"_implications":["805/0"],"_people":["805/1","813/0","894/7"],"_concerned":["805/1"],"_encrypting":["805/1"],"_decrypting":["805/1","807/3"],"_intentional":["805/2"],"_stronger":["805/2"],"_cpu":["805/3","806/0"],"_pseudo":["805/3"],"_series":["805/3"],"_goal":["806/0"],"_computer":["806/0","806/4"],"_scale":["806/1"],"_attacker":["806/1","806/3","806/7","815/6"],"_computers":["806/1","808/2"],"_seconds":["806/2","806/3","806/4","806/5","815/2"],"_proceed":["806/2"],"_know":["806/3","860/3","872/2","892/1"],"_try":["806/4","816/2","894/0"],"_guessing":["806/4"],"_million":["806/4","806/5"],"_tied":["806/4"],"_days":["806/4"],"_instantly":["806/5"],"_period":["806/6"],"_legitimate":["806/7"],"_reducing":["807/0"],"_better":["807/0","855/0","894/1"],"_feel":["807/0","807/2","807/3","894/3"],"_encryption":["807/1"],"_incorporate":["807/1"],"_periodically":["807/1"],"_indication":["807/1","807/2"],"_percent":["807/1"],"_comfortable":["807/2"],"_clear":["807/2"],"_needlessly":["807/3","894/7"],"_wasted":["807/3"],"_mitigating":["807/0"],"_doing":["808/0"],"_tuned":["808/1","808/2"],"_main":["808/2","877/4"],"_purpose":["808/2","816/0","867/1","871/3"],"_arounds":["808/0"],"_something":["809/0","866/1"],"_ve":["809/0"],"_written":["809/0","816/0","893/4"],"_necessity":["809/0"],"_grown":["809/0"],"_good":["809/1"],"_welcome":["809/1","809/2"],"_criticism":["809/1"],"_am":["809/1"],"_my":["809/1"],"_changed":["809/1","872/0","875/0","875/2","876/0"],"_pull":["809/2","809/4","814/0","866/0"],"_backwards":["809/3","866/0"],"_compatibility":["809/3"],"_breaking":["809/3"],"_convincing":["809/3","863/0"],"_aims":["809/3","867/0","872/1"],"_lean":["809/3"],"_eye":["809/3"],"_pr":["809/3","814/1","814/0"],"_modify":["809/3","871/1"],"_docs":["809/3","814/0","817/1","819/0","819/1","824/0","824/1"],"_wrm":["809/3","814/0"],"_src":["809/3","814/0","826/4","827/3","828/2","830/2","852/0"],"_ts":["809/3","813/1","814/0"],"_folders":["809/3","814/0"],"_test":["809/3","868/1","893/1","893/3","893/4","893/5","893/6","894/4","895/0","895/1","896/0","897/1","897/0","898/0","899/0","903/0","903/1","903/2","905/0","908/0"],"_me":["809/3","813/2","872/2","892/1","892/2"],"_migration":["809/3","872/0","882/0","883/0"],"_overly":["809/3"],"_beginning":["809/4"],"_discussion":["809/4"],"_figure":["809/4"],"_contributing":["809/0","810/3"],"_hacking":["809/0","861/0"],"_build":["810/0","810/1","811/0","817/0","818/1","894/4"],"_unfortunatly":["810/0"],"_mono":["810/1"],"_repo":["810/1"],"_attempts":["810/1"],"_compatibile":["810/1"],"_platforms":["810/1","864/2","894/0"],"_weird":["810/1"],"_misc":["810/2","815/1"],"_folder":["810/2","819/0","847/0"],"_monorepo":["810/2"],"_working":["810/3"],"_auto":["811/0"],"_typescript":["811/0","813/1","868/1","896/0","898/0"],"_distribution":["812/0","813/0","814/1"],"_located":["812/0"],"_builds":["812/0","814/1"],"_rollup":["812/0"],"_step":["813/0","815/1","815/10","818/1"],"_forking":["813/0"],"_alternates":["813/0"],"_reuse":["813/0"],"_rebuild":["813/1"],"_compare":["813/1"],"_versions":["813/1","866/2","869/0","882/0"],"_update":["813/1","872/2","892/1"],"_limitations":["813/1"],"_shaking":["813/1"],"_linking":["813/1","817/2","869/0"],"_bundle":["813/1"],"_stripped":["813/1"],"_basically":["813/1","894/7"],"_whole":["813/1"],"_bunch":["813/1"],"_stuff":["813/1"],"_stuck":["813/2"],"_commit":["814/0"],"_prepare":["814/1"],"_myself":["814/1"],"_cmds":["815/1"],"_session":["815/1","815/8"],"_aws":["815/1","815/8"],"_github":["815/1","817/2","893/2","894/3","904/1"],"_forcing":["815/2"],"_expensive":["815/2"],"_plain":["815/3","815/6"],"_money":["815/4"],"_pot":["815/4"],"_tempting":["815/5"],"_mail":["815/5"],"_alert":["815/5"],"_instant":["815/6"],"_disclosure":["815/7"],"_bond":["815/7"],"_rotate":["815/8"],"_immedately":["815/9"],"_document":["815/10","872/0"],"_publishing":["815/0"],"_documents":["816/0"],"_flatworm":["816/0","816/2","824/0"],"_generation":["816/0"],"_writing":["816/0"],"_guide":["816/1","872/2","882/0","883/0"],"_lines":["816/2","839/5","841/3","846/4"],"_avoid":["816/2"],"_inline":["816/2"],"_externallinks":["816/2"],"_anchor":["816/2"],"_justified":["816/2"],"_symlinks":["816/2"],"_aim":["816/2"],"_look":["816/2","859/0","894/6"],"_steps":["817/0"],"_html":["817/2"],"_pages":["817/2"],"_anchors":["817/2"],"_readme":["817/2"],"_md":["817/2"],"_organized":["817/2"],"_browsable":["817/2"],"_linkable":["817/2"],"_ingestion":["817/2"],"_latex":["817/2"],"_pdf":["817/2"],"_samples":["818/0","838/0"],"_vm":["818/0"],"_typos":["818/0"],"_injected":["818/0"],"_headache":["818/1"],"_preview":["819/0"],"_locally":["819/0"],"_caveats":["819/1"],"_apply":["819/1"],"_flushing":["819/1"],"_caches":["819/1"],"_previewing":["819/0"],"_grow":["820/0"],"_snippets":["820/0"],"_cookbook":["820/0"],"_react":["821/0","821/1","822/0","823/0","823/2","894/4"],"_native":["821/0","821/1","822/0","823/0","823/2"],"_forks":["821/0"],"_expo":["821/0","894/4"],"_javascriptcore":["821/1"],"_webkit":["821/1"],"_dom":["821/1"],"_shims":["821/3","822/0","823/2"],"_ilk":["821/0"],"_shim":["822/0"],"_instructions":["822/1"],"_installing":["822/1","822/2","822/0","854/0"],"_restart":["822/2"],"_packager":["822/2"],"_company":["822/2"],"_stolen":["823/1"],"_install":["823/2","895/0"],"_worked":["823/3"],"_regarding":["823/3"],"_rendering":["824/0"],"_engine":["824/0"],"_formatting":["824/0"],"_documenting":["824/0"],"_inspiration":["824/1"],"_came":["824/1"],"_sphinx":["824/1"],"_directive":["825/1","836/0","838/0","841/0","841/1","846/1","848/0","849/0","851/0","851/2","852/0","852/1","853/0"],"_extensions":["825/1","826/4","827/3","828/2","830/2","833/3","834/2"],"_directives":["825/2"],"_markdown":["825/2","826/2","827/2","828/1","829/1","830/1","831/1","832/1","833/1","834/1","835/1","836/2","837/0","848/1","848/0","851/1","851/0"],"_continues":["825/3"],"_title":["826/0","827/0","827/2","828/0","828/1","829/1","837/1"],"_h1":["826/0"],"_font":["826/0","827/0","828/0"],"_linked":["826/1","827/1","852/0"],"_table":["826/1","827/1","834/0","835/0","841/0","841/1","845/0","846/0","846/1","846/3","846/4","853/0"],"_dividing":["826/1","827/1"],"_drawn":["826/1","827/1"],"_inherit":["826/4","827/3","828/2","848/0","851/2"],"_nav":["826/4","850/0"],"_subsection":["827/0"],"_h2":["827/0"],"_subsections":["827/1","835/0"],"_heading":["828/0"],"_h3":["828/0"],"_term":["829/0"],"_indented":["829/0","836/1"],"_placed":["831/0","832/0","847/0"],"_blue":["831/0"],"_bordered":["831/0","832/0"],"_draw":["831/0","832/0"],"_attention":["831/0","832/0"],"_banner":["831/0","832/0"],"_orange":["832/0"],"_escaped":["833/2"],"_lang":["833/3","840/0","849/0"],"_caption":["833/0"],"_cell":["834/1","842/0","843/0","844/1"],"_footer":["834/0"],"_toc":["835/0"],"_injects":["835/0"],"_loading":["835/0"],"_loads":["835/0"],"_interpreted":["835/1"],"_directories":["835/1"],"_terminated":["836/0"],"_bodies":["836/1"],"_indentation":["836/1"],"_flexibility":["837/0"],"_dialects":["837/0"],"_bold":["837/0"],"_italic":["837/0"],"_underlined":["837/0"],"_monospaced":["837/0"],"_superscript":["837/0"],"_strike":["837/0"],"_supporting":["837/0"],"_rendered":["837/1"],"_monospace":["838/0"],"_substitution":["839/0"],"_bare":["839/1","839/3"],"_hide":["839/5"],"_setup":["839/5"],"_java":["839/0"],"_extension":["840/0","845/0","851/2","857/0","897/1"],"_row":["841/2","842/0","844/1","844/0","846/4"],"_declaration":["841/2","846/4"],"_blank":["841/3"],"_gap":["842/0"],"_alignment":["842/0","843/0"],"_column":["842/0","844/0"],"_spanning":["842/0","844/0"],"_columns":["844/0","844/1"],"_appearance":["845/0"],"_styles":["845/0"],"_layout":["846/0"],"_express":["846/0","871/3"],"_uneven":["846/0"],"_separately":["846/1"],"_repeated":["846/3"],"_declared":["846/4"],"_consist":["846/5"],"_z0":["846/7"],"_highlighted":["849/0"],"_breadcrumbs":["850/0"],"_getsourceurl":["852/0"],"_import":["854/0","868/0","894/6","895/0"],"_under":["854/0","863/2","870/0"],"_ethersproject":["854/0","895/0"],"_organization":["854/0"],"_umbrella":["854/0","873/0"],"_started":["854/0","890/0"],"_webserver":["855/0"],"_serve":["855/0"],"_demos":["855/1"],"_our":["855/1"],"_cdn":["855/1"],"_terminology":["856/0"],"_quickest":["857/0"],"_experiment":["857/0"],"_holds":["857/1","858/4"],"_typically":["858/3"],"_thing":["858/4"],"_lives":["860/0"],"_mapped":["860/1"],"_familiar":["860/2"],"_databases":["860/2"],"_relational":["860/2"],"_mapper":["860/2"],"_orm":["860/2"],"_communicate":["860/3"],"_don":["860/5","894/7"],"_smaller":["860/5"],"_vyper":["860/6"],"_dependency":["863/0"],"_mit":["863/1","863/2","865/0","868/1","870/0","871/0"],"_licensed":["863/1"],"_cc0":["863/1"],"_contributions":["863/2"],"_license":["863/2","865/0","868/1","870/0","871/0"],"_printable":["864/0"],"_ascii":["864/0","864/2"],"_bu":["864/1"],"_transmission":["864/2"],"_servers":["864/2"],"_proxies":["864/2"],"_mangle":["864/2"],"_editors":["864/2"],"_terminals":["864/2"],"_elegantly":["864/2"],"_keyboards":["864/2"],"_devices":["864/2"],"_administrative":["864/2"],"_priviledges":["864/2"],"_perpetuity":["866/1"],"_obscure":["866/2"],"_dot":["866/2"],"_carries":["866/2"],"_implication":["866/2"],"_date":["866/2","869/0"],"_released":["866/2"],"_considerations":["866/0"],"_ecosystem":["867/0"],"_originally":["867/1"],"_io":["867/1"],"_export":["868/0"],"_crowdsale":["868/0"],"_backup":["868/0"],"_soon":["868/0"],"_abiv2":["868/0","903/2"],"_citizens":["868/1"],"_tiny":["868/1"],"_maintained":["868/1"],"_open":["868/1"],"_copyright":["870/0","871/0","871/2","871/4"],"_richard":["871/0"],"_moore":["871/0"],"_permission":["871/1","871/2"],"_hereby":["871/1"],"_person":["871/1"],"_obtaining":["871/1"],"_restriction":["871/1"],"_limitation":["871/1"],"_rights":["871/1"],"_merge":["871/1"],"_publish":["871/1"],"_distribute":["871/1"],"_sublicense":["871/1"],"_sell":["871/1"],"_persons":["871/1"],"_whom":["871/1"],"_furnished":["871/1"],"_subject":["871/1"],"_conditions":["871/1"],"_notice":["871/2"],"_shall":["871/2","871/4"],"_substantial":["871/2"],"_warranty":["871/3"],"_implied":["871/3"],"_limited":["871/3"],"_warranties":["871/3"],"_merchantability":["871/3"],"_fitness":["871/3"],"_noninfringement":["871/3"],"_holders":["871/4"],"_liable":["871/4"],"_claim":["871/4"],"_damages":["871/4"],"_liability":["871/4"],"_tort":["871/4"],"_arising":["871/4"],"_dealings":["871/4"],"_covers":["872/0"],"_v5":["872/0","877/3","883/0"],"_updating":["872/1"],"_let":["872/2","892/1"],"_ll":["872/2","892/1"],"_namespace":["873/0","878/0"],"_bignumberify":["874/0"],"_circuit":["874/0"],"_instantiation":["874/0"],"_addresspromise":["875/2"],"_resolution":["875/0"],"_difference":["876/0","877/1","877/4","877/6"],"_bucket":["876/0","877/0","877/2","877/3","877/5"],"_exposes":["877/0"],"_collided":["877/2"],"_buckets":["877/2"],"_dereference":["877/5"],"_preserve":["877/5"],"_having":["877/7"],"_belong":["878/0"],"_undergone":["879/0"],"_dramatic":["879/0"],"_inspection":["879/1","880/0"],"_edge":["879/1"],"_interrogating":["880/0"],"_mostly":["880/0"],"_merged":["881/0","903/2"],"_guides":["882/0"],"_upgrading":["882/0"],"_focuses":["883/0"],"_migrating":["883/0"],"_smart":["886/0","886/1","891/0"],"_overloaded":["887/0","887/1","887/2"],"_internet":["890/0"],"_documentations":["891/0"],"_defactor":["891/0"],"_concepts":["891/0"],"_tutorials":["892/0"],"_happened":["892/0"],"_dead":["892/1"],"_outdated":["892/1"],"_wishes":["893/0"],"_tests":["893/1","893/2","894/1","897/0","904/1","907/0","909/0","909/1","912/0"],"_among":["893/1"],"_suites":["893/1","893/5","895/0","903/2"],"_gzip":["893/1","895/0"],"_seen":["893/2"],"_ci":["893/2"],"_strive":["893/3"],"_constantly":["893/3"],"_especially":["893/3","894/0"],"_arise":["893/3"],"_prior":["893/3"],"_corrected":["893/3"],"_causing":["893/3"],"_regression":["893/3"],"_procedurally":["893/4","893/5","905/0","909/1"],"_generating":["893/5","909/1"],"_choosing":["893/5"],"_captured":["893/5"],"_technologies":["894/0"],"_move":["894/0"],"_fast":["894/0"],"_universe":["894/0"],"_accessible":["894/0"],"_umd":["894/2"],"_modules":["894/2"],"_overlooked":["894/3"],"_suggestions":["894/3"],"_reach":["894/3"],"_opening":["894/3"],"_pain":["894/4"],"_ideas":["894/4"],"_bug":["894/4"],"_probably":["894/5"],"_summer":["894/5"],"_avoided":["894/6"],"_regular":["894/6"],"_expressions":["894/6"],"_caused":["894/6"],"_conflicts":["894/6"],"_otto":["894/6"],"_moral":["894/7"],"_story":["894/7"],"_gzipped":["895/0"],"_testcases":["895/0","897/0","898/0","900/0","901/0","902/0"],"_suite":["895/1","896/0"],"_schema":["895/1","898/0"],"_convenience":["896/0"],"_loadtests":["897/0"],"_testcase":["897/0","898/0"],"_perspective":["899/0"],"_runs":["899/0"],"_reproduce":["899/1"],"_sure":["899/3"],"_tweak":["899/3"],"_iteration":["899/3"],"_concatenate":["899/3"],"_drng":["899/0"],"_upper":["900/0","900/1","901/0","902/0"],"_exclusive":["900/0"],"_randomhexstring":["901/0"],"_randomnumber":["902/0"],"_outline":["903/0"],"_nuanced":["903/0"],"_overhaul":["903/1"],"_coverage":["903/1"],"_collapse":["903/1"],"_redundancy":["903/1"],"_schemas":["903/0"],"_ethereumjs":["904/1"],"_cpp":["904/1"],"_gz":["904/2"],"_coding":["905/0"],"_constructing":["909/1"],"_soldity":["909/1"],"_compiling":["909/1"],"_evaluating":["909/1"],"_conversion":["911/0"],"_keystore":["912/0"]}} \ No newline at end of file diff --git a/docs/v5/search/index.html b/docs/v5/search/index.html index f15d2dfe9..b12566378 100644 --- a/docs/v5/search/index.html +++ b/docs/v5/search/index.html @@ -3,6 +3,11 @@ Search + + + + +
- +
- + diff --git a/docs/v5/single-page/index.html b/docs/v5/single-page/index.html index 35e3452b6..091612bbf 100644 --- a/docs/v5/single-page/index.html +++ b/docs/v5/single-page/index.html @@ -3,6 +3,11 @@ ethers + + + + +
- +

Solidity Topics

This is a quick (and non-comprehensive) overview of how events are computed in Solidity.

+ +

This is likely out of the scope for most developers, but may be intersting to those who want to learn a bit more about the underlying technology.

+ +

Solidity provides two types of events, anonymous and non-anonymous. The default is non-anonymous, and most developers will not need to worry about anonymous events.

+ +

For non-anonymous events, up to 3 topics may be indexed (instead of 4), since the first topic is reserved to specify the event signature. This allows non-anonymous events to always be filtered by their event signature.

+ +

This topic hash is always in the first slot of the indexed data, and is computed by normalizing the Event signature and taking the keccak256 hash of it.

+ +

For anonymous events, up to 4 topics may be indexed, and there is no signature topic hash, so the events cannot be filtered by the event signature.

+ +

Each additional indexed property is processed depending on whether its length is fixed or dynamic.

+ +

For fixed length types (e.g. uint, bytes5), all of which are internally exactly 32 bytes (shorter types are padded with zeros; numeric values are padded on the left, data values padded on the right), these are included directly by their actual value, 32 bytes of data.

+ +

For dynamic types (e.g. string, uint256[]) , the value is hashed using keccak256 and this hash is used.

+ +

Because dynamic types are hashed, there are important consequences in parsing events that should be kept in mind. Mainly that the original value is lost in the event. So, it is possible to tell is a topic is equal to a given string, but if they do not match, there is no way to determine what the value was.

+ +

If a developer requires that a string value is required to be both able to be filtered and also able to be read, the value must be included in the signature twice, once indexed and once non-indexed (e.g. someEvent(string indexed searchBy, string clearText)).

+ +

For a more detailed description, please refer to the Solidity Event Documentation.

+ +

Other Things? TODO

Explain what happens to strings and bytes, how to filter and retain the value

Gas

Explain attack vectors

@@ -621,20 +651,26 @@ const contract = new Contract(tokenAddress, abi, provider); ensAddress: customEnsAddress };

Provider Documentation

-

Provider

Explain what a provider is...

+

Provider

A Provider in ethers is a read-only abstraction to access the blockchain data.

-

Accounts Methods

-
provider.getBalance( address [ , blockTag = latest ] ) Promise< BigNumber >

Returns the balance of address as of the blockTag block height.

+
Coming from Web3.js?

If you are coming from Web3.js, this is one of the biggest differences you will encounter using ethers.

-
provider.getCode( address [ , blockTag = latest ] ) Promise< string< DataHexString > >

Returns the contract code of address as of the blockTag block height. If there is no contract currently deployed, the result is 0x.

+

The ethers library creates a strong division between the operation a Provider can perform and those of a Signer, which Web3.js lumps together.

-
provider.getStorageAt( addr , pos [ , blockTag = latest ] ) Promise< string< DataHexString > >

Returns the Bytes32 value of the position pos at address addr, as of the blockTag.

+

This separation of concerns and a stricted subset of Provider operations allows for a larger variety of backends, a more consistent API and ensures other libraries to operate without being able to rely on any underlying assumption.

-
provider.getTransactionCount( address [ , blockTag = latest ] ) Promise< number >

Returns the number of transactions address has ever sent, as of blockTag. This value is required to be the nonce for the next transaction from address sent to the network.

+

Accounts Methods

+
provider.getBalance( address [ , blockTag = latest ] ) Promise< BigNumber >

Returns the balance of address as of the blockTag block height.

+ +
provider.getCode( address [ , blockTag = latest ] ) Promise< string< DataHexString > >

Returns the contract code of address as of the blockTag block height. If there is no contract currently deployed, the result is 0x.

+ +
provider.getStorageAt( addr , pos [ , blockTag = latest ] ) Promise< string< DataHexString > >

Returns the Bytes32 value of the position pos at address addr, as of the blockTag.

+ +
provider.getTransactionCount( address [ , blockTag = latest ] ) Promise< number >

Returns the number of transactions address has ever sent, as of blockTag. This value is required to be the nonce for the next transaction from address sent to the network.

Account Examples
// Get the balance for an account... provider.getBalance("ricmoo.firefly.eth"); -// { Promise: { BigNumber: "284831012276355695" } } +// { Promise: { BigNumber: "25334210474552466902" } } // Get the code for a contract... provider.getCode("registrar.firefly.eth"); @@ -646,11 +682,11 @@ const contract = new Contract(tokenAddress, abi, provider); // Get transaction count of an account... provider.getTransactionCount("ricmoo.firefly.eth"); -// { Promise: 689 } +// { Promise: 712 }

Blocks Methods

-
provider.getBlock( block ) Promise< Block >

Get the block from the network, where the result.transactions is a list of transaction hashes.

+
provider.getBlock( block ) Promise< Block >

Get the block from the network, where the result.transactions is a list of transaction hashes.

-
provider.getBlockWithTransactions( block ) Promise< BlockWithTransactions >

Get the block from the network, where the result.transactions is an Array of TransactionResponse objects.

+
provider.getBlockWithTransactions( block ) Promise< BlockWithTransactions >

Get the block from the network, where the result.transactions is an Array of TransactionResponse objects.

Block Examples
provider.getBlock(100004) // { Promise: { @@ -686,7 +722,7 @@ provider.getBlockWithTransactions(100004) // blockHash: '0xf93283571ae16dcecbe1816adc126954a739350cd1523a1559eabeae155fbb63', // blockNumber: 100004, // chainId: 0, -// confirmations: 11212224, +// confirmations: 11717911, // creates: null, // data: '0x', // from: '0xcf00A85f3826941e7A25BFcF9Aac575d40410852', @@ -711,9 +747,11 @@ provider.getBlockWithTransactions(100004)

The provider offers some basic operations to help resolve and work with ENS names.

-
provider.lookupAddress( address ) Promise< string >

Performs a reverse lookup of the address in ENS using the Reverse Registrar. If the name does not exist, or the forward lookup does not match, null is returned.

+
provider.getResolver( name ) Promise< EnsResolver >

Returns an EnsResolver instance which can be used to further inquire about specific entries for an ENS name.

-
provider.resolveName( name ) Promise< string< Address > >

Looks up the address of name. If the name is not owned, or does not have a Resolver configured, or the Resolver does not have an address configured, null is returned.

+
provider.lookupAddress( address ) Promise< string >

Performs a reverse lookup of the address in ENS using the Reverse Registrar. If the name does not exist, or the forward lookup does not match, null is returned.

+ +
provider.resolveName( name ) Promise< string< Address > >

Looks up the address of name. If the name is not owned, or does not have a Resolver configured, or the Resolver does not have an address configured, null is returned.

ENS Examples
// Reverse lookup of an ENS by address... provider.lookupAddress("0x6fC21092DA55B392b045eD78F4732bff3C580e2c"); @@ -722,17 +760,32 @@ provider.getBlockWithTransactions(100004) // Lookup an address of an ENS name... provider.resolveName("ricmoo.firefly.eth"); // { Promise: '0x8ba1f109551bD432803012645Ac136ddd64DBA72' } -

Logs Methods

-
provider.getLogs( filter ) Promise< Array< Log > >

Returns the Array of Log matching the filter.

+

EnsResolver

+
resolver.name string

The name of this resolver.

+ +
resolver.address string< Address >

The address of the Resolver.

+ +
resolver.getAddress( [ cointType = 60 ] ) Promise< string >

Returns a Promise which resolves to the EIP-2304 multicoin address stored for the coinType. By default an Ethereum Address (coinType = 60) will be returned.

+ +
resolver.getContentHash( ) Promise< string >

Returns a Promise which resolves to any stored EIP-1577 content hash.

+ +
resolver.getText( key ) Promise< string >

Returns a Promise which resolves to any stored EIP-634 text entry for key.

+ +

Logs Methods

+
provider.getLogs( filter ) Promise< Array< Log > >

Returns the Array of Log matching the filter.

Keep in mind that many backends will discard old events, and that requests which are too broad may get dropped as they require too many resources to execute the query.

Network Status Methods

-
provider.getNetwork( ) Promise< Network >

Returns the Network this Provider is connected to.

+
provider.getNetwork( ) Promise< Network >

Returns the Network this Provider is connected to.

-
provider.getBlockNumber( ) Promise< number >

Returns the block number (or height) of the most recently mined block.

+
provider.getBlockNumber( ) Promise< number >

Returns the block number (or height) of the most recently mined block.

-
provider.getGasPrice( ) Promise< BigNumber >

Returns a best guess of the Gas Price to use in a transaction.

+
provider.getGasPrice( ) Promise< BigNumber >

Returns a best guess of the Gas Price to use in a transaction.

+ +
provider.ready Promise< Network >

Returns a Promise which will stall until the network has heen established, ignoring errors due to the target node not being active yet.

+ +

This can be used for testing or attaching scripts to wait until the node is up and running smoothly.

Network Status Examples
// The network information provider.getNetwork() @@ -744,42 +797,54 @@ provider.getBlockWithTransactions(100004) // The current block number provider.getBlockNumber() -// { Promise: 11312227 } +// { Promise: 11817914 } // Get the current suggested gas price (in wei)... gasPrice = await provider.getGasPrice() -// { BigNumber: "46200000000" } +// { BigNumber: "207000000000" } // ...often this gas price is easier to understand or // display to the user in gwei (giga-wei, or 1e9 wei) utils.formatUnits(gasPrice, "gwei") -// '46.2' +// '207.0'

Transactions Methods

-
provider.call( transaction [ , blockTag = latest ] ) Promise< string< DataHexString > >

Returns the result of executing the transaction, using call. A call does not require any ether, but cannot change any state. This is useful for calling getters on Contracts.

+
provider.call( transaction [ , blockTag = latest ] ) Promise< string< DataHexString > >

Returns the result of executing the transaction, using call. A call does not require any ether, but cannot change any state. This is useful for calling getters on Contracts.

-
provider.estimateGas( transaction ) Promise< BigNumber >

Returns an estimate of the amount of gas that would be required to submit transaction to the network.

+
provider.estimateGas( transaction ) Promise< BigNumber >

Returns an estimate of the amount of gas that would be required to submit transaction to the network.

An estimate may not be accurate since there could be another transaction on the network that was not accounted for, but after being mined affected relevant state.

-
provider.sendTransaction( transaction ) Promise< TransactionResponse >

Submits transaction to the network to be mined. The transaction must be signed, and be valid (i.e. the nonce is correct and the account has sufficient balance to pay for the transaction).

+
provider.getTransaction( hash ) Promise< TransactionResponse >

Returns the transaction with hash or null if the transaction is unknown.

-
provider.waitForTransaction( hash [ , confirms = 1 [ , timeout ] ] ) Promise< TxReceipt >

Returns a Promise which will not resolve until transactionHash is mined.

+

If a transaction has not been mined, this method will search the transaction pool. Various backends may have more restrictive transaction pool access (e.g. if the gas price is too low or the transaction was only recently sent and not yet indexed) in which case this method may also return null.

-

Event Emitter Methods

Explain events here...

+
provider.getTransactionReceipt( hash ) Promise< TransactionReceipt >

Returns the transaction receipt for hash or null if the transaction has not been mined.

-
provider.on( eventName , listener ) this

Add a listener to be triggered for each eventName.

+

To stall until the transaction has been mined, consider the waitForTransaction method below.

-
provider.once( eventName , listener ) this

Add a listener to be triggered for only the next eventName, at which time it will be removed.

+
provider.sendTransaction( transaction ) Promise< TransactionResponse >

Submits transaction to the network to be mined. The transaction must be signed, and be valid (i.e. the nonce is correct and the account has sufficient balance to pay for the transaction).

-
provider.emit( eventName , ...args ) boolean

Notify all listeners of eventName, passing args to each listener. This is generally only used internally.

+
provider.waitForTransaction( hash [ , confirms = 1 [ , timeout ] ] ) Promise< TxReceipt >

Returns a Promise which will not resolve until transactionHash is mined.

-
provider.off( eventName [ , listener ] ) this

Remove a listener for eventName. If no listener is provided, all listeners for eventName are removed.

+

If confirms is 0, this method is non-blocking and if the transaction has not been mined returns null. Otherwise, this method will block until the transaction has confirms blocks mined on top of the block in which is was mined.

-
provider.removeAllListeners( [ eventName ] ) this

Remove all the listeners for eventName. If no eventName is provided, all events are removed.

+

Event Emitter Methods

The EventEmitter API allows applications to use an Obeserver Pattern to register callbacks for when various events occur.

-
provider.listenerCount( [ eventName ] ) number

Returns the number of listeners for eventName. If no eventName is provided, the total number of listeners is returned.

+

This closely follows the Event Emitter provided by other JavaScript libraries with the exception that event names support some more complex objects, not only strings. The objects are normalized internally.

-
provider.listeners( eventName ) Array< Listener >

Returns the list of Listeners for eventName.

+
provider.on( eventName , listener ) this

Add a listener to be triggered for each eventName event.

+ +
provider.once( eventName , listener ) this

Add a listener to be triggered for only the next eventName event, at which time it will be removed.

+ +
provider.emit( eventName , ...args ) boolean

Notify all listeners of the eventName event, passing args to each listener. This is generally only used internally.

+ +
provider.off( eventName [ , listener ] ) this

Remove a listener for the eventName event. If no listener is provided, all listeners for eventName are removed.

+ +
provider.removeAllListeners( [ eventName ] ) this

Remove all the listeners for the eventName events. If no eventName is provided, all events are removed.

+ +
provider.listenerCount( [ eventName ] ) number

Returns the number of listeners for the eventName events. If no eventName is provided, the total number of listeners is returned.

+ +
provider.listeners( eventName ) Array< Listener >

Returns the list of Listeners for the eventName events.

Events

Any of the following may be used as the eventName in the above methods.

@@ -787,12 +852,14 @@ provider.getBlockWithTransactions(100004)

If address is unspecified, the filter matches any contract address.

-

See events for more information on how to specify topic-sets.

+

See EventFilters for more information on filtering events.

Topic-Set Filter

The value of a Topic-Set Filter is a array of Topic-Sets.

This event is identical to a Log Filter with the address omitted (i.e. from any contract).

+

See EventFilters for more information on filtering events.

+
Transaction Filter

The value of a Transaction Filter is any transaction hash.

This event is emitted on every block that is part of a chain that includes the given mined transaction. It is much more common that the once method is used than the on method.

@@ -851,7 +918,9 @@ provider.on("error", (tx) => {

JsonRpcProvider inherits Provider

The JSON-RPC API is a popular method for interacting with Ethereum and is available in all major Ethereum node implementations (e.g. Geth and Parity) as well as many third-party web services (e.g. INFURA)

-
new ethers.providers.JsonRpcProvider( [ url [ , aNetworkish ] ] )

Connect to a JSON-RPC API located at url using the aNetworkish network. If url is not specified, the default (i.e. http://localhost:8545) is used and if no network is specified, it will be determined automatically by querying the node.

+
new ethers.providers.JsonRpcProvider( [ urlOrConnectionInfo [ , networkish ] ] )

Connect to a JSON-RPC HTTP API using the URL or ConnectionInfo urlOrConnectionInfo connected to the networkish network.

+ +

If urlOrConnectionInfo is not specified, the default (i.e. http://localhost:8545) is used and if no network is specified, it will be determined automatically by querying the node using eth_chaindId and falling back on eth_networkId.

Note: Connecting to a Local Node

Each node implementation is slightly different and may require specific command-line flags, configuration or settings in their UI to enable JSON-RPC, unlock accounts or expose specific APIs. Please consult their documentation.

@@ -997,13 +1066,12 @@ provider = new AlchemyProvider("homestead", apiKey);
Cloudflare Examples
// Connect to mainnet (homestead) provider = new CloudflareProvider(); -

Other Providers

Others...

- +

Other Providers

FallbackProvider inherits Provider

The FallbackProvider is the most advanced Provider available in ethers.

It uses a quorum and connects to multiple Providers as backends, each configured with a priority and a weight .

-

When a request is made, the request is dispatched to multiple backends, randomly chosen (higher priority backends are always selected first) and the results from each are compared against the others. Only once the quorum has been reached will that result be accepted and returned to the caller.

+

When a request is made, the request is dispatched to multiple backends, randomly chosen (lower-value priority backends are always selected first) and the results from each are compared against the others. Only once the quorum has been reached will that result be accepted and returned to the caller.

By default the quorum requires 50% (rounded up) of the backends to agree. The weight can be used to give a backend Provider more influence.

@@ -1018,7 +1086,7 @@ provider = new AlchemyProvider("homestead", apiKey);

FallbackProviderConfig

fallbackProviderConfig.provider Provider

The provider for this configuration.

-
fallbackProviderConfig.priority number

The priority used for the provider. Higher priorities are favoured over lower priorities. If multiple providers share the same priority, they are chosen at random.

+
fallbackProviderConfig.priority number

The priority used for the provider. Lower-value priorities are favoured over higher-value priorities. If multiple providers share the same priority, they are chosen at random.

fallbackProviderConfig.stallTimeout number

The timeout (in ms) after which another Provider will be attempted. This does not affect the current Provider; if it returns a result it is counted as part of the quorum.

@@ -1042,7 +1110,7 @@ provider = new AlchemyProvider("homestead", apiKey);
InheritingClass.getUrl( network , apiKey ) string

The URL to use for the JsonRpcProvider instance.

-

Web3Provider inherits JsonRpcProvider

The Web3Provider is meant to ease moving from a web3.js based application to ethers by wrapping an existing Web3-compatible (such as a Web3HttpProvider, Web3IpcProvider or Web3WsProvider) and exposing it as an ethers.js Provider which can then be used with the rest of the library.

+

Web3Provider inherits JsonRpcProvider

The Web3Provider is meant to ease moving from a web3.js based application to ethers by wrapping an existing Web3-compatible (such as a Web3HttpProvider, Web3IpcProvider or Web3WsProvider) and exposing it as an ethers.js Provider which can then be used with the rest of the library.

This may also be used to wrap a standard [EIP-1193 Provider](link-eip-1193].

@@ -1072,18 +1140,14 @@ provider = new AlchemyProvider("homestead", apiKey);

The WebSocket API is newer, and if running your own infrastructure, note that WebSockets are much more intensive on your server resources, as they must manage and maintain the state for each client. For this reason, many services may also charge additional fees for using their WebSocket endpoints.

-
new ethers.provider.WebSocketProvider( [ url [ , network ] ] )

Returns a new WebSocketProvider connected to url as the network.

+
new ethers.providers.WebSocketProvider( [ url [ , network ] ] )

Returns a new WebSocketProvider connected to url as the network.

If url is unspecified, the default "ws://localhost:8546" will be used. If network is unspecified, it will be queried from the network.

Types

-

BlockTag

A BlockTag specifies a specific location in the Blockchain.

+

BlockTag

A BlockTag specifies a specific block location in the Blockchain.

-

  • "latest" -- The most recently mined block
  • "earliest" -- Block #0
  • "pending" -- The block currently being prepared for mining; not all operations and backends support this BlockTag
  • number -- The block at this height
  • a negative number -- The block this many blocks ago

- -

EventType

And EventType can be any of the following.

- -

+

  • "latest" - The most recently mined block
  • "earliest" - Block #0
  • "pending" - The block currently being prepared for mining; not all operations and backends support this BlockTag
  • number - The block at this height
  • a negative number - The block this many blocks ago
  • hex string - The block at this height (as a hexidecimal value)

Networkish

A Networkish may be any of the following:

@@ -1138,7 +1202,11 @@ provider = new AlchemyProvider("homestead", apiKey);

EventFilter

filter.address string< Address >

The address to filter by, or null to match any address.

-
filter.topics Array< string< DataHexString< 32 > > | Array< string< DataHexString< 32 > > > >

The topics to filter by, or null to match any topics. Each entry represents an AND condition that must match, or may be null to match anything. If a given entry is an Array, then that entry is treated as an OR for any value in the entry.

+
filter.topics Array< string< Data< 32 > > | Array< string< Data< 32 > > > >

The topics to filter by or null to match any topics.

+ +

Each entry represents an AND condition that must match, or may be null to match anything. If a given entry is an Array, then that entry is treated as an OR for any value in the entry.

+ +

See Filters for more details and examples on specifying complex filters.

Filter inherits EventFilter

filter.fromBlock BlockTag

The starting block (inclusive) to search for logs matching the filter criteria.

@@ -1204,7 +1272,11 @@ provider = new AlchemyProvider("homestead", apiKey);
transaction.raw string< DataHexString >

The serialized transaction.

-
transaction.wait( [ confirmations = 1 ] ) Promise< TransactionReceipt >

Wait for confirmations. If 0, and the transaction has not been mined, null is returned.

+
transaction.wait( [ confirms = 1 ] ) Promise< TransactionReceipt >

Resolves to the TransactionReceipt once the transaction has been included in the chain for confirms blocks. If confirms is 0, and the transaction has not been mined, null is returned.

+ +

If the transaction execution failed (i.e. the receipt status is 0), a CALL_EXCEPTION Error will be rejected with the following properties:

+ +

  • error.transaction - the original transaction
  • error.transactionHash - the hash of the transaction
  • error.receipt - the actual receipt, with the status of 0

TransactionReceipt

receipt.to string< Address >

The address this transaction is to. This is null if the transaction was an init transaction, used to deploy a contract.

@@ -1429,7 +1501,7 @@ walletMnemonic.address === walletPrivateKey.address walletMnemonic.mnemonic // { // locale: 'en', -// path: 'm/44\'/60\'/0\'/0/0', +// path: "m/44'/60'/0'/0/0", // phrase: 'announce room limb pattern dry unit scale effort smooth jazz weasel alcohol' // } @@ -1485,7 +1557,7 @@ contract = new ethers.Contract("dai.tokens.ethers.eth", abi, signer) // Get the number of tokens for this account tokens = await contract.balanceOf(signer.getAddress()) -// { BigNumber: "15923148775162018481031" } +// { BigNumber: "198172622063578627973" } // // Pre-flight (check for revert) on DAI from the signer @@ -1502,7 +1574,7 @@ contract = new ethers.Contract("dai.tokens.ethers.eth", abi, signer) // This will fail since it is greater than the token balance contract.callStatic.transfer("donations.ethers.eth", tokens.add(1)) -// Error: call revert exception (method="transfer(address,uint256)", errorSignature="Error(string)", errorArgs=["Dai/insufficient-balance"], reason="Dai/insufficient-balance", code=CALL_EXCEPTION, version=abi/5.0.9) +// Error: call revert exception (method="transfer(address,uint256)", errorSignature="Error(string)", errorArgs=["Dai/insufficient-balance"], reason="Dai/insufficient-balance", code=CALL_EXCEPTION, version=abi/5.0.12)

ExternallyOwnedAccount

This is an interface which contains a minimal set of properties required for Externally Owned Accounts which can have certain operations performed, such as encoding as a JSON wallet.

eoa.address string< Address >

The Address of this EOA.

@@ -1515,7 +1587,9 @@ contract = new ethers.Contract("dai.tokens.ethers.eth", abi, signer)

A ContractFactory is an abstraction of a contract's bytecode and facilitates deploying a contract.

-

Contract

Explain contract here...

+

Contract

A Contract is an abstraction of code that has been deployed to the blockchain.

+ +

A Contract may be sent transactions, which will trigger its code to be run with the input of the transaction data.

Creating Instances

new ethers.Contract( address , abi , signerOrProvider )
@@ -1548,21 +1622,21 @@ contract = new ethers.Contract("dai.tokens.ethers.eth", abi, signer)
contract.listenerCount( [ event ] ) number

Return the number of listeners that are subscribed to event. If no event is provided, returns the total count of all events.

-
contract.listeners( event ) Array< Listener >

Return a list of listeners that are subscribed to event.

+
contract.listeners( event ) Array< Listener >

Return a list of listeners that are subscribed to event.

-
contract.off( event , listener ) this

Unsubscribe listener to event.

+
contract.off( event , listener ) this

Unsubscribe listener to event.

contract.on( event , listener ) this

Subscribe to event calling listener when the event occurs.

contract.once( event , listener ) this

Subscribe once to event calling listener when the event occurs.

-
contract.removeAllListeners( [ event ] ) this

Unsubscribe all listeners for event. If no event is provided, all events are unsubscribed.

+
contract.removeAllListeners( [ event ] ) this

Unsubscribe all listeners for event. If no event is provided, all events are unsubscribed.

Meta-Class

A Meta-Class is a Class which has any of its properties determined at run-time. The Contract object uses a Contract's ABI to determine what methods are available, so the following sections describe the generic ways to interact with the properties added at run-time during the Contract constructor.

Read-Only Methods (constant)

A constant method is read-only and evaluates a small amount of EVM code against the current blockchain state and can be computed by asking a single node, which can return a result. It is therefore free and does not require any ether, but cannot make changes to the blockchain state..

-
contract.METHOD_NAME( ...args [ , overrides ] ) Promise< any >

The type of the result depends on the ABI.

+
contract.METHOD_NAME( ...args [ , overrides ] ) Promise< any >

The type of the result depends on the ABI. If the method returns a single value, it will be returned directly, otherwise a Result object will be returned with each parameter available positionally and if the parameter is named, it will also be available by its name.

For values that have a simple meaning in JavaScript, the types are fairly straight forward; strings and booleans are returned as JavaScript strings and booleans.

@@ -1570,6 +1644,10 @@ contract = new ethers.Contract("dai.tokens.ethers.eth", abi, signer)

For bytes (both fixed length and dynamic), a DataHexString is returned.

+

The overrides object for a read-only method may include any of:

+ +

  • overrides.from - the msg.sender (or CALLER) to use during the execution of the code
  • overrides.value - the msg.value (or CALLVALUE) to use during the exectuiont of the code
  • overrides.gasPrice - the price to pay per gas (theoretically); since there is no transaction, there is not going to be any fee charged, but the EVM still requires a value to report to tx.gasprice (or GASPRICE); most developers will not require this
  • overrides.gasLimit - the amount of gas (theoretically) to allow a node to use during the execution of the code; since there is no transaction, there is not going to be any fee charged, but the EVM still processes gas metering so calls like gasleft (or GAS) report meaningful values
  • overrides.blockTag - a block tag to simulate the execution at, which can be used for hypothetical historic analysis; note that many backends do not support this, or may require paid plans to access as the node database storage and processing requirements are much higher

+
contract.functions.METHOD_NAME( ...args [ , overrides ] ) Promise< Result >

The result will always be a Result, even if there is only a single return value type.

This simplifies frameworks which wish to use the Contract object, since they do not need to inspect the return types to unwrap simplified functions.

@@ -1578,80 +1656,145 @@ contract = new ethers.Contract("dai.tokens.ethers.eth", abi, signer)

Most developers should not require this.

+

The overrides are identical to the read-only operations above.

+

Write Methods (non-constant)

A non-constant method requires a transaction to be signed and requires payment in the form of a fee to be paid to a miner. This transaction will be verified by every node on the entire network as well by the miner who will compute the new state of the blockchain after executing it against the current state.

It cannot return a result. If a result is required, it should be logged using a Solidity event (or EVM log), which can then be queried from the transaction receipt.

contract.METHOD_NAME( ...args [ , overrides ] ) Promise< TransactionResponse >

Returns a TransactionResponse for the transaction after it is sent to the network. This requires the Contract has a signer.

+

The overrides object for write methods may include any of:

+ +

  • overrides.gasPrice - the price to pay per gas
  • overrides.gasLimit - the limit on the amount of gas to allow the transaction to consume; any unused gas is returned at the gasPrice
  • overrides.value - the amount of ether (in wei) to forward with the call
  • overrides.nonce - the nonce to use for the Signer

+ +

If the wait() method on the returned TransactionResponse is called, there will be additional properties on the receipt:

+ +

  • receipt.events - an array of the logs, with additional properties (if the ABI included a description for the events)
  • receipt.events[n].args - the parsed arguments
  • receipt.events[n].decode - a method that can be used to parse the log topics and data (this was used to compute args)
  • receipt.events[n].event - the name of the event
  • receipt.events[n].eventSignature - the full signature of the event
  • receipt.removeListener() - a method to remove the listener that trigger this event
  • receipt.getBlock() - a method to return the Block this event occurred in
  • receipt.getTransaction() - a method to return the Transaction this event occurred in
  • receipt.getTransactionReceipt() - a method to return the Transaction Receipt this event occurred in

+

Write Methods Analysis

There are several options to analyze properties and results of a write method without actually executing it.

contract.estimateGas.METHOD_NAME( ...args [ , overrides ] ) Promise< BigNumber >

Returns the estimate units of gas that would be required to execute the METHOD_NAME with args and overrides.

+

The overrides are identical to the overrides above for read-only or write methods, depending on the type of call of METHOD_NAME.

+
contract.populateTransaction.METHOD_NAME( ...args [ , overrides ] ) Promise< UnsignedTx >

Returns an UnsignedTransaction which represents the transaction that would need to be signed and submitted to the network to execute METHOD_NAME with args and overrides.

+

The overrides are identical to the overrides above for read-only or write methods, depending on the type of call of METHOD_NAME.

+
contract.callStatic.METHOD_NAME( ...args [ , overrides ] ) Promise< any >

Rather than executing the state-change of a transaction, it is possible to ask a node to pretend that a call is not state-changing and return the result.

This does not actually change any state, but is free. This in some cases can be used to determine if a transaction will fail or succeed.

This otherwise functions the same as a Read-Only Method.

+

The overrides are identical to the read-only operations above.

+

Event Filters

An event filter is made up of topics, which are values logged in a Bloom Filter, allowing efficient searching for entries which match a filter.

contract.filters.EVENT_NAME( ...args ) Filter

Return a filter for EVENT_NAME, optionally filtering by additional constraints.

Only indexed event parameters may be filtered. If a parameter is null (or not provided) then any value in that field matches.

-

ContractFactory

@TODO: Fill this in, including @SRC links

+

ContractFactory

To deploy a Contract, additional information is needed that is not available on a Contract object itself.

+ +

Mainly, the bytecode (more specifically the initcode) of a contract is required.

+ +

The Contract Factory sends a special type of transaction, an initcode transaction (i.e. the to field is null, and the data field is the initcode) where the initcode will be evaluated and the result becomes the new code to be deployed as a new contract.

Creating Instances

-
new ethers.ContractFactory( interface , bytecode [ , signer ] )
-
ContractFactory.fromSolidity( compilerOutput [ , signer ] ) ContractFactory
-
contractFactory.connect( signer ) Contract
+
new ethers.ContractFactory( interface , bytecode [ , signer ] )

Creates a new instance of a ContractFactory for the contract described by the interface and bytecode initcode.

+ +
ContractFactory.fromSolidity( compilerOutput [ , signer ] ) ContractFactory

Consumes the output of the Solidity compiler, extracting the ABI and bytecode from it, allowing for the various formats the solc compiler has emitted over its life.

+ +
contractFactory.connect( signer ) Contract

Returns a new instance of the ContractFactory with the same interface and bytecode, but with a different signer.

+

Properties

-
contractFactory.interface Interface
-
contractFactory.bytecode string< DataHexString >
-
contractFactory.signer Signer
+
contractFactory.interface Interface

The Contract interface.

+ +
contractFactory.bytecode string< DataHexString >

The bytecode (i.e. initcode) that this ContractFactory will use to deploy the Contract.

+ +
contractFactory.signer Signer

The Signer (if any) this ContractFactory will use to deploy instances of the Contract to the Blockchain.

+

Methods

contractFactory.attach( address ) Contract

Return an instance of a Contract attached to address. This is the same as using the Contract constructor with address and this the interface and signerOrProvider passed in when creating the ContractFactory.

-
contractFactory.getDeployTransaction( ...args ) UnsignedTransaction

Returns the unsigned transaction which would deploy this Contract with args passed to the Contract's constructor.

+
contractFactory.getDeployTransaction( ...args [ , overrides ] ) UnsignedTransaction

Returns the unsigned transaction which would deploy this Contract with args passed to the Contract's constructor.

-
contractFactory.deploy( ...args ) Promise< Contract >

Uses the signer to deploy the Contract with args passed into the constructor and returns a Contract which is attached to the address where this contract will be deployed once the transaction is mined.

+

If the optional overrides is specified, they can be used to override the endowment value, transaction nonce, gasLimit or gasPrice.

+ +
contractFactory.deploy( ...args [ , overrides ] ) Promise< Contract >

Uses the signer to deploy the Contract with args passed into the constructor and returns a Contract which is attached to the address where this contract will be deployed once the transaction is mined.

The transaction can be found at contract.deployTransaction, and no interactions should be made until the transaction is mined.

-
Deploying a Contract
// <hide> -const signer = ethers.LocalSigner(); -const ContractFactory = ethers.ContractFactory; -// </hide> +

If the optional overrides is specified, they can be used to override the endowment value, transaction nonce, gasLimit or gasPrice.

-// If your contract constructor requires parameters, the ABI -// must include the constructor -const abi = [ - "constructor(address owner, uint256 initialValue)" +
Deploying a Contract
// If your contract constructor requires parameters, the ABI +// must include the constructor +const abi = [ + "constructor(address owner, uint256 initialValue)", + "function value() view returns (uint)" ]; -const factory = new ContractFactory(abi, bytecode, signer) +// The factory we use for deploying contracts +factory = new ContractFactory(abi, bytecode, signer) -const contract = await factory.deploy("ricmoo.eth", 42); +// Deploy an instance of the contract +contract = await factory.deploy("ricmoo.eth", 42); -// The address is available immediately, but the contract -// is NOT deployed yet -contract.address -//! - -// The transaction that the signer sent to deploy -contract.deployTransaction -//! - -// Wait until the transaction is mined -contract.deployTransaction.wait() -//! - -// Now the contract is safe to interact with -contract.value() -//!

Example: ERC-20 Contract

+// The address is available immediately, but the contract +// is NOT deployed yet +contract.address +// '0x26E9685C018Bf3A401DFA632827e7e6C7D96b1C0' + +// The transaction that the signer sent to deploy +contract.deployTransaction +// { +// blockHash: null, +// blockNumber: null, +// chainId: 1337, +// confirmations: 0, +// creates: '0x26E9685C018Bf3A401DFA632827e7e6C7D96b1C0', +// data: '0x608060405234801561001057600080fd5b5060405161012e38038061012e8339818101604052604081101561003357600080fd5b81019080805190602001909291908051906020019092919050505081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060008190555050506088806100a66000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80633fa4f24514602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000805490509056fea2646970667358221220926465385af0e8706644e1ff3db7161af699dc063beaadd55405f2ccd6478d7564736f6c63430007040033000000000000000000000000ab7c8803962c0f2f5bbbe3fa8bf41cd82aa1923c000000000000000000000000000000000000000000000000000000000000002a', +// from: '0xf3e6942b256A60B596B24F633caE8aDB4983fCA6', +// gasLimit: { BigNumber: "126462" }, +// gasPrice: { BigNumber: "1" }, +// hash: '0x4037630fdadbbe0aac0bf90eba61118e35ee5fc28329e2134bb2bad0bfc12684', +// nonce: 1, +// r: '0xc3bb79ea4600864cd110fe74d31d38bb3702c327fd5aef9feddf66903cc87a4f', +// s: '0x35cc2ffe352c02b5fcfbbcd2e348001af670f64438d7a9b2c34756ec293a0784', +// to: null, +// transactionIndex: null, +// v: 2709, +// value: { BigNumber: "0" }, +// wait: [Function] +// } + +// Wait until the transaction is mined (i.e. contract is deployed) +// - returns the receipt +// - throws on failure (the reciept is on the error) +contract.deployTransaction.wait() +// { Promise: { +// blockHash: '0x1715de2bdfec15a7f64fb79a8254699274be6776df244d24a04945a3218543e6', +// blockNumber: 2, +// byzantium: true, +// confirmations: 1, +// contractAddress: '0x26E9685C018Bf3A401DFA632827e7e6C7D96b1C0', +// cumulativeGasUsed: { BigNumber: "126462" }, +// from: '0xf3e6942b256A60B596B24F633caE8aDB4983fCA6', +// gasUsed: { BigNumber: "126462" }, +// logs: [], +// logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', +// status: 1, +// to: null, +// transactionHash: '0x4037630fdadbbe0aac0bf90eba61118e35ee5fc28329e2134bb2bad0bfc12684', +// transactionIndex: 0 +// } } + +// Now the contract is safe to interact with +contract.value() +// { Promise: { BigNumber: "42" } } +

Example: ERC-20 Contract

Connecting to a Contract

A simple ERC-20 contract
// A Human-Readable ABI; any supported ABI format could be used const abi = [ @@ -1781,9 +1924,9 @@ contract.value()
ethers.utils.defaultAbiCoder AbiCoder

An AbiCoder created when the library is imported which is used by the Interface.

Coding Methods

-
abiCoder.encode( types , values ) string< DataHexString >

Encode the array values according to the array of types, each of which may be a string or a ParamType.

+
abiCoder.encode( types , values ) string< DataHexString >

Encode the array values according to the array of types, each of which may be a string or a ParamType.

-
abiCoder.decode( types , data ) Result

Decode the data according to the array of types, each of which may be a string or ParamType.

+
abiCoder.decode( types , data ) Result

Decode the data according to the array of types, each of which may be a string or ParamType.

ABI Formats

@TODO: Expand this section

@@ -1902,7 +2045,7 @@ contract.value()

Interface

The Interface Class abstracts the encoding and decoding required to interact with contracts on the Ethereum network.

-

Many of the standards organically evolved along side the Solidity language, which other languages have adopted to remain compatible with existing deployed contracts.

+

Many of the standards organically evolved along side the Solidity language, which other languages have adopted to remain compatible with existing deployed contracts.

The EVM itself does not understand what the ABI is. It is simply an agreed upon set of formats to encode various types of data which each contract can expect so they can interoperate with each other.

@@ -2022,11 +2165,11 @@ contract.value()

Converting and Verifying

ethers.utils.getAddress( address ) string< Address >

Returns address as a Checksum Address.

-

If address is an invalid 40-nibble HexString or if it contains mixed case and the checksum is invalid, an InvalidArgument Error is thrown.

+

If address is an invalid 40-nibble HexString or if it contains mixed case and the checksum is invalid, an INVALID_ARGUMENT Error is thrown.

The value of address may be any supported address format.

-
ethers.utils.getIcapAddress( address ) string< IcapAddress >

Returns address as an ICAP address. Supports the same restrictions as utils.getAddress.

+
ethers.utils.getIcapAddress( address ) string< IcapAddress >

Returns address as an ICAP address. Supports the same restrictions as getAddress.

ethers.utils.isAddress( address ) boolean

Returns true if address is valid (in any supported format).

@@ -2101,7 +2244,7 @@ one2 // Numbers outside the safe range fail: BigNumber.from(Number.MAX_SAFE_INTEGER); -// Error: overflow (fault="overflow", operation="BigNumber.from", value=9007199254740991, code=NUMERIC_FAULT, version=bignumber/5.0.11) +// Error: overflow (fault="overflow", operation="BigNumber.from", value=9007199254740991, code=NUMERIC_FAULT, version=bignumber/5.0.14)

Methods

The BigNumber class is immutable, so no operations can change the value it represents.

Math Operations

@@ -2196,7 +2339,9 @@ a.mul(b);

But, the BigNumber prototype is exposed, so you can always add a toMyCustomBigNumber() method to all BigNumber's globally which is safe.

-

Byte Manipulation

Tra la la...

+

Byte Manipulation

While there are many high-level APIs for interacting with Ethereum, such as Contracts and Providers, a lot of the low level access requires byte manipulation operations.

+ +

Many of these operations are used internally, but can also be used to help normalize binary data representations from the output of various functions and methods.

Types

Bytes

A Bytes is any object which is an Array or TypedArray with each value in the valid byte range (i.e. between 0 and 255 inclusive), or is an Object with a length property where each indexed property is in the valid byte range.

@@ -2220,14 +2365,14 @@ a.mul(b);
ethers.utils.isBytesLike( object ) boolean

Returns true if and only if object is a Bytes or DataHexString.

-
ethers.utils.isHexString( object , [ length ] ) boolean

Returns true if and only if object is a valid hex string. If length is specified and object is not a valid DataHexString of length bytes, an InvalidArgument error is thrown.

+
ethers.utils.isHexString( object , [ length ] ) boolean

Returns true if and only if object is a valid hex string. If length is specified and object is not a valid DataHexString of length bytes, an InvalidArgument error is thrown.

Converting between Arrays and Hexstrings

-
ethers.utils.arrayify( DataHexStringOrArrayish [ , options ] ) Uint8Array

Converts DataHexStringOrArrayish to a Uint8Array.

+
ethers.utils.arrayify( DataHexStringOrArrayish [ , options ] ) Uint8Array

Converts DataHexStringOrArrayish to a Uint8Array.

-
ethers.utils.hexlify( hexstringOrArrayish ) string< DataHexString >

Converts hexstringOrArrayish to a DataHexString.

+
ethers.utils.hexlify( hexstringOrArrayish ) string< DataHexString >

Converts hexstringOrArrayish to a DataHexString.

-
ethers.utils.hexValue( aBigNumberish ) string< HexString >

Converts aBigNumberish to a HexString, with no unnecessary leading zeros.

+
ethers.utils.hexValue( aBigNumberish ) string< HexString >

Converts aBigNumberish to a HexString, with no unnecessary leading zeros.

Examples
// Convert a hexstring to a Uint8Array arrayify("0x1234") @@ -2253,31 +2398,31 @@ a.mul(b); hexValue([ 1, 2 ]) // '0x102'

Array Manipulation

-
ethers.utils.concat( arrayOfBytesLike ) Uint8Array

Concatenates all the BytesLike in arrayOfBytesLike into a single Uint8Array.

+
ethers.utils.concat( arrayOfBytesLike ) Uint8Array

Concatenates all the BytesLike in arrayOfBytesLike into a single Uint8Array.

-
ethers.utils.stripZeros( aBytesLike ) Uint8Array

Returns a Uint8Array with all leading 0 bytes of aBtyesLike removed.

+
ethers.utils.stripZeros( aBytesLike ) Uint8Array

Returns a Uint8Array with all leading 0 bytes of aBtyesLike removed.

-
ethers.utils.zeroPad( aBytesLike , length ) Uint8Array

Returns a Uint8Array of the data in aBytesLike with 0 bytes prepended to length bytes long.

+
ethers.utils.zeroPad( aBytesLike , length ) Uint8Array

Returns a Uint8Array of the data in aBytesLike with 0 bytes prepended to length bytes long.

If aBytesLike is already longer than length bytes long, an InvalidArgument error will be thrown.

Hexstring Manipulation

-
ethers.utils.hexConcat( arrayOfBytesLike ) string< DataHexString >

Concatenates all the BytesLike in arrayOfBytesLike into a single DataHexString

+
ethers.utils.hexConcat( arrayOfBytesLike ) string< DataHexString >

Concatenates all the BytesLike in arrayOfBytesLike into a single DataHexString

-
ethers.utils.hexDataLength( aBytesLike ) string< DataHexString >

Returns the length (in bytes) of aBytesLike.

+
ethers.utils.hexDataLength( aBytesLike ) string< DataHexString >

Returns the length (in bytes) of aBytesLike.

-
ethers.utils.hexDataSlice( aBytesLike , offset [ , endOffset ] ) string< DataHexString >

Returns a DataHexString representation of a slice of aBytesLike, from offset (in bytes) to endOffset (in bytes). If endOffset is omitted, the length of aBytesLike is used.

+
ethers.utils.hexDataSlice( aBytesLike , offset [ , endOffset ] ) string< DataHexString >

Returns a DataHexString representation of a slice of aBytesLike, from offset (in bytes) to endOffset (in bytes). If endOffset is omitted, the length of aBytesLike is used.

-
ethers.utils.hexStripZeros( aBytesLike ) string< HexString >

Returns a HexString representation of aBytesLike with all leading zeros removed.

+
ethers.utils.hexStripZeros( aBytesLike ) string< HexString >

Returns a HexString representation of aBytesLike with all leading zeros removed.

-
ethers.utils.hexZeroPad( aBytesLike , length ) string< DataHexString >

Returns a DataHexString representation of aBytesLike padded to length bytes.

+
ethers.utils.hexZeroPad( aBytesLike , length ) string< DataHexString >

Returns a DataHexString representation of aBytesLike padded to length bytes.

If aBytesLike is already longer than length bytes long, an InvalidArgument error will be thrown.

Signature Conversion

-
ethers.utils.joinSignature( aSignatureLike ) string< RawSignature >

Return the raw-format of aSignaturelike, which is 65 bytes (130 nibbles) long, concatenating the r, s and (normalized) v of a Signature.

+
ethers.utils.joinSignature( aSignatureLike ) string< RawSignature >

Return the raw-format of aSignaturelike, which is 65 bytes (130 nibbles) long, concatenating the r, s and (normalized) v of a Signature.

-
ethers.utils.splitSignature( aSignatureLikeOrBytesLike ) Signature

Return the full expanded-format of aSignaturelike or a raw-format DataHexString. Any missing properties will be computed.

+
ethers.utils.splitSignature( aSignatureLikeOrBytesLike ) Signature

Return the full expanded-format of aSignaturelike or a raw-format DataHexString. Any missing properties will be computed.

Random Bytes

ethers.utils.randomBytes( length ) Uint8Array

Return a new Uint8Array of length random bytes.

@@ -2285,20 +2430,20 @@ a.mul(b);
ethers.utils.shuffled( array ) Array< any >

Return a copy of array shuffled using Fisher-Yates Shuffle.

Examples
utils.randomBytes(8) -// Uint8Array [ 82, 221, 254, 37, 192, 138, 147, 109 ] +// Uint8Array [ 97, 223, 223, 186, 224, 0, 90, 28 ] const data = [ 1, 2, 3, 4, 5, 6, 7 ]; // Returns a new Array utils.shuffled(data); // [ -// 6, // 5, // 3, -// 2, -// 7, +// 1, // 4, -// 1 +// 6, +// 7, +// 2 // ] // The Original is unscathed... @@ -2490,7 +2635,7 @@ utils.keccak256("0x1234") // Do NOT use UTF-8 strings that are not a DataHexstring utils.keccak256("hello world") -// Error: invalid arrayify value (argument="value", value="hello world", code=INVALID_ARGUMENT, version=bytes/5.0.6) +// Error: invalid arrayify value (argument="value", value="hello world", code=INVALID_ARGUMENT, version=bytes/5.0.10) // If needed, convert strings to bytes first: utils.keccak256(utils.toUtf8Bytes("hello world")) @@ -2682,6 +2827,24 @@ TypedDataEncoder.getPayload(domain, types, value) // }, // primaryType: 'Mail', // types: { +// EIP712Domain: [ +// { +// name: 'name', +// type: 'string' +// }, +// { +// name: 'version', +// type: 'string' +// }, +// { +// name: 'chainId', +// type: 'uint256' +// }, +// { +// name: 'verifyingContract', +// type: 'address' +// } +// ], // Mail: [ // { // name: 'from', @@ -2754,7 +2917,11 @@ utils.solidityPack([ "string", "string", "uint16" ], [ "hell", "oworld", 0x3031 utils.solidityPack([ "uint96" ], [ "32309054545061485574011236401" ]) // '0x68656c6c6f776f726c643031' -

HD Wallet

TODO: Explain BIP32 BIP-39 and whatnot here...

+

HD Wallet

The Hierarchal Desterministic (HD) Wallet was a standard created for Bitcoin, but lends itself well to a wide variety of Blockchains which rely on secp256k1 private keys.

+ +

For a more detailed technical understanding:

+ +

  • BIP-32 - the hierarchal deterministic description
  • BIP-39 - the method used to derive the BIP-32 seed from human-readable sequences of words (i.e. a mnemonic)
  • BIP-44 - a standard defined to make BIP-32 easy to adapt to any future compatible blockchain

Types

Constants

@@ -2844,74 +3011,88 @@ utils.solidityPack([ "uint96" ], [ "32309054545061485574011236401" ])
logger.throwError( message [ , code = UNKNOWN_ERROR [ , params ] ] ) never

Throw an Error with message and an optional code and additional params set.

-
logger.throwArgumentError( message , name , value ) never

Throw an INVALID_ARGUMENT Error with name and value.

+
logger.throwArgumentError( message , name , value ) never

Throw an INVALID_ARGUMENT Error with name and value.

Usage Validation

There can be used to ensure various properties and actions are safe.

-
logger.checkAbstract( target , kind ) void

Checks that target is not kind and performs the same operations as checkNew. This is useful for ensuring abstract classes are not being instantiated.

+
logger.checkAbstract( target , kind ) void

If target is kind, throws a UNSUPPORTED_OPERATION error otherwise performs the same operations as checkNew.

-
logger.checkArgumentCount( count , expectedCount [ , message ) void

If count is not equal to expectedCount, throws a MISSING_ARGUMENT or UNEXPECTED_ARGUMENT error.

+

This is useful for ensuring abstract classes are not being instantiated.

-
logger.checkNew( target , kind ) void

If target is not a valid this or target value, throw a MISSING_NEW error. This is useful to ensure callers of a Class are using new.

+
logger.checkArgumentCount( count , expectedCount [ , message ) void

If count is not equal to expectedCount, throws a MISSING_ARGUMENT or UNEXPECTED_ARGUMENT error.

-
logger.checkNormalize( message ) void

Check that the environment has a correctly functioning String.normalize. If not, a UNSUPPORTED_OPERATION error is thrown.

+
logger.checkNew( target , kind ) void

If target is not a valid this or target value, throw a MISSING_NEW error. This is useful to ensure callers of a Class are using new.

-
logger.checkSafeUint53( value [ , message ] ) void

If value is not safe as a JavaScript number, throws a NUMERIC_FAULT error.

+
logger.checkNormalize( message ) void

Check that the environment has a correctly functioning String.normalize. If not, a UNSUPPORTED_OPERATION error is thrown.

+ +
logger.checkSafeUint53( value [ , message ] ) void

If value is not safe as a JavaScript number, throws a NUMERIC_FAULT error.

Censorship

-
Logger.setCensorship( censor [ , permanent = false ] ) void

Set error censorship, optionally preventing errors from being uncensored.

+
Logger.setCensorship( censor [ , permanent = false ] ) void

Set error censorship, optionally preventing errors from being uncensored.

In production applications, this prevents any error from leaking information by masking the message and values of errors.

This can impact debugging, making it substantially more difficult.

-
Logger.setLogLevel( logLevel ) void

Set the log level, to suppress logging output below a particular log level.

+
Logger.setLogLevel( logLevel ) void

Set the log level, to suppress logging output below a particular log level.

Errors

Every error in Ethers has a code value, which is a string that will match one of the following error codes.

-

Generic Error Codes

-
Logger.errors.NOT_IMPLEMENTED

The operation is not implemented.

+

Generic Error Codes

+
Logger.errors.NOT_IMPLEMENTED

The operation is not implemented. This may occur when calling a method on a sub-class that has not fully implemented its abstract superclass.

-
Logger.errors.SERVER_ERROR

There was an error communicating with a server.

+
Logger.errors.SERVER_ERROR

There was an error communicating with a server.

-
Logger.errors.TIMEOUT

A timeout occurred.

+

This may occur for a number of reasons, for example:

-
Logger.errors.UNKNOWN_ERROR

A generic unknown error.

+

  • a CORS issue; this is quite often the problem and also the hardest to diagnose and fix, so it is very beneficial to familiarize yourself with CORS; some backends allow you configure your CORS, such as the geth command-line or conifguration files or the INFURA and Alchemy dashboards by specifing allowed Origins, methods, etc.
  • an SSL issue; for example, if you are trying to connect to a local node via HTTP but are serving the content from a secure HTTPS website
  • a link issue; a firewall is preventing the traffic from reaching the server
  • a server issue; the server is down, or is returning 500 error codes
  • a backend DDoS mitigation proxy; for example, Etherscan operates behind a Cloudflare proxy, which will block traffic if the request is sent via specific User Agents or the client fingerprint is detected as a bot in some cases

-
Logger.errors.UNSUPPORTED_OPERATION

The operation is not supported.

+
Logger.errors.TIMEOUT

A timeout occurred.

-

Safety Error Codes

-
Logger.errors.BUFFER_OVERRUN

The amount of data needed is more than the amount of data required, which would cause the data buffer to read past its end.

+
Logger.errors.UNKNOWN_ERROR

A generic unknown error.

-
Logger.errors.NUMERIC_FAULT

There was an invalid operation done on numeric values.

+
Logger.errors.UNSUPPORTED_OPERATION

The operation is not supported.

+ +

This can happen for a variety reasons, for example:

+ +

+ +

Safety Error Codes

+
Logger.errors.BUFFER_OVERRUN

The amount of data needed is more than the amount of data required, which would cause the data buffer to read past its end.

+ +

This can occur if a contract erroneously returns invalid ABI-encoded data or RLP data is malformed.

+ +
Logger.errors.NUMERIC_FAULT

There was an invalid operation done on numeric values.

Common cases of this occur when there is overflow, arithmetic underflow in fixed numeric types or division by zero.

-

Usage Error Codes

-
Logger.errors.INVALID_ARGUMENT

The type or value of an argument is invalid. This will generally also include the name and value of the argument. Any function which accepts sensitive data (such as a private key) will include the string [[REDACTED]] instead of the value passed in.

+

Usage Error Codes

+
Logger.errors.INVALID_ARGUMENT

The type or value of an argument is invalid. This will generally also include the name and value of the argument. Any function which accepts sensitive data (such as a private key) will include the string "[[REDACTED]]" instead of the value passed in.

-
Logger.errors.MISSING_ARGUMENT

An expected parameter was not specified.

+
Logger.errors.MISSING_ARGUMENT

An expected parameter was not specified.

-
Logger.errors.MISSING_NEW

An object is a Class, but is now being called with new.

+
Logger.errors.MISSING_NEW

An object is a Class, but is not being called with new.

-
Logger.errors.UNEXPECTED_ARGUMENT

Too many parameters we passed into a function.

+
Logger.errors.UNEXPECTED_ARGUMENT

Too many parameters we passed into a function.

-

Ethereum Error Codes

-
Logger.errors.CALL_EXCEPTION

An attempt to call a blockchain contract (getter) resulted in a revert or other error.

+

Ethereum Error Codes

+
Logger.errors.CALL_EXCEPTION

An attempt to call a blockchain contract (getter) resulted in a revert or other error, such as insufficient gas (out-of-gas) or an invalid opcode. This can also occur during gas estimation or if waiting for a TransactionReceipt which failed during execution.

-
Logger.errors.INSUFFICIENT_FUNDS

The account is attempting to make a transaction which costs more than is available.

+

Consult the contract to determine the cause, such as a failed condition in a require statement. The reason property may provide more context for the cause of this error.

-

A sending account must have enough ether to pay for the value, the gas limit (at the gas price) as well as the intrinsic cost of data. The intrinsic cost of data is 4 gas for each zero byte and 68 gas for each non-zero byte.

+
Logger.errors.INSUFFICIENT_FUNDS

The account is attempting to make a transaction which costs more than is available.

-
Logger.errors.NETWORK_ERROR

An Ethereum network validation error, such as an invalid chain ID.

+

A sending account must have enough ether to pay for the value, the gas limit (at the gas price) as well as the intrinsic cost of data. The intrinsic cost of data is 4 gas for each zero byte and 68 gas for each non-zero byte, as well as 35000 gas if a transaction contains no to property and is therefore expected to create a new account.

-
Logger.errors.NONCE_EXPIRED

The nonce being specified has already been used in a mined transaction.

+
Logger.errors.NETWORK_ERROR

An Ethereum network validation error, such as an invalid chain ID.

-
Logger.errors.REPLACEMENT_UNDERPRICED

When replacing a transaction, by using a nonce which has already been sent to the network, but which has not been mined yet the new transaction must specify a higher gas price.

+
Logger.errors.NONCE_EXPIRED

The nonce being specified has already been used in a mined transaction.

-

This error occurs when the gas price is insufficient to bribe the transaction pool to prefer the new transaction over the old one. Generally, the new gas price should be about 50% + 1 wei more, so if a gas price of 10 gwei was used, the replacement should be 15.000000001 gwei.

+
Logger.errors.REPLACEMENT_UNDERPRICED

When replacing a transaction, by using a nonce which has already been sent to the network, but which has not been mined yet the new transaction must specify a higher gas price.

-
Logger.errors.UNPREDICTABLE_GAS_LIMIT

When estimating the required amount of gas for a transaction, a node is queried for its best guess.

+

This error occurs when the gas price is insufficient to bribe the transaction pool to prefer the new transaction over the old one. Generally, the new gas price should be about 50% + 1 wei more, so if a gas price of 10 gwei was used, the replacement should be 15.000000001 gwei. This is not enforced by the protocol, as it deals with unmined transactions, and can be configured by each node, however to ensure a transaction is propagated to a miner it is best practice to follow the defaults most nodes have enabled.

+ +
Logger.errors.UNPREDICTABLE_GAS_LIMIT

When estimating the required amount of gas for a transaction, a node is queried for its best guess.

If a node is unable (or unwilling) to predict the cost, this error occurs.

@@ -2930,13 +3111,24 @@ utils.solidityPack([ "uint96" ], [ "32309054545061485574011236401" ])
Logger.levels.OFF

Do not output any logs.

-

Property Utilities

-
ethers.utils.checkProperties( ) void
-
ethers.utils.deepCopy( anObject ) any
-
ethers.utils.defineReadOnly( anObject , name , value ) void
-
ethers.utils.getStatic( aConstructor , key ) any
-
ethers.utils.resolveProperties( anObject ) Promise< any >
-
ethers.utils.shallowCopy( anObject ) any
+

Property Utilities

This is a collection of utility functions used for handling properties in a platform-safe way.

+ +

The next major version of ethers will no longer be compatible with ES3, so many of these will be removed in favor of the built-in options available in ES2015 and above.

+ +
ethers.utils.checkProperties( object , check ) void

Checks that object only contains properties included in check, and throws INVALID_ARGUMENT if not.

+ +
ethers.utils.deepCopy( anObject ) any

Creates a recursive copy of anObject. Frozen (i.e. and other known immutable) objects are copied by reference.

+ +
ethers.utils.defineReadOnly( anObject , name , value ) void

Uses the Object.defineProperty method to set a read-only property on an object.

+ +
ethers.utils.getStatic( aConstructor , key ) any

Recursively check for a static method key on an inheritance chain from aConstructor to all ancestors.

+ +

This is used to mimic behaviour in other languages where this in a static method will also search ancestors.

+ +
ethers.utils.resolveProperties( anObject ) Promise< any >

Retruns a Promise which resolves all child values on anObject.

+ +
ethers.utils.shallowCopy( anObject ) any

Returns a shallow copy of anObject. This is the same as using Object.assign({ }, anObject).

+

Signing Key

new ethers.utils.SigningKey( privateKey )

Create a new SigningKey for privateKey.

@@ -2948,11 +3140,11 @@ utils.solidityPack([ "uint96" ], [ "32309054545061485574011236401" ])
signingKey.signDigest( digest ) Signature

Sign the digest and return the signature.

-
signingKey.computeSharedSecret( otherKey ) string< DataHexString< 32 > >

Compute the ECDH shared secret with otherKey. The otherKey may be either a public key or a private key, but generally will be a public key from another party.

+
signingKey.computeSharedSecret( otherKey ) string< DataHexString< 32 > >

Compute the ECDH shared secret with otherKey. The otherKey may be either a public key or a private key, but generally will be a public key from another party.

It is best practice that each party computes the hash of this before using it as a symmetric key.

-
SigningKey.isSigningKey( anObject ) boolean

Returns true if anObject is a SigningKey.

+
SigningKey.isSigningKey( anObject ) boolean

Returns true if anObject is a SigningKey.

Other Functions

ethers.utils.verifyMessage( message , signature ) string< Address >

Returns the address that signed message producing signature. The signature may have a non-canonical v (i.e. does not need to be 27 or 28), in which case it will be normalized to compute the `recoveryParam` which will then be used to compute the address; this allows systems which use the v to encode additional data (such as EIP-155) to be used since the v parameter is still completely non-ambiguous.

@@ -2963,7 +3155,9 @@ utils.solidityPack([ "uint96" ], [ "32309054545061485574011236401" ])
ethers.utils.computePublicKey( key [ , compressed = false ] ) string< DataHexString >

Computes the public key of key, optionally compressing it. The key can be any form of public key (compressed or uncompressed) or a private key.

-

Strings

Tra la la

+

Strings

A String is a representation of a human-readable input of output, which are often taken for granted.

+ +

When dealing with blockchains, properly handling human-readable and human-provided data is important to prevent loss of funds, assets, incorrect permissions, etc.

Bytes32String

A string in Solidity is length prefixed with its 256-bit (32 byte) length, which means that even short strings require 2 words (64 bytes) of storage.

@@ -3379,7 +3573,7 @@ utils.solidityPack([ "uint96" ], [ "32309054545061485574011236401" ])

This may be useful in interacting with the signer outside of using this class.

-
nonceManager.increaseTransactionCount( [ count = 1 ] ) void

Bump the current transaction count (nonce) by count.

+
nonceManager.incrementTransactionCount( [ count = 1 ] ) void

Bump the current transaction count (nonce) by count.

This may be useful in interacting with the signer outside of using this class.

@@ -3911,7 +4105,7 @@ OTHER OPTIONS

Installing

To use ethers in React Native, you must either provide shims for the needed missing functionality, or use the ethers.js shim.

-

It is HIGHLY RECOMMENDED you check out the [security section](cookbook-reactnative-security> below for instructions on installing packages which can affect the security of your application.

+

It is HIGHLY RECOMMENDED you check out the security section below for instructions on installing packages which can affect the security of your application.

After installing packages, you may need to restart your packager and company.

@@ -4500,46 +4694,82 @@ wallet.mnemonic.path

Many things are the way they are for good (at the time, at least) reasons, but I always welcome criticism, and am completely willing to have my mind changed on things.

-

So, pull requests are always welcome, but please keep a few points in mind:

+

Pull requests are always welcome, but please keep a few points in mind:

-

  • Backwards-compatibility-breaking changes will not be accepted; they may be considered for the next major version
  • Security is important; adding dependencies require fairly convincing arguments as to why
  • The library aims to be lean, so keep an eye on the dist/ethers.min.js file size before and after your changes
  • Add test cases for both expected and unexpected input
  • Any new features need to be supported by me (future issues, documentation, testing, migration), so anything that is overly complicated or specific may not be accepted

+

  • Backwards-compatibility-breaking changes will not be accepted; they may be considered for the next major version
  • Security is important; adding dependencies require fairly convincing arguments as to why
  • The library aims to be lean, so keep an eye on the dist/ethers.min.js file size before and after your changes
  • Keep the PR simple and readable; only modify files in the docs.wrm/ and packages/*/src.ts/ folders, as this allows the changes to be easily verified
  • Add test cases for both expected and unexpected input
  • Any new features need to be supported by me (future issues, documentation, testing, migration), so anything that is overly complicated or specific may not be accepted

In general, please start an issue before beginning a pull request, so we can have a public discussion and figure out the best way to address the problem/feature. :)

-

Building

If you wish to modify the source code, there are a few steps involved in setting up your environment.

+

Building

The build process for ethers is unfortunatly not super trivial, but I have attempted to make it as straight-forward as possible.

-

Since the library uses a monorepo, you must install an initial required set of libraries, which can then be used to install the remaining libraries used within each package, as well as link all the packages within the repo with each other.

+

It is a mono-repo which attempts to be compatibile with a large number of environments, build tools and platforms, which is why there are a some weird things it must do.

+ +

There are several custom scripts in the misc/admin folder to help manage the monorepo. Developers working on contributing to ethers should not generally need to worry about those, since they are wrapped up behind npm run SCRIPT operations.

+ +
Installing
# Clone the repository +/home/ricmoo> git clone https://github.com/ethers-io/ethers.js.git -
Preparing for builds
# Clone the repository -/home/ricmoo> git clone git@github.com:ethers-io/ethers.js.git /home/ricmoo> cd ethers.js -# Install the base dependencies -/home/ricmoo/ethers.js> npm install - -# Install each module's dependencies and link the libraries -# internally, so they reference each other -/home/ricmoo/ethers.js> npm run bootstrap

Making your changes

TODO: Add more information here.

+# Install all dependencies: +# - Hoists all sub-package dependencies in the package.json (preinstall) +# - Installs all the (hoisted) dependencies and devDependencies (install) +# - Build the rat-nests (in .package_node_modules) (postinstall) +# - Create a dependency graph for the TypeScript (postinstall) +# - Link the rat-nets into each project (postinstall) +/home/ricmoo/ethers.js> npm install

Making Changes

Once your environment is set up, you should be able to simply start the auto-build feature, and make changes to the TypeScript source.

Watching and Building
# Begin watching the files and re-building whenever they change /home/ricmoo/ethers.js> npm run auto-build +# Or if you do not want to watch and just build +/home/ricmoo/ethers.js> npm run build

Creating Browser-Ready Files

To create files for use directly in a browser, the distribution files (located in packages/ethers/dist) need to be built which requires several intermediate builds, scripts and for various rollup scripts to execute.

-# Sometimes the issue only affects the ESM modules -/home/ricmoo/ethers.js> npm run auto-build-esm - - -# Or if you only need to run a single build -/home/ricmoo/ethers.js> npm run _build-cjs -/home/ricmoo/ethers.js> npm run _build-esm
Testing
# Rebuilds all files and bundles testcases up for testing +
Building Distribution Files
# If you need to rebuild all the libs (esm + cjs) and dist files +# Note: this requires node 10 or newer +/home/ricmoo/ethers.js> npm run build-all

Testing

+
Testing
# Rebuilds all files (npm run build-all) and bundles testcases up for testing /home/ricmoo/ethers.js> npm test # Often you don't need the full CI experience -/home/ricmoo/ethers.js> npm run _test-node
Preparing the Distribution
/home/ricmoo/ethers.js> npm run update-version

Documentation

The documents are generated using Flatworm documentation generation tool, which was written for the purpose of writing the documentation for ethers.

+/home/ricmoo/ethers.js> npm run test-node

Distribution

Most developers should not ever require this step, but for people forking ethers and creating alternates (for example if you have a non-EVM compatible chain but are trying to reuse this package).

+ +

This script will rebuild the entire ethers project, compare it against npm, re-write package versions, update internal hashes, re-write various TypeScript files (to get around some ES+TS limitations for Tree Shaking and linking), re-write map files, bundle stripped versions of dependencies and basically just a whole bunch of stuff.

+ +

If you use this and get stuck, message me.

+ +
Preparing the Distribution
# Prepare all the distribution files +# - Remove all generated files (i.e. npm run clean) +# - Re-install all dependencies, hoisting, etc. (npm install) +# - Spell check all strings in every TypeScript files +# - Build everything from scratch with this clean install +# - Compare local with npm, bumping the version if changed +# - Build everything again (with the updated versions) +# - Update the CHANGELOG.md with the git history since the last change +/home/ricmoo/ethers.js> npm run update-version
Do NOT check in dist files in a PR

For Pull Requests, please ONLY commit files in the docs.wrm/ and packages/*/src.ts/ folders. I will prepare the distribution builds myself and keeping the PR relevant makes it easier to verify the changes.

+ +

Publishing

Again, this should not be necessary for most developers. This step requires using the misc/admin/cmds/config-set script for a number of values, including private keys, NPM session keys, AWS access keys, GitHub API tokens, etc.

+ +

The config file is encrypted with about 30 seconds of scrypt password-based key derivation function, so brute-forcing the file is quite expensive.

+ +

The config file also contains a plain-text mnemonic. This is a money-pot. Place a tempting amount of ether or Bitcoin on this account and set up an e-mail alert for this account.

+ +

If any attacker happens across your encrypted config, they will have instant access to the plain-text mnemonic, so they have the option to immediately steal the ether (i.e. the responsible-disclosure bond).

+ +

If you ever see this ether taken, your encrypted file is compromised! Rotate all your AWS keys, NPM session keys, etc. immedately.

+ +

@TODO: document all the keys that need to be set for each step

+ +
Preparing the Distribution
# Publish +# - Update any changed packages to NPM +# - Create a release on GitHub with the latest CHANGELOG.md description +# - Upload the bundled files the the CDN +# - Flush the CDN edge caches +/home/ricmoo/ethers.js> npm run publish-all

Documentation

The documents are generated using Flatworm documentation generation tool, which was written for the purpose of writing the documentation for ethers.

Style Guide (this section will have much more coming):

-

  • Try to keep lines no longer than around 80 characters
  • Avoid inline links in the source; use the externalLinks field in the config.js
  • Prefix external links with link-
  • Changing an anchor name must be well justified, as it will break all existing links to that section; flatworm will support symlinks in the future
  • In general, I aim for xonsistency; look to similar situations throughout the documentation

+

  • Try to keep lines no longer than around 80 characters
  • Avoid inline links in the source; use the externalLinks field in the config.js
  • Prefix external links with link-
  • Changing an anchor name must be well justified, as it will break all existing links to that section; flatworm will support symlinks in the future
  • In general, I aim for consistency; look to similar situations throughout the documentation

Building

To build the documentation, you should first follow the above steps to build the ethers library.

@@ -4555,7 +4785,15 @@ wallet.mnemonic.path

The same caveats as normal web development apply, such flushing browser caches after changing (and re-building) the docs.

-
Running a webserver
/home/ricmoo/ethers.js> npm run serve-docs

Flatworm Docs

The Flatworm Docs rendering engine is designed to be very simple, but provide enough formatting necessary for documenting JavaScript libraries.

+
Running a webserver
/home/ricmoo/ethers.js> npm run serve-docs

Other Resources

There is a lot of documentation on the internet to help you get started, learn more or cover advanced topics. Here are a few resources to check out.

+ +

Ethereum Overview

+ +

Tutorials

I do not manage or maintain these tutorials, but have happened across them. If a link is dead or outdated, please let me know and I'll update it.

+ +

  • No links yet; send me some

+ +

Flatworm Docs

The Flatworm Docs rendering engine is designed to be very simple, but provide enough formatting necessary for documenting JavaScript libraries.

A lot of its inspiration came from Read the Docs and the Sphinx project.

@@ -4743,7 +4981,7 @@ foo // 'https:' url.parse(45) -// Error: The "url" argument must be of type string. Received type number +// Error: The "url" argument must be of type string. Received type number (45) // You want to assign (doesn't emit eval) AND display the value const foo = 4 + 5; @@ -4830,7 +5068,7 @@ $bottom: This just represents an example of
- +
diff --git a/docs/v5/static/script.js b/docs/v5/static/script.js index 8c4afa851..6fd95e572 100644 --- a/docs/v5/static/script.js +++ b/docs/v5/static/script.js @@ -134,4 +134,14 @@ if (document.getElementsByTagName("html")[0].classList.contains("single-page")) // Set up the initial TOC highlight highlightToc(true); +} else { + const sidebar = document.getElementsByClassName("sidebar")[0]; + + // Scroll to TOC to get the selected page visible + setTimeout(function() { + const selected = document.querySelector(".myself"); + if (selected) { + sidebar.scrollTop = Math.max(selected.offsetTop - 230, 0); + } + }, 10); } diff --git a/docs/v5/static/social.jpg b/docs/v5/static/social.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d74955246b63085050f958fa1055cb6a53d6c900 GIT binary patch literal 44123 zcmbTe1yodR7e9JtND%`C1QbM&RJuVz0YL!?3279D?o>j?L`e|==@d}vrAq+=X%G;Q z5+$XjQ@r~O`hMSC_q+df*L{}5oO5R8#Ix(Se|tav{_^`fLZ^7s#u7m;UE)T_k^hX} zvj~-fhq>J?1cMO6;d2P``#aHXYj<~NNj^SDH{R*Q+1Cm-F>CXb^V>)$gd;M~kzZJgb0 zoE(|aGhV;pd|Eg+ zCl6P19DJSi?~h^b{?8XezX*3DsqSh6Lb-0Q;AHOMfOB-eq#(@#pYU4PSV&3;n4638 zTZr+9ikjnigoSaUJmNS(3m$%RaWQj#A&DC|`1${y=YRd4Us2$q;6*WhMPYe<0RhGH z66Y_7N?Z^ZlMoj=e?daw!r$Lsa&&XQ?r4ttduMMs#Km|l1S|!4ge~|5dBla`kA$$GxUjIekjQn58!Uf*Z}IFWvcj z2ow_C{MQm-=U-dGIf4PXf~EYPM-CG7AF-$fi^TjMK<*=?#KgoT#H1u7r29zWwV#}n zlzcxW1;u^}3d+NjgmIYi;Gx5Z4pJUHN=<$A=!xUUkDoaC@4%3eksY8sKzH~s9Rm#& z4a2`5{D0l}U5ikWWAP*i5rzuEQelXwFuy+_k7b-|-9cfwhyQwm&Ji)cj2-(JwV zarbFzr;wYw*!RMBUC+{WJZN=~bzDt5T`WQuA*?8Geoy;872E+9LxhD%`g1oJDlCz} z5#m!v&uh8}UJn!fHiO3$ajdKoRQk%T zx`F~a@sETobxy;rAE4I4cBC6{rfVB;7HcYJA?X^-TnI){PGc4MObU;Vr-pCwDASP> zYaB)>iLnSX?5p7)r6X8)GFt?T?*BU|7%)%Zi4lZy?+_{BjYv)~d2b)VSYug25MksK zNiuRsg8?UxaC+lcF&RXh2$FudiI{}tAs&awBbd~OB+S?cER;MKx$ChT@ujxn5fiSt ztXkY%+`MPgl!Y{pzm0p;fA;gmaLe#Z&-gi$$*n0ADKSVBLNAX%3@~%CbhU|pl#^~@ z#d3y={#DaO+rsd0%BEyI##XKg;i5L+=Akwa=AxkuE#fF_=zwPr|KQJbG#~oM=<AeRLQhP3Dn{^!XN zA`K?^jtB-1lZhVJSix8$a&W3Z5!f?hW-t?OdWgU^r-?q3Y9OEFInA^<5$hDZE$rWA z;7ms}_yr4`g>>Flb1YeO5OshomuVj#Cp z#hZ~FfC)hGqa637uO z9zjwv&|kpDzvB}|qai~Zc1fr)$@}GwV%bgy_vctWiGCbZ_8y%LzWjUooHz9(TRy*nB_d!Gu(>@Pn68_Rk&YZEa`+ zv3T-Wwi7BNuKgm69?g&6TaJ>oyoLLl9;vFcD@r{%24i z^oRz!y~+t{fgrW$He!Y_AjPmtL#;?6hY%@JBFW5;n-wmLOGt2YEs8G`xk?6yyuY}S z=umMyw!GPGv}JO>q<>=6kwVQya;BlRyMJ_yi|xb8Oi@Cpwn^5HhcJlKhMx>%3+@pg}C25u@=PWu_$go=yJL|K9-8JlkMW8)YMkiYekyJ6=NTD z2wmvVR3;7NOi6wi2)cw(MC9e9DVXpKnD;St8ConwV0?jX3TgCos3{hON6IrtDYDm! zV3JW2|Ek@_yZydu~lOuaTgSRoNi@SYbzkn_w82wnj>f@Q%U1#_grnh_JG z@ZUce`Mpg{hDI$+EINeIKSZCh&|UO?gz>ne94Tan*vF~c3}-)w-jfwdI$GaYl~?d- zY`k>%XkGPup?H!_)ay3CnSe9LL^8?~gvV5v?m4yfUg0PU3vaewaGBRqUb8ET481(! zKqSWuRstG}0Y@5$z;rR(dC-%UCZ!YJWo2oTf3&f&Dm^rSPh@%{QF@cn!r8>4WWr^^ z?w|>~56Ew-AzCkWV7a90@!aT`OTW~t&$Fk}m9yjK&k{2ggf)cEKPdQiqb{_D-B3nY@G15W@>4~|nyBW5t~`<`6)OW=y>&vCDMsQY;F zTzp)m9g~w7hwet=LA8W*56{-pTXPOUpPTZI+C*vgeH$+?`LNI2b0C@NB?W{Sf0@aQ~glUiiL8_GJ7uq5sW|q!Yea6vbQ!Y8$Q&{T|9RpuF8&)r$@A%y}Og&lDe28>XArBJ*}NV z1*@#Rl;Z|}+Po%Z@VPNC76P46It{17EW-<$EGAxiYi62)1CZ*$aGIy5gmvxCqF zUWbA8Lb#?fg(9^EI35a6gr-378*&KdZA@c^ePG)~1wro9=Lx=CME?>!eM8_woR%Dd zbSS2#cBG_2^w&aPfP5fyBX~1@PJ$3%13`m7_VXQTVr1VxfCkN2IL(;RV7Fh63jSh} z$q_uf?+s3~y>~bV5p1CX00ROE(2-{0yN{ik#!EgSdP;x7C{9atvP7SebTp#<@yK}J zz_sN*T?x^fWqAefo;t+G@;)_VJZq-%sMbKZAy1blPf$tijL4MeV4jh>KRQn-^(EqI z1G%nw7c&)zNs}2+m_VeJ8o_CE$KV;mosb^u;5l7M`<+l+#lEX5Hd`gr!Yb3;TTxqo&kJ94$uI4L5Rnm z=nB12`q292J-wyk&F2e79CIDZ9OZ8^*M4k94_@iocK59>_k32AmMJh#=UiBHRQ++i z-#~cBgyHADv9FcNGiO6{mcR7NQ1PdIr)1ucN8E#XwWc_1A|7}PHb|**trUBU&(I8y z;7&&$?aP?gm1yRbbd&NbxU-hE8M;g~r@72HLDru(A=PrIM5)E=xk%(mfv;w}-6sXt zpKCRRJzwCriX++Lr$vfWAvi33k;fAbm zVr8(oi>`t>W0wJR%d^}?kkoL+4_TdTifI>6qYGDLeyD+TfRjq*Bn9+@2c!xy0v+VU z;LyOu{qbwe2rZr&3-W`bgh4HcBoj7>E(_5vAOAzR;+mz#?GPEeK4V8OC#UCJ&3vTO$rWF| z4ax?WgbhjBHRev~SAO|+Tn?}T0eL{sO1xvF8vKBIBYv&V!h`MiY+o?&fHEk2nxyKcA5hos~Olb)|%>Cv^SxEb?0sDJdzFID4c%B_z0 ztQmRc8TnJIDNj6D#u$}juunOAsw&mgA`TkgYLnr()X;W3w{bIW{c7=VL_$_zJ|S&6 zVwq{GUzV_wx!JfGJtU>(s7|<)>uucnm9Cw!o%+fI^rJBMxs&lpF@9aew_VY@&~KNn zIVu+JV`L{N8R~_5e@wV#{K8YrD)Rx2L)utB=6yVJV^^J2#PS-=ldgR4tVmcLvz#8Q zcVCNJ*PoMZ3u~#K>Q{H`{g61--*jth1AUT@`raF0Ku4O^LYFD@Z+C(Mx2#3K;eQb` z$9L<&*>)SB7U58*;x|(dgT(sn232`1w^iopY)-V>g7;hU(B&wB`Wv4%PrNko#@A=Gz-17*2AxSHv zG9G?GBdVraWx9D%$xmXfJ1#vx#*4#pzKXhX*7W4QH>V{%eOnaf@a-075uh6 z@ZM6P%4JmV^59I2PcV9%E6u*iei&wc#kSKU5O<+Xg76R^q)NV{C;sZ&js z%HPNE2d846fY8W{0n>gt(r_wVqv2GHw(>m*dRj7D$$>4iR(0GEVJz&NofqOZ^Cz51P7INZRIRL?jVG|t$MZvW6 zm*xz0NxnWS?lEM(nfe;X@hv=IJ+`Ggg0IN4-qvCJAfMVL{b-Smos8<@q^G}H`~q6W z$E$|l{^&K5Dtd~C6JZ~hzRG*0V@QI#dPV4dRDsR1ngB0Z$b^x}dcBzbUj6(QvG+Cjx%A~bg=dc2chDCDzBK@RyHJ%LCL8k<@Gb4O zWW)4)V$SlMVW^ZPbqTW>LIR-_2?XCti7;~_Xts)A7wyefqjX9;8$%AeDs70S~xN@C~vhgrMR5BS(VdmV0K5e z4gO0Shg%+7X#aES3FOR=(d?oPP49?>xF5=OC^B(mZ;$TCoF2fVBX zfL<6B2snBe`&jVUWEMPO8#yWm@61O*3}_fY2S^aX=)Cj1BJz&+YMf@U9__%lr$lqo z(f!@_hOVB9((g}kS@gB5(-@gPyFDXgD#qux!xSR&zT<=e;vrSMQ(4S0Q94+o=cc_{+||1Qq; z?y|lZQhuq7Z6cxHL^UHcjkp;Aw2uzb_EqB)99y9eXmH(4u%GZv6VtHx$YkRc}QA+ zqQ6p!)_&Z;q6JS1--Sd7gXRNwNci!PQ5*&sl#Ia>$PSboLJy#16GDjrgao-77K^7+ zL}(81a|wp9v?{n}`D%7)=S}Wgk~VVm80czPnVvLEvo6*)Qaiu`QojpgkeoVUU|EaO zBT?rm@6rRfBS#UQ4h|B{NEJlk0D$VwvsvY_3@oV~imZ^G5`_K?^=V`;QEdEor~<5$ zrnrwN{y6|d2;3Sm7IT>W4-z1xHqyf{e!VU%vZ@+WGH^M0QPMY|)pmS`csJ_SxjfY? zUuNp_>sDE7r;*Ke@2v+GJVg$DIaAI(67&U=`N4L(UL6xYH_!Qpwizxg`A)mVk4;KQ zTv6A*^v2MsuGGiqDL9psxzOdowKL`<9Jh)5gXBO&xRKdQV_sry#D25qwHi{ulkahO z0~AkJp=wN7R8rHbia$xz{c+N`?p&B|o=2r9+EAv3i<;m^fdoUquTW;0{S_t) zfi@-%hw~n~ko<{Q5db2J)`6!1#J69LV8|&?+&qWk+y`ejZqk)nTyl;G+{*r$zWZvk zFQF`UHJdG8@6Oc4Wmm11#!MR7{(3{pYVAt%owSEvO^VXoLaV&}SO=c&c=~nSb`HM2 zzSXAJT*LmRte~$n-Z;}SljykVgUkK~1|FBnvLm{#@D#OHuiM2=v7hK-ZQKePbn7pT z3<{HpZyCBy&+DA)vt;sBlJ6%|*zvH+iIrfdQr6M>PG`c?cr&%k`*=#XN;JOS-yf=T zTjib2tqB?B~Tb;nHP6qpRwH)|*Zj@Qd_cqrTxB>FHGj-Ftn9 z0w10CGs)v&A5Qvb)o#2`AVBJ4&&}8SACbIOTwQ3&Eve3G(2ff`6c^e4xY@5i zymQPr+bY^2;k5HO&lQ~vS73Nrx-Bix>C17aY=z)2wBEP&^M zH;9VZhj?oWIT9=e-}DgQ$sWKSPENon%}cmE zawu@?PKAn8rC?NLZ(xtKUGw+t;bvEvq_8~U(Bs2;@lyW~lmU0rWTpLPl;^ue`)Hjn zM>f2x{ST^K^E;u};ycWt>W~yy!?@x-+SWIX#o~DO>C~6LPk8k+VQQ+ay`~qpF)ePG zbnL_OAu_IlF(?&UkLA4}LvnPP`M{hBQY9cl+{-N*F4w+RM~bJoz+2>JD?O7=9o zw4iHg)uso5P$R-bD31e_E`kS;3$PG%+X!VcIXDS$?Wjjj0p|d45j}v#LmCdkCk+gG zti+ONJ(Vpo_-%tJPfT*&X3V?9Ew@WF=rJn98=C2t0|`#RK9uLw6O@fr!Riwio{^xZ zFXTRL8JvDO2SizPiiDgc9C)fA6n^iqCXfMgLZXfc-qQdVgu!<~Xr9Kr)Ud^5k)~_G zq=6pYuSMXV_XazbB?7~Lm>dtgW-MfMO91cOuJjjcUar`zdc&dQC-T0R$+H%r8^?`|Xw5fOQtL2z>a)@PI$LP?skvox zD{kOg?#CFz7?IzI#{t&-?`rk)jH`>KHTRA^l{EZi5>=^L%5#nlSMyKGHi!QA-Lu>I zNw_g}4({2=+F!8T^d?X?Sk?=Ul$-L}!%>N6KVL*^$Qh zTsj{_dKvMc zr1@TO>Wa-y@N6^t`Dcwfq;kNS!%U-gjR3KQ0lpDIK0)*V-1jGX0QOr&FwX$_5^-Yb z03FH+lOWUxKLa-}+ljziaouMs-u{&Kb@Y*Xb&Dz2DBHr}*pU#HYautR?T)14v3NwX zZ!dDN6SM}HHpuvk!byQ-jt}m(Y9aF7y2ce#La%eZ%+~G(fEk)?XZ{=#$BA3{D5pnt9UlN0uje}wwzrgeGxzoMs; zpqU%!&YRs=La~&wnjo|PIzLzY%QGGFnAZrEPtJlAC{*9b?o>4A{}s}5&oEP7FNkZOEF_AL=Th}z8- zpZ|PocCs#!SIOAaWW~Q?vckU9;g-;JVBWMPxSt9#7g%zz6*glo+pC{ZG0S;$^# z{P~{uMW9#>@<0op;H*JDAeUs=LX#{yj3TkN+Cjy0t<#bJal$AND+DL3nXaED`Zz1( zhPDC7ADLlywuwU>Fc&`?;ISf$!!55)p9f>Yv5M$};IuyDRrjj`5`&^96uog!xBWy- zsNK@RMFIB-;t^6z7Fvo$>&pPS=ryS1paO$*a(aW!VLy>1V;~PTW8uCASuXqrGvw*W z&^#Yf8N+iUS65{ArIc)=gqx9#L63L!gl}dtMpU0-CNjd0|E}w^q|;Bk|B=~WGv6~m zP<_QOcFMly*s*PcUUH=$GBr#ImER}IM0y$I_R5=Zb!uU}8N$(Ukk+)aO{#>+OE&J@ zxzPTq-^e8~`Ws%=(gsr|4xSydd|o3;n>uNYjU8Qj!|hTQnxU5GT%8v_MpyZ{<(Zxy z8Qo^St@_kXdqbpU_Wi%s0_Ued;~>O6VvH)01{N(AqnM`_oE{d>41EhQ9|VRR)MGC& z!dEcK44lc_Y!_FS#a`*T-TUUfF}UWXy(Dc=(ep7}8D{qLafQzp3jp81smSz&?x92j zTlghF#`-jSiO!!&4)C1zfeKh)7;I=!F@~^Mqum6Wn#w?OBE)D90n}ZR(FO__sMTNt z@sR5XCM!~-M-bwFum}{?v@jTE_%^~6*YzOZ>-#pV(^$Im((R_N38q#u=H*1G3-K>U zJu^lvq^ERWZRW=2{%T~r$?g@r(D8G5`t>*TOz1eMDqvK)?fUvmX=P0qee=#;t6qxH zG-UwjN5{y>godmb`@^J?S`(R+9E?Ki3*NsGwc&N*E#K*kR@t76z8xCAb!}Nx4!M1) z!B+2DF9&;Xr`PrRaPH&=1R>O^LH$9o%@E-@&K??3TZLxD;GGc9426RJpNtv$mrH}c zAM<{ZiFLr=XG$2v?A3{-hBpA+J7#>LAoWl_kc1;)I z5SC`Dbp4c6VYI;c5KyYlz3Uy*MltJ{3*oypD*M@mVlxCH*ZkK0jU<@+M#?6;V(CBx#U z6px-69he`UMy4fe)!W1+MU0~sZ+)0&gNIw`i=x(#&-^k-IFl?T2onkha?pxkAZ~jG zQt>s>T!pn-G;pNErDmk&X;#(Ajm!vCLW+r=@a4_869=MYMb#BU!W=5MuakC|?PRpI z2!+RHF~dax|G|IfgHx0qySP2GqI#89|;s_w%!woDKb>biE1P5!z2WN{a zs#uUF3pWV^4h<3(4iW(YYud!p#wfC+KuJOa%{2kb5ONE27GMW$Bf(H>P?BOl5y>5( zfNlX6usMy|C{)fc4lWcH>WXh)O zA9`DDan=2J^?+wz#hBU9LWdYNAXFxo=$~n6Qd4E_&7#-e3qM4#zWDE!J~^XRniI>L zMeiHtvIo6c3)<#}`EC`;KK_vZ?J7s(fEB&X2EUO%`J!vDv8knaG4fNU$SJ&b&h(!P z1{RK<+?|UXIwevkHwrdeZKSoTN!xM?K`ZR>s0%_J5DZSFKWn;GIdb57M_xdt+O?8_ zuFJ|RGua8bpQ*aYPf+oTuWQ8$lxCmFYDrU57u~A7Je?aFynL-+lbQyBjvzw7Lu#{l z^lwOPl-PC*E4Sv2GCfF@mYklni(%+g(x;cX&o5M%-f`Bba<)<;UaY&qSnX#=qC=X? z;|G9NKq=%Ph5}CktnAlB%hk*C|C~FdcRaCeI>~(%h$dSb9j%R&nqL0(=YuUwc0tq>3&Q52IJuF;{$PQnh| z0Wh!+iO>v+F!&iTsVR5_s7ZjmatJX#2FnaQ6y-hygQl5?aOzZ-hnMb3;Y+T!o8oUY zida`@p+xgs8`u4dNztWH_H<8XegBQ`(~%WVFh3n92TTTPCPr-1PuWG9cDK*SZ=T)S zG4!%K(_UQXVcEBLO$2fEoSpecs9>3EH=3!T@1&DTuhLS4gByS0_m$9W zr!Dg7a9yTa&&f`Vmvth`KlFUj+11lwz}PD$ChR%WI`q8A$T=5D_qYya&6Li69bBJl zqobo)y`pY-_V&2*V*K!3rS^$|gZ=eit9;DfeenzwZBfkOGHCl){A^;Q$#v88S3rCJ zc)!$9?jVP}SD6ll8n4PLuDE)0emtW)aGU&4>(}IU^Z6?yW!$B^?=NhKYx>F_JGM|V zDONv!ldAf|G%!scjZn^To#F)5>}aS?|Aljh6t3egd?Js( zc_cfx^=?O^->6H+SpCIzrnc~p{2h22Ae&L=f?)2vFltrE8z4Owrhei^)hqM2D0uZd zkYbIsz84U2kaF_1t)x-b52(dTD(zbat;eDLZ4VJd6Y>?7ztEScc6G60cK+p981NLO z8BZ`SIEJ^ekH*l>FE&LI1o3z(F5LPA(pwq`<;46iEshYd)nmZE9fSq}?$&T+3f27t zOcufdPDVI{N>lk$F$v89YT+g>AiCt>Q3L4?07NGYx&vsHpGuLL0Z=&%X0|7&bI~$m zMnFo3;fSAU=iC&|;pl*U^ytsTlFZg_u~)liOH9u%@8k-U-geya>X-{VV|FNUE4$!w z)61_mp?SGnOY5Rg8fe`V22qFv1XnM)DJYNp|C;K!YtKDob!D_usG z9IK<#3~ds_5+>KaZr?G_KSTQECRbL)+nuMO1^$=jdZP_HD~#=3zLz*gc*`H$l;!Ld zTMze{Y!xtm$Y;5JQ8(~S>5rLF+YOc9$kFtVgZ=73R}B_Ke3B^!HDH&N%XSMHV5MjyT7W6L<>dQ z9C>Dbj7x;B&W=lFAKOTS4A*qnOXtC7Ytpf;&PTiWcx88sOp5~+js^WHYi!S`EV7$m z|MZ+5$Vv;C7zkIS$pqnGLv@9=8m3<9`Q2knm5z7R>6Z`x5zHsAY;ah0^GIlwz)!0K z1EB$2zbtRAdxUbeCgZOYQe()t5Yk8)_EaffdROUl9w7Ec)>}j+^D2>o0q!Y&yPNaD3NSbmKt1`GXNXH1BDw-M{ z@|bCjE({*^X>e(X)DZLGsrQu8I^~WW=sJMUCn`XoV_BZ;!y^bD>YfN=w9|s#>_D!> z%A$t1p($_W@SBs{(isxMajLv!H0!FAv-UfZg^QLssXty`P+5?*9czy)Ej7~1Fe(!i zZ2FjXhN;EwTTaH0a(%MKx?Fl(UBgD0hiA`~_Z62PXPz?@iQ?Hk5*G1m#aBJMu30Qh zrvH0q0zG;w=pbQwU;OKQYri?AYWLaP>T{>+7bEk(mbLoOPmC{4d@ah(sQSJ#m+9Xx zW?Rips>8-S(MmJaDy3u}XE9s5bkwhNTO~%~ikN0|X`FfE`ua(q^2d7&LkIR|c zcV2Y3HeKXkq%HV7eQ=byy#ifO>cK+h9&vEnE(f`O`}MC52Tg&fiX zAOg^s(1S+8f;M5JW8a;#cTio5far)khhhXCYVDqSw+ss`d?`ch2Y9{vNa}j|hU(We z-zNoBTY5ODLA``mSJdR3pg>MYu|Z{ug~`jbi9TGNSF_eZ+J&NTj$f|6Z_Uqp>7wTR z4ELS0hBRdAP0s{djBh~2_8Iptvyq{EteBdYktB_`)NXhGdjDh5t#vm~%Er7c0d8P# z2y1%u;oPp~T{#*?*Tj>NRFHD#>$mk@j~j{?={rmJua$8Q?7ZaQt8^K-r}ERTx=P$T zdoVmSG)I3Mw{Q1DN83j1?wNVL{j%LAQ_mRkXIE;(bq98h(#@TYU;8|kzi&`_YRK^J zGr_Vm39ggIPT$Yxb1-aO-E0@#y42BWuvof$ZnabuvZE+y?$d1fF!yU)NWIXZPoH7Q z$AY%T1a9EPk92D#yLLvb)+qJwl%c(xKQ-buDsc6lf6;J6P|HJ z4^((;THZ_r(C*ajbqjgil3+AQbXap#!n$_H=Q?oS!Pml41kg;B{Qq=Z$1-^ErE#dJ zZmf&cOckvZw`)&)+p_0br?nTELVi;ZkKuA9o)370_l%9r+us~QK>mvPWIU;e`GW-=Mf=rJAa$|nVeGN^b zH5yL;QB4W@S04%ezm^TB1CjKmpde0^&?vA>6@ILkrkviyg+|tN4QfOS3fFSLJV6;d z1^*m)W++!=rGsulW%~d$gMssFfbKk&7kKb;su<+U5s1=2YAkrnSJCv3s*jjonsGe4 z@y?`sJ9c4;RgDh9&aka*1s>x<T^F56vDB_{3f)RtWO}+qHQn3TxqHy-@^TDag?Nwexxh@dp!l;vL0e1#w{Sn2 zneiZI$dwQ?jt0uvf#oII=Nmmk`FsKUR2JA>#tKDP^Q#J~YPfdK*ffqdkDTw_mA$mQ z>6Ikrhojz-9Tuy}f2=EcTXe{D^PpAK0we!y)(W5B)J*GOfxx%&#`h!oscWkjOV(Ar zo}ZDHoaL$cjkwSEPqHoOUC34QC%HW3_jc&EN&s!$k5V%7H}#%&&C?t!IiAv2J3f}Z z@!>c&J?EDa#v?r-;|eKw)O&V`o9yS6g`iFPZAYnmkALu_3(gG-gL3vd< z6`Ir`qadMvPDy$gVF5r21SzzQBr_mrA8=|Qx^e>bm`6|zh3*K@)_r*BnkJTmiKtyU zuH?7Q^d*hl!Y}pFQYPzSkh(>QmZ^~V!rQ#o)>-dgRow~IAJWRN_bI%#x~i)*-my}$ zt}gSHZ9{jGwd1>2lHG*O&oYM8;W-D#%-_i4PUnGuTR&|b7~kl1xqD9)iYl#Z*s4q^ zN%4QG40OErp!;Kkj7zMRsr->|9{SQr1M~-~MEj5W4!LajkGLmrh%S#L6!aQT<=gbl zkM`+(GZfnu3a=QOZ!bGxvvqaA)t9F!pi%sG3w{33+y>L2NY1WtzZ1 z>us9^ef7`0%^yrRRWCK>nUX#_@6Yw2rflqu%`l_x=*$7(a&;9_{Ki+Ej-<* zk@N{W{@S~FNU+;nCnWea!~IOY3@y8PCcg~}_qcPOqti-0lg0<4|uAMqAqqybtRnVaw+K|JIx8HBVNgGaVvTn}al9=L`D zzfD-MKu*Dw%nu3xx}W~#(93A%?)wa20%(Ufn!wajJVZ!XAi|@xJ!X%#uRKZYz3P_R zkq+eX2hdT?6M=o@AtTlr2%~oB0cIc|&+Y?81Tq)2?Sfc{72GIcMN@3fnBsYaNKRW{ zGeldVkX zeyZ`*kk({{@v?CB5??`P!$QvFkY6*ePojFOMcR5SUrA;YV|RU#&)3}DXjyje<>|`$ z^}d%GHJmYdr)LZ6bH*li#s>V|d#E@`Q3_>zJ7*jylyxTipRQH5Q#lj2?9zlz@gF8) zDT?82jnP195OM(EXr%=bHt30hvKN6WMv&{U2~Y?QfmQRsl>oq|ebHTDBjEiORm~QI_SF=`D1r1EM@^W!2K8EHj zO6p}c2BG@O;-i&_IVO3=CMG2-5(wKn|`R>N0 zZPQG4dRfd^UP1U1gzC~AXy)jn#^kY!Y~Ioy8LiLTdHnHJ$}595hl^+QQVq&R$U15^ zzR$?+RP9#W+x2bt<^TDsZlJ2&(MdvzcR6g$xSgub!hH2zTVnaehF{*};?m~A8$w#4 z6;S_xDF#Of_hAMvbcdgg^aW`;X|fh4bfi(h9HXS2oFM+x1E_}rp^XYam`L$rx0?vX z+|Rwnl}s}LjFuL$`cYSkuv3uG6grRPYvX>W(kCKICn_c z&z~ih!z<`rFY}yqo_D|etIV#sHC50#vV6tRp1M=5u8Hbt?p>~I z^0jH1j&cY6=Qp>qcI<+&g@Q%sE`rz{*^aU1k<%3Qt85!O0BpvKlaF;kaQ*1a0C+FP!N%9!|Z^Qiplnb{153{dZkdi651l~> zwPr3bf}UU0!>2~w@}~D3Z6vLGaIqo)yAI79`YZ{NB9~~Ev!4n>Us)w&*n{a5!V4{$ zGOMB;iO@cdcCZ0CtOew-_7e!b&=9A_svHSfF#J_+&gO z_!exS9IWBHgW@*^@>D#skNNziC-M*&i5v1i)nwQI&~@5w8g9_=H68QU@{_IVe%sNw zy1a70-#&9ewSDn7^77ZQxVhU-GNTQ0EQhjo^L`^46*cn%{(R@Z?JBKI_HI`>d-x4h z_$!H-&fYrtG<@mi?$oNc=Z_uN+cDq%pE3dCaB+Rp<2Gd8I&Vbq;T^^;OM1E&<**i7 z%#V){tdmz~BSw4Nyg7B}*2n(LRPQSXF7qk9@)kj@bMw@U(oWrO=Dl6Bb_=7|VlG}x z%Y!~`S5{w-`DME`yWFB@Je;4MN|h(8RsL?j@>^c=&yQw4fki@%8?BImiy#;&LUBMY zsv*n%t_O2@!{@YX4Ozvg3;_Xwg+dJvih00(P#~}@1cZ11lWWvb4rPX$Org+rltrLr zn}Q@2tV2%WKOLYsMte|>k}F|GQTGViO#*UM=!B))+^|j*e8_bmlCj}(5Fdfbz(M61R^xSOe4<8IqC)!u zvL&0z^kmG7hHA*`R{K%gh#f^|14D14ey5>;vMVx7R&7hKr(VqU_FCPRIlI;S1&BzIBY%JT&?hs#1B5Ge5E)aUJ7hV5Yv{K&8tdOvoDR>Hbk+J*-NmqZg^2M1r~sr0vQG`^bP@+>j%b5!oe z$wLt><8k_Y^*_B=M|uyL549N{pS$bI@D5~_b)3alb$H&G8 zd=j!VDjPcteuwz$fNp_{KiGoYd%i6x%ruVBCGms-qQtVN_u;7NhVigoebF| zTmu(nG6R}Rx2&Av0(c8el^#l8QU8B4fl>cg1EoAov8j^|&&w{9^YS$5G@h>3^$p<_ z4b%Ctm=O1)-p+nQN8O_?-+hRUdLdyZ?|I{*^8=@8;n!nv{?4mzx2op+cv%x)Yk7FZ zC1oT$E;qj%xk-2pXY+=_I~UO9VsTBm!LLw1hr|JFZFGG zod`_%tCcI#R<-Mg)TH)HW*QGLvDxHG7R+2*GLc!8rnDPdQvap3IJ4yI|2hAn{TG+q zuc8v|9CrCL7NdQuxfzn%jp>!i)sdt5LQ^-tI{D2FWCw82N}G=dys5=Z`APJP&W*nD zY%O!i9{p}{#df;##laU0nQW`cqil7&s^7;JJVr}BoI)+XuMcnWO=WJM{AG1!XKG1y zPqr)D20Mx7Mbeagqqw-x--uD})zZf6a|v3(r}PXr9D9Pm0@+ErhxiSvsX`{u|Lx#gck zf5y{*+tttb+AnS4m9Bty&L-z7j`uc?B~e3ab8p$}Q>{x+6k7CMILQyi}H*QuXy5bPow4M=2DjSTy5Us?)YA z*G%o#{e8zB{OSVMW*OFITu-TgC{5sb@cEtKbcRRsP<**vN=P0{J@ggsifsXB&HEe4 zv+_?87}g_#OnW!zH_}`)6Ei$n@5jHBJtGU&TsCdFS~&aVH-Z}wV7pLXKa-FkeY0Di zFW(|lEGJ`_)}v=j$b>WH&X=|Mw-xIL*8>XYJbdkUW@xm}zoE?!dX{wGoO+yNjOS!- z73=DaS;h$3Y_F!oUzIkwMU`5i!WN@xI$g(TI5&OOd^b+yt>#D%O7pGs91cEaYd@!W zI{qJl^c5rVGScBT)vkm2o-0C~ew`H;b_eQSG#OvM8F(#3GkRxBT zfuA8lRQCr5arOub2dO3#df{sc4Ra8KP-c^oNCOfRIXgWeO~%q=ccw<6k_cVz*$J*U z+6tnwvQi;Ll@}@Z18W{>C`MH&EE&V(`J@*5U6~)EFFD9g_Ay7DKLQPmk+{Dhr-6zZ z))k{62U>gpJrrpY{tE~VjB*Md$_CSi;s27TwN8zI&JuDs0yvS2=D=U*aB#Ayl&^iL zz05&f$3!iARHRjhc+xVdHb{JV$M_6DHWeJ?yZ>9*bQQu{OK2|cIJ%fho`ca z-Zl=W_kABWGLjVaygsuiZM3@o(2;mmzk#%qOy%9GGVQ@z*NM|;vR{^^ns7vI`07ry zZ@b4=$#nhbbz4ZN8=%*(YE$no%x*1wuHRwot;g`{X=vof{qe(hmR^75asR4j_4da| zf8X>#_x$KrAOGU&;bIHFIKDX%y+!X+R^3mdvNIamWSA6wZmbUbI&|C;E%cUQ`;8b# zgMYR6&%W^+iIvHmEw46RHu3jzifi*Cb9FL)A78W{99Dw+SfW*wTDhBUXk%k^oyqk! z*=-pf_vhUSuxKwww0T-KyJjlSX}ff|`O{6=@Lv+EyYqvLrYR1km9`0`GO;s3@#ABu zCH5Pg((28A@2AUdImWeCd>Kf*a!|0K`RI`#HltGp{yJ9#yw!eGm+97=U*FhK6X~VJ zjSf8R|3x&_?lQK1%*tUq!z9Tr9%rI*iH)mUjEv_PZ(d@qbY}h1&55`^NofOznCSbz z%nQy$brs=CHu{%%UaG8@p1+izQS4n4S~G4QeQqV}UXt;ImtXWh{vQ~-${Y^;-_=XP z4OK5YRK48(TfN?$W2HN9{dDOP>vHM%{B4H?|7%i7UPG>@N~{da97I~*)6#W%=!@6= zEc8^mG{Ym(WqgcJ`t~qcKt|C{hFxO~Pgw_JhTTrr#8eOT{JK|`6LRF^R!qzmm->iE_5(kItd%7vHIMO(fUd=J62iw)WR#GCaQ;}n3(k``kc^QS>;3K zG-MZC^fS-XFRwT?_kK#(>bG((yY0x#0=n;unM^%xk)C7oiTO<4@x!XWOl>mSHmW^O zPhKG@$~4_4#T{_yTWjK>F{j^%?DX9G?ycjz`T}*8*Z$G9_*fx%iX$B-oOIc#v1p{l zs(bpj{&3as=STBV@7;#PC{L7^W`^uPTci;6_Ex@YW+HT>6 z*ntHitsq@W3P`w-EHun1|T8|lV#&xL!x@Av)xxz6K7 zEpV}z&zyITF>cz}$eO|(qpr&KnGN^(AWy$Zmd1qmCljkx}Wv8dMV`1 zXYbE9Oi^cLW3~0PtFw-BAW2R8x}~Cg`g^sbn@dxj-BGR)_DTJ`?8i!0jDkY2YPTKA z0g>@BG+7y`IH7ccXmH)%*@4&C(sp3Sfpd#S0LSgEVCQL#{_<3i^1E4^^;@@G4q{PYy9C!=39 z1l7C+q%JoF_5a3X(r1uyhZIyOSjXoF)eX>)ziwgERuyDhnn;eM?I3Z=x%;$se|ceU zVXTVurh^fa^U_cHn>ARmCo_>!dseSh?~_r17f3Y-j*p|& z0Fn}Z{n2x#cRzun3m2nV%CN5Jo+y1mL#+*bLMuE1_&kYTqEu~Mvy?EWz}RO zV8h*ik9}s@*0n7rrsqn%@L&5mRPUXt7Mb0z-d=JK*pph_UsO9LLDMt*P53vaS79hT z7Jp4Re#JGXrLNxzgP~H~(}t|f)_t&WU&r(FuK#pf&W8PunVljVo-&6gCR5!M+wdQ~ zBpOC{Qo5%56P7-2t3BH``Zm0<+ei0=NZs|iEk+7=zn#VQ z7&m{9*oWh;WZyIrg!Z2&!tx9=?2t|S4+V^@EFPTU4PnW~8&O*N!3ng9@teu9oNL)`wU5h2Pn2Yzg=6oAe5a?jM`W*>bn|jS)@Q@*E!fjWOGb4jNnNkTNc& zZ6J?uGg<3C@1M$dhLwD2%ErwqL808gs1sE+#O{lyqZai>fr%=F1dxWd+da@K~ujhx=X9gJxCcA%jiq3=KaQM z24`Q@ypXG=j?uQ0Gr5^#<+UE=v{}(&nPpPQrklFsP{uIRsE+sH08^8vS4c2jNS6?4ZC`A+HzYq2WY_y+%kB4TD)jau9s55P zkqR#?r@v^|rH*iR`Q%bn=B@&@Gu{Y`7_3SeflH8Gzb~V@gf0dD)W?P=OXJ5b-gAEE zc7Ji9diW_#u|=lLVm*6dP zHCs^xP0E%f>EHlyGo;}Lk|(5}LkZ+$r_VQda{1*-9Q_mG0@))JnnrKWAI?3F2zo#$ z-~zTTQaBTN9S1xyF~k)C*rj9yDH4|>JWx1;4(4&_Sgj$P5x}P*#zhS!sHs5R{Tsm8 zpHfL~Xsj>n^(UDrX3(}>QgXAeNwr;xmA(~YA3dP<%WkB&ciZs008MpK)cn?>E~*;T=g_WdT- zVMjKKoPJ}9HmFw1eq&}7P{!#OS0O4eX`7A-@@PT?Hv_W(4NDY9HcH> z7q2zh^@;1*v+av(j)A{1o}39eM8)6x*7+HKV?JzF)$b>6yE|lfCPdCw3U1h+$xSCP zjfyZYNXn7DS(moM9eCr1mJN5ydKEX7^(cV2Hi){cf;-P~C)!-1-S}#?I(U+Af)ru%#v&21!X(f27 z=KYtI_!?NQ+gRX46z`dfC*SH@Z77Nm9sPkJ*73&eMF^|ZDIJGrz76fgdm zuCdNrJM+O_YRULn#sbp4Sr+Vc;~FatL_F>?ha%Xl?aLtEdP8{ zWVutQ18bl5pS52yZyj*aXztD24>0W4jZDR@J##m#J=qJ6C&RbAY3;mJiinB%_{=(b z!h57LV@KN~W4-@2p{(nmS|l^r&uy!hU2%#{(!N{WoUVfofjOO-W+f zald!fk!R)ynSSHpqxpLJW73Ls=?>C2Y=h0bgA}#KR(t-Y&9&1a;vE$GSm;fw@^Qo5 z(>n0ikDl{}&I#RfLzxZ>T@1T|-OcF_eo&m|HkmU7H%p2+HYES z^Lxj)X6Is7Fy17pu^9YuIZqOF7jiM4`SZFRuCY6oyyK4;_PwLX+{pGGRaNSY?y~6a zQP5lPbL!sY@*ohWB(OK1)S(nC;e1XJ^x}Gm-*x{Ay7-s?9hMU{O^shGNiG-3d(V!Z zN)LKInvQ)QkJZ9#43^AJrk9ats91$gwx6-98@SNu6V&4w9Whv~+t=bsetPg>*zB;( zPRG#doNrNacJ2KzgA5wG8y27CBMp?J$VNK`xOH#0Hgi+a?maG?Q@8((v09L4p0_jT z_dl_@D_}MoxX&%w{YE#`FB2I_T$lC=Qd*=s;KqA{<&yd-;jnc_1p~d?BWq45yqj+tNtmJ$@7B^FH|WlKGY4Hdimxzq-Ny*>`^UW zTk_{#rowMrVy9@{(P$sXp_H1bcS*oy^>F$pX|3NtSn+}pjp&*Gt@B8?Dz1{nmueZX6BJL^Y*7if z{V0>l-xT<@=r6s8=~7ckn9j|hsR5iH3H$qGf1lM-Cwm1$X?dmZJd<>579)52tu~M8 zy1TDeMc69@{ctOue`?u3q%u1HJ@}_yIe+qWT{e+uTI<(w?BUSzvpGNJ?Xf(QUE>ph zYA9Ixza;JU3%czsJv)>VV~H*?!lkY{(WS!VR7s9h$*yPi7k)umt$sH{h&Xz?VD9IR zHvKH|HeUfMAOr^VY%W&rkxWi)o>-?;Q8NhXC1VbH@z(Til#VZV4Ob7{3(wWI$(-8J$+q8U1CeG!(;DDV*RUDVY)z5Sp05@mMXeQ~$lvFT1_=;MEHqp)qiN=4J3+c+j&M%|gf(Adj`)gm?C zBgTb_^AIW~uH(h6TAw(Ze=j*#D@ z;Zw8o_0o@f#4N?Nzrkre#TG>+OsF&S?&+MCEX!&BC2Nx$;T!Z1V6-4X1iS|hQSu1`2qoy)8DMUs#1>G+YR#P#$;8j5+FQ#a z{;8b?0667!7pWNG@uNq+ruKpLMCH@Z0X6y8UmrAGIS{BLv7Q$CcW?eNdlu`hMIs2Io)L1*|KSnzkE3@4#gchFylt{tA3*q`1y=8T3(N`ltC zJ0OkfDz%tZc(Po3k|zEZ4Ox_xlyT@At<0a*&nAbzj`n9~waTT`G#7RK#wccGt28+V z`jiy6`=4;>@HI)G${pEq@7pPJ8G35Jpz~v}|7px&9vsSW^#mLfpH!mMgEHTgU z{XMC|5;fKdX^x4X;#{;V(%i{DZKu4)A?00|UvZl6FDZNFXt59(D*nhy<&=4FTFX_hL)jmu>haBQ4K%a7Gk7>`$Rp=mx|nQ}U0;~*%Hb{dSiiLChN_y` z|5)zWk9GTb%Q`zNPrB6&LZzFoP3rdtPts>tELjw_}f52QnPnV?v^X}G)Y~h-;4Ot?%!N4u?&WQe%f5Nx%mj(RNw4>Eg6(Bpa*B7ei;c!=Z}_Ns-H>*^ z79j9w{L7F)Ua3QRMvBvrZ4tj|n6}D<{-BE%pa}Z`l2pxctvLpw~O_8?!9j?Y`x`r*Lfdv%n*R$ujRQs=H-= z;fm#py-qi=Gqbh#HkF$)VpUWa{?chtJA0_*VOSWn;c=<&0VD+CxI0NnMHmk&JzLM~TM_=EZD;~E!a53FQYh;hQ>1wDU1_ZFx=}z*9@ZzRd zG(pDt7XWU@;sq2hq+)`AjLLwJL@I)e=hZox(DyVv021IWMkbe zK7o)#X|wsqi4BE|pBv{hTF0K&c^lma@(Rcx-66?k-aa$!zhTzrzJNTfjQW=~i)l?M zo}o9^7R%o}C-#$_CwnWR3&zBKW_Ve*>Qaa;>Y^-68zk;GZXE4;tdR^Y|7)gZ!A(n- z40Yr!wYS1m1#E20LwfqQ8k??-GYa17=g+N&*A@o>Dy%2`R)F?+JU}1Nio>TUa0VnY z0QrFN0!n!B9f)YL$4?$CcPybZ*Q2rsKAN745SvF9XrWMXK^Ye2ptyjdXi^EDx5(lH zBsCJZ+JT4bXCn*Fh8r?^#{_hPrR)t%>Oo zMt+AV-K(kr== z^q+y*2s-M@*GU<0>_br6ISKM!cz|!hQ>v#0wkkjcuR$X8p9>g>S72Kny$di!yg1Bd zauo>xG^!DAHAp8W{# zE0+srE5Ix$A%O0#Ujr6qE)&UN4rU%SodK}SxW&N( zOtM%FNJimA%{y3dDvl4)rtyGR32bt))6@a5Q9R%=Sfo=-pd*ZA%z?QCbUF`6=kPcV z*QY(Wf>fISx$qfa*aYUV2&NJKR=DMOan}!a%@A(a*g2KQqFs~V_fX>8naiid59dP- z{w@HZK|~SibfBhz22?;Om5zb^fy6a%9{?1Jcw?l&Ft6Y^Ja()Tuk)@Q#tyUn@^&Y_ zmNcta?oXm$-#@vZ6#E>c+*EHLt`x5$HZPl|CsSXMto+enOsAUpzRfcGBLnL%LBF_f zHW&B})BjMfjc!ROl-eYXk{ak1P%ig}KcEUA1a8Om5!e-1 z3Pk(!%Aun;VK*3<0IdbHOQxqlmfQ>0_Q4SZBt{Yq=nEx=I8wCWN2n1}nFI$`29qdx zLLYI&&MSQqq5fyd(OyJw;^TN%E}sI5H9i<5ypY-Z;k|lo3o1ovBjbLh?2%S6g971jESNrr` zBXmUb>vy=yUzr5q-UqCkI1ykOLOAY}W~<968@`#LQ!f2S2DMgnmgJb?!OijD$Nh5^ zq4@JpD2^cBGZp{ef5%eKaQKPc0BD6zkDfTa(t&USnSJFksjqFeVuivqIvoyNnnoWg z+Xss0W2(_te!X+-`S78y+*khEf*D1D6S{qUWaciut=AT8O#Ai5EUoEn!*qJ7Xl&oa zOtkku95d?|h+r+H6kEp@Cl%Gni}njd-ST0`!6!p{41LP#UuL=$iQW@s%H7dGau&cm ziRTi33k=XWHkOZvU#C3~J){l;6;Pm!vpVRuqT?lQgHR0UzEXqufyVIz=p(eMU}gZ) zM7@jTauG-z(eRZyUc&kDz)@P@=uvx#aG)^&7!bhllKuPs@xLV#K`r6RpZjV6hY&mo z;3P3|kYFHtiigJ|p)Acmm#I_XNY0C8ZJbRhoY^90zo^}ysrwlb?k0@q_73WmUUC_m3dSFZ?vcuMcM+dfCxFyI~`_+njt6n)X? za4i4v82s2{oAsgKO>&13Q}bz#v}yBYtBk~K^013RcMgply25=Zh`|8uRSf>|L+_By z!Wn$bD&`w>$H=3cuC-$|S{&Z-h)p?f&c?K^P+kv|$h$wTRXkc(Kg(^ze1B<~-6Tj^ z0v*$2A+dRmBxRZBjiVZDM?e0}P0gFl(D{0-htPtIA>M0RL^eJj|3#4QQQJNiI}+|C zqgdmC$9?Tl5y~=0Uw5$4q9~=EkR#p;*hZ-~2;+Ui5K2m5?U>Y&oq7+R;ibXd1Bhcf zJPaUY42WYXYr)JCkOM+D3dRcHf)l`0l41^dfV2wg=P?+F0l)+-pjaFU$X8r?Lr4I?x@Er4gF8C&o0=9QyrqouirdRku1?WBA`aQ?zlzJ zS-*431$UTSUYU-$MhJ-(a0sl?6&S2#53OEc-6DZc8ZTC`4 z3b|&aQY!Mv3MX=po6tfG`pzyM>-fe9awh=nXUuk`+YEi*28=q(7}6o z9?-#zhdDejhd+gi9Fe*5_7HmBbH_c0$4_t{<1c)iw4?yRY84)!NAc*qKc*Zbm^S*f$q!uy~5^nAAl29{&T>Bq( z$|WxksB_}k9D@EdPIMVq#{al)oD0YGl+ZS2QirI{_>_2nF=DRYM?v-rn6!Y4`d}^b zfW`t$1<3zF?;js$Y>-~k0n!>MEze*rLov6nDLnx8I$9>6!Js`Xf~ZsfUJrl+Ac`Uv zq;=!L@PJY9{IOHaSH*MZ2E7by z&s;m$weMl)zJE)NVkRJc0dwXYu+Q}Gyhfj-=^yui&OWH?!taQOP!vkk2eU*lP@=|Q z;y_y&5CM(gtr5)&blg0U`aTW`0GK+Esepv(4l*4u-2!*vGvLA+^!Wks4t;j|sN!wd z(zp^4=2$&};CgDZo@wr_{mIC97X@N=n(U9`dAU)Eo3LXYoGA1s`fsfl{*Ctn&IE=O zAHlT0jos6|$D1iVZ~eG5|A+IFQQLwxO{=ak`}ObzYmN`j_kP$6`x>?;Z~reQM{x@jJQCr*okRAPMStrw_PF;7(!X5v?Aq2HXs|A>nWrdI72KaUKH}0mP+n zVj>Qvg{CfxBD4*j1 zA`&7P{dbscMT%v(jl)BJNo(InLYsVlv2 zOxrFkwD&ZHe~yROjKLFuUygePA|@9V3AgZke7YowPjIPAP?KB$#%}Y^e2(!P&U;U) zb3Zp(%DkBx9rR7;_^I7R_;hnN#IKh9+0b>6eSK~Q_BsHnh4r2cACA?ZX45($p%y}5 zbSA;NTcbFN**b!Ql@qmB9zk}f4vPK;rxVnlA^AHFNDCli$60F*!~{Sa9v9Z2#ZSXK zM~V`8R-ywg2jr(6T;2@%CWIdGaX909$O|@5yP_C^Vg@LJ&qTtLf3gHf6Ql^=odBLM zQr|d`m;86F(bPC}T>*+91~O66;}{IcFXMS6uHH$=ZmC!F9ZCL9Y>7{LIlJ;2DxUa}mqbNeK}|2T_i>y5@R6^bVwEBW*QAr)<4YdZ4y*<_4^HWtoB)ia`V-?=G4e=LMU+TkIT8#~X=3CZVtdiYMp|2&Ry(M&kB++5?#@ zha!$A!c8g;hU@^4ut;R79VZ2ihdBdtZvcY}rrP)@T4|KKLNEi9U|^ULBNFokKPiTR z=R5@3lXpMeL4V(WuG4V`8hIi>+yM1aB-wS;>k#JsGvDP7mewx4Hp_5U`meuM%x5#5 zWc&MrgdFHvm-(lgR3B$0KJ&nMpjRt`(UOKyOeQCco0#}EdkOfh1x)gI_=e54%UcKM z9@bRR+>7bwrg>(*W<;jp;|8#t7wXR`>7V;_98$giy~M!T#D#%}z%gKu zY|?uV7^i}Nm$v0xq=>bZ|53wCJ3hq;rw!ja z-A5yjvuLlg;)Lm8=bfQ$^cE9k=oTaSKpT#h4jG37afz#7q*1K*kC6tKNqFuE8Yzc# zbb`T@k%F}2YbYoH!3)bI5^%3xSn?pe%Dfeau+)&7HSE zK0Q($o+_YS*>cTafx@rjbeV!nrayp+45CWD{)U^c0bnI$0dOV&3^R1W;nbsw9x%{R@Bw2IkqA6k#-J;K zC{n)W0T2Awg%^Ar&fUR+vG;G`h`L;V=gay`(Y@xk~!L zg=v~M2CWhTdH3~)l9lr@AnteRIlhR@opUe{4ptLR5V&D@LUbb!yeTgIcmP}2pGH!N z_M8Y%@R?}I=lG_t*>&XU#9HM2E%b`$aqpn=nnX5Vfp`EML(nE9^K|5t>}E-|c%f%S z!)4d2IAJ}QI%B1!Ak-RA*YoCu^8G&*Qk-~+?6){yePcsZZ21>l0NarRMQ^k(AO!&% z3#lKZBa(MTz(f7RW(x(})xV4R1zZmhT|rm^9~V7Pdy8=3vW~x@94&@R`S4f{BMU9^ zP8o6bk24j^H`EfEf9kO?0|Ss=JbI79*4g32|mHu z69QV&uN^1Ofx-cXA@LXuB{I%wI{xN)0ShD90)hm$3cLhMdqCTRkqAyW8IlS$909Qo z=DXBTi~gaXeR@1kv2!e&WyO5p@i1qQ1k!6o;WoE7@A-5CF>2pLWkYaKC`AMbbksyZ zVa9)%l>^fv1)B*KzT$nU0V`*MqK`YN`3QiECx#KhsS8570tWy#zXxo5+~)sJ4*@k1 zaD7rZRadC-UMa$A9-;WiP9NM&M65vo=3}d8_X(*_Lu8_Vdw{ z(RLBdJuz)-VfG=*J4eqDjV5oa?AgoZ9NnhX(7igWds46aqmx1Y=%u{zpA#dg z>W32o#4BW^%-Z#@ZKhOD7{vzpEm^Q+&F1$BahLq)eO5gF;QLw(cV1dkTfCgv%9N`d z&q84N`lF)n_Oe-vwi%W+(T^*;=t(sCUUhm0b=62M>)aU|i;(T=(du!Jp0=`mr0FZ| zxOK@uu7^l=V*810kfGl?>A3FO zvG>fHceQWWIv1x2DK3*owiud9MZN-NZ9;V0Z_N6Ks_jtVecT$Zz>aGRrmyU^_mPEJ zDo~PiWAz%8>~>GcYdkTIsZe~i;J2%Vb@PGoN^j>ri8xdC&iO7DljV_~Pr1M@HLjWd zvXY6PZfsv6I*QL}4V$C7*3pv*T*&TSR(FBAk?DoK=+!lori>A@lp@iVoyE^pMoW$h z)AJNfMI1~y94fuqd-C397HJG7*=dQ`?fSLHD{_+wF@5((<^(hng;n~ zS%}VvHO!18Zn4w2LiX~BjosB~b9I-?$@ z)Kpp}7n?PuP3=FAAvO@!$u7EkYQvpRg~)+|>k6;4gHc$%+>~?i zWSVY(SqD*FY{w?;yneq)X3Mpv;fKz=(frDJyi7~;F4}h8^D>+ADtn_fMbVto6e*|D z7lh?_VMu_}lUBa(Av1F!Cbji7Zhd#1e{GTRFF85STe~s~SbtwWmQ^nka7?}UY39$y zp&Y8xr_Ea~IpW!Vtww>RaUNh(z_xIl?j^d0IfDnBF3^H~h`%_s4tV|+TL7wwyFCiK>5tvj1b%@RIc%_eG=P*#G02&vqtV%KuVI6P4`PPXLa zO{Y_yeCC~Ye9Yk!gB>?7PFQCh{{RUJ8bFLQOrR?%-oeEA02iuoKx_@_7yt1WNpB6o z_8i!s^MnPUAB|!>Nb&<9l||yF$V}!dgD3E~0<|Vo895In!9Ribfx{Jpyp#~eM?d)E zc9T#MLHYXmV-CId@3t&diaqtqayQt=$vs8QKVxQZeBk5!e1v*qf#scv^tx=Vi%~%? zPe$Vv&9?@~wRav4yMCl%a!YfFtQy(NK1uo;bNiRs)c7Q}XE$MLAL~y+F4#D=u{SY4 zYhPwtS=?neQ&}vk6a7%@VS0~RUCO;8%IJs@&VrVvGetHn{kEp9U-Et$+{?&reb*$P zT3mTSNh>xWs~}QV=M5W`+$y%L?3MEnhxNv-s{DI80=efm?L?*QYRoceh#O*s8-Mo5 z83gqEn^|SNnpOCXvCZE3XR95|i#0oN^c6B_Z>HJRW#5?YTAtXlzU3x-x?j^Q zdq-XG;~M_c*4{Gv=5mtsWdnWY7k*6If(oh~fo6e#gWa{YSW+ZJo6j_?(K~Z~{OfPbqk)-C#dS)x;W8QX+V4A>q-PkorR$p_CMFry|aoSP+Da$WB)m@HV)P^$DiPg=VkZEf;dh~geLM;oHGr<1ReZ#WkZX@+&u zpJtn!f6;S>VZc~PT1$(THr<_tcEdk*wyvtZKhw>%Fs;jcCZfZxq1LP+B|&JQ#EI(u zs;5zURt}9_)V(U|Iysvqm1?;syNtG5XCo&Tqsz26Qo6-8 zF1(h%7ZXvi))^?H%}2Jht8H1*KN7jDZcUl@u`I^5ItF{;-sRUNP&8=XQKLOYtR}rKR_LEHx;U7aBeX))E)&rE z>i=Q0AWa0Nk|SR~!W=aZ5M_T3X6p#*&Y`diWep=oKXRWNQ^bw_Fh1oua{s?Fg~#-n zimQ&ZeyxqT9_83fJpDRtqIv|CEBSLY{bo=C^U#7g(H{%3YyHQHgF)u zj2eqjox$~+p!t*tqBfA`LfrtOCNNqUXyQUOq-ZZ+-^SNR4%z7)0;We(^ zPP?(#tfjp+shNBCA>x_r-#h&9PNYi}kxLSLaeH;m+UUnhg;Iew6`nJ74*idF?PtaV zmkfCMO}9IOSroV1y*Bcvey#91Mg?gaY!)?S>-kO#TUz#;wzRaxJASOcn;l^;&*{oq zB2}}bwP~u$9;W?~+S*L-(?;90{p{Y;o%;37-xz(H;f&~M_vvKfAA?(rmzRMal0&7I zyB1#6Tzsl}o_*QoRwePEn_pA~6}3=gD+aT%@4Nrj&|Tj>_}S=6W$&8Z$jpQ@_BUo= zUig{A@H78oNjg@Z6R#?2zT2;TOL6aKi#@Iqc4urj*xcKY&(N+)ykKTWH`P&X!v5t? zl@pEiwU<_NF8ADQ)oqZAWv=a$o6zx-n%cavu5m|;7npPV|R2$l{fdSD~YQHhlMtz$mYeQ;N zuc(UF%lrgpc62UJ6o4*SfH@ zWp-5WKoiqMp`-R@a$3 zY3oei55KxTr=+wR;l#?{KKj%Mur+! zEd){$>gHmStSYJ$CbF7N%`+2&c1P}$!NVoua<$G$KR>Nmjm%bUNl)^ztY*9MW|Bqs z7D|&T)Ykc0)KO+oDLXqh+QwFgrm+uYoz^`m)#cj1>?pVLWOue~+*0_|kG*8ewijJp z*qm3Y0XGo*}l}eVab)uFazrvM(spqXn0AmTl8nEuKB%g z{*>gPT$zYl0z=vpELB07^U=f=!txs>Dy(e+r>K<~nPU41xs3UC-*6BKqDPnohx@ z$DdP9+1C3BO=_uFsuo<Ge+$fy7T9NLSj~M#e!9@mYKOZx{E5DbYV4)P%;%$2we)LI znljJoYC2l%o2>$y>#SznHgYG{8&l2-lhG~atFgb5>*{5_5Sk-d*s4QMiFH@k7|SD& zAFeWgyt;lfcfeXNWUJI}_n4h&YtcPzLH^n7%A@w9{e!LSN)`gTWI`FO+wRGGJD&1{ zJQm&KqA4nGg7i8F&ida;+#8BLx@q!hYe>!Cb}*xg@;Bz>`lax$D94?~ z!$AEB;2j=dFA(z(;9;cDgy48>C<0$T;P8{@$`9ntg5tPAIVz6#37)yo&9FW*u9;w- zMGBSHJB=_7zJNjQS#8NLzPV1jaD{MW;8sa)~7O_4~WAP!Q zEF6)WD%k6!txJ|5u%fhDv(lb(J>vZ4J6VC^?zFT|e8Hv@sN0axl}G7Wg^%nN(Nze~ z_Y8Ee$?YfD)Ajf=SST}>hOOT0bU7|)_mi!-XX9NAFI`XP26r?Sbwgo>jYVO42)8<) zG+|2mbImR>VG2Gfc?F4+&8f%Ha-$1}-vh659S4{K#3k^_U0(AaRM6HO=X-{XnkJmN zpV-^p3h6q0@PAG~?G_T-LnF|g$@MsT?g(xjkaNNn(ZE@8y?Mm`DV_w1$-pVabc7qX zXDOA<=MEiI<71&3PbDh-Q|o(lID(*n=Hk1vO7Hp3Yndf|s%@gMlr4#I?f1)_w!UdT z0C{$flQ%elA7N_9RwIN1AvRbtB3pbUqxiNm1u+{p@#uN`@t5~ zzW^IU64&iG4*m_=*Z)=@p+XO>JXl8PMnIgI`rydnl5=)tuS#3VeP@>XQ_9=InpaJy z=0Myo9p};ku>m^*THR1Qz60Ck0W_ju4j^2}+2aPYVW7q2%@8UAT`p+z{a7{dEbO1_ zkX&8r5sXPW)bhwbp-zj({;dlPzA*k~41b5S$F|2CNqy^uF#MRV)L9OL=9NWF+&Wrl z`gHnaNY;bobwHxo3DOWUaq%RvG-8_E@WGen0O&$){q)~3d`?# z96HmWZFnd^Q7RbD1pJ}-2OT6N5P(y9$DKGNzy?Ca9`FzZIuCFk;2kRRLkCF&dUOD1 zX}magyL*9h^rj7OM%_ZpijXd6dqzSYNJpk}9PDSjw?@=V&>JEGodN_iL;Df_KRk)Y zKh`BRSpDv6z&9~q9&l}j61Wkr1`3$m&$(CFn=bJUs=ETEF{$ekOy9p@xQ{!(pua+` zM4RCKWRrY7OF}J3$SBr%z^<_E&16CG>-uogTJa>@3OuAyN-(bPOl_C!R_vEusHQ_9 z609dl0J1MCXWkn25}gS@*Gt6uR#gAOn3!n5VZMt@uc-A!1ESKk-UP6TUbPEi(uSew zJ};BC;yarHtix@5^*G^KWe0H23`c;8%f}b&SAOG5q_@xsJxo~M10}&fojEUrp+sf~ zp?OhS0|6Ez#|h}AhQ5X-HZ@uabiL2MMSPu4v7d9CGD!y8*WoVe9KPWFiqfw2;$zSp zD5=S&OZqF=fH*PK*H-rM-E$b*U+dnB(zfmdMGci!W8#*Z>J-sWc}}Ya`Xul6yMKJ| zU7>Yi?mLIBDu?Ha+C5FNJP~(f#yXVl9X}mbTo7fJ? zY2+oe|9A;HRHg4L?zu`P%AoOil!o?an(GEG^1 zDL5Euii!GWH22{?_Q7hy?v`-k?5w5(*MNi4p|OQg;Y3m40a4*0hUg}8T&)jR=DSEu z?lXROLiV*SoeF`W4JUkH)31NUq0g3UAd{(2p?5XS$6J+{q4+yI`FB%gi&JN$eSbbI zQOq~AR5l}t2q6_0LuZLF5nK&nxM(MMlupbQFh)lZHWET+=qMf(*l_d!gc8HhzD0XX zk~S{Q_;1OhhpwPS>md>w>r7fGsSyrR((#%vqDUAivLj`tA`uOA>ze1At!goU(yeA- zW1Y*!p>xLAu2DeHoAN@`VqjOb*jYW7Uf-EIdmB{;rcq+E>F4oPi6(;QAFS|Q$X1i; z9vc}36}qjM*VP=)j~V3ssGX(gW;OHt5$jX+$#&SB#n0_$$t{_OM~-mQW)@G6rr`6> zh7<_LUf;ggVNq#9TfN|K8O~k#u(&93O)E&oe~==$@dGb?nE8(%aq$IOcH828KMfx9 z`dr3x+nGsEY$p9={}q8XG`B0IIQI#Id7y+Ba$@=9tixIB7&p|{!44TUBd-*SywXvT zyXddSK$H7~z7j4$N>mg%0*@TNo(x9>F6g5G@$3P}uIe1Qn0Dj}DM&4gV21A=wW9Y(2$QwEd|xzj`@T#P z|MmfP=Owa`>qGF4OuSkt0k)K4qM;c>0mt~IL^JB(mtr6Z#_{qU@~Hp}!hxsX$9u`f zqwe3^gUNKbemst3a?l^rK){rXm@BYUrFtZq#~W7Dr0CgMb#JK5n5v4OP^V>NBakx5 zDH3hd5Mau#NqT!vM@edLDS&GfD{Y#}z-Vo9X~0+U*hTvYzay1{7qAa3^D;t+mxzRqm3kGq*sm-`1j zr>TzvmMR(7vlPAv%52_}cOF*FXrXwA0ciYDkNEdOchoeCpZff)AIhO9-D%#6YTYgs z;ER!-d9DxmNVuNiae!w9Tnhjg)#K1eYGnHloGz}t2TUJ^c#E|M^ zZlW0Q;E#cp_I(eYuvR=5nUAFKMeBpwdaC|;8ZJFf?)xq8(!bc;Fq5U{gpD9ulfZc2 zh^bW-e8IygpTXyi@8SOQg(Kr36V8!pL-&^r$;D3DG`rKDsrnS6xSJcsP~6-t{t>qi zz>oihRZ50;Hp!&5=reJwQi3EH8hFF)2-rGGY+{VWSJMtdm=!K6OYMc?ARJrYY^Gi^Ll285!y(GS zE|xGB>(%U3X}GgL>+y3@D)mgb5{HkSU%B@sDd%|VZw&FPIZD^kA_|^GfBxlhL7}8r z4fg&KzfxUv+cD(x@o&__NT%1Aw>#X1@yUk8{3ahqyd-Mbtf|`^5Y`{hQO#(M{(b~a zd;WGhm5Q1gtWS75A{KTNyH zVj-Y&`>D!8DknX;P`$36W!GTV+G-m$FtHXKlNJ4r+51OLi_>TObC=;>z~FC8h=yvI&@J88Cq2T1Sv;l2Wz0VZ z2@h+fM38IJ`R~5$6*XUE}wyo#DF%2$3xtnfk;GD zkMPvr7c!$#?+{41?lo#pAhseD54M4Pu4@8g+>*YoQ>oC)5{j zOT|%3*4G-hs8M30)lT-3&ni|I8Zm45u?F#JU{A=lq&ME<3=s{FdTj%N2HG%8S{^9C z(Rj-$B61i5;o2GlsOP+e+wOgjJ6Ow5%a`V1nqsB}OWMnT{LZwOAB#J`S4$33@=a=hZ*<=~<@*wX`G+=aJj4v`vfW~7VGIz^f;%A$$ECcG2Gc2P9Lx=PdpiED zD6AB)9uIK6?L@42*C2uM!24qRJUDJZzl8hqv+wsR#&4T&lMzS$*#GIBs8tB6zLc@w ztasUeUF_E?-mp@)XT6$awo$$xYHD(k?G(Td1T`mm^ACe}#@D);Z9owtG^-Vt-jbzB z)aXpN|D@GHA#nU_Ys{_XYfBv}#`*2WCDuR8v_?BK`mM5~ihK1sP6+Bmtmu5sZ>9+g zui&FUtv?bgKqVYb(xVX3Hxt?8J@G^z?%=0$kk$R=;sGJWpHhV`)MCSNrHZ8<<#RZ) zDCQYJ`K5@ipgfFA3`H5A9$)~YEdoz~uDg(!#h0I?7B`kWg$Q9D4=}7E-D$=xf0eZq z;&NTqgpQHkOvS~H;vU-iDW7rh0etTYw49o2vTm+8ze^wK*GUmfQ2bmPoMx;V2$e7Y_)?Oz5rO_U9J?k9O^i%8S=EY8NJKdQ*Ssvx=rzg@-zyVG6EbM6O^Cp)GyL7y`JKJjJ9r|3tMB(|C6gX_6=ZVG=p!>k z*rKlyVB@XCChjF3U=plhAV!BuBH@7c#+QY}1E5z*;7mMT)5bGtz*smy7#~I}b~Fh& zV+@Mt(FHOokfy*q+9K->_3Drc9Ra(I@a2*i-#>O8;cwu_NDc$+P6-S=DmWOx12~BO z10>9XyW$Q3_~ioaxz|~bOyD-)rD8Bd$G(2Be|O2aeF~`RtKU`klwAq21Jv|MD=8POeq;|pHDn+JkSaYINv4dJwMjFU2w))!Di?1vZtiH*!kFW;TvfH6bY zj-%9%`tX;e_!9tNhFRPg+-m{KGoFY@<7GTt5AV~t(efMRD+k2)!Qg5x&5KD!*)lxZ5>V;Eb`NzzUq}v;Wi8 zl?FAHW#JG42m)F(AOxgokce!JU{F+?C`7j45ClvRl}(n=E~E|C=xBwKMS>#1py1L5 zP(-$B1xir5ixC85i7W|rGuS$SGy;z8-dj!2cOPh5eX9t0k00E3zjx00?zv~_YyYay ze~&YJ>TB1>rw%R^kE~mBKVz!LaJJ;UzsZbodZV>a*#2W`i1V2%Mb1S!RckkIi4f(* zp0yeA$yrw&)^sNRH{*j5J^G<>)6EIfo>|>TE!|ge&(a4S-@e>X-&YXkIm@93KsHo9}9CN7;No0Y_@27zx zAVb;6-R8=oP^O$81df#_2RMzfV%SjofRWS{+43d`!|-b6c?%*T^Pn{BWqa}1Cp#wZ zWe-qFmHPNvP1u*?pr;$*30An-sQ_B5k1Q{uH#*O ze7aG*!OFts4)513`f43DquKDpRZsKkJV}mERp%~wl4riAX=WdGPdBZt64Dwg#{-M2 z`s$sC*}_!c56)a1IwU_?myV=Y;<=NBIf?*G&pa?E?Ne&-BZk)c6OMg=!z*iYvcqcA ztE~xb$)kHe$WY3)tw!-Fuz+8{hXNb7>O_wss-y<$iyy>YgzRe;aqYEo&{;zkMU(nr zDwKOKnVJ)t+qB{f3`TOLLzir3HL(~>&G^B2i!mtdg~ce)fmSkwN`s^<3zyQg_>O}P zbCLo@1ySK(7Yau=U5YB4j4X?96V1|)Hs;b_rsN>{Txa-oqVn1Pnu$XP>LjCElQcda z*SCmWE61Z$lFIR(lB|^AvDEOoo~0MxBsObm`6KQ_NvBA?->sxgG`fEl z64Jrz3-{t2H>dK@G24%Z))e%Ft)q@|fv$8nDe7`4lWmuM*#o>1`%>c9m{(kEFUW{F zS@gcX(?w`-j;fa$)!8Jr-LMUAHm+Z5TC_Bgt{ChS5)&vl&i9C%wKzU#$pN=mk7r=o^}v z=%x7qRsnHFKXEN7?wHbiHrXiOBVZ0^p(d-ViD)T`)d_x}Oh+HIRA~Xe?lC--g2s0( z9zGRV_x`T8=g+g49e>bL2s-=buEw{<8xd(ruEpM=D66aP#>9qF#Zsieoi{+kCn~aE zU%Hr73qX&qxv?8f&cTLOh_!1*5gqZ%_W8q}l1JMD$!T`janvf~VBT6d{YZ9-vPFOf z>N3dY*flA1Fqgxu=cal`mgnH(!ggbcAkd93shN7zM%hl@g2L8%EqSd4y55371#}gD}B*$6lt?QT9f%%pb44 zmH+Y)f{^tk3IVZC1?L{JX4d~+JAca1{aW1+1mS7O;^t zmZB^_jn)bysHa@C>DXmE1xMsy}`}zqLqs- zeZqIHzkA7k;7Z(Wr=QDPVvn#ggIHf!9(ZAQ^J)o>c-E&MV#nP!kdLg~-og4Qdn|fE z8q3UhnaLPWA74B@R)RYvCRU$}RaNJus2awi@+DWzyDm&O4dtpjid8J9>xCYb$t1d< z08b2Ugp&8ryr^wVJu{8O9vaYWKEOhwA45%3AQ6_M)~1jEx8+tZRDe+>V2iVJqD}DV z87#x9e1F1dhrMlv@V3XFCimF++Zxmlac}1kGRp){4u^ycQGZ&Ed(ORt0DCX&eISk% zP3#m{Ep|P0}MxjeskWai>W%|54E0bhQuvsYZ3Pf5fyb*i2F0uF_FA zoy$sJ^Ml?IL7hr*P$PS?d3gX3v2!qq4IN9OTL)ZAK4w`Q>ETgRaYB&!YX7z&2;Tkpy`_$%XXD0tOgCvuZz1)o5aDO}L04cNSKB$WxtKpham z)+uX8-JoaVmsTaZ-CYhQj*>r9+k^Ipjb+wQ97lKgbyRy zAyX!8ko0Q94kShgB^cctHZJ3m#j796)oCv+qN)kSgbQOP$9iOIp9NS{r>@W>o-vV literal 0 HcmV?d00001 diff --git a/docs/v5/testing/index.html b/docs/v5/testing/index.html index 87f2a589b..34b17be1e 100644 --- a/docs/v5/testing/index.html +++ b/docs/v5/testing/index.html @@ -3,6 +3,11 @@ Testing + + + + +
- +
- +