From ff5695debe887f0ab3895bb5d0a2b3392e494a2d Mon Sep 17 00:00:00 2001 From: Kent Theo Fourie <42357713+GundamDweeb@users.noreply.github.com> Date: Sun, 28 May 2023 02:03:04 +0200 Subject: [PATCH 1/2] timestamping collections & package update --- build/IERC721/IERC721.wasm | Bin 43271 -> 47025 bytes build/LooksRare/LooksRare.wasm | Bin 46090 -> 49702 bytes build/OpenSeaV1/OpenSeaV1.wasm | Bin 45237 -> 48759 bytes build/WETH/WETH.wasm | Bin 28200 -> 32122 bytes build/X2Y2/X2Y2.wasm | Bin 45163 -> 48690 bytes build/schema.graphql | 6 + build/subgraph.yaml | 38 +- generated/IERC721/IERC721.ts | 2 +- generated/IERC721/IERC721Metadata.ts | 2 +- generated/X2Y2/X2Y2.ts | 16 + generated/schema.ts | 600 +++-- package.json | 4 +- schema.graphql | 6 + src/eip721/index.ts | 2 +- src/utils/erc721.ts | 4 +- src/utils/wethUtil.ts | 29 +- subgraph.yaml | 2 +- yarn.lock | 3664 ++++++++++++++++++++++++++ 18 files changed, 4171 insertions(+), 204 deletions(-) create mode 100644 yarn.lock diff --git a/build/IERC721/IERC721.wasm b/build/IERC721/IERC721.wasm index 4b707080276eeab43744f24fa3c9847bf224b40b..49e3419cd1f8d98ee5df7956003f6d2d82ef29a7 100644 GIT binary patch literal 47025 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 literal 43271 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 diff --git a/build/LooksRare/LooksRare.wasm b/build/LooksRare/LooksRare.wasm index 527183fa841414f7092ec2b1f29521c352225008..e8061a7db15d0f1ee48833420af6ed1036c34dcd 100644 GIT binary patch literal 49702 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 I^3N{*51K9@LjV8( literal 46090 zcmeHwdzcj0b!Syq_sl@?C|=?*fO=+-1QIYX??DKtfk6!7B|u2FB#(M#ilLdF?xDK} z3C9sgmThd481FiclCZmMoCll58?x)<(|#Y{e)1zSjz;G&x#ygF?zy*GTrH6s)HO}hH%@;}KdGO5E^_juMu1x# zcg9J6C&U9ydoGGQJdgrUV*Gkii~M6`rs1TI#}Yl6Y+kFJ-kV7uce1%;CcQX+V#wL* ze_h*iBJbo5W_CC)Xj&|p?sHz4mdj_d&f0z_uSG(H%Zdq;{axw&!OVetHkt0%v=C}_ z5o%6Q(8&6hb(&V?LKddzU1*_pVQZI!ey>SJdF7v4n9^;ZH1}_lj-4HP&GSL zHI!nF(c7a%bS(-aMxzn@;RYa9g;M_XsHW>0jjY9Dnr0ZVHl7%`09MBxV4s;=>hZ;3>9d76XmXG+QT#5Eukef*3&sK_x*I!8C&D1SY`@f|&%f z2xb#l1ak=H63io*Pq2XC9)g7giwG7IEFq{SSW2*rU^&6P1aX2If?9$)f)xb!5!_Gk z0KrOvRRj+bJVdaXU=6`qf_j2=1nUVJ2pS2R2$~662wDl+2-*oY5IjtC-6O$3_> zUKa&^Uf>r5eo^3;1pcnTHw1oJ;1z*i5%_xozbf#mz^@7Xy1?HTcun9R2>gb?KNR?; zz;6otmcVZdd`sZ}6!;y1|4ZO?fqx|Mj|KjTz#9U;EAV>)zc26y0{>Ltp9%bPfj0&I zg}@&Q{7Zqi1pbx49|`=iz}o`yP?qB(><)74N9Z977QqIA|fRpV=_Gw4L5A584 zmYjJI0kErYt%?#xbgui|&Sn!QI))D)cCtpyavvgWv`K|gF(-JmzC}H&3_WXXP|vDD z&sv()vuWP5Cz3wD>0Y~h<}ozG4?T`E!Vf)`Gv~SDY)@qpc@K3~!BY=+w%2@zA6E^_ z>!C>4k;$ZtIroG$5fXLo;&4T$8@&%DQp1ihuYl+PXAV^{e?gdNXD*Xg&lh;Tk%nC( z+*81%^SG1F?@MG8gT}&@VJ^Jy+npHdOy{#F6luVC(W-G!L&7ayDa(?##WOmRvkBP<&w_anSdgVi}aKYrVdNx?blQKA>JvOf6kE?pxtD=Ls27dx+uv zb)%yNZ9H&q5tiz4h|kL9BVq(BR;?Zpfe%Mg;e(#*?00g*sr)EtqS%K#`zlnwNvT{t z%WYO1_K7xQ&Fq2)>sySqg-;qAjQYYSEltL{0ybT3#`*%3F0g4Rd;&I&g-^hyso=?W z;4~LL0ZvQ7XbKJb)}^lGdz?g8y0a~jPwaPkog}hDqs>!;U%fSZVkn>4k;ok}+N+Cc zZSjBQX&b!JPSV{@b|B^KOXQCj4|_)SSpq-Vmq462kVlL*HpYwD9!Q}%r_aYT9`VAD z&*MO{Kb^=AXB}fxiBwyU45tTnIEg-VXtU>47rwmB&$?*x^5!`)Gph27cbMfAXk z;@3lY!RZ~QXY3u$_htqi<6yY9#ATld zcVFfM*CP*w8}waV4TUGeL}536$_v@-o0?tT6Sj@p(I=DnBc6Eg_395gSkl4YVRz;? z64?*FU_9-KKT^H%jOQCgwOccTgULL6+jw>q`VOupjrV!hDx&Y?`YYY*7~THVGJ<$^ z9?Qj^;k;u!=LLs=k95Cl+xAqVzZ1(vBT?%*X@J79hZ!N)&l*AM@mwoF5=HDv=JG~w zX;-9DDZ0-KApt2SiJ?q7=X5yz$+W_9yg^=y)tT;7IEPC+<2%3;LkNkE(eGsk0UNPe zG2W3J_0dubd&Y4w21?uT#c)wlrDi^)HW^%mLC>R$ zgfP-x6bLGmZyA|VQw3f(R7&QKt79XPxf(IDUH}MM6J2y|GjgR}fb97LPTpml_a?T0 zmUE^t><#4Lxu-zm`28h5xovm|(*$gMD3f=5#OF%|^9JY(r5%zg(iJK#6+{!;%IWaX7VRT?OKGeZl;2TJSJ_;U60)1~!Z%QCuNEbWKS-#A(7 zg@yiZoYG6_gDLkVz0?W^UreT8oZ&48H5=R0^tYsQXdsX8?Wf4(n(DapFX5} zYmTrNzyy95p+YsbbH;~95O&*eHX)0MkBrdIgULZBmro218K+066;Z?$KdMhp_H}0t zcjpoBw4+tXEi!a9Z6Ma&opzqrW}zHPrnR}1-QB}!-le8>clTyeDP%O-pxND>&F7Qd zJ&BxSd`zzxbOtlo6A`VV8?9saFg>kO=Pr`oGX2NNo)77I>||WC@4WNQJH}(tE%x~; z`$m;rV=uEb&8*XE4Lf?YHVTY+NA00wc66XNcC=R8tkp(rD{s%{!&)7L@km^Y>jO5} z9JNoK`oJ;UI$o>C^>}1Q^%iVh?Es4I-e{(2#)Ih0i&``wnqo9O* z@>RDZyS++X;Y7eO;#Nm&!$+*}5e;BO{pVHg^SCx(8^>xRPznW;rs81q0ePki1s_Lj zkAl(*ZdF{jXMiEAb-T*Fi`a`?*6f%dTB?|@ibX(P>XR+<@8z}H2?L^K~H zeU)7)Qn@BU5v2^uK$pO{(Kv?2BGuF-oKuvn*G74x!?&YrH1Rh2T}^~a zM03V5C=0|GK4OEozA_>Wptma{=sKK(cU7VU-p!yN=uK7LJ|~ zIKitFRn<|GmVyHpBf|s=CF-F>e3W`!dsqiwJEBk`9*PbWHmEvi&L(HNRK)#AKhf)1 z*aeRmrbt#33n);J@kq`nTrN;ylnvo2bSW)HACK9K zj%Sqv8MtL*F{!~rD${#7&3g#vBGSy-7|B@;%+XamBQjD4#uPT<2|L#pHiFhI3Tp+z zS|V(P)cC@xhts`>uCTKpEXcuQ9AWi9Sg;t|B}Jd}d=U*0ETV{2frwQiVx`phBC3a` z_s|t_HbewDY%;cp7zXg)0uLJ5A4c+#|JR<4?q<{?hyHk@>i>ks#+H&X=We7Nn=8Xq znCsZsMG?#VdIT9q1Yx*F;_Y^113ISiI4AfxB6xmaw_+cUS_=@m*-{st=yv5Xcx&ac z?GnX#ho{lbnNd;=kQ?(1FO11d5MdbOOu#7sV=iiQN+ZWrhRnctAe4;Ocq&0#=3F8Z zb99z&tHh3#2p5kYEt0Pm@*PD_qen-Qh;jrNO1Q8b>|szJa6odf6H_AeGJjxY#Ip6{ zP++YAdBWe3M@E<^+_q%C&@t0uI*uFGJ;+Q9k&3tGW~hMk{tPII^ZxBQ_7Cx?sZ@W=#(L6zG`s?06ON!T2Dv;fZ?trkU5)gUlOa^;=5La{+1D1zS7vpv zzqwsGZX{nDMTQb(T1wkPuYmEGb&qLVP&C-a4Mm88S)pX9a8yYh%+Knwf`Kj=0-%?g zm_6UF1)VlR`U@=!ofOEq$qb6+YDmJ7%Kaj;0ARB~v0}9l3VHLrMLgkgcAWCL{fvW* zyqHtRM#6`6Ojw3?li|3?zP8v}NbB8zw=46Z4*!WiptLKf_1jB`^A|3eaIM zpi{L5H7^)?)k&aI`?ZyJ>bZl$9^NuF_BQrSN%(2(`1EqEvB6p?CcxoF3hLP=* zu4=EAPb8dw?evJS$6 zCnlOI7@@Y}=yr)*-Ubb%iN-4^b_`dvcx$K0t`X6p4Q%XSBc~$R$cd4v0_3rxjht9K z7Ox04a$;LBEHMaVBPWWD9Bjle+`v66s0ef*9(}ADTQ>0Rcm=0*#9}a^F43+}fwcfT zqGDVn?k(xm1iiFxB>0b^*I=308i*dh=LcYN{KD*btx=6JasFp2x)7&z`v;mTr|*Ro znEamoy0+J5B5B{O+meJ?Fzv=^{KzSZtO+A2Fz1m_;x*TO(dY0 zsr9_gsa}P8#gHCL&O;bua+9t>k06iac{+?8gCuE~-9B^w(PsD!zYhi9JK`UH1>0K>fLpchD0XeoBalSx zHF6*Ir}79VtV<2l{Ix>O*C@l-Oib;wO~m+SAw~r-tTyx0Vj`xs2#^c|Dy6T4&D^oU zc{GNn*crmm)Z;NuUDS-5xK~g#gbHtYfZ=GO7K159J)y1=L&2-9ji!#erolX{)x^Lv z7Ozy3aF{3cixEhLR)n}C!s&U$AR}IZ4J-x#F@T4PQ03Kg4-EAoNi;-uZ?yrTJsK#& z7f*~Y9VhHt!T`i8IlmUteV=WuW7D7MUW}j&bp~C@Ho7N)J?3XnLqAS)mvOqXn!?n#fD_kkLI)gg6l6kWZajK01 zT<2Xo@2=I^SL;H&N&D>zl?mJD8BH5t&q~w$5#Oiq2@}EyGfJ_eeRh@=weB@J46Jyq zZrzVrK(`*iQbV^^amfJmHMM#zhBBoggfsneMlzp*{0+x;MKm zEPr-8&vi~P_o<9by`9kQOR)8*l{Zu+w&<<-;ki{3KJ-V;o@d+10wcACo-Mwhwh&~U z`?le)a~sB;8X+pD#t|9)X+?-p9FFJC!Vz2Ec17IxEwEt(ES{3N8kP+9B4Swm(;qnr zo)_7Ep~7xfS=;E7y13zL1P!>KwZ$}B*z(18m<<~;;8d6jbX;mzxxkHf_Jm|N+DV4( z7Y;J6@TUbU{4w%=Oe5hHVQKE+W!H8h596UdBi@u$^Kcx zi-O=W-F!)APR%~Gxsb!J23su6jNCJ7A~2T`N)J^os_1A`R3fm?C#Pnqk_%8uMW z;r|birZhaqOB{mk0P>C z#|q8Hsy%|SBR*S&j3ijKM=+J!8dCxvk3E!c0bUJW?%+RzYb<>>qOXl9UiJ!4&PF1F zzE`Py11&KEyWy270@^awBQ&qRV>@9x2QR+il0nQ0H>+XOHBsm}s+d7=uB4%LpBek& zeIJ1t5!K2C7K$+VSVv_*u0kM^Bp9EF$ zbFBZkWy%dn*v#8T+(tEuSKru7ufBsw<{95IWnTb^I%4l`dOo%cL<~j|^%T1()j(s2 zc|$9*YuNJ3fI<$pv6X;k{yyBy4D*4KMNMH~IrSCzq92pn3fp-p7-7{Ta8en!w>*NB z!fCt~uU!q}jSla=#dhwA3ppROzoXMcB%yd|F9ky{C9w-JEnh=n@%#c9QAf^>x_p9xS#Q`7$lP@2pOb0YeSh)W3a zh*l6AmsVZPKz?a6^1Mhb(^>=)&emL;x~bF~Uc{-in(7Q|Pp1mhHZr;hh$ee>K zdNB7Ep>8-g0!H77*=-U9jn87UUu9Pigv%x@pj5JR>ht)bvMbyoy^2>_OA*8`hA1S> zbtx+G_JstHThdc`VRq^BVy{1rx^5kTh_Xu9Vt?t23KZ zw}yHmZbF0AZP3nbkijo*dO1s|olm{tw{uQzrJb{HX!e;mire|2`xZfIv;jS?37uLa7zgn!tPvT9p1R<)(fVm=EUP77s?Xyb< zYa%vdI8sIxiVh$s%EB_h&dVC>yWU*Ib(wErF3@3N(!K`{2)=ZH_rd{Ax^F`8 zjd29NjU5}EwH{Gzn7Jr^@OIjDhzwp+I5SR1n8K?R)AoF&db&PmzHuVBjbt zP}F`%42(^*fMSzTn{3MH7&gp=|F(9UB{o&XwivBI!kCS+kq?pl~{&QASg1ucv{Y_V_zx=z6Gn$;8M z{o?`;L3zE1v?%(-!bDLP4(;LmwwEF3VCIiuFG_>fp@n;3;fQrOWMO<8$-*Rrh1n!X zi!F@p0*+y;FSj()3N2*a+@;2%>BQkyW*5SX=G08xX~&Avb~muHY-JPXF6VYbETcTaV(} zLD`kYYQYNMc2*;yLTi#qVVP?^=H^tWs?m%s9OBq&P}}-=d55NfO+3i9%j(C7#+p># z+lgAgWMI3!Sgn|CC!kg%q}H{gs@GuwOJq5{Z~cPrkgWn&YEq_nLBU(g2hX! zmoB?!;iBdD#%pTpR@`_011ncO_|WP#YwOpoZ)j|4ZfR|6-|+CpM?R!)+PuZ?*t)HA z`=dL$c0RUi_ny7`9^Zf9;1h?QeCj>#efpVa-`D+IqNlgdIoy9Fd2}E(n9d9x%jWXK z$De=U#QT5h13&%Z$y54E`pfzU^;dNKs|?%`l3ks8luUPwG-u(^lKEk^n^X~5nPV?(W2|h`1mf%waBJ;2C?h^zx?)9tu@@oXYLGYgm zE)sl};J*<3Cc!0w|4Q)R2!5U5KM?#If`3Qw?+IQd_yvLs1V2acX@ZXt{5-)g68sXu zd4h8U|B2u~5`2c>mkB;jaE9P#2!58}a|FLd@NWrzn?N%wIJeF;4NaG;S*!avq9&^J z6(85_bAPU_Kzy=hE@3{q0>Kk7Qm0$Yd#;(TwKB@I+^}xvk z<^YHBeJ#oyTAOC-OVQdia~>&X;5vYsENIf;Xkna zHEZVM>Ht;0whfZ>;%*RfrSLvfaX3BQoJ~Cb(?mTYIqJ?$m)0*#H|MZ!IxZV+XF+)a zy9BECN{BKI*{KWrx~jVwqU-=o9&MvncU0|ZGw79)&6WL}DLTGrnzeDXc|NLXuj9Ib z%Zh2*I$Zm34dFT)Lt{WkS8tl;0t4t+`D&L?#f#)sP~!~2cy)$Z$Brz;#iovn3X)nM z@KO+sD$Q$0&^6%0$X8~VYlwe8uE0<-%n1||yfYk?luWheA&_Um)XPHm4y@R;cp`~?G{IPG% zGWBzs{q`*L<2oC9O>!Nu`G#pVEe@lB0L`!X;wmabUlG-5_@ zt%38Xr#DgP@J#jX^qgQckPDr|J~u~9bYYI!Ncz>dhS3VgQ6B9a5d$6c+g5I|RZK1; z@;d10rgQMa9MCSo6_~ihuxI9)`Uf!b=b8?&--oMHuF?Jo) zc;hgE@02|b9nj%|R`?``Cr2P3F)*Ib%#;4TIxmP$>>nMM&PPqs1q1H(RYmdEykMBn znMp$nD162=r5$R@b=x!ZRa^6eD0&FBDfB~0OWD$pjs2u8DQ~0J0DAi>XyNj2%{RMs zXyvH_J#N8pV%tOL*%0o?fsvWLtPj<#!SfuRux1b+#_W1GAW#NZ&dUo-{TcYo0`pO} zwFOrvC~4~~u3=EdLsXtt3nfoLYkh*BL!0)wdqn;V_n5up`3$bW4<;}F5%iX`K|SOt zl+4rhLN!7bnhV(;!(%TbXCR@idTIO1z~R_f7)1I`ZNIh^8efMoqH1q03`Rv7t&nu=c{rB^2?QMa z7I4tO+e?EvuNcQ`WLR7^ueHH7?2F5!iK{5!2yZPjAE$gfC#?|`9aK!Db>i@DS|rbC zadEi__uBFx(qvrcISjjIwC91(D8O_;xs+#3`xa=?`L~yw3n{gqLF>>UWw8d z?llL9(TA&?u^f&?DrV7ZgE=hc#ies`QQd_&QXjO5#0Wj^gD_r9px~jby z53A+6oU(5>Fu9dB7)*BzeoCyMnNkknl$pa=3FZxa zmH$0}39wED%DP~JegN{QiLzKK`?A8mQfDr?5B*?*t<51o!s?boNIh=>jf0~u$Qs6) z=}JcT#TDXVudN6?j5AueOB`G(ne2nGOfxyp_oJIZt`Mk9We9|M*vb*>#S!P#Jj*!O zsI_3++^5FPeZkxwcs3Q7#OSGq@z@Hv`6=)%P%cG}?+fxQ%pqs)H$P#h>~1~g6wWJ+ zxSDV^<7&aximMG*yGD%l@@W8U#MOkW8CMIgR$Ohk+Jy@-8sx+Lpb1wqt`=OaxY}^F zOH1TJj7Ir10XE}m!PSbZ4OhEJ!)RGcJBwakb%U#~pjmo>6K_#Ma1(Sp2l%Y6ql-*n9SjQd1(fMoz@y zryU=qMQVt>XU`}#C1PvjL@fKAMIe6SdMh_}MzxejQ@MIz*p! z@Pc)iAt!3R^`Ku5`t_h+5Bl|>Uk`fv#zd^z0Qv^dH-NqY^bMeI06qO`BGzsMeIw`_ zLEi}aM$k8co<2DdFK7aN6X=^j-vs(5&^Lje{yY)yXa;>V=$k>`4Eko!H-mnnUef~l z7SOkVz6JCxpl<>FM7^mM^sS(81$`^%TS4Cn`iXj38|d3W-v;_N(6@oU4fGTBzIM>J zgT5W~?VxW5eLLvsRrCy6mlmRysVVlB60=oOCgjrt$n=kkV`g}V!I54`&!TtG!n6`K zO>MEql$tGbeZ)^Mu0C82uEY37kEU1Bv*;bPFs(#QQ(NpYrDn^d=BE!A=jy|_<7l8q z(<|v&^bT5>R-&es=WuCgy7_4fzPT^w1zOL$SHU@bVwUt7D zxaL7E=JeA|6PweSp9U*$w%nvzZVG0|r_rW*dJ|6{KySDc#~lgv^mKEO>B%DJT(imm zn*$!tf-{~%yH}bgs@)z~g^Q>n3D2}h4_|GWSP%Ix|8Q@yOOiSC@T#JJtHoST>pY0- z3DgaUXFLxWhu?6AAc4D;c+Q-gxyK{8>@%&>w^v((zHzyrp1#&<&Sk>Iz0l{X0q}Re z8cm`a$@*KZ=3*U>=He=DawXKMn4E44nA`|4IoBpkF0=(qnCUQ&q9=3BJA|eb)?01C zo)h<3xX&=4?FnT>_8nj%7dqV@tj)-SxiNEQ`&_$fuRUmQ7iu%$lS39xuYtc^RakGe z2a7PSXQ@B69vwu-fJ2|$5aer|hsXcemp7=6eO-wn(JTQD2l(bG05I8ErV$IE6Cn~b_TiZM)M_+{{5)m4#hM1RXY?+ z#_7yS1UarGIFv>TSzOtuP@RDB)iwlq9EK6O4acCw0g&^#sCCB!c&;|pu|m1?h+3v? zGJADMQtsAKc)1x)Jgu8Emeq4Nh)oZB|aaIdIQnEc+^O&S7+JHu0~< zLG%|#QDhFC?SV?ThsSmAyQs`tuWPDzDE+dZ>0Sq`;Low8i!K&m<(B*%Tm}yQ2vcUd=VI8Sd{)~ z2rv(UhP(5!=X;&FXJA{DKgH3U$2C$|iI1&9!!n@Als2Ke+`ikXFYI||a1ahX?^Trk`i?6GCSDWtyX)k^#!&hZE#Oh$b!Wbz za9>5~`)Gh$>^LP2t0byYbgDg6viLbmu`^~zVtTAabr@L;}m<- z9UMeOZ#s>ms3sGWCNI*v&HNqQ^E>~r{c#7+mPKs!odtf#gdbk1pRB0w_63~trBBoB z&!L>jXQqo&fsG_Qn;yq^{(+Bun@HRc;U8aAp^;Dhk!D6%c^)_VT>L*{D5rTy*iU)W zL%1b3XzLZ6CpI@u9{7v0QT&m`1yro^NXIL|=sNH_ZESEwz~CjfL~rD~KHYsz=C~N4 zqy&(1v0EZB!0+)c;&`(T%0eY|;Nl;IlE1hrCi30B14g2dGdJ9uS8=01iY8D__gJ#O zUt$Gxcpc>eHnk5I%g5a^2BPn}T(06~rzhCUK;U0QcT4sNe;wTI!{5tp8G#b`7eQyG zWEO-!w*D*M)6Dxq;z&hYV9;~cr(s0kN~dmlH+Q_7Gv9Zs&f#X7#}B>w9KU<~@cj&q zh|^JCM>*HS3zhaAR802>P+`A`&Q?xlh5GauCJGGYx22zoX0YlNu%(N zxUA5`K-GUP`qdUvvmJ1!C8EYS#*O5dr zUGJT)>EEp7F`E^e$0k+EbWh@}51nr5oy1u=aUJ56&MNyZn+p!|oVIn6EO2OF$yuM% zw@i|WcL1q>9H_bRE;-1Fp)(%7OKKh}I&;1dXY=sQ;hy^LZaLy%*4(0}IO}2dLV2c+ zaHv$rqEI8kAFUG~3xUk^>>r3!Jq59yQz`E{k z7<}%e6ph2lXe}DsZ*Sg)iHPcXXoy2sW5fK8Nz%Gz4)<|^(jks}O1T zn;AN>aIv(iMrge{*^V4>3df>f(4|f(OY}J*KMGrdhrRg69xCdBrp6wSZkRgG;~ML6 zFv+m9X%kF^<9!#a{uJ<9+uiLPTXISXJ#NI66GX&YJQ=4#ygJBM-8>OPhB{T3&%pjm zTl<}~gF{uEzWQA65oa(_kE0#Evl_{G!*F^qkw;aZcVyXCo{F~Y;ec>gCNq%RpU67( z!JT)YXm__d+eldT4rjAC&+5eTu}1}3y>~*RB5ZVjIMg}Eh7+k=d{rP|SLgn%tqtqz zQ8cVmFzmoJeqfOEU&QHZ$C-UbnK25^$E?Gtn>@L$?&rsGk5QPBRvpfxykz2IVibm+ zH`A=*3M!*oK6XyO|C>uyTC7+=;=S zOlswXru31WOGeGA2gh%!PaVjedvHP#HryDF4Nc}xgdOxD6)%| zK*>B)Hnff1u1W=krJ6YWA<`I{BGp7(pUh_xjSWr8`b2_B&JVj`VMpBT&x=RUBmRYh`{``vl*XeOCffkB#Tn@}Pb?qR5@_PZs1 z3`>&@%g1o0#Bt~0`dqeGEsMNG(i(Oor)CH&h%goQ=5uQiE@kG}SX06KFqD{*XVM z$qsI93*-zEfZ%S#RA4BZ>~*%4_RyCg0S8OxJI7E}56_L>Gd$SiWVe^9-Di~dj)i-4 zNg$^?%oP%RVaF(vP|r$|uE}QEUZ#u%(az9(F-n#tcE@?JxyP1{ETyvet}y~6F;sxu zJy}_~ra<01gdA?qrip}x&}zc%r$@gxG!2LQioU5FP#vR(BzWJ126t&obzI^-{y>SE z0za>lk(3!afYG^s0=oA+uOPnh07vxS>RxF)3B$ zp-gIc(0O9Z-Ox%lj_}0Q#Gy&b-IK}ZGlSI5lL&4_@oIFrF;1SEL_g_|;eNhn68#Kl z!~J~kB>G7XK|h}^rR+;2M>VX}DeFA5sYFBLQif%IcFn};q2TvTTu}BfBxv`<1@$Sz zf<9Ne6dbLig}P0Y`o!~&Gcc-hRi)ByPpMB#fHo|4Z>a~5&H)PUn}oFNXINTi64C~= zVQCMSns-!b3$@(8p4p1ZPh>$ZY!OvCjO%xEiS9k&!Pb0wL`Vh`*#Rey$r{JG2MhGw zi6I3H5SD`0J5&~%LmTr?*6%lnmK$JQ-{80 zw8T($_7Z92gdJUvcI`RX{oc;~dn2nSjJ|hIry&|H*qV2<&I0D!I=6Q1ws%Pb(JgnO zB5p8s^{rKzc&zj8IY<`YF?<-VR!$#!dDrQERY+TLEER&6^npxZL-q_nynMB?dXLh-KTzRZAOckuV=aexH z#A7-#nbh2_yH|}c30!C1t}AorGleqi+Pu{(vJr@XtjG&tj9GX(be$Q9# zFQ2dS*+AA+k53g(U(5%)r;4Sg<)VT1P#FPVy~Z1bF^AvkGUA_N?kj@q*4THi43%88 zt?ek6#rl@|vUxN%tSg&GOVj#t)zQ_~P_7tV>suPj=7BdxW%FohYA%<@_Qr;mvU#*L zwU(QW1u1#k-n;kKJx(GkPS3Yn`<-4ViC@CCmoXrHhFh~IhVq#miQJJ5d!|4>Tef>; zW_-Ae%$nlucCrI0XI~vP{MK)4mLfr^*y8G*Q2&jLiW0n)LC#Wkw>`Rr#XM zHRaP~a6IUwk%8c6^Lfc)WtZXL3(u6{93ydjwv32g#BVEpDVNM+_I}^g$;jXT=DN#> zO+_+x9#8h+x600QG}(|1YIyIPWCNNRk6t#T~o0ZBHfoJNZ+YC+>cV445*n z!Y}A^{oJr1+uky!kbtc?=B{Ke-!~;@7k1Krr;Ow~5D(iZL-;X`)8X_d)57;~8EIuH z-_CTOaP6NG!}|g9i6Jb!oFirIF9)JZ{3zm_oDy-7$>sRV<(&H80gjfjTo1$*bt;Af zQxcuLL9ckGrljY-Iu+BwDG5=B@Jm7D0g7e1jM=eBnVB;3&VZGQ??Y1(H2k^Z*p!H- zvXkr-iRSuru8fp3(3*I2*S7qWI0!r=f56GB?hco+Sro{}-Ld0kq;&x&Z|LjzBdsnjmNPcT7=^*XP=M%jHUe|wW zN@iDKFE06kDM?NJFbJ>w=_%o;vJ~avFHQ+ZPlL=+PELu<{a&Bar(}XEoSDk?4tl?$|LD~46P0q#`IxT$kpuilv%5Q+&nLTk T5;^DNdX@S$r_)y@zvukl`zBmK diff --git a/build/OpenSeaV1/OpenSeaV1.wasm b/build/OpenSeaV1/OpenSeaV1.wasm index a494c85a0700c6bdda8eebc45d026aa378065843..b4fed43244ca7f842214c5a95679a424dd4fefbc 100644 GIT binary patch literal 48759 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 literal 45237 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 aE1S^=nS2r$TqY)ot}6wOeX03Bd*o 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 delta 7579 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 DaQ|)L diff --git a/build/X2Y2/X2Y2.wasm b/build/X2Y2/X2Y2.wasm index d8e791cac752f0dfc5c6bd581c2a629b949033a3..3651dc50bbd78870a95c25d8a04234766cc45ce6 100644 GIT binary patch literal 48690 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.get_in_block("contract", id)); + } + static load(id: string): contract | null { return changetype(store.get("contract", id)); } get id(): string { let value = this.get("id"); - return value!.toString(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } } set id(value: string) { @@ -78,13 +86,21 @@ export class account extends Entity { } } + static loadInBlock(id: string): account | null { + return changetype(store.get_in_block("account", id)); + } + static load(id: string): account | null { return changetype(store.get("account", id)); } get id(): string { let value = this.get("id"); - return value!.toString(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } } set id(value: string) { @@ -93,38 +109,38 @@ export class account extends Entity { get tokens(): Array { let value = this.get("tokens"); - return value!.toStringArray(); - } - - set tokens(value: Array) { - this.set("tokens", Value.fromStringArray(value)); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toStringArray(); + } } get transfersFrom(): Array { let value = this.get("transfersFrom"); - return value!.toStringArray(); - } - - set transfersFrom(value: Array) { - this.set("transfersFrom", Value.fromStringArray(value)); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toStringArray(); + } } get transfersTo(): Array { let value = this.get("transfersTo"); - return value!.toStringArray(); - } - - set transfersTo(value: Array) { - this.set("transfersTo", Value.fromStringArray(value)); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toStringArray(); + } } get accountCollection(): Array { let value = this.get("accountCollection"); - return value!.toStringArray(); - } - - set accountCollection(value: Array) { - this.set("accountCollection", Value.fromStringArray(value)); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toStringArray(); + } } } @@ -132,10 +148,6 @@ export class collection extends Entity { constructor(id: string) { super(); this.set("id", Value.fromString(id)); - - this.set("totalSales", Value.fromI32(0)); - this.set("totalVolume", Value.fromBigDecimal(BigDecimal.zero())); - this.set("topSale", Value.fromBigDecimal(BigDecimal.zero())); } save(): void { @@ -150,13 +162,21 @@ export class collection extends Entity { } } + static loadInBlock(id: string): collection | null { + return changetype(store.get_in_block("collection", id)); + } + static load(id: string): collection | null { return changetype(store.get("collection", id)); } get id(): string { let value = this.get("id"); - return value!.toString(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } } set id(value: string) { @@ -233,16 +253,20 @@ export class collection extends Entity { get tokens(): Array { let value = this.get("tokens"); - return value!.toStringArray(); - } - - set tokens(value: Array) { - this.set("tokens", Value.fromStringArray(value)); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toStringArray(); + } } get supportsMetadata(): boolean { let value = this.get("supportsMetadata"); - return value!.toBoolean(); + if (!value || value.kind == ValueKind.NULL) { + return false; + } else { + return value.toBoolean(); + } } set supportsMetadata(value: boolean) { @@ -251,7 +275,11 @@ export class collection extends Entity { get totalSales(): i32 { let value = this.get("totalSales"); - return value!.toI32(); + if (!value || value.kind == ValueKind.NULL) { + return 0; + } else { + return value.toI32(); + } } set totalSales(value: i32) { @@ -260,7 +288,11 @@ export class collection extends Entity { get totalVolume(): BigDecimal { let value = this.get("totalVolume"); - return value!.toBigDecimal(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigDecimal(); + } } set totalVolume(value: BigDecimal) { @@ -269,47 +301,77 @@ export class collection extends Entity { get topSale(): BigDecimal { let value = this.get("topSale"); - return value!.toBigDecimal(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigDecimal(); + } } set topSale(value: BigDecimal) { this.set("topSale", Value.fromBigDecimal(value)); } - get hourlyCollectionSnapshot(): Array { - let value = this.get("hourlyCollectionSnapshot"); - return value!.toStringArray(); + get createdAt(): BigInt { + let value = this.get("createdAt"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigInt(); + } } - set hourlyCollectionSnapshot(value: Array) { - this.set("hourlyCollectionSnapshot", Value.fromStringArray(value)); + set createdAt(value: BigInt) { + this.set("createdAt", Value.fromBigInt(value)); } - get dailyCollectionSnapshot(): Array { - let value = this.get("dailyCollectionSnapshot"); - return value!.toStringArray(); + get createdAtBlock(): BigInt { + let value = this.get("createdAtBlock"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigInt(); + } } - set dailyCollectionSnapshot(value: Array) { - this.set("dailyCollectionSnapshot", Value.fromStringArray(value)); + set createdAtBlock(value: BigInt) { + this.set("createdAtBlock", Value.fromBigInt(value)); } - get weeklyCollectionSnapshot(): Array { - let value = this.get("weeklyCollectionSnapshot"); - return value!.toStringArray(); + get hourlyCollectionSnapshot(): Array { + let value = this.get("hourlyCollectionSnapshot"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toStringArray(); + } + } + + get dailyCollectionSnapshot(): Array { + let value = this.get("dailyCollectionSnapshot"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toStringArray(); + } } - set weeklyCollectionSnapshot(value: Array) { - this.set("weeklyCollectionSnapshot", Value.fromStringArray(value)); + get weeklyCollectionSnapshot(): Array { + let value = this.get("weeklyCollectionSnapshot"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toStringArray(); + } } get accountCollection(): Array { let value = this.get("accountCollection"); - return value!.toStringArray(); - } - - set accountCollection(value: Array) { - this.set("accountCollection", Value.fromStringArray(value)); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toStringArray(); + } } } @@ -317,9 +379,6 @@ export class token extends Entity { constructor(id: string) { super(); this.set("id", Value.fromString(id)); - - this.set("collection", Value.fromString("")); - this.set("identifier", Value.fromBigInt(BigInt.zero())); } save(): void { @@ -334,13 +393,21 @@ export class token extends Entity { } } + static loadInBlock(id: string): token | null { + return changetype(store.get_in_block("token", id)); + } + static load(id: string): token | null { return changetype(store.get("token", id)); } get id(): string { let value = this.get("id"); - return value!.toString(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } } set id(value: string) { @@ -349,7 +416,11 @@ export class token extends Entity { get collection(): string { let value = this.get("collection"); - return value!.toString(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } } set collection(value: string) { @@ -358,7 +429,11 @@ export class token extends Entity { get identifier(): BigInt { let value = this.get("identifier"); - return value!.toBigInt(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigInt(); + } } set identifier(value: BigInt) { @@ -384,11 +459,11 @@ export class token extends Entity { get transfers(): Array { let value = this.get("transfers"); - return value!.toStringArray(); - } - - set transfers(value: Array) { - this.set("transfers", Value.fromStringArray(value)); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toStringArray(); + } } } @@ -396,8 +471,6 @@ export class accountCollection extends Entity { constructor(id: string) { super(); this.set("id", Value.fromString(id)); - - this.set("tokenCount", Value.fromI32(0)); } save(): void { @@ -412,6 +485,12 @@ export class accountCollection extends Entity { } } + static loadInBlock(id: string): accountCollection | null { + return changetype( + store.get_in_block("accountCollection", id) + ); + } + static load(id: string): accountCollection | null { return changetype( store.get("accountCollection", id) @@ -420,7 +499,11 @@ export class accountCollection extends Entity { get id(): string { let value = this.get("id"); - return value!.toString(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } } set id(value: string) { @@ -463,7 +546,11 @@ export class accountCollection extends Entity { get tokenCount(): i32 { let value = this.get("tokenCount"); - return value!.toI32(); + if (!value || value.kind == ValueKind.NULL) { + return 0; + } else { + return value.toI32(); + } } set tokenCount(value: i32) { @@ -475,12 +562,6 @@ export class transaction extends Entity { constructor(id: string) { super(); this.set("id", Value.fromString(id)); - - this.set("timestamp", Value.fromI32(0)); - this.set("blockNumber", Value.fromI32(0)); - this.set("transactionFrom", Value.fromBytes(Bytes.empty())); - this.set("unmatchedTransferCount", Value.fromI32(0)); - this.set("transfers", Value.fromStringArray(new Array(0))); } save(): void { @@ -495,13 +576,23 @@ export class transaction extends Entity { } } + static loadInBlock(id: string): transaction | null { + return changetype( + store.get_in_block("transaction", id) + ); + } + static load(id: string): transaction | null { return changetype(store.get("transaction", id)); } get id(): string { let value = this.get("id"); - return value!.toString(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } } set id(value: string) { @@ -510,7 +601,11 @@ export class transaction extends Entity { get timestamp(): i32 { let value = this.get("timestamp"); - return value!.toI32(); + if (!value || value.kind == ValueKind.NULL) { + return 0; + } else { + return value.toI32(); + } } set timestamp(value: i32) { @@ -519,7 +614,11 @@ export class transaction extends Entity { get blockNumber(): i32 { let value = this.get("blockNumber"); - return value!.toI32(); + if (!value || value.kind == ValueKind.NULL) { + return 0; + } else { + return value.toI32(); + } } set blockNumber(value: i32) { @@ -528,7 +627,11 @@ export class transaction extends Entity { get transactionFrom(): Bytes { let value = this.get("transactionFrom"); - return value!.toBytes(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } } set transactionFrom(value: Bytes) { @@ -537,7 +640,11 @@ export class transaction extends Entity { get unmatchedTransferCount(): i32 { let value = this.get("unmatchedTransferCount"); - return value!.toI32(); + if (!value || value.kind == ValueKind.NULL) { + return 0; + } else { + return value.toI32(); + } } set unmatchedTransferCount(value: i32) { @@ -546,7 +653,11 @@ export class transaction extends Entity { get transfers(): Array { let value = this.get("transfers"); - return value!.toStringArray(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toStringArray(); + } } set transfers(value: Array) { @@ -562,14 +673,6 @@ export class transaction extends Entity { } } - set sales(value: Array | null) { - if (!value) { - this.unset("sales"); - } else { - this.set("sales", Value.fromStringArray(>value)); - } - } - get gasPrice(): BigInt | null { let value = this.get("gasPrice"); if (!value || value.kind == ValueKind.NULL) { @@ -592,13 +695,6 @@ export class transfer extends Entity { constructor(id: string) { super(); this.set("id", Value.fromString(id)); - - this.set("transaction", Value.fromString("")); - this.set("collection", Value.fromString("")); - this.set("token", Value.fromString("")); - this.set("timestamp", Value.fromI32(0)); - this.set("blockNumber", Value.fromI32(0)); - this.set("amount", Value.fromBigDecimal(BigDecimal.zero())); } save(): void { @@ -613,13 +709,21 @@ export class transfer extends Entity { } } + static loadInBlock(id: string): transfer | null { + return changetype(store.get_in_block("transfer", id)); + } + static load(id: string): transfer | null { return changetype(store.get("transfer", id)); } get id(): string { let value = this.get("id"); - return value!.toString(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } } set id(value: string) { @@ -628,7 +732,11 @@ export class transfer extends Entity { get transaction(): string { let value = this.get("transaction"); - return value!.toString(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } } set transaction(value: string) { @@ -637,7 +745,11 @@ export class transfer extends Entity { get collection(): string { let value = this.get("collection"); - return value!.toString(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } } set collection(value: string) { @@ -646,7 +758,11 @@ export class transfer extends Entity { get token(): string { let value = this.get("token"); - return value!.toString(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } } set token(value: string) { @@ -689,7 +805,11 @@ export class transfer extends Entity { get timestamp(): i32 { let value = this.get("timestamp"); - return value!.toI32(); + if (!value || value.kind == ValueKind.NULL) { + return 0; + } else { + return value.toI32(); + } } set timestamp(value: i32) { @@ -698,7 +818,11 @@ export class transfer extends Entity { get blockNumber(): i32 { let value = this.get("blockNumber"); - return value!.toI32(); + if (!value || value.kind == ValueKind.NULL) { + return 0; + } else { + return value.toI32(); + } } set blockNumber(value: i32) { @@ -707,7 +831,11 @@ export class transfer extends Entity { get amount(): BigDecimal { let value = this.get("amount"); - return value!.toBigDecimal(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigDecimal(); + } } set amount(value: BigDecimal) { @@ -736,11 +864,6 @@ export class sale extends Entity { constructor(id: string) { super(); this.set("id", Value.fromString(id)); - - this.set("transaction", Value.fromString("")); - this.set("timestamp", Value.fromI32(0)); - this.set("blockNumber", Value.fromI32(0)); - this.set("amount", Value.fromBigDecimal(BigDecimal.zero())); } save(): void { @@ -755,13 +878,21 @@ export class sale extends Entity { } } + static loadInBlock(id: string): sale | null { + return changetype(store.get_in_block("sale", id)); + } + static load(id: string): sale | null { return changetype(store.get("sale", id)); } get id(): string { let value = this.get("id"); - return value!.toString(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } } set id(value: string) { @@ -770,7 +901,11 @@ export class sale extends Entity { get transaction(): string { let value = this.get("transaction"); - return value!.toString(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } } set transaction(value: string) { @@ -796,7 +931,11 @@ export class sale extends Entity { get timestamp(): i32 { let value = this.get("timestamp"); - return value!.toI32(); + if (!value || value.kind == ValueKind.NULL) { + return 0; + } else { + return value.toI32(); + } } set timestamp(value: i32) { @@ -805,7 +944,11 @@ export class sale extends Entity { get blockNumber(): i32 { let value = this.get("blockNumber"); - return value!.toI32(); + if (!value || value.kind == ValueKind.NULL) { + return 0; + } else { + return value.toI32(); + } } set blockNumber(value: i32) { @@ -814,7 +957,11 @@ export class sale extends Entity { get amount(): BigDecimal { let value = this.get("amount"); - return value!.toBigDecimal(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigDecimal(); + } } set amount(value: BigDecimal) { @@ -843,9 +990,6 @@ export class currency extends Entity { constructor(id: string) { super(); this.set("id", Value.fromString(id)); - - this.set("name", Value.fromString("")); - this.set("symbol", Value.fromString("")); } save(): void { @@ -860,13 +1004,21 @@ export class currency extends Entity { } } + static loadInBlock(id: string): currency | null { + return changetype(store.get_in_block("currency", id)); + } + static load(id: string): currency | null { return changetype(store.get("currency", id)); } get id(): string { let value = this.get("id"); - return value!.toString(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } } set id(value: string) { @@ -875,7 +1027,11 @@ export class currency extends Entity { get decimals(): i32 { let value = this.get("decimals"); - return value!.toI32(); + if (!value || value.kind == ValueKind.NULL) { + return 0; + } else { + return value.toI32(); + } } set decimals(value: i32) { @@ -884,7 +1040,11 @@ export class currency extends Entity { get name(): string { let value = this.get("name"); - return value!.toString(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } } set name(value: string) { @@ -893,7 +1053,11 @@ export class currency extends Entity { get symbol(): string { let value = this.get("symbol"); - return value!.toString(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } } set symbol(value: string) { @@ -905,12 +1069,6 @@ export class hourlyCollectionSnapshot extends Entity { constructor(id: string) { super(); this.set("id", Value.fromString(id)); - - this.set("collection", Value.fromString("")); - this.set("hourlyVolume", Value.fromBigDecimal(BigDecimal.zero())); - this.set("hourlyAvgSale", Value.fromBigDecimal(BigDecimal.zero())); - this.set("topSale", Value.fromBigDecimal(BigDecimal.zero())); - this.set("bottomSale", Value.fromBigDecimal(BigDecimal.zero())); } save(): void { @@ -928,6 +1086,12 @@ export class hourlyCollectionSnapshot extends Entity { } } + static loadInBlock(id: string): hourlyCollectionSnapshot | null { + return changetype( + store.get_in_block("hourlyCollectionSnapshot", id) + ); + } + static load(id: string): hourlyCollectionSnapshot | null { return changetype( store.get("hourlyCollectionSnapshot", id) @@ -936,7 +1100,11 @@ export class hourlyCollectionSnapshot extends Entity { get id(): string { let value = this.get("id"); - return value!.toString(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } } set id(value: string) { @@ -945,7 +1113,11 @@ export class hourlyCollectionSnapshot extends Entity { get timestamp(): i32 { let value = this.get("timestamp"); - return value!.toI32(); + if (!value || value.kind == ValueKind.NULL) { + return 0; + } else { + return value.toI32(); + } } set timestamp(value: i32) { @@ -954,7 +1126,11 @@ export class hourlyCollectionSnapshot extends Entity { get collection(): string { let value = this.get("collection"); - return value!.toString(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } } set collection(value: string) { @@ -963,7 +1139,11 @@ export class hourlyCollectionSnapshot extends Entity { get hourlyVolume(): BigDecimal { let value = this.get("hourlyVolume"); - return value!.toBigDecimal(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigDecimal(); + } } set hourlyVolume(value: BigDecimal) { @@ -972,7 +1152,11 @@ export class hourlyCollectionSnapshot extends Entity { get hourlyTransactions(): i32 { let value = this.get("hourlyTransactions"); - return value!.toI32(); + if (!value || value.kind == ValueKind.NULL) { + return 0; + } else { + return value.toI32(); + } } set hourlyTransactions(value: i32) { @@ -981,7 +1165,11 @@ export class hourlyCollectionSnapshot extends Entity { get hourlyAvgSale(): BigDecimal { let value = this.get("hourlyAvgSale"); - return value!.toBigDecimal(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigDecimal(); + } } set hourlyAvgSale(value: BigDecimal) { @@ -990,7 +1178,11 @@ export class hourlyCollectionSnapshot extends Entity { get topSale(): BigDecimal { let value = this.get("topSale"); - return value!.toBigDecimal(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigDecimal(); + } } set topSale(value: BigDecimal) { @@ -999,7 +1191,11 @@ export class hourlyCollectionSnapshot extends Entity { get bottomSale(): BigDecimal { let value = this.get("bottomSale"); - return value!.toBigDecimal(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigDecimal(); + } } set bottomSale(value: BigDecimal) { @@ -1011,12 +1207,6 @@ export class dailyCollectionSnapshot extends Entity { constructor(id: string) { super(); this.set("id", Value.fromString(id)); - - this.set("collection", Value.fromString("")); - this.set("dailyVolume", Value.fromBigDecimal(BigDecimal.zero())); - this.set("dailyAvgSale", Value.fromBigDecimal(BigDecimal.zero())); - this.set("topSale", Value.fromBigDecimal(BigDecimal.zero())); - this.set("bottomSale", Value.fromBigDecimal(BigDecimal.zero())); } save(): void { @@ -1034,6 +1224,12 @@ export class dailyCollectionSnapshot extends Entity { } } + static loadInBlock(id: string): dailyCollectionSnapshot | null { + return changetype( + store.get_in_block("dailyCollectionSnapshot", id) + ); + } + static load(id: string): dailyCollectionSnapshot | null { return changetype( store.get("dailyCollectionSnapshot", id) @@ -1042,7 +1238,11 @@ export class dailyCollectionSnapshot extends Entity { get id(): string { let value = this.get("id"); - return value!.toString(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } } set id(value: string) { @@ -1051,7 +1251,11 @@ export class dailyCollectionSnapshot extends Entity { get timestamp(): i32 { let value = this.get("timestamp"); - return value!.toI32(); + if (!value || value.kind == ValueKind.NULL) { + return 0; + } else { + return value.toI32(); + } } set timestamp(value: i32) { @@ -1060,7 +1264,11 @@ export class dailyCollectionSnapshot extends Entity { get collection(): string { let value = this.get("collection"); - return value!.toString(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } } set collection(value: string) { @@ -1069,7 +1277,11 @@ export class dailyCollectionSnapshot extends Entity { get dailyVolume(): BigDecimal { let value = this.get("dailyVolume"); - return value!.toBigDecimal(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigDecimal(); + } } set dailyVolume(value: BigDecimal) { @@ -1078,7 +1290,11 @@ export class dailyCollectionSnapshot extends Entity { get dailyTransactions(): i32 { let value = this.get("dailyTransactions"); - return value!.toI32(); + if (!value || value.kind == ValueKind.NULL) { + return 0; + } else { + return value.toI32(); + } } set dailyTransactions(value: i32) { @@ -1087,7 +1303,11 @@ export class dailyCollectionSnapshot extends Entity { get dailyAvgSale(): BigDecimal { let value = this.get("dailyAvgSale"); - return value!.toBigDecimal(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigDecimal(); + } } set dailyAvgSale(value: BigDecimal) { @@ -1096,7 +1316,11 @@ export class dailyCollectionSnapshot extends Entity { get topSale(): BigDecimal { let value = this.get("topSale"); - return value!.toBigDecimal(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigDecimal(); + } } set topSale(value: BigDecimal) { @@ -1105,7 +1329,11 @@ export class dailyCollectionSnapshot extends Entity { get bottomSale(): BigDecimal { let value = this.get("bottomSale"); - return value!.toBigDecimal(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigDecimal(); + } } set bottomSale(value: BigDecimal) { @@ -1117,12 +1345,6 @@ export class weeklyCollectionSnapshot extends Entity { constructor(id: string) { super(); this.set("id", Value.fromString(id)); - - this.set("collection", Value.fromString("")); - this.set("weeklyVolume", Value.fromBigDecimal(BigDecimal.zero())); - this.set("weeklyAvgSale", Value.fromBigDecimal(BigDecimal.zero())); - this.set("topSale", Value.fromBigDecimal(BigDecimal.zero())); - this.set("bottomSale", Value.fromBigDecimal(BigDecimal.zero())); } save(): void { @@ -1140,6 +1362,12 @@ export class weeklyCollectionSnapshot extends Entity { } } + static loadInBlock(id: string): weeklyCollectionSnapshot | null { + return changetype( + store.get_in_block("weeklyCollectionSnapshot", id) + ); + } + static load(id: string): weeklyCollectionSnapshot | null { return changetype( store.get("weeklyCollectionSnapshot", id) @@ -1148,7 +1376,11 @@ export class weeklyCollectionSnapshot extends Entity { get id(): string { let value = this.get("id"); - return value!.toString(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } } set id(value: string) { @@ -1157,7 +1389,11 @@ export class weeklyCollectionSnapshot extends Entity { get timestamp(): i32 { let value = this.get("timestamp"); - return value!.toI32(); + if (!value || value.kind == ValueKind.NULL) { + return 0; + } else { + return value.toI32(); + } } set timestamp(value: i32) { @@ -1166,7 +1402,11 @@ export class weeklyCollectionSnapshot extends Entity { get collection(): string { let value = this.get("collection"); - return value!.toString(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } } set collection(value: string) { @@ -1175,7 +1415,11 @@ export class weeklyCollectionSnapshot extends Entity { get weeklyVolume(): BigDecimal { let value = this.get("weeklyVolume"); - return value!.toBigDecimal(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigDecimal(); + } } set weeklyVolume(value: BigDecimal) { @@ -1184,7 +1428,11 @@ export class weeklyCollectionSnapshot extends Entity { get weeklyTransactions(): i32 { let value = this.get("weeklyTransactions"); - return value!.toI32(); + if (!value || value.kind == ValueKind.NULL) { + return 0; + } else { + return value.toI32(); + } } set weeklyTransactions(value: i32) { @@ -1193,7 +1441,11 @@ export class weeklyCollectionSnapshot extends Entity { get weeklyAvgSale(): BigDecimal { let value = this.get("weeklyAvgSale"); - return value!.toBigDecimal(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigDecimal(); + } } set weeklyAvgSale(value: BigDecimal) { @@ -1202,7 +1454,11 @@ export class weeklyCollectionSnapshot extends Entity { get topSale(): BigDecimal { let value = this.get("topSale"); - return value!.toBigDecimal(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigDecimal(); + } } set topSale(value: BigDecimal) { @@ -1211,7 +1467,11 @@ export class weeklyCollectionSnapshot extends Entity { get bottomSale(): BigDecimal { let value = this.get("bottomSale"); - return value!.toBigDecimal(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigDecimal(); + } } set bottomSale(value: BigDecimal) { @@ -1237,13 +1497,23 @@ export class wethTransaction extends Entity { } } + static loadInBlock(id: string): wethTransaction | null { + return changetype( + store.get_in_block("wethTransaction", id) + ); + } + static load(id: string): wethTransaction | null { return changetype(store.get("wethTransaction", id)); } get id(): string { let value = this.get("id"); - return value!.toString(); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toString(); + } } set id(value: string) { diff --git a/package.json b/package.json index cd3717e..c632243 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,8 @@ "deploy-local": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 data-nexus/nft-sale" }, "dependencies": { - "@graphprotocol/graph-cli": "0.29.0", - "@graphprotocol/graph-ts": "^0.25.0", + "@graphprotocol/graph-cli": "^0.50.1", + "@graphprotocol/graph-ts": "^0.30.0", "@openzeppelin/contracts": "^4.5.0" } } diff --git a/schema.graphql b/schema.graphql index f79cfbf..704bc6b 100644 --- a/schema.graphql +++ b/schema.graphql @@ -53,6 +53,12 @@ type collection @entity { " Top Sale ever " topSale: BigDecimal! + " Timestamp in UNIX when it was deployed" + createdAt: BigInt! + + " Blocknumber when it was deployed" + createdAtBlock: BigInt! + " Hourly info about the collection " hourlyCollectionSnapshot: [hourlyCollectionSnapshot!]! @derivedFrom(field: "collection") diff --git a/src/eip721/index.ts b/src/eip721/index.ts index bee0363..dc2ecc9 100644 --- a/src/eip721/index.ts +++ b/src/eip721/index.ts @@ -24,7 +24,7 @@ import { store } from '@graphprotocol/graph-ts' export function handleTransfer(event: TransferEvent): void { - let collection = fetchRegistry(event.address) + let collection = fetchRegistry(event.address, event.block.timestamp, event.block.number) if (collection != null) { let token = fetchToken(collection, event.params.tokenId) diff --git a/src/utils/erc721.ts b/src/utils/erc721.ts index da3bb12..be8d099 100644 --- a/src/utils/erc721.ts +++ b/src/utils/erc721.ts @@ -27,7 +27,7 @@ import { constants, } from '../../src/graphprotocol-utils' -export function fetchRegistry(address: Address): collection { +export function fetchRegistry(address: Address, timestamp: BigInt, blockNumber: BigInt): collection { let erc721 = IERC721Metadata.bind(address) let Collection = Contract721.bind(address) let contractEntity = contract.load(address.toHexString()) @@ -58,6 +58,8 @@ export function fetchRegistry(address: Address): collection { collectionEntity.name = try_name.reverted ? '' : try_name.value collectionEntity.symbol = try_symbol.reverted ? '' : try_symbol.value collectionEntity.mintPrice = mintPrice + collectionEntity.createdAt = timestamp + collectionEntity.createdAtBlock = blockNumber collectionEntity.supportsMetadata = supportsInterface(erc721, '5b5e139f') // ERC721Metadata collectionEntity.totalSales = 0 collectionEntity.totalVolume = constants.BIGDECIMAL_ZERO diff --git a/src/utils/wethUtil.ts b/src/utils/wethUtil.ts index 935d8e4..a5e2166 100644 --- a/src/utils/wethUtil.ts +++ b/src/utils/wethUtil.ts @@ -11,20 +11,23 @@ import { export function handleTransfer(event: Transfer): void { let wethTest = wethTransaction.load(event.transaction.hash.toHexString()) - - if (event.transaction.to == Address.fromString('0x7be8076f4ea4a4ad08075c2508e481d6c946d12b') //OpenseaV1 - || event.transaction.to == Address.fromString('0x7f268357A8c2552623316e2562D90e642bB538E5') //OpenseaV2 - || event.transaction.to == Address.fromString('0x0a267cf51ef038fc00e71801f5a524aec06e4f07') //Genie - || event.transaction.to == Address.fromString('0x83c8f28c26bf6aaca652df1dbbe0e1b56f8baba2') //GemSwapV2 - ) { - if (!wethTest) { - - let wethEntity = new wethTransaction(event.transaction.hash.toHexString()) - - wethEntity.save() - - } + let txTo = event.transaction.to; + if(txTo){ + if (txTo == Address.fromString('0x7be8076f4ea4a4ad08075c2508e481d6c946d12b') //OpenseaV1 + || txTo == Address.fromString('0x7f268357A8c2552623316e2562D90e642bB538E5') //OpenseaV2 + || txTo == Address.fromString('0x0a267cf51ef038fc00e71801f5a524aec06e4f07') //Genie + || txTo == Address.fromString('0x83c8f28c26bf6aaca652df1dbbe0e1b56f8baba2') //GemSwapV2 + ) { + if (!wethTest) { + + let wethEntity = new wethTransaction(event.transaction.hash.toHexString()) + + wethEntity.save() + + } + } } + } diff --git a/subgraph.yaml b/subgraph.yaml index af760f5..233ba5a 100644 --- a/subgraph.yaml +++ b/subgraph.yaml @@ -1,4 +1,4 @@ -specVersion: 0.0.2 +specVersion: 0.0.4 description: 721-MarketPlace repository: https://github.com/Data-Nexus/nft-sales-v2 schema: diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..f45f91d --- /dev/null +++ b/yarn.lock @@ -0,0 +1,3664 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" + integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== + dependencies: + "@babel/highlight" "^7.18.6" + +"@babel/helper-validator-identifier@^7.18.6": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@ethersproject/abi@5.0.7": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.7.tgz#79e52452bd3ca2956d0e1c964207a58ad1a0ee7b" + integrity sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw== + dependencies: + "@ethersproject/address" "^5.0.4" + "@ethersproject/bignumber" "^5.0.7" + "@ethersproject/bytes" "^5.0.4" + "@ethersproject/constants" "^5.0.4" + "@ethersproject/hash" "^5.0.4" + "@ethersproject/keccak256" "^5.0.3" + "@ethersproject/logger" "^5.0.5" + "@ethersproject/properties" "^5.0.3" + "@ethersproject/strings" "^5.0.4" + +"@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + +"@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/address@^5.0.4", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + +"@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/bignumber@^5.0.7", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@^5.0.4", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/constants@^5.0.4", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + +"@ethersproject/hash@^5.0.4": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/keccak256@^5.0.3", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@^5.0.5", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + +"@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/properties@^5.0.3", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/strings@^5.0.4", "@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + +"@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@float-capital/float-subgraph-uncrashable@^0.0.0-alpha.4": + version "0.0.0-internal-testing.5" + resolved "https://registry.yarnpkg.com/@float-capital/float-subgraph-uncrashable/-/float-subgraph-uncrashable-0.0.0-internal-testing.5.tgz#060f98440f6e410812766c5b040952d2d02e2b73" + integrity sha512-yZ0H5e3EpAYKokX/AbtplzlvSxEJY7ZfpvQyDzyODkks0hakAAlDG6fQu1SlDJMWorY7bbq1j7fCiFeTWci6TA== + dependencies: + "@rescript/std" "9.0.0" + graphql "^16.6.0" + graphql-import-node "^0.0.5" + js-yaml "^4.1.0" + +"@graphprotocol/graph-cli@^0.50.1": + version "0.50.1" + resolved "https://registry.yarnpkg.com/@graphprotocol/graph-cli/-/graph-cli-0.50.1.tgz#ca44138761e4d111e27c3645dd6bb6ea6e07753e" + integrity sha512-tk3e5NYBwXRuRD1y5+UKTRDv+Hwf3a78qmcpGOpIMjMgIpvDnepApRbqMqxt3Ma/RCRkACp0Kmkt3O5Ey4xlkQ== + dependencies: + "@float-capital/float-subgraph-uncrashable" "^0.0.0-alpha.4" + "@oclif/core" "2.8.4" + "@whatwg-node/fetch" "^0.8.4" + assemblyscript "0.19.23" + binary-install-raw "0.0.13" + chalk "3.0.0" + chokidar "3.5.3" + debug "4.3.4" + docker-compose "0.23.19" + dockerode "2.5.8" + fs-extra "9.1.0" + glob "9.3.5" + gluegun "5.1.2" + graphql "15.5.0" + immutable "4.2.1" + ipfs-http-client "55.0.0" + jayson "4.0.0" + js-yaml "3.14.1" + prettier "1.19.1" + request "2.88.2" + semver "7.4.0" + sync-request "6.1.0" + tmp-promise "3.0.3" + web3-eth-abi "1.7.0" + which "2.0.2" + yaml "1.10.2" + +"@graphprotocol/graph-ts@^0.30.0": + version "0.30.0" + resolved "https://registry.yarnpkg.com/@graphprotocol/graph-ts/-/graph-ts-0.30.0.tgz#591dee3c7d9fc236ad57ce0712779e94aef9a50a" + integrity sha512-h5tJqlsZXglGYM0PcBsBOqof4PT0Fr4Z3QBTYN/IjMF3VvRX2A8/bdpqaAnva+2N0uAfXXwRcwcOcW5O35yzXw== + dependencies: + assemblyscript "0.19.10" + +"@ipld/dag-cbor@^7.0.0": + version "7.0.3" + resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-7.0.3.tgz#aa31b28afb11a807c3d627828a344e5521ac4a1e" + integrity sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA== + dependencies: + cborg "^1.6.0" + multiformats "^9.5.4" + +"@ipld/dag-json@^8.0.1": + version "8.0.11" + resolved "https://registry.yarnpkg.com/@ipld/dag-json/-/dag-json-8.0.11.tgz#8d30cc2dfacb0aef04d327465d3df91e79e8b6ce" + integrity sha512-Pea7JXeYHTWXRTIhBqBlhw7G53PJ7yta3G/sizGEZyzdeEwhZRr0od5IQ0r2ZxOt1Do+2czddjeEPp+YTxDwCA== + dependencies: + cborg "^1.5.4" + multiformats "^9.5.4" + +"@ipld/dag-pb@^2.1.3": + version "2.1.18" + resolved "https://registry.yarnpkg.com/@ipld/dag-pb/-/dag-pb-2.1.18.tgz#12d63e21580e87c75fd1a2c62e375a78e355c16f" + integrity sha512-ZBnf2fuX9y3KccADURG5vb9FaOeMjFkCrNysB0PtftME/4iCTjxfaLoNq/IAh5fTqUOMXvryN6Jyka4ZGuMLIg== + dependencies: + multiformats "^9.5.4" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@oclif/core@2.8.4": + version "2.8.4" + resolved "https://registry.yarnpkg.com/@oclif/core/-/core-2.8.4.tgz#7b453be6d4cd060ff4990bc8e31824a1de308354" + integrity sha512-VlFDhoAJ1RDwcpDF46wAlciWTIryapMUViACttY9GwX6Ci6Lud1awe/pC3k4jad5472XshnPQV4bHAl4a/yxpA== + dependencies: + "@types/cli-progress" "^3.11.0" + ansi-escapes "^4.3.2" + ansi-styles "^4.3.0" + cardinal "^2.1.1" + chalk "^4.1.2" + clean-stack "^3.0.1" + cli-progress "^3.12.0" + debug "^4.3.4" + ejs "^3.1.8" + fs-extra "^9.1.0" + get-package-type "^0.1.0" + globby "^11.1.0" + hyperlinker "^1.0.0" + indent-string "^4.0.0" + is-wsl "^2.2.0" + js-yaml "^3.14.1" + natural-orderby "^2.0.3" + object-treeify "^1.1.33" + password-prompt "^1.1.2" + semver "^7.3.7" + string-width "^4.2.3" + strip-ansi "^6.0.1" + supports-color "^8.1.1" + supports-hyperlinks "^2.2.0" + ts-node "^10.9.1" + tslib "^2.5.0" + widest-line "^3.1.0" + wordwrap "^1.0.0" + wrap-ansi "^7.0.0" + +"@openzeppelin/contracts@^4.5.0": + version "4.9.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.9.0.tgz#683f33b6598970051bc5f0806fd8660da9e018dd" + integrity sha512-DUP74AFGKlic2sQb/CmgrN2aUPMFGxRrmCTUxLHsiU2RzwWqVuMPZBxiAyvlff6Pea77uylAX6B5x9W6evEbhA== + +"@peculiar/asn1-schema@^2.3.6": + version "2.3.6" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.3.6.tgz#3dd3c2ade7f702a9a94dfb395c192f5fa5d6b922" + integrity sha512-izNRxPoaeJeg/AyH8hER6s+H7p4itk+03QCa4sbxI3lNdseQYCuxzgsuNK8bTXChtLTjpJz6NmXKA73qLa3rCA== + dependencies: + asn1js "^3.0.5" + pvtsutils "^1.3.2" + tslib "^2.4.0" + +"@peculiar/json-schema@^1.1.12": + version "1.1.12" + resolved "https://registry.yarnpkg.com/@peculiar/json-schema/-/json-schema-1.1.12.tgz#fe61e85259e3b5ba5ad566cb62ca75b3d3cd5339" + integrity sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w== + dependencies: + tslib "^2.0.0" + +"@peculiar/webcrypto@^1.4.0": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@peculiar/webcrypto/-/webcrypto-1.4.3.tgz#078b3e8f598e847b78683dc3ba65feb5029b93a7" + integrity sha512-VtaY4spKTdN5LjJ04im/d/joXuvLbQdgy5Z4DXF4MFZhQ+MTrejbNMkfZBp1Bs3O5+bFqnJgyGdPuZQflvIa5A== + dependencies: + "@peculiar/asn1-schema" "^2.3.6" + "@peculiar/json-schema" "^1.1.12" + pvtsutils "^1.3.2" + tslib "^2.5.0" + webcrypto-core "^1.7.7" + +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + +"@rescript/std@9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@rescript/std/-/std-9.0.0.tgz#df53f3fa5911cb4e85bd66b92e9e58ddf3e4a7e1" + integrity sha512-zGzFsgtZ44mgL4Xef2gOy1hrRVdrs9mcxCOOKZrIPsmbZW14yTkaF591GXxpQvjXiHtgZ/iA9qLyWH6oSReIxQ== + +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@types/bn.js@^5.1.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.1.tgz#b51e1b55920a4ca26e9285ff79936bbdec910682" + integrity sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g== + dependencies: + "@types/node" "*" + +"@types/cli-progress@^3.11.0": + version "3.11.0" + resolved "https://registry.yarnpkg.com/@types/cli-progress/-/cli-progress-3.11.0.tgz#ec79df99b26757c3d1c7170af8422e0fc95eef7e" + integrity sha512-XhXhBv1R/q2ahF3BM7qT5HLzJNlIL0wbcGyZVjqOTqAybAnsLisd7gy1UCyIqpL+5Iv6XhlSyzjLCnI2sIdbCg== + dependencies: + "@types/node" "*" + +"@types/concat-stream@^1.6.0": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@types/concat-stream/-/concat-stream-1.6.1.tgz#24bcfc101ecf68e886aaedce60dfd74b632a1b74" + integrity sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA== + dependencies: + "@types/node" "*" + +"@types/connect@^3.4.33": + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + dependencies: + "@types/node" "*" + +"@types/form-data@0.0.33": + version "0.0.33" + resolved "https://registry.yarnpkg.com/@types/form-data/-/form-data-0.0.33.tgz#c9ac85b2a5fd18435b8c85d9ecb50e6d6c893ff8" + integrity sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw== + dependencies: + "@types/node" "*" + +"@types/long@^4.0.1": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" + integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== + +"@types/minimatch@^3.0.4": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + +"@types/node@*", "@types/node@>=13.7.0": + version "20.2.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.2.5.tgz#26d295f3570323b2837d322180dfbf1ba156fefb" + integrity sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ== + +"@types/node@^10.0.3": + version "10.17.60" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" + integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== + +"@types/node@^12.12.54": + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + +"@types/node@^8.0.0": + version "8.10.66" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.66.tgz#dd035d409df322acc83dff62a602f12a5783bbb3" + integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/pbkdf2@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" + integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== + dependencies: + "@types/node" "*" + +"@types/qs@^6.2.31": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + +"@types/secp256k1@^4.0.1": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" + integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== + dependencies: + "@types/node" "*" + +"@types/ws@^7.4.4": + version "7.4.7" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" + integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== + dependencies: + "@types/node" "*" + +"@whatwg-node/events@^0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@whatwg-node/events/-/events-0.0.3.tgz#13a65dd4f5893f55280f766e29ae48074927acad" + integrity sha512-IqnKIDWfXBJkvy/k6tzskWTc2NK3LcqHlb+KHGCrjOCH4jfQckRX0NAiIcC/vIqQkzLYw2r2CTSwAxcrtcD6lA== + +"@whatwg-node/fetch@^0.8.4": + version "0.8.8" + resolved "https://registry.yarnpkg.com/@whatwg-node/fetch/-/fetch-0.8.8.tgz#48c6ad0c6b7951a73e812f09dd22d75e9fa18cae" + integrity sha512-CdcjGC2vdKhc13KKxgsc6/616BQ7ooDIgPeTuAiE8qfCnS0mGzcfCOoZXypQSz73nxI+GWc7ZReIAVhxoE1KCg== + dependencies: + "@peculiar/webcrypto" "^1.4.0" + "@whatwg-node/node-fetch" "^0.3.6" + busboy "^1.6.0" + urlpattern-polyfill "^8.0.0" + web-streams-polyfill "^3.2.1" + +"@whatwg-node/node-fetch@^0.3.6": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@whatwg-node/node-fetch/-/node-fetch-0.3.6.tgz#e28816955f359916e2d830b68a64493124faa6d0" + integrity sha512-w9wKgDO4C95qnXZRwZTfCmLWqyRnooGjcIwG0wADWjw9/HN0p7dtvtgSvItZtUyNteEvgTrd8QojNEqV6DAGTA== + dependencies: + "@whatwg-node/events" "^0.0.3" + busboy "^1.6.0" + fast-querystring "^1.1.1" + fast-url-parser "^1.1.3" + tslib "^2.3.1" + +JSONStream@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea" + integrity sha512-mn0KSip7N4e0UDPZHnqDsHECo5uGQrixQKnAskOM1BIB8hd7QKbd6il8IPRPudPHOeHiECoCFqhyMaRO9+nWyA== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +JSONStream@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^8.4.1: + version "8.8.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== + +ajv@^6.12.3: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-escapes@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-escapes@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0, ansi-styles@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansicolors@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" + integrity sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg== + +any-signal@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/any-signal/-/any-signal-2.1.2.tgz#8d48270de0605f8b218cf9abe8e9c6a0e7418102" + integrity sha512-B+rDnWasMi/eWcajPcCWSlYc7muXOrcYrqgyzcdKisl2H/WTlQ0gip1KyQfr0ZlxJdsuWCj/LWwQm7fhyhRfIQ== + dependencies: + abort-controller "^3.0.0" + native-abort-controller "^1.0.3" + +any-signal@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/any-signal/-/any-signal-3.0.1.tgz#49cae34368187a3472e31de28fb5cb1430caa9a6" + integrity sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +apisauce@^2.1.5: + version "2.1.6" + resolved "https://registry.yarnpkg.com/apisauce/-/apisauce-2.1.6.tgz#94887f335bf3d735305fc895c8a191c9c2608a7f" + integrity sha512-MdxR391op/FucS2YQRfB/NMRyCnHEPDd4h17LRIuVYi0BpGmMhpxc0shbOpfs5ahABuBEffNCGal5EcsydbBWg== + dependencies: + axios "^0.21.4" + +app-module-path@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/app-module-path/-/app-module-path-2.2.0.tgz#641aa55dfb7d6a6f0a8141c4b9c0aa50b6c24dd5" + integrity sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ== + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + dependencies: + safer-buffer "~2.1.0" + +asn1js@^3.0.1, asn1js@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-3.0.5.tgz#5ea36820443dbefb51cc7f88a2ebb5b462114f38" + integrity sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ== + dependencies: + pvtsutils "^1.3.2" + pvutils "^1.1.3" + tslib "^2.4.0" + +assemblyscript@0.19.10: + version "0.19.10" + resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.19.10.tgz#7ede6d99c797a219beb4fa4614c3eab9e6343c8e" + integrity sha512-HavcUBXB3mBTRGJcpvaQjmnmaqKHBGREjSPNsIvnAk2f9dj78y4BkMaSSdvBQYWcDDzsHQjyUC8stICFkD1Odg== + dependencies: + binaryen "101.0.0-nightly.20210723" + long "^4.0.0" + +assemblyscript@0.19.23: + version "0.19.23" + resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.19.23.tgz#16ece69f7f302161e2e736a0f6a474e6db72134c" + integrity sha512-fwOQNZVTMga5KRsfY80g7cpOl4PsFQczMwHzdtgoqLXaYhkhavufKb0sB0l3T1DUxpAufA0KNhlbpuuhZUwxMA== + dependencies: + binaryen "102.0.0-nightly.20211028" + long "^5.2.0" + source-map-support "^0.5.20" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== + +async@^3.2.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== + +aws4@^1.8.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" + integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== + +axios@^0.21.1, axios@^0.21.4: + version "0.21.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== + dependencies: + follow-redirects "^1.14.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.2: + version "3.0.9" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== + dependencies: + safe-buffer "^5.0.1" + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== + dependencies: + tweetnacl "^0.14.3" + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +binary-install-raw@0.0.13: + version "0.0.13" + resolved "https://registry.yarnpkg.com/binary-install-raw/-/binary-install-raw-0.0.13.tgz#43a13c6980eb9844e2932eb7a91a56254f55b7dd" + integrity sha512-v7ms6N/H7iciuk6QInon3/n2mu7oRX+6knJ9xFPsJ3rQePgAqcR3CRTwUheFd8SLbiq4LL7Z4G/44L9zscdt9A== + dependencies: + axios "^0.21.1" + rimraf "^3.0.2" + tar "^6.1.0" + +binaryen@101.0.0-nightly.20210723: + version "101.0.0-nightly.20210723" + resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-101.0.0-nightly.20210723.tgz#b6bb7f3501341727681a03866c0856500eec3740" + integrity sha512-eioJNqhHlkguVSbblHOtLqlhtC882SOEPKmNFZaDuz1hzQjolxZ+eu3/kaS10n3sGPONsIZsO7R9fR00UyhEUA== + +binaryen@102.0.0-nightly.20211028: + version "102.0.0-nightly.20211028" + resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-102.0.0-nightly.20211028.tgz#8f1efb0920afd34509e342e37f84313ec936afb2" + integrity sha512-GCJBVB5exbxzzvyt8MGDv/MeUjs6gkXDvf4xOIItRBptYl0Tz5sm1o/uG95YK0L0VeG5ajDu3hRtkBP2kzqC5w== + +bl@^1.0.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" + integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + +blakejs@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== + +blob-to-it@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/blob-to-it/-/blob-to-it-1.0.4.tgz#f6caf7a4e90b7bb9215fa6a318ed6bd8ad9898cb" + integrity sha512-iCmk0W4NdbrWgRRuxOriU8aM5ijeVLI61Zulsmg/lUHNr7pYjoj+U77opLefNagevtrrbMt3JQ5Qip7ar178kA== + dependencies: + browser-readablestream-to-it "^1.0.3" + +bn.js@4.11.6: + version "4.11.6" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== + +bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browser-readablestream-to-it@^1.0.0, browser-readablestream-to-it@^1.0.1, browser-readablestream-to-it@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz#ac3e406c7ee6cdf0a502dd55db33bab97f7fba76" + integrity sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw== + +browserify-aes@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +bs58@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +buffer@^6.0.1, buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +busboy@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + +call-bind@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +cardinal@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-2.1.1.tgz#7cc1055d822d212954d07b085dea251cc7bc5505" + integrity sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw== + dependencies: + ansicolors "~0.3.2" + redeyed "~2.1.0" + +caseless@^0.12.0, caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + +cborg@^1.5.4, cborg@^1.6.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/cborg/-/cborg-1.10.2.tgz#83cd581b55b3574c816f82696307c7512db759a1" + integrity sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug== + +chalk@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^2.0.0, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.2, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^1.0.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +clean-stack@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-3.0.1.tgz#155bf0b2221bf5f4fba89528d24c5953f17fe3a8" + integrity sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg== + dependencies: + escape-string-regexp "4.0.0" + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-progress@^3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.12.0.tgz#807ee14b66bcc086258e444ad0f19e7d42577942" + integrity sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A== + dependencies: + string-width "^4.2.3" + +cli-spinners@^2.2.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.0.tgz#5881d0ad96381e117bbe07ad91f2008fe6ffd8db" + integrity sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g== + +cli-table3@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" + integrity sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ== + dependencies: + object-assign "^4.1.0" + string-width "^4.2.0" + optionalDependencies: + colors "^1.1.2" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colors@1.4.0, colors@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concat-stream@^1.6.0, concat-stream@^1.6.2, concat-stream@~1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" + integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-spawn@7.0.3, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== + dependencies: + assert-plus "^1.0.0" + +debug@4.3.4, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@^3.2.6: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + +delay@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dns-over-http-resolver@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/dns-over-http-resolver/-/dns-over-http-resolver-1.2.3.tgz#194d5e140a42153f55bb79ac5a64dd2768c36af9" + integrity sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA== + dependencies: + debug "^4.3.1" + native-fetch "^3.0.0" + receptacle "^1.3.2" + +docker-compose@0.23.19: + version "0.23.19" + resolved "https://registry.yarnpkg.com/docker-compose/-/docker-compose-0.23.19.tgz#9947726e2fe67bdfa9e8efe1ff15aa0de2e10eb8" + integrity sha512-v5vNLIdUqwj4my80wxFDkNH+4S85zsRuH29SO7dCWVWPCMt/ohZBsGN6g6KXWifT0pzQ7uOxqEKCYCDPJ8Vz4g== + dependencies: + yaml "^1.10.2" + +docker-modem@^1.0.8: + version "1.0.9" + resolved "https://registry.yarnpkg.com/docker-modem/-/docker-modem-1.0.9.tgz#a1f13e50e6afb6cf3431b2d5e7aac589db6aaba8" + integrity sha512-lVjqCSCIAUDZPAZIeyM125HXfNvOmYYInciphNrLrylUtKyW66meAjSPXWchKVzoIYZx69TPnAepVSSkeawoIw== + dependencies: + JSONStream "1.3.2" + debug "^3.2.6" + readable-stream "~1.0.26-4" + split-ca "^1.0.0" + +dockerode@2.5.8: + version "2.5.8" + resolved "https://registry.yarnpkg.com/dockerode/-/dockerode-2.5.8.tgz#1b661e36e1e4f860e25f56e0deabe9f87f1d0acc" + integrity sha512-+7iOUYBeDTScmOmQqpUYQaE7F4vvIt6+gIZNHWhqAQEI887tiPFB9OvXI/HzQYqfUNvukMK+9myLW63oTJPZpw== + dependencies: + concat-stream "~1.6.2" + docker-modem "^1.0.8" + tar-fs "~1.16.3" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ejs@3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a" + integrity sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw== + dependencies: + jake "^10.6.1" + +ejs@^3.1.8: + version "3.1.9" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" + integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== + dependencies: + jake "^10.8.5" + +electron-fetch@^1.7.2: + version "1.9.1" + resolved "https://registry.yarnpkg.com/electron-fetch/-/electron-fetch-1.9.1.tgz#e28bfe78d467de3f2dec884b1d72b8b05322f30f" + integrity sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA== + dependencies: + encoding "^0.1.13" + +elliptic@6.5.4, elliptic@^6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +encoding@^0.1.13: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enquirer@2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +err-code@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920" + integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== + dependencies: + es6-promise "^4.0.3" + +escape-string-regexp@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +esprima@^4.0.0, esprima@~4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +ethereum-bloom-filters@^1.0.6: + version "1.0.10" + resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a" + integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== + dependencies: + js-sha3 "^0.8.0" + +ethereum-cryptography@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" + integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== + dependencies: + "@types/pbkdf2" "^3.0.0" + "@types/secp256k1" "^4.0.1" + blakejs "^1.1.0" + browserify-aes "^1.2.0" + bs58check "^2.1.2" + create-hash "^1.2.0" + create-hmac "^1.1.7" + hash.js "^1.1.7" + keccak "^3.0.0" + pbkdf2 "^3.0.17" + randombytes "^2.1.0" + safe-buffer "^5.1.2" + scrypt-js "^3.0.0" + secp256k1 "^4.0.1" + setimmediate "^1.0.5" + +ethereumjs-util@^7.1.0: + version "7.1.5" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" + integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== + dependencies: + "@types/bn.js" "^5.1.0" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + rlp "^2.2.4" + +ethjs-unit@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" + integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== + dependencies: + bn.js "4.11.6" + number-to-bn "1.7.0" + +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== + +extsprintf@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== + +eyes@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" + integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== + +fast-decode-uri-component@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz#46f8b6c22b30ff7a81357d4f59abfae938202543" + integrity sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg== + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-fifo@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.2.0.tgz#2ee038da2468e8623066dee96958b0c1763aa55a" + integrity sha512-NcvQXt7Cky1cNau15FWy64IjuO8X0JijhTBBrJj1YlxlDfRkJXNaK9RFUjwpfDPzMdv7wB38jr53l9tkNLxnWg== + +fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-querystring@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/fast-querystring/-/fast-querystring-1.1.1.tgz#f4c56ef56b1a954880cfd8c01b83f9e1a3d3fda2" + integrity sha512-qR2r+e3HvhEFmpdHMv//U8FnFlnYjaC6QKDuaXALDkw2kvHO8WDjxH+f/rHGR4Me4pnk8p9JAkRNTjYHAKRn2Q== + dependencies: + fast-decode-uri-component "^1.0.1" + +fast-url-parser@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d" + integrity sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ== + dependencies: + punycode "^1.3.2" + +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + +filelist@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +follow-redirects@^1.14.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== + +form-data@^2.2.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" + integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@9.1.0, fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-jetpack@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/fs-jetpack/-/fs-jetpack-4.3.1.tgz#cdfd4b64e6bfdec7c7dc55c76b39efaa7853bb20" + integrity sha512-dbeOK84F6BiQzk2yqqCVwCPWTxAvVGJ3fMQc6E2wuEohS28mR6yHngbrKuVCK1KHRx/ccByDylqu4H5PCP2urQ== + dependencies: + minimatch "^3.0.2" + rimraf "^2.6.3" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +get-intrinsic@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-proto "^1.0.1" + has-symbols "^1.0.3" + +get-iterator@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-iterator/-/get-iterator-1.0.2.tgz#cd747c02b4c084461fac14f48f6b45a80ed25c82" + integrity sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg== + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-port@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" + integrity sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== + dependencies: + assert-plus "^1.0.0" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@9.3.5: + version "9.3.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21" + integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q== + dependencies: + fs.realpath "^1.0.0" + minimatch "^8.0.2" + minipass "^4.2.4" + path-scurry "^1.6.1" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +gluegun@5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/gluegun/-/gluegun-5.1.2.tgz#ffa0beda0fb6bbc089a867157b08602beae2c8cf" + integrity sha512-Cwx/8S8Z4YQg07a6AFsaGnnnmd8mN17414NcPS3OoDtZRwxgsvwRNJNg69niD6fDa8oNwslCG0xH7rEpRNNE/g== + dependencies: + apisauce "^2.1.5" + app-module-path "^2.2.0" + cli-table3 "0.6.0" + colors "1.4.0" + cosmiconfig "7.0.1" + cross-spawn "7.0.3" + ejs "3.1.6" + enquirer "2.3.6" + execa "5.1.1" + fs-jetpack "4.3.1" + lodash.camelcase "^4.3.0" + lodash.kebabcase "^4.1.1" + lodash.lowercase "^4.3.0" + lodash.lowerfirst "^4.3.1" + lodash.pad "^4.5.1" + lodash.padend "^4.6.1" + lodash.padstart "^4.6.1" + lodash.repeat "^4.1.0" + lodash.snakecase "^4.1.1" + lodash.startcase "^4.4.0" + lodash.trim "^4.5.1" + lodash.trimend "^4.5.1" + lodash.trimstart "^4.5.1" + lodash.uppercase "^4.3.0" + lodash.upperfirst "^4.3.1" + ora "4.0.2" + pluralize "^8.0.0" + semver "7.3.5" + which "2.0.2" + yargs-parser "^21.0.0" + +graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphql-import-node@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/graphql-import-node/-/graphql-import-node-0.0.5.tgz#caf76a6cece10858b14f27cce935655398fc1bf0" + integrity sha512-OXbou9fqh9/Lm7vwXT0XoRN9J5+WCYKnbiTalgFDvkQERITRmcfncZs6aVABedd5B85yQU5EULS4a5pnbpuI0Q== + +graphql@15.5.0: + version "15.5.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.5.0.tgz#39d19494dbe69d1ea719915b578bf920344a69d5" + integrity sha512-OmaM7y0kaK31NKG31q4YbD2beNYa6jBBKtMFT6gLYJljHLJr42IqJ8KX08u3Li/0ifzTU5HjmoOOrwa5BRLeDA== + +graphql@^16.6.0: + version "16.6.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.6.0.tgz#c2dcffa4649db149f6282af726c8c83f1c7c5fdb" + integrity sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +http-basic@^8.1.1: + version "8.1.3" + resolved "https://registry.yarnpkg.com/http-basic/-/http-basic-8.1.3.tgz#a7cabee7526869b9b710136970805b1004261bbf" + integrity sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw== + dependencies: + caseless "^0.12.0" + concat-stream "^1.6.2" + http-response-object "^3.0.1" + parse-cache-control "^1.0.1" + +http-response-object@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/http-response-object/-/http-response-object-3.0.2.tgz#7f435bb210454e4360d074ef1f989d5ea8aa9810" + integrity sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA== + dependencies: + "@types/node" "^10.0.3" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +hyperlinker@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hyperlinker/-/hyperlinker-1.0.0.tgz#23dc9e38a206b208ee49bc2d6c8ef47027df0c0e" + integrity sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ== + +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.2.0: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + +immutable@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.2.1.tgz#8a4025691018c560a40c67e43d698f816edc44d4" + integrity sha512-7WYV7Q5BTs0nlQm7tl92rDYYoyELLKHoDMBKhrxEoiV4mrfVdRz8hzPiYOzH7yWjzoVEamxRuAqhxL2PLRwZYQ== + +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +interface-datastore@^6.0.2: + version "6.1.1" + resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-6.1.1.tgz#5150a00de2e7513eaadba58bcafd059cb50004c1" + integrity sha512-AmCS+9CT34pp2u0QQVXjKztkuq3y5T+BIciuiHDDtDZucZD8VudosnSdUyXJV6IsRkN5jc4RFDhCk1O6Q3Gxjg== + dependencies: + interface-store "^2.0.2" + nanoid "^3.0.2" + uint8arrays "^3.0.0" + +interface-store@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-2.0.2.tgz#83175fd2b0c501585ed96db54bb8ba9d55fce34c" + integrity sha512-rScRlhDcz6k199EkHqT8NpM87ebN89ICOzILoBHgaG36/WX50N32BnU/kpZgCGPLhARRAWUUX5/cyaIjt7Kipg== + +ip-regex@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" + integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== + +ipfs-core-types@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/ipfs-core-types/-/ipfs-core-types-0.9.0.tgz#cb201ff7a9470651ba14c4e7fae56661a55bf37e" + integrity sha512-VJ8vJSHvI1Zm7/SxsZo03T+zzpsg8pkgiIi5hfwSJlsrJ1E2v68QPlnLshGHUSYw89Oxq0IbETYl2pGTFHTWfg== + dependencies: + interface-datastore "^6.0.2" + multiaddr "^10.0.0" + multiformats "^9.4.13" + +ipfs-core-utils@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/ipfs-core-utils/-/ipfs-core-utils-0.13.0.tgz#8f0ec9aaa7c24f6f307e6e76e7bdc1cefd829894" + integrity sha512-HP5EafxU4/dLW3U13CFsgqVO5Ika8N4sRSIb/dTg16NjLOozMH31TXV0Grtu2ZWo1T10ahTzMvrfT5f4mhioXw== + dependencies: + any-signal "^2.1.2" + blob-to-it "^1.0.1" + browser-readablestream-to-it "^1.0.1" + debug "^4.1.1" + err-code "^3.0.1" + ipfs-core-types "^0.9.0" + ipfs-unixfs "^6.0.3" + ipfs-utils "^9.0.2" + it-all "^1.0.4" + it-map "^1.0.4" + it-peekable "^1.0.2" + it-to-stream "^1.0.0" + merge-options "^3.0.4" + multiaddr "^10.0.0" + multiaddr-to-uri "^8.0.0" + multiformats "^9.4.13" + nanoid "^3.1.23" + parse-duration "^1.0.0" + timeout-abort-controller "^2.0.0" + uint8arrays "^3.0.0" + +ipfs-http-client@55.0.0: + version "55.0.0" + resolved "https://registry.yarnpkg.com/ipfs-http-client/-/ipfs-http-client-55.0.0.tgz#8b713c5fa318e873b7d7ad099a4eb14320a5b0ce" + integrity sha512-GpvEs7C7WL9M6fN/kZbjeh4Y8YN7rY8b18tVWZnKxRsVwM25cIFrRI8CwNt3Ugin9yShieI3i9sPyzYGMrLNnQ== + dependencies: + "@ipld/dag-cbor" "^7.0.0" + "@ipld/dag-json" "^8.0.1" + "@ipld/dag-pb" "^2.1.3" + abort-controller "^3.0.0" + any-signal "^2.1.2" + debug "^4.1.1" + err-code "^3.0.1" + ipfs-core-types "^0.9.0" + ipfs-core-utils "^0.13.0" + ipfs-utils "^9.0.2" + it-first "^1.0.6" + it-last "^1.0.4" + merge-options "^3.0.4" + multiaddr "^10.0.0" + multiformats "^9.4.13" + native-abort-controller "^1.0.3" + parse-duration "^1.0.0" + stream-to-it "^0.2.2" + uint8arrays "^3.0.0" + +ipfs-unixfs@^6.0.3: + version "6.0.9" + resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-6.0.9.tgz#f6613b8e081d83faa43ed96e016a694c615a9374" + integrity sha512-0DQ7p0/9dRB6XCb0mVCTli33GzIzSVx5udpJuVM47tGcD+W+Bl4LsnoLswd3ggNnNEakMv1FdoFITiEnchXDqQ== + dependencies: + err-code "^3.0.1" + protobufjs "^6.10.2" + +ipfs-utils@^9.0.2: + version "9.0.14" + resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-9.0.14.tgz#24f5fda1f4567685eb32bca2543d518f95fd8704" + integrity sha512-zIaiEGX18QATxgaS0/EOQNoo33W0islREABAcxXE8n7y2MGAlB+hdsxXn4J0hGZge8IqVQhW8sWIb+oJz2yEvg== + dependencies: + any-signal "^3.0.0" + browser-readablestream-to-it "^1.0.0" + buffer "^6.0.1" + electron-fetch "^1.7.2" + err-code "^3.0.1" + is-electron "^2.2.0" + iso-url "^1.1.5" + it-all "^1.0.4" + it-glob "^1.0.1" + it-to-stream "^1.0.0" + merge-options "^3.0.4" + nanoid "^3.1.20" + native-fetch "^3.0.0" + node-fetch "^2.6.8" + react-native-fetch-api "^3.0.0" + stream-to-it "^0.2.2" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-docker@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-electron@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.2.tgz#3778902a2044d76de98036f5dc58089ac4d80bb9" + integrity sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-hex-prefixed@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" + integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-ip@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" + integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== + dependencies: + ip-regex "^4.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +iso-url@^1.1.5: + version "1.2.1" + resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-1.2.1.tgz#db96a49d8d9a64a1c889fc07cc525d093afb1811" + integrity sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng== + +isomorphic-ws@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" + integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + +it-all@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/it-all/-/it-all-1.0.6.tgz#852557355367606295c4c3b7eff0136f07749335" + integrity sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A== + +it-first@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/it-first/-/it-first-1.0.7.tgz#a4bef40da8be21667f7d23e44dae652f5ccd7ab1" + integrity sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g== + +it-glob@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/it-glob/-/it-glob-1.0.2.tgz#bab9b04d6aaac42884502f3a0bfee84c7a29e15e" + integrity sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q== + dependencies: + "@types/minimatch" "^3.0.4" + minimatch "^3.0.4" + +it-last@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/it-last/-/it-last-1.0.6.tgz#4106232e5905ec11e16de15a0e9f7037eaecfc45" + integrity sha512-aFGeibeiX/lM4bX3JY0OkVCFkAw8+n9lkukkLNivbJRvNz8lI3YXv5xcqhFUV2lDJiraEK3OXRDbGuevnnR67Q== + +it-map@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/it-map/-/it-map-1.0.6.tgz#6aa547e363eedcf8d4f69d8484b450bc13c9882c" + integrity sha512-XT4/RM6UHIFG9IobGlQPFQUrlEKkU4eBUFG3qhWhfAdh1JfF2x11ShCrKCdmZ0OiZppPfoLuzcfA4cey6q3UAQ== + +it-peekable@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/it-peekable/-/it-peekable-1.0.3.tgz#8ebe933767d9c5aa0ae4ef8e9cb3a47389bced8c" + integrity sha512-5+8zemFS+wSfIkSZyf0Zh5kNN+iGyccN02914BY4w/Dj+uoFEoPSvj5vaWn8pNZJNSxzjW0zHRxC3LUb2KWJTQ== + +it-to-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/it-to-stream/-/it-to-stream-1.0.0.tgz#6c47f91d5b5df28bda9334c52782ef8e97fe3a4a" + integrity sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA== + dependencies: + buffer "^6.0.3" + fast-fifo "^1.0.0" + get-iterator "^1.0.2" + p-defer "^3.0.0" + p-fifo "^1.0.0" + readable-stream "^3.6.0" + +jake@^10.6.1, jake@^10.8.5: + version "10.8.7" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.7.tgz#63a32821177940c33f356e0ba44ff9d34e1c7d8f" + integrity sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.4" + minimatch "^3.1.2" + +jayson@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.0.0.tgz#145a0ced46f900934c9b307e1332bcb0c7dbdb17" + integrity sha512-v2RNpDCMu45fnLzSk47vx7I+QUaOsox6f5X0CUlabAFwxoP+8MfAY0NQRFwOEYXIxm8Ih5y6OaEa5KYiQMkyAA== + dependencies: + "@types/connect" "^3.4.33" + "@types/node" "^12.12.54" + "@types/ws" "^7.4.4" + JSONStream "^1.3.5" + commander "^2.20.3" + delay "^5.0.0" + es6-promisify "^5.0.0" + eyes "^0.1.8" + isomorphic-ws "^4.0.1" + json-stringify-safe "^5.0.1" + uuid "^8.3.2" + ws "^7.4.5" + +js-sha3@0.8.0, js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@3.14.1, js-yaml@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + +jsprim@^1.2.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" + +keccak@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.3.tgz#4bc35ad917be1ef54ff246f904c2bbbf9ac61276" + integrity sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +lodash.kebabcase@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" + integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== + +lodash.lowercase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.lowercase/-/lodash.lowercase-4.3.0.tgz#46515aced4acb0b7093133333af068e4c3b14e9d" + integrity sha512-UcvP1IZYyDKyEL64mmrwoA1AbFu5ahojhTtkOUr1K9dbuxzS9ev8i4TxMMGCqRC9TE8uDaSoufNAXxRPNTseVA== + +lodash.lowerfirst@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/lodash.lowerfirst/-/lodash.lowerfirst-4.3.1.tgz#de3c7b12e02c6524a0059c2f6cb7c5c52655a13d" + integrity sha512-UUKX7VhP1/JL54NXg2aq/E1Sfnjjes8fNYTNkPU8ZmsaVeBvPHKdbNaN79Re5XRL01u6wbq3j0cbYZj71Fcu5w== + +lodash.pad@^4.5.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70" + integrity sha512-mvUHifnLqM+03YNzeTBS1/Gr6JRFjd3rRx88FHWUvamVaT9k2O/kXha3yBSOwB9/DTQrSTLJNHvLBBt2FdX7Mg== + +lodash.padend@^4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" + integrity sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw== + +lodash.padstart@^4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" + integrity sha512-sW73O6S8+Tg66eY56DBk85aQzzUJDtpoXFBgELMd5P/SotAguo+1kYO6RuYgXxA4HJH3LFTFPASX6ET6bjfriw== + +lodash.repeat@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/lodash.repeat/-/lodash.repeat-4.1.0.tgz#fc7de8131d8c8ac07e4b49f74ffe829d1f2bec44" + integrity sha512-eWsgQW89IewS95ZOcr15HHCX6FVDxq3f2PNUIng3fyzsPev9imFQxIYdFZ6crl8L56UR6ZlGDLcEb3RZsCSSqw== + +lodash.snakecase@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" + integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== + +lodash.startcase@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" + integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== + +lodash.trim@^4.5.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/lodash.trim/-/lodash.trim-4.5.1.tgz#36425e7ee90be4aa5e27bcebb85b7d11ea47aa57" + integrity sha512-nJAlRl/K+eiOehWKDzoBVrSMhK0K3A3YQsUNXHQa5yIrKBAhsZgSu3KoAFoFT+mEgiyBHddZ0pRk1ITpIp90Wg== + +lodash.trimend@^4.5.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/lodash.trimend/-/lodash.trimend-4.5.1.tgz#12804437286b98cad8996b79414e11300114082f" + integrity sha512-lsD+k73XztDsMBKPKvzHXRKFNMohTjoTKIIo4ADLn5dA65LZ1BqlAvSXhR2rPEC3BgAUQnzMnorqDtqn2z4IHA== + +lodash.trimstart@^4.5.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/lodash.trimstart/-/lodash.trimstart-4.5.1.tgz#8ff4dec532d82486af59573c39445914e944a7f1" + integrity sha512-b/+D6La8tU76L/61/aN0jULWHkT0EeJCmVstPBn/K9MtD2qBW83AsBNrr63dKuWYwVMO7ucv13QNO/Ek/2RKaQ== + +lodash.uppercase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.uppercase/-/lodash.uppercase-4.3.0.tgz#c404abfd1469f93931f9bb24cf6cc7d57059bc73" + integrity sha512-+Nbnxkj7s8K5U8z6KnEYPGUOGp3woZbB7Ecs7v3LkkjLQSm2kP9SKIILitN1ktn2mB/tmM9oSlku06I+/lH7QA== + +lodash.upperfirst@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" + integrity sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg== + +log-symbols@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" + integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== + dependencies: + chalk "^2.4.2" + +long@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== + +long@^5.2.0: + version "5.2.3" + resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" + integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lru-cache@^9.1.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-9.1.1.tgz#c58a93de58630b688de39ad04ef02ef26f1902f1" + integrity sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A== + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +merge-options@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7" + integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ== + dependencies: + is-plain-obj "^2.1.0" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@~2.1.19: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^8.0.2: + version "8.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229" + integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +minipass@^3.0.0: + version "3.3.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^4.2.4: + version "4.2.8" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" + integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + +"minipass@^5.0.0 || ^6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-6.0.2.tgz#542844b6c4ce95b202c0995b0a471f1229de4c81" + integrity sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w== + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multiaddr-to-uri@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/multiaddr-to-uri/-/multiaddr-to-uri-8.0.0.tgz#65efe4b1f9de5f6b681aa42ff36a7c8db7625e58" + integrity sha512-dq4p/vsOOUdVEd1J1gl+R2GFrXJQH8yjLtz4hodqdVbieg39LvBOdMQRdQnfbg5LSM/q1BYNVf5CBbwZFFqBgA== + dependencies: + multiaddr "^10.0.0" + +multiaddr@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/multiaddr/-/multiaddr-10.0.1.tgz#0d15848871370860a4d266bb44d93b3dac5d90ef" + integrity sha512-G5upNcGzEGuTHkzxezPrrD6CaIHR9uo+7MwqhNVcXTs33IInon4y7nMiGxl2CY5hG7chvYQUQhz5V52/Qe3cbg== + dependencies: + dns-over-http-resolver "^1.2.3" + err-code "^3.0.1" + is-ip "^3.1.0" + multiformats "^9.4.5" + uint8arrays "^3.0.0" + varint "^6.0.0" + +multiformats@^9.4.13, multiformats@^9.4.2, multiformats@^9.4.5, multiformats@^9.5.4: + version "9.9.0" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" + integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== + +nanoid@^3.0.2, nanoid@^3.1.20, nanoid@^3.1.23: + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + +native-abort-controller@^1.0.3, native-abort-controller@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/native-abort-controller/-/native-abort-controller-1.0.4.tgz#39920155cc0c18209ff93af5bc90be856143f251" + integrity sha512-zp8yev7nxczDJMoP6pDxyD20IU0T22eX8VwN2ztDccKvSZhRaV33yP1BGwKSZfXuqWUzsXopVFjBdau9OOAwMQ== + +native-fetch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-3.0.0.tgz#06ccdd70e79e171c365c75117959cf4fe14a09bb" + integrity sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw== + +natural-orderby@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/natural-orderby/-/natural-orderby-2.0.3.tgz#8623bc518ba162f8ff1cdb8941d74deb0fdcc016" + integrity sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-fetch@^2.6.8: + version "2.6.11" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.11.tgz#cde7fc71deef3131ef80a738919f999e6edfff25" + integrity sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w== + dependencies: + whatwg-url "^5.0.0" + +node-gyp-build@^4.2.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" + integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +number-to-bn@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" + integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== + dependencies: + bn.js "4.11.6" + strip-hex-prefix "1.0.0" + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + +object-treeify@^1.1.33: + version "1.1.33" + resolved "https://registry.yarnpkg.com/object-treeify/-/object-treeify-1.1.33.tgz#f06fece986830a3cba78ddd32d4c11d1f76cdf40" + integrity sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +ora@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/ora/-/ora-4.0.2.tgz#0e1e68fd45b135d28648b27cf08081fa6e8a297d" + integrity sha512-YUOZbamht5mfLxPmk4M35CD/5DuOkAacxlEUbStVXpBAt4fyhBf+vZHI/HRkI++QUp3sNoeA2Gw4C+hi4eGSig== + dependencies: + chalk "^2.4.2" + cli-cursor "^3.1.0" + cli-spinners "^2.2.0" + is-interactive "^1.0.0" + log-symbols "^3.0.0" + strip-ansi "^5.2.0" + wcwidth "^1.0.1" + +p-defer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" + integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== + +p-fifo@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-fifo/-/p-fifo-1.0.0.tgz#e29d5cf17c239ba87f51dde98c1d26a9cfe20a63" + integrity sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A== + dependencies: + fast-fifo "^1.0.0" + p-defer "^3.0.0" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-cache-control@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-cache-control/-/parse-cache-control-1.0.1.tgz#8eeab3e54fa56920fe16ba38f77fa21aacc2d74e" + integrity sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg== + +parse-duration@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/parse-duration/-/parse-duration-1.0.3.tgz#b6681f5edcc2689643b34c09ea63f86f58a35814" + integrity sha512-o6NAh12na5VvR6nFejkU0gpQ8jmOY9Y9sTU2ke3L3G/d/3z8jqmbBbeyBGHU73P4JLXfc7tJARygIK3WGIkloA== + +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +password-prompt@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/password-prompt/-/password-prompt-1.1.2.tgz#85b2f93896c5bd9e9f2d6ff0627fa5af3dc00923" + integrity sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA== + dependencies: + ansi-escapes "^3.1.0" + cross-spawn "^6.0.5" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-scurry@^1.6.1: + version "1.9.2" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.9.2.tgz#90f9d296ac5e37e608028e28a447b11d385b3f63" + integrity sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg== + dependencies: + lru-cache "^9.1.1" + minipass "^5.0.0 || ^6.0.2" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pbkdf2@^3.0.17: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pluralize@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== + +prettier@1.19.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" + integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +promise@^8.0.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.3.0.tgz#8cb333d1edeb61ef23869fbb8a4ea0279ab60e0a" + integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== + dependencies: + asap "~2.0.6" + +protobufjs@^6.10.2: + version "6.11.3" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.3.tgz#637a527205a35caa4f3e2a9a4a13ddffe0e7af74" + integrity sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/long" "^4.0.1" + "@types/node" ">=13.7.0" + long "^4.0.0" + +psl@^1.1.28: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + +pump@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" + integrity sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^1.3.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== + +punycode@^2.1.0, punycode@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +pvtsutils@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.3.2.tgz#9f8570d132cdd3c27ab7d51a2799239bf8d8d5de" + integrity sha512-+Ipe2iNUyrZz+8K/2IOo+kKikdtfhRKzNpQbruF2URmqPtoqAs8g3xS7TJvFF2GcPXjh7DkqMnpVveRFq4PgEQ== + dependencies: + tslib "^2.4.0" + +pvutils@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.1.3.tgz#f35fc1d27e7cd3dfbd39c0826d173e806a03f5a3" + integrity sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ== + +qs@^6.4.0: + version "6.11.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" + integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== + dependencies: + side-channel "^1.0.4" + +qs@~6.5.2: + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +react-native-fetch-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/react-native-fetch-api/-/react-native-fetch-api-3.0.0.tgz#81e1bb6562c292521bc4eca52fe1097f4c1ebab5" + integrity sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA== + dependencies: + p-defer "^3.0.0" + +readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@~1.0.26-4: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +receptacle@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/receptacle/-/receptacle-1.3.2.tgz#a7994c7efafc7a01d0e2041839dab6c4951360d2" + integrity sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A== + dependencies: + ms "^2.1.1" + +redeyed@~2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-2.1.1.tgz#8984b5815d99cb220469c99eeeffe38913e6cc0b" + integrity sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ== + dependencies: + esprima "~4.0.0" + +request@2.88.2: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +retimer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/retimer/-/retimer-3.0.0.tgz#98b751b1feaf1af13eb0228f8ea68b8f9da530df" + integrity sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rlp@^2.2.4: + version "2.2.7" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" + integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== + dependencies: + bn.js "^5.2.0" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +scrypt-js@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +secp256k1@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" + integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== + dependencies: + elliptic "^6.5.4" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + +semver@7.3.5: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + +semver@7.4.0: + version "7.4.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.4.0.tgz#8481c92feffc531ab1e012a8ffc15bdd3a0f4318" + integrity sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw== + dependencies: + lru-cache "^6.0.0" + +semver@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^7.3.7: + version "7.5.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" + integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw== + dependencies: + lru-cache "^6.0.0" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +source-map-support@^0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +split-ca@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/split-ca/-/split-ca-1.0.1.tgz#6c83aff3692fa61256e0cd197e05e9de157691a6" + integrity sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +sshpk@^1.7.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +stream-to-it@^0.2.2: + version "0.2.4" + resolved "https://registry.yarnpkg.com/stream-to-it/-/stream-to-it-0.2.4.tgz#d2fd7bfbd4a899b4c0d6a7e6a533723af5749bd0" + integrity sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ== + dependencies: + get-iterator "^1.0.2" + +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-hex-prefix@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" + integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== + dependencies: + is-hex-prefixed "1.0.0" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" + integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +sync-request@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/sync-request/-/sync-request-6.1.0.tgz#e96217565b5e50bbffe179868ba75532fb597e68" + integrity sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw== + dependencies: + http-response-object "^3.0.1" + sync-rpc "^1.2.1" + then-request "^6.0.0" + +sync-rpc@^1.2.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/sync-rpc/-/sync-rpc-1.3.6.tgz#b2e8b2550a12ccbc71df8644810529deb68665a7" + integrity sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw== + dependencies: + get-port "^3.1.0" + +tar-fs@~1.16.3: + version "1.16.3" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509" + integrity sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw== + dependencies: + chownr "^1.0.1" + mkdirp "^0.5.1" + pump "^1.0.0" + tar-stream "^1.1.2" + +tar-stream@^1.1.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" + integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== + dependencies: + bl "^1.0.0" + buffer-alloc "^1.2.0" + end-of-stream "^1.0.0" + fs-constants "^1.0.0" + readable-stream "^2.3.0" + to-buffer "^1.1.1" + xtend "^4.0.0" + +tar@^6.1.0: + version "6.1.15" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.15.tgz#c9738b0b98845a3b344d334b8fa3041aaba53a69" + integrity sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^5.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +then-request@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/then-request/-/then-request-6.0.2.tgz#ec18dd8b5ca43aaee5cb92f7e4c1630e950d4f0c" + integrity sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA== + dependencies: + "@types/concat-stream" "^1.6.0" + "@types/form-data" "0.0.33" + "@types/node" "^8.0.0" + "@types/qs" "^6.2.31" + caseless "~0.12.0" + concat-stream "^1.6.0" + form-data "^2.2.0" + http-basic "^8.1.1" + http-response-object "^3.0.1" + promise "^8.0.0" + qs "^6.4.0" + +"through@>=2.2.7 <3": + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +timeout-abort-controller@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/timeout-abort-controller/-/timeout-abort-controller-2.0.0.tgz#d6a59209132e520413092dd4b4d71eaaf5887feb" + integrity sha512-2FAPXfzTPYEgw27bQGTHc0SzrbmnU2eso4qo172zMLZzaGqeu09PFa5B2FCUHM1tflgRqPgn5KQgp6+Vex4uNA== + dependencies: + abort-controller "^3.0.0" + native-abort-controller "^1.0.4" + retimer "^3.0.0" + +tmp-promise@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7" + integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ== + dependencies: + tmp "^0.2.0" + +tmp@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + +to-buffer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" + integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +ts-node@^10.9.1: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tslib@^2.0.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5.0: + version "2.5.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338" + integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA== + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + +uint8arrays@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" + integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== + dependencies: + multiformats "^9.4.2" + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urlpattern-polyfill@^8.0.0: + version "8.0.2" + resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz#99f096e35eff8bf4b5a2aa7d58a1523d6ebc7ce5" + integrity sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ== + +utf8@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" + integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +varint@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" + integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +web-streams-polyfill@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" + integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== + +web3-eth-abi@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.7.0.tgz#4fac9c7d9e5a62b57f8884b37371f515c766f3f4" + integrity sha512-heqR0bWxgCJwjWIhq2sGyNj9bwun5+Xox/LdZKe+WMyTSy0cXDXEAgv3XKNkXC4JqdDt/ZlbTEx4TWak4TRMSg== + dependencies: + "@ethersproject/abi" "5.0.7" + web3-utils "1.7.0" + +web3-utils@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.7.0.tgz#c59f0fd43b2449357296eb54541810b99b1c771c" + integrity sha512-O8Tl4Ky40Sp6pe89Olk2FsaUkgHyb5QAXuaKo38ms3CxZZ4d3rPGfjP9DNKGm5+IUgAZBNpF1VmlSmNCqfDI1w== + dependencies: + bn.js "^4.11.9" + ethereum-bloom-filters "^1.0.6" + ethereumjs-util "^7.1.0" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + +webcrypto-core@^1.7.7: + version "1.7.7" + resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.7.7.tgz#06f24b3498463e570fed64d7cab149e5437b162c" + integrity sha512-7FjigXNsBfopEj+5DV2nhNpfic2vumtjjgPmeDKk45z+MJwXKKfhPB7118Pfzrmh4jqOMST6Ch37iPAHoImg5g== + dependencies: + "@peculiar/asn1-schema" "^2.3.6" + "@peculiar/json-schema" "^1.1.12" + asn1js "^3.0.1" + pvtsutils "^1.3.2" + tslib "^2.4.0" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which@2.0.2, which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@^7.4.5: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@1.10.2, yaml@^1.10.0, yaml@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@^21.0.0: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== From f8e754b09bea471a78af8c0557cb02afed200709 Mon Sep 17 00:00:00 2001 From: Kent Theo Fourie <42357713+GundamDweeb@users.noreply.github.com> Date: Sun, 28 May 2023 02:18:46 +0200 Subject: [PATCH 2/2] linting --- src/eip721/index.ts | 211 +++++++------- src/graphprotocol-utils.ts | 138 +++++---- src/marketplaces/LooksRareMappings.ts | 199 ++++++------- src/marketplaces/OpenSeaV1Mapping.ts | 119 ++++---- src/marketplaces/X2Y2Mappings.ts | 101 +++---- src/utils/erc165.ts | 31 +- src/utils/erc721.ts | 153 +++++----- src/utils/matchTransferSale.ts | 402 ++++++++++++++------------ src/utils/wethUtil.ts | 46 ++- 9 files changed, 705 insertions(+), 695 deletions(-) diff --git a/src/eip721/index.ts b/src/eip721/index.ts index dc2ecc9..283ee0c 100644 --- a/src/eip721/index.ts +++ b/src/eip721/index.ts @@ -1,108 +1,111 @@ import { - account, - transfer, - transaction, - accountCollection, -} from '../../generated/schema' - -import { - Transfer as TransferEvent, -} from '../../generated/IERC721/IERC721' - -import { - fetchRegistry, - fetchToken, -} from '../utils/erc721' - -import { - constants, - events, - transactions, -} from '../../src/graphprotocol-utils' - -import { store } from '@graphprotocol/graph-ts' + account, + transfer, + transaction, + accountCollection, +} from "../../generated/schema"; +import { Transfer as TransferEvent } from "../../generated/IERC721/IERC721"; +import { fetchRegistry, fetchToken } from "../utils/erc721"; +import { constants, events, transactions } from "../../src/graphprotocol-utils"; +import { store } from "@graphprotocol/graph-ts"; export function handleTransfer(event: TransferEvent): void { - - let collection = fetchRegistry(event.address, event.block.timestamp, event.block.number) - if (collection != null) - { - let token = fetchToken(collection, event.params.tokenId) - - - let senderAddress = account.load(event.params.from.toHexString()) - if (!senderAddress) { - senderAddress = new account(event.params.from.toHexString()) - } - - let receiverAddress = account.load(event.params.to.toHexString()) - if (!receiverAddress) { - receiverAddress = new account(event.params.to.toHexString()) - } - - let senderAccountCollection = accountCollection.load(senderAddress.id + '-' + collection.id) - if (senderAccountCollection && senderAddress.id != "0x0000000000000000000000000000000000000000") { - - let senderTokenCountNew = senderAccountCollection.tokenCount - 1 - senderAccountCollection.tokenCount = senderTokenCountNew - senderAccountCollection.save() - - if(senderAccountCollection.tokenCount == 0) {store.remove("accountCollection",senderAddress.id + '-' + collection.id)} - } - - let receiverAccountCollection = accountCollection.load(receiverAddress.id + '-' + collection.id) - if (receiverAccountCollection && receiverAddress.id != "0x0000000000000000000000000000000000000000") { - - let receiverTokenCountNew = receiverAccountCollection.tokenCount + 1 - - receiverAccountCollection.tokenCount = receiverTokenCountNew - receiverAccountCollection.save() - - } - if (!receiverAccountCollection && receiverAddress.id != "0x0000000000000000000000000000000000000000") { - - receiverAccountCollection = new accountCollection(receiverAddress.id + '-' + collection.id) - receiverAccountCollection.account = receiverAddress.id - receiverAccountCollection.collection = collection.id - receiverAccountCollection.tokenCount = 1 - - receiverAccountCollection.save() - } - - token.owner = receiverAddress.id - - collection.save() - token.save() - senderAddress.save() - receiverAddress.save() - - let transferEntity = new transfer(events.id(event)) - transferEntity.transaction = transactions.log(event).id - transferEntity.token = token.id - transferEntity.collection = collection.id - transferEntity.senderAddress = senderAddress.id - transferEntity.receiverAddress = receiverAddress.id - transferEntity.blockNumber = event.block.number.toI32() - transferEntity.timestamp = event.block.timestamp.toI32() - transferEntity.amount = constants.BIGDECIMAL_ZERO - transferEntity.save() - - let tx = transaction.load(event.transaction.hash.toHexString()) - if (tx != null - && transferEntity.senderAddress != '0x83c8f28c26bf6aaca652df1dbbe0e1b56f8baba2' //Gem.xyz Aggregator - && transferEntity.senderAddress != '0x0a267cf51ef038fc00e71801f5a524aec06e4f07' //Genie Aggregator - ) { - - let transferArray = tx.transfers - transferArray.push(transferEntity.id) - - let newTransferCount = tx.unmatchedTransferCount + 1 - tx.unmatchedTransferCount = newTransferCount - tx.transfers = transferArray - tx.save() - - } - - } - + let collection = fetchRegistry( + event.address, + event.block.timestamp, + event.block.number + ); + if (collection != null) { + let token = fetchToken(collection, event.params.tokenId); + + let senderAddress = account.load(event.params.from.toHexString()); + if (!senderAddress) { + senderAddress = new account(event.params.from.toHexString()); + } + + let receiverAddress = account.load(event.params.to.toHexString()); + if (!receiverAddress) { + receiverAddress = new account(event.params.to.toHexString()); + } + + let senderAccountCollection = accountCollection.load( + senderAddress.id + "-" + collection.id + ); + if ( + senderAccountCollection && + senderAddress.id != "0x0000000000000000000000000000000000000000" + ) { + let senderTokenCountNew = senderAccountCollection.tokenCount - 1; + senderAccountCollection.tokenCount = senderTokenCountNew; + senderAccountCollection.save(); + + if (senderAccountCollection.tokenCount == 0) { + store.remove( + "accountCollection", + senderAddress.id + "-" + collection.id + ); + } + } + + let receiverAccountCollection = accountCollection.load( + receiverAddress.id + "-" + collection.id + ); + if ( + receiverAccountCollection && + receiverAddress.id != "0x0000000000000000000000000000000000000000" + ) { + let receiverTokenCountNew = receiverAccountCollection.tokenCount + 1; + + receiverAccountCollection.tokenCount = receiverTokenCountNew; + receiverAccountCollection.save(); + } + if ( + !receiverAccountCollection && + receiverAddress.id != "0x0000000000000000000000000000000000000000" + ) { + receiverAccountCollection = new accountCollection( + receiverAddress.id + "-" + collection.id + ); + receiverAccountCollection.account = receiverAddress.id; + receiverAccountCollection.collection = collection.id; + receiverAccountCollection.tokenCount = 1; + + receiverAccountCollection.save(); + } + + token.owner = receiverAddress.id; + + collection.save(); + token.save(); + senderAddress.save(); + receiverAddress.save(); + + let transferEntity = new transfer(events.id(event)); + transferEntity.transaction = transactions.log(event).id; + transferEntity.token = token.id; + transferEntity.collection = collection.id; + transferEntity.senderAddress = senderAddress.id; + transferEntity.receiverAddress = receiverAddress.id; + transferEntity.blockNumber = event.block.number.toI32(); + transferEntity.timestamp = event.block.timestamp.toI32(); + transferEntity.amount = constants.BIGDECIMAL_ZERO; + transferEntity.save(); + + let tx = transaction.load(event.transaction.hash.toHexString()); + if ( + tx != null && + transferEntity.senderAddress != + "0x83c8f28c26bf6aaca652df1dbbe0e1b56f8baba2" && //Gem.xyz Aggregator + transferEntity.senderAddress != + "0x0a267cf51ef038fc00e71801f5a524aec06e4f07" //Genie Aggregator + ) { + let transferArray = tx.transfers; + transferArray.push(transferEntity.id); + + let newTransferCount = tx.unmatchedTransferCount + 1; + tx.unmatchedTransferCount = newTransferCount; + tx.transfers = transferArray; + tx.save(); + } + } } diff --git a/src/graphprotocol-utils.ts b/src/graphprotocol-utils.ts index 8ce1d74..1b27065 100644 --- a/src/graphprotocol-utils.ts +++ b/src/graphprotocol-utils.ts @@ -1,90 +1,82 @@ -import { Bytes } from '@graphprotocol/graph-ts' -import { Address } from '@graphprotocol/graph-ts' -import { - BigDecimal, - BigInt, - ethereum, -} from '@graphprotocol/graph-ts' - -import { ERC20 } from '../generated/IERC721/ERC20' - -import { - currency, - transaction, -} from '../generated/schema' - +import { Bytes } from "@graphprotocol/graph-ts"; +import { Address } from "@graphprotocol/graph-ts"; +import { BigDecimal, BigInt, ethereum } from "@graphprotocol/graph-ts"; +import { ERC20 } from "../generated/IERC721/ERC20"; +import { currency, transaction } from "../generated/schema"; export namespace events { - export function id(event: ethereum.Event): string { - return event.block.number.toString().concat('-').concat(event.logIndex.toString()) - } + export function id(event: ethereum.Event): string { + return event.block.number + .toString() + .concat("-") + .concat(event.logIndex.toString()); + } } - export namespace constants { - export let BIGINT_ZERO = BigInt.fromI32(0) - export let BIGINT_ONE = BigInt.fromI32(1) - export let BIGDECIMAL_ZERO = new BigDecimal(constants.BIGINT_ZERO) - export let BIGDECIMAL_ONE = new BigDecimal(constants.BIGINT_ONE) - export const ADDRESS_ZERO = '0x0000000000000000000000000000000000000000' - export const BYTES32_ZERO = '0x0000000000000000000000000000000000000000000000000000000000000000' + export let BIGINT_ZERO = BigInt.fromI32(0); + export let BIGINT_ONE = BigInt.fromI32(1); + export let BIGDECIMAL_ZERO = new BigDecimal(constants.BIGINT_ZERO); + export let BIGDECIMAL_ONE = new BigDecimal(constants.BIGINT_ONE); + export const ADDRESS_ZERO = "0x0000000000000000000000000000000000000000"; + export const BYTES32_ZERO = + "0x0000000000000000000000000000000000000000000000000000000000000000"; } export namespace transactions { - export function log(event: ethereum.Event): transaction { - - let tx = transaction.load(event.transaction.hash.toHexString()) - if (!tx) { - - tx = new transaction(event.transaction.hash.toHexString()) - tx.timestamp = event.block.timestamp.toI32() - tx.blockNumber = event.block.number.toI32() - tx.unmatchedTransferCount = 0 - tx.gasPrice = event.transaction.gasPrice - tx.transactionFrom = event.transaction.from - tx.transfers = new Array() - tx.save() - } + export function log(event: ethereum.Event): transaction { + let tx = transaction.load(event.transaction.hash.toHexString()); + if (!tx) { + tx = new transaction(event.transaction.hash.toHexString()); + tx.timestamp = event.block.timestamp.toI32(); + tx.blockNumber = event.block.number.toI32(); + tx.unmatchedTransferCount = 0; + tx.gasPrice = event.transaction.gasPrice; + tx.transactionFrom = event.transaction.from; + tx.transfers = new Array(); + tx.save(); + } - return tx as transaction - } - export type Tx = transaction + return tx as transaction; + } + export type Tx = transaction; } export namespace ERC20Contracts { - export function getERC20 (address: Address): void { - - let currencyEntity = currency.load(address.toHexString()) + export function getERC20(address: Address): void { + let currencyEntity = currency.load(address.toHexString()); - //if currency does not exists attempt to load ERC20 (on failure assume ETH) - if (!currencyEntity && address == Address.fromString(constants.ADDRESS_ZERO)) { - - let ERC20Var = ERC20.bind(address) - let try_name = ERC20Var.try_name() - let try_symbol = ERC20Var.try_symbol() - let try_deicmals = ERC20Var.try_decimals() + //if currency does not exists attempt to load ERC20 (on failure assume ETH) + if ( + !currencyEntity && + address == Address.fromString(constants.ADDRESS_ZERO) + ) { + let ERC20Var = ERC20.bind(address); + let try_name = ERC20Var.try_name(); + let try_symbol = ERC20Var.try_symbol(); + let try_deicmals = ERC20Var.try_decimals(); - currencyEntity = new currency(address.toHexString()) - currencyEntity.name = try_name.reverted ? 'Ether' : try_name.value - currencyEntity.symbol = try_symbol.reverted ? 'ETH' : try_symbol.value - currencyEntity.decimals = try_deicmals.reverted ? 18 : try_deicmals.value - currencyEntity.save() - - } + currencyEntity = new currency(address.toHexString()); + currencyEntity.name = try_name.reverted ? "Ether" : try_name.value; + currencyEntity.symbol = try_symbol.reverted ? "ETH" : try_symbol.value; + currencyEntity.decimals = try_deicmals.reverted ? 18 : try_deicmals.value; + currencyEntity.save(); + } - if (!currencyEntity && address != Address.fromString(constants.ADDRESS_ZERO)) { - - let ERC20Var = ERC20.bind(address) - let try_name = ERC20Var.try_name() - let try_symbol = ERC20Var.try_symbol() - let try_deicmals = ERC20Var.try_decimals() + if ( + !currencyEntity && + address != Address.fromString(constants.ADDRESS_ZERO) + ) { + let ERC20Var = ERC20.bind(address); + let try_name = ERC20Var.try_name(); + let try_symbol = ERC20Var.try_symbol(); + let try_deicmals = ERC20Var.try_decimals(); - currencyEntity = new currency(address.toHexString()) - currencyEntity.name = try_name.reverted ? 'ERC20' : try_name.value - currencyEntity.symbol = try_symbol.reverted ? 'ERC20' : try_symbol.value - currencyEntity.decimals = try_deicmals.reverted ? 18 : try_deicmals.value - currencyEntity.save() - - } - } + currencyEntity = new currency(address.toHexString()); + currencyEntity.name = try_name.reverted ? "ERC20" : try_name.value; + currencyEntity.symbol = try_symbol.reverted ? "ERC20" : try_symbol.value; + currencyEntity.decimals = try_deicmals.reverted ? 18 : try_deicmals.value; + currencyEntity.save(); + } + } } diff --git a/src/marketplaces/LooksRareMappings.ts b/src/marketplaces/LooksRareMappings.ts index 67b3626..afc6be2 100644 --- a/src/marketplaces/LooksRareMappings.ts +++ b/src/marketplaces/LooksRareMappings.ts @@ -1,77 +1,63 @@ -import { - sale, - transaction, - currency, -} from '../../generated/schema' - -import { - MatchTransferWithSale -} from "../../src/utils/matchTransferSale" - -import { - TakerBid, - TakerAsk, -} from '../../generated/LooksRare/LooksRare' - -import { - ERC20Contracts, -} from '../../src/graphprotocol-utils' - -import { - BigDecimal -} from "@graphprotocol/graph-ts" +import { sale, transaction, currency } from "../../generated/schema"; +import { MatchTransferWithSale } from "../../src/utils/matchTransferSale"; +import { TakerBid, TakerAsk } from "../../generated/LooksRare/LooksRare"; +import { ERC20Contracts } from "../../src/graphprotocol-utils"; +import { BigDecimal } from "@graphprotocol/graph-ts"; // TakerBid Handler starts here export function handleTakerBid(event: TakerBid): void { - //1. load transaction - let tx = transaction.load(event.transaction.hash.toHexString()) - - //2. nullcheck transaction entity (one should already exist for the transfer earlier in that) if it doesn't exist should we error or skip? - //&& event.transaction.value != constants.BIGINT_ZERO && event.params.buyHash != ) { - if (tx){ + let tx = transaction.load(event.transaction.hash.toHexString()); - //3. create new sale entity (id = tx hash - eventId) - let saleEntity = sale.load(event.block.number.toString() + '-' + event.logIndex.toString()) + //2. nullcheck transaction entity (one should already exist for the transfer earlier in that) if it doesn't exist should we error or skip? + //&& event.transaction.value != constants.BIGINT_ZERO && event.params.buyHash != ) { + if (tx) { + //3. create new sale entity (id = tx hash - eventId) + let saleEntity = sale.load( + event.block.number.toString() + "-" + event.logIndex.toString() + ); if (!saleEntity && tx.unmatchedTransferCount > 0) { - - ERC20Contracts.getERC20(event.params.currency) - let currencyEntity = currency.load(event.params.currency.toHexString()) + ERC20Contracts.getERC20(event.params.currency); + let currencyEntity = currency.load(event.params.currency.toHexString()); if (currencyEntity) { //Gather the decimals used in the currency transacted in //let amountDecimals = bigInt.fromString((10 ** currencyEntity.decimals).toString()) //4. Assign currency address, amount, txId and platform to sale entity - let saleEntity = new sale(event.block.number.toString() + '-' + event.logIndex.toString()) - saleEntity.transaction = tx.id - saleEntity.currency = currencyEntity.id - saleEntity.platform = 'LooksRare' - saleEntity.amount = event.params.price.divDecimal(BigDecimal.fromString('1000000000000000000')) - saleEntity.blockNumber = event.block.number.toI32() - saleEntity.timestamp = event.block.timestamp.toI32() - saleEntity.save() - - //5. Assign sale.amount / transaction.unmatchedTransferCount to variable transferAmount to pass into transfer entities + let saleEntity = new sale( + event.block.number.toString() + "-" + event.logIndex.toString() + ); + saleEntity.transaction = tx.id; + saleEntity.currency = currencyEntity.id; + saleEntity.platform = "LooksRare"; + saleEntity.amount = event.params.price.divDecimal( + BigDecimal.fromString("1000000000000000000") + ); + saleEntity.blockNumber = event.block.number.toI32(); + saleEntity.timestamp = event.block.timestamp.toI32(); + saleEntity.save(); + + //5. Assign sale.amount / transaction.unmatchedTransferCount to variable transferAmount to pass into transfer entities // This will derives the amount per transfer (eg each nft's amount in a bundle with 2 NFT's is the total price divided by 2.) - let transferAmount = saleEntity.amount.div(BigDecimal.fromString(tx.unmatchedTransferCount.toString())) - - //6. Using unmatchedTransferId loop through the transfer entities and apply the transferAmount and assign saleId , + let transferAmount = saleEntity.amount.div( + BigDecimal.fromString(tx.unmatchedTransferCount.toString()) + ); + + //6. Using unmatchedTransferId loop through the transfer entities and apply the transferAmount and assign saleId , //reducing the unmatchedTransferCount by 1. save transfer update on each loop. - if(tx.transfers && transferAmount && tx.id && saleEntity.id) { - - let array = tx.transfers + if (tx.transfers && transferAmount && tx.id && saleEntity.id) { + let array = tx.transfers; for (let index = 0; index < array.length; index++) { - - let trId = array[index] + let trId = array[index]; MatchTransferWithSale( - trId, + trId, transferAmount, tx.id, saleEntity.id, - currencyEntity.symbol, - ) + currencyEntity.symbol + ); } } } @@ -79,64 +65,63 @@ export function handleTakerBid(event: TakerBid): void { } } - // TakerAsk Handler starts here (logic is the same) export function handleTakerAsk(event: TakerAsk): void { - - //1. load transaction - let tx = transaction.load(event.transaction.hash.toHexString()) - - //2. nullcheck transaction entity (one should already exist for the transfer earlier in that) if it doesn't exist should we error or skip? - //&& event.transaction.value != constants.BIGINT_ZERO && event.params.buyHash != ) { - if (tx){ - - //3. create new sale entity (id = tx hash - eventId) - let saleEntity = sale.load(event.block.number.toString() + '-' + event.logIndex.toString()) - if (!saleEntity && tx.unmatchedTransferCount > 0) { - - ERC20Contracts.getERC20(event.params.currency) - let currencyEntity = currency.load(event.params.currency.toHexString()) + //1. load transaction + let tx = transaction.load(event.transaction.hash.toHexString()); - if (currencyEntity) { - //Gather the decimals used in the currency transacted in - let amountDecimals = 10 ** currencyEntity.decimals - - //4. Assign currency address, amount, txId and platform to sale entity - let saleEntity = new sale(event.block.number.toString() + '-' + event.logIndex.toString()) - saleEntity.transaction = tx.id - saleEntity.currency = currencyEntity.id - saleEntity.platform = 'LooksRare' - saleEntity.amount = event.params.price.divDecimal(BigDecimal.fromString('1000000000000000000')) - saleEntity.blockNumber = event.block.number.toI32() - saleEntity.timestamp = event.block.timestamp.toI32() - saleEntity.save() - - //5. Assign sale.amount / transaction.unmatchedTransferCount to variable transferAmount to pass into transfer entities - // This will derives the amount per transfer (eg each nft's amount in a bundle with 2 NFT's is the total price divided by 2.) - let transferAmount = saleEntity.amount.div(BigDecimal.fromString(tx.unmatchedTransferCount.toString())) - - //6. Using unmatchedTransferId loop through the transfer entities and apply the transferAmount and assign saleId , - //reducing the unmatchedTransferCount by 1. save transfer update on each loop. - if(tx.transfers && transferAmount && tx.id && saleEntity.id) { - - let array = tx.transfers - for (let index = 0; index < array.length; index++) { - - let trId = array[index] - - MatchTransferWithSale( - trId, - transferAmount, - tx.id, - saleEntity.id, - currencyEntity.symbol, - ) - } + //2. nullcheck transaction entity (one should already exist for the transfer earlier in that) if it doesn't exist should we error or skip? + //&& event.transaction.value != constants.BIGINT_ZERO && event.params.buyHash != ) { + if (tx) { + //3. create new sale entity (id = tx hash - eventId) + let saleEntity = sale.load( + event.block.number.toString() + "-" + event.logIndex.toString() + ); + if (!saleEntity && tx.unmatchedTransferCount > 0) { + ERC20Contracts.getERC20(event.params.currency); + let currencyEntity = currency.load(event.params.currency.toHexString()); + + if (currencyEntity) { + //Gather the decimals used in the currency transacted in + let amountDecimals = 10 ** currencyEntity.decimals; + + //4. Assign currency address, amount, txId and platform to sale entity + let saleEntity = new sale( + event.block.number.toString() + "-" + event.logIndex.toString() + ); + saleEntity.transaction = tx.id; + saleEntity.currency = currencyEntity.id; + saleEntity.platform = "LooksRare"; + saleEntity.amount = event.params.price.divDecimal( + BigDecimal.fromString("1000000000000000000") + ); + saleEntity.blockNumber = event.block.number.toI32(); + saleEntity.timestamp = event.block.timestamp.toI32(); + saleEntity.save(); + + //5. Assign sale.amount / transaction.unmatchedTransferCount to variable transferAmount to pass into transfer entities + // This will derives the amount per transfer (eg each nft's amount in a bundle with 2 NFT's is the total price divided by 2.) + let transferAmount = saleEntity.amount.div( + BigDecimal.fromString(tx.unmatchedTransferCount.toString()) + ); + + //6. Using unmatchedTransferId loop through the transfer entities and apply the transferAmount and assign saleId , + //reducing the unmatchedTransferCount by 1. save transfer update on each loop. + if (tx.transfers && transferAmount && tx.id && saleEntity.id) { + let array = tx.transfers; + for (let index = 0; index < array.length; index++) { + let trId = array[index]; + + MatchTransferWithSale( + trId, + transferAmount, + tx.id, + saleEntity.id, + currencyEntity.symbol + ); } } } } } - - - \ No newline at end of file +} diff --git a/src/marketplaces/OpenSeaV1Mapping.ts b/src/marketplaces/OpenSeaV1Mapping.ts index 10cba00..80cb641 100644 --- a/src/marketplaces/OpenSeaV1Mapping.ts +++ b/src/marketplaces/OpenSeaV1Mapping.ts @@ -1,87 +1,88 @@ import { - sale, - transaction, + sale, + transaction, currency, wethTransaction, -} from '../../generated/schema' - -import { - MatchTransferWithSale -} from "../../src/utils/matchTransferSale" - -import { - OrdersMatched, -} from '../../generated/OpenseaV1/OpenSeaV1' - -import { - constants, ERC20Contracts -} from '../../src/graphprotocol-utils' - -import { - BigDecimal,Address -} from "@graphprotocol/graph-ts" +} from "../../generated/schema"; +import { MatchTransferWithSale } from "../../src/utils/matchTransferSale"; +import { OrdersMatched } from "../../generated/OpenseaV1/OpenSeaV1"; +import { constants, ERC20Contracts } from "../../src/graphprotocol-utils"; +import { BigDecimal, Address } from "@graphprotocol/graph-ts"; // TakerAsk Handler starts here export function handleOSv1Sale(event: OrdersMatched): void { - //1. load transaction - let tx = transaction.load(event.transaction.hash.toHexString()) - - //2. nullcheck transaction entity (one should already exist for the transfer earlier in that) - if (tx ){ + let tx = transaction.load(event.transaction.hash.toHexString()); - //3. create new sale entity (id = tx hash - eventId) - let saleEntity = sale.load(event.block.number.toString() + '-' + event.logIndex.toString()) + //2. nullcheck transaction entity (one should already exist for the transfer earlier in that) + if (tx) { + //3. create new sale entity (id = tx hash - eventId) + let saleEntity = sale.load( + event.block.number.toString() + "-" + event.logIndex.toString() + ); if (!saleEntity && tx.unmatchedTransferCount > 0) { - // Assume default value of currency as phony ERC20 - let currencyAddress: Address = Address.fromString('0xbadfeed000000000000000000000000000000000') //update to unknown ERC20 - - let wethTest = wethTransaction.load(event.transaction.hash.toHexString()) - + let currencyAddress: Address = Address.fromString( + "0xbadfeed000000000000000000000000000000000" + ); //update to unknown ERC20 + + let wethTest = wethTransaction.load(event.transaction.hash.toHexString()); + // If there was a transfer of WETH assume the sale occurs in WETH - if (wethTest) { currencyAddress = Address.fromString('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2')} + if (wethTest) { + currencyAddress = Address.fromString( + "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" + ); + } //If the transaction value is > 0 then assume the sale occurs in ETH - if (event.transaction.value != constants.BIGINT_ZERO || event.params.price == constants.BIGINT_ONE) {currencyAddress = Address.fromString(constants.ADDRESS_ZERO)} + if ( + event.transaction.value != constants.BIGINT_ZERO || + event.params.price == constants.BIGINT_ONE + ) { + currencyAddress = Address.fromString(constants.ADDRESS_ZERO); + } + + ERC20Contracts.getERC20(currencyAddress); + let currencyEntity = currency.load(currencyAddress.toHexString()); - ERC20Contracts.getERC20(currencyAddress) - let currencyEntity = currency.load(currencyAddress.toHexString()) - if (currencyEntity) { //4. Assign currency address, amount, txId and platform to sale entity - let saleEntity = new sale(event.block.number.toString() + '-' + event.logIndex.toString()) - saleEntity.transaction = tx.id - saleEntity.currency = currencyEntity.id - saleEntity.platform = 'OpenSea' - saleEntity.amount = event.params.price.divDecimal(BigDecimal.fromString('1000000000000000000')) - saleEntity.blockNumber = event.block.number.toI32() - saleEntity.timestamp = event.block.timestamp.toI32() - saleEntity.save() - - //5. Assign sale.amount / transaction.unmatchedTransferCount to variable transferAmount to pass into transfer entities + let saleEntity = new sale( + event.block.number.toString() + "-" + event.logIndex.toString() + ); + saleEntity.transaction = tx.id; + saleEntity.currency = currencyEntity.id; + saleEntity.platform = "OpenSea"; + saleEntity.amount = event.params.price.divDecimal( + BigDecimal.fromString("1000000000000000000") + ); + saleEntity.blockNumber = event.block.number.toI32(); + saleEntity.timestamp = event.block.timestamp.toI32(); + saleEntity.save(); + + //5. Assign sale.amount / transaction.unmatchedTransferCount to variable transferAmount to pass into transfer entities // This will derives the amount per transfer (eg each nft's amount in a bundle with 2 NFT's is the total price divided by 2.) - let transferAmount = saleEntity.amount.div(BigDecimal.fromString(tx.unmatchedTransferCount.toString())) - - //6. Using unmatchedTransferId loop through the transfer entities and apply the transferAmount and assign saleId , + let transferAmount = saleEntity.amount.div( + BigDecimal.fromString(tx.unmatchedTransferCount.toString()) + ); + + //6. Using unmatchedTransferId loop through the transfer entities and apply the transferAmount and assign saleId , //reducing the unmatchedTransferCount by 1. save transfer update on each loop. - if(tx.transfers && transferAmount && tx.id && saleEntity.id) { - - let array = tx.transfers + if (tx.transfers && transferAmount && tx.id && saleEntity.id) { + let array = tx.transfers; for (let index = 0; index < array.length; index++) { - - let trId = array[index] + let trId = array[index]; MatchTransferWithSale( - trId, + trId, transferAmount, tx.id, saleEntity.id, - currencyEntity.symbol, - ) - + currencyEntity.symbol + ); } } } } } -} \ No newline at end of file +} diff --git a/src/marketplaces/X2Y2Mappings.ts b/src/marketplaces/X2Y2Mappings.ts index b161305..2526377 100644 --- a/src/marketplaces/X2Y2Mappings.ts +++ b/src/marketplaces/X2Y2Mappings.ts @@ -1,79 +1,68 @@ -import { - sale, - transaction, - currency, -} from '../../generated/schema' - -import { - MatchTransferWithSale -} from "../../src/utils/matchTransferSale" - -import { - EvProfit -} from '../../generated/X2Y2/X2Y2' - -import { - BigDecimal -} from "@graphprotocol/graph-ts" -import { ERC20Contracts } from '../graphprotocol-utils' +import { sale, transaction, currency } from "../../generated/schema"; +import { MatchTransferWithSale } from "../../src/utils/matchTransferSale"; +import { EvProfit } from "../../generated/X2Y2/X2Y2"; +import { BigDecimal } from "@graphprotocol/graph-ts"; +import { ERC20Contracts } from "../graphprotocol-utils"; // TakerBid Handler starts here export function handleEvProfit(event: EvProfit): void { - //1. load transaction - let tx = transaction.load(event.transaction.hash.toHexString()) - - //2. nullcheck transaction entity (one should already exist for the transfer earlier in that) if it doesn't exist should we error or skip? + let tx = transaction.load(event.transaction.hash.toHexString()); + + //2. nullcheck transaction entity (one should already exist for the transfer earlier in that) if it doesn't exist should we error or skip? //&& event.transaction.value != constants.BIGINT_ZERO && event.params.buyHash != ) { - if (tx){ - - //3. create new sale entity (id = tx hash - eventId) - let saleEntity = sale.load(event.block.number.toString() + '-' + event.logIndex.toString()) + if (tx) { + //3. create new sale entity (id = tx hash - eventId) + let saleEntity = sale.load( + event.block.number.toString() + "-" + event.logIndex.toString() + ); if (!saleEntity && tx.unmatchedTransferCount > 0) { - - ERC20Contracts.getERC20(event.params.currency) - let currencyEntity = currency.load(event.params.currency.toHexString()) + ERC20Contracts.getERC20(event.params.currency); + let currencyEntity = currency.load(event.params.currency.toHexString()); if (currencyEntity) { //Gather the decimals used in the currency transacted in - let amountDecimals = 10 ** currencyEntity.decimals - + let amountDecimals = 10 ** currencyEntity.decimals; + //4. Assign currency address, amount, txId and platform to sale entity - let saleEntity = new sale(event.block.number.toString() + '-' + event.logIndex.toString()) - saleEntity.transaction = tx.id - saleEntity.currency = currencyEntity.id - saleEntity.platform = 'X2Y2' + let saleEntity = new sale( + event.block.number.toString() + "-" + event.logIndex.toString() + ); + saleEntity.transaction = tx.id; + saleEntity.currency = currencyEntity.id; + saleEntity.platform = "X2Y2"; //X2Y2 emites the profit amount instead of the total price, added / 0.98 to get the full sale price - - saleEntity.amount = event.params.amount.divDecimal(BigDecimal.fromString('1000000000000000000')).div(BigDecimal.fromString('0.98')) - saleEntity.blockNumber = event.block.number.toI32() - saleEntity.timestamp = event.block.timestamp.toI32() - saleEntity.save() - - //5. Assign sale.amount / transaction.unmatchedTransferCount to variable transferAmount to pass into transfer entities + + saleEntity.amount = event.params.amount + .divDecimal(BigDecimal.fromString("1000000000000000000")) + .div(BigDecimal.fromString("0.98")); + saleEntity.blockNumber = event.block.number.toI32(); + saleEntity.timestamp = event.block.timestamp.toI32(); + saleEntity.save(); + + //5. Assign sale.amount / transaction.unmatchedTransferCount to variable transferAmount to pass into transfer entities // This will derives the amount per transfer (eg each nft's amount in a bundle with 2 NFT's is the total price divided by 2.) - let transferAmount = saleEntity.amount.div(BigDecimal.fromString(tx.unmatchedTransferCount.toString())) - - //6. Using unmatchedTransferId loop through the transfer entities and apply the transferAmount and assign saleId , + let transferAmount = saleEntity.amount.div( + BigDecimal.fromString(tx.unmatchedTransferCount.toString()) + ); + + //6. Using unmatchedTransferId loop through the transfer entities and apply the transferAmount and assign saleId , //reducing the unmatchedTransferCount by 1. save transfer update on each loop. - if(tx.transfers && transferAmount && tx.id && saleEntity.id) { - - let array = tx.transfers + if (tx.transfers && transferAmount && tx.id && saleEntity.id) { + let array = tx.transfers; for (let index = 0; index < array.length; index++) { - - let trId = array[index] + let trId = array[index]; MatchTransferWithSale( - trId, + trId, transferAmount, tx.id, saleEntity.id, - currencyEntity.symbol, - ) - + currencyEntity.symbol + ); } } } + } } - } -} \ No newline at end of file +} diff --git a/src/utils/erc165.ts b/src/utils/erc165.ts index ef43b30..4f031a6 100644 --- a/src/utils/erc165.ts +++ b/src/utils/erc165.ts @@ -1,12 +1,21 @@ -import { ethereum, Bytes } from '@graphprotocol/graph-ts' +import { ethereum, Bytes } from "@graphprotocol/graph-ts"; -export function supportsInterface(contract: ethereum.SmartContract, interfaceId: string, expected: boolean = true): boolean { - let result = ethereum.call(new ethereum.SmartContractCall( - contract._name, // '', - contract._address, // address, - 'supportsInterface', // '', - 'supportsInterface(bytes4):(bool)', - [ethereum.Value.fromFixedBytes(Bytes.fromHexString(interfaceId) as Bytes)] - )) - return result != null && (result as Array)[0].toBoolean() == expected -} \ No newline at end of file +export function supportsInterface( + contract: ethereum.SmartContract, + interfaceId: string, + expected: boolean = true +): boolean { + let result = ethereum.call( + new ethereum.SmartContractCall( + contract._name, // '', + contract._address, // address, + "supportsInterface", // '', + "supportsInterface(bytes4):(bool)", + [ethereum.Value.fromFixedBytes(Bytes.fromHexString(interfaceId) as Bytes)] + ) + ); + return ( + result != null && + (result as Array)[0].toBoolean() == expected + ); +} diff --git a/src/utils/erc721.ts b/src/utils/erc721.ts index be8d099..5f7fc06 100644 --- a/src/utils/erc721.ts +++ b/src/utils/erc721.ts @@ -1,93 +1,84 @@ -import { - Address, - BigDecimal, - BigInt, -} from '@graphprotocol/graph-ts' +import { Address, BigDecimal, BigInt } from "@graphprotocol/graph-ts"; +import { IERC721Metadata } from "../../generated/IERC721/IERC721Metadata"; +import { Contract721 } from "../../generated/IERC721/Contract721"; +import { account, collection, contract, token } from "../../generated/schema"; +import { supportsInterface } from "./erc165"; +import { constants } from "../../src/graphprotocol-utils"; -import { - IERC721Metadata, -} from '../../generated/IERC721/IERC721Metadata' +export function fetchRegistry( + address: Address, + timestamp: BigInt, + blockNumber: BigInt +): collection { + let erc721 = IERC721Metadata.bind(address); + let Collection = Contract721.bind(address); + let contractEntity = contract.load(address.toHexString()); -import { - Contract721 -} from '../../generated/IERC721/Contract721' + if (contractEntity == null) { + contractEntity = new contract(address.toHexString()); + let introspection_01ffc9a7 = supportsInterface(erc721, "01ffc9a7"); // ERC165 + let introspection_80ac58cd = supportsInterface(erc721, "80ac58cd"); // ERC721 + let introspection_00000000 = supportsInterface(erc721, "00000000", false); + let isERC721 = + introspection_01ffc9a7 && + introspection_80ac58cd && + introspection_00000000; + contractEntity.asERC721 = isERC721 ? contractEntity.id : null; + contractEntity.save(); + } -import { - account, - collection, - contract, - token, -} from '../../generated/schema' + //if (contract.asERC721 != null) + //{ + let collectionEntity = collection.load(contractEntity.id); + if (collectionEntity == null) { + collectionEntity = new collection(contractEntity.id); -import { - supportsInterface, -} from './erc165' + //contract calls + let try_name = erc721.try_name(); + let try_symbol = erc721.try_symbol(); + let try_mintPrice = Collection.try_price(); + let mintPriceBigInt = try_mintPrice.reverted + ? BigInt.fromI32(0) + : try_mintPrice.value; + let mintPrice = mintPriceBigInt.divDecimal( + BigDecimal.fromString("1000000000000000000") + ); -import { - constants, -} from '../../src/graphprotocol-utils' + collectionEntity.name = try_name.reverted ? "" : try_name.value; + collectionEntity.symbol = try_symbol.reverted ? "" : try_symbol.value; + collectionEntity.mintPrice = mintPrice; + collectionEntity.createdAt = timestamp; + collectionEntity.createdAtBlock = blockNumber; + collectionEntity.supportsMetadata = supportsInterface(erc721, "5b5e139f"); // ERC721Metadata + collectionEntity.totalSales = 0; + collectionEntity.totalVolume = constants.BIGDECIMAL_ZERO; + collectionEntity.topSale = constants.BIGDECIMAL_ZERO; + } + return collectionEntity as collection; + //} -export function fetchRegistry(address: Address, timestamp: BigInt, blockNumber: BigInt): collection { - let erc721 = IERC721Metadata.bind(address) - let Collection = Contract721.bind(address) - let contractEntity = contract.load(address.toHexString()) - - if (contractEntity == null) { - contractEntity = new contract(address.toHexString()) - let introspection_01ffc9a7 = supportsInterface(erc721, '01ffc9a7') // ERC165 - let introspection_80ac58cd = supportsInterface(erc721, '80ac58cd') // ERC721 - let introspection_00000000 = supportsInterface(erc721, '00000000', false) - let isERC721 = introspection_01ffc9a7 && introspection_80ac58cd && introspection_00000000 - contractEntity.asERC721 = isERC721 ? contractEntity.id : null - contractEntity.save() - } - - //if (contract.asERC721 != null) - //{ - let collectionEntity = collection.load(contractEntity.id) - if (collectionEntity == null) { - collectionEntity = new collection(contractEntity.id) - - //contract calls - let try_name = erc721.try_name() - let try_symbol = erc721.try_symbol() - let try_mintPrice = Collection.try_price() - let mintPriceBigInt = try_mintPrice.reverted ? BigInt.fromI32(0) : try_mintPrice.value - let mintPrice = mintPriceBigInt.divDecimal(BigDecimal.fromString('1000000000000000000')) - - collectionEntity.name = try_name.reverted ? '' : try_name.value - collectionEntity.symbol = try_symbol.reverted ? '' : try_symbol.value - collectionEntity.mintPrice = mintPrice - collectionEntity.createdAt = timestamp - collectionEntity.createdAtBlock = blockNumber - collectionEntity.supportsMetadata = supportsInterface(erc721, '5b5e139f') // ERC721Metadata - collectionEntity.totalSales = 0 - collectionEntity.totalVolume = constants.BIGDECIMAL_ZERO - collectionEntity.topSale = constants.BIGDECIMAL_ZERO - } - return collectionEntity as collection - //} - - //return null as collection + //return null as collection } export function fetchToken(collection: collection, id: BigInt): token { - let tokenid = 'ethereum/'.concat(collection.id.concat('/').concat(id.toString())) - let tokenEntity = token.load(tokenid) - if (tokenEntity == null) { - let account_zero = new account(constants.ADDRESS_ZERO) - account_zero.save() + let tokenid = "ethereum/".concat( + collection.id.concat("/").concat(id.toString()) + ); + let tokenEntity = token.load(tokenid); + if (tokenEntity == null) { + let account_zero = new account(constants.ADDRESS_ZERO); + account_zero.save(); - tokenEntity = new token(tokenid) - tokenEntity.collection = collection.id - tokenEntity.identifier = id + tokenEntity = new token(tokenid); + tokenEntity.collection = collection.id; + tokenEntity.identifier = id; - //update collection's total supply - let Collection = Contract721.bind(Address.fromString(collection.id)) - let try_totalSupply = Collection.try_totalSupply() - collection.totalSupply = try_totalSupply.reverted ? BigInt.fromI32(0) : try_totalSupply.value - - } - return tokenEntity as token + //update collection's total supply + let Collection = Contract721.bind(Address.fromString(collection.id)); + let try_totalSupply = Collection.try_totalSupply(); + collection.totalSupply = try_totalSupply.reverted + ? BigInt.fromI32(0) + : try_totalSupply.value; + } + return tokenEntity as token; } - diff --git a/src/utils/matchTransferSale.ts b/src/utils/matchTransferSale.ts index 81df34d..1746a17 100644 --- a/src/utils/matchTransferSale.ts +++ b/src/utils/matchTransferSale.ts @@ -1,195 +1,241 @@ -import { BigDecimal } from "@graphprotocol/graph-ts" -import {constants} from '../../src/graphprotocol-utils' +import { BigDecimal } from "@graphprotocol/graph-ts"; +import { constants } from "../../src/graphprotocol-utils"; -import { +import { transfer, - transaction, + transaction, collection, - hourlyCollectionSnapshot, - dailyCollectionSnapshot, + hourlyCollectionSnapshot, + dailyCollectionSnapshot, weeklyCollectionSnapshot, -} from "../../generated/schema" - +} from "../../generated/schema"; export function MatchTransferWithSale( TransferId: string, transferAmount: BigDecimal, TransactionId: string, SaleId: string, - CurrencySymbol: string, - ): void { - - if (TransferId && transferAmount && TransactionId && SaleId) { - - // Load the indexed transfer. - let transferEntity = transfer.load(TransferId) - if (transferEntity && transferEntity.amount == constants.BIGDECIMAL_ZERO ){ - let transactionEntity = transaction.load(TransactionId) - if (transactionEntity) { - - // Update transfer values - transferEntity.amount = transferAmount - transferEntity.matchedSale = SaleId - - // Decrease unmatched transfer count by one (in case of batch sales in single transaction) - transactionEntity.unmatchedTransferCount = transactionEntity.unmatchedTransferCount - 1 - - transferEntity.save() - transactionEntity.save() - - if (CurrencySymbol == 'ETH' || CurrencySymbol == 'WETH') { - - // Update collection metrics - let collectionEntity = collection.load(transferEntity.collection) - if (collectionEntity) { - collectionEntity.totalSales = collectionEntity.totalSales + 1 - collectionEntity.totalVolume = collectionEntity.totalVolume.plus(transferAmount) - - if (transferAmount > collectionEntity.topSale) { - collectionEntity.topSale = transferAmount - } - - collectionEntity.save() + CurrencySymbol: string +): void { + if (TransferId && transferAmount && TransactionId && SaleId) { + // Load the indexed transfer. + let transferEntity = transfer.load(TransferId); + if (transferEntity && transferEntity.amount == constants.BIGDECIMAL_ZERO) { + let transactionEntity = transaction.load(TransactionId); + if (transactionEntity) { + // Update transfer values + transferEntity.amount = transferAmount; + transferEntity.matchedSale = SaleId; + + // Decrease unmatched transfer count by one (in case of batch sales in single transaction) + transactionEntity.unmatchedTransferCount = + transactionEntity.unmatchedTransferCount - 1; + + transferEntity.save(); + transactionEntity.save(); + + if (CurrencySymbol == "ETH" || CurrencySymbol == "WETH") { + // Update collection metrics + let collectionEntity = collection.load(transferEntity.collection); + if (collectionEntity) { + collectionEntity.totalSales = collectionEntity.totalSales + 1; + collectionEntity.totalVolume = collectionEntity.totalVolume.plus( + transferAmount + ); + + if (transferAmount > collectionEntity.topSale) { + collectionEntity.topSale = transferAmount; } - // hourlyCollectionSnapshot entity starts here - - // The timestamp is in seconds - day = 864000 seconds - const hour = transactionEntity.timestamp / 3600 - - // Collection Address - Day - let hourlyCollectionSnapshotEntityId = transferEntity.collection + '-' + hour.toString() - - let hourlyCollectionSnapshotEntity = hourlyCollectionSnapshot.load(hourlyCollectionSnapshotEntityId) - - if(!hourlyCollectionSnapshotEntity) { - hourlyCollectionSnapshotEntity = new hourlyCollectionSnapshot(hourlyCollectionSnapshotEntityId) - hourlyCollectionSnapshotEntity.timestamp = hour * 3600 - hourlyCollectionSnapshotEntity.collection = transferEntity.collection - hourlyCollectionSnapshotEntity.hourlyVolume = constants.BIGDECIMAL_ZERO - hourlyCollectionSnapshotEntity.hourlyTransactions = 0 - hourlyCollectionSnapshotEntity.topSale = constants.BIGDECIMAL_ZERO - hourlyCollectionSnapshotEntity.bottomSale = constants.BIGDECIMAL_ZERO - - hourlyCollectionSnapshotEntity.save() - } - - // Updating daily total volume & top sale - hourlyCollectionSnapshotEntity.hourlyVolume = hourlyCollectionSnapshotEntity.hourlyVolume.plus(transferAmount) - if (transferAmount > hourlyCollectionSnapshotEntity.topSale) { - hourlyCollectionSnapshotEntity.topSale = transferAmount - } - - // Updating daily total number of transactions - hourlyCollectionSnapshotEntity.hourlyTransactions = hourlyCollectionSnapshotEntity.hourlyTransactions + 1 - - // Daily bottom sale - if (transferAmount < hourlyCollectionSnapshotEntity.bottomSale - || (hourlyCollectionSnapshotEntity.bottomSale == constants.BIGDECIMAL_ZERO && transferAmount != constants.BIGDECIMAL_ZERO) - ) { - hourlyCollectionSnapshotEntity.bottomSale = transferAmount - } - - hourlyCollectionSnapshotEntity.hourlyAvgSale = hourlyCollectionSnapshotEntity.hourlyVolume.div( - BigDecimal.fromString(hourlyCollectionSnapshotEntity.hourlyTransactions.toString())) - - // hourlyCollectionSnapshot entity ends here - - // dailyCollectionSnapshot entity starts here - - // The timestamp is in seconds - day = 864000 seconds - const day = transactionEntity.timestamp / 86400 - - // Collection Address - Day - let dailyCollectionSnapshotEntityId = transferEntity.collection + '-' + day.toString() - - let dailyCollectionSnapshotEntity = dailyCollectionSnapshot.load(dailyCollectionSnapshotEntityId) - - if(!dailyCollectionSnapshotEntity) { - dailyCollectionSnapshotEntity = new dailyCollectionSnapshot(dailyCollectionSnapshotEntityId) - dailyCollectionSnapshotEntity.timestamp = day * 86400 - dailyCollectionSnapshotEntity.collection = transferEntity.collection - dailyCollectionSnapshotEntity.dailyVolume = constants.BIGDECIMAL_ZERO - dailyCollectionSnapshotEntity.dailyTransactions = 0 - dailyCollectionSnapshotEntity.topSale = constants.BIGDECIMAL_ZERO - dailyCollectionSnapshotEntity.bottomSale = constants.BIGDECIMAL_ZERO - - dailyCollectionSnapshotEntity.save() - } - - // Updating daily total volume & top sale - dailyCollectionSnapshotEntity.dailyVolume = dailyCollectionSnapshotEntity.dailyVolume.plus(transferAmount) - if (transferAmount > dailyCollectionSnapshotEntity.topSale) { - dailyCollectionSnapshotEntity.topSale = transferAmount - } - - // Updating daily total number of transactions - dailyCollectionSnapshotEntity.dailyTransactions = dailyCollectionSnapshotEntity.dailyTransactions + 1 - - // Daily bottom sale - if (transferAmount < dailyCollectionSnapshotEntity.bottomSale - || (dailyCollectionSnapshotEntity.bottomSale == constants.BIGDECIMAL_ZERO && transferAmount != constants.BIGDECIMAL_ZERO) - ) { - dailyCollectionSnapshotEntity.bottomSale = transferAmount - } - - dailyCollectionSnapshotEntity.dailyAvgSale = dailyCollectionSnapshotEntity.dailyVolume.div( - BigDecimal.fromString(dailyCollectionSnapshotEntity.dailyTransactions.toString())) - - // dailyCollectionSnapshot entity ends here - - // weeklyCollectionSnapshot entity starts here - - // The timestamp is in seconds - week = 604800 seconds - const week = transactionEntity.timestamp / 604800 - - // Collection Address - Week - let weeklyCollectionSnapshotEntityId = transferEntity.collection + '-' + week.toString() - - let weeklyCollectionSnapshotEntity = weeklyCollectionSnapshot.load(weeklyCollectionSnapshotEntityId) - - if(!weeklyCollectionSnapshotEntity) { - weeklyCollectionSnapshotEntity = new weeklyCollectionSnapshot(weeklyCollectionSnapshotEntityId) - weeklyCollectionSnapshotEntity.timestamp = week * 604800 - weeklyCollectionSnapshotEntity.collection = transferEntity.collection - weeklyCollectionSnapshotEntity.weeklyVolume = constants.BIGDECIMAL_ZERO - weeklyCollectionSnapshotEntity.weeklyTransactions = 0 - weeklyCollectionSnapshotEntity.topSale = constants.BIGDECIMAL_ZERO - weeklyCollectionSnapshotEntity.bottomSale = constants.BIGDECIMAL_ZERO - - weeklyCollectionSnapshotEntity.save() - } - - // Updating weekly volume & top sale - weeklyCollectionSnapshotEntity.weeklyVolume = weeklyCollectionSnapshotEntity.weeklyVolume.plus(transferAmount) - if (transferAmount > weeklyCollectionSnapshotEntity.topSale) { - weeklyCollectionSnapshotEntity.topSale = transferAmount - } - - // Updating weekly total number of transactions - weeklyCollectionSnapshotEntity.weeklyTransactions = weeklyCollectionSnapshotEntity.weeklyTransactions + 1 - - // Weekly bottom sale - if (transferAmount < weeklyCollectionSnapshotEntity.bottomSale - || (weeklyCollectionSnapshotEntity.bottomSale == constants.BIGDECIMAL_ZERO && transferAmount != constants.BIGDECIMAL_ZERO) - ) { - weeklyCollectionSnapshotEntity.bottomSale = transferAmount - } - - weeklyCollectionSnapshotEntity.weeklyAvgSale = weeklyCollectionSnapshotEntity.weeklyVolume.div( - BigDecimal.fromString(weeklyCollectionSnapshotEntity.weeklyTransactions.toString())) - - - // weeklyCollectionSnapshot entity ends here - - // Save metric entities - hourlyCollectionSnapshotEntity.save() - dailyCollectionSnapshotEntity.save() - weeklyCollectionSnapshotEntity.save() - + collectionEntity.save(); + } + + // hourlyCollectionSnapshot entity starts here + + // The timestamp is in seconds - day = 864000 seconds + const hour = transactionEntity.timestamp / 3600; + + // Collection Address - Day + let hourlyCollectionSnapshotEntityId = + transferEntity.collection + "-" + hour.toString(); + + let hourlyCollectionSnapshotEntity = hourlyCollectionSnapshot.load( + hourlyCollectionSnapshotEntityId + ); + + if (!hourlyCollectionSnapshotEntity) { + hourlyCollectionSnapshotEntity = new hourlyCollectionSnapshot( + hourlyCollectionSnapshotEntityId + ); + hourlyCollectionSnapshotEntity.timestamp = hour * 3600; + hourlyCollectionSnapshotEntity.collection = + transferEntity.collection; + hourlyCollectionSnapshotEntity.hourlyVolume = + constants.BIGDECIMAL_ZERO; + hourlyCollectionSnapshotEntity.hourlyTransactions = 0; + hourlyCollectionSnapshotEntity.topSale = constants.BIGDECIMAL_ZERO; + hourlyCollectionSnapshotEntity.bottomSale = + constants.BIGDECIMAL_ZERO; + + hourlyCollectionSnapshotEntity.save(); + } + + // Updating daily total volume & top sale + hourlyCollectionSnapshotEntity.hourlyVolume = hourlyCollectionSnapshotEntity.hourlyVolume.plus( + transferAmount + ); + if (transferAmount > hourlyCollectionSnapshotEntity.topSale) { + hourlyCollectionSnapshotEntity.topSale = transferAmount; + } + + // Updating daily total number of transactions + hourlyCollectionSnapshotEntity.hourlyTransactions = + hourlyCollectionSnapshotEntity.hourlyTransactions + 1; + + // Daily bottom sale + if ( + transferAmount < hourlyCollectionSnapshotEntity.bottomSale || + (hourlyCollectionSnapshotEntity.bottomSale == + constants.BIGDECIMAL_ZERO && + transferAmount != constants.BIGDECIMAL_ZERO) + ) { + hourlyCollectionSnapshotEntity.bottomSale = transferAmount; + } + + hourlyCollectionSnapshotEntity.hourlyAvgSale = hourlyCollectionSnapshotEntity.hourlyVolume.div( + BigDecimal.fromString( + hourlyCollectionSnapshotEntity.hourlyTransactions.toString() + ) + ); + + // hourlyCollectionSnapshot entity ends here + + // dailyCollectionSnapshot entity starts here + + // The timestamp is in seconds - day = 864000 seconds + const day = transactionEntity.timestamp / 86400; + + // Collection Address - Day + let dailyCollectionSnapshotEntityId = + transferEntity.collection + "-" + day.toString(); + + let dailyCollectionSnapshotEntity = dailyCollectionSnapshot.load( + dailyCollectionSnapshotEntityId + ); + + if (!dailyCollectionSnapshotEntity) { + dailyCollectionSnapshotEntity = new dailyCollectionSnapshot( + dailyCollectionSnapshotEntityId + ); + dailyCollectionSnapshotEntity.timestamp = day * 86400; + dailyCollectionSnapshotEntity.collection = + transferEntity.collection; + dailyCollectionSnapshotEntity.dailyVolume = + constants.BIGDECIMAL_ZERO; + dailyCollectionSnapshotEntity.dailyTransactions = 0; + dailyCollectionSnapshotEntity.topSale = constants.BIGDECIMAL_ZERO; + dailyCollectionSnapshotEntity.bottomSale = + constants.BIGDECIMAL_ZERO; + + dailyCollectionSnapshotEntity.save(); + } + + // Updating daily total volume & top sale + dailyCollectionSnapshotEntity.dailyVolume = dailyCollectionSnapshotEntity.dailyVolume.plus( + transferAmount + ); + if (transferAmount > dailyCollectionSnapshotEntity.topSale) { + dailyCollectionSnapshotEntity.topSale = transferAmount; } + + // Updating daily total number of transactions + dailyCollectionSnapshotEntity.dailyTransactions = + dailyCollectionSnapshotEntity.dailyTransactions + 1; + + // Daily bottom sale + if ( + transferAmount < dailyCollectionSnapshotEntity.bottomSale || + (dailyCollectionSnapshotEntity.bottomSale == + constants.BIGDECIMAL_ZERO && + transferAmount != constants.BIGDECIMAL_ZERO) + ) { + dailyCollectionSnapshotEntity.bottomSale = transferAmount; + } + + dailyCollectionSnapshotEntity.dailyAvgSale = dailyCollectionSnapshotEntity.dailyVolume.div( + BigDecimal.fromString( + dailyCollectionSnapshotEntity.dailyTransactions.toString() + ) + ); + + // dailyCollectionSnapshot entity ends here + + // weeklyCollectionSnapshot entity starts here + + // The timestamp is in seconds - week = 604800 seconds + const week = transactionEntity.timestamp / 604800; + + // Collection Address - Week + let weeklyCollectionSnapshotEntityId = + transferEntity.collection + "-" + week.toString(); + + let weeklyCollectionSnapshotEntity = weeklyCollectionSnapshot.load( + weeklyCollectionSnapshotEntityId + ); + + if (!weeklyCollectionSnapshotEntity) { + weeklyCollectionSnapshotEntity = new weeklyCollectionSnapshot( + weeklyCollectionSnapshotEntityId + ); + weeklyCollectionSnapshotEntity.timestamp = week * 604800; + weeklyCollectionSnapshotEntity.collection = + transferEntity.collection; + weeklyCollectionSnapshotEntity.weeklyVolume = + constants.BIGDECIMAL_ZERO; + weeklyCollectionSnapshotEntity.weeklyTransactions = 0; + weeklyCollectionSnapshotEntity.topSale = constants.BIGDECIMAL_ZERO; + weeklyCollectionSnapshotEntity.bottomSale = + constants.BIGDECIMAL_ZERO; + + weeklyCollectionSnapshotEntity.save(); + } + + // Updating weekly volume & top sale + weeklyCollectionSnapshotEntity.weeklyVolume = weeklyCollectionSnapshotEntity.weeklyVolume.plus( + transferAmount + ); + if (transferAmount > weeklyCollectionSnapshotEntity.topSale) { + weeklyCollectionSnapshotEntity.topSale = transferAmount; + } + + // Updating weekly total number of transactions + weeklyCollectionSnapshotEntity.weeklyTransactions = + weeklyCollectionSnapshotEntity.weeklyTransactions + 1; + + // Weekly bottom sale + if ( + transferAmount < weeklyCollectionSnapshotEntity.bottomSale || + (weeklyCollectionSnapshotEntity.bottomSale == + constants.BIGDECIMAL_ZERO && + transferAmount != constants.BIGDECIMAL_ZERO) + ) { + weeklyCollectionSnapshotEntity.bottomSale = transferAmount; + } + + weeklyCollectionSnapshotEntity.weeklyAvgSale = weeklyCollectionSnapshotEntity.weeklyVolume.div( + BigDecimal.fromString( + weeklyCollectionSnapshotEntity.weeklyTransactions.toString() + ) + ); + + // weeklyCollectionSnapshot entity ends here + + // Save metric entities + hourlyCollectionSnapshotEntity.save(); + dailyCollectionSnapshotEntity.save(); + weeklyCollectionSnapshotEntity.save(); } } } } - \ No newline at end of file +} diff --git a/src/utils/wethUtil.ts b/src/utils/wethUtil.ts index a5e2166..40b45b1 100644 --- a/src/utils/wethUtil.ts +++ b/src/utils/wethUtil.ts @@ -1,33 +1,27 @@ import { Address } from "@graphprotocol/graph-ts"; import { Transfer } from "../../generated/IERC721/ERC20"; - -import { - transaction, - wethTransaction -} from '../../generated/schema' - - +import { wethTransaction } from "../../generated/schema"; export function handleTransfer(event: Transfer): void { + let wethTest = wethTransaction.load(event.transaction.hash.toHexString()); + let txTo = event.transaction.to; + if (txTo) { + if ( + txTo == + Address.fromString("0x7be8076f4ea4a4ad08075c2508e481d6c946d12b") || //OpenseaV1 + txTo == + Address.fromString("0x7f268357A8c2552623316e2562D90e642bB538E5") || //OpenseaV2 + txTo == + Address.fromString("0x0a267cf51ef038fc00e71801f5a524aec06e4f07") || //Genie + txTo == Address.fromString("0x83c8f28c26bf6aaca652df1dbbe0e1b56f8baba2") //GemSwapV2 + ) { + if (!wethTest) { + let wethEntity = new wethTransaction( + event.transaction.hash.toHexString() + ); - let wethTest = wethTransaction.load(event.transaction.hash.toHexString()) - let txTo = event.transaction.to; - if(txTo){ - if (txTo == Address.fromString('0x7be8076f4ea4a4ad08075c2508e481d6c946d12b') //OpenseaV1 - || txTo == Address.fromString('0x7f268357A8c2552623316e2562D90e642bB538E5') //OpenseaV2 - || txTo == Address.fromString('0x0a267cf51ef038fc00e71801f5a524aec06e4f07') //Genie - || txTo == Address.fromString('0x83c8f28c26bf6aaca652df1dbbe0e1b56f8baba2') //GemSwapV2 - ) { - if (!wethTest) { - - let wethEntity = new wethTransaction(event.transaction.hash.toHexString()) - - wethEntity.save() - - } - } + wethEntity.save(); + } } - + } } - -