@wormhole-foundation/wormhole-connect 4.0.0-beta.0-development → 4.0.0-beta.1-development
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{aptos-CIKjhZ5R.js → aptos-CaGPw7HM.js} +2 -2
- package/dist/assets/create-54a95t1x.js +1 -0
- package/dist/assets/{evm-Ky_mCHhS.js → evm-Bv0RsFka.js} +2 -2
- package/dist/assets/{index-DW7sWcdW.js → index-B5JfIVKE.js} +1 -1
- package/dist/assets/{index-DHLr3HmO.js → index-BCD-VOiF.js} +1 -1
- package/dist/assets/index-BwhO0jGm.js +1 -0
- package/dist/assets/{index-DpM61P6H.js → index-CMULoTsT.js} +1 -1
- package/dist/assets/{index-DZpeOp3V.js → index-CO4HXUmy.js} +1 -1
- package/dist/assets/{index-Bg3NWSHL.js → index-COw2RtBx.js} +1 -1
- package/dist/assets/{index-DRk-Cj0P.js → index-ClrVAZUa.js} +1 -1
- package/dist/assets/{index-D7RgFG0F.js → index-CzQeh-hT.js} +1 -1
- package/dist/assets/{index-Csghphw2.js → index-DC4mZtDw.js} +1 -1
- package/dist/assets/{index-Cqs_fFht.js → index-DI-xN_q3.js} +1 -1
- package/dist/assets/{index-DVbfoP0w.js → index-DRsHBjoG.js} +1 -1
- package/dist/assets/{index-CdAFGcxx.js → index-DXcQbQ8r.js} +1 -1
- package/dist/assets/{index-DJ52h-dV.js → index-DxHhcWFS.js} +1 -1
- package/dist/assets/{index-g9iLhWvp.js → index-GKTf0CV7.js} +1 -1
- package/dist/assets/{index-DuR9wYhp.js → index-aoYIFErC.js} +1 -1
- package/dist/assets/{index-DfNgilHG.js → index-jixjwN_L.js} +1 -1
- package/dist/assets/{solana-jYIeIu4B.js → solana-DpD0VkQS.js} +2 -2
- package/dist/assets/{sui-B96bqBVv.js → sui-7K04yY2U.js} +2 -2
- package/dist/main.js +75 -75
- package/dist/src/components/TokenBalance.d.ts.map +1 -1
- package/dist/src/config/mainnet/tokens.d.ts.map +1 -1
- package/dist/src/config/testnet/tokens.d.ts.map +1 -1
- package/dist/src/contexts/wallet/WalletProvider.d.ts.map +1 -1
- package/dist/src/hooks/useFetchSupportedRoutes.d.ts.map +1 -1
- package/dist/src/hooks/useTokenListWithSearch.d.ts +1 -4
- package/dist/src/hooks/useTokenListWithSearch.d.ts.map +1 -1
- package/dist/src/routes/operator.d.ts.map +1 -1
- package/dist/src/routes/sdkv2/route.d.ts +2 -2
- package/dist/src/routes/sdkv2/route.d.ts.map +1 -1
- package/dist/src/telemetry/types.d.ts +1 -0
- package/dist/src/telemetry/types.d.ts.map +1 -1
- package/dist/src/utils/sdkv2.d.ts.map +1 -1
- package/dist/src/utils/wrappedNativeTokens.d.ts +12 -0
- package/dist/src/utils/wrappedNativeTokens.d.ts.map +1 -0
- package/dist/src/views/Terms.d.ts.map +1 -1
- package/dist/src/views/v2/Bridge/AssetPicker/TokenList.d.ts.map +1 -1
- package/dist/src/views/v3/Bridge/AssetPicker/SearchableList/index.d.ts.map +1 -1
- package/dist/src/views/v3/Bridge/AssetPicker/TokenList.d.ts.map +1 -1
- package/dist/src/views/v3/Bridge/AssetPicker/TokenSectionHeader.d.ts +2 -4
- package/dist/src/views/v3/Bridge/AssetPicker/TokenSectionHeader.d.ts.map +1 -1
- package/lib/{account-D0Q4K1CI.js → account-24z6tDMM.js} +1 -1
- package/lib/{account-BdDruAAr.mjs → account-BcnWVXmg.mjs} +1 -1
- package/lib/{address-fSXS9iww.mjs → address-BX2fIOro.mjs} +1 -1
- package/lib/{address-BO6rj6uK.js → address-Bc-5yO4D.js} +1 -1
- package/lib/{aptos-B1VSCmD9.mjs → aptos-5b4F4UXd.mjs} +4 -4
- package/lib/{aptos-DG7QN21P.js → aptos-B_Yz-0gh.js} +1 -1
- package/lib/{aptos-BnKScTtI.mjs → aptos-DO_Sexq-.mjs} +7 -7
- package/lib/{aptos-B3C7cnvM.js → aptos-DffuIzI0.js} +2 -2
- package/lib/{basic-BRYkcAmD.mjs → basic-BclwqsOq.mjs} +4 -4
- package/lib/{basic-CN2jAqvS.js → basic-BdiYk8Hf.js} +1 -1
- package/lib/{basic-DufHOLGA.js → basic-CuO6iz8a.js} +1 -1
- package/lib/{basic-Cw13RoYq.mjs → basic-HasHL_DG.mjs} +4 -4
- package/lib/{blake2b-CT6EW399.mjs → blake2b-CVpPk5O9.mjs} +1 -1
- package/lib/{blake2b-B_Q_lTGN.js → blake2b-DXExLbRg.js} +1 -1
- package/lib/{browser-ponyfill-CnfcLhK-.mjs → browser-ponyfill-DeOApqpH.mjs} +1 -1
- package/lib/{browser-ponyfill-DbGoEOBo.js → browser-ponyfill-VhIu9z_I.js} +1 -1
- package/lib/{chain-BCKkYvDb.js → chain-BxNUWKZE.js} +1 -1
- package/lib/{chain-_dXKRkCE.mjs → chain-CvZsIsLh.mjs} +1 -1
- package/lib/{chunk-KJH4KKG6-RA0hChr8.mjs → chunk-KJH4KKG6-BgebMATq.mjs} +2 -2
- package/lib/{chunk-KJH4KKG6-BXBLZwfY.js → chunk-KJH4KKG6-DNlN4p21.js} +1 -1
- package/lib/{constants-QsbOfMbk.mjs → constants-DnbaS3cF.mjs} +3 -3
- package/lib/constants-abC7FLXq.js +1 -0
- package/lib/{contract-MkLF5rqi.js → contract-CTycrpaK.js} +1 -1
- package/lib/{contract-C_4H8x77.mjs → contract-KYuIk_vR.mjs} +1 -1
- package/lib/{core-Cpb3gtg_.js → core-COM78LTW.js} +3 -3
- package/lib/{core-ntLR7o2S.mjs → core-DT_3gIqi.mjs} +6 -6
- package/lib/{create-naslyPfU.mjs → create-BvzkkBPW.mjs} +1 -1
- package/lib/{create-CfgTxAS-.js → create-CGZYy2vu.js} +1 -1
- package/lib/{evm-C6xp3v8Z.mjs → evm-CUR4-a7F.mjs} +9 -9
- package/lib/{evm-B3G2Vkzg.js → evm-CoLwXequ.js} +2 -2
- package/lib/{evm-B20n3mf_.mjs → evm-DoVrPE_X.mjs} +7 -7
- package/lib/{evm-aSG_vFbw.js → evm-Dv-WYu07.js} +2 -2
- package/lib/executor.js +1 -1
- package/lib/executor.mjs +815 -572
- package/lib/hosted.js +1 -1
- package/lib/hosted.mjs +1 -1
- package/lib/{index-DSmKiYkD.mjs → index-B1KwS33G.mjs} +5 -5
- package/lib/{index-vhQ5Q8ov.mjs → index-B2sVzSwb.mjs} +52 -97
- package/lib/{index-Bz7ogqhR.mjs → index-B3idKQJG.mjs} +1 -1
- package/lib/index-B7Afz_5P.js +1 -0
- package/lib/{index-Dq7WWqFe.js → index-B7HBnPLP.js} +1 -1
- package/lib/{index-DQX74QAE.js → index-BFBwRlid.js} +1 -1
- package/lib/{index-C6XNAQ4w.js → index-BZZZ8OeS.js} +1 -1
- package/lib/{index-C3LC73WN.js → index-BaYN-RHF.js} +1 -1
- package/lib/{index-BTUx12aa.js → index-Bhwzpq1T.js} +1 -1
- package/lib/{index-MsaML_Ju.mjs → index-Bicx897u.mjs} +2 -2
- package/lib/{index-Dajw3Alx.mjs → index-BlWksu-f.mjs} +1 -1
- package/lib/{index-DS8bl8fA.mjs → index-Bn0hkKKz.mjs} +4 -4
- package/lib/{index-BojkMsXD.js → index-BoKTcLq-.js} +1 -1
- package/lib/{index-BRYq_Nt2.mjs → index-Bp4ojxz6.mjs} +4 -4
- package/lib/{index-Cnznwcdb.js → index-BqabgGIh.js} +1 -1
- package/lib/{index-DxYgNWMY.mjs → index-BtEjOWoP.mjs} +3 -3
- package/lib/{index-BJcbyvof.js → index-C8HxYDNY.js} +1 -1
- package/lib/{index-Bhd_YhUf.js → index-C9Bk-rKp.js} +1 -1
- package/lib/{index-YAL4zolc.js → index-C9uGqcwH.js} +1 -1
- package/lib/{index-BQvEIlB2.mjs → index-CBGUPQXa.mjs} +3 -3
- package/lib/{index-IHxtA-NL.js → index-CGpn3INM.js} +1 -1
- package/lib/{index-BRyW-hBN.mjs → index-CTpINVAG.mjs} +2 -2
- package/lib/{index-bNUantLb.js → index-CjjP3Qp5.js} +1 -1
- package/lib/{index-CU73EUQW.js → index-CkGYgQTz.js} +1 -1
- package/lib/{index-DqzqJgVc.mjs → index-CkvxfaqA.mjs} +3 -3
- package/lib/{index-DfDB5FLw.js → index-ClMpLrxa.js} +1 -1
- package/lib/{index-B7VNYedX.mjs → index-CtU_hkYp.mjs} +4 -4
- package/lib/{index-DMOY218i.js → index-CzRVzbTC.js} +1 -1
- package/lib/{index-B4S4sz6p.mjs → index-Czxl_5Tr.mjs} +5 -5
- package/lib/{index-D0XQIiQn.js → index-D6qJDbzm.js} +1 -1
- package/lib/{index-D-H8WyKb.mjs → index-DGzoIr_I.mjs} +1 -1
- package/lib/{index-BD0gcmCp.mjs → index-DPpi4Don.mjs} +5 -5
- package/lib/{index-7_BfcP8x.mjs → index-DZaOh3F9.mjs} +2105 -2021
- package/lib/{index-QlIJYJce.js → index-DaY7_eQ6.js} +66 -66
- package/lib/{index-C3L-xKvN.mjs → index-DlmQ0_RF.mjs} +4839 -4850
- package/lib/{index-D5ENAOm3.js → index-DmsirrTI.js} +1 -1
- package/lib/{index-DnO0ZdKy.mjs → index-DpN0dULN.mjs} +1 -1
- package/lib/{index-BNuKzxGJ.js → index-DydXCN0v.js} +1 -1
- package/lib/{index-CSMunRpZ.mjs → index-NKV6j8zE.mjs} +3 -3
- package/lib/{index-BIYx5IBr.mjs → index-OlMuNft9.mjs} +3 -3
- package/lib/{index-tztRp3yJ.js → index-P9DbJOzh.js} +1 -1
- package/lib/{index-D1y-l93C.js → index-UbeUI3Ir.js} +1 -1
- package/lib/{index-BZYEbYGY.mjs → index-ZGgSxaDf.mjs} +3 -3
- package/lib/{index-DFpSbD7R.mjs → index-_e8uUnEK.mjs} +5 -5
- package/lib/{index-Cb9lswnP.js → index-cCBQV2Yv.js} +8 -8
- package/lib/{index-B9ybSY9R.mjs → index-cggXdVJu.mjs} +5 -5
- package/lib/{index.es-C476iHvN.mjs → index.es-5ecqX8B9.mjs} +4 -4
- package/lib/{index.es-CU6nhwJO.js → index.es-LBG64XJ6.js} +1 -1
- package/lib/{index.es-CkGpObng.js → index.es-owVcNlof.js} +3 -3
- package/lib/{index.es-CtiAoQ78.mjs → index.es-zNH_KzcH.mjs} +3 -3
- package/lib/index.js +1 -1
- package/lib/index.mjs +5 -5
- package/lib/mayan.js +1 -1
- package/lib/mayan.mjs +11 -11
- package/lib/{mint-zy6P38iu.js → mint-B4t2SvV6.js} +1 -1
- package/lib/{mint-DyoU9X22.mjs → mint-BGuU5y5m.mjs} +1 -1
- package/lib/ntt.js +1 -1
- package/lib/ntt.mjs +14 -12
- package/lib/{platform-x3ZBJ0YM.js → platform-Bkbg7A9d.js} +1 -1
- package/lib/{platform-BqpAMtgx.mjs → platform-C5gJAqtZ.mjs} +3 -3
- package/lib/{platform-BhspUaMJ.js → platform-C6QB7aIN.js} +1 -1
- package/lib/{platform-DQfpyXSV.mjs → platform-DBNvSsue.mjs} +4 -4
- package/lib/{platform-BHAZvZ_O.mjs → platform-DtB8gGMl.mjs} +4 -4
- package/lib/{platform-4nANkJAM.js → platform-qdbxkhTI.js} +1 -1
- package/lib/{provider-jsonrpc-DIXcAw4Q.mjs → provider-jsonrpc-BIIDy-Aw.mjs} +2 -2
- package/lib/{provider-jsonrpc-BCKoIijx.js → provider-jsonrpc-DHzam3ud.js} +1 -1
- package/lib/{secp256k1-CaaRyr2C.mjs → secp256k1-BF6Vm50D.mjs} +1 -1
- package/lib/{secp256k1-C60XBS-e.js → secp256k1-Bb6lbAjK.js} +1 -1
- package/lib/{secp256k1-UnRv5Suy.mjs → secp256k1-BfK5OWRP.mjs} +1 -1
- package/lib/{secp256k1-BWFGSbjt.mjs → secp256k1-CqT-a-I8.mjs} +1 -1
- package/lib/{secp256k1-CFt7TfEF.js → secp256k1-DRTQ6WrU.js} +1 -1
- package/lib/{secp256k1-BIiWvuxu.js → secp256k1-D_GNj8sK.js} +1 -1
- package/lib/{signer-DhO2iGae.mjs → signer-BH3gAHuj.mjs} +2 -2
- package/lib/{signer-BFY1Ytf6.js → signer-MBixef_P.js} +1 -1
- package/lib/{solana-CQk4ocg8.mjs → solana-C1puc64V.mjs} +11 -11
- package/lib/solana-C8xK8qJY.mjs +18 -0
- package/lib/solana-CRSliekb.js +1 -0
- package/lib/{solana-Cp49k9--.js → solana-CtBdJ6Wt.js} +4 -4
- package/lib/{solanaEmbed.esm-Cwa6cl_R.js → solanaEmbed.esm-BpIKVhXq.js} +1 -1
- package/lib/{solanaEmbed.esm-DBOqO9Ii.mjs → solanaEmbed.esm-NdE_DQuw.mjs} +3 -3
- package/lib/src/components/TokenBalance.d.ts.map +1 -1
- package/lib/src/config/mainnet/tokens.d.ts.map +1 -1
- package/lib/src/config/testnet/tokens.d.ts.map +1 -1
- package/lib/src/contexts/wallet/WalletProvider.d.ts.map +1 -1
- package/lib/src/hooks/useFetchSupportedRoutes.d.ts.map +1 -1
- package/lib/src/hooks/useTokenListWithSearch.d.ts +1 -4
- package/lib/src/hooks/useTokenListWithSearch.d.ts.map +1 -1
- package/lib/src/routes/operator.d.ts.map +1 -1
- package/lib/src/routes/sdkv2/route.d.ts +2 -2
- package/lib/src/routes/sdkv2/route.d.ts.map +1 -1
- package/lib/src/telemetry/types.d.ts +1 -0
- package/lib/src/telemetry/types.d.ts.map +1 -1
- package/lib/src/utils/sdkv2.d.ts.map +1 -1
- package/lib/src/utils/wrappedNativeTokens.d.ts +12 -0
- package/lib/src/utils/wrappedNativeTokens.d.ts.map +1 -0
- package/lib/src/views/Terms.d.ts.map +1 -1
- package/lib/src/views/v2/Bridge/AssetPicker/TokenList.d.ts.map +1 -1
- package/lib/src/views/v3/Bridge/AssetPicker/SearchableList/index.d.ts.map +1 -1
- package/lib/src/views/v3/Bridge/AssetPicker/TokenList.d.ts.map +1 -1
- package/lib/src/views/v3/Bridge/AssetPicker/TokenSectionHeader.d.ts +2 -4
- package/lib/src/views/v3/Bridge/AssetPicker/TokenSectionHeader.d.ts.map +1 -1
- package/lib/{sui-C2a1eehP.mjs → sui-BW7tMLZs.mjs} +4 -4
- package/lib/{sui-9gsoM56W.js → sui-DdujB9Bc.js} +1 -1
- package/lib/{sui-Cr98JBgS.js → sui-QcDjGW68.js} +1 -1
- package/lib/{sui-B4RvzEXx.mjs → sui-euceXgYf.mjs} +7 -7
- package/lib/{tokens-BbFKf6Hv.mjs → tokens-DI-tPIbd.mjs} +3 -3
- package/lib/{tokens-LVHsSbYG.js → tokens-DJos2DwM.js} +1 -1
- package/lib/{transfer-DZ-wNocj.js → transfer-BinEH6ml.js} +1 -1
- package/lib/{transfer-BV1ou1GP.mjs → transfer-DTvv5m_5.mjs} +2 -2
- package/lib/{units-BqUlbZ46.mjs → units-CVEv4txp.mjs} +2 -2
- package/lib/{units-D-oRQjOa.js → units-DtldPRXy.js} +1 -1
- package/lib/{unsignedTransaction-BmxD6VsY.mjs → unsignedTransaction-CVE7GUdC.mjs} +3 -3
- package/lib/{unsignedTransaction-CiPKh85X.js → unsignedTransaction-DL3WyIkF.js} +1 -1
- package/lib/{w3m-modal-3qLkbPfi.mjs → w3m-modal-B2VF8j7W.mjs} +2 -2
- package/lib/{w3m-modal-D4-nrnEK.mjs → w3m-modal-C32eQxEe.mjs} +2 -2
- package/lib/{w3m-modal-CoTG8Zu4.js → w3m-modal-DSY2qJYP.js} +1 -1
- package/lib/{w3m-modal-xqVExHU-.js → w3m-modal-DgqSQLqZ.js} +1 -1
- package/lib/{web3-C1wK6wIV.js → web3-BKaP497Y.js} +1 -1
- package/lib/{web3-BkEb7AgB.mjs → web3-BifDBsFp.mjs} +8 -4
- package/package.json +49 -44
- package/dist/assets/create-q7V6muDT.js +0 -1
- package/dist/assets/index-B59bCuJJ.js +0 -1
- package/lib/constants-BR_zyzqY.js +0 -1
- package/lib/index-CXsUtRJQ.js +0 -1
- package/lib/solana-Dv_mUYcl.mjs +0 -18
- package/lib/solana-g3YsP966.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const o=require("./web3-C1wK6wIV.js"),d=require("./contract-MkLF5rqi.js"),ce="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";let $t=null;function en(s){if($t==null){$t={};for(let e=0;e<ce.length;e++)$t[ce[e]]=BigInt(e)}const t=$t[s];return o.assertArgument(t!=null,"invalid base58 value","letter",s),t}const rn=BigInt(0),Le=BigInt(58);function ss(s){const t=o.getBytes(s);let e=d.toBigInt(t),r="";for(;e;)r=ce[Number(e%Le)]+r,e/=Le;for(let n=0;n<t.length&&!t[n];n++)r=ce[0]+r;return r}function sn(s){let t=rn;for(let e=0;e<s.length;e++)t*=Le,t+=en(s[e]);return t}function nn(s){s=atob(s);const t=new Uint8Array(s.length);for(let e=0;e<s.length;e++)t[e]=s.charCodeAt(e);return o.getBytes(t)}function on(s){const t=o.getBytes(s);let e="";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return btoa(e)}function ns(s){async function t(e,r){o.assert(r==null||!r.cancelled,"request cancelled before sending","CANCELLED");const n=e.url.split(":")[0].toLowerCase();o.assert(n==="http"||n==="https",`unsupported protocol ${n}`,"UNSUPPORTED_OPERATION",{info:{protocol:n},operation:"request"}),o.assert(n==="https"||!e.credentials||e.allowInsecureAuthentication,"insecure authorized connections unsupported","UNSUPPORTED_OPERATION",{operation:"request"});let i=null;const a=new AbortController,c=setTimeout(()=>{i=o.makeError("request timeout","TIMEOUT"),a.abort()},e.timeout);r&&r.addListener(()=>{i=o.makeError("request cancelled","CANCELLED"),a.abort()});const l={method:e.method,headers:new Headers(Array.from(e)),body:e.body||void 0,signal:a.signal};let u;try{u=await fetch(e.url,l)}catch(w){throw clearTimeout(c),i||w}clearTimeout(c);const f={};u.headers.forEach((w,m)=>{f[m.toLowerCase()]=w});const h=await u.arrayBuffer(),A=h==null?null:new Uint8Array(h);return{statusCode:u.status,statusMessage:u.statusText,headers:f,body:A}}return t}const an=12,cn=250;let mr=ns();const ln=new RegExp("^data:([^;:]*)?(;base64)?,(.*)$","i"),un=new RegExp("^ipfs://(ipfs/)?(.*)$","i");let Ce=!1;async function is(s,t){try{const e=s.match(ln);if(!e)throw new Error("invalid data");return new gt(200,"OK",{"content-type":e[1]||"text/plain"},e[2]?nn(e[3]):fn(e[3]))}catch{return new gt(599,"BAD REQUEST (invalid data: URI)",{},null,new nt(s))}}function os(s){async function t(e,r){try{const n=e.match(un);if(!n)throw new Error("invalid link");return new nt(`${s}${n[2]}`)}catch{return new gt(599,"BAD REQUEST (invalid IPFS URI)",{},null,new nt(e))}}return t}const te={data:is,ipfs:os("https://gateway.ipfs.io/ipfs/")},as=new WeakMap;class hn{#t;#e;constructor(t){this.#t=[],this.#e=!1,as.set(t,()=>{if(!this.#e){this.#e=!0;for(const e of this.#t)setTimeout(()=>{e()},0);this.#t=[]}})}addListener(t){o.assert(!this.#e,"singal already cancelled","UNSUPPORTED_OPERATION",{operation:"fetchCancelSignal.addCancelListener"}),this.#t.push(t)}get cancelled(){return this.#e}checkSignal(){o.assert(!this.cancelled,"cancelled","CANCELLED",{})}}function ee(s){if(s==null)throw new Error("missing signal; should not happen");return s.checkSignal(),s}class nt{#t;#e;#r;#s;#n;#o;#i;#a;#d;#l;#g;#A;#c;#u;#h;get url(){return this.#o}set url(t){this.#o=String(t)}get body(){return this.#i==null?null:new Uint8Array(this.#i)}set body(t){if(t==null)this.#i=void 0,this.#a=void 0;else if(typeof t=="string")this.#i=d.toUtf8Bytes(t),this.#a="text/plain";else if(t instanceof Uint8Array)this.#i=t,this.#a="application/octet-stream";else if(typeof t=="object")this.#i=d.toUtf8Bytes(JSON.stringify(t)),this.#a="application/json";else throw new Error("invalid body")}hasBody(){return this.#i!=null}get method(){return this.#s?this.#s:this.hasBody()?"POST":"GET"}set method(t){t==null&&(t=""),this.#s=String(t).toUpperCase()}get headers(){const t=Object.assign({},this.#r);return this.#d&&(t.authorization=`Basic ${on(d.toUtf8Bytes(this.#d))}`),this.allowGzip&&(t["accept-encoding"]="gzip"),t["content-type"]==null&&this.#a&&(t["content-type"]=this.#a),this.body&&(t["content-length"]=String(this.body.length)),t}getHeader(t){return this.headers[t.toLowerCase()]}setHeader(t,e){this.#r[String(t).toLowerCase()]=String(e)}clearHeaders(){this.#r={}}[Symbol.iterator](){const t=this.headers,e=Object.keys(t);let r=0;return{next:()=>{if(r<e.length){const n=e[r++];return{value:[n,t[n]],done:!1}}return{value:void 0,done:!0}}}}get credentials(){return this.#d||null}setCredentials(t,e){o.assertArgument(!t.match(/:/),"invalid basic authentication username","username","[REDACTED]"),this.#d=`${t}:${e}`}get allowGzip(){return this.#e}set allowGzip(t){this.#e=!!t}get allowInsecureAuthentication(){return!!this.#t}set allowInsecureAuthentication(t){this.#t=!!t}get timeout(){return this.#n}set timeout(t){o.assertArgument(t>=0,"timeout must be non-zero","timeout",t),this.#n=t}get preflightFunc(){return this.#l||null}set preflightFunc(t){this.#l=t}get processFunc(){return this.#g||null}set processFunc(t){this.#g=t}get retryFunc(){return this.#A||null}set retryFunc(t){this.#A=t}get getUrlFunc(){return this.#h||mr}set getUrlFunc(t){this.#h=t}constructor(t){this.#o=String(t),this.#t=!1,this.#e=!0,this.#r={},this.#s="",this.#n=3e5,this.#u={slotInterval:cn,maxAttempts:an},this.#h=null}toString(){return`<FetchRequest method=${JSON.stringify(this.method)} url=${JSON.stringify(this.url)} headers=${JSON.stringify(this.headers)} body=${this.#i?o.hexlify(this.#i):"null"}>`}setThrottleParams(t){t.slotInterval!=null&&(this.#u.slotInterval=t.slotInterval),t.maxAttempts!=null&&(this.#u.maxAttempts=t.maxAttempts)}async#f(t,e,r,n,i){if(t>=this.#u.maxAttempts)return i.makeServerError("exceeded maximum retry limit");o.assert(wr()<=e,"timeout","TIMEOUT",{operation:"request.send",reason:"timeout",request:n}),r>0&&await dn(r);let a=this.clone();const c=(a.url.split(":")[0]||"").toLowerCase();if(c in te){const f=await te[c](a.url,ee(n.#c));if(f instanceof gt){let h=f;if(this.processFunc){ee(n.#c);try{h=await this.processFunc(a,h)}catch(A){(A.throttle==null||typeof A.stall!="number")&&h.makeServerError("error in post-processing function",A).assertOk()}}return h}a=f}this.preflightFunc&&(a=await this.preflightFunc(a));const l=await this.getUrlFunc(a,ee(n.#c));let u=new gt(l.statusCode,l.statusMessage,l.headers,l.body,n);if(u.statusCode===301||u.statusCode===302){try{const f=u.headers.location||"";return a.redirect(f).#f(t+1,e,0,n,u)}catch{}return u}else if(u.statusCode===429&&(this.retryFunc==null||await this.retryFunc(a,u,t))){const f=u.headers["retry-after"];let h=this.#u.slotInterval*Math.trunc(Math.random()*Math.pow(2,t));return typeof f=="string"&&f.match(/^[1-9][0-9]*$/)&&(h=parseInt(f)),a.clone().#f(t+1,e,h,n,u)}if(this.processFunc){ee(n.#c);try{u=await this.processFunc(a,u)}catch(f){(f.throttle==null||typeof f.stall!="number")&&u.makeServerError("error in post-processing function",f).assertOk();let h=this.#u.slotInterval*Math.trunc(Math.random()*Math.pow(2,t));return f.stall>=0&&(h=f.stall),a.clone().#f(t+1,e,h,n,u)}}return u}send(){return o.assert(this.#c==null,"request already sent","UNSUPPORTED_OPERATION",{operation:"fetchRequest.send"}),this.#c=new hn(this),this.#f(0,wr()+this.timeout,0,this,new gt(0,"",{},null,this))}cancel(){o.assert(this.#c!=null,"request has not been sent","UNSUPPORTED_OPERATION",{operation:"fetchRequest.cancel"});const t=as.get(this);if(!t)throw new Error("missing signal; should not happen");t()}redirect(t){const e=this.url.split(":")[0].toLowerCase(),r=t.split(":")[0].toLowerCase();o.assert(this.method==="GET"&&(e!=="https"||r!=="http")&&t.match(/^https?:/),"unsupported redirect","UNSUPPORTED_OPERATION",{operation:`redirect(${this.method} ${JSON.stringify(this.url)} => ${JSON.stringify(t)})`});const n=new nt(t);return n.method="GET",n.allowGzip=this.allowGzip,n.timeout=this.timeout,n.#r=Object.assign({},this.#r),this.#i&&(n.#i=new Uint8Array(this.#i)),n.#a=this.#a,n}clone(){const t=new nt(this.url);return t.#s=this.#s,this.#i&&(t.#i=this.#i),t.#a=this.#a,t.#r=Object.assign({},this.#r),t.#d=this.#d,this.allowGzip&&(t.allowGzip=!0),t.timeout=this.timeout,this.allowInsecureAuthentication&&(t.allowInsecureAuthentication=!0),t.#l=this.#l,t.#g=this.#g,t.#A=this.#A,t.#u=Object.assign({},this.#u),t.#h=this.#h,t}static lockConfig(){Ce=!0}static getGateway(t){return te[t.toLowerCase()]||null}static registerGateway(t,e){if(t=t.toLowerCase(),t==="http"||t==="https")throw new Error(`cannot intercept ${t}; use registerGetUrl`);if(Ce)throw new Error("gateways locked");te[t]=e}static registerGetUrl(t){if(Ce)throw new Error("gateways locked");mr=t}static createGetUrlFunc(t){return ns()}static createDataGateway(){return is}static createIpfsGatewayFunc(t){return os(t)}}class gt{#t;#e;#r;#s;#n;#o;toString(){return`<FetchResponse status=${this.statusCode} body=${this.#s?o.hexlify(this.#s):"null"}>`}get statusCode(){return this.#t}get statusMessage(){return this.#e}get headers(){return Object.assign({},this.#r)}get body(){return this.#s==null?null:new Uint8Array(this.#s)}get bodyText(){try{return this.#s==null?"":d.toUtf8String(this.#s)}catch{o.assert(!1,"response body is not valid UTF-8 data","UNSUPPORTED_OPERATION",{operation:"bodyText",info:{response:this}})}}get bodyJson(){try{return JSON.parse(this.bodyText)}catch{o.assert(!1,"response body is not valid JSON","UNSUPPORTED_OPERATION",{operation:"bodyJson",info:{response:this}})}}[Symbol.iterator](){const t=this.headers,e=Object.keys(t);let r=0;return{next:()=>{if(r<e.length){const n=e[r++];return{value:[n,t[n]],done:!1}}return{value:void 0,done:!0}}}}constructor(t,e,r,n,i){this.#t=t,this.#e=e,this.#r=Object.keys(r).reduce((a,c)=>(a[c.toLowerCase()]=String(r[c]),a),{}),this.#s=n==null?null:new Uint8Array(n),this.#n=i||null,this.#o={message:""}}makeServerError(t,e){let r;t?r=`CLIENT ESCALATED SERVER ERROR (${this.statusCode} ${this.statusMessage}; ${t})`:(t=`${this.statusCode} ${this.statusMessage}`,r=`CLIENT ESCALATED SERVER ERROR (${t})`);const n=new gt(599,r,this.headers,this.body,this.#n||void 0);return n.#o={message:t,error:e},n}throwThrottleError(t,e){e==null?e=-1:o.assertArgument(Number.isInteger(e)&&e>=0,"invalid stall timeout","stall",e);const r=new Error(t||"throttling requests");throw o.defineProperties(r,{stall:e,throttle:!0}),r}getHeader(t){return this.headers[t.toLowerCase()]}hasBody(){return this.#s!=null}get request(){return this.#n}ok(){return this.#o.message===""&&this.statusCode>=200&&this.statusCode<300}assertOk(){if(this.ok())return;let{message:t,error:e}=this.#o;t===""&&(t=`server response ${this.statusCode} ${this.statusMessage}`);let r=null;this.request&&(r=this.request.url);let n=null;try{this.#s&&(n=d.toUtf8String(this.#s))}catch{}o.assert(!1,t,"SERVER_ERROR",{request:this.request||"unknown request",response:this,error:e,info:{requestUrl:r,responseBody:n,responseStatus:`${this.statusCode} ${this.statusMessage}`}})}}function wr(){return new Date().getTime()}function fn(s){return d.toUtf8Bytes(s.replace(/%([0-9a-f][0-9a-f])/gi,(t,e)=>String.fromCharCode(parseInt(e,16))))}function dn(s){return new Promise(t=>setTimeout(t,s))}function gn(s){let t=s.toString(16);for(;t.length<2;)t="0"+t;return"0x"+t}function yr(s,t,e){let r=0;for(let n=0;n<e;n++)r=r*256+s[t+n];return r}function br(s,t,e,r){const n=[];for(;e<t+1+r;){const i=cs(s,e);n.push(i.result),e+=i.consumed,o.assert(e<=t+1+r,"child data too short","BUFFER_OVERRUN",{buffer:s,length:r,offset:t})}return{consumed:1+r,result:n}}function cs(s,t){o.assert(s.length!==0,"data too short","BUFFER_OVERRUN",{buffer:s,length:0,offset:1});const e=r=>{o.assert(r<=s.length,"data short segment too short","BUFFER_OVERRUN",{buffer:s,length:s.length,offset:r})};if(s[t]>=248){const r=s[t]-247;e(t+1+r);const n=yr(s,t+1,r);return e(t+1+r+n),br(s,t,t+1+r,r+n)}else if(s[t]>=192){const r=s[t]-192;return e(t+1+r),br(s,t,t+1,r)}else if(s[t]>=184){const r=s[t]-183;e(t+1+r);const n=yr(s,t+1,r);e(t+1+r+n);const i=o.hexlify(s.slice(t+1+r,t+1+r+n));return{consumed:1+r+n,result:i}}else if(s[t]>=128){const r=s[t]-128;e(t+1+r);const n=o.hexlify(s.slice(t+1,t+1+r));return{consumed:1+r,result:n}}return{consumed:1,result:gn(s[t])}}function ge(s){const t=o.getBytes(s,"data"),e=cs(t,0);return o.assertArgument(e.consumed===t.length,"unexpected junk after rlp payload","data",s),e.result}function Er(s){const t=[];for(;s;)t.unshift(s&255),s>>=8;return t}function ls(s){if(Array.isArray(s)){let r=[];if(s.forEach(function(i){r=r.concat(ls(i))}),r.length<=55)return r.unshift(192+r.length),r;const n=Er(r.length);return n.unshift(247+n.length),n.concat(r)}const t=Array.prototype.slice.call(o.getBytes(s,"object"));if(t.length===1&&t[0]<=127)return t;if(t.length<=55)return t.unshift(128+t.length),t;const e=Er(t.length);return e.unshift(183+e.length),e.concat(t)}const Br="0123456789abcdef";function Et(s){let t="0x";for(const e of ls(s))t+=Br[e>>4],t+=Br[e&15];return t}class us extends o.Hash{constructor(t,e){super(),this.finished=!1,this.destroyed=!1,o.hash(t);const r=o.toBytes(e);if(this.iHash=t.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const n=this.blockLen,i=new Uint8Array(n);i.set(r.length>n?t.create().update(r).digest():r);for(let a=0;a<i.length;a++)i[a]^=54;this.iHash.update(i),this.oHash=t.create();for(let a=0;a<i.length;a++)i[a]^=106;this.oHash.update(i),i.fill(0)}update(t){return o.exists(this),this.iHash.update(t),this}digestInto(t){o.exists(this),o.bytes$1(t,this.outputLen),this.finished=!0,this.iHash.digestInto(t),this.oHash.update(t),this.oHash.digestInto(t),this.destroy()}digest(){const t=new Uint8Array(this.oHash.outputLen);return this.digestInto(t),t}_cloneInto(t){t||(t=Object.create(Object.getPrototypeOf(this),{}));const{oHash:e,iHash:r,finished:n,destroyed:i,blockLen:a,outputLen:c}=this;return t=t,t.finished=n,t.destroyed=i,t.blockLen=a,t.outputLen=c,t.oHash=e._cloneInto(t.oHash),t.iHash=r._cloneInto(t.iHash),t}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const Ae=(s,t,e)=>new us(s,t).update(e).digest();Ae.create=(s,t)=>new us(s,t);function An(s,t,e,r){o.hash(s);const n=o.checkOpts({dkLen:32,asyncTick:10},r),{c:i,dkLen:a,asyncTick:c}=n;if(o.number(i),o.number(a),o.number(c),i<1)throw new Error("PBKDF2: iterations (c) should be >= 1");const l=o.toBytes(t),u=o.toBytes(e),f=new Uint8Array(a),h=Ae.create(s,l),A=h._cloneInto().update(u);return{c:i,dkLen:a,asyncTick:c,DK:f,PRF:h,PRFSalt:A}}function pn(s,t,e,r,n){return s.destroy(),t.destroy(),r&&r.destroy(),n.fill(0),e}function hs(s,t,e,r){const{c:n,dkLen:i,DK:a,PRF:c,PRFSalt:l}=An(s,t,e,r);let u;const f=new Uint8Array(4),h=o.createView(f),A=new Uint8Array(c.outputLen);for(let w=1,m=0;m<i;w++,m+=c.outputLen){const g=a.subarray(m,m+c.outputLen);h.setInt32(0,w,!1),(u=l._cloneInto(u)).update(f).digestInto(A),g.set(A.subarray(0,g.length));for(let p=1;p<n;p++){c._cloneInto(u).update(A).digestInto(A);for(let y=0;y<g.length;y++)g[y]^=A[y]}}return pn(c,l,a,u,A)}function mn(s,t,e,r){if(typeof s.setBigUint64=="function")return s.setBigUint64(t,e,r);const n=BigInt(32),i=BigInt(4294967295),a=Number(e>>n&i),c=Number(e&i),l=r?4:0,u=r?0:4;s.setUint32(t+l,a,r),s.setUint32(t+u,c,r)}class _e extends o.Hash{constructor(t,e,r,n){super(),this.blockLen=t,this.outputLen=e,this.padOffset=r,this.isLE=n,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(t),this.view=o.createView(this.buffer)}update(t){o.exists(this);const{view:e,buffer:r,blockLen:n}=this;t=o.toBytes(t);const i=t.length;for(let a=0;a<i;){const c=Math.min(n-this.pos,i-a);if(c===n){const l=o.createView(t);for(;n<=i-a;a+=n)this.process(l,a);continue}r.set(t.subarray(a,a+c),this.pos),this.pos+=c,a+=c,this.pos===n&&(this.process(e,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){o.exists(this),o.output(t,this),this.finished=!0;const{buffer:e,view:r,blockLen:n,isLE:i}=this;let{pos:a}=this;e[a++]=128,this.buffer.subarray(a).fill(0),this.padOffset>n-a&&(this.process(r,0),a=0);for(let h=a;h<n;h++)e[h]=0;mn(r,n-8,BigInt(this.length*8),i),this.process(r,0);const c=o.createView(t),l=this.outputLen;if(l%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const u=l/4,f=this.get();if(u>f.length)throw new Error("_sha2: outputLen bigger than state");for(let h=0;h<u;h++)c.setUint32(4*h,f[h],i)}digest(){const{buffer:t,outputLen:e}=this;this.digestInto(t);const r=t.slice(0,e);return this.destroy(),r}_cloneInto(t){t||(t=new this.constructor),t.set(...this.get());const{blockLen:e,buffer:r,length:n,finished:i,destroyed:a,pos:c}=this;return t.length=n,t.pos=c,t.finished=i,t.destroyed=a,n%e&&t.buffer.set(r),t}}const wn=(s,t,e)=>s&t^~s&e,yn=(s,t,e)=>s&t^s&e^t&e,bn=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),lt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),ut=new Uint32Array(64);class En extends _e{constructor(){super(64,32,8,!1),this.A=lt[0]|0,this.B=lt[1]|0,this.C=lt[2]|0,this.D=lt[3]|0,this.E=lt[4]|0,this.F=lt[5]|0,this.G=lt[6]|0,this.H=lt[7]|0}get(){const{A:t,B:e,C:r,D:n,E:i,F:a,G:c,H:l}=this;return[t,e,r,n,i,a,c,l]}set(t,e,r,n,i,a,c,l){this.A=t|0,this.B=e|0,this.C=r|0,this.D=n|0,this.E=i|0,this.F=a|0,this.G=c|0,this.H=l|0}process(t,e){for(let h=0;h<16;h++,e+=4)ut[h]=t.getUint32(e,!1);for(let h=16;h<64;h++){const A=ut[h-15],w=ut[h-2],m=o.rotr(A,7)^o.rotr(A,18)^A>>>3,g=o.rotr(w,17)^o.rotr(w,19)^w>>>10;ut[h]=g+ut[h-7]+m+ut[h-16]|0}let{A:r,B:n,C:i,D:a,E:c,F:l,G:u,H:f}=this;for(let h=0;h<64;h++){const A=o.rotr(c,6)^o.rotr(c,11)^o.rotr(c,25),w=f+A+wn(c,l,u)+bn[h]+ut[h]|0,g=(o.rotr(r,2)^o.rotr(r,13)^o.rotr(r,22))+yn(r,n,i)|0;f=u,u=l,l=c,c=a+w|0,a=i,i=n,n=r,r=w+g|0}r=r+this.A|0,n=n+this.B|0,i=i+this.C|0,a=a+this.D|0,c=c+this.E|0,l=l+this.F|0,u=u+this.G|0,f=f+this.H|0,this.set(r,n,i,a,c,l,u,f)}roundClean(){ut.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}const Zt=o.wrapConstructor(()=>new En),[Bn,xn]=o.u64$1.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(s=>BigInt(s))),ht=new Uint32Array(80),ft=new Uint32Array(80);class Cn extends _e{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){const{Ah:t,Al:e,Bh:r,Bl:n,Ch:i,Cl:a,Dh:c,Dl:l,Eh:u,El:f,Fh:h,Fl:A,Gh:w,Gl:m,Hh:g,Hl:p}=this;return[t,e,r,n,i,a,c,l,u,f,h,A,w,m,g,p]}set(t,e,r,n,i,a,c,l,u,f,h,A,w,m,g,p){this.Ah=t|0,this.Al=e|0,this.Bh=r|0,this.Bl=n|0,this.Ch=i|0,this.Cl=a|0,this.Dh=c|0,this.Dl=l|0,this.Eh=u|0,this.El=f|0,this.Fh=h|0,this.Fl=A|0,this.Gh=w|0,this.Gl=m|0,this.Hh=g|0,this.Hl=p|0}process(t,e){for(let E=0;E<16;E++,e+=4)ht[E]=t.getUint32(e),ft[E]=t.getUint32(e+=4);for(let E=16;E<80;E++){const k=ht[E-15]|0,P=ft[E-15]|0,B=o.u64$1.rotrSH(k,P,1)^o.u64$1.rotrSH(k,P,8)^o.u64$1.shrSH(k,P,7),N=o.u64$1.rotrSL(k,P,1)^o.u64$1.rotrSL(k,P,8)^o.u64$1.shrSL(k,P,7),I=ht[E-2]|0,D=ft[E-2]|0,R=o.u64$1.rotrSH(I,D,19)^o.u64$1.rotrBH(I,D,61)^o.u64$1.shrSH(I,D,6),O=o.u64$1.rotrSL(I,D,19)^o.u64$1.rotrBL(I,D,61)^o.u64$1.shrSL(I,D,6),Q=o.u64$1.add4L(N,O,ft[E-7],ft[E-16]),z=o.u64$1.add4H(Q,B,R,ht[E-7],ht[E-16]);ht[E]=z|0,ft[E]=Q|0}let{Ah:r,Al:n,Bh:i,Bl:a,Ch:c,Cl:l,Dh:u,Dl:f,Eh:h,El:A,Fh:w,Fl:m,Gh:g,Gl:p,Hh:y,Hl:C}=this;for(let E=0;E<80;E++){const k=o.u64$1.rotrSH(h,A,14)^o.u64$1.rotrSH(h,A,18)^o.u64$1.rotrBH(h,A,41),P=o.u64$1.rotrSL(h,A,14)^o.u64$1.rotrSL(h,A,18)^o.u64$1.rotrBL(h,A,41),B=h&w^~h&g,N=A&m^~A&p,I=o.u64$1.add5L(C,P,N,xn[E],ft[E]),D=o.u64$1.add5H(I,y,k,B,Bn[E],ht[E]),R=I|0,O=o.u64$1.rotrSH(r,n,28)^o.u64$1.rotrBH(r,n,34)^o.u64$1.rotrBH(r,n,39),Q=o.u64$1.rotrSL(r,n,28)^o.u64$1.rotrBL(r,n,34)^o.u64$1.rotrBL(r,n,39),z=r&i^r&c^i&c,et=n&a^n&l^a&l;y=g|0,C=p|0,g=w|0,p=m|0,w=h|0,m=A|0,{h,l:A}=o.u64$1.add(u|0,f|0,D|0,R|0),u=c|0,f=l|0,c=i|0,l=a|0,i=r|0,a=n|0;const b=o.u64$1.add3L(R,Q,et);r=o.u64$1.add3H(b,D,O,z),n=b|0}({h:r,l:n}=o.u64$1.add(this.Ah|0,this.Al|0,r|0,n|0)),{h:i,l:a}=o.u64$1.add(this.Bh|0,this.Bl|0,i|0,a|0),{h:c,l}=o.u64$1.add(this.Ch|0,this.Cl|0,c|0,l|0),{h:u,l:f}=o.u64$1.add(this.Dh|0,this.Dl|0,u|0,f|0),{h,l:A}=o.u64$1.add(this.Eh|0,this.El|0,h|0,A|0),{h:w,l:m}=o.u64$1.add(this.Fh|0,this.Fl|0,w|0,m|0),{h:g,l:p}=o.u64$1.add(this.Gh|0,this.Gl|0,g|0,p|0),{h:y,l:C}=o.u64$1.add(this.Hh|0,this.Hl|0,y|0,C|0),this.set(r,n,i,a,c,l,u,f,h,A,w,m,g,p,y,C)}roundClean(){ht.fill(0),ft.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}const $e=o.wrapConstructor(()=>new Cn);function In(){if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof o.global<"u")return o.global;throw new Error("unable to locate global object")}const xr=In(),Cr=xr.crypto||xr.msCrypto;function Pn(s){switch(s){case"sha256":return Zt.create();case"sha512":return $e.create()}o.assertArgument(!1,"invalid hashing algorithm name","algorithm",s)}function Nn(s,t){const e={sha256:Zt,sha512:$e}[s];return o.assertArgument(e!=null,"invalid hmac algorithm","algorithm",s),Ae.create(e,t)}function kn(s,t,e,r,n){const i={sha256:Zt,sha512:$e}[n];return o.assertArgument(i!=null,"invalid pbkdf2 algorithm","algorithm",n),hs(i,s,t,{c:e,dkLen:r})}function Sn(s){o.assert(Cr!=null,"platform does not support secure random numbers","UNSUPPORTED_OPERATION",{operation:"randomBytes"}),o.assertArgument(Number.isInteger(s)&&s>0&&s<=1024,"invalid length","length",s);const t=new Uint8Array(s);return Cr.getRandomValues(t),t}const fs=function(s){return Pn("sha256").update(s).digest()};let ds=fs,gs=!1;function Bt(s){const t=o.getBytes(s,"data");return o.hexlify(ds(t))}Bt._=fs;Bt.lock=function(){gs=!0};Bt.register=function(s){if(gs)throw new Error("sha256 is locked");ds=s};Object.freeze(Bt);Object.freeze(Bt);/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const As=BigInt(0),pe=BigInt(1),vn=BigInt(2),me=s=>s instanceof Uint8Array,Rn=Array.from({length:256},(s,t)=>t.toString(16).padStart(2,"0"));function Ot(s){if(!me(s))throw new Error("Uint8Array expected");let t="";for(let e=0;e<s.length;e++)t+=Rn[s[e]];return t}function ps(s){const t=s.toString(16);return t.length&1?`0${t}`:t}function tr(s){if(typeof s!="string")throw new Error("hex string expected, got "+typeof s);return BigInt(s===""?"0":`0x${s}`)}function Dt(s){if(typeof s!="string")throw new Error("hex string expected, got "+typeof s);const t=s.length;if(t%2)throw new Error("padded hex string expected, got unpadded hex of length "+t);const e=new Uint8Array(t/2);for(let r=0;r<e.length;r++){const n=r*2,i=s.slice(n,n+2),a=Number.parseInt(i,16);if(Number.isNaN(a)||a<0)throw new Error("Invalid byte sequence");e[r]=a}return e}function bt(s){return tr(Ot(s))}function er(s){if(!me(s))throw new Error("Uint8Array expected");return tr(Ot(Uint8Array.from(s).reverse()))}function Tt(s,t){return Dt(s.toString(16).padStart(t*2,"0"))}function rr(s,t){return Tt(s,t).reverse()}function On(s){return Dt(ps(s))}function $(s,t,e){let r;if(typeof t=="string")try{r=Dt(t)}catch(i){throw new Error(`${s} must be valid hex string, got "${t}". Cause: ${i}`)}else if(me(t))r=Uint8Array.from(t);else throw new Error(`${s} must be hex string or Uint8Array`);const n=r.length;if(typeof e=="number"&&n!==e)throw new Error(`${s} expected ${e} bytes, got ${n}`);return r}function Vt(...s){const t=new Uint8Array(s.reduce((r,n)=>r+n.length,0));let e=0;return s.forEach(r=>{if(!me(r))throw new Error("Uint8Array expected");t.set(r,e),e+=r.length}),t}function Dn(s,t){if(s.length!==t.length)return!1;for(let e=0;e<s.length;e++)if(s[e]!==t[e])return!1;return!0}function Tn(s){if(typeof s!="string")throw new Error(`utf8ToBytes expected string, got ${typeof s}`);return new Uint8Array(new TextEncoder().encode(s))}function Fn(s){let t;for(t=0;s>As;s>>=pe,t+=1);return t}function Ln(s,t){return s>>BigInt(t)&pe}const Un=(s,t,e)=>s|(e?pe:As)<<BigInt(t),sr=s=>(vn<<BigInt(s-1))-pe,Ie=s=>new Uint8Array(s),Ir=s=>Uint8Array.from(s);function ms(s,t,e){if(typeof s!="number"||s<2)throw new Error("hashLen must be a number");if(typeof t!="number"||t<2)throw new Error("qByteLen must be a number");if(typeof e!="function")throw new Error("hmacFn must be a function");let r=Ie(s),n=Ie(s),i=0;const a=()=>{r.fill(1),n.fill(0),i=0},c=(...h)=>e(n,r,...h),l=(h=Ie())=>{n=c(Ir([0]),h),r=c(),h.length!==0&&(n=c(Ir([1]),h),r=c())},u=()=>{if(i++>=1e3)throw new Error("drbg: tried 1000 values");let h=0;const A=[];for(;h<t;){r=c();const w=r.slice();A.push(w),h+=r.length}return Vt(...A)};return(h,A)=>{a(),l(h);let w;for(;!(w=A(u()));)l();return a(),w}}const Mn={bigint:s=>typeof s=="bigint",function:s=>typeof s=="function",boolean:s=>typeof s=="boolean",string:s=>typeof s=="string",stringOrUint8Array:s=>typeof s=="string"||s instanceof Uint8Array,isSafeInteger:s=>Number.isSafeInteger(s),array:s=>Array.isArray(s),field:(s,t)=>t.Fp.isValid(s),hash:s=>typeof s=="function"&&Number.isSafeInteger(s.outputLen)};function Yt(s,t,e={}){const r=(n,i,a)=>{const c=Mn[i];if(typeof c!="function")throw new Error(`Invalid validator "${i}", expected function`);const l=s[n];if(!(a&&l===void 0)&&!c(l,s))throw new Error(`Invalid param ${String(n)}=${l} (${typeof l}), expected ${i}`)};for(const[n,i]of Object.entries(t))r(n,i,!1);for(const[n,i]of Object.entries(e))r(n,i,!0);return s}const Hn=Object.freeze(Object.defineProperty({__proto__:null,bitGet:Ln,bitLen:Fn,bitMask:sr,bitSet:Un,bytesToHex:Ot,bytesToNumberBE:bt,bytesToNumberLE:er,concatBytes:Vt,createHmacDrbg:ms,ensureBytes:$,equalBytes:Dn,hexToBytes:Dt,hexToNumber:tr,numberToBytesBE:Tt,numberToBytesLE:rr,numberToHexUnpadded:ps,numberToVarBytesBE:On,utf8ToBytes:Tn,validateObject:Yt},Symbol.toStringTag,{value:"Module"}));/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const J=BigInt(0),U=BigInt(1),mt=BigInt(2),Qn=BigInt(3),Ue=BigInt(4),Pr=BigInt(5),Nr=BigInt(8);BigInt(9);BigInt(16);function Z(s,t){const e=s%t;return e>=J?e:t+e}function Gn(s,t,e){if(e<=J||t<J)throw new Error("Expected power/modulo > 0");if(e===U)return J;let r=U;for(;t>J;)t&U&&(r=r*s%e),s=s*s%e,t>>=U;return r}function X(s,t,e){let r=s;for(;t-- >J;)r*=r,r%=e;return r}function Me(s,t){if(s===J||t<=J)throw new Error(`invert: expected positive integers, got n=${s} mod=${t}`);let e=Z(s,t),r=t,n=J,i=U;for(;e!==J;){const c=r/e,l=r%e,u=n-i*c;r=e,e=l,n=i,i=u}if(r!==U)throw new Error("invert: does not exist");return Z(n,t)}function Vn(s){const t=(s-U)/mt;let e,r,n;for(e=s-U,r=0;e%mt===J;e/=mt,r++);for(n=mt;n<s&&Gn(n,t,s)!==s-U;n++);if(r===1){const a=(s+U)/Ue;return function(l,u){const f=l.pow(u,a);if(!l.eql(l.sqr(f),u))throw new Error("Cannot find square root");return f}}const i=(e+U)/mt;return function(c,l){if(c.pow(l,t)===c.neg(c.ONE))throw new Error("Cannot find square root");let u=r,f=c.pow(c.mul(c.ONE,n),e),h=c.pow(l,i),A=c.pow(l,e);for(;!c.eql(A,c.ONE);){if(c.eql(A,c.ZERO))return c.ZERO;let w=1;for(let g=c.sqr(A);w<u&&!c.eql(g,c.ONE);w++)g=c.sqr(g);const m=c.pow(f,U<<BigInt(u-w-1));f=c.sqr(m),h=c.mul(h,m),A=c.mul(A,f),u=w}return h}}function Jn(s){if(s%Ue===Qn){const t=(s+U)/Ue;return function(r,n){const i=r.pow(n,t);if(!r.eql(r.sqr(i),n))throw new Error("Cannot find square root");return i}}if(s%Nr===Pr){const t=(s-Pr)/Nr;return function(r,n){const i=r.mul(n,mt),a=r.pow(i,t),c=r.mul(n,a),l=r.mul(r.mul(c,mt),a),u=r.mul(c,r.sub(l,r.ONE));if(!r.eql(r.sqr(u),n))throw new Error("Cannot find square root");return u}}return Vn(s)}const zn=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Kn(s){const t={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},e=zn.reduce((r,n)=>(r[n]="function",r),t);return Yt(s,e)}function jn(s,t,e){if(e<J)throw new Error("Expected power > 0");if(e===J)return s.ONE;if(e===U)return t;let r=s.ONE,n=t;for(;e>J;)e&U&&(r=s.mul(r,n)),n=s.sqr(n),e>>=U;return r}function Zn(s,t){const e=new Array(t.length),r=t.reduce((i,a,c)=>s.is0(a)?i:(e[c]=i,s.mul(i,a)),s.ONE),n=s.inv(r);return t.reduceRight((i,a,c)=>s.is0(a)?i:(e[c]=s.mul(i,e[c]),s.mul(i,a)),n),e}function ws(s,t){const e=t!==void 0?t:s.toString(2).length,r=Math.ceil(e/8);return{nBitLength:e,nByteLength:r}}function Yn(s,t,e=!1,r={}){if(s<=J)throw new Error(`Expected Field ORDER > 0, got ${s}`);const{nBitLength:n,nByteLength:i}=ws(s,t);if(i>2048)throw new Error("Field lengths over 2048 bytes are not supported");const a=Jn(s),c=Object.freeze({ORDER:s,BITS:n,BYTES:i,MASK:sr(n),ZERO:J,ONE:U,create:l=>Z(l,s),isValid:l=>{if(typeof l!="bigint")throw new Error(`Invalid field element: expected bigint, got ${typeof l}`);return J<=l&&l<s},is0:l=>l===J,isOdd:l=>(l&U)===U,neg:l=>Z(-l,s),eql:(l,u)=>l===u,sqr:l=>Z(l*l,s),add:(l,u)=>Z(l+u,s),sub:(l,u)=>Z(l-u,s),mul:(l,u)=>Z(l*u,s),pow:(l,u)=>jn(c,l,u),div:(l,u)=>Z(l*Me(u,s),s),sqrN:l=>l*l,addN:(l,u)=>l+u,subN:(l,u)=>l-u,mulN:(l,u)=>l*u,inv:l=>Me(l,s),sqrt:r.sqrt||(l=>a(c,l)),invertBatch:l=>Zn(c,l),cmov:(l,u,f)=>f?u:l,toBytes:l=>e?rr(l,i):Tt(l,i),fromBytes:l=>{if(l.length!==i)throw new Error(`Fp.fromBytes: expected ${i}, got ${l.length}`);return e?er(l):bt(l)}});return Object.freeze(c)}function ys(s){if(typeof s!="bigint")throw new Error("field order must be bigint");const t=s.toString(2).length;return Math.ceil(t/8)}function bs(s){const t=ys(s);return t+Math.ceil(t/2)}function qn(s,t,e=!1){const r=s.length,n=ys(t),i=bs(t);if(r<16||r<i||r>1024)throw new Error(`expected ${i}-1024 bytes of input, got ${r}`);const a=e?bt(s):er(s),c=Z(a,t-U)+U;return e?rr(c,n):Tt(c,n)}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const Wn=BigInt(0),Pe=BigInt(1);function Xn(s,t){const e=(n,i)=>{const a=i.negate();return n?a:i},r=n=>{const i=Math.ceil(t/n)+1,a=2**(n-1);return{windows:i,windowSize:a}};return{constTimeNegate:e,unsafeLadder(n,i){let a=s.ZERO,c=n;for(;i>Wn;)i&Pe&&(a=a.add(c)),c=c.double(),i>>=Pe;return a},precomputeWindow(n,i){const{windows:a,windowSize:c}=r(i),l=[];let u=n,f=u;for(let h=0;h<a;h++){f=u,l.push(f);for(let A=1;A<c;A++)f=f.add(u),l.push(f);u=f.double()}return l},wNAF(n,i,a){const{windows:c,windowSize:l}=r(n);let u=s.ZERO,f=s.BASE;const h=BigInt(2**n-1),A=2**n,w=BigInt(n);for(let m=0;m<c;m++){const g=m*l;let p=Number(a&h);a>>=w,p>l&&(p-=A,a+=Pe);const y=g,C=g+Math.abs(p)-1,E=m%2!==0,k=p<0;p===0?f=f.add(e(E,i[y])):u=u.add(e(k,i[C]))}return{p:u,f}},wNAFCached(n,i,a,c){const l=n._WINDOW_SIZE||1;let u=i.get(n);return u||(u=this.precomputeWindow(n,l),l!==1&&i.set(n,c(u))),this.wNAF(l,u,a)}}}function Es(s){return Kn(s.Fp),Yt(s,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...ws(s.n,s.nBitLength),...s,p:s.Fp.ORDER})}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function _n(s){const t=Es(s);Yt(t,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});const{endo:e,Fp:r,a:n}=t;if(e){if(!r.eql(n,r.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if(typeof e!="object"||typeof e.beta!="bigint"||typeof e.splitScalar!="function")throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...t})}const{bytesToNumberBE:$n,hexToBytes:ti}=Hn,wt={Err:class extends Error{constructor(t=""){super(t)}},_parseInt(s){const{Err:t}=wt;if(s.length<2||s[0]!==2)throw new t("Invalid signature integer tag");const e=s[1],r=s.subarray(2,e+2);if(!e||r.length!==e)throw new t("Invalid signature integer: wrong length");if(r[0]&128)throw new t("Invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new t("Invalid signature integer: unnecessary leading zero");return{d:$n(r),l:s.subarray(e+2)}},toSig(s){const{Err:t}=wt,e=typeof s=="string"?ti(s):s;if(!(e instanceof Uint8Array))throw new Error("ui8a expected");let r=e.length;if(r<2||e[0]!=48)throw new t("Invalid signature tag");if(e[1]!==r-2)throw new t("Invalid signature: incorrect length");const{d:n,l:i}=wt._parseInt(e.subarray(2)),{d:a,l:c}=wt._parseInt(i);if(c.length)throw new t("Invalid signature: left bytes after parsing");return{r:n,s:a}},hexFromSig(s){const t=u=>Number.parseInt(u[0],16)&8?"00"+u:u,e=u=>{const f=u.toString(16);return f.length&1?`0${f}`:f},r=t(e(s.s)),n=t(e(s.r)),i=r.length/2,a=n.length/2,c=e(i),l=e(a);return`30${e(a+i+4)}02${l}${n}02${c}${r}`}},it=BigInt(0),_=BigInt(1);BigInt(2);const kr=BigInt(3);BigInt(4);function ei(s){const t=_n(s),{Fp:e}=t,r=t.toBytes||((m,g,p)=>{const y=g.toAffine();return Vt(Uint8Array.from([4]),e.toBytes(y.x),e.toBytes(y.y))}),n=t.fromBytes||(m=>{const g=m.subarray(1),p=e.fromBytes(g.subarray(0,e.BYTES)),y=e.fromBytes(g.subarray(e.BYTES,2*e.BYTES));return{x:p,y}});function i(m){const{a:g,b:p}=t,y=e.sqr(m),C=e.mul(y,m);return e.add(e.add(C,e.mul(m,g)),p)}if(!e.eql(e.sqr(t.Gy),i(t.Gx)))throw new Error("bad generator point: equation left != right");function a(m){return typeof m=="bigint"&&it<m&&m<t.n}function c(m){if(!a(m))throw new Error("Expected valid bigint: 0 < bigint < curve.n")}function l(m){const{allowedPrivateKeyLengths:g,nByteLength:p,wrapPrivateKey:y,n:C}=t;if(g&&typeof m!="bigint"){if(m instanceof Uint8Array&&(m=Ot(m)),typeof m!="string"||!g.includes(m.length))throw new Error("Invalid key");m=m.padStart(p*2,"0")}let E;try{E=typeof m=="bigint"?m:bt($("private key",m,p))}catch{throw new Error(`private key must be ${p} bytes, hex or bigint, not ${typeof m}`)}return y&&(E=Z(E,C)),c(E),E}const u=new Map;function f(m){if(!(m instanceof h))throw new Error("ProjectivePoint expected")}class h{constructor(g,p,y){if(this.px=g,this.py=p,this.pz=y,g==null||!e.isValid(g))throw new Error("x required");if(p==null||!e.isValid(p))throw new Error("y required");if(y==null||!e.isValid(y))throw new Error("z required")}static fromAffine(g){const{x:p,y}=g||{};if(!g||!e.isValid(p)||!e.isValid(y))throw new Error("invalid affine point");if(g instanceof h)throw new Error("projective point not allowed");const C=E=>e.eql(E,e.ZERO);return C(p)&&C(y)?h.ZERO:new h(p,y,e.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(g){const p=e.invertBatch(g.map(y=>y.pz));return g.map((y,C)=>y.toAffine(p[C])).map(h.fromAffine)}static fromHex(g){const p=h.fromAffine(n($("pointHex",g)));return p.assertValidity(),p}static fromPrivateKey(g){return h.BASE.multiply(l(g))}_setWindowSize(g){this._WINDOW_SIZE=g,u.delete(this)}assertValidity(){if(this.is0()){if(t.allowInfinityPoint&&!e.is0(this.py))return;throw new Error("bad point: ZERO")}const{x:g,y:p}=this.toAffine();if(!e.isValid(g)||!e.isValid(p))throw new Error("bad point: x or y not FE");const y=e.sqr(p),C=i(g);if(!e.eql(y,C))throw new Error("bad point: equation left != right");if(!this.isTorsionFree())throw new Error("bad point: not in prime-order subgroup")}hasEvenY(){const{y:g}=this.toAffine();if(e.isOdd)return!e.isOdd(g);throw new Error("Field doesn't support isOdd")}equals(g){f(g);const{px:p,py:y,pz:C}=this,{px:E,py:k,pz:P}=g,B=e.eql(e.mul(p,P),e.mul(E,C)),N=e.eql(e.mul(y,P),e.mul(k,C));return B&&N}negate(){return new h(this.px,e.neg(this.py),this.pz)}double(){const{a:g,b:p}=t,y=e.mul(p,kr),{px:C,py:E,pz:k}=this;let P=e.ZERO,B=e.ZERO,N=e.ZERO,I=e.mul(C,C),D=e.mul(E,E),R=e.mul(k,k),O=e.mul(C,E);return O=e.add(O,O),N=e.mul(C,k),N=e.add(N,N),P=e.mul(g,N),B=e.mul(y,R),B=e.add(P,B),P=e.sub(D,B),B=e.add(D,B),B=e.mul(P,B),P=e.mul(O,P),N=e.mul(y,N),R=e.mul(g,R),O=e.sub(I,R),O=e.mul(g,O),O=e.add(O,N),N=e.add(I,I),I=e.add(N,I),I=e.add(I,R),I=e.mul(I,O),B=e.add(B,I),R=e.mul(E,k),R=e.add(R,R),I=e.mul(R,O),P=e.sub(P,I),N=e.mul(R,D),N=e.add(N,N),N=e.add(N,N),new h(P,B,N)}add(g){f(g);const{px:p,py:y,pz:C}=this,{px:E,py:k,pz:P}=g;let B=e.ZERO,N=e.ZERO,I=e.ZERO;const D=t.a,R=e.mul(t.b,kr);let O=e.mul(p,E),Q=e.mul(y,k),z=e.mul(C,P),et=e.add(p,y),b=e.add(E,k);et=e.mul(et,b),b=e.add(O,Q),et=e.sub(et,b),b=e.add(p,C);let x=e.add(E,P);return b=e.mul(b,x),x=e.add(O,z),b=e.sub(b,x),x=e.add(y,C),B=e.add(k,P),x=e.mul(x,B),B=e.add(Q,z),x=e.sub(x,B),I=e.mul(D,b),B=e.mul(R,z),I=e.add(B,I),B=e.sub(Q,I),I=e.add(Q,I),N=e.mul(B,I),Q=e.add(O,O),Q=e.add(Q,O),z=e.mul(D,z),b=e.mul(R,b),Q=e.add(Q,z),z=e.sub(O,z),z=e.mul(D,z),b=e.add(b,z),O=e.mul(Q,b),N=e.add(N,O),O=e.mul(x,b),B=e.mul(et,B),B=e.sub(B,O),O=e.mul(et,Q),I=e.mul(x,I),I=e.add(I,O),new h(B,N,I)}subtract(g){return this.add(g.negate())}is0(){return this.equals(h.ZERO)}wNAF(g){return w.wNAFCached(this,u,g,p=>{const y=e.invertBatch(p.map(C=>C.pz));return p.map((C,E)=>C.toAffine(y[E])).map(h.fromAffine)})}multiplyUnsafe(g){const p=h.ZERO;if(g===it)return p;if(c(g),g===_)return this;const{endo:y}=t;if(!y)return w.unsafeLadder(this,g);let{k1neg:C,k1:E,k2neg:k,k2:P}=y.splitScalar(g),B=p,N=p,I=this;for(;E>it||P>it;)E&_&&(B=B.add(I)),P&_&&(N=N.add(I)),I=I.double(),E>>=_,P>>=_;return C&&(B=B.negate()),k&&(N=N.negate()),N=new h(e.mul(N.px,y.beta),N.py,N.pz),B.add(N)}multiply(g){c(g);let p=g,y,C;const{endo:E}=t;if(E){const{k1neg:k,k1:P,k2neg:B,k2:N}=E.splitScalar(p);let{p:I,f:D}=this.wNAF(P),{p:R,f:O}=this.wNAF(N);I=w.constTimeNegate(k,I),R=w.constTimeNegate(B,R),R=new h(e.mul(R.px,E.beta),R.py,R.pz),y=I.add(R),C=D.add(O)}else{const{p:k,f:P}=this.wNAF(p);y=k,C=P}return h.normalizeZ([y,C])[0]}multiplyAndAddUnsafe(g,p,y){const C=h.BASE,E=(P,B)=>B===it||B===_||!P.equals(C)?P.multiplyUnsafe(B):P.multiply(B),k=E(this,p).add(E(g,y));return k.is0()?void 0:k}toAffine(g){const{px:p,py:y,pz:C}=this,E=this.is0();g==null&&(g=E?e.ONE:e.inv(C));const k=e.mul(p,g),P=e.mul(y,g),B=e.mul(C,g);if(E)return{x:e.ZERO,y:e.ZERO};if(!e.eql(B,e.ONE))throw new Error("invZ was invalid");return{x:k,y:P}}isTorsionFree(){const{h:g,isTorsionFree:p}=t;if(g===_)return!0;if(p)return p(h,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){const{h:g,clearCofactor:p}=t;return g===_?this:p?p(h,this):this.multiplyUnsafe(t.h)}toRawBytes(g=!0){return this.assertValidity(),r(h,this,g)}toHex(g=!0){return Ot(this.toRawBytes(g))}}h.BASE=new h(t.Gx,t.Gy,e.ONE),h.ZERO=new h(e.ZERO,e.ONE,e.ZERO);const A=t.nBitLength,w=Xn(h,t.endo?Math.ceil(A/2):A);return{CURVE:t,ProjectivePoint:h,normPrivateKeyToScalar:l,weierstrassEquation:i,isWithinCurveOrder:a}}function ri(s){const t=Es(s);return Yt(t,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...t})}function si(s){const t=ri(s),{Fp:e,n:r}=t,n=e.BYTES+1,i=2*e.BYTES+1;function a(b){return it<b&&b<e.ORDER}function c(b){return Z(b,r)}function l(b){return Me(b,r)}const{ProjectivePoint:u,normPrivateKeyToScalar:f,weierstrassEquation:h,isWithinCurveOrder:A}=ei({...t,toBytes(b,x,S){const F=x.toAffine(),T=e.toBytes(F.x),G=Vt;return S?G(Uint8Array.from([x.hasEvenY()?2:3]),T):G(Uint8Array.from([4]),T,e.toBytes(F.y))},fromBytes(b){const x=b.length,S=b[0],F=b.subarray(1);if(x===n&&(S===2||S===3)){const T=bt(F);if(!a(T))throw new Error("Point is not on curve");const G=h(T);let Y=e.sqrt(G);const q=(Y&_)===_;return(S&1)===1!==q&&(Y=e.neg(Y)),{x:T,y:Y}}else if(x===i&&S===4){const T=e.fromBytes(F.subarray(0,e.BYTES)),G=e.fromBytes(F.subarray(e.BYTES,2*e.BYTES));return{x:T,y:G}}else throw new Error(`Point of length ${x} was invalid. Expected ${n} compressed bytes or ${i} uncompressed bytes`)}}),w=b=>Ot(Tt(b,t.nByteLength));function m(b){const x=r>>_;return b>x}function g(b){return m(b)?c(-b):b}const p=(b,x,S)=>bt(b.slice(x,S));class y{constructor(x,S,F){this.r=x,this.s=S,this.recovery=F,this.assertValidity()}static fromCompact(x){const S=t.nByteLength;return x=$("compactSignature",x,S*2),new y(p(x,0,S),p(x,S,2*S))}static fromDER(x){const{r:S,s:F}=wt.toSig($("DER",x));return new y(S,F)}assertValidity(){if(!A(this.r))throw new Error("r must be 0 < r < CURVE.n");if(!A(this.s))throw new Error("s must be 0 < s < CURVE.n")}addRecoveryBit(x){return new y(this.r,this.s,x)}recoverPublicKey(x){const{r:S,s:F,recovery:T}=this,G=N($("msgHash",x));if(T==null||![0,1,2,3].includes(T))throw new Error("recovery id invalid");const Y=T===2||T===3?S+t.n:S;if(Y>=e.ORDER)throw new Error("recovery id 2 or 3 invalid");const q=(T&1)===0?"02":"03",ot=u.fromHex(q+w(Y)),at=l(Y),xt=c(-G*at),Ht=c(F*at),ct=u.BASE.multiplyAndAddUnsafe(ot,xt,Ht);if(!ct)throw new Error("point at infinify");return ct.assertValidity(),ct}hasHighS(){return m(this.s)}normalizeS(){return this.hasHighS()?new y(this.r,c(-this.s),this.recovery):this}toDERRawBytes(){return Dt(this.toDERHex())}toDERHex(){return wt.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return Dt(this.toCompactHex())}toCompactHex(){return w(this.r)+w(this.s)}}const C={isValidPrivateKey(b){try{return f(b),!0}catch{return!1}},normPrivateKeyToScalar:f,randomPrivateKey:()=>{const b=bs(t.n);return qn(t.randomBytes(b),t.n)},precompute(b=8,x=u.BASE){return x._setWindowSize(b),x.multiply(BigInt(3)),x}};function E(b,x=!0){return u.fromPrivateKey(b).toRawBytes(x)}function k(b){const x=b instanceof Uint8Array,S=typeof b=="string",F=(x||S)&&b.length;return x?F===n||F===i:S?F===2*n||F===2*i:b instanceof u}function P(b,x,S=!0){if(k(b))throw new Error("first arg must be private key");if(!k(x))throw new Error("second arg must be public key");return u.fromHex(x).multiply(f(b)).toRawBytes(S)}const B=t.bits2int||function(b){const x=bt(b),S=b.length*8-t.nBitLength;return S>0?x>>BigInt(S):x},N=t.bits2int_modN||function(b){return c(B(b))},I=sr(t.nBitLength);function D(b){if(typeof b!="bigint")throw new Error("bigint expected");if(!(it<=b&&b<I))throw new Error(`bigint expected < 2^${t.nBitLength}`);return Tt(b,t.nByteLength)}function R(b,x,S=O){if(["recovered","canonical"].some(At=>At in S))throw new Error("sign() legacy options not supported");const{hash:F,randomBytes:T}=t;let{lowS:G,prehash:Y,extraEntropy:q}=S;G==null&&(G=!0),b=$("msgHash",b),Y&&(b=$("prehashed msgHash",F(b)));const ot=N(b),at=f(x),xt=[D(at),D(ot)];if(q!=null){const At=q===!0?T(e.BYTES):q;xt.push($("extraEntropy",At))}const Ht=Vt(...xt),ct=ot;function xe(At){const Ct=B(At);if(!A(Ct))return;const gr=l(Ct),rt=u.BASE.multiply(Ct).toAffine(),It=c(rt.x);if(It===it)return;const _t=c(gr*c(ct+It*at));if(_t===it)return;let Ar=(rt.x===It?0:2)|Number(rt.y&_),pr=_t;return G&&m(_t)&&(pr=g(_t),Ar^=1),new y(It,pr,Ar)}return{seed:Ht,k2sig:xe}}const O={lowS:t.lowS,prehash:!1},Q={lowS:t.lowS,prehash:!1};function z(b,x,S=O){const{seed:F,k2sig:T}=R(b,x,S),G=t;return ms(G.hash.outputLen,G.nByteLength,G.hmac)(F,T)}u.BASE._setWindowSize(8);function et(b,x,S,F=Q){const T=b;if(x=$("msgHash",x),S=$("publicKey",S),"strict"in F)throw new Error("options.strict was renamed to lowS");const{lowS:G,prehash:Y}=F;let q,ot;try{if(typeof T=="string"||T instanceof Uint8Array)try{q=y.fromDER(T)}catch(rt){if(!(rt instanceof wt.Err))throw rt;q=y.fromCompact(T)}else if(typeof T=="object"&&typeof T.r=="bigint"&&typeof T.s=="bigint"){const{r:rt,s:It}=T;q=new y(rt,It)}else throw new Error("PARSE");ot=u.fromHex(S)}catch(rt){if(rt.message==="PARSE")throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(G&&q.hasHighS())return!1;Y&&(x=t.hash(x));const{r:at,s:xt}=q,Ht=N(x),ct=l(xt),xe=c(Ht*ct),At=c(at*ct),Ct=u.BASE.multiplyAndAddUnsafe(ot,xe,At)?.toAffine();return Ct?c(Ct.x)===at:!1}return{CURVE:t,getPublicKey:E,getSharedSecret:P,sign:z,verify:et,ProjectivePoint:u,Signature:y,utils:C}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function ni(s){return{hash:s,hmac:(t,...e)=>Ae(s,t,o.concatBytes(...e)),randomBytes:o.randomBytes}}function ii(s,t){const e=r=>si({...s,...ni(r)});return Object.freeze({...e(t),create:e})}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const Bs=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),Sr=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),oi=BigInt(1),He=BigInt(2),vr=(s,t)=>(s+t/He)/t;function ai(s){const t=Bs,e=BigInt(3),r=BigInt(6),n=BigInt(11),i=BigInt(22),a=BigInt(23),c=BigInt(44),l=BigInt(88),u=s*s*s%t,f=u*u*s%t,h=X(f,e,t)*f%t,A=X(h,e,t)*f%t,w=X(A,He,t)*u%t,m=X(w,n,t)*w%t,g=X(m,i,t)*m%t,p=X(g,c,t)*g%t,y=X(p,l,t)*p%t,C=X(y,c,t)*g%t,E=X(C,e,t)*f%t,k=X(E,a,t)*m%t,P=X(k,r,t)*u%t,B=X(P,He,t);if(!Qe.eql(Qe.sqr(B),s))throw new Error("Cannot find square root");return B}const Qe=Yn(Bs,void 0,void 0,{sqrt:ai}),dt=ii({a:BigInt(0),b:BigInt(7),Fp:Qe,n:Sr,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:s=>{const t=Sr,e=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),r=-oi*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),n=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),i=e,a=BigInt("0x100000000000000000000000000000000"),c=vr(i*s,t),l=vr(-r*s,t);let u=Z(s-c*e-l*n,t),f=Z(-c*r-l*i,t);const h=u>a,A=f>a;if(h&&(u=t-u),A&&(f=t-f),u>a||f>a)throw new Error("splitScalar: Endomorphism failed, k="+s);return{k1neg:h,k1:u,k2neg:A,k2:f}}}},Zt);BigInt(0);dt.ProjectivePoint;const Ft="0x0000000000000000000000000000000000000000",Rr="0x0000000000000000000000000000000000000000000000000000000000000000",Or=BigInt(0),Dr=BigInt(1),Tr=BigInt(2),Fr=BigInt(27),Lr=BigInt(28),re=BigInt(35),Pt={};function Ur(s){return o.zeroPadValue(d.toBeArray(s),32)}class H{#t;#e;#r;#s;get r(){return this.#t}set r(t){o.assertArgument(o.dataLength(t)===32,"invalid r","value",t),this.#t=o.hexlify(t)}get s(){return this.#e}set s(t){o.assertArgument(o.dataLength(t)===32,"invalid s","value",t);const e=o.hexlify(t);o.assertArgument(parseInt(e.substring(0,3))<8,"non-canonical s","value",e),this.#e=e}get v(){return this.#r}set v(t){const e=d.getNumber(t,"value");o.assertArgument(e===27||e===28,"invalid v","v",t),this.#r=e}get networkV(){return this.#s}get legacyChainId(){const t=this.networkV;return t==null?null:H.getChainId(t)}get yParity(){return this.v===27?0:1}get yParityAndS(){const t=o.getBytes(this.s);return this.yParity&&(t[0]|=128),o.hexlify(t)}get compactSerialized(){return o.concat([this.r,this.yParityAndS])}get serialized(){return o.concat([this.r,this.s,this.yParity?"0x1c":"0x1b"])}constructor(t,e,r,n){o.assertPrivate(t,Pt,"Signature"),this.#t=e,this.#e=r,this.#r=n,this.#s=null}[Symbol.for("nodejs.util.inspect.custom")](){return`Signature { r: "${this.r}", s: "${this.s}", yParity: ${this.yParity}, networkV: ${this.networkV} }`}clone(){const t=new H(Pt,this.r,this.s,this.v);return this.networkV&&(t.#s=this.networkV),t}toJSON(){const t=this.networkV;return{_type:"signature",networkV:t!=null?t.toString():null,r:this.r,s:this.s,v:this.v}}static getChainId(t){const e=d.getBigInt(t,"v");return e==Fr||e==Lr?Or:(o.assertArgument(e>=re,"invalid EIP-155 v","v",t),(e-re)/Tr)}static getChainIdV(t,e){return d.getBigInt(t)*Tr+BigInt(35+e-27)}static getNormalizedV(t){const e=d.getBigInt(t);return e===Or||e===Fr?27:e===Dr||e===Lr?28:(o.assertArgument(e>=re,"invalid v","v",t),e&Dr?27:28)}static from(t){function e(u,f){o.assertArgument(u,f,"signature",t)}if(t==null)return new H(Pt,Rr,Rr,27);if(typeof t=="string"){const u=o.getBytes(t,"signature");if(u.length===64){const f=o.hexlify(u.slice(0,32)),h=u.slice(32,64),A=h[0]&128?28:27;return h[0]&=127,new H(Pt,f,o.hexlify(h),A)}if(u.length===65){const f=o.hexlify(u.slice(0,32)),h=u.slice(32,64);e((h[0]&128)===0,"non-canonical s");const A=H.getNormalizedV(u[64]);return new H(Pt,f,o.hexlify(h),A)}e(!1,"invalid raw signature length")}if(t instanceof H)return t.clone();const r=t.r;e(r!=null,"missing r");const n=Ur(r),i=(function(u,f){if(u!=null)return Ur(u);if(f!=null){e(o.isHexString(f,32),"invalid yParityAndS");const h=o.getBytes(f);return h[0]&=127,o.hexlify(h)}e(!1,"missing s")})(t.s,t.yParityAndS);e((o.getBytes(i)[0]&128)==0,"non-canonical s");const{networkV:a,v:c}=(function(u,f,h){if(u!=null){const A=d.getBigInt(u);return{networkV:A>=re?A:void 0,v:H.getNormalizedV(A)}}if(f!=null)return e(o.isHexString(f,32),"invalid yParityAndS"),{v:o.getBytes(f)[0]&128?28:27};if(h!=null){switch(d.getNumber(h,"sig.yParity")){case 0:return{v:27};case 1:return{v:28}}e(!1,"invalid yParity")}e(!1,"missing v")})(t.v,t.yParityAndS,t.yParity),l=new H(Pt,n,i,c);return a&&(l.#s=a),e(t.yParity==null||d.getNumber(t.yParity,"sig.yParity")===l.yParity,"yParity mismatch"),e(t.yParityAndS==null||t.yParityAndS===l.yParityAndS,"yParityAndS mismatch"),l}}class st{#t;constructor(t){o.assertArgument(o.dataLength(t)===32,"invalid private key","privateKey","[REDACTED]"),this.#t=o.hexlify(t)}get privateKey(){return this.#t}get publicKey(){return st.computePublicKey(this.#t)}get compressedPublicKey(){return st.computePublicKey(this.#t,!0)}sign(t){o.assertArgument(o.dataLength(t)===32,"invalid digest length","digest",t);const e=dt.sign(o.getBytesCopy(t),o.getBytesCopy(this.#t),{lowS:!0});return H.from({r:d.toBeHex(e.r,32),s:d.toBeHex(e.s,32),v:e.recovery?28:27})}computeSharedSecret(t){const e=st.computePublicKey(t);return o.hexlify(dt.getSharedSecret(o.getBytesCopy(this.#t),o.getBytes(e),!1))}static computePublicKey(t,e){let r=o.getBytes(t,"key");if(r.length===32){const i=dt.getPublicKey(r,!!e);return o.hexlify(i)}if(r.length===64){const i=new Uint8Array(65);i[0]=4,i.set(r,1),r=i}const n=dt.ProjectivePoint.fromHex(r);return o.hexlify(n.toRawBytes(e))}static recoverPublicKey(t,e){o.assertArgument(o.dataLength(t)===32,"invalid digest length","digest",t);const r=H.from(e);let n=dt.Signature.fromCompact(o.getBytesCopy(o.concat([r.r,r.s])));n=n.addRecoveryBit(r.yParity);const i=n.recoverPublicKey(o.getBytesCopy(t));return o.assertArgument(i!=null,"invalid signautre for digest","signature",e),"0x"+i.toHex(!1)}static addPoints(t,e,r){const n=dt.ProjectivePoint.fromHex(st.computePublicKey(t).substring(2)),i=dt.ProjectivePoint.fromHex(st.computePublicKey(e).substring(2));return"0x"+n.add(i).toHex(!!r)}}function xs(s){const t=o.getAddress(s.from);let r=d.getBigInt(s.nonce,"tx.nonce").toString(16);return r==="0"?r="0x":r.length%2?r="0x0"+r:r="0x"+r,o.getAddress(o.dataSlice(o.keccak256(Et([t,r])),12))}var ci="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";const Mr=new Map([[8217,"apostrophe"],[8260,"fraction slash"],[12539,"middle dot"]]),Hr=4;function li(s){let t=0;function e(){return s[t++]<<8|s[t++]}let r=e(),n=1,i=[0,1];for(let P=1;P<r;P++)i.push(n+=e());let a=e(),c=t;t+=a;let l=0,u=0;function f(){return l==0&&(u=u<<8|s[t++],l=8),u>>--l&1}const h=31,A=2**h,w=A>>>1,m=w>>1,g=A-1;let p=0;for(let P=0;P<h;P++)p=p<<1|f();let y=[],C=0,E=A;for(;;){let P=Math.floor(((p-C+1)*n-1)/E),B=0,N=r;for(;N-B>1;){let R=B+N>>>1;P<i[R]?N=R:B=R}if(B==0)break;y.push(B);let I=C+Math.floor(E*i[B]/n),D=C+Math.floor(E*i[B+1]/n)-1;for(;((I^D)&w)==0;)p=p<<1&g|f(),I=I<<1&g,D=D<<1&g|1;for(;I&~D&m;)p=p&w|p<<1&g>>>1|f(),I=I<<1^w,D=(D^w)<<1|w|1;C=I,E=1+D-I}let k=r-4;return y.map(P=>{switch(P-k){case 3:return k+65792+(s[c++]<<16|s[c++]<<8|s[c++]);case 2:return k+256+(s[c++]<<8|s[c++]);case 1:return k+s[c++];default:return P-1}})}function ui(s){let t=0;return()=>s[t++]}function Cs(s){return ui(li(hi(s)))}function hi(s){let t=[];[..."ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"].forEach((n,i)=>t[n.charCodeAt(0)]=i);let e=s.length,r=new Uint8Array(6*e>>3);for(let n=0,i=0,a=0,c=0;n<e;n++)c=c<<6|t[s.charCodeAt(n)],a+=6,a>=8&&(r[i++]=c>>(a-=8));return r}function fi(s){return s&1?~s>>1:s>>1}function di(s,t){let e=Array(s);for(let r=0,n=0;r<s;r++)e[r]=n+=fi(t());return e}function Jt(s,t=0){let e=[];for(;;){let r=s(),n=s();if(!n)break;t+=r;for(let i=0;i<n;i++)e.push(t+i);t+=n+1}return e}function Is(s){return zt(()=>{let t=Jt(s);if(t.length)return t})}function Ps(s){let t=[];for(;;){let e=s();if(e==0)break;t.push(gi(e,s))}for(;;){let e=s()-1;if(e<0)break;t.push(Ai(e,s))}return t.flat()}function zt(s){let t=[];for(;;){let e=s(t.length);if(!e)break;t.push(e)}return t}function Ns(s,t,e){let r=Array(s).fill().map(()=>[]);for(let n=0;n<t;n++)di(s,e).forEach((i,a)=>r[a].push(i));return r}function gi(s,t){let e=1+t(),r=t(),n=zt(t);return Ns(n.length,1+s,t).flatMap((a,c)=>{let[l,...u]=a;return Array(n[c]).fill().map((f,h)=>{let A=h*r;return[l+h*e,u.map(w=>w+A)]})})}function Ai(s,t){let e=1+t();return Ns(e,1+s,t).map(n=>[n[0],n.slice(1)])}function pi(s){let t=[],e=Jt(s);return n(r([]),[]),t;function r(i){let a=s(),c=zt(()=>{let l=Jt(s).map(u=>e[u]);if(l.length)return r(l)});return{S:a,B:c,Q:i}}function n({S:i,B:a},c,l){if(!(i&4&&l===c[c.length-1])){i&2&&(l=c[c.length-1]),i&1&&t.push(c);for(let u of a)for(let f of u.Q)n(u,[...c,f],l)}}}function mi(s){return s.toString(16).toUpperCase().padStart(2,"0")}function ks(s){return`{${mi(s)}}`}function wi(s){let t=[];for(let e=0,r=s.length;e<r;){let n=s.codePointAt(e);e+=n<65536?1:2,t.push(n)}return t}function Lt(s){let e=s.length;if(e<4096)return String.fromCodePoint(...s);let r=[];for(let n=0;n<e;)r.push(String.fromCodePoint(...s.slice(n,n+=4096)));return r.join("")}function yi(s,t){let e=s.length,r=e-t.length;for(let n=0;r==0&&n<e;n++)r=s[n]-t[n];return r}var bi="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";const Kt=44032,le=4352,ue=4449,he=4519,Ss=19,vs=21,Ut=28,fe=vs*Ut,Ei=Ss*fe,Bi=Kt+Ei,xi=le+Ss,Ci=ue+vs,Ii=he+Ut;function Qt(s){return s>>24&255}function Rs(s){return s&16777215}let Ge,Qr,Ve,ie;function Pi(){let s=Cs(bi);Ge=new Map(Is(s).flatMap((t,e)=>t.map(r=>[r,e+1<<24]))),Qr=new Set(Jt(s)),Ve=new Map,ie=new Map;for(let[t,e]of Ps(s)){if(!Qr.has(t)&&e.length==2){let[r,n]=e,i=ie.get(r);i||(i=new Map,ie.set(r,i)),i.set(n,t)}Ve.set(t,e.reverse())}}function Os(s){return s>=Kt&&s<Bi}function Ni(s,t){if(s>=le&&s<xi&&t>=ue&&t<Ci)return Kt+(s-le)*fe+(t-ue)*Ut;if(Os(s)&&t>he&&t<Ii&&(s-Kt)%Ut==0)return s+(t-he);{let e=ie.get(s);return e&&(e=e.get(t),e)?e:-1}}function Ds(s){Ge||Pi();let t=[],e=[],r=!1;function n(i){let a=Ge.get(i);a&&(r=!0,i|=a),t.push(i)}for(let i of s)for(;;){if(i<128)t.push(i);else if(Os(i)){let a=i-Kt,c=a/fe|0,l=a%fe/Ut|0,u=a%Ut;n(le+c),n(ue+l),u>0&&n(he+u)}else{let a=Ve.get(i);a?e.push(...a):n(i)}if(!e.length)break;i=e.pop()}if(r&&t.length>1){let i=Qt(t[0]);for(let a=1;a<t.length;a++){let c=Qt(t[a]);if(c==0||i<=c){i=c;continue}let l=a-1;for(;;){let u=t[l+1];if(t[l+1]=t[l],t[l]=u,!l||(i=Qt(t[--l]),i<=c))break}i=Qt(t[a])}}return t}function ki(s){let t=[],e=[],r=-1,n=0;for(let i of s){let a=Qt(i),c=Rs(i);if(r==-1)a==0?r=c:t.push(c);else if(n>0&&n>=a)a==0?(t.push(r,...e),e.length=0,r=c):e.push(c),n=a;else{let l=Ni(r,c);l>=0?r=l:n==0&&a==0?(t.push(r),r=c):(e.push(c),n=a)}}return r>=0&&t.push(r,...e),t}function Ts(s){return Ds(s).map(Rs)}function Si(s){return ki(Ds(s))}const Gr=45,Fs=".",Ls=65039,Us=1,de=s=>Array.from(s);function jt(s,t){return s.P.has(t)||s.Q.has(t)}class vi extends Array{get is_emoji(){return!0}}let Je,Ms,yt,ze,Hs,vt,Ne,St,pt,Vr,Ke;function nr(){if(Je)return;let s=Cs(ci);const t=()=>Jt(s),e=()=>new Set(t()),r=(f,h)=>h.forEach(A=>f.add(A));Je=new Map(Ps(s)),Ms=e(),yt=t(),ze=new Set(t().map(f=>yt[f])),yt=new Set(yt),Hs=e(),e();let n=Is(s),i=s();const a=()=>{let f=new Set;return t().forEach(h=>r(f,n[h])),r(f,t()),f};vt=zt(f=>{let h=zt(s).map(A=>A+96);if(h.length){let A=f>=i;h[0]-=32,h=Lt(h),A&&(h=`Restricted[${h}]`);let w=a(),m=a(),g=!s();return{N:h,P:w,Q:m,M:g,R:A}}}),Ne=e(),St=new Map;let c=t().concat(de(Ne)).sort((f,h)=>f-h);c.forEach((f,h)=>{let A=s(),w=c[h]=A?c[h-A]:{V:[],M:new Map};w.V.push(f),Ne.has(f)||St.set(f,w)});for(let{V:f,M:h}of new Set(St.values())){let A=[];for(let m of f){let g=vt.filter(y=>jt(y,m)),p=A.find(({G:y})=>g.some(C=>y.has(C)));p||(p={G:new Set,V:[]},A.push(p)),p.V.push(m),r(p.G,g)}let w=A.flatMap(m=>de(m.G));for(let{G:m,V:g}of A){let p=new Set(w.filter(y=>!m.has(y)));for(let y of g)h.set(y,p)}}pt=new Set;let l=new Set;const u=f=>pt.has(f)?l.add(f):pt.add(f);for(let f of vt){for(let h of f.P)u(h);for(let h of f.Q)u(h)}for(let f of pt)!St.has(f)&&!l.has(f)&&St.set(f,Us);r(pt,Ts(pt)),Vr=pi(s).map(f=>vi.from(f)).sort(yi),Ke=new Map;for(let f of Vr){let h=[Ke];for(let A of f){let w=h.map(m=>{let g=m.get(A);return g||(g=new Map,m.set(A,g)),g});A===Ls?h.push(...w):h=w}for(let A of h)A.V=f}}function ir(s){return(Qs(s)?"":`${or(we([s]))} `)+ks(s)}function or(s){return`"${s}"`}function Ri(s){if(s.length>=4&&s[2]==Gr&&s[3]==Gr)throw new Error(`invalid label extension: "${Lt(s.slice(0,4))}"`)}function Oi(s){for(let e=s.lastIndexOf(95);e>0;)if(s[--e]!==95)throw new Error("underscore allowed only at start")}function Di(s){let t=s[0],e=Mr.get(t);if(e)throw Gt(`leading ${e}`);let r=s.length,n=-1;for(let i=1;i<r;i++){t=s[i];let a=Mr.get(t);if(a){if(n==i)throw Gt(`${e} + ${a}`);n=i+1,e=a}}if(n==r)throw Gt(`trailing ${e}`)}function we(s,t=1/0,e=ks){let r=[];Ti(s[0])&&r.push("◌"),s.length>t&&(t>>=1,s=[...s.slice(0,t),8230,...s.slice(-t)]);let n=0,i=s.length;for(let a=0;a<i;a++){let c=s[a];Qs(c)&&(r.push(Lt(s.slice(n,a))),r.push(e(c)),n=a+1)}return r.push(Lt(s.slice(n,i))),r.join("")}function Ti(s){return nr(),yt.has(s)}function Qs(s){return nr(),Hs.has(s)}function Fi(s){return Hi(Li(s,Si,Vi))}function Li(s,t,e){if(!s)return[];nr();let r=0;return s.split(Fs).map(n=>{let i=wi(n),a={input:i,offset:r};r+=i.length+1;try{let c=a.tokens=Gi(i,t,e),l=c.length,u;if(!l)throw new Error("empty label");let f=a.output=c.flat();if(Oi(f),!(a.emoji=l>1||c[0].is_emoji)&&f.every(A=>A<128))Ri(f),u="ASCII";else{let A=c.flatMap(w=>w.is_emoji?[]:w);if(!A.length)u="Emoji";else{if(yt.has(f[0]))throw Gt("leading combining mark");for(let g=1;g<l;g++){let p=c[g];if(!p.is_emoji&&yt.has(p[0]))throw Gt(`emoji + combining mark: "${Lt(c[g-1])} + ${we([p[0]])}"`)}Di(f);let w=de(new Set(A)),[m]=Mi(w);Qi(m,A),Ui(m,w),u=m.N}}a.type=u}catch(c){a.error=c}return a})}function Ui(s,t){let e,r=[];for(let n of t){let i=St.get(n);if(i===Us)return;if(i){let a=i.M.get(n);if(e=e?e.filter(c=>a.has(c)):de(a),!e.length)return}else r.push(n)}if(e){for(let n of e)if(r.every(i=>jt(n,i)))throw new Error(`whole-script confusable: ${s.N}/${n.N}`)}}function Mi(s){let t=vt;for(let e of s){let r=t.filter(n=>jt(n,e));if(!r.length)throw vt.some(n=>jt(n,e))?Vs(t[0],e):Gs(e);if(t=r,r.length==1)break}return t}function Hi(s){return s.map(({input:t,error:e,output:r})=>{if(e){let n=e.message;throw new Error(s.length==1?n:`Invalid label ${or(we(t,63))}: ${n}`)}return Lt(r)}).join(Fs)}function Gs(s){return new Error(`disallowed character: ${ir(s)}`)}function Vs(s,t){let e=ir(t),r=vt.find(n=>n.P.has(t));return r&&(e=`${r.N} ${e}`),new Error(`illegal mixture: ${s.N} + ${e}`)}function Gt(s){return new Error(`illegal placement: ${s}`)}function Qi(s,t){for(let e of t)if(!jt(s,e))throw Vs(s,e);if(s.M){let e=Ts(t);for(let r=1,n=e.length;r<n;r++)if(ze.has(e[r])){let i=r+1;for(let a;i<n&&ze.has(a=e[i]);i++)for(let c=r;c<i;c++)if(e[c]==a)throw new Error(`duplicate non-spacing marks: ${ir(a)}`);if(i-r>Hr)throw new Error(`excessive non-spacing marks: ${or(we(e.slice(r-1,i)))} (${i-r}/${Hr})`);r=i}}}function Gi(s,t,e){let r=[],n=[];for(s=s.slice().reverse();s.length;){let i=Ji(s);if(i)n.length&&(r.push(t(n)),n=[]),r.push(e(i));else{let a=s.pop();if(pt.has(a))n.push(a);else{let c=Je.get(a);if(c)n.push(...c);else if(!Ms.has(a))throw Gs(a)}}}return n.length&&r.push(t(n)),r}function Vi(s){return s.filter(t=>t!=Ls)}function Ji(s,t){let e=Ke,r,n=s.length;for(;n&&(e=e.get(s[--n]),!!e);){let{V:i}=e;i&&(r=i,s.length=n)}return r}const Js=new Uint8Array(32);Js.fill(0);function Jr(s){return o.assertArgument(s.length!==0,"invalid ENS name; empty component","comp",s),s}function zs(s){const t=d.toUtf8Bytes(zi(s)),e=[];if(s.length===0)return e;let r=0;for(let n=0;n<t.length;n++)t[n]===46&&(e.push(Jr(t.slice(r,n))),r=n+1);return o.assertArgument(r<t.length,"invalid ENS name; empty component","name",s),e.push(Jr(t.slice(r))),e}function zi(s){try{if(s.length===0)throw new Error("empty label");return Fi(s)}catch(t){o.assertArgument(!1,`invalid ENS name (${t.message})`,"name",s)}}function je(s){o.assertArgument(typeof s=="string","invalid ENS name; not a string","name",s),o.assertArgument(s.length,"invalid ENS name (empty label)","name",s);let t=Js;const e=zs(s);for(;e.length;)t=o.keccak256(o.concat([t,o.keccak256(e.pop())]));return o.hexlify(t)}function Ki(s,t){const e=t;return o.assertArgument(e<=255,"DNS encoded label cannot exceed 255","length",e),o.hexlify(o.concat(zs(s).map(r=>{o.assertArgument(r.length<=e,`label ${JSON.stringify(s)} exceeds ${e} bytes`,"name",s);const n=new Uint8Array(r.length+1);return n.set(r,1),n[0]=n.length-1,n})))+"00"}function Ks(s){let t;return typeof s=="string"?t=st.computePublicKey(s,!1):t=s.publicKey,o.getAddress(o.keccak256("0x"+t.substring(4)).substring(26))}function ji(s,t){return Ks(st.recoverPublicKey(s,t))}const V=BigInt(0),Zi=BigInt(2),Yi=BigInt(27),qi=BigInt(28),Wi=BigInt(35),Xi=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),ke=4096*32;function zr(s,t){let e=s.toString(16);for(;e.length<2;)e="0"+e;return e+=Bt(t).substring(4),"0x"+e}function ye(s){return s==="0x"?null:o.getAddress(s)}function ar(s,t){try{return d.accessListify(s)}catch(e){o.assertArgument(!1,e.message,t,s)}}function qt(s,t){return s==="0x"?0:d.getNumber(s,t)}function M(s,t){if(s==="0x")return V;const e=d.getBigInt(s,t);return o.assertArgument(e<=Xi,"value exceeds uint size",t,e),e}function L(s,t){const e=d.getBigInt(s,"value"),r=d.toBeArray(e);return o.assertArgument(r.length<=32,"value too large",`tx.${t}`,e),r}function cr(s){return d.accessListify(s).map(t=>[t.address,t.storageKeys])}function _i(s,t){o.assertArgument(Array.isArray(s),`invalid ${t}`,"value",s);for(let e=0;e<s.length;e++)o.assertArgument(o.isHexString(s[e],32),"invalid ${ param } hash",`value[${e}]`,s[e]);return s}function $i(s){const t=ge(s);o.assertArgument(Array.isArray(t)&&(t.length===9||t.length===6),"invalid field count for legacy transaction","data",s);const e={type:0,nonce:qt(t[0],"nonce"),gasPrice:M(t[1],"gasPrice"),gasLimit:M(t[2],"gasLimit"),to:ye(t[3]),value:M(t[4],"value"),data:o.hexlify(t[5]),chainId:V};if(t.length===6)return e;const r=M(t[6],"v"),n=M(t[7],"r"),i=M(t[8],"s");if(n===V&&i===V)e.chainId=r;else{let a=(r-Wi)/Zi;a<V&&(a=V),e.chainId=a,o.assertArgument(a!==V||r===Yi||r===qi,"non-canonical legacy v","v",t[6]),e.signature=H.from({r:o.zeroPadValue(t[7],32),s:o.zeroPadValue(t[8],32),v:r})}return e}function to(s,t){const e=[L(s.nonce,"nonce"),L(s.gasPrice||0,"gasPrice"),L(s.gasLimit,"gasLimit"),s.to||"0x",L(s.value,"value"),s.data];let r=V;if(s.chainId!=V)r=d.getBigInt(s.chainId,"tx.chainId"),o.assertArgument(!t||t.networkV==null||t.legacyChainId===r,"tx.chainId/sig.v mismatch","sig",t);else if(s.signature){const i=s.signature.legacyChainId;i!=null&&(r=i)}if(!t)return r!==V&&(e.push(d.toBeArray(r)),e.push("0x"),e.push("0x")),Et(e);let n=BigInt(27+t.yParity);return r!==V?n=H.getChainIdV(r,t.v):BigInt(t.v)!==n&&o.assertArgument(!1,"tx.chainId/sig.v mismatch","sig",t),e.push(d.toBeArray(n)),e.push(d.toBeArray(t.r)),e.push(d.toBeArray(t.s)),Et(e)}function lr(s,t){let e;try{if(e=qt(t[0],"yParity"),e!==0&&e!==1)throw new Error("bad yParity")}catch{o.assertArgument(!1,"invalid yParity","yParity",t[0])}const r=o.zeroPadValue(t[1],32),n=o.zeroPadValue(t[2],32),i=H.from({r,s:n,yParity:e});s.signature=i}function eo(s){const t=ge(o.getBytes(s).slice(1));o.assertArgument(Array.isArray(t)&&(t.length===9||t.length===12),"invalid field count for transaction type: 2","data",o.hexlify(s));const e={type:2,chainId:M(t[0],"chainId"),nonce:qt(t[1],"nonce"),maxPriorityFeePerGas:M(t[2],"maxPriorityFeePerGas"),maxFeePerGas:M(t[3],"maxFeePerGas"),gasPrice:null,gasLimit:M(t[4],"gasLimit"),to:ye(t[5]),value:M(t[6],"value"),data:o.hexlify(t[7]),accessList:ar(t[8],"accessList")};return t.length===9||lr(e,t.slice(9)),e}function ro(s,t){const e=[L(s.chainId,"chainId"),L(s.nonce,"nonce"),L(s.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),L(s.maxFeePerGas||0,"maxFeePerGas"),L(s.gasLimit,"gasLimit"),s.to||"0x",L(s.value,"value"),s.data,cr(s.accessList||[])];return t&&(e.push(L(t.yParity,"yParity")),e.push(d.toBeArray(t.r)),e.push(d.toBeArray(t.s))),o.concat(["0x02",Et(e)])}function so(s){const t=ge(o.getBytes(s).slice(1));o.assertArgument(Array.isArray(t)&&(t.length===8||t.length===11),"invalid field count for transaction type: 1","data",o.hexlify(s));const e={type:1,chainId:M(t[0],"chainId"),nonce:qt(t[1],"nonce"),gasPrice:M(t[2],"gasPrice"),gasLimit:M(t[3],"gasLimit"),to:ye(t[4]),value:M(t[5],"value"),data:o.hexlify(t[6]),accessList:ar(t[7],"accessList")};return t.length===8||lr(e,t.slice(8)),e}function no(s,t){const e=[L(s.chainId,"chainId"),L(s.nonce,"nonce"),L(s.gasPrice||0,"gasPrice"),L(s.gasLimit,"gasLimit"),s.to||"0x",L(s.value,"value"),s.data,cr(s.accessList||[])];return t&&(e.push(L(t.yParity,"recoveryParam")),e.push(d.toBeArray(t.r)),e.push(d.toBeArray(t.s))),o.concat(["0x01",Et(e)])}function io(s){let t=ge(o.getBytes(s).slice(1)),e="3",r=null;if(t.length===4&&Array.isArray(t[0])){e="3 (network format)";const i=t[1],a=t[2],c=t[3];o.assertArgument(Array.isArray(i),"invalid network format: blobs not an array","fields[1]",i),o.assertArgument(Array.isArray(a),"invalid network format: commitments not an array","fields[2]",a),o.assertArgument(Array.isArray(c),"invalid network format: proofs not an array","fields[3]",c),o.assertArgument(i.length===a.length,"invalid network format: blobs/commitments length mismatch","fields",t),o.assertArgument(i.length===c.length,"invalid network format: blobs/proofs length mismatch","fields",t),r=[];for(let l=0;l<t[1].length;l++)r.push({data:i[l],commitment:a[l],proof:c[l]});t=t[0]}o.assertArgument(Array.isArray(t)&&(t.length===11||t.length===14),`invalid field count for transaction type: ${e}`,"data",o.hexlify(s));const n={type:3,chainId:M(t[0],"chainId"),nonce:qt(t[1],"nonce"),maxPriorityFeePerGas:M(t[2],"maxPriorityFeePerGas"),maxFeePerGas:M(t[3],"maxFeePerGas"),gasPrice:null,gasLimit:M(t[4],"gasLimit"),to:ye(t[5]),value:M(t[6],"value"),data:o.hexlify(t[7]),accessList:ar(t[8],"accessList"),maxFeePerBlobGas:M(t[9],"maxFeePerBlobGas"),blobVersionedHashes:t[10]};r&&(n.blobs=r),o.assertArgument(n.to!=null,`invalid address for transaction type: ${e}`,"data",s),o.assertArgument(Array.isArray(n.blobVersionedHashes),"invalid blobVersionedHashes: must be an array","data",s);for(let i=0;i<n.blobVersionedHashes.length;i++)o.assertArgument(o.isHexString(n.blobVersionedHashes[i],32),`invalid blobVersionedHash at index ${i}: must be length 32`,"data",s);return t.length===11||lr(n,t.slice(11)),n}function oo(s,t,e){const r=[L(s.chainId,"chainId"),L(s.nonce,"nonce"),L(s.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),L(s.maxFeePerGas||0,"maxFeePerGas"),L(s.gasLimit,"gasLimit"),s.to||Ft,L(s.value,"value"),s.data,cr(s.accessList||[]),L(s.maxFeePerBlobGas||0,"maxFeePerBlobGas"),_i(s.blobVersionedHashes||[],"blobVersionedHashes")];return t&&(r.push(L(t.yParity,"yParity")),r.push(d.toBeArray(t.r)),r.push(d.toBeArray(t.s)),e)?o.concat(["0x03",Et([r,e.map(n=>n.data),e.map(n=>n.commitment),e.map(n=>n.proof)])]):o.concat(["0x03",Et(r)])}class tt{#t;#e;#r;#s;#n;#o;#i;#a;#d;#l;#g;#A;#c;#u;#h;#f;get type(){return this.#t}set type(t){switch(t){case null:this.#t=null;break;case 0:case"legacy":this.#t=0;break;case 1:case"berlin":case"eip-2930":this.#t=1;break;case 2:case"london":case"eip-1559":this.#t=2;break;case 3:case"cancun":case"eip-4844":this.#t=3;break;default:o.assertArgument(!1,"unsupported transaction type","type",t)}}get typeName(){switch(this.type){case 0:return"legacy";case 1:return"eip-2930";case 2:return"eip-1559";case 3:return"eip-4844"}return null}get to(){const t=this.#e;return t==null&&this.type===3?Ft:t}set to(t){this.#e=t==null?null:o.getAddress(t)}get nonce(){return this.#s}set nonce(t){this.#s=d.getNumber(t,"value")}get gasLimit(){return this.#n}set gasLimit(t){this.#n=d.getBigInt(t)}get gasPrice(){const t=this.#o;return t==null&&(this.type===0||this.type===1)?V:t}set gasPrice(t){this.#o=t==null?null:d.getBigInt(t,"gasPrice")}get maxPriorityFeePerGas(){const t=this.#i;return t??(this.type===2||this.type===3?V:null)}set maxPriorityFeePerGas(t){this.#i=t==null?null:d.getBigInt(t,"maxPriorityFeePerGas")}get maxFeePerGas(){const t=this.#a;return t??(this.type===2||this.type===3?V:null)}set maxFeePerGas(t){this.#a=t==null?null:d.getBigInt(t,"maxFeePerGas")}get data(){return this.#r}set data(t){this.#r=o.hexlify(t)}get value(){return this.#d}set value(t){this.#d=d.getBigInt(t,"value")}get chainId(){return this.#l}set chainId(t){this.#l=d.getBigInt(t)}get signature(){return this.#g||null}set signature(t){this.#g=t==null?null:H.from(t)}get accessList(){const t=this.#A||null;return t??(this.type===1||this.type===2||this.type===3?[]:null)}set accessList(t){this.#A=t==null?null:d.accessListify(t)}get maxFeePerBlobGas(){const t=this.#c;return t==null&&this.type===3?V:t}set maxFeePerBlobGas(t){this.#c=t==null?null:d.getBigInt(t,"maxFeePerBlobGas")}get blobVersionedHashes(){let t=this.#u;return t==null&&this.type===3?[]:t}set blobVersionedHashes(t){if(t!=null){o.assertArgument(Array.isArray(t),"blobVersionedHashes must be an Array","value",t),t=t.slice();for(let e=0;e<t.length;e++)o.assertArgument(o.isHexString(t[e],32),"invalid blobVersionedHash",`value[${e}]`,t[e])}this.#u=t}get blobs(){return this.#f==null?null:this.#f.map(t=>Object.assign({},t))}set blobs(t){if(t==null){this.#f=null;return}const e=[],r=[];for(let n=0;n<t.length;n++){const i=t[n];if(o.isBytesLike(i)){o.assert(this.#h,"adding a raw blob requires a KZG library","UNSUPPORTED_OPERATION",{operation:"set blobs()"});let a=o.getBytes(i);if(o.assertArgument(a.length<=ke,"blob is too large",`blobs[${n}]`,i),a.length!==ke){const u=new Uint8Array(ke);u.set(a),a=u}const c=this.#h.blobToKzgCommitment(a),l=o.hexlify(this.#h.computeBlobKzgProof(a,c));e.push({data:o.hexlify(a),commitment:o.hexlify(c),proof:l}),r.push(zr(1,c))}else{const a=o.hexlify(i.commitment);e.push({data:o.hexlify(i.data),commitment:a,proof:o.hexlify(i.proof)}),r.push(zr(1,a))}}this.#f=e,this.#u=r}get kzg(){return this.#h}set kzg(t){this.#h=t}constructor(){this.#t=null,this.#e=null,this.#s=0,this.#n=V,this.#o=null,this.#i=null,this.#a=null,this.#r="0x",this.#d=V,this.#l=V,this.#g=null,this.#A=null,this.#c=null,this.#u=null,this.#f=null,this.#h=null}get hash(){return this.signature==null?null:o.keccak256(this.#p(!0,!1))}get unsignedHash(){return o.keccak256(this.unsignedSerialized)}get from(){return this.signature==null?null:ji(this.unsignedHash,this.signature)}get fromPublicKey(){return this.signature==null?null:st.recoverPublicKey(this.unsignedHash,this.signature)}isSigned(){return this.signature!=null}#p(t,e){o.assert(!t||this.signature!=null,"cannot serialize unsigned transaction; maybe you meant .unsignedSerialized","UNSUPPORTED_OPERATION",{operation:".serialized"});const r=t?this.signature:null;switch(this.inferType()){case 0:return to(this,r);case 1:return no(this,r);case 2:return ro(this,r);case 3:return oo(this,r,e?this.blobs:null)}o.assert(!1,"unsupported transaction type","UNSUPPORTED_OPERATION",{operation:".serialized"})}get serialized(){return this.#p(!0,!0)}get unsignedSerialized(){return this.#p(!1,!1)}inferType(){const t=this.inferTypes();return t.indexOf(2)>=0?2:t.pop()}inferTypes(){const t=this.gasPrice!=null,e=this.maxFeePerGas!=null||this.maxPriorityFeePerGas!=null,r=this.accessList!=null,n=this.#c!=null||this.#u;this.maxFeePerGas!=null&&this.maxPriorityFeePerGas!=null&&o.assert(this.maxFeePerGas>=this.maxPriorityFeePerGas,"priorityFee cannot be more than maxFee","BAD_DATA",{value:this}),o.assert(!e||this.type!==0&&this.type!==1,"transaction type cannot have maxFeePerGas or maxPriorityFeePerGas","BAD_DATA",{value:this}),o.assert(this.type!==0||!r,"legacy transaction cannot have accessList","BAD_DATA",{value:this});const i=[];return this.type!=null?i.push(this.type):e?i.push(2):t?(i.push(1),r||i.push(0)):r?(i.push(1),i.push(2)):(n&&this.to||(i.push(0),i.push(1),i.push(2)),i.push(3)),i.sort(),i}isLegacy(){return this.type===0}isBerlin(){return this.type===1}isLondon(){return this.type===2}isCancun(){return this.type===3}clone(){return tt.from(this)}toJSON(){const t=e=>e==null?null:e.toString();return{type:this.type,to:this.to,data:this.data,nonce:this.nonce,gasLimit:t(this.gasLimit),gasPrice:t(this.gasPrice),maxPriorityFeePerGas:t(this.maxPriorityFeePerGas),maxFeePerGas:t(this.maxFeePerGas),value:t(this.value),chainId:t(this.chainId),sig:this.signature?this.signature.toJSON():null,accessList:this.accessList}}static from(t){if(t==null)return new tt;if(typeof t=="string"){const r=o.getBytes(t);if(r[0]>=127)return tt.from($i(r));switch(r[0]){case 1:return tt.from(so(r));case 2:return tt.from(eo(r));case 3:return tt.from(io(r))}o.assert(!1,"unsupported transaction type","UNSUPPORTED_OPERATION",{operation:"from"})}const e=new tt;return t.type!=null&&(e.type=t.type),t.to!=null&&(e.to=t.to),t.nonce!=null&&(e.nonce=t.nonce),t.gasLimit!=null&&(e.gasLimit=t.gasLimit),t.gasPrice!=null&&(e.gasPrice=t.gasPrice),t.maxPriorityFeePerGas!=null&&(e.maxPriorityFeePerGas=t.maxPriorityFeePerGas),t.maxFeePerGas!=null&&(e.maxFeePerGas=t.maxFeePerGas),t.maxFeePerBlobGas!=null&&(e.maxFeePerBlobGas=t.maxFeePerBlobGas),t.data!=null&&(e.data=t.data),t.value!=null&&(e.value=t.value),t.chainId!=null&&(e.chainId=t.chainId),t.signature!=null&&(e.signature=H.from(t.signature)),t.accessList!=null&&(e.accessList=t.accessList),t.blobVersionedHashes!=null&&(e.blobVersionedHashes=t.blobVersionedHashes),t.kzg!=null&&(e.kzg=t.kzg),t.blobs!=null&&(e.blobs=t.blobs),t.hash!=null&&(o.assertArgument(e.isSigned(),"unsigned transaction cannot define '.hash'","tx",t),o.assertArgument(e.hash===t.hash,"hash mismatch","tx",t)),t.from!=null&&(o.assertArgument(e.isSigned(),"unsigned transaction cannot define '.from'","tx",t),o.assertArgument(e.from.toLowerCase()===(t.from||"").toLowerCase(),"from mismatch","tx",t)),e}}const js=new Uint8Array(32);js.fill(0);const ao=BigInt(-1),Zs=BigInt(0),Ys=BigInt(1),co=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");function lo(s){const t=o.getBytes(s),e=t.length%32;return e?o.concat([t,js.slice(e)]):o.hexlify(t)}const uo=d.toBeHex(Ys,32),ho=d.toBeHex(Zs,32),Kr={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"},Se=["name","version","chainId","verifyingContract","salt"];function jr(s){return function(t){return o.assertArgument(typeof t=="string",`invalid domain value for ${JSON.stringify(s)}`,`domain.${s}`,t),t}}const fo={name:jr("name"),version:jr("version"),chainId:function(s){const t=d.getBigInt(s,"domain.chainId");return o.assertArgument(t>=0,"invalid chain ID","domain.chainId",s),Number.isSafeInteger(t)?Number(t):d.toQuantity(t)},verifyingContract:function(s){try{return o.getAddress(s).toLowerCase()}catch{}o.assertArgument(!1,'invalid domain value "verifyingContract"',"domain.verifyingContract",s)},salt:function(s){const t=o.getBytes(s,"domain.salt");return o.assertArgument(t.length===32,'invalid domain value "salt"',"domain.salt",s),o.hexlify(t)}};function ve(s){{const t=s.match(/^(u?)int(\d+)$/);if(t){const e=t[1]==="",r=parseInt(t[2]);o.assertArgument(r%8===0&&r!==0&&r<=256&&t[2]===String(r),"invalid numeric width","type",s);const n=d.mask(co,e?r-1:r),i=e?(n+Ys)*ao:Zs;return function(a){const c=d.getBigInt(a,"value");return o.assertArgument(c>=i&&c<=n,`value out-of-bounds for ${s}`,"value",c),d.toBeHex(e?d.toTwos(c,256):c,32)}}}{const t=s.match(/^bytes(\d+)$/);if(t){const e=parseInt(t[1]);return o.assertArgument(e!==0&&e<=32&&t[1]===String(e),"invalid bytes width","type",s),function(r){const n=o.getBytes(r);return o.assertArgument(n.length===e,`invalid length for ${s}`,"value",r),lo(r)}}}switch(s){case"address":return function(t){return o.zeroPadValue(o.getAddress(t),32)};case"bool":return function(t){return t?uo:ho};case"bytes":return function(t){return o.keccak256(t)};case"string":return function(t){return d.id(t)}}return null}function Zr(s,t){return`${s}(${t.map(({name:e,type:r})=>r+" "+e).join(",")})`}function se(s){const t=s.match(/^([^\x5b]*)((\x5b\d*\x5d)*)(\x5b(\d*)\x5d)$/);return t?{base:t[1],index:t[2]+t[4],array:{base:t[1],prefix:t[1]+t[2],count:t[5]?parseInt(t[5]):-1}}:{base:s}}class j{primaryType;#t;get types(){return JSON.parse(this.#t)}#e;#r;constructor(t){this.#e=new Map,this.#r=new Map;const e=new Map,r=new Map,n=new Map,i={};Object.keys(t).forEach(l=>{i[l]=t[l].map(({name:u,type:f})=>{let{base:h,index:A}=se(f);return h==="int"&&!t.int&&(h="int256"),h==="uint"&&!t.uint&&(h="uint256"),{name:u,type:h+(A||"")}}),e.set(l,new Set),r.set(l,[]),n.set(l,new Set)}),this.#t=JSON.stringify(i);for(const l in i){const u=new Set;for(const f of i[l]){o.assertArgument(!u.has(f.name),`duplicate variable name ${JSON.stringify(f.name)} in ${JSON.stringify(l)}`,"types",t),u.add(f.name);const h=se(f.type).base;o.assertArgument(h!==l,`circular type reference to ${JSON.stringify(h)}`,"types",t),!ve(h)&&(o.assertArgument(r.has(h),`unknown type ${JSON.stringify(h)}`,"types",t),r.get(h).push(l),e.get(l).add(h))}}const a=Array.from(r.keys()).filter(l=>r.get(l).length===0);o.assertArgument(a.length!==0,"missing primary type","types",t),o.assertArgument(a.length===1,`ambiguous primary types or unused types: ${a.map(l=>JSON.stringify(l)).join(", ")}`,"types",t),o.defineProperties(this,{primaryType:a[0]});function c(l,u){o.assertArgument(!u.has(l),`circular type reference to ${JSON.stringify(l)}`,"types",t),u.add(l);for(const f of e.get(l))if(r.has(f)){c(f,u);for(const h of u)n.get(h).add(f)}u.delete(l)}c(this.primaryType,new Set);for(const[l,u]of n){const f=Array.from(u);f.sort(),this.#e.set(l,Zr(l,i[l])+f.map(h=>Zr(h,i[h])).join(""))}}getEncoder(t){let e=this.#r.get(t);return e||(e=this.#s(t),this.#r.set(t,e)),e}#s(t){{const n=ve(t);if(n)return n}const e=se(t).array;if(e){const n=e.prefix,i=this.getEncoder(n);return a=>{o.assertArgument(e.count===-1||e.count===a.length,`array length mismatch; expected length ${e.count}`,"value",a);let c=a.map(i);return this.#e.has(n)&&(c=c.map(o.keccak256)),o.keccak256(o.concat(c))}}const r=this.types[t];if(r){const n=d.id(this.#e.get(t));return i=>{const a=r.map(({name:c,type:l})=>{const u=this.getEncoder(l)(i[c]);return this.#e.has(l)?o.keccak256(u):u});return a.unshift(n),o.concat(a)}}o.assertArgument(!1,`unknown type: ${t}`,"type",t)}encodeType(t){const e=this.#e.get(t);return o.assertArgument(e,`unknown type: ${JSON.stringify(t)}`,"name",t),e}encodeData(t,e){return this.getEncoder(t)(e)}hashStruct(t,e){return o.keccak256(this.encodeData(t,e))}encode(t){return this.encodeData(this.primaryType,t)}hash(t){return this.hashStruct(this.primaryType,t)}_visit(t,e,r){if(ve(t))return r(t,e);const n=se(t).array;if(n)return o.assertArgument(n.count===-1||n.count===e.length,`array length mismatch; expected length ${n.count}`,"value",e),e.map(a=>this._visit(n.prefix,a,r));const i=this.types[t];if(i)return i.reduce((a,{name:c,type:l})=>(a[c]=this._visit(l,e[c],r),a),{});o.assertArgument(!1,`unknown type: ${t}`,"type",t)}visit(t,e){return this._visit(this.primaryType,t,e)}static from(t){return new j(t)}static getPrimaryType(t){return j.from(t).primaryType}static hashStruct(t,e,r){return j.from(e).hashStruct(t,r)}static hashDomain(t){const e=[];for(const r in t){if(t[r]==null)continue;const n=Kr[r];o.assertArgument(n,`invalid typed-data domain key: ${JSON.stringify(r)}`,"domain",t),e.push({name:r,type:n})}return e.sort((r,n)=>Se.indexOf(r.name)-Se.indexOf(n.name)),j.hashStruct("EIP712Domain",{EIP712Domain:e},t)}static encode(t,e,r){return o.concat(["0x1901",j.hashDomain(t),j.from(e).hash(r)])}static hash(t,e,r){return o.keccak256(j.encode(t,e,r))}static async resolveNames(t,e,r,n){t=Object.assign({},t);for(const c in t)t[c]==null&&delete t[c];const i={};t.verifyingContract&&!o.isHexString(t.verifyingContract,20)&&(i[t.verifyingContract]="0x");const a=j.from(e);a.visit(r,(c,l)=>(c==="address"&&!o.isHexString(l,20)&&(i[l]="0x"),l));for(const c in i)i[c]=await n(c);return t.verifyingContract&&i[t.verifyingContract]&&(t.verifyingContract=i[t.verifyingContract]),r=a.visit(r,(c,l)=>c==="address"&&i[l]?i[l]:l),{domain:t,value:r}}static getPayload(t,e,r){j.hashDomain(t);const n={},i=[];Se.forEach(l=>{const u=t[l];u!=null&&(n[l]=fo[l](u),i.push({name:l,type:Kr[l]}))});const a=j.from(e);e=a.types;const c=Object.assign({},e);return o.assertArgument(c.EIP712Domain==null,"types must not contain EIP712Domain type","types.EIP712Domain",e),c.EIP712Domain=i,a.encode(r),{types:c,domain:n,primaryType:a.primaryType,message:a.visit(r,(l,u)=>{if(l.match(/^bytes(\d*)/))return o.hexlify(o.getBytes(u));if(l.match(/^u?int/))return d.getBigInt(u).toString();switch(l){case"address":return u.toLowerCase();case"bool":return!!u;case"string":return o.assertArgument(typeof u=="string","invalid string","value",u),u}o.assertArgument(!1,"unsupported type","type",l)})}}}function Re(s){return s.match(/^ipfs:\/\/ipfs\//i)?s=s.substring(12):s.match(/^ipfs:\/\//i)?s=s.substring(7):o.assertArgument(!1,"unsupported IPFS format","link",s),`https://gateway.ipfs.io/ipfs/${s}`}class go{name;constructor(t){o.defineProperties(this,{name:t})}connect(t){return this}supportsCoinType(t){return!1}async encodeAddress(t,e){throw new Error("unsupported coin")}async decodeAddress(t,e){throw new Error("unsupported coin")}}const qs=new RegExp("^(ipfs)://(.*)$","i"),Yr=[new RegExp("^(https)://(.*)$","i"),new RegExp("^(data):(.*)$","i"),qs,new RegExp("^eip155:[0-9]+/(erc[0-9]+):(.*)$","i")];class Rt{provider;address;name;#t;#e;constructor(t,e,r){o.defineProperties(this,{provider:t,address:e,name:r}),this.#t=null,this.#e=new d.Contract(e,["function supportsInterface(bytes4) view returns (bool)","function resolve(bytes, bytes) view returns (bytes)","function addr(bytes32) view returns (address)","function addr(bytes32, uint) view returns (bytes)","function text(bytes32, string) view returns (string)","function contenthash(bytes32) view returns (bytes)"],t)}async supportsWildcard(){return this.#t==null&&(this.#t=(async()=>{try{return await this.#e.supportsInterface("0x9061b923")}catch(t){if(o.isError(t,"CALL_EXCEPTION"))return!1;throw this.#t=null,t}})()),await this.#t}async#r(t,e){e=(e||[]).slice();const r=this.#e.interface;e.unshift(je(this.name));let n=null;await this.supportsWildcard()&&(n=r.getFunction(t),o.assert(n,"missing fragment","UNKNOWN_ERROR",{info:{funcName:t}}),e=[Ki(this.name,255),r.encodeFunctionData(n,e)],t="resolve(bytes,bytes)"),e.push({enableCcipRead:!0});try{const i=await this.#e[t](...e);return n?r.decodeFunctionResult(n,i)[0]:i}catch(i){if(!o.isError(i,"CALL_EXCEPTION"))throw i}return null}async getAddress(t){if(t==null&&(t=60),t===60)try{const i=await this.#r("addr(bytes32)");return i==null||i===Ft?null:i}catch(i){if(o.isError(i,"CALL_EXCEPTION"))return null;throw i}if(t>=0&&t<2147483648){let i=t+2147483648;const a=await this.#r("addr(bytes32,uint)",[i]);if(o.isHexString(a,20))return o.getAddress(a)}let e=null;for(const i of this.provider.plugins)if(i instanceof go&&i.supportsCoinType(t)){e=i;break}if(e==null)return null;const r=await this.#r("addr(bytes32,uint)",[t]);if(r==null||r==="0x")return null;const n=await e.decodeAddress(t,r);if(n!=null)return n;o.assert(!1,"invalid coin data","UNSUPPORTED_OPERATION",{operation:`getAddress(${t})`,info:{coinType:t,data:r}})}async getText(t){const e=await this.#r("text(bytes32,string)",[t]);return e==null||e==="0x"?null:e}async getContentHash(){const t=await this.#r("contenthash(bytes32)");if(t==null||t==="0x")return null;const e=t.match(/^0x(e3010170|e5010172)(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(e){const n=e[1]==="e3010170"?"ipfs":"ipns",i=parseInt(e[4],16);if(e[5].length===i*2)return`${n}://${ss("0x"+e[2])}`}const r=t.match(/^0xe40101fa011b20([0-9a-f]*)$/);if(r&&r[1].length===64)return`bzz://${r[1]}`;o.assert(!1,"invalid or unsupported content hash data","UNSUPPORTED_OPERATION",{operation:"getContentHash()",info:{data:t}})}async getAvatar(){return(await this._getAvatar()).url}async _getAvatar(){const t=[{type:"name",value:this.name}];try{const e=await this.getText("avatar");if(e==null)return t.push({type:"!avatar",value:""}),{url:null,linkage:t};t.push({type:"avatar",value:e});for(let r=0;r<Yr.length;r++){const n=e.match(Yr[r]);if(n==null)continue;const i=n[1].toLowerCase();switch(i){case"https":case"data":return t.push({type:"url",value:e}),{linkage:t,url:e};case"ipfs":{const a=Re(e);return t.push({type:"ipfs",value:e}),t.push({type:"url",value:a}),{linkage:t,url:a}}case"erc721":case"erc1155":{const a=i==="erc721"?"tokenURI(uint256)":"uri(uint256)";t.push({type:i,value:e});const c=await this.getAddress();if(c==null)return t.push({type:"!owner",value:""}),{url:null,linkage:t};const l=(n[2]||"").split("/");if(l.length!==2)return t.push({type:`!${i}caip`,value:n[2]||""}),{url:null,linkage:t};const u=l[1],f=new d.Contract(l[0],["function tokenURI(uint) view returns (string)","function ownerOf(uint) view returns (address)","function uri(uint) view returns (string)","function balanceOf(address, uint256) view returns (uint)"],this.provider);if(i==="erc721"){const g=await f.ownerOf(u);if(c!==g)return t.push({type:"!owner",value:g}),{url:null,linkage:t};t.push({type:"owner",value:g})}else if(i==="erc1155"){const g=await f.balanceOf(c,u);if(!g)return t.push({type:"!balance",value:"0"}),{url:null,linkage:t};t.push({type:"balance",value:g.toString()})}let h=await f[a](u);if(h==null||h==="0x")return t.push({type:"!metadata-url",value:""}),{url:null,linkage:t};t.push({type:"metadata-url-base",value:h}),i==="erc1155"&&(h=h.replace("{id}",d.toBeHex(u,32).substring(2)),t.push({type:"metadata-url-expanded",value:h})),h.match(/^ipfs:/i)&&(h=Re(h)),t.push({type:"metadata-url",value:h});let A={};const w=await new nt(h).send();w.assertOk();try{A=w.bodyJson}catch{try{t.push({type:"!metadata",value:w.bodyText})}catch{const y=w.body;return y&&t.push({type:"!metadata",value:o.hexlify(y)}),{url:null,linkage:t}}return{url:null,linkage:t}}if(!A)return t.push({type:"!metadata",value:""}),{url:null,linkage:t};t.push({type:"metadata",value:JSON.stringify(A)});let m=A.image;if(typeof m!="string")return t.push({type:"!imageUrl",value:""}),{url:null,linkage:t};if(!m.match(/^(https:\/\/|data:)/i)){if(m.match(qs)==null)return t.push({type:"!imageUrl-ipfs",value:m}),{url:null,linkage:t};t.push({type:"imageUrl-ipfs",value:m}),m=Re(m)}return t.push({type:"url",value:m}),{linkage:t,url:m}}}}}catch{}return{linkage:t,url:null}}static async getEnsAddress(t){const e=await t.getNetwork(),r=e.getPlugin("org.ethers.plugins.network.Ens");return o.assert(r,"network does not support ENS","UNSUPPORTED_OPERATION",{operation:"getEnsAddress",info:{network:e}}),r.address}static async#s(t,e){const r=await Rt.getEnsAddress(t);try{const i=await new d.Contract(r,["function resolver(bytes32) view returns (address)"],t).resolver(je(e),{enableCcipRead:!0});return i===Ft?null:i}catch(n){throw n}return null}static async fromName(t,e){let r=e;for(;;){if(r===""||r==="."||e!=="eth"&&r==="eth")return null;const n=await Rt.#s(t,r);if(n!=null){const i=new Rt(t,n,e);return r!==e&&!await i.supportsWildcard()?null:i}r=r.split(".").slice(1).join(".")}}}const qr=BigInt(0);function v(s,t){return(function(e){return e==null?t:s(e)})}function be(s,t){return(e=>{if(t&&e==null)return null;if(!Array.isArray(e))throw new Error("not an array");return e.map(r=>s(r))})}function Wt(s,t){return(e=>{const r={};for(const n in s){let i=n;if(t&&n in t&&!(i in e)){for(const a of t[n])if(a in e){i=a;break}}try{const a=s[n](e[i]);a!==void 0&&(r[n]=a)}catch(a){const c=a instanceof Error?a.message:"not-an-error";o.assert(!1,`invalid value for value.${n} (${c})`,"BAD_DATA",{value:e})}}return r})}function Ao(s){switch(s){case!0:case"true":return!0;case!1:case"false":return!1}o.assertArgument(!1,`invalid boolean; ${JSON.stringify(s)}`,"value",s)}function Mt(s){return o.assertArgument(o.isHexString(s,!0),"invalid data","value",s),s}function K(s){return o.assertArgument(o.isHexString(s,32),"invalid hash","value",s),s}const po=Wt({address:o.getAddress,blockHash:K,blockNumber:d.getNumber,data:Mt,index:d.getNumber,removed:v(Ao,!1),topics:be(K),transactionHash:K,transactionIndex:d.getNumber},{index:["logIndex"]});function mo(s){return po(s)}const wo=Wt({hash:v(K),parentHash:K,parentBeaconBlockRoot:v(K,null),number:d.getNumber,timestamp:d.getNumber,nonce:v(Mt),difficulty:d.getBigInt,gasLimit:d.getBigInt,gasUsed:d.getBigInt,stateRoot:v(K,null),receiptsRoot:v(K,null),blobGasUsed:v(d.getBigInt,null),excessBlobGas:v(d.getBigInt,null),miner:v(o.getAddress),prevRandao:v(K,null),extraData:Mt,baseFeePerGas:v(d.getBigInt)},{prevRandao:["mixHash"]});function yo(s){const t=wo(s);return t.transactions=s.transactions.map(e=>typeof e=="string"?e:Ws(e)),t}const bo=Wt({transactionIndex:d.getNumber,blockNumber:d.getNumber,transactionHash:K,address:o.getAddress,topics:be(K),data:Mt,index:d.getNumber,blockHash:K},{index:["logIndex"]});function Eo(s){return bo(s)}const Bo=Wt({to:v(o.getAddress,null),from:v(o.getAddress,null),contractAddress:v(o.getAddress,null),index:d.getNumber,root:v(o.hexlify),gasUsed:d.getBigInt,blobGasUsed:v(d.getBigInt,null),logsBloom:v(Mt),blockHash:K,hash:K,logs:be(Eo),blockNumber:d.getNumber,cumulativeGasUsed:d.getBigInt,effectiveGasPrice:v(d.getBigInt),blobGasPrice:v(d.getBigInt,null),status:v(d.getNumber),type:v(d.getNumber,0)},{effectiveGasPrice:["gasPrice"],hash:["transactionHash"],index:["transactionIndex"]});function xo(s){return Bo(s)}function Ws(s){s.to&&d.getBigInt(s.to)===qr&&(s.to="0x0000000000000000000000000000000000000000");const t=Wt({hash:K,index:v(d.getNumber,void 0),type:e=>e==="0x"||e==null?0:d.getNumber(e),accessList:v(d.accessListify,null),blobVersionedHashes:v(be(K,!0),null),blockHash:v(K,null),blockNumber:v(d.getNumber,null),transactionIndex:v(d.getNumber,null),from:o.getAddress,gasPrice:v(d.getBigInt),maxPriorityFeePerGas:v(d.getBigInt),maxFeePerGas:v(d.getBigInt),maxFeePerBlobGas:v(d.getBigInt,null),gasLimit:d.getBigInt,to:v(o.getAddress,null),value:d.getBigInt,nonce:d.getNumber,data:Mt,creates:v(o.getAddress,null),chainId:v(d.getBigInt,null)},{data:["input"],gasLimit:["gas"],index:["transactionIndex"]})(s);if(t.to==null&&t.creates==null&&(t.creates=xs(t)),(s.type===1||s.type===2)&&s.accessList==null&&(t.accessList=[]),s.signature?t.signature=H.from(s.signature):t.signature=H.from(s),t.chainId==null){const e=t.signature.legacyChainId;e!=null&&(t.chainId=e)}return t.blockHash&&d.getBigInt(t.blockHash)===qr&&(t.blockHash=null),t}const Co="0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e";class Xt{name;constructor(t){o.defineProperties(this,{name:t})}clone(){return new Xt(this.name)}}class Ee extends Xt{effectiveBlock;txBase;txCreate;txDataZero;txDataNonzero;txAccessListStorageKey;txAccessListAddress;constructor(t,e){t==null&&(t=0),super(`org.ethers.network.plugins.GasCost#${t||0}`);const r={effectiveBlock:t};function n(i,a){let c=(e||{})[i];c==null&&(c=a),o.assertArgument(typeof c=="number",`invalud value for ${i}`,"costs",e),r[i]=c}n("txBase",21e3),n("txCreate",32e3),n("txDataZero",4),n("txDataNonzero",16),n("txAccessListStorageKey",1900),n("txAccessListAddress",2400),o.defineProperties(this,r)}clone(){return new Ee(this.effectiveBlock,this)}}class Be extends Xt{address;targetNetwork;constructor(t,e){super("org.ethers.plugins.network.Ens"),o.defineProperties(this,{address:t||Co,targetNetwork:e??1})}clone(){return new Be(this.address,this.targetNetwork)}}class Io extends Xt{#t;#e;get url(){return this.#t}get processFunc(){return this.#e}constructor(t,e){super("org.ethers.plugins.network.FetchUrlFeeDataPlugin"),this.#t=t,this.#e=e}clone(){return this}}const Oe=new Map;class W{#t;#e;#r;constructor(t,e){this.#t=t,this.#e=d.getBigInt(e),this.#r=new Map}toJSON(){return{name:this.name,chainId:String(this.chainId)}}get name(){return this.#t}set name(t){this.#t=t}get chainId(){return this.#e}set chainId(t){this.#e=d.getBigInt(t,"chainId")}matches(t){if(t==null)return!1;if(typeof t=="string"){try{return this.chainId===d.getBigInt(t)}catch{}return this.name===t}if(typeof t=="number"||typeof t=="bigint"){try{return this.chainId===d.getBigInt(t)}catch{}return!1}if(typeof t=="object"){if(t.chainId!=null){try{return this.chainId===d.getBigInt(t.chainId)}catch{}return!1}return t.name!=null?this.name===t.name:!1}return!1}get plugins(){return Array.from(this.#r.values())}attachPlugin(t){if(this.#r.get(t.name))throw new Error(`cannot replace existing plugin: ${t.name} `);return this.#r.set(t.name,t.clone()),this}getPlugin(t){return this.#r.get(t)||null}getPlugins(t){return this.plugins.filter(e=>e.name.split("#")[0]===t)}clone(){const t=new W(this.name,this.chainId);return this.plugins.forEach(e=>{t.attachPlugin(e.clone())}),t}computeIntrinsicGas(t){const e=this.getPlugin("org.ethers.plugins.network.GasCost")||new Ee;let r=e.txBase;if(t.to==null&&(r+=e.txCreate),t.data)for(let n=2;n<t.data.length;n+=2)t.data.substring(n,n+2)==="00"?r+=e.txDataZero:r+=e.txDataNonzero;if(t.accessList){const n=d.accessListify(t.accessList);for(const i in n)r+=e.txAccessListAddress+e.txAccessListStorageKey*n[i].storageKeys.length}return r}static from(t){if(Po(),t==null)return W.from("mainnet");if(typeof t=="number"&&(t=BigInt(t)),typeof t=="string"||typeof t=="bigint"){const e=Oe.get(t);if(e)return e();if(typeof t=="bigint")return new W("unknown",t);o.assertArgument(!1,"unknown network","network",t)}if(typeof t.clone=="function")return t.clone();if(typeof t=="object"){o.assertArgument(typeof t.name=="string"&&typeof t.chainId=="number","invalid network object name or chainId","network",t);const e=new W(t.name,t.chainId);return(t.ensAddress||t.ensNetwork!=null)&&e.attachPlugin(new Be(t.ensAddress,t.ensNetwork)),e}o.assertArgument(!1,"invalid network","network",t)}static register(t,e){typeof t=="number"&&(t=BigInt(t));const r=Oe.get(t);r&&o.assertArgument(!1,`conflicting network for ${JSON.stringify(r.name)}`,"nameOrChainId",t),Oe.set(t,e)}}function Wr(s,t){const e=String(s);if(!e.match(/^[0-9.]+$/))throw new Error(`invalid gwei value: ${s}`);const r=e.split(".");if(r.length===1&&r.push(""),r.length!==2)throw new Error(`invalid gwei value: ${s}`);for(;r[1].length<t;)r[1]+="0";if(r[1].length>9){let n=BigInt(r[1].substring(0,9));r[1].substring(9).match(/^0+$/)||n++,r[1]=n.toString()}return BigInt(r[0]+r[1])}function Xr(s){return new Io(s,async(t,e,r)=>{r.setHeader("User-Agent","ethers");let n;try{const[i,a]=await Promise.all([r.send(),t()]);n=i;const c=n.bodyJson.standard;return{gasPrice:a.gasPrice,maxFeePerGas:Wr(c.maxFee,9),maxPriorityFeePerGas:Wr(c.maxPriorityFee,9)}}catch(i){o.assert(!1,`error encountered with polygon gas station (${JSON.stringify(r.url)})`,"SERVER_ERROR",{request:r,response:n,error:i})}})}let _r=!1;function Po(){if(_r)return;_r=!0;function s(t,e,r){const n=function(){const i=new W(t,e);return r.ensNetwork!=null&&i.attachPlugin(new Be(null,r.ensNetwork)),i.attachPlugin(new Ee),(r.plugins||[]).forEach(a=>{i.attachPlugin(a)}),i};W.register(t,n),W.register(e,n),r.altNames&&r.altNames.forEach(i=>{W.register(i,n)})}s("mainnet",1,{ensNetwork:1,altNames:["homestead"]}),s("ropsten",3,{ensNetwork:3}),s("rinkeby",4,{ensNetwork:4}),s("goerli",5,{ensNetwork:5}),s("kovan",42,{ensNetwork:42}),s("sepolia",11155111,{ensNetwork:11155111}),s("holesky",17e3,{ensNetwork:17e3}),s("classic",61,{}),s("classicKotti",6,{}),s("arbitrum",42161,{ensNetwork:1}),s("arbitrum-goerli",421613,{}),s("arbitrum-sepolia",421614,{}),s("base",8453,{ensNetwork:1}),s("base-goerli",84531,{}),s("base-sepolia",84532,{}),s("bnb",56,{ensNetwork:1}),s("bnbt",97,{}),s("linea",59144,{ensNetwork:1}),s("linea-goerli",59140,{}),s("linea-sepolia",59141,{}),s("matic",137,{ensNetwork:1,plugins:[Xr("https://gasstation.polygon.technology/v2")]}),s("matic-amoy",80002,{}),s("matic-mumbai",80001,{altNames:["maticMumbai","maticmum"],plugins:[Xr("https://gasstation-testnet.polygon.technology/v2")]}),s("optimism",10,{ensNetwork:1,plugins:[]}),s("optimism-goerli",420,{}),s("optimism-sepolia",11155420,{}),s("xdai",100,{ensNetwork:1})}function Ze(s){return JSON.parse(JSON.stringify(s))}class No{#t;#e;#r;#s;constructor(t){this.#t=t,this.#e=null,this.#r=4e3,this.#s=-2}get pollingInterval(){return this.#r}set pollingInterval(t){this.#r=t}async#n(){try{const t=await this.#t.getBlockNumber();if(this.#s===-2){this.#s=t;return}if(t!==this.#s){for(let e=this.#s+1;e<=t;e++){if(this.#e==null)return;await this.#t.emit("block",e)}this.#s=t}}catch{}this.#e!=null&&(this.#e=this.#t._setTimeout(this.#n.bind(this),this.#r))}start(){this.#e||(this.#e=this.#t._setTimeout(this.#n.bind(this),this.#r),this.#n())}stop(){this.#e&&(this.#t._clearTimeout(this.#e),this.#e=null)}pause(t){this.stop(),t&&(this.#s=-2)}resume(){this.start()}}class ur{#t;#e;#r;constructor(t){this.#t=t,this.#r=!1,this.#e=e=>{this._poll(e,this.#t)}}async _poll(t,e){throw new Error("sub-classes must override this")}start(){this.#r||(this.#r=!0,this.#e(-2),this.#t.on("block",this.#e))}stop(){this.#r&&(this.#r=!1,this.#t.off("block",this.#e))}pause(t){this.stop()}resume(){this.start()}}class ko extends ur{#t;#e;constructor(t,e){super(t),this.#t=e,this.#e=-2}pause(t){t&&(this.#e=-2),super.pause(t)}async _poll(t,e){const r=await e.getBlock(this.#t);r!=null&&(this.#e===-2?this.#e=r.number:r.number>this.#e&&(e.emit(this.#t,r.number),this.#e=r.number))}}class So extends ur{#t;constructor(t,e){super(t),this.#t=Ze(e)}async _poll(t,e){throw new Error("@TODO")}}class vo extends ur{#t;constructor(t,e){super(t),this.#t=e}async _poll(t,e){const r=await e.getTransactionReceipt(this.#t);r&&e.emit(this.#t,r)}}class hr{#t;#e;#r;#s;#n;constructor(t,e){this.#t=t,this.#e=Ze(e),this.#r=this.#o.bind(this),this.#s=!1,this.#n=-2}async#o(t){if(this.#n===-2)return;const e=Ze(this.#e);e.fromBlock=this.#n+1,e.toBlock=t;const r=await this.#t.getLogs(e);if(r.length===0){this.#n<t-60&&(this.#n=t-60);return}for(const n of r)this.#t.emit(this.#e,n),this.#n=n.blockNumber}start(){this.#s||(this.#s=!0,this.#n===-2&&this.#t.getBlockNumber().then(t=>{this.#n=t}),this.#t.on("block",this.#r))}stop(){this.#s&&(this.#s=!1,this.#t.off("block",this.#r))}pause(t){this.stop(),t&&(this.#n=-2)}resume(){this.start()}}const Ro=BigInt(2),Oo=10;function ne(s){return s&&typeof s.then=="function"}function oe(s,t){return s+":"+JSON.stringify(t,(e,r)=>{if(r==null)return"null";if(typeof r=="bigint")return`bigint:${r.toString()}`;if(typeof r=="string")return r.toLowerCase();if(typeof r=="object"&&!Array.isArray(r)){const n=Object.keys(r);return n.sort(),n.reduce((i,a)=>(i[a]=r[a],i),{})}return r})}class Xs{name;constructor(t){o.defineProperties(this,{name:t})}start(){}stop(){}pause(t){}resume(){}}function Do(s){return JSON.parse(JSON.stringify(s))}function Ye(s){return s=Array.from(new Set(s).values()),s.sort(),s}async function De(s,t){if(s==null)throw new Error("invalid event");if(Array.isArray(s)&&(s={topics:s}),typeof s=="string")switch(s){case"block":case"debug":case"error":case"finalized":case"network":case"pending":case"safe":return{type:s,tag:s}}if(o.isHexString(s,32)){const e=s.toLowerCase();return{type:"transaction",tag:oe("tx",{hash:e}),hash:e}}if(s.orphan){const e=s;return{type:"orphan",tag:oe("orphan",e),filter:Do(e)}}if(s.address||s.topics){const e=s,r={topics:(e.topics||[]).map(n=>n==null?null:Array.isArray(n)?Ye(n.map(i=>i.toLowerCase())):n.toLowerCase())};if(e.address){const n=[],i=[],a=c=>{o.isHexString(c)?n.push(c):i.push((async()=>{n.push(await o.resolveAddress(c,t))})())};Array.isArray(e.address)?e.address.forEach(a):a(e.address),i.length&&await Promise.all(i),r.address=Ye(n.map(c=>c.toLowerCase()))}return{filter:r,tag:oe("event",r),type:"event"}}o.assertArgument(!1,"unknown ProviderEvent","event",s)}function Te(){return new Date().getTime()}const To={cacheTimeout:250,pollingInterval:4e3};class Fo{#t;#e;#r;#s;#n;#o;#i;#a;#d;#l;#g;#A;constructor(t,e){if(this.#A=Object.assign({},To,e||{}),t==="any")this.#o=!0,this.#n=null;else if(t){const r=W.from(t);this.#o=!1,this.#n=Promise.resolve(r),setTimeout(()=>{this.emit("network",r,null)},0)}else this.#o=!1,this.#n=null;this.#a=-1,this.#i=new Map,this.#t=new Map,this.#e=new Map,this.#r=null,this.#s=!1,this.#d=1,this.#l=new Map,this.#g=!1}get pollingInterval(){return this.#A.pollingInterval}get provider(){return this}get plugins(){return Array.from(this.#e.values())}attachPlugin(t){if(this.#e.get(t.name))throw new Error(`cannot replace existing plugin: ${t.name} `);return this.#e.set(t.name,t.connect(this)),this}getPlugin(t){return this.#e.get(t)||null}get disableCcipRead(){return this.#g}set disableCcipRead(t){this.#g=!!t}async#c(t){const e=this.#A.cacheTimeout;if(e<0)return await this._perform(t);const r=oe(t.method,t);let n=this.#i.get(r);return n||(n=this._perform(t),this.#i.set(r,n),setTimeout(()=>{this.#i.get(r)===n&&this.#i.delete(r)},e)),await n}async ccipReadFetch(t,e,r){if(this.disableCcipRead||r.length===0||t.to==null)return null;const n=t.to.toLowerCase(),i=e.toLowerCase(),a=[];for(let c=0;c<r.length;c++){const l=r[c],u=l.replace("{sender}",n).replace("{data}",i),f=new nt(u);l.indexOf("{data}")===-1&&(f.body={data:i,sender:n}),this.emit("debug",{action:"sendCcipReadFetchRequest",request:f,index:c,urls:r});let h="unknown error",A;try{A=await f.send()}catch(w){a.push(w.message),this.emit("debug",{action:"receiveCcipReadFetchError",request:f,result:{error:w}});continue}try{const w=A.bodyJson;if(w.data)return this.emit("debug",{action:"receiveCcipReadFetchResult",request:f,result:w}),w.data;w.message&&(h=w.message),this.emit("debug",{action:"receiveCcipReadFetchError",request:f,result:w})}catch{}o.assert(A.statusCode<400||A.statusCode>=500,`response not found during CCIP fetch: ${h}`,"OFFCHAIN_FAULT",{reason:"404_MISSING_RESOURCE",transaction:t,info:{url:l,errorMessage:h}}),a.push(h)}o.assert(!1,`error encountered during CCIP fetch: ${a.map(c=>JSON.stringify(c)).join(", ")}`,"OFFCHAIN_FAULT",{reason:"500_SERVER_ERROR",transaction:t,info:{urls:r,errorMessages:a}})}_wrapBlock(t,e){return new d.Block(yo(t),this)}_wrapLog(t,e){return new d.Log(mo(t),this)}_wrapTransactionReceipt(t,e){return new d.TransactionReceipt(xo(t),this)}_wrapTransactionResponse(t,e){return new d.TransactionResponse(Ws(t),this)}_detectNetwork(){o.assert(!1,"sub-classes must implement this","UNSUPPORTED_OPERATION",{operation:"_detectNetwork"})}async _perform(t){o.assert(!1,`unsupported method: ${t.method}`,"UNSUPPORTED_OPERATION",{operation:t.method,info:t})}async getBlockNumber(){const t=d.getNumber(await this.#c({method:"getBlockNumber"}),"%response");return this.#a>=0&&(this.#a=t),t}_getAddress(t){return o.resolveAddress(t,this)}_getBlockTag(t){if(t==null)return"latest";switch(t){case"earliest":return"0x0";case"finalized":case"latest":case"pending":case"safe":return t}if(o.isHexString(t))return o.isHexString(t,32)?t:d.toQuantity(t);if(typeof t=="bigint"&&(t=d.getNumber(t,"blockTag")),typeof t=="number")return t>=0?d.toQuantity(t):this.#a>=0?d.toQuantity(this.#a+t):this.getBlockNumber().then(e=>d.toQuantity(e+t));o.assertArgument(!1,"invalid blockTag","blockTag",t)}_getFilter(t){const e=(t.topics||[]).map(l=>l==null?null:Array.isArray(l)?Ye(l.map(u=>u.toLowerCase())):l.toLowerCase()),r="blockHash"in t?t.blockHash:void 0,n=(l,u,f)=>{let h;switch(l.length){case 0:break;case 1:h=l[0];break;default:l.sort(),h=l}if(r&&(u!=null||f!=null))throw new Error("invalid filter");const A={};return h&&(A.address=h),e.length&&(A.topics=e),u&&(A.fromBlock=u),f&&(A.toBlock=f),r&&(A.blockHash=r),A};let i=[];if(t.address)if(Array.isArray(t.address))for(const l of t.address)i.push(this._getAddress(l));else i.push(this._getAddress(t.address));let a;"fromBlock"in t&&(a=this._getBlockTag(t.fromBlock));let c;return"toBlock"in t&&(c=this._getBlockTag(t.toBlock)),i.filter(l=>typeof l!="string").length||a!=null&&typeof a!="string"||c!=null&&typeof c!="string"?Promise.all([Promise.all(i),a,c]).then(l=>n(l[0],l[1],l[2])):n(i,a,c)}_getTransactionRequest(t){const e=d.copyRequest(t),r=[];if(["to","from"].forEach(n=>{if(e[n]==null)return;const i=o.resolveAddress(e[n],this);ne(i)?r.push((async function(){e[n]=await i})()):e[n]=i}),e.blockTag!=null){const n=this._getBlockTag(e.blockTag);ne(n)?r.push((async function(){e.blockTag=await n})()):e.blockTag=n}return r.length?(async function(){return await Promise.all(r),e})():e}async getNetwork(){if(this.#n==null){const n=(async()=>{try{const i=await this._detectNetwork();return this.emit("network",i,null),i}catch(i){throw this.#n===n&&(this.#n=null),i}})();return this.#n=n,(await n).clone()}const t=this.#n,[e,r]=await Promise.all([t,this._detectNetwork()]);return e.chainId!==r.chainId&&(this.#o?(this.emit("network",r,e),this.#n===t&&(this.#n=Promise.resolve(r))):o.assert(!1,`network changed: ${e.chainId} => ${r.chainId} `,"NETWORK_ERROR",{event:"changed"})),e.clone()}async getFeeData(){const t=await this.getNetwork(),e=async()=>{const{_block:n,gasPrice:i,priorityFee:a}=await o.resolveProperties({_block:this.#p("latest",!1),gasPrice:(async()=>{try{const f=await this.#c({method:"getGasPrice"});return d.getBigInt(f,"%response")}catch{}return null})(),priorityFee:(async()=>{try{const f=await this.#c({method:"getPriorityFee"});return d.getBigInt(f,"%response")}catch{}return null})()});let c=null,l=null;const u=this._wrapBlock(n,t);return u&&u.baseFeePerGas&&(l=a??BigInt("1000000000"),c=u.baseFeePerGas*Ro+l),new d.FeeData(i,c,l)},r=t.getPlugin("org.ethers.plugins.network.FetchUrlFeeDataPlugin");if(r){const n=new nt(r.url),i=await r.processFunc(e,this,n);return new d.FeeData(i.gasPrice,i.maxFeePerGas,i.maxPriorityFeePerGas)}return await e()}async estimateGas(t){let e=this._getTransactionRequest(t);return ne(e)&&(e=await e),d.getBigInt(await this.#c({method:"estimateGas",transaction:e}),"%response")}async#u(t,e,r){o.assert(r<Oo,"CCIP read exceeded maximum redirections","OFFCHAIN_FAULT",{reason:"TOO_MANY_REDIRECTS",transaction:Object.assign({},t,{blockTag:e,enableCcipRead:!0})});const n=d.copyRequest(t);try{return o.hexlify(await this._perform({method:"call",transaction:n,blockTag:e}))}catch(i){if(!this.disableCcipRead&&o.isCallException(i)&&i.data&&r>=0&&e==="latest"&&n.to!=null&&o.dataSlice(i.data,0,4)==="0x556f1830"){const a=i.data,c=await o.resolveAddress(n.to,this);let l;try{l=Qo(o.dataSlice(i.data,4))}catch(h){o.assert(!1,h.message,"OFFCHAIN_FAULT",{reason:"BAD_DATA",transaction:n,info:{data:a}})}o.assert(l.sender.toLowerCase()===c.toLowerCase(),"CCIP Read sender mismatch","CALL_EXCEPTION",{action:"call",data:a,reason:"OffchainLookup",transaction:n,invocation:null,revert:{signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",name:"OffchainLookup",args:l.errorArgs}});const u=await this.ccipReadFetch(n,l.calldata,l.urls);o.assert(u!=null,"CCIP Read failed to fetch data","OFFCHAIN_FAULT",{reason:"FETCH_FAILED",transaction:n,info:{data:i.data,errorArgs:l.errorArgs}});const f={to:c,data:o.concat([l.selector,Ho([u,l.extraData])])};this.emit("debug",{action:"sendCcipReadCall",transaction:f});try{const h=await this.#u(f,e,r+1);return this.emit("debug",{action:"receiveCcipReadCallResult",transaction:Object.assign({},f),result:h}),h}catch(h){throw this.emit("debug",{action:"receiveCcipReadCallError",transaction:Object.assign({},f),error:h}),h}}throw i}}async#h(t){const{value:e}=await o.resolveProperties({network:this.getNetwork(),value:t});return e}async call(t){const{tx:e,blockTag:r}=await o.resolveProperties({tx:this._getTransactionRequest(t),blockTag:this._getBlockTag(t.blockTag)});return await this.#h(this.#u(e,r,t.enableCcipRead?0:-1))}async#f(t,e,r){let n=this._getAddress(e),i=this._getBlockTag(r);return(typeof n!="string"||typeof i!="string")&&([n,i]=await Promise.all([n,i])),await this.#h(this.#c(Object.assign(t,{address:n,blockTag:i})))}async getBalance(t,e){return d.getBigInt(await this.#f({method:"getBalance"},t,e),"%response")}async getTransactionCount(t,e){return d.getNumber(await this.#f({method:"getTransactionCount"},t,e),"%response")}async getCode(t,e){return o.hexlify(await this.#f({method:"getCode"},t,e))}async getStorage(t,e,r){const n=d.getBigInt(e,"position");return o.hexlify(await this.#f({method:"getStorage",position:n},t,r))}async broadcastTransaction(t){const{blockNumber:e,hash:r,network:n}=await o.resolveProperties({blockNumber:this.getBlockNumber(),hash:this._perform({method:"broadcastTransaction",signedTransaction:t}),network:this.getNetwork()}),i=tt.from(t);if(i.hash!==r)throw new Error("@TODO: the returned hash did not match");return this._wrapTransactionResponse(i,n).replaceableTransaction(e)}async#p(t,e){if(o.isHexString(t,32))return await this.#c({method:"getBlock",blockHash:t,includeTransactions:e});let r=this._getBlockTag(t);return typeof r!="string"&&(r=await r),await this.#c({method:"getBlock",blockTag:r,includeTransactions:e})}async getBlock(t,e){const{network:r,params:n}=await o.resolveProperties({network:this.getNetwork(),params:this.#p(t,!!e)});return n==null?null:this._wrapBlock(n,r)}async getTransaction(t){const{network:e,params:r}=await o.resolveProperties({network:this.getNetwork(),params:this.#c({method:"getTransaction",hash:t})});return r==null?null:this._wrapTransactionResponse(r,e)}async getTransactionReceipt(t){const{network:e,params:r}=await o.resolveProperties({network:this.getNetwork(),params:this.#c({method:"getTransactionReceipt",hash:t})});if(r==null)return null;if(r.gasPrice==null&&r.effectiveGasPrice==null){const n=await this.#c({method:"getTransaction",hash:t});if(n==null)throw new Error("report this; could not find tx or effectiveGasPrice");r.effectiveGasPrice=n.gasPrice}return this._wrapTransactionReceipt(r,e)}async getTransactionResult(t){const{result:e}=await o.resolveProperties({network:this.getNetwork(),result:this.#c({method:"getTransactionResult",hash:t})});return e==null?null:o.hexlify(e)}async getLogs(t){let e=this._getFilter(t);ne(e)&&(e=await e);const{network:r,params:n}=await o.resolveProperties({network:this.getNetwork(),params:this.#c({method:"getLogs",filter:e})});return n.map(i=>this._wrapLog(i,r))}_getProvider(t){o.assert(!1,"provider cannot connect to target network","UNSUPPORTED_OPERATION",{operation:"_getProvider()"})}async getResolver(t){return await Rt.fromName(this,t)}async getAvatar(t){const e=await this.getResolver(t);return e?await e.getAvatar():null}async resolveName(t){const e=await this.getResolver(t);return e?await e.getAddress():null}async lookupAddress(t){t=o.getAddress(t);const e=je(t.substring(2).toLowerCase()+".addr.reverse");try{const r=await Rt.getEnsAddress(this),i=await new d.Contract(r,["function resolver(bytes32) view returns (address)"],this).resolver(e);if(i==null||i===Ft)return null;const c=await new d.Contract(i,["function name(bytes32) view returns (string)"],this).name(e);return await this.resolveName(c)!==t?null:c}catch(r){if(o.isError(r,"BAD_DATA")&&r.value==="0x"||o.isError(r,"CALL_EXCEPTION"))return null;throw r}return null}async waitForTransaction(t,e,r){const n=e??1;return n===0?this.getTransactionReceipt(t):new Promise(async(i,a)=>{let c=null;const l=(async u=>{try{const f=await this.getTransactionReceipt(t);if(f!=null&&u-f.blockNumber+1>=n){i(f),c&&(clearTimeout(c),c=null);return}}catch(f){console.log("EEE",f)}this.once("block",l)});r!=null&&(c=setTimeout(()=>{c!=null&&(c=null,this.off("block",l),a(o.makeError("timeout","TIMEOUT",{reason:"timeout"})))},r)),l(await this.getBlockNumber())})}async waitForBlock(t){o.assert(!1,"not implemented yet","NOT_IMPLEMENTED",{operation:"waitForBlock"})}_clearTimeout(t){const e=this.#l.get(t);e&&(e.timer&&clearTimeout(e.timer),this.#l.delete(t))}_setTimeout(t,e){e==null&&(e=0);const r=this.#d++,n=()=>{this.#l.delete(r),t()};if(this.paused)this.#l.set(r,{timer:null,func:n,time:e});else{const i=setTimeout(n,e);this.#l.set(r,{timer:i,func:n,time:Te()})}return r}_forEachSubscriber(t){for(const e of this.#t.values())t(e.subscriber)}_getSubscriber(t){switch(t.type){case"debug":case"error":case"network":return new Xs(t.type);case"block":{const e=new No(this);return e.pollingInterval=this.pollingInterval,e}case"safe":case"finalized":return new ko(this,t.type);case"event":return new hr(this,t.filter);case"transaction":return new vo(this,t.hash);case"orphan":return new So(this,t.filter)}throw new Error(`unsupported event: ${t.type}`)}_recoverSubscriber(t,e){for(const r of this.#t.values())if(r.subscriber===t){r.started&&r.subscriber.stop(),r.subscriber=e,r.started&&e.start(),this.#r!=null&&e.pause(this.#r);break}}async#m(t,e){let r=await De(t,this);return r.type==="event"&&e&&e.length>0&&e[0].removed===!0&&(r=await De({orphan:"drop-log",log:e[0]},this)),this.#t.get(r.tag)||null}async#w(t){const e=await De(t,this),r=e.tag;let n=this.#t.get(r);return n||(n={subscriber:this._getSubscriber(e),tag:r,addressableMap:new WeakMap,nameMap:new Map,started:!1,listeners:[]},this.#t.set(r,n)),n}async on(t,e){const r=await this.#w(t);return r.listeners.push({listener:e,once:!1}),r.started||(r.subscriber.start(),r.started=!0,this.#r!=null&&r.subscriber.pause(this.#r)),this}async once(t,e){const r=await this.#w(t);return r.listeners.push({listener:e,once:!0}),r.started||(r.subscriber.start(),r.started=!0,this.#r!=null&&r.subscriber.pause(this.#r)),this}async emit(t,...e){const r=await this.#m(t,e);if(!r||r.listeners.length===0)return!1;const n=r.listeners.length;return r.listeners=r.listeners.filter(({listener:i,once:a})=>{const c=new d.EventPayload(this,a?null:i,t);try{i.call(this,...e,c)}catch{}return!a}),r.listeners.length===0&&(r.started&&r.subscriber.stop(),this.#t.delete(r.tag)),n>0}async listenerCount(t){if(t){const r=await this.#m(t);return r?r.listeners.length:0}let e=0;for(const{listeners:r}of this.#t.values())e+=r.length;return e}async listeners(t){if(t){const r=await this.#m(t);return r?r.listeners.map(({listener:n})=>n):[]}let e=[];for(const{listeners:r}of this.#t.values())e=e.concat(r.map(({listener:n})=>n));return e}async off(t,e){const r=await this.#m(t);if(!r)return this;if(e){const n=r.listeners.map(({listener:i})=>i).indexOf(e);n>=0&&r.listeners.splice(n,1)}return(!e||r.listeners.length===0)&&(r.started&&r.subscriber.stop(),this.#t.delete(r.tag)),this}async removeAllListeners(t){if(t){const{tag:e,started:r,subscriber:n}=await this.#w(t);r&&n.stop(),this.#t.delete(e)}else for(const[e,{started:r,subscriber:n}]of this.#t)r&&n.stop(),this.#t.delete(e);return this}async addListener(t,e){return await this.on(t,e)}async removeListener(t,e){return this.off(t,e)}get destroyed(){return this.#s}destroy(){this.removeAllListeners();for(const t of this.#l.keys())this._clearTimeout(t);this.#s=!0}get paused(){return this.#r!=null}set paused(t){!!t!==this.paused&&(this.paused?this.resume():this.pause(!1))}pause(t){if(this.#a=-1,this.#r!=null){if(this.#r==!!t)return;o.assert(!1,"cannot change pause type; resume first","UNSUPPORTED_OPERATION",{operation:"pause"})}this._forEachSubscriber(e=>e.pause(t)),this.#r=!!t;for(const e of this.#l.values())e.timer&&clearTimeout(e.timer),e.time=Te()-e.time}resume(){if(this.#r!=null){this._forEachSubscriber(t=>t.resume()),this.#r=null;for(const t of this.#l.values()){let e=t.time;e<0&&(e=0),t.time=Te(),setTimeout(t.func,e)}}}}function Lo(s,t){try{const e=qe(s,t);if(e)return d.toUtf8String(e)}catch{}return null}function qe(s,t){if(s==="0x")return null;try{const e=d.getNumber(o.dataSlice(s,t,t+32)),r=d.getNumber(o.dataSlice(s,e,e+32));return o.dataSlice(s,e+32,e+32+r)}catch{}return null}function $r(s){const t=d.toBeArray(s);if(t.length>32)throw new Error("internal; should not happen");const e=new Uint8Array(32);return e.set(t,32-t.length),e}function Uo(s){if(s.length%32===0)return s;const t=new Uint8Array(Math.ceil(s.length/32)*32);return t.set(s),t}const Mo=new Uint8Array([]);function Ho(s){const t=[];let e=0;for(let r=0;r<s.length;r++)t.push(Mo),e+=32;for(let r=0;r<s.length;r++){const n=o.getBytes(s[r]);t[r]=$r(e),t.push($r(n.length)),t.push(Uo(n)),e+=32+Math.ceil(n.length/32)*32}return o.concat(t)}const ts="0x0000000000000000000000000000000000000000000000000000000000000000";function Qo(s){const t={sender:"",urls:[],calldata:"",selector:"",extraData:"",errorArgs:[]};o.assert(o.dataLength(s)>=160,"insufficient OffchainLookup data","OFFCHAIN_FAULT",{reason:"insufficient OffchainLookup data"});const e=o.dataSlice(s,0,32);o.assert(o.dataSlice(e,0,12)===o.dataSlice(ts,0,12),"corrupt OffchainLookup sender","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup sender"}),t.sender=o.dataSlice(e,12);try{const r=[],n=d.getNumber(o.dataSlice(s,32,64)),i=d.getNumber(o.dataSlice(s,n,n+32)),a=o.dataSlice(s,n+32);for(let c=0;c<i;c++){const l=Lo(a,c*32);if(l==null)throw new Error("abort");r.push(l)}t.urls=r}catch{o.assert(!1,"corrupt OffchainLookup urls","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup urls"})}try{const r=qe(s,64);if(r==null)throw new Error("abort");t.calldata=r}catch{o.assert(!1,"corrupt OffchainLookup calldata","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup calldata"})}o.assert(o.dataSlice(s,100,128)===o.dataSlice(ts,0,28),"corrupt OffchainLookup callbaackSelector","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup callbaackSelector"}),t.selector=o.dataSlice(s,96,100);try{const r=qe(s,128);if(r==null)throw new Error("abort");t.extraData=r}catch{o.assert(!1,"corrupt OffchainLookup extraData","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup extraData"})}return t.errorArgs="sender,urls,calldata,selector,extraData".split(/,/).map(r=>t[r]),t}function Nt(s,t){if(s.provider)return s.provider;o.assert(!1,"missing provider","UNSUPPORTED_OPERATION",{operation:t})}async function es(s,t){let e=d.copyRequest(t);if(e.to!=null&&(e.to=o.resolveAddress(e.to,s)),e.from!=null){const r=e.from;e.from=Promise.all([s.getAddress(),o.resolveAddress(r,s)]).then(([n,i])=>(o.assertArgument(n.toLowerCase()===i.toLowerCase(),"transaction from mismatch","tx.from",i),n))}else e.from=s.getAddress();return await o.resolveProperties(e)}class fr{provider;constructor(t){o.defineProperties(this,{provider:t||null})}async getNonce(t){return Nt(this,"getTransactionCount").getTransactionCount(await this.getAddress(),t)}async populateCall(t){return await es(this,t)}async populateTransaction(t){const e=Nt(this,"populateTransaction"),r=await es(this,t);r.nonce==null&&(r.nonce=await this.getNonce("pending")),r.gasLimit==null&&(r.gasLimit=await this.estimateGas(r));const n=await this.provider.getNetwork();if(r.chainId!=null){const a=d.getBigInt(r.chainId);o.assertArgument(a===n.chainId,"transaction chainId mismatch","tx.chainId",t.chainId)}else r.chainId=n.chainId;const i=r.maxFeePerGas!=null||r.maxPriorityFeePerGas!=null;if(r.gasPrice!=null&&(r.type===2||i)?o.assertArgument(!1,"eip-1559 transaction do not support gasPrice","tx",t):(r.type===0||r.type===1)&&i&&o.assertArgument(!1,"pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas","tx",t),(r.type===2||r.type==null)&&r.maxFeePerGas!=null&&r.maxPriorityFeePerGas!=null)r.type=2;else if(r.type===0||r.type===1){const a=await e.getFeeData();o.assert(a.gasPrice!=null,"network does not support gasPrice","UNSUPPORTED_OPERATION",{operation:"getGasPrice"}),r.gasPrice==null&&(r.gasPrice=a.gasPrice)}else{const a=await e.getFeeData();if(r.type==null)if(a.maxFeePerGas!=null&&a.maxPriorityFeePerGas!=null)if(r.type=2,r.gasPrice!=null){const c=r.gasPrice;delete r.gasPrice,r.maxFeePerGas=c,r.maxPriorityFeePerGas=c}else r.maxFeePerGas==null&&(r.maxFeePerGas=a.maxFeePerGas),r.maxPriorityFeePerGas==null&&(r.maxPriorityFeePerGas=a.maxPriorityFeePerGas);else a.gasPrice!=null?(o.assert(!i,"network does not support EIP-1559","UNSUPPORTED_OPERATION",{operation:"populateTransaction"}),r.gasPrice==null&&(r.gasPrice=a.gasPrice),r.type=0):o.assert(!1,"failed to get consistent fee data","UNSUPPORTED_OPERATION",{operation:"signer.getFeeData"});else(r.type===2||r.type===3)&&(r.maxFeePerGas==null&&(r.maxFeePerGas=a.maxFeePerGas),r.maxPriorityFeePerGas==null&&(r.maxPriorityFeePerGas=a.maxPriorityFeePerGas))}return await o.resolveProperties(r)}async estimateGas(t){return Nt(this,"estimateGas").estimateGas(await this.populateCall(t))}async call(t){return Nt(this,"call").call(await this.populateCall(t))}async resolveName(t){return await Nt(this,"resolveName").resolveName(t)}async sendTransaction(t){const e=Nt(this,"sendTransaction"),r=await this.populateTransaction(t);delete r.from;const n=tt.from(r);return await e.broadcastTransaction(await this.signTransaction(n))}}class dr extends fr{address;constructor(t,e){super(e),o.defineProperties(this,{address:t})}async getAddress(){return this.address}connect(t){return new dr(this.address,t)}#t(t,e){o.assert(!1,`VoidSigner cannot sign ${t}`,"UNSUPPORTED_OPERATION",{operation:e})}async signTransaction(t){this.#t("transactions","signTransaction")}async signMessage(t){this.#t("messages","signMessage")}async signTypedData(t,e,r){this.#t("typed-data","signTypedData")}}function Go(s){return JSON.parse(JSON.stringify(s))}class _s{#t;#e;#r;#s;#n;#o;constructor(t){this.#t=t,this.#e=null,this.#r=this.#i.bind(this),this.#s=!1,this.#n=null,this.#o=!1}_subscribe(t){throw new Error("subclasses must override this")}_emitResults(t,e){throw new Error("subclasses must override this")}_recover(t){throw new Error("subclasses must override this")}async#i(t){try{this.#e==null&&(this.#e=this._subscribe(this.#t));let e=null;try{e=await this.#e}catch(i){if(!o.isError(i,"UNSUPPORTED_OPERATION")||i.operation!=="eth_newFilter")throw i}if(e==null){this.#e=null,this.#t._recoverSubscriber(this,this._recover(this.#t));return}const r=await this.#t.getNetwork();if(this.#n||(this.#n=r),this.#n.chainId!==r.chainId)throw new Error("chaid changed");if(this.#o)return;const n=await this.#t.send("eth_getFilterChanges",[e]);await this._emitResults(this.#t,n)}catch(e){console.log("@TODO",e)}this.#t.once("block",this.#r)}#a(){const t=this.#e;t&&(this.#e=null,t.then(e=>{this.#t.destroyed||this.#t.send("eth_uninstallFilter",[e])}))}start(){this.#s||(this.#s=!0,this.#i(-2))}stop(){this.#s&&(this.#s=!1,this.#o=!0,this.#a(),this.#t.off("block",this.#r))}pause(t){t&&this.#a(),this.#t.off("block",this.#r)}resume(){this.start()}}class Vo extends _s{#t;constructor(t,e){super(t),this.#t=Go(e)}_recover(t){return new hr(t,this.#t)}async _subscribe(t){return await t.send("eth_newFilter",[this.#t])}async _emitResults(t,e){for(const r of e)t.emit(this.#t,t._wrapLog(r,t._network))}}class Jo extends _s{async _subscribe(t){return await t.send("eth_newPendingTransactionFilter",[])}async _emitResults(t,e){for(const r of e)t.emit("pending",r)}}const zo="bigint,boolean,function,number,string,symbol".split(/,/g);function ae(s){if(s==null||zo.indexOf(typeof s)>=0||typeof s.getAddress=="function")return s;if(Array.isArray(s))return s.map(ae);if(typeof s=="object")return Object.keys(s).reduce((t,e)=>(t[e]=s[e],t),{});throw new Error(`should not happen: ${s} (${typeof s})`)}function Ko(s){return new Promise(t=>{setTimeout(t,s)})}function kt(s){return s&&s.toLowerCase()}function rs(s){return s&&typeof s.pollingInterval=="number"}const $s={polling:!1,staticNetwork:null,batchStallTime:10,batchMaxSize:1<<20,batchMaxCount:100,cacheTimeout:250,pollingInterval:4e3};class Fe extends fr{address;constructor(t,e){super(t),e=o.getAddress(e),o.defineProperties(this,{address:e})}connect(t){o.assert(!1,"cannot reconnect JsonRpcSigner","UNSUPPORTED_OPERATION",{operation:"signer.connect"})}async getAddress(){return this.address}async populateTransaction(t){return await this.populateCall(t)}async sendUncheckedTransaction(t){const e=ae(t),r=[];if(e.from){const i=e.from;r.push((async()=>{const a=await o.resolveAddress(i,this.provider);o.assertArgument(a!=null&&a.toLowerCase()===this.address.toLowerCase(),"from address mismatch","transaction",t),e.from=a})())}else e.from=this.address;if(e.gasLimit==null&&r.push((async()=>{e.gasLimit=await this.provider.estimateGas({...e,from:this.address})})()),e.to!=null){const i=e.to;r.push((async()=>{e.to=await o.resolveAddress(i,this.provider)})())}r.length&&await Promise.all(r);const n=this.provider.getRpcTransaction(e);return this.provider.send("eth_sendTransaction",[n])}async sendTransaction(t){const e=await this.provider.getBlockNumber(),r=await this.sendUncheckedTransaction(t);return await new Promise((n,i)=>{const a=[1e3,100];let c=0;const l=async()=>{try{const u=await this.provider.getTransaction(r);if(u!=null){n(u.replaceableTransaction(e));return}}catch(u){if(o.isError(u,"CANCELLED")||o.isError(u,"BAD_DATA")||o.isError(u,"NETWORK_ERROR")||o.isError(u,"UNSUPPORTED_OPERATION")){u.info==null&&(u.info={}),u.info.sendTransactionHash=r,i(u);return}if(o.isError(u,"INVALID_ARGUMENT")&&(c++,u.info==null&&(u.info={}),u.info.sendTransactionHash=r,c>10)){i(u);return}this.provider.emit("error",o.makeError("failed to fetch transation after sending (will try again)","UNKNOWN_ERROR",{error:u}))}this.provider._setTimeout(()=>{l()},a.pop()||4e3)};l()})}async signTransaction(t){const e=ae(t);if(e.from){const n=await o.resolveAddress(e.from,this.provider);o.assertArgument(n!=null&&n.toLowerCase()===this.address.toLowerCase(),"from address mismatch","transaction",t),e.from=n}else e.from=this.address;const r=this.provider.getRpcTransaction(e);return await this.provider.send("eth_signTransaction",[r])}async signMessage(t){const e=typeof t=="string"?d.toUtf8Bytes(t):t;return await this.provider.send("personal_sign",[o.hexlify(e),this.address.toLowerCase()])}async signTypedData(t,e,r){const n=ae(r),i=await j.resolveNames(t,e,n,async a=>{const c=await o.resolveAddress(a);return o.assertArgument(c!=null,"TypedData does not support null address","value",a),c});return await this.provider.send("eth_signTypedData_v4",[this.address.toLowerCase(),JSON.stringify(j.getPayload(i.domain,e,i.value))])}async unlock(t){return this.provider.send("personal_unlockAccount",[this.address.toLowerCase(),t,null])}async _legacySignMessage(t){const e=typeof t=="string"?d.toUtf8Bytes(t):t;return await this.provider.send("eth_sign",[this.address.toLowerCase(),o.hexlify(e)])}}class jo extends Fo{#t;#e;#r;#s;#n;#o;#i;#a(){if(this.#s)return;const t=this._getOption("batchMaxCount")===1?0:this._getOption("batchStallTime");this.#s=setTimeout(()=>{this.#s=null;const e=this.#r;for(this.#r=[];e.length;){const r=[e.shift()];for(;e.length&&r.length!==this.#t.batchMaxCount;)if(r.push(e.shift()),JSON.stringify(r.map(i=>i.payload)).length>this.#t.batchMaxSize){e.unshift(r.pop());break}(async()=>{const n=r.length===1?r[0].payload:r.map(i=>i.payload);this.emit("debug",{action:"sendRpcPayload",payload:n});try{const i=await this._send(n);this.emit("debug",{action:"receiveRpcResult",result:i});for(const{resolve:a,reject:c,payload:l}of r){if(this.destroyed){c(o.makeError("provider destroyed; cancelled request","UNSUPPORTED_OPERATION",{operation:l.method}));continue}const u=i.filter(f=>f.id===l.id)[0];if(u==null){const f=o.makeError("missing response for request","BAD_DATA",{value:i,info:{payload:l}});this.emit("error",f),c(f);continue}if("error"in u){c(this.getRpcError(l,u));continue}a(u.result)}}catch(i){this.emit("debug",{action:"receiveRpcError",error:i});for(const{reject:a}of r)a(i)}})()}},t)}constructor(t,e){super(t,e),this.#e=1,this.#t=Object.assign({},$s,e||{}),this.#r=[],this.#s=null,this.#o=null,this.#i=null;{let n=null;const i=new Promise(a=>{n=a});this.#n={promise:i,resolve:n}}const r=this._getOption("staticNetwork");typeof r=="boolean"?(o.assertArgument(!r||t!=="any","staticNetwork cannot be used on special network 'any'","options",e),r&&t!=null&&(this.#o=W.from(t))):r&&(o.assertArgument(t==null||r.matches(t),"staticNetwork MUST match network object","options",e),this.#o=r)}_getOption(t){return this.#t[t]}get _network(){return o.assert(this.#o,"network is not available yet","NETWORK_ERROR"),this.#o}async _perform(t){if(t.method==="call"||t.method==="estimateGas"){let r=t.transaction;if(r&&r.type!=null&&d.getBigInt(r.type)&&r.maxFeePerGas==null&&r.maxPriorityFeePerGas==null){const n=await this.getFeeData();n.maxFeePerGas==null&&n.maxPriorityFeePerGas==null&&(t=Object.assign({},t,{transaction:Object.assign({},r,{type:void 0})}))}}const e=this.getRpcRequest(t);return e!=null?await this.send(e.method,e.args):super._perform(t)}async _detectNetwork(){const t=this._getOption("staticNetwork");if(t)if(t===!0){if(this.#o)return this.#o}else return t;return this.#i?await this.#i:this.ready?(this.#i=(async()=>{try{const e=W.from(d.getBigInt(await this.send("eth_chainId",[])));return this.#i=null,e}catch(e){throw this.#i=null,e}})(),await this.#i):(this.#i=(async()=>{const e={id:this.#e++,method:"eth_chainId",params:[],jsonrpc:"2.0"};this.emit("debug",{action:"sendRpcPayload",payload:e});let r;try{r=(await this._send(e))[0],this.#i=null}catch(n){throw this.#i=null,this.emit("debug",{action:"receiveRpcError",error:n}),n}if(this.emit("debug",{action:"receiveRpcResult",result:r}),"result"in r)return W.from(d.getBigInt(r.result));throw this.getRpcError(e,r)})(),await this.#i)}_start(){this.#n==null||this.#n.resolve==null||(this.#n.resolve(),this.#n=null,(async()=>{for(;this.#o==null&&!this.destroyed;)try{this.#o=await this._detectNetwork()}catch(t){if(this.destroyed)break;console.log("JsonRpcProvider failed to detect network and cannot start up; retry in 1s (perhaps the URL is wrong or the node is not started)"),this.emit("error",o.makeError("failed to bootstrap network detection","NETWORK_ERROR",{event:"initial-network-discovery",info:{error:t}})),await Ko(1e3)}this.#a()})())}async _waitUntilReady(){if(this.#n!=null)return await this.#n.promise}_getSubscriber(t){return t.type==="pending"?new Jo(this):t.type==="event"?this._getOption("polling")?new hr(this,t.filter):new Vo(this,t.filter):t.type==="orphan"&&t.filter.orphan==="drop-log"?new Xs("orphan"):super._getSubscriber(t)}get ready(){return this.#n==null}getRpcTransaction(t){const e={};return["chainId","gasLimit","gasPrice","type","maxFeePerGas","maxPriorityFeePerGas","nonce","value"].forEach(r=>{if(t[r]==null)return;let n=r;r==="gasLimit"&&(n="gas"),e[n]=d.toQuantity(d.getBigInt(t[r],`tx.${r}`))}),["from","to","data"].forEach(r=>{t[r]!=null&&(e[r]=o.hexlify(t[r]))}),t.accessList&&(e.accessList=d.accessListify(t.accessList)),t.blobVersionedHashes&&(e.blobVersionedHashes=t.blobVersionedHashes.map(r=>r.toLowerCase())),e}getRpcRequest(t){switch(t.method){case"chainId":return{method:"eth_chainId",args:[]};case"getBlockNumber":return{method:"eth_blockNumber",args:[]};case"getGasPrice":return{method:"eth_gasPrice",args:[]};case"getPriorityFee":return{method:"eth_maxPriorityFeePerGas",args:[]};case"getBalance":return{method:"eth_getBalance",args:[kt(t.address),t.blockTag]};case"getTransactionCount":return{method:"eth_getTransactionCount",args:[kt(t.address),t.blockTag]};case"getCode":return{method:"eth_getCode",args:[kt(t.address),t.blockTag]};case"getStorage":return{method:"eth_getStorageAt",args:[kt(t.address),"0x"+t.position.toString(16),t.blockTag]};case"broadcastTransaction":return{method:"eth_sendRawTransaction",args:[t.signedTransaction]};case"getBlock":if("blockTag"in t)return{method:"eth_getBlockByNumber",args:[t.blockTag,!!t.includeTransactions]};if("blockHash"in t)return{method:"eth_getBlockByHash",args:[t.blockHash,!!t.includeTransactions]};break;case"getTransaction":return{method:"eth_getTransactionByHash",args:[t.hash]};case"getTransactionReceipt":return{method:"eth_getTransactionReceipt",args:[t.hash]};case"call":return{method:"eth_call",args:[this.getRpcTransaction(t.transaction),t.blockTag]};case"estimateGas":return{method:"eth_estimateGas",args:[this.getRpcTransaction(t.transaction)]};case"getLogs":return t.filter&&t.filter.address!=null&&(Array.isArray(t.filter.address)?t.filter.address=t.filter.address.map(kt):t.filter.address=kt(t.filter.address)),{method:"eth_getLogs",args:[t.filter]}}return null}getRpcError(t,e){const{method:r}=t,{error:n}=e;if(r==="eth_estimateGas"&&n.message){const c=n.message;if(!c.match(/revert/i)&&c.match(/insufficient funds/i))return o.makeError("insufficient funds","INSUFFICIENT_FUNDS",{transaction:t.params[0],info:{payload:t,error:n}})}if(r==="eth_call"||r==="eth_estimateGas"){const c=We(n),l=d.AbiCoder.getBuiltinCallException(r==="eth_call"?"call":"estimateGas",t.params[0],c?c.data:null);return l.info={error:n,payload:t},l}const i=JSON.stringify(Yo(n));if(typeof n.message=="string"&&n.message.match(/user denied|ethers-user-denied/i)){const c={eth_sign:"signMessage",personal_sign:"signMessage",eth_signTypedData_v4:"signTypedData",eth_signTransaction:"signTransaction",eth_sendTransaction:"sendTransaction",eth_requestAccounts:"requestAccess",wallet_requestAccounts:"requestAccess"};return o.makeError("user rejected action","ACTION_REJECTED",{action:c[r]||"unknown",reason:"rejected",info:{payload:t,error:n}})}if(r==="eth_sendRawTransaction"||r==="eth_sendTransaction"){const c=t.params[0];if(i.match(/insufficient funds|base fee exceeds gas limit/i))return o.makeError("insufficient funds for intrinsic transaction cost","INSUFFICIENT_FUNDS",{transaction:c,info:{error:n}});if(i.match(/nonce/i)&&i.match(/too low/i))return o.makeError("nonce has already been used","NONCE_EXPIRED",{transaction:c,info:{error:n}});if(i.match(/replacement transaction/i)&&i.match(/underpriced/i))return o.makeError("replacement fee too low","REPLACEMENT_UNDERPRICED",{transaction:c,info:{error:n}});if(i.match(/only replay-protected/i))return o.makeError("legacy pre-eip-155 transactions not supported","UNSUPPORTED_OPERATION",{operation:r,info:{transaction:c,info:{error:n}}})}let a=!!i.match(/the method .* does not exist/i);return a||n&&n.details&&n.details.startsWith("Unauthorized method:")&&(a=!0),a?o.makeError("unsupported operation","UNSUPPORTED_OPERATION",{operation:t.method,info:{error:n,payload:t}}):o.makeError("could not coalesce error","UNKNOWN_ERROR",{error:n,payload:t})}send(t,e){if(this.destroyed)return Promise.reject(o.makeError("provider destroyed; cancelled request","UNSUPPORTED_OPERATION",{operation:t}));const r=this.#e++,n=new Promise((i,a)=>{this.#r.push({resolve:i,reject:a,payload:{method:t,params:e,id:r,jsonrpc:"2.0"}})});return this.#a(),n}async getSigner(t){t==null&&(t=0);const e=this.send("eth_accounts",[]);if(typeof t=="number"){const n=await e;if(t>=n.length)throw new Error("no such account");return new Fe(this,n[t])}const{accounts:r}=await o.resolveProperties({network:this.getNetwork(),accounts:e});t=o.getAddress(t);for(const n of r)if(o.getAddress(n)===t)return new Fe(this,t);throw new Error("invalid account")}async listAccounts(){return(await this.send("eth_accounts",[])).map(e=>new Fe(this,e))}destroy(){this.#s&&(clearTimeout(this.#s),this.#s=null);for(const{payload:t,reject:e}of this.#r)e(o.makeError("provider destroyed; cancelled request","UNSUPPORTED_OPERATION",{operation:t.method}));this.#r=[],super.destroy()}}class tn extends jo{#t;constructor(t,e){super(t,e);let r=this._getOption("pollingInterval");r==null&&(r=$s.pollingInterval),this.#t=r}_getSubscriber(t){const e=super._getSubscriber(t);return rs(e)&&(e.pollingInterval=this.#t),e}get pollingInterval(){return this.#t}set pollingInterval(t){if(!Number.isInteger(t)||t<0)throw new Error("invalid interval");this.#t=t,this._forEachSubscriber(e=>{rs(e)&&(e.pollingInterval=this.#t)})}}class Zo extends tn{#t;constructor(t,e,r){t==null&&(t="http://localhost:8545"),super(e,r),typeof t=="string"?this.#t=new nt(t):this.#t=t.clone()}_getConnection(){return this.#t.clone()}async send(t,e){return await this._start(),await super.send(t,e)}async _send(t){const e=this._getConnection();e.body=JSON.stringify(t),e.setHeader("content-type","application/json");const r=await e.send();r.assertOk();let n=r.bodyJson;return Array.isArray(n)||(n=[n]),n}}function We(s){if(s==null)return null;if(typeof s.message=="string"&&s.message.match(/revert/i)&&o.isHexString(s.data))return{message:s.message,data:s.data};if(typeof s=="object"){for(const t in s){const e=We(s[t]);if(e)return e}return null}if(typeof s=="string")try{return We(JSON.parse(s))}catch{}return null}function Xe(s,t){if(s!=null){if(typeof s.message=="string"&&t.push(s.message),typeof s=="object")for(const e in s)Xe(s[e],t);if(typeof s=="string")try{return Xe(JSON.parse(s),t)}catch{}}}function Yo(s){const t=[];return Xe(s,t),t}exports.AbstractSigner=fr;exports.JsonRpcApiPollingProvider=tn;exports.JsonRpcProvider=Zo;exports.SHA2=_e;exports.SigningKey=st;exports.Transaction=tt;exports.TypedDataEncoder=j;exports.VoidSigner=dr;exports.ZeroAddress=Ft;exports.computeAddress=Ks;exports.createHmac=Nn;exports.decodeBase58=sn;exports.encodeBase58=ss;exports.getCreateAddress=xs;exports.pbkdf2=hs;exports.pbkdf2Sync=kn;exports.randomBytes=Sn;exports.sha256=Zt;exports.sha256$1=Bt;
|
|
1
|
+
"use strict";const o=require("./web3-BKaP497Y.js"),d=require("./contract-CTycrpaK.js"),ce="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";let $t=null;function en(s){if($t==null){$t={};for(let e=0;e<ce.length;e++)$t[ce[e]]=BigInt(e)}const t=$t[s];return o.assertArgument(t!=null,"invalid base58 value","letter",s),t}const rn=BigInt(0),Le=BigInt(58);function ss(s){const t=o.getBytes(s);let e=d.toBigInt(t),r="";for(;e;)r=ce[Number(e%Le)]+r,e/=Le;for(let n=0;n<t.length&&!t[n];n++)r=ce[0]+r;return r}function sn(s){let t=rn;for(let e=0;e<s.length;e++)t*=Le,t+=en(s[e]);return t}function nn(s){s=atob(s);const t=new Uint8Array(s.length);for(let e=0;e<s.length;e++)t[e]=s.charCodeAt(e);return o.getBytes(t)}function on(s){const t=o.getBytes(s);let e="";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return btoa(e)}function ns(s){async function t(e,r){o.assert(r==null||!r.cancelled,"request cancelled before sending","CANCELLED");const n=e.url.split(":")[0].toLowerCase();o.assert(n==="http"||n==="https",`unsupported protocol ${n}`,"UNSUPPORTED_OPERATION",{info:{protocol:n},operation:"request"}),o.assert(n==="https"||!e.credentials||e.allowInsecureAuthentication,"insecure authorized connections unsupported","UNSUPPORTED_OPERATION",{operation:"request"});let i=null;const a=new AbortController,c=setTimeout(()=>{i=o.makeError("request timeout","TIMEOUT"),a.abort()},e.timeout);r&&r.addListener(()=>{i=o.makeError("request cancelled","CANCELLED"),a.abort()});const l={method:e.method,headers:new Headers(Array.from(e)),body:e.body||void 0,signal:a.signal};let u;try{u=await fetch(e.url,l)}catch(w){throw clearTimeout(c),i||w}clearTimeout(c);const f={};u.headers.forEach((w,m)=>{f[m.toLowerCase()]=w});const h=await u.arrayBuffer(),A=h==null?null:new Uint8Array(h);return{statusCode:u.status,statusMessage:u.statusText,headers:f,body:A}}return t}const an=12,cn=250;let mr=ns();const ln=new RegExp("^data:([^;:]*)?(;base64)?,(.*)$","i"),un=new RegExp("^ipfs://(ipfs/)?(.*)$","i");let Ce=!1;async function is(s,t){try{const e=s.match(ln);if(!e)throw new Error("invalid data");return new gt(200,"OK",{"content-type":e[1]||"text/plain"},e[2]?nn(e[3]):fn(e[3]))}catch{return new gt(599,"BAD REQUEST (invalid data: URI)",{},null,new nt(s))}}function os(s){async function t(e,r){try{const n=e.match(un);if(!n)throw new Error("invalid link");return new nt(`${s}${n[2]}`)}catch{return new gt(599,"BAD REQUEST (invalid IPFS URI)",{},null,new nt(e))}}return t}const te={data:is,ipfs:os("https://gateway.ipfs.io/ipfs/")},as=new WeakMap;class hn{#t;#e;constructor(t){this.#t=[],this.#e=!1,as.set(t,()=>{if(!this.#e){this.#e=!0;for(const e of this.#t)setTimeout(()=>{e()},0);this.#t=[]}})}addListener(t){o.assert(!this.#e,"singal already cancelled","UNSUPPORTED_OPERATION",{operation:"fetchCancelSignal.addCancelListener"}),this.#t.push(t)}get cancelled(){return this.#e}checkSignal(){o.assert(!this.cancelled,"cancelled","CANCELLED",{})}}function ee(s){if(s==null)throw new Error("missing signal; should not happen");return s.checkSignal(),s}class nt{#t;#e;#r;#s;#n;#o;#i;#a;#d;#l;#g;#A;#c;#u;#h;get url(){return this.#o}set url(t){this.#o=String(t)}get body(){return this.#i==null?null:new Uint8Array(this.#i)}set body(t){if(t==null)this.#i=void 0,this.#a=void 0;else if(typeof t=="string")this.#i=d.toUtf8Bytes(t),this.#a="text/plain";else if(t instanceof Uint8Array)this.#i=t,this.#a="application/octet-stream";else if(typeof t=="object")this.#i=d.toUtf8Bytes(JSON.stringify(t)),this.#a="application/json";else throw new Error("invalid body")}hasBody(){return this.#i!=null}get method(){return this.#s?this.#s:this.hasBody()?"POST":"GET"}set method(t){t==null&&(t=""),this.#s=String(t).toUpperCase()}get headers(){const t=Object.assign({},this.#r);return this.#d&&(t.authorization=`Basic ${on(d.toUtf8Bytes(this.#d))}`),this.allowGzip&&(t["accept-encoding"]="gzip"),t["content-type"]==null&&this.#a&&(t["content-type"]=this.#a),this.body&&(t["content-length"]=String(this.body.length)),t}getHeader(t){return this.headers[t.toLowerCase()]}setHeader(t,e){this.#r[String(t).toLowerCase()]=String(e)}clearHeaders(){this.#r={}}[Symbol.iterator](){const t=this.headers,e=Object.keys(t);let r=0;return{next:()=>{if(r<e.length){const n=e[r++];return{value:[n,t[n]],done:!1}}return{value:void 0,done:!0}}}}get credentials(){return this.#d||null}setCredentials(t,e){o.assertArgument(!t.match(/:/),"invalid basic authentication username","username","[REDACTED]"),this.#d=`${t}:${e}`}get allowGzip(){return this.#e}set allowGzip(t){this.#e=!!t}get allowInsecureAuthentication(){return!!this.#t}set allowInsecureAuthentication(t){this.#t=!!t}get timeout(){return this.#n}set timeout(t){o.assertArgument(t>=0,"timeout must be non-zero","timeout",t),this.#n=t}get preflightFunc(){return this.#l||null}set preflightFunc(t){this.#l=t}get processFunc(){return this.#g||null}set processFunc(t){this.#g=t}get retryFunc(){return this.#A||null}set retryFunc(t){this.#A=t}get getUrlFunc(){return this.#h||mr}set getUrlFunc(t){this.#h=t}constructor(t){this.#o=String(t),this.#t=!1,this.#e=!0,this.#r={},this.#s="",this.#n=3e5,this.#u={slotInterval:cn,maxAttempts:an},this.#h=null}toString(){return`<FetchRequest method=${JSON.stringify(this.method)} url=${JSON.stringify(this.url)} headers=${JSON.stringify(this.headers)} body=${this.#i?o.hexlify(this.#i):"null"}>`}setThrottleParams(t){t.slotInterval!=null&&(this.#u.slotInterval=t.slotInterval),t.maxAttempts!=null&&(this.#u.maxAttempts=t.maxAttempts)}async#f(t,e,r,n,i){if(t>=this.#u.maxAttempts)return i.makeServerError("exceeded maximum retry limit");o.assert(wr()<=e,"timeout","TIMEOUT",{operation:"request.send",reason:"timeout",request:n}),r>0&&await dn(r);let a=this.clone();const c=(a.url.split(":")[0]||"").toLowerCase();if(c in te){const f=await te[c](a.url,ee(n.#c));if(f instanceof gt){let h=f;if(this.processFunc){ee(n.#c);try{h=await this.processFunc(a,h)}catch(A){(A.throttle==null||typeof A.stall!="number")&&h.makeServerError("error in post-processing function",A).assertOk()}}return h}a=f}this.preflightFunc&&(a=await this.preflightFunc(a));const l=await this.getUrlFunc(a,ee(n.#c));let u=new gt(l.statusCode,l.statusMessage,l.headers,l.body,n);if(u.statusCode===301||u.statusCode===302){try{const f=u.headers.location||"";return a.redirect(f).#f(t+1,e,0,n,u)}catch{}return u}else if(u.statusCode===429&&(this.retryFunc==null||await this.retryFunc(a,u,t))){const f=u.headers["retry-after"];let h=this.#u.slotInterval*Math.trunc(Math.random()*Math.pow(2,t));return typeof f=="string"&&f.match(/^[1-9][0-9]*$/)&&(h=parseInt(f)),a.clone().#f(t+1,e,h,n,u)}if(this.processFunc){ee(n.#c);try{u=await this.processFunc(a,u)}catch(f){(f.throttle==null||typeof f.stall!="number")&&u.makeServerError("error in post-processing function",f).assertOk();let h=this.#u.slotInterval*Math.trunc(Math.random()*Math.pow(2,t));return f.stall>=0&&(h=f.stall),a.clone().#f(t+1,e,h,n,u)}}return u}send(){return o.assert(this.#c==null,"request already sent","UNSUPPORTED_OPERATION",{operation:"fetchRequest.send"}),this.#c=new hn(this),this.#f(0,wr()+this.timeout,0,this,new gt(0,"",{},null,this))}cancel(){o.assert(this.#c!=null,"request has not been sent","UNSUPPORTED_OPERATION",{operation:"fetchRequest.cancel"});const t=as.get(this);if(!t)throw new Error("missing signal; should not happen");t()}redirect(t){const e=this.url.split(":")[0].toLowerCase(),r=t.split(":")[0].toLowerCase();o.assert(this.method==="GET"&&(e!=="https"||r!=="http")&&t.match(/^https?:/),"unsupported redirect","UNSUPPORTED_OPERATION",{operation:`redirect(${this.method} ${JSON.stringify(this.url)} => ${JSON.stringify(t)})`});const n=new nt(t);return n.method="GET",n.allowGzip=this.allowGzip,n.timeout=this.timeout,n.#r=Object.assign({},this.#r),this.#i&&(n.#i=new Uint8Array(this.#i)),n.#a=this.#a,n}clone(){const t=new nt(this.url);return t.#s=this.#s,this.#i&&(t.#i=this.#i),t.#a=this.#a,t.#r=Object.assign({},this.#r),t.#d=this.#d,this.allowGzip&&(t.allowGzip=!0),t.timeout=this.timeout,this.allowInsecureAuthentication&&(t.allowInsecureAuthentication=!0),t.#l=this.#l,t.#g=this.#g,t.#A=this.#A,t.#u=Object.assign({},this.#u),t.#h=this.#h,t}static lockConfig(){Ce=!0}static getGateway(t){return te[t.toLowerCase()]||null}static registerGateway(t,e){if(t=t.toLowerCase(),t==="http"||t==="https")throw new Error(`cannot intercept ${t}; use registerGetUrl`);if(Ce)throw new Error("gateways locked");te[t]=e}static registerGetUrl(t){if(Ce)throw new Error("gateways locked");mr=t}static createGetUrlFunc(t){return ns()}static createDataGateway(){return is}static createIpfsGatewayFunc(t){return os(t)}}class gt{#t;#e;#r;#s;#n;#o;toString(){return`<FetchResponse status=${this.statusCode} body=${this.#s?o.hexlify(this.#s):"null"}>`}get statusCode(){return this.#t}get statusMessage(){return this.#e}get headers(){return Object.assign({},this.#r)}get body(){return this.#s==null?null:new Uint8Array(this.#s)}get bodyText(){try{return this.#s==null?"":d.toUtf8String(this.#s)}catch{o.assert(!1,"response body is not valid UTF-8 data","UNSUPPORTED_OPERATION",{operation:"bodyText",info:{response:this}})}}get bodyJson(){try{return JSON.parse(this.bodyText)}catch{o.assert(!1,"response body is not valid JSON","UNSUPPORTED_OPERATION",{operation:"bodyJson",info:{response:this}})}}[Symbol.iterator](){const t=this.headers,e=Object.keys(t);let r=0;return{next:()=>{if(r<e.length){const n=e[r++];return{value:[n,t[n]],done:!1}}return{value:void 0,done:!0}}}}constructor(t,e,r,n,i){this.#t=t,this.#e=e,this.#r=Object.keys(r).reduce((a,c)=>(a[c.toLowerCase()]=String(r[c]),a),{}),this.#s=n==null?null:new Uint8Array(n),this.#n=i||null,this.#o={message:""}}makeServerError(t,e){let r;t?r=`CLIENT ESCALATED SERVER ERROR (${this.statusCode} ${this.statusMessage}; ${t})`:(t=`${this.statusCode} ${this.statusMessage}`,r=`CLIENT ESCALATED SERVER ERROR (${t})`);const n=new gt(599,r,this.headers,this.body,this.#n||void 0);return n.#o={message:t,error:e},n}throwThrottleError(t,e){e==null?e=-1:o.assertArgument(Number.isInteger(e)&&e>=0,"invalid stall timeout","stall",e);const r=new Error(t||"throttling requests");throw o.defineProperties(r,{stall:e,throttle:!0}),r}getHeader(t){return this.headers[t.toLowerCase()]}hasBody(){return this.#s!=null}get request(){return this.#n}ok(){return this.#o.message===""&&this.statusCode>=200&&this.statusCode<300}assertOk(){if(this.ok())return;let{message:t,error:e}=this.#o;t===""&&(t=`server response ${this.statusCode} ${this.statusMessage}`);let r=null;this.request&&(r=this.request.url);let n=null;try{this.#s&&(n=d.toUtf8String(this.#s))}catch{}o.assert(!1,t,"SERVER_ERROR",{request:this.request||"unknown request",response:this,error:e,info:{requestUrl:r,responseBody:n,responseStatus:`${this.statusCode} ${this.statusMessage}`}})}}function wr(){return new Date().getTime()}function fn(s){return d.toUtf8Bytes(s.replace(/%([0-9a-f][0-9a-f])/gi,(t,e)=>String.fromCharCode(parseInt(e,16))))}function dn(s){return new Promise(t=>setTimeout(t,s))}function gn(s){let t=s.toString(16);for(;t.length<2;)t="0"+t;return"0x"+t}function yr(s,t,e){let r=0;for(let n=0;n<e;n++)r=r*256+s[t+n];return r}function br(s,t,e,r){const n=[];for(;e<t+1+r;){const i=cs(s,e);n.push(i.result),e+=i.consumed,o.assert(e<=t+1+r,"child data too short","BUFFER_OVERRUN",{buffer:s,length:r,offset:t})}return{consumed:1+r,result:n}}function cs(s,t){o.assert(s.length!==0,"data too short","BUFFER_OVERRUN",{buffer:s,length:0,offset:1});const e=r=>{o.assert(r<=s.length,"data short segment too short","BUFFER_OVERRUN",{buffer:s,length:s.length,offset:r})};if(s[t]>=248){const r=s[t]-247;e(t+1+r);const n=yr(s,t+1,r);return e(t+1+r+n),br(s,t,t+1+r,r+n)}else if(s[t]>=192){const r=s[t]-192;return e(t+1+r),br(s,t,t+1,r)}else if(s[t]>=184){const r=s[t]-183;e(t+1+r);const n=yr(s,t+1,r);e(t+1+r+n);const i=o.hexlify(s.slice(t+1+r,t+1+r+n));return{consumed:1+r+n,result:i}}else if(s[t]>=128){const r=s[t]-128;e(t+1+r);const n=o.hexlify(s.slice(t+1,t+1+r));return{consumed:1+r,result:n}}return{consumed:1,result:gn(s[t])}}function ge(s){const t=o.getBytes(s,"data"),e=cs(t,0);return o.assertArgument(e.consumed===t.length,"unexpected junk after rlp payload","data",s),e.result}function Er(s){const t=[];for(;s;)t.unshift(s&255),s>>=8;return t}function ls(s){if(Array.isArray(s)){let r=[];if(s.forEach(function(i){r=r.concat(ls(i))}),r.length<=55)return r.unshift(192+r.length),r;const n=Er(r.length);return n.unshift(247+n.length),n.concat(r)}const t=Array.prototype.slice.call(o.getBytes(s,"object"));if(t.length===1&&t[0]<=127)return t;if(t.length<=55)return t.unshift(128+t.length),t;const e=Er(t.length);return e.unshift(183+e.length),e.concat(t)}const Br="0123456789abcdef";function Et(s){let t="0x";for(const e of ls(s))t+=Br[e>>4],t+=Br[e&15];return t}class us extends o.Hash{constructor(t,e){super(),this.finished=!1,this.destroyed=!1,o.hash(t);const r=o.toBytes(e);if(this.iHash=t.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const n=this.blockLen,i=new Uint8Array(n);i.set(r.length>n?t.create().update(r).digest():r);for(let a=0;a<i.length;a++)i[a]^=54;this.iHash.update(i),this.oHash=t.create();for(let a=0;a<i.length;a++)i[a]^=106;this.oHash.update(i),i.fill(0)}update(t){return o.exists(this),this.iHash.update(t),this}digestInto(t){o.exists(this),o.bytes$1(t,this.outputLen),this.finished=!0,this.iHash.digestInto(t),this.oHash.update(t),this.oHash.digestInto(t),this.destroy()}digest(){const t=new Uint8Array(this.oHash.outputLen);return this.digestInto(t),t}_cloneInto(t){t||(t=Object.create(Object.getPrototypeOf(this),{}));const{oHash:e,iHash:r,finished:n,destroyed:i,blockLen:a,outputLen:c}=this;return t=t,t.finished=n,t.destroyed=i,t.blockLen=a,t.outputLen=c,t.oHash=e._cloneInto(t.oHash),t.iHash=r._cloneInto(t.iHash),t}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const Ae=(s,t,e)=>new us(s,t).update(e).digest();Ae.create=(s,t)=>new us(s,t);function An(s,t,e,r){o.hash(s);const n=o.checkOpts({dkLen:32,asyncTick:10},r),{c:i,dkLen:a,asyncTick:c}=n;if(o.number(i),o.number(a),o.number(c),i<1)throw new Error("PBKDF2: iterations (c) should be >= 1");const l=o.toBytes(t),u=o.toBytes(e),f=new Uint8Array(a),h=Ae.create(s,l),A=h._cloneInto().update(u);return{c:i,dkLen:a,asyncTick:c,DK:f,PRF:h,PRFSalt:A}}function pn(s,t,e,r,n){return s.destroy(),t.destroy(),r&&r.destroy(),n.fill(0),e}function hs(s,t,e,r){const{c:n,dkLen:i,DK:a,PRF:c,PRFSalt:l}=An(s,t,e,r);let u;const f=new Uint8Array(4),h=o.createView(f),A=new Uint8Array(c.outputLen);for(let w=1,m=0;m<i;w++,m+=c.outputLen){const g=a.subarray(m,m+c.outputLen);h.setInt32(0,w,!1),(u=l._cloneInto(u)).update(f).digestInto(A),g.set(A.subarray(0,g.length));for(let p=1;p<n;p++){c._cloneInto(u).update(A).digestInto(A);for(let y=0;y<g.length;y++)g[y]^=A[y]}}return pn(c,l,a,u,A)}function mn(s,t,e,r){if(typeof s.setBigUint64=="function")return s.setBigUint64(t,e,r);const n=BigInt(32),i=BigInt(4294967295),a=Number(e>>n&i),c=Number(e&i),l=r?4:0,u=r?0:4;s.setUint32(t+l,a,r),s.setUint32(t+u,c,r)}class _e extends o.Hash{constructor(t,e,r,n){super(),this.blockLen=t,this.outputLen=e,this.padOffset=r,this.isLE=n,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(t),this.view=o.createView(this.buffer)}update(t){o.exists(this);const{view:e,buffer:r,blockLen:n}=this;t=o.toBytes(t);const i=t.length;for(let a=0;a<i;){const c=Math.min(n-this.pos,i-a);if(c===n){const l=o.createView(t);for(;n<=i-a;a+=n)this.process(l,a);continue}r.set(t.subarray(a,a+c),this.pos),this.pos+=c,a+=c,this.pos===n&&(this.process(e,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){o.exists(this),o.output(t,this),this.finished=!0;const{buffer:e,view:r,blockLen:n,isLE:i}=this;let{pos:a}=this;e[a++]=128,this.buffer.subarray(a).fill(0),this.padOffset>n-a&&(this.process(r,0),a=0);for(let h=a;h<n;h++)e[h]=0;mn(r,n-8,BigInt(this.length*8),i),this.process(r,0);const c=o.createView(t),l=this.outputLen;if(l%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const u=l/4,f=this.get();if(u>f.length)throw new Error("_sha2: outputLen bigger than state");for(let h=0;h<u;h++)c.setUint32(4*h,f[h],i)}digest(){const{buffer:t,outputLen:e}=this;this.digestInto(t);const r=t.slice(0,e);return this.destroy(),r}_cloneInto(t){t||(t=new this.constructor),t.set(...this.get());const{blockLen:e,buffer:r,length:n,finished:i,destroyed:a,pos:c}=this;return t.length=n,t.pos=c,t.finished=i,t.destroyed=a,n%e&&t.buffer.set(r),t}}const wn=(s,t,e)=>s&t^~s&e,yn=(s,t,e)=>s&t^s&e^t&e,bn=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),lt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),ut=new Uint32Array(64);class En extends _e{constructor(){super(64,32,8,!1),this.A=lt[0]|0,this.B=lt[1]|0,this.C=lt[2]|0,this.D=lt[3]|0,this.E=lt[4]|0,this.F=lt[5]|0,this.G=lt[6]|0,this.H=lt[7]|0}get(){const{A:t,B:e,C:r,D:n,E:i,F:a,G:c,H:l}=this;return[t,e,r,n,i,a,c,l]}set(t,e,r,n,i,a,c,l){this.A=t|0,this.B=e|0,this.C=r|0,this.D=n|0,this.E=i|0,this.F=a|0,this.G=c|0,this.H=l|0}process(t,e){for(let h=0;h<16;h++,e+=4)ut[h]=t.getUint32(e,!1);for(let h=16;h<64;h++){const A=ut[h-15],w=ut[h-2],m=o.rotr(A,7)^o.rotr(A,18)^A>>>3,g=o.rotr(w,17)^o.rotr(w,19)^w>>>10;ut[h]=g+ut[h-7]+m+ut[h-16]|0}let{A:r,B:n,C:i,D:a,E:c,F:l,G:u,H:f}=this;for(let h=0;h<64;h++){const A=o.rotr(c,6)^o.rotr(c,11)^o.rotr(c,25),w=f+A+wn(c,l,u)+bn[h]+ut[h]|0,g=(o.rotr(r,2)^o.rotr(r,13)^o.rotr(r,22))+yn(r,n,i)|0;f=u,u=l,l=c,c=a+w|0,a=i,i=n,n=r,r=w+g|0}r=r+this.A|0,n=n+this.B|0,i=i+this.C|0,a=a+this.D|0,c=c+this.E|0,l=l+this.F|0,u=u+this.G|0,f=f+this.H|0,this.set(r,n,i,a,c,l,u,f)}roundClean(){ut.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}const Zt=o.wrapConstructor(()=>new En),[Bn,xn]=o.u64$1.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(s=>BigInt(s))),ht=new Uint32Array(80),ft=new Uint32Array(80);class Cn extends _e{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){const{Ah:t,Al:e,Bh:r,Bl:n,Ch:i,Cl:a,Dh:c,Dl:l,Eh:u,El:f,Fh:h,Fl:A,Gh:w,Gl:m,Hh:g,Hl:p}=this;return[t,e,r,n,i,a,c,l,u,f,h,A,w,m,g,p]}set(t,e,r,n,i,a,c,l,u,f,h,A,w,m,g,p){this.Ah=t|0,this.Al=e|0,this.Bh=r|0,this.Bl=n|0,this.Ch=i|0,this.Cl=a|0,this.Dh=c|0,this.Dl=l|0,this.Eh=u|0,this.El=f|0,this.Fh=h|0,this.Fl=A|0,this.Gh=w|0,this.Gl=m|0,this.Hh=g|0,this.Hl=p|0}process(t,e){for(let E=0;E<16;E++,e+=4)ht[E]=t.getUint32(e),ft[E]=t.getUint32(e+=4);for(let E=16;E<80;E++){const k=ht[E-15]|0,P=ft[E-15]|0,B=o.u64$1.rotrSH(k,P,1)^o.u64$1.rotrSH(k,P,8)^o.u64$1.shrSH(k,P,7),N=o.u64$1.rotrSL(k,P,1)^o.u64$1.rotrSL(k,P,8)^o.u64$1.shrSL(k,P,7),I=ht[E-2]|0,D=ft[E-2]|0,R=o.u64$1.rotrSH(I,D,19)^o.u64$1.rotrBH(I,D,61)^o.u64$1.shrSH(I,D,6),O=o.u64$1.rotrSL(I,D,19)^o.u64$1.rotrBL(I,D,61)^o.u64$1.shrSL(I,D,6),Q=o.u64$1.add4L(N,O,ft[E-7],ft[E-16]),z=o.u64$1.add4H(Q,B,R,ht[E-7],ht[E-16]);ht[E]=z|0,ft[E]=Q|0}let{Ah:r,Al:n,Bh:i,Bl:a,Ch:c,Cl:l,Dh:u,Dl:f,Eh:h,El:A,Fh:w,Fl:m,Gh:g,Gl:p,Hh:y,Hl:C}=this;for(let E=0;E<80;E++){const k=o.u64$1.rotrSH(h,A,14)^o.u64$1.rotrSH(h,A,18)^o.u64$1.rotrBH(h,A,41),P=o.u64$1.rotrSL(h,A,14)^o.u64$1.rotrSL(h,A,18)^o.u64$1.rotrBL(h,A,41),B=h&w^~h&g,N=A&m^~A&p,I=o.u64$1.add5L(C,P,N,xn[E],ft[E]),D=o.u64$1.add5H(I,y,k,B,Bn[E],ht[E]),R=I|0,O=o.u64$1.rotrSH(r,n,28)^o.u64$1.rotrBH(r,n,34)^o.u64$1.rotrBH(r,n,39),Q=o.u64$1.rotrSL(r,n,28)^o.u64$1.rotrBL(r,n,34)^o.u64$1.rotrBL(r,n,39),z=r&i^r&c^i&c,et=n&a^n&l^a&l;y=g|0,C=p|0,g=w|0,p=m|0,w=h|0,m=A|0,{h,l:A}=o.u64$1.add(u|0,f|0,D|0,R|0),u=c|0,f=l|0,c=i|0,l=a|0,i=r|0,a=n|0;const b=o.u64$1.add3L(R,Q,et);r=o.u64$1.add3H(b,D,O,z),n=b|0}({h:r,l:n}=o.u64$1.add(this.Ah|0,this.Al|0,r|0,n|0)),{h:i,l:a}=o.u64$1.add(this.Bh|0,this.Bl|0,i|0,a|0),{h:c,l}=o.u64$1.add(this.Ch|0,this.Cl|0,c|0,l|0),{h:u,l:f}=o.u64$1.add(this.Dh|0,this.Dl|0,u|0,f|0),{h,l:A}=o.u64$1.add(this.Eh|0,this.El|0,h|0,A|0),{h:w,l:m}=o.u64$1.add(this.Fh|0,this.Fl|0,w|0,m|0),{h:g,l:p}=o.u64$1.add(this.Gh|0,this.Gl|0,g|0,p|0),{h:y,l:C}=o.u64$1.add(this.Hh|0,this.Hl|0,y|0,C|0),this.set(r,n,i,a,c,l,u,f,h,A,w,m,g,p,y,C)}roundClean(){ht.fill(0),ft.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}const $e=o.wrapConstructor(()=>new Cn);function In(){if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof o.global<"u")return o.global;throw new Error("unable to locate global object")}const xr=In(),Cr=xr.crypto||xr.msCrypto;function Pn(s){switch(s){case"sha256":return Zt.create();case"sha512":return $e.create()}o.assertArgument(!1,"invalid hashing algorithm name","algorithm",s)}function Nn(s,t){const e={sha256:Zt,sha512:$e}[s];return o.assertArgument(e!=null,"invalid hmac algorithm","algorithm",s),Ae.create(e,t)}function kn(s,t,e,r,n){const i={sha256:Zt,sha512:$e}[n];return o.assertArgument(i!=null,"invalid pbkdf2 algorithm","algorithm",n),hs(i,s,t,{c:e,dkLen:r})}function Sn(s){o.assert(Cr!=null,"platform does not support secure random numbers","UNSUPPORTED_OPERATION",{operation:"randomBytes"}),o.assertArgument(Number.isInteger(s)&&s>0&&s<=1024,"invalid length","length",s);const t=new Uint8Array(s);return Cr.getRandomValues(t),t}const fs=function(s){return Pn("sha256").update(s).digest()};let ds=fs,gs=!1;function Bt(s){const t=o.getBytes(s,"data");return o.hexlify(ds(t))}Bt._=fs;Bt.lock=function(){gs=!0};Bt.register=function(s){if(gs)throw new Error("sha256 is locked");ds=s};Object.freeze(Bt);Object.freeze(Bt);/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const As=BigInt(0),pe=BigInt(1),vn=BigInt(2),me=s=>s instanceof Uint8Array,Rn=Array.from({length:256},(s,t)=>t.toString(16).padStart(2,"0"));function Ot(s){if(!me(s))throw new Error("Uint8Array expected");let t="";for(let e=0;e<s.length;e++)t+=Rn[s[e]];return t}function ps(s){const t=s.toString(16);return t.length&1?`0${t}`:t}function tr(s){if(typeof s!="string")throw new Error("hex string expected, got "+typeof s);return BigInt(s===""?"0":`0x${s}`)}function Dt(s){if(typeof s!="string")throw new Error("hex string expected, got "+typeof s);const t=s.length;if(t%2)throw new Error("padded hex string expected, got unpadded hex of length "+t);const e=new Uint8Array(t/2);for(let r=0;r<e.length;r++){const n=r*2,i=s.slice(n,n+2),a=Number.parseInt(i,16);if(Number.isNaN(a)||a<0)throw new Error("Invalid byte sequence");e[r]=a}return e}function bt(s){return tr(Ot(s))}function er(s){if(!me(s))throw new Error("Uint8Array expected");return tr(Ot(Uint8Array.from(s).reverse()))}function Tt(s,t){return Dt(s.toString(16).padStart(t*2,"0"))}function rr(s,t){return Tt(s,t).reverse()}function On(s){return Dt(ps(s))}function $(s,t,e){let r;if(typeof t=="string")try{r=Dt(t)}catch(i){throw new Error(`${s} must be valid hex string, got "${t}". Cause: ${i}`)}else if(me(t))r=Uint8Array.from(t);else throw new Error(`${s} must be hex string or Uint8Array`);const n=r.length;if(typeof e=="number"&&n!==e)throw new Error(`${s} expected ${e} bytes, got ${n}`);return r}function Vt(...s){const t=new Uint8Array(s.reduce((r,n)=>r+n.length,0));let e=0;return s.forEach(r=>{if(!me(r))throw new Error("Uint8Array expected");t.set(r,e),e+=r.length}),t}function Dn(s,t){if(s.length!==t.length)return!1;for(let e=0;e<s.length;e++)if(s[e]!==t[e])return!1;return!0}function Tn(s){if(typeof s!="string")throw new Error(`utf8ToBytes expected string, got ${typeof s}`);return new Uint8Array(new TextEncoder().encode(s))}function Fn(s){let t;for(t=0;s>As;s>>=pe,t+=1);return t}function Ln(s,t){return s>>BigInt(t)&pe}const Un=(s,t,e)=>s|(e?pe:As)<<BigInt(t),sr=s=>(vn<<BigInt(s-1))-pe,Ie=s=>new Uint8Array(s),Ir=s=>Uint8Array.from(s);function ms(s,t,e){if(typeof s!="number"||s<2)throw new Error("hashLen must be a number");if(typeof t!="number"||t<2)throw new Error("qByteLen must be a number");if(typeof e!="function")throw new Error("hmacFn must be a function");let r=Ie(s),n=Ie(s),i=0;const a=()=>{r.fill(1),n.fill(0),i=0},c=(...h)=>e(n,r,...h),l=(h=Ie())=>{n=c(Ir([0]),h),r=c(),h.length!==0&&(n=c(Ir([1]),h),r=c())},u=()=>{if(i++>=1e3)throw new Error("drbg: tried 1000 values");let h=0;const A=[];for(;h<t;){r=c();const w=r.slice();A.push(w),h+=r.length}return Vt(...A)};return(h,A)=>{a(),l(h);let w;for(;!(w=A(u()));)l();return a(),w}}const Mn={bigint:s=>typeof s=="bigint",function:s=>typeof s=="function",boolean:s=>typeof s=="boolean",string:s=>typeof s=="string",stringOrUint8Array:s=>typeof s=="string"||s instanceof Uint8Array,isSafeInteger:s=>Number.isSafeInteger(s),array:s=>Array.isArray(s),field:(s,t)=>t.Fp.isValid(s),hash:s=>typeof s=="function"&&Number.isSafeInteger(s.outputLen)};function Yt(s,t,e={}){const r=(n,i,a)=>{const c=Mn[i];if(typeof c!="function")throw new Error(`Invalid validator "${i}", expected function`);const l=s[n];if(!(a&&l===void 0)&&!c(l,s))throw new Error(`Invalid param ${String(n)}=${l} (${typeof l}), expected ${i}`)};for(const[n,i]of Object.entries(t))r(n,i,!1);for(const[n,i]of Object.entries(e))r(n,i,!0);return s}const Hn=Object.freeze(Object.defineProperty({__proto__:null,bitGet:Ln,bitLen:Fn,bitMask:sr,bitSet:Un,bytesToHex:Ot,bytesToNumberBE:bt,bytesToNumberLE:er,concatBytes:Vt,createHmacDrbg:ms,ensureBytes:$,equalBytes:Dn,hexToBytes:Dt,hexToNumber:tr,numberToBytesBE:Tt,numberToBytesLE:rr,numberToHexUnpadded:ps,numberToVarBytesBE:On,utf8ToBytes:Tn,validateObject:Yt},Symbol.toStringTag,{value:"Module"}));/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const J=BigInt(0),U=BigInt(1),mt=BigInt(2),Qn=BigInt(3),Ue=BigInt(4),Pr=BigInt(5),Nr=BigInt(8);BigInt(9);BigInt(16);function Z(s,t){const e=s%t;return e>=J?e:t+e}function Gn(s,t,e){if(e<=J||t<J)throw new Error("Expected power/modulo > 0");if(e===U)return J;let r=U;for(;t>J;)t&U&&(r=r*s%e),s=s*s%e,t>>=U;return r}function X(s,t,e){let r=s;for(;t-- >J;)r*=r,r%=e;return r}function Me(s,t){if(s===J||t<=J)throw new Error(`invert: expected positive integers, got n=${s} mod=${t}`);let e=Z(s,t),r=t,n=J,i=U;for(;e!==J;){const c=r/e,l=r%e,u=n-i*c;r=e,e=l,n=i,i=u}if(r!==U)throw new Error("invert: does not exist");return Z(n,t)}function Vn(s){const t=(s-U)/mt;let e,r,n;for(e=s-U,r=0;e%mt===J;e/=mt,r++);for(n=mt;n<s&&Gn(n,t,s)!==s-U;n++);if(r===1){const a=(s+U)/Ue;return function(l,u){const f=l.pow(u,a);if(!l.eql(l.sqr(f),u))throw new Error("Cannot find square root");return f}}const i=(e+U)/mt;return function(c,l){if(c.pow(l,t)===c.neg(c.ONE))throw new Error("Cannot find square root");let u=r,f=c.pow(c.mul(c.ONE,n),e),h=c.pow(l,i),A=c.pow(l,e);for(;!c.eql(A,c.ONE);){if(c.eql(A,c.ZERO))return c.ZERO;let w=1;for(let g=c.sqr(A);w<u&&!c.eql(g,c.ONE);w++)g=c.sqr(g);const m=c.pow(f,U<<BigInt(u-w-1));f=c.sqr(m),h=c.mul(h,m),A=c.mul(A,f),u=w}return h}}function Jn(s){if(s%Ue===Qn){const t=(s+U)/Ue;return function(r,n){const i=r.pow(n,t);if(!r.eql(r.sqr(i),n))throw new Error("Cannot find square root");return i}}if(s%Nr===Pr){const t=(s-Pr)/Nr;return function(r,n){const i=r.mul(n,mt),a=r.pow(i,t),c=r.mul(n,a),l=r.mul(r.mul(c,mt),a),u=r.mul(c,r.sub(l,r.ONE));if(!r.eql(r.sqr(u),n))throw new Error("Cannot find square root");return u}}return Vn(s)}const zn=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Kn(s){const t={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},e=zn.reduce((r,n)=>(r[n]="function",r),t);return Yt(s,e)}function jn(s,t,e){if(e<J)throw new Error("Expected power > 0");if(e===J)return s.ONE;if(e===U)return t;let r=s.ONE,n=t;for(;e>J;)e&U&&(r=s.mul(r,n)),n=s.sqr(n),e>>=U;return r}function Zn(s,t){const e=new Array(t.length),r=t.reduce((i,a,c)=>s.is0(a)?i:(e[c]=i,s.mul(i,a)),s.ONE),n=s.inv(r);return t.reduceRight((i,a,c)=>s.is0(a)?i:(e[c]=s.mul(i,e[c]),s.mul(i,a)),n),e}function ws(s,t){const e=t!==void 0?t:s.toString(2).length,r=Math.ceil(e/8);return{nBitLength:e,nByteLength:r}}function Yn(s,t,e=!1,r={}){if(s<=J)throw new Error(`Expected Field ORDER > 0, got ${s}`);const{nBitLength:n,nByteLength:i}=ws(s,t);if(i>2048)throw new Error("Field lengths over 2048 bytes are not supported");const a=Jn(s),c=Object.freeze({ORDER:s,BITS:n,BYTES:i,MASK:sr(n),ZERO:J,ONE:U,create:l=>Z(l,s),isValid:l=>{if(typeof l!="bigint")throw new Error(`Invalid field element: expected bigint, got ${typeof l}`);return J<=l&&l<s},is0:l=>l===J,isOdd:l=>(l&U)===U,neg:l=>Z(-l,s),eql:(l,u)=>l===u,sqr:l=>Z(l*l,s),add:(l,u)=>Z(l+u,s),sub:(l,u)=>Z(l-u,s),mul:(l,u)=>Z(l*u,s),pow:(l,u)=>jn(c,l,u),div:(l,u)=>Z(l*Me(u,s),s),sqrN:l=>l*l,addN:(l,u)=>l+u,subN:(l,u)=>l-u,mulN:(l,u)=>l*u,inv:l=>Me(l,s),sqrt:r.sqrt||(l=>a(c,l)),invertBatch:l=>Zn(c,l),cmov:(l,u,f)=>f?u:l,toBytes:l=>e?rr(l,i):Tt(l,i),fromBytes:l=>{if(l.length!==i)throw new Error(`Fp.fromBytes: expected ${i}, got ${l.length}`);return e?er(l):bt(l)}});return Object.freeze(c)}function ys(s){if(typeof s!="bigint")throw new Error("field order must be bigint");const t=s.toString(2).length;return Math.ceil(t/8)}function bs(s){const t=ys(s);return t+Math.ceil(t/2)}function qn(s,t,e=!1){const r=s.length,n=ys(t),i=bs(t);if(r<16||r<i||r>1024)throw new Error(`expected ${i}-1024 bytes of input, got ${r}`);const a=e?bt(s):er(s),c=Z(a,t-U)+U;return e?rr(c,n):Tt(c,n)}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const Wn=BigInt(0),Pe=BigInt(1);function Xn(s,t){const e=(n,i)=>{const a=i.negate();return n?a:i},r=n=>{const i=Math.ceil(t/n)+1,a=2**(n-1);return{windows:i,windowSize:a}};return{constTimeNegate:e,unsafeLadder(n,i){let a=s.ZERO,c=n;for(;i>Wn;)i&Pe&&(a=a.add(c)),c=c.double(),i>>=Pe;return a},precomputeWindow(n,i){const{windows:a,windowSize:c}=r(i),l=[];let u=n,f=u;for(let h=0;h<a;h++){f=u,l.push(f);for(let A=1;A<c;A++)f=f.add(u),l.push(f);u=f.double()}return l},wNAF(n,i,a){const{windows:c,windowSize:l}=r(n);let u=s.ZERO,f=s.BASE;const h=BigInt(2**n-1),A=2**n,w=BigInt(n);for(let m=0;m<c;m++){const g=m*l;let p=Number(a&h);a>>=w,p>l&&(p-=A,a+=Pe);const y=g,C=g+Math.abs(p)-1,E=m%2!==0,k=p<0;p===0?f=f.add(e(E,i[y])):u=u.add(e(k,i[C]))}return{p:u,f}},wNAFCached(n,i,a,c){const l=n._WINDOW_SIZE||1;let u=i.get(n);return u||(u=this.precomputeWindow(n,l),l!==1&&i.set(n,c(u))),this.wNAF(l,u,a)}}}function Es(s){return Kn(s.Fp),Yt(s,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...ws(s.n,s.nBitLength),...s,p:s.Fp.ORDER})}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function _n(s){const t=Es(s);Yt(t,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});const{endo:e,Fp:r,a:n}=t;if(e){if(!r.eql(n,r.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if(typeof e!="object"||typeof e.beta!="bigint"||typeof e.splitScalar!="function")throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...t})}const{bytesToNumberBE:$n,hexToBytes:ti}=Hn,wt={Err:class extends Error{constructor(t=""){super(t)}},_parseInt(s){const{Err:t}=wt;if(s.length<2||s[0]!==2)throw new t("Invalid signature integer tag");const e=s[1],r=s.subarray(2,e+2);if(!e||r.length!==e)throw new t("Invalid signature integer: wrong length");if(r[0]&128)throw new t("Invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new t("Invalid signature integer: unnecessary leading zero");return{d:$n(r),l:s.subarray(e+2)}},toSig(s){const{Err:t}=wt,e=typeof s=="string"?ti(s):s;if(!(e instanceof Uint8Array))throw new Error("ui8a expected");let r=e.length;if(r<2||e[0]!=48)throw new t("Invalid signature tag");if(e[1]!==r-2)throw new t("Invalid signature: incorrect length");const{d:n,l:i}=wt._parseInt(e.subarray(2)),{d:a,l:c}=wt._parseInt(i);if(c.length)throw new t("Invalid signature: left bytes after parsing");return{r:n,s:a}},hexFromSig(s){const t=u=>Number.parseInt(u[0],16)&8?"00"+u:u,e=u=>{const f=u.toString(16);return f.length&1?`0${f}`:f},r=t(e(s.s)),n=t(e(s.r)),i=r.length/2,a=n.length/2,c=e(i),l=e(a);return`30${e(a+i+4)}02${l}${n}02${c}${r}`}},it=BigInt(0),_=BigInt(1);BigInt(2);const kr=BigInt(3);BigInt(4);function ei(s){const t=_n(s),{Fp:e}=t,r=t.toBytes||((m,g,p)=>{const y=g.toAffine();return Vt(Uint8Array.from([4]),e.toBytes(y.x),e.toBytes(y.y))}),n=t.fromBytes||(m=>{const g=m.subarray(1),p=e.fromBytes(g.subarray(0,e.BYTES)),y=e.fromBytes(g.subarray(e.BYTES,2*e.BYTES));return{x:p,y}});function i(m){const{a:g,b:p}=t,y=e.sqr(m),C=e.mul(y,m);return e.add(e.add(C,e.mul(m,g)),p)}if(!e.eql(e.sqr(t.Gy),i(t.Gx)))throw new Error("bad generator point: equation left != right");function a(m){return typeof m=="bigint"&&it<m&&m<t.n}function c(m){if(!a(m))throw new Error("Expected valid bigint: 0 < bigint < curve.n")}function l(m){const{allowedPrivateKeyLengths:g,nByteLength:p,wrapPrivateKey:y,n:C}=t;if(g&&typeof m!="bigint"){if(m instanceof Uint8Array&&(m=Ot(m)),typeof m!="string"||!g.includes(m.length))throw new Error("Invalid key");m=m.padStart(p*2,"0")}let E;try{E=typeof m=="bigint"?m:bt($("private key",m,p))}catch{throw new Error(`private key must be ${p} bytes, hex or bigint, not ${typeof m}`)}return y&&(E=Z(E,C)),c(E),E}const u=new Map;function f(m){if(!(m instanceof h))throw new Error("ProjectivePoint expected")}class h{constructor(g,p,y){if(this.px=g,this.py=p,this.pz=y,g==null||!e.isValid(g))throw new Error("x required");if(p==null||!e.isValid(p))throw new Error("y required");if(y==null||!e.isValid(y))throw new Error("z required")}static fromAffine(g){const{x:p,y}=g||{};if(!g||!e.isValid(p)||!e.isValid(y))throw new Error("invalid affine point");if(g instanceof h)throw new Error("projective point not allowed");const C=E=>e.eql(E,e.ZERO);return C(p)&&C(y)?h.ZERO:new h(p,y,e.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(g){const p=e.invertBatch(g.map(y=>y.pz));return g.map((y,C)=>y.toAffine(p[C])).map(h.fromAffine)}static fromHex(g){const p=h.fromAffine(n($("pointHex",g)));return p.assertValidity(),p}static fromPrivateKey(g){return h.BASE.multiply(l(g))}_setWindowSize(g){this._WINDOW_SIZE=g,u.delete(this)}assertValidity(){if(this.is0()){if(t.allowInfinityPoint&&!e.is0(this.py))return;throw new Error("bad point: ZERO")}const{x:g,y:p}=this.toAffine();if(!e.isValid(g)||!e.isValid(p))throw new Error("bad point: x or y not FE");const y=e.sqr(p),C=i(g);if(!e.eql(y,C))throw new Error("bad point: equation left != right");if(!this.isTorsionFree())throw new Error("bad point: not in prime-order subgroup")}hasEvenY(){const{y:g}=this.toAffine();if(e.isOdd)return!e.isOdd(g);throw new Error("Field doesn't support isOdd")}equals(g){f(g);const{px:p,py:y,pz:C}=this,{px:E,py:k,pz:P}=g,B=e.eql(e.mul(p,P),e.mul(E,C)),N=e.eql(e.mul(y,P),e.mul(k,C));return B&&N}negate(){return new h(this.px,e.neg(this.py),this.pz)}double(){const{a:g,b:p}=t,y=e.mul(p,kr),{px:C,py:E,pz:k}=this;let P=e.ZERO,B=e.ZERO,N=e.ZERO,I=e.mul(C,C),D=e.mul(E,E),R=e.mul(k,k),O=e.mul(C,E);return O=e.add(O,O),N=e.mul(C,k),N=e.add(N,N),P=e.mul(g,N),B=e.mul(y,R),B=e.add(P,B),P=e.sub(D,B),B=e.add(D,B),B=e.mul(P,B),P=e.mul(O,P),N=e.mul(y,N),R=e.mul(g,R),O=e.sub(I,R),O=e.mul(g,O),O=e.add(O,N),N=e.add(I,I),I=e.add(N,I),I=e.add(I,R),I=e.mul(I,O),B=e.add(B,I),R=e.mul(E,k),R=e.add(R,R),I=e.mul(R,O),P=e.sub(P,I),N=e.mul(R,D),N=e.add(N,N),N=e.add(N,N),new h(P,B,N)}add(g){f(g);const{px:p,py:y,pz:C}=this,{px:E,py:k,pz:P}=g;let B=e.ZERO,N=e.ZERO,I=e.ZERO;const D=t.a,R=e.mul(t.b,kr);let O=e.mul(p,E),Q=e.mul(y,k),z=e.mul(C,P),et=e.add(p,y),b=e.add(E,k);et=e.mul(et,b),b=e.add(O,Q),et=e.sub(et,b),b=e.add(p,C);let x=e.add(E,P);return b=e.mul(b,x),x=e.add(O,z),b=e.sub(b,x),x=e.add(y,C),B=e.add(k,P),x=e.mul(x,B),B=e.add(Q,z),x=e.sub(x,B),I=e.mul(D,b),B=e.mul(R,z),I=e.add(B,I),B=e.sub(Q,I),I=e.add(Q,I),N=e.mul(B,I),Q=e.add(O,O),Q=e.add(Q,O),z=e.mul(D,z),b=e.mul(R,b),Q=e.add(Q,z),z=e.sub(O,z),z=e.mul(D,z),b=e.add(b,z),O=e.mul(Q,b),N=e.add(N,O),O=e.mul(x,b),B=e.mul(et,B),B=e.sub(B,O),O=e.mul(et,Q),I=e.mul(x,I),I=e.add(I,O),new h(B,N,I)}subtract(g){return this.add(g.negate())}is0(){return this.equals(h.ZERO)}wNAF(g){return w.wNAFCached(this,u,g,p=>{const y=e.invertBatch(p.map(C=>C.pz));return p.map((C,E)=>C.toAffine(y[E])).map(h.fromAffine)})}multiplyUnsafe(g){const p=h.ZERO;if(g===it)return p;if(c(g),g===_)return this;const{endo:y}=t;if(!y)return w.unsafeLadder(this,g);let{k1neg:C,k1:E,k2neg:k,k2:P}=y.splitScalar(g),B=p,N=p,I=this;for(;E>it||P>it;)E&_&&(B=B.add(I)),P&_&&(N=N.add(I)),I=I.double(),E>>=_,P>>=_;return C&&(B=B.negate()),k&&(N=N.negate()),N=new h(e.mul(N.px,y.beta),N.py,N.pz),B.add(N)}multiply(g){c(g);let p=g,y,C;const{endo:E}=t;if(E){const{k1neg:k,k1:P,k2neg:B,k2:N}=E.splitScalar(p);let{p:I,f:D}=this.wNAF(P),{p:R,f:O}=this.wNAF(N);I=w.constTimeNegate(k,I),R=w.constTimeNegate(B,R),R=new h(e.mul(R.px,E.beta),R.py,R.pz),y=I.add(R),C=D.add(O)}else{const{p:k,f:P}=this.wNAF(p);y=k,C=P}return h.normalizeZ([y,C])[0]}multiplyAndAddUnsafe(g,p,y){const C=h.BASE,E=(P,B)=>B===it||B===_||!P.equals(C)?P.multiplyUnsafe(B):P.multiply(B),k=E(this,p).add(E(g,y));return k.is0()?void 0:k}toAffine(g){const{px:p,py:y,pz:C}=this,E=this.is0();g==null&&(g=E?e.ONE:e.inv(C));const k=e.mul(p,g),P=e.mul(y,g),B=e.mul(C,g);if(E)return{x:e.ZERO,y:e.ZERO};if(!e.eql(B,e.ONE))throw new Error("invZ was invalid");return{x:k,y:P}}isTorsionFree(){const{h:g,isTorsionFree:p}=t;if(g===_)return!0;if(p)return p(h,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){const{h:g,clearCofactor:p}=t;return g===_?this:p?p(h,this):this.multiplyUnsafe(t.h)}toRawBytes(g=!0){return this.assertValidity(),r(h,this,g)}toHex(g=!0){return Ot(this.toRawBytes(g))}}h.BASE=new h(t.Gx,t.Gy,e.ONE),h.ZERO=new h(e.ZERO,e.ONE,e.ZERO);const A=t.nBitLength,w=Xn(h,t.endo?Math.ceil(A/2):A);return{CURVE:t,ProjectivePoint:h,normPrivateKeyToScalar:l,weierstrassEquation:i,isWithinCurveOrder:a}}function ri(s){const t=Es(s);return Yt(t,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...t})}function si(s){const t=ri(s),{Fp:e,n:r}=t,n=e.BYTES+1,i=2*e.BYTES+1;function a(b){return it<b&&b<e.ORDER}function c(b){return Z(b,r)}function l(b){return Me(b,r)}const{ProjectivePoint:u,normPrivateKeyToScalar:f,weierstrassEquation:h,isWithinCurveOrder:A}=ei({...t,toBytes(b,x,S){const F=x.toAffine(),T=e.toBytes(F.x),G=Vt;return S?G(Uint8Array.from([x.hasEvenY()?2:3]),T):G(Uint8Array.from([4]),T,e.toBytes(F.y))},fromBytes(b){const x=b.length,S=b[0],F=b.subarray(1);if(x===n&&(S===2||S===3)){const T=bt(F);if(!a(T))throw new Error("Point is not on curve");const G=h(T);let Y=e.sqrt(G);const q=(Y&_)===_;return(S&1)===1!==q&&(Y=e.neg(Y)),{x:T,y:Y}}else if(x===i&&S===4){const T=e.fromBytes(F.subarray(0,e.BYTES)),G=e.fromBytes(F.subarray(e.BYTES,2*e.BYTES));return{x:T,y:G}}else throw new Error(`Point of length ${x} was invalid. Expected ${n} compressed bytes or ${i} uncompressed bytes`)}}),w=b=>Ot(Tt(b,t.nByteLength));function m(b){const x=r>>_;return b>x}function g(b){return m(b)?c(-b):b}const p=(b,x,S)=>bt(b.slice(x,S));class y{constructor(x,S,F){this.r=x,this.s=S,this.recovery=F,this.assertValidity()}static fromCompact(x){const S=t.nByteLength;return x=$("compactSignature",x,S*2),new y(p(x,0,S),p(x,S,2*S))}static fromDER(x){const{r:S,s:F}=wt.toSig($("DER",x));return new y(S,F)}assertValidity(){if(!A(this.r))throw new Error("r must be 0 < r < CURVE.n");if(!A(this.s))throw new Error("s must be 0 < s < CURVE.n")}addRecoveryBit(x){return new y(this.r,this.s,x)}recoverPublicKey(x){const{r:S,s:F,recovery:T}=this,G=N($("msgHash",x));if(T==null||![0,1,2,3].includes(T))throw new Error("recovery id invalid");const Y=T===2||T===3?S+t.n:S;if(Y>=e.ORDER)throw new Error("recovery id 2 or 3 invalid");const q=(T&1)===0?"02":"03",ot=u.fromHex(q+w(Y)),at=l(Y),xt=c(-G*at),Ht=c(F*at),ct=u.BASE.multiplyAndAddUnsafe(ot,xt,Ht);if(!ct)throw new Error("point at infinify");return ct.assertValidity(),ct}hasHighS(){return m(this.s)}normalizeS(){return this.hasHighS()?new y(this.r,c(-this.s),this.recovery):this}toDERRawBytes(){return Dt(this.toDERHex())}toDERHex(){return wt.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return Dt(this.toCompactHex())}toCompactHex(){return w(this.r)+w(this.s)}}const C={isValidPrivateKey(b){try{return f(b),!0}catch{return!1}},normPrivateKeyToScalar:f,randomPrivateKey:()=>{const b=bs(t.n);return qn(t.randomBytes(b),t.n)},precompute(b=8,x=u.BASE){return x._setWindowSize(b),x.multiply(BigInt(3)),x}};function E(b,x=!0){return u.fromPrivateKey(b).toRawBytes(x)}function k(b){const x=b instanceof Uint8Array,S=typeof b=="string",F=(x||S)&&b.length;return x?F===n||F===i:S?F===2*n||F===2*i:b instanceof u}function P(b,x,S=!0){if(k(b))throw new Error("first arg must be private key");if(!k(x))throw new Error("second arg must be public key");return u.fromHex(x).multiply(f(b)).toRawBytes(S)}const B=t.bits2int||function(b){const x=bt(b),S=b.length*8-t.nBitLength;return S>0?x>>BigInt(S):x},N=t.bits2int_modN||function(b){return c(B(b))},I=sr(t.nBitLength);function D(b){if(typeof b!="bigint")throw new Error("bigint expected");if(!(it<=b&&b<I))throw new Error(`bigint expected < 2^${t.nBitLength}`);return Tt(b,t.nByteLength)}function R(b,x,S=O){if(["recovered","canonical"].some(At=>At in S))throw new Error("sign() legacy options not supported");const{hash:F,randomBytes:T}=t;let{lowS:G,prehash:Y,extraEntropy:q}=S;G==null&&(G=!0),b=$("msgHash",b),Y&&(b=$("prehashed msgHash",F(b)));const ot=N(b),at=f(x),xt=[D(at),D(ot)];if(q!=null){const At=q===!0?T(e.BYTES):q;xt.push($("extraEntropy",At))}const Ht=Vt(...xt),ct=ot;function xe(At){const Ct=B(At);if(!A(Ct))return;const gr=l(Ct),rt=u.BASE.multiply(Ct).toAffine(),It=c(rt.x);if(It===it)return;const _t=c(gr*c(ct+It*at));if(_t===it)return;let Ar=(rt.x===It?0:2)|Number(rt.y&_),pr=_t;return G&&m(_t)&&(pr=g(_t),Ar^=1),new y(It,pr,Ar)}return{seed:Ht,k2sig:xe}}const O={lowS:t.lowS,prehash:!1},Q={lowS:t.lowS,prehash:!1};function z(b,x,S=O){const{seed:F,k2sig:T}=R(b,x,S),G=t;return ms(G.hash.outputLen,G.nByteLength,G.hmac)(F,T)}u.BASE._setWindowSize(8);function et(b,x,S,F=Q){const T=b;if(x=$("msgHash",x),S=$("publicKey",S),"strict"in F)throw new Error("options.strict was renamed to lowS");const{lowS:G,prehash:Y}=F;let q,ot;try{if(typeof T=="string"||T instanceof Uint8Array)try{q=y.fromDER(T)}catch(rt){if(!(rt instanceof wt.Err))throw rt;q=y.fromCompact(T)}else if(typeof T=="object"&&typeof T.r=="bigint"&&typeof T.s=="bigint"){const{r:rt,s:It}=T;q=new y(rt,It)}else throw new Error("PARSE");ot=u.fromHex(S)}catch(rt){if(rt.message==="PARSE")throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(G&&q.hasHighS())return!1;Y&&(x=t.hash(x));const{r:at,s:xt}=q,Ht=N(x),ct=l(xt),xe=c(Ht*ct),At=c(at*ct),Ct=u.BASE.multiplyAndAddUnsafe(ot,xe,At)?.toAffine();return Ct?c(Ct.x)===at:!1}return{CURVE:t,getPublicKey:E,getSharedSecret:P,sign:z,verify:et,ProjectivePoint:u,Signature:y,utils:C}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function ni(s){return{hash:s,hmac:(t,...e)=>Ae(s,t,o.concatBytes(...e)),randomBytes:o.randomBytes}}function ii(s,t){const e=r=>si({...s,...ni(r)});return Object.freeze({...e(t),create:e})}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const Bs=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),Sr=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),oi=BigInt(1),He=BigInt(2),vr=(s,t)=>(s+t/He)/t;function ai(s){const t=Bs,e=BigInt(3),r=BigInt(6),n=BigInt(11),i=BigInt(22),a=BigInt(23),c=BigInt(44),l=BigInt(88),u=s*s*s%t,f=u*u*s%t,h=X(f,e,t)*f%t,A=X(h,e,t)*f%t,w=X(A,He,t)*u%t,m=X(w,n,t)*w%t,g=X(m,i,t)*m%t,p=X(g,c,t)*g%t,y=X(p,l,t)*p%t,C=X(y,c,t)*g%t,E=X(C,e,t)*f%t,k=X(E,a,t)*m%t,P=X(k,r,t)*u%t,B=X(P,He,t);if(!Qe.eql(Qe.sqr(B),s))throw new Error("Cannot find square root");return B}const Qe=Yn(Bs,void 0,void 0,{sqrt:ai}),dt=ii({a:BigInt(0),b:BigInt(7),Fp:Qe,n:Sr,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:s=>{const t=Sr,e=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),r=-oi*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),n=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),i=e,a=BigInt("0x100000000000000000000000000000000"),c=vr(i*s,t),l=vr(-r*s,t);let u=Z(s-c*e-l*n,t),f=Z(-c*r-l*i,t);const h=u>a,A=f>a;if(h&&(u=t-u),A&&(f=t-f),u>a||f>a)throw new Error("splitScalar: Endomorphism failed, k="+s);return{k1neg:h,k1:u,k2neg:A,k2:f}}}},Zt);BigInt(0);dt.ProjectivePoint;const Ft="0x0000000000000000000000000000000000000000",Rr="0x0000000000000000000000000000000000000000000000000000000000000000",Or=BigInt(0),Dr=BigInt(1),Tr=BigInt(2),Fr=BigInt(27),Lr=BigInt(28),re=BigInt(35),Pt={};function Ur(s){return o.zeroPadValue(d.toBeArray(s),32)}class H{#t;#e;#r;#s;get r(){return this.#t}set r(t){o.assertArgument(o.dataLength(t)===32,"invalid r","value",t),this.#t=o.hexlify(t)}get s(){return this.#e}set s(t){o.assertArgument(o.dataLength(t)===32,"invalid s","value",t);const e=o.hexlify(t);o.assertArgument(parseInt(e.substring(0,3))<8,"non-canonical s","value",e),this.#e=e}get v(){return this.#r}set v(t){const e=d.getNumber(t,"value");o.assertArgument(e===27||e===28,"invalid v","v",t),this.#r=e}get networkV(){return this.#s}get legacyChainId(){const t=this.networkV;return t==null?null:H.getChainId(t)}get yParity(){return this.v===27?0:1}get yParityAndS(){const t=o.getBytes(this.s);return this.yParity&&(t[0]|=128),o.hexlify(t)}get compactSerialized(){return o.concat([this.r,this.yParityAndS])}get serialized(){return o.concat([this.r,this.s,this.yParity?"0x1c":"0x1b"])}constructor(t,e,r,n){o.assertPrivate(t,Pt,"Signature"),this.#t=e,this.#e=r,this.#r=n,this.#s=null}[Symbol.for("nodejs.util.inspect.custom")](){return`Signature { r: "${this.r}", s: "${this.s}", yParity: ${this.yParity}, networkV: ${this.networkV} }`}clone(){const t=new H(Pt,this.r,this.s,this.v);return this.networkV&&(t.#s=this.networkV),t}toJSON(){const t=this.networkV;return{_type:"signature",networkV:t!=null?t.toString():null,r:this.r,s:this.s,v:this.v}}static getChainId(t){const e=d.getBigInt(t,"v");return e==Fr||e==Lr?Or:(o.assertArgument(e>=re,"invalid EIP-155 v","v",t),(e-re)/Tr)}static getChainIdV(t,e){return d.getBigInt(t)*Tr+BigInt(35+e-27)}static getNormalizedV(t){const e=d.getBigInt(t);return e===Or||e===Fr?27:e===Dr||e===Lr?28:(o.assertArgument(e>=re,"invalid v","v",t),e&Dr?27:28)}static from(t){function e(u,f){o.assertArgument(u,f,"signature",t)}if(t==null)return new H(Pt,Rr,Rr,27);if(typeof t=="string"){const u=o.getBytes(t,"signature");if(u.length===64){const f=o.hexlify(u.slice(0,32)),h=u.slice(32,64),A=h[0]&128?28:27;return h[0]&=127,new H(Pt,f,o.hexlify(h),A)}if(u.length===65){const f=o.hexlify(u.slice(0,32)),h=u.slice(32,64);e((h[0]&128)===0,"non-canonical s");const A=H.getNormalizedV(u[64]);return new H(Pt,f,o.hexlify(h),A)}e(!1,"invalid raw signature length")}if(t instanceof H)return t.clone();const r=t.r;e(r!=null,"missing r");const n=Ur(r),i=(function(u,f){if(u!=null)return Ur(u);if(f!=null){e(o.isHexString(f,32),"invalid yParityAndS");const h=o.getBytes(f);return h[0]&=127,o.hexlify(h)}e(!1,"missing s")})(t.s,t.yParityAndS);e((o.getBytes(i)[0]&128)==0,"non-canonical s");const{networkV:a,v:c}=(function(u,f,h){if(u!=null){const A=d.getBigInt(u);return{networkV:A>=re?A:void 0,v:H.getNormalizedV(A)}}if(f!=null)return e(o.isHexString(f,32),"invalid yParityAndS"),{v:o.getBytes(f)[0]&128?28:27};if(h!=null){switch(d.getNumber(h,"sig.yParity")){case 0:return{v:27};case 1:return{v:28}}e(!1,"invalid yParity")}e(!1,"missing v")})(t.v,t.yParityAndS,t.yParity),l=new H(Pt,n,i,c);return a&&(l.#s=a),e(t.yParity==null||d.getNumber(t.yParity,"sig.yParity")===l.yParity,"yParity mismatch"),e(t.yParityAndS==null||t.yParityAndS===l.yParityAndS,"yParityAndS mismatch"),l}}class st{#t;constructor(t){o.assertArgument(o.dataLength(t)===32,"invalid private key","privateKey","[REDACTED]"),this.#t=o.hexlify(t)}get privateKey(){return this.#t}get publicKey(){return st.computePublicKey(this.#t)}get compressedPublicKey(){return st.computePublicKey(this.#t,!0)}sign(t){o.assertArgument(o.dataLength(t)===32,"invalid digest length","digest",t);const e=dt.sign(o.getBytesCopy(t),o.getBytesCopy(this.#t),{lowS:!0});return H.from({r:d.toBeHex(e.r,32),s:d.toBeHex(e.s,32),v:e.recovery?28:27})}computeSharedSecret(t){const e=st.computePublicKey(t);return o.hexlify(dt.getSharedSecret(o.getBytesCopy(this.#t),o.getBytes(e),!1))}static computePublicKey(t,e){let r=o.getBytes(t,"key");if(r.length===32){const i=dt.getPublicKey(r,!!e);return o.hexlify(i)}if(r.length===64){const i=new Uint8Array(65);i[0]=4,i.set(r,1),r=i}const n=dt.ProjectivePoint.fromHex(r);return o.hexlify(n.toRawBytes(e))}static recoverPublicKey(t,e){o.assertArgument(o.dataLength(t)===32,"invalid digest length","digest",t);const r=H.from(e);let n=dt.Signature.fromCompact(o.getBytesCopy(o.concat([r.r,r.s])));n=n.addRecoveryBit(r.yParity);const i=n.recoverPublicKey(o.getBytesCopy(t));return o.assertArgument(i!=null,"invalid signautre for digest","signature",e),"0x"+i.toHex(!1)}static addPoints(t,e,r){const n=dt.ProjectivePoint.fromHex(st.computePublicKey(t).substring(2)),i=dt.ProjectivePoint.fromHex(st.computePublicKey(e).substring(2));return"0x"+n.add(i).toHex(!!r)}}function xs(s){const t=o.getAddress(s.from);let r=d.getBigInt(s.nonce,"tx.nonce").toString(16);return r==="0"?r="0x":r.length%2?r="0x0"+r:r="0x"+r,o.getAddress(o.dataSlice(o.keccak256(Et([t,r])),12))}var ci="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";const Mr=new Map([[8217,"apostrophe"],[8260,"fraction slash"],[12539,"middle dot"]]),Hr=4;function li(s){let t=0;function e(){return s[t++]<<8|s[t++]}let r=e(),n=1,i=[0,1];for(let P=1;P<r;P++)i.push(n+=e());let a=e(),c=t;t+=a;let l=0,u=0;function f(){return l==0&&(u=u<<8|s[t++],l=8),u>>--l&1}const h=31,A=2**h,w=A>>>1,m=w>>1,g=A-1;let p=0;for(let P=0;P<h;P++)p=p<<1|f();let y=[],C=0,E=A;for(;;){let P=Math.floor(((p-C+1)*n-1)/E),B=0,N=r;for(;N-B>1;){let R=B+N>>>1;P<i[R]?N=R:B=R}if(B==0)break;y.push(B);let I=C+Math.floor(E*i[B]/n),D=C+Math.floor(E*i[B+1]/n)-1;for(;((I^D)&w)==0;)p=p<<1&g|f(),I=I<<1&g,D=D<<1&g|1;for(;I&~D&m;)p=p&w|p<<1&g>>>1|f(),I=I<<1^w,D=(D^w)<<1|w|1;C=I,E=1+D-I}let k=r-4;return y.map(P=>{switch(P-k){case 3:return k+65792+(s[c++]<<16|s[c++]<<8|s[c++]);case 2:return k+256+(s[c++]<<8|s[c++]);case 1:return k+s[c++];default:return P-1}})}function ui(s){let t=0;return()=>s[t++]}function Cs(s){return ui(li(hi(s)))}function hi(s){let t=[];[..."ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"].forEach((n,i)=>t[n.charCodeAt(0)]=i);let e=s.length,r=new Uint8Array(6*e>>3);for(let n=0,i=0,a=0,c=0;n<e;n++)c=c<<6|t[s.charCodeAt(n)],a+=6,a>=8&&(r[i++]=c>>(a-=8));return r}function fi(s){return s&1?~s>>1:s>>1}function di(s,t){let e=Array(s);for(let r=0,n=0;r<s;r++)e[r]=n+=fi(t());return e}function Jt(s,t=0){let e=[];for(;;){let r=s(),n=s();if(!n)break;t+=r;for(let i=0;i<n;i++)e.push(t+i);t+=n+1}return e}function Is(s){return zt(()=>{let t=Jt(s);if(t.length)return t})}function Ps(s){let t=[];for(;;){let e=s();if(e==0)break;t.push(gi(e,s))}for(;;){let e=s()-1;if(e<0)break;t.push(Ai(e,s))}return t.flat()}function zt(s){let t=[];for(;;){let e=s(t.length);if(!e)break;t.push(e)}return t}function Ns(s,t,e){let r=Array(s).fill().map(()=>[]);for(let n=0;n<t;n++)di(s,e).forEach((i,a)=>r[a].push(i));return r}function gi(s,t){let e=1+t(),r=t(),n=zt(t);return Ns(n.length,1+s,t).flatMap((a,c)=>{let[l,...u]=a;return Array(n[c]).fill().map((f,h)=>{let A=h*r;return[l+h*e,u.map(w=>w+A)]})})}function Ai(s,t){let e=1+t();return Ns(e,1+s,t).map(n=>[n[0],n.slice(1)])}function pi(s){let t=[],e=Jt(s);return n(r([]),[]),t;function r(i){let a=s(),c=zt(()=>{let l=Jt(s).map(u=>e[u]);if(l.length)return r(l)});return{S:a,B:c,Q:i}}function n({S:i,B:a},c,l){if(!(i&4&&l===c[c.length-1])){i&2&&(l=c[c.length-1]),i&1&&t.push(c);for(let u of a)for(let f of u.Q)n(u,[...c,f],l)}}}function mi(s){return s.toString(16).toUpperCase().padStart(2,"0")}function ks(s){return`{${mi(s)}}`}function wi(s){let t=[];for(let e=0,r=s.length;e<r;){let n=s.codePointAt(e);e+=n<65536?1:2,t.push(n)}return t}function Lt(s){let e=s.length;if(e<4096)return String.fromCodePoint(...s);let r=[];for(let n=0;n<e;)r.push(String.fromCodePoint(...s.slice(n,n+=4096)));return r.join("")}function yi(s,t){let e=s.length,r=e-t.length;for(let n=0;r==0&&n<e;n++)r=s[n]-t[n];return r}var bi="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";const Kt=44032,le=4352,ue=4449,he=4519,Ss=19,vs=21,Ut=28,fe=vs*Ut,Ei=Ss*fe,Bi=Kt+Ei,xi=le+Ss,Ci=ue+vs,Ii=he+Ut;function Qt(s){return s>>24&255}function Rs(s){return s&16777215}let Ge,Qr,Ve,ie;function Pi(){let s=Cs(bi);Ge=new Map(Is(s).flatMap((t,e)=>t.map(r=>[r,e+1<<24]))),Qr=new Set(Jt(s)),Ve=new Map,ie=new Map;for(let[t,e]of Ps(s)){if(!Qr.has(t)&&e.length==2){let[r,n]=e,i=ie.get(r);i||(i=new Map,ie.set(r,i)),i.set(n,t)}Ve.set(t,e.reverse())}}function Os(s){return s>=Kt&&s<Bi}function Ni(s,t){if(s>=le&&s<xi&&t>=ue&&t<Ci)return Kt+(s-le)*fe+(t-ue)*Ut;if(Os(s)&&t>he&&t<Ii&&(s-Kt)%Ut==0)return s+(t-he);{let e=ie.get(s);return e&&(e=e.get(t),e)?e:-1}}function Ds(s){Ge||Pi();let t=[],e=[],r=!1;function n(i){let a=Ge.get(i);a&&(r=!0,i|=a),t.push(i)}for(let i of s)for(;;){if(i<128)t.push(i);else if(Os(i)){let a=i-Kt,c=a/fe|0,l=a%fe/Ut|0,u=a%Ut;n(le+c),n(ue+l),u>0&&n(he+u)}else{let a=Ve.get(i);a?e.push(...a):n(i)}if(!e.length)break;i=e.pop()}if(r&&t.length>1){let i=Qt(t[0]);for(let a=1;a<t.length;a++){let c=Qt(t[a]);if(c==0||i<=c){i=c;continue}let l=a-1;for(;;){let u=t[l+1];if(t[l+1]=t[l],t[l]=u,!l||(i=Qt(t[--l]),i<=c))break}i=Qt(t[a])}}return t}function ki(s){let t=[],e=[],r=-1,n=0;for(let i of s){let a=Qt(i),c=Rs(i);if(r==-1)a==0?r=c:t.push(c);else if(n>0&&n>=a)a==0?(t.push(r,...e),e.length=0,r=c):e.push(c),n=a;else{let l=Ni(r,c);l>=0?r=l:n==0&&a==0?(t.push(r),r=c):(e.push(c),n=a)}}return r>=0&&t.push(r,...e),t}function Ts(s){return Ds(s).map(Rs)}function Si(s){return ki(Ds(s))}const Gr=45,Fs=".",Ls=65039,Us=1,de=s=>Array.from(s);function jt(s,t){return s.P.has(t)||s.Q.has(t)}class vi extends Array{get is_emoji(){return!0}}let Je,Ms,yt,ze,Hs,vt,Ne,St,pt,Vr,Ke;function nr(){if(Je)return;let s=Cs(ci);const t=()=>Jt(s),e=()=>new Set(t()),r=(f,h)=>h.forEach(A=>f.add(A));Je=new Map(Ps(s)),Ms=e(),yt=t(),ze=new Set(t().map(f=>yt[f])),yt=new Set(yt),Hs=e(),e();let n=Is(s),i=s();const a=()=>{let f=new Set;return t().forEach(h=>r(f,n[h])),r(f,t()),f};vt=zt(f=>{let h=zt(s).map(A=>A+96);if(h.length){let A=f>=i;h[0]-=32,h=Lt(h),A&&(h=`Restricted[${h}]`);let w=a(),m=a(),g=!s();return{N:h,P:w,Q:m,M:g,R:A}}}),Ne=e(),St=new Map;let c=t().concat(de(Ne)).sort((f,h)=>f-h);c.forEach((f,h)=>{let A=s(),w=c[h]=A?c[h-A]:{V:[],M:new Map};w.V.push(f),Ne.has(f)||St.set(f,w)});for(let{V:f,M:h}of new Set(St.values())){let A=[];for(let m of f){let g=vt.filter(y=>jt(y,m)),p=A.find(({G:y})=>g.some(C=>y.has(C)));p||(p={G:new Set,V:[]},A.push(p)),p.V.push(m),r(p.G,g)}let w=A.flatMap(m=>de(m.G));for(let{G:m,V:g}of A){let p=new Set(w.filter(y=>!m.has(y)));for(let y of g)h.set(y,p)}}pt=new Set;let l=new Set;const u=f=>pt.has(f)?l.add(f):pt.add(f);for(let f of vt){for(let h of f.P)u(h);for(let h of f.Q)u(h)}for(let f of pt)!St.has(f)&&!l.has(f)&&St.set(f,Us);r(pt,Ts(pt)),Vr=pi(s).map(f=>vi.from(f)).sort(yi),Ke=new Map;for(let f of Vr){let h=[Ke];for(let A of f){let w=h.map(m=>{let g=m.get(A);return g||(g=new Map,m.set(A,g)),g});A===Ls?h.push(...w):h=w}for(let A of h)A.V=f}}function ir(s){return(Qs(s)?"":`${or(we([s]))} `)+ks(s)}function or(s){return`"${s}"`}function Ri(s){if(s.length>=4&&s[2]==Gr&&s[3]==Gr)throw new Error(`invalid label extension: "${Lt(s.slice(0,4))}"`)}function Oi(s){for(let e=s.lastIndexOf(95);e>0;)if(s[--e]!==95)throw new Error("underscore allowed only at start")}function Di(s){let t=s[0],e=Mr.get(t);if(e)throw Gt(`leading ${e}`);let r=s.length,n=-1;for(let i=1;i<r;i++){t=s[i];let a=Mr.get(t);if(a){if(n==i)throw Gt(`${e} + ${a}`);n=i+1,e=a}}if(n==r)throw Gt(`trailing ${e}`)}function we(s,t=1/0,e=ks){let r=[];Ti(s[0])&&r.push("◌"),s.length>t&&(t>>=1,s=[...s.slice(0,t),8230,...s.slice(-t)]);let n=0,i=s.length;for(let a=0;a<i;a++){let c=s[a];Qs(c)&&(r.push(Lt(s.slice(n,a))),r.push(e(c)),n=a+1)}return r.push(Lt(s.slice(n,i))),r.join("")}function Ti(s){return nr(),yt.has(s)}function Qs(s){return nr(),Hs.has(s)}function Fi(s){return Hi(Li(s,Si,Vi))}function Li(s,t,e){if(!s)return[];nr();let r=0;return s.split(Fs).map(n=>{let i=wi(n),a={input:i,offset:r};r+=i.length+1;try{let c=a.tokens=Gi(i,t,e),l=c.length,u;if(!l)throw new Error("empty label");let f=a.output=c.flat();if(Oi(f),!(a.emoji=l>1||c[0].is_emoji)&&f.every(A=>A<128))Ri(f),u="ASCII";else{let A=c.flatMap(w=>w.is_emoji?[]:w);if(!A.length)u="Emoji";else{if(yt.has(f[0]))throw Gt("leading combining mark");for(let g=1;g<l;g++){let p=c[g];if(!p.is_emoji&&yt.has(p[0]))throw Gt(`emoji + combining mark: "${Lt(c[g-1])} + ${we([p[0]])}"`)}Di(f);let w=de(new Set(A)),[m]=Mi(w);Qi(m,A),Ui(m,w),u=m.N}}a.type=u}catch(c){a.error=c}return a})}function Ui(s,t){let e,r=[];for(let n of t){let i=St.get(n);if(i===Us)return;if(i){let a=i.M.get(n);if(e=e?e.filter(c=>a.has(c)):de(a),!e.length)return}else r.push(n)}if(e){for(let n of e)if(r.every(i=>jt(n,i)))throw new Error(`whole-script confusable: ${s.N}/${n.N}`)}}function Mi(s){let t=vt;for(let e of s){let r=t.filter(n=>jt(n,e));if(!r.length)throw vt.some(n=>jt(n,e))?Vs(t[0],e):Gs(e);if(t=r,r.length==1)break}return t}function Hi(s){return s.map(({input:t,error:e,output:r})=>{if(e){let n=e.message;throw new Error(s.length==1?n:`Invalid label ${or(we(t,63))}: ${n}`)}return Lt(r)}).join(Fs)}function Gs(s){return new Error(`disallowed character: ${ir(s)}`)}function Vs(s,t){let e=ir(t),r=vt.find(n=>n.P.has(t));return r&&(e=`${r.N} ${e}`),new Error(`illegal mixture: ${s.N} + ${e}`)}function Gt(s){return new Error(`illegal placement: ${s}`)}function Qi(s,t){for(let e of t)if(!jt(s,e))throw Vs(s,e);if(s.M){let e=Ts(t);for(let r=1,n=e.length;r<n;r++)if(ze.has(e[r])){let i=r+1;for(let a;i<n&&ze.has(a=e[i]);i++)for(let c=r;c<i;c++)if(e[c]==a)throw new Error(`duplicate non-spacing marks: ${ir(a)}`);if(i-r>Hr)throw new Error(`excessive non-spacing marks: ${or(we(e.slice(r-1,i)))} (${i-r}/${Hr})`);r=i}}}function Gi(s,t,e){let r=[],n=[];for(s=s.slice().reverse();s.length;){let i=Ji(s);if(i)n.length&&(r.push(t(n)),n=[]),r.push(e(i));else{let a=s.pop();if(pt.has(a))n.push(a);else{let c=Je.get(a);if(c)n.push(...c);else if(!Ms.has(a))throw Gs(a)}}}return n.length&&r.push(t(n)),r}function Vi(s){return s.filter(t=>t!=Ls)}function Ji(s,t){let e=Ke,r,n=s.length;for(;n&&(e=e.get(s[--n]),!!e);){let{V:i}=e;i&&(r=i,s.length=n)}return r}const Js=new Uint8Array(32);Js.fill(0);function Jr(s){return o.assertArgument(s.length!==0,"invalid ENS name; empty component","comp",s),s}function zs(s){const t=d.toUtf8Bytes(zi(s)),e=[];if(s.length===0)return e;let r=0;for(let n=0;n<t.length;n++)t[n]===46&&(e.push(Jr(t.slice(r,n))),r=n+1);return o.assertArgument(r<t.length,"invalid ENS name; empty component","name",s),e.push(Jr(t.slice(r))),e}function zi(s){try{if(s.length===0)throw new Error("empty label");return Fi(s)}catch(t){o.assertArgument(!1,`invalid ENS name (${t.message})`,"name",s)}}function je(s){o.assertArgument(typeof s=="string","invalid ENS name; not a string","name",s),o.assertArgument(s.length,"invalid ENS name (empty label)","name",s);let t=Js;const e=zs(s);for(;e.length;)t=o.keccak256(o.concat([t,o.keccak256(e.pop())]));return o.hexlify(t)}function Ki(s,t){const e=t;return o.assertArgument(e<=255,"DNS encoded label cannot exceed 255","length",e),o.hexlify(o.concat(zs(s).map(r=>{o.assertArgument(r.length<=e,`label ${JSON.stringify(s)} exceeds ${e} bytes`,"name",s);const n=new Uint8Array(r.length+1);return n.set(r,1),n[0]=n.length-1,n})))+"00"}function Ks(s){let t;return typeof s=="string"?t=st.computePublicKey(s,!1):t=s.publicKey,o.getAddress(o.keccak256("0x"+t.substring(4)).substring(26))}function ji(s,t){return Ks(st.recoverPublicKey(s,t))}const V=BigInt(0),Zi=BigInt(2),Yi=BigInt(27),qi=BigInt(28),Wi=BigInt(35),Xi=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),ke=4096*32;function zr(s,t){let e=s.toString(16);for(;e.length<2;)e="0"+e;return e+=Bt(t).substring(4),"0x"+e}function ye(s){return s==="0x"?null:o.getAddress(s)}function ar(s,t){try{return d.accessListify(s)}catch(e){o.assertArgument(!1,e.message,t,s)}}function qt(s,t){return s==="0x"?0:d.getNumber(s,t)}function M(s,t){if(s==="0x")return V;const e=d.getBigInt(s,t);return o.assertArgument(e<=Xi,"value exceeds uint size",t,e),e}function L(s,t){const e=d.getBigInt(s,"value"),r=d.toBeArray(e);return o.assertArgument(r.length<=32,"value too large",`tx.${t}`,e),r}function cr(s){return d.accessListify(s).map(t=>[t.address,t.storageKeys])}function _i(s,t){o.assertArgument(Array.isArray(s),`invalid ${t}`,"value",s);for(let e=0;e<s.length;e++)o.assertArgument(o.isHexString(s[e],32),"invalid ${ param } hash",`value[${e}]`,s[e]);return s}function $i(s){const t=ge(s);o.assertArgument(Array.isArray(t)&&(t.length===9||t.length===6),"invalid field count for legacy transaction","data",s);const e={type:0,nonce:qt(t[0],"nonce"),gasPrice:M(t[1],"gasPrice"),gasLimit:M(t[2],"gasLimit"),to:ye(t[3]),value:M(t[4],"value"),data:o.hexlify(t[5]),chainId:V};if(t.length===6)return e;const r=M(t[6],"v"),n=M(t[7],"r"),i=M(t[8],"s");if(n===V&&i===V)e.chainId=r;else{let a=(r-Wi)/Zi;a<V&&(a=V),e.chainId=a,o.assertArgument(a!==V||r===Yi||r===qi,"non-canonical legacy v","v",t[6]),e.signature=H.from({r:o.zeroPadValue(t[7],32),s:o.zeroPadValue(t[8],32),v:r})}return e}function to(s,t){const e=[L(s.nonce,"nonce"),L(s.gasPrice||0,"gasPrice"),L(s.gasLimit,"gasLimit"),s.to||"0x",L(s.value,"value"),s.data];let r=V;if(s.chainId!=V)r=d.getBigInt(s.chainId,"tx.chainId"),o.assertArgument(!t||t.networkV==null||t.legacyChainId===r,"tx.chainId/sig.v mismatch","sig",t);else if(s.signature){const i=s.signature.legacyChainId;i!=null&&(r=i)}if(!t)return r!==V&&(e.push(d.toBeArray(r)),e.push("0x"),e.push("0x")),Et(e);let n=BigInt(27+t.yParity);return r!==V?n=H.getChainIdV(r,t.v):BigInt(t.v)!==n&&o.assertArgument(!1,"tx.chainId/sig.v mismatch","sig",t),e.push(d.toBeArray(n)),e.push(d.toBeArray(t.r)),e.push(d.toBeArray(t.s)),Et(e)}function lr(s,t){let e;try{if(e=qt(t[0],"yParity"),e!==0&&e!==1)throw new Error("bad yParity")}catch{o.assertArgument(!1,"invalid yParity","yParity",t[0])}const r=o.zeroPadValue(t[1],32),n=o.zeroPadValue(t[2],32),i=H.from({r,s:n,yParity:e});s.signature=i}function eo(s){const t=ge(o.getBytes(s).slice(1));o.assertArgument(Array.isArray(t)&&(t.length===9||t.length===12),"invalid field count for transaction type: 2","data",o.hexlify(s));const e={type:2,chainId:M(t[0],"chainId"),nonce:qt(t[1],"nonce"),maxPriorityFeePerGas:M(t[2],"maxPriorityFeePerGas"),maxFeePerGas:M(t[3],"maxFeePerGas"),gasPrice:null,gasLimit:M(t[4],"gasLimit"),to:ye(t[5]),value:M(t[6],"value"),data:o.hexlify(t[7]),accessList:ar(t[8],"accessList")};return t.length===9||lr(e,t.slice(9)),e}function ro(s,t){const e=[L(s.chainId,"chainId"),L(s.nonce,"nonce"),L(s.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),L(s.maxFeePerGas||0,"maxFeePerGas"),L(s.gasLimit,"gasLimit"),s.to||"0x",L(s.value,"value"),s.data,cr(s.accessList||[])];return t&&(e.push(L(t.yParity,"yParity")),e.push(d.toBeArray(t.r)),e.push(d.toBeArray(t.s))),o.concat(["0x02",Et(e)])}function so(s){const t=ge(o.getBytes(s).slice(1));o.assertArgument(Array.isArray(t)&&(t.length===8||t.length===11),"invalid field count for transaction type: 1","data",o.hexlify(s));const e={type:1,chainId:M(t[0],"chainId"),nonce:qt(t[1],"nonce"),gasPrice:M(t[2],"gasPrice"),gasLimit:M(t[3],"gasLimit"),to:ye(t[4]),value:M(t[5],"value"),data:o.hexlify(t[6]),accessList:ar(t[7],"accessList")};return t.length===8||lr(e,t.slice(8)),e}function no(s,t){const e=[L(s.chainId,"chainId"),L(s.nonce,"nonce"),L(s.gasPrice||0,"gasPrice"),L(s.gasLimit,"gasLimit"),s.to||"0x",L(s.value,"value"),s.data,cr(s.accessList||[])];return t&&(e.push(L(t.yParity,"recoveryParam")),e.push(d.toBeArray(t.r)),e.push(d.toBeArray(t.s))),o.concat(["0x01",Et(e)])}function io(s){let t=ge(o.getBytes(s).slice(1)),e="3",r=null;if(t.length===4&&Array.isArray(t[0])){e="3 (network format)";const i=t[1],a=t[2],c=t[3];o.assertArgument(Array.isArray(i),"invalid network format: blobs not an array","fields[1]",i),o.assertArgument(Array.isArray(a),"invalid network format: commitments not an array","fields[2]",a),o.assertArgument(Array.isArray(c),"invalid network format: proofs not an array","fields[3]",c),o.assertArgument(i.length===a.length,"invalid network format: blobs/commitments length mismatch","fields",t),o.assertArgument(i.length===c.length,"invalid network format: blobs/proofs length mismatch","fields",t),r=[];for(let l=0;l<t[1].length;l++)r.push({data:i[l],commitment:a[l],proof:c[l]});t=t[0]}o.assertArgument(Array.isArray(t)&&(t.length===11||t.length===14),`invalid field count for transaction type: ${e}`,"data",o.hexlify(s));const n={type:3,chainId:M(t[0],"chainId"),nonce:qt(t[1],"nonce"),maxPriorityFeePerGas:M(t[2],"maxPriorityFeePerGas"),maxFeePerGas:M(t[3],"maxFeePerGas"),gasPrice:null,gasLimit:M(t[4],"gasLimit"),to:ye(t[5]),value:M(t[6],"value"),data:o.hexlify(t[7]),accessList:ar(t[8],"accessList"),maxFeePerBlobGas:M(t[9],"maxFeePerBlobGas"),blobVersionedHashes:t[10]};r&&(n.blobs=r),o.assertArgument(n.to!=null,`invalid address for transaction type: ${e}`,"data",s),o.assertArgument(Array.isArray(n.blobVersionedHashes),"invalid blobVersionedHashes: must be an array","data",s);for(let i=0;i<n.blobVersionedHashes.length;i++)o.assertArgument(o.isHexString(n.blobVersionedHashes[i],32),`invalid blobVersionedHash at index ${i}: must be length 32`,"data",s);return t.length===11||lr(n,t.slice(11)),n}function oo(s,t,e){const r=[L(s.chainId,"chainId"),L(s.nonce,"nonce"),L(s.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),L(s.maxFeePerGas||0,"maxFeePerGas"),L(s.gasLimit,"gasLimit"),s.to||Ft,L(s.value,"value"),s.data,cr(s.accessList||[]),L(s.maxFeePerBlobGas||0,"maxFeePerBlobGas"),_i(s.blobVersionedHashes||[],"blobVersionedHashes")];return t&&(r.push(L(t.yParity,"yParity")),r.push(d.toBeArray(t.r)),r.push(d.toBeArray(t.s)),e)?o.concat(["0x03",Et([r,e.map(n=>n.data),e.map(n=>n.commitment),e.map(n=>n.proof)])]):o.concat(["0x03",Et(r)])}class tt{#t;#e;#r;#s;#n;#o;#i;#a;#d;#l;#g;#A;#c;#u;#h;#f;get type(){return this.#t}set type(t){switch(t){case null:this.#t=null;break;case 0:case"legacy":this.#t=0;break;case 1:case"berlin":case"eip-2930":this.#t=1;break;case 2:case"london":case"eip-1559":this.#t=2;break;case 3:case"cancun":case"eip-4844":this.#t=3;break;default:o.assertArgument(!1,"unsupported transaction type","type",t)}}get typeName(){switch(this.type){case 0:return"legacy";case 1:return"eip-2930";case 2:return"eip-1559";case 3:return"eip-4844"}return null}get to(){const t=this.#e;return t==null&&this.type===3?Ft:t}set to(t){this.#e=t==null?null:o.getAddress(t)}get nonce(){return this.#s}set nonce(t){this.#s=d.getNumber(t,"value")}get gasLimit(){return this.#n}set gasLimit(t){this.#n=d.getBigInt(t)}get gasPrice(){const t=this.#o;return t==null&&(this.type===0||this.type===1)?V:t}set gasPrice(t){this.#o=t==null?null:d.getBigInt(t,"gasPrice")}get maxPriorityFeePerGas(){const t=this.#i;return t??(this.type===2||this.type===3?V:null)}set maxPriorityFeePerGas(t){this.#i=t==null?null:d.getBigInt(t,"maxPriorityFeePerGas")}get maxFeePerGas(){const t=this.#a;return t??(this.type===2||this.type===3?V:null)}set maxFeePerGas(t){this.#a=t==null?null:d.getBigInt(t,"maxFeePerGas")}get data(){return this.#r}set data(t){this.#r=o.hexlify(t)}get value(){return this.#d}set value(t){this.#d=d.getBigInt(t,"value")}get chainId(){return this.#l}set chainId(t){this.#l=d.getBigInt(t)}get signature(){return this.#g||null}set signature(t){this.#g=t==null?null:H.from(t)}get accessList(){const t=this.#A||null;return t??(this.type===1||this.type===2||this.type===3?[]:null)}set accessList(t){this.#A=t==null?null:d.accessListify(t)}get maxFeePerBlobGas(){const t=this.#c;return t==null&&this.type===3?V:t}set maxFeePerBlobGas(t){this.#c=t==null?null:d.getBigInt(t,"maxFeePerBlobGas")}get blobVersionedHashes(){let t=this.#u;return t==null&&this.type===3?[]:t}set blobVersionedHashes(t){if(t!=null){o.assertArgument(Array.isArray(t),"blobVersionedHashes must be an Array","value",t),t=t.slice();for(let e=0;e<t.length;e++)o.assertArgument(o.isHexString(t[e],32),"invalid blobVersionedHash",`value[${e}]`,t[e])}this.#u=t}get blobs(){return this.#f==null?null:this.#f.map(t=>Object.assign({},t))}set blobs(t){if(t==null){this.#f=null;return}const e=[],r=[];for(let n=0;n<t.length;n++){const i=t[n];if(o.isBytesLike(i)){o.assert(this.#h,"adding a raw blob requires a KZG library","UNSUPPORTED_OPERATION",{operation:"set blobs()"});let a=o.getBytes(i);if(o.assertArgument(a.length<=ke,"blob is too large",`blobs[${n}]`,i),a.length!==ke){const u=new Uint8Array(ke);u.set(a),a=u}const c=this.#h.blobToKzgCommitment(a),l=o.hexlify(this.#h.computeBlobKzgProof(a,c));e.push({data:o.hexlify(a),commitment:o.hexlify(c),proof:l}),r.push(zr(1,c))}else{const a=o.hexlify(i.commitment);e.push({data:o.hexlify(i.data),commitment:a,proof:o.hexlify(i.proof)}),r.push(zr(1,a))}}this.#f=e,this.#u=r}get kzg(){return this.#h}set kzg(t){this.#h=t}constructor(){this.#t=null,this.#e=null,this.#s=0,this.#n=V,this.#o=null,this.#i=null,this.#a=null,this.#r="0x",this.#d=V,this.#l=V,this.#g=null,this.#A=null,this.#c=null,this.#u=null,this.#f=null,this.#h=null}get hash(){return this.signature==null?null:o.keccak256(this.#p(!0,!1))}get unsignedHash(){return o.keccak256(this.unsignedSerialized)}get from(){return this.signature==null?null:ji(this.unsignedHash,this.signature)}get fromPublicKey(){return this.signature==null?null:st.recoverPublicKey(this.unsignedHash,this.signature)}isSigned(){return this.signature!=null}#p(t,e){o.assert(!t||this.signature!=null,"cannot serialize unsigned transaction; maybe you meant .unsignedSerialized","UNSUPPORTED_OPERATION",{operation:".serialized"});const r=t?this.signature:null;switch(this.inferType()){case 0:return to(this,r);case 1:return no(this,r);case 2:return ro(this,r);case 3:return oo(this,r,e?this.blobs:null)}o.assert(!1,"unsupported transaction type","UNSUPPORTED_OPERATION",{operation:".serialized"})}get serialized(){return this.#p(!0,!0)}get unsignedSerialized(){return this.#p(!1,!1)}inferType(){const t=this.inferTypes();return t.indexOf(2)>=0?2:t.pop()}inferTypes(){const t=this.gasPrice!=null,e=this.maxFeePerGas!=null||this.maxPriorityFeePerGas!=null,r=this.accessList!=null,n=this.#c!=null||this.#u;this.maxFeePerGas!=null&&this.maxPriorityFeePerGas!=null&&o.assert(this.maxFeePerGas>=this.maxPriorityFeePerGas,"priorityFee cannot be more than maxFee","BAD_DATA",{value:this}),o.assert(!e||this.type!==0&&this.type!==1,"transaction type cannot have maxFeePerGas or maxPriorityFeePerGas","BAD_DATA",{value:this}),o.assert(this.type!==0||!r,"legacy transaction cannot have accessList","BAD_DATA",{value:this});const i=[];return this.type!=null?i.push(this.type):e?i.push(2):t?(i.push(1),r||i.push(0)):r?(i.push(1),i.push(2)):(n&&this.to||(i.push(0),i.push(1),i.push(2)),i.push(3)),i.sort(),i}isLegacy(){return this.type===0}isBerlin(){return this.type===1}isLondon(){return this.type===2}isCancun(){return this.type===3}clone(){return tt.from(this)}toJSON(){const t=e=>e==null?null:e.toString();return{type:this.type,to:this.to,data:this.data,nonce:this.nonce,gasLimit:t(this.gasLimit),gasPrice:t(this.gasPrice),maxPriorityFeePerGas:t(this.maxPriorityFeePerGas),maxFeePerGas:t(this.maxFeePerGas),value:t(this.value),chainId:t(this.chainId),sig:this.signature?this.signature.toJSON():null,accessList:this.accessList}}static from(t){if(t==null)return new tt;if(typeof t=="string"){const r=o.getBytes(t);if(r[0]>=127)return tt.from($i(r));switch(r[0]){case 1:return tt.from(so(r));case 2:return tt.from(eo(r));case 3:return tt.from(io(r))}o.assert(!1,"unsupported transaction type","UNSUPPORTED_OPERATION",{operation:"from"})}const e=new tt;return t.type!=null&&(e.type=t.type),t.to!=null&&(e.to=t.to),t.nonce!=null&&(e.nonce=t.nonce),t.gasLimit!=null&&(e.gasLimit=t.gasLimit),t.gasPrice!=null&&(e.gasPrice=t.gasPrice),t.maxPriorityFeePerGas!=null&&(e.maxPriorityFeePerGas=t.maxPriorityFeePerGas),t.maxFeePerGas!=null&&(e.maxFeePerGas=t.maxFeePerGas),t.maxFeePerBlobGas!=null&&(e.maxFeePerBlobGas=t.maxFeePerBlobGas),t.data!=null&&(e.data=t.data),t.value!=null&&(e.value=t.value),t.chainId!=null&&(e.chainId=t.chainId),t.signature!=null&&(e.signature=H.from(t.signature)),t.accessList!=null&&(e.accessList=t.accessList),t.blobVersionedHashes!=null&&(e.blobVersionedHashes=t.blobVersionedHashes),t.kzg!=null&&(e.kzg=t.kzg),t.blobs!=null&&(e.blobs=t.blobs),t.hash!=null&&(o.assertArgument(e.isSigned(),"unsigned transaction cannot define '.hash'","tx",t),o.assertArgument(e.hash===t.hash,"hash mismatch","tx",t)),t.from!=null&&(o.assertArgument(e.isSigned(),"unsigned transaction cannot define '.from'","tx",t),o.assertArgument(e.from.toLowerCase()===(t.from||"").toLowerCase(),"from mismatch","tx",t)),e}}const js=new Uint8Array(32);js.fill(0);const ao=BigInt(-1),Zs=BigInt(0),Ys=BigInt(1),co=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");function lo(s){const t=o.getBytes(s),e=t.length%32;return e?o.concat([t,js.slice(e)]):o.hexlify(t)}const uo=d.toBeHex(Ys,32),ho=d.toBeHex(Zs,32),Kr={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"},Se=["name","version","chainId","verifyingContract","salt"];function jr(s){return function(t){return o.assertArgument(typeof t=="string",`invalid domain value for ${JSON.stringify(s)}`,`domain.${s}`,t),t}}const fo={name:jr("name"),version:jr("version"),chainId:function(s){const t=d.getBigInt(s,"domain.chainId");return o.assertArgument(t>=0,"invalid chain ID","domain.chainId",s),Number.isSafeInteger(t)?Number(t):d.toQuantity(t)},verifyingContract:function(s){try{return o.getAddress(s).toLowerCase()}catch{}o.assertArgument(!1,'invalid domain value "verifyingContract"',"domain.verifyingContract",s)},salt:function(s){const t=o.getBytes(s,"domain.salt");return o.assertArgument(t.length===32,'invalid domain value "salt"',"domain.salt",s),o.hexlify(t)}};function ve(s){{const t=s.match(/^(u?)int(\d+)$/);if(t){const e=t[1]==="",r=parseInt(t[2]);o.assertArgument(r%8===0&&r!==0&&r<=256&&t[2]===String(r),"invalid numeric width","type",s);const n=d.mask(co,e?r-1:r),i=e?(n+Ys)*ao:Zs;return function(a){const c=d.getBigInt(a,"value");return o.assertArgument(c>=i&&c<=n,`value out-of-bounds for ${s}`,"value",c),d.toBeHex(e?d.toTwos(c,256):c,32)}}}{const t=s.match(/^bytes(\d+)$/);if(t){const e=parseInt(t[1]);return o.assertArgument(e!==0&&e<=32&&t[1]===String(e),"invalid bytes width","type",s),function(r){const n=o.getBytes(r);return o.assertArgument(n.length===e,`invalid length for ${s}`,"value",r),lo(r)}}}switch(s){case"address":return function(t){return o.zeroPadValue(o.getAddress(t),32)};case"bool":return function(t){return t?uo:ho};case"bytes":return function(t){return o.keccak256(t)};case"string":return function(t){return d.id(t)}}return null}function Zr(s,t){return`${s}(${t.map(({name:e,type:r})=>r+" "+e).join(",")})`}function se(s){const t=s.match(/^([^\x5b]*)((\x5b\d*\x5d)*)(\x5b(\d*)\x5d)$/);return t?{base:t[1],index:t[2]+t[4],array:{base:t[1],prefix:t[1]+t[2],count:t[5]?parseInt(t[5]):-1}}:{base:s}}class j{primaryType;#t;get types(){return JSON.parse(this.#t)}#e;#r;constructor(t){this.#e=new Map,this.#r=new Map;const e=new Map,r=new Map,n=new Map,i={};Object.keys(t).forEach(l=>{i[l]=t[l].map(({name:u,type:f})=>{let{base:h,index:A}=se(f);return h==="int"&&!t.int&&(h="int256"),h==="uint"&&!t.uint&&(h="uint256"),{name:u,type:h+(A||"")}}),e.set(l,new Set),r.set(l,[]),n.set(l,new Set)}),this.#t=JSON.stringify(i);for(const l in i){const u=new Set;for(const f of i[l]){o.assertArgument(!u.has(f.name),`duplicate variable name ${JSON.stringify(f.name)} in ${JSON.stringify(l)}`,"types",t),u.add(f.name);const h=se(f.type).base;o.assertArgument(h!==l,`circular type reference to ${JSON.stringify(h)}`,"types",t),!ve(h)&&(o.assertArgument(r.has(h),`unknown type ${JSON.stringify(h)}`,"types",t),r.get(h).push(l),e.get(l).add(h))}}const a=Array.from(r.keys()).filter(l=>r.get(l).length===0);o.assertArgument(a.length!==0,"missing primary type","types",t),o.assertArgument(a.length===1,`ambiguous primary types or unused types: ${a.map(l=>JSON.stringify(l)).join(", ")}`,"types",t),o.defineProperties(this,{primaryType:a[0]});function c(l,u){o.assertArgument(!u.has(l),`circular type reference to ${JSON.stringify(l)}`,"types",t),u.add(l);for(const f of e.get(l))if(r.has(f)){c(f,u);for(const h of u)n.get(h).add(f)}u.delete(l)}c(this.primaryType,new Set);for(const[l,u]of n){const f=Array.from(u);f.sort(),this.#e.set(l,Zr(l,i[l])+f.map(h=>Zr(h,i[h])).join(""))}}getEncoder(t){let e=this.#r.get(t);return e||(e=this.#s(t),this.#r.set(t,e)),e}#s(t){{const n=ve(t);if(n)return n}const e=se(t).array;if(e){const n=e.prefix,i=this.getEncoder(n);return a=>{o.assertArgument(e.count===-1||e.count===a.length,`array length mismatch; expected length ${e.count}`,"value",a);let c=a.map(i);return this.#e.has(n)&&(c=c.map(o.keccak256)),o.keccak256(o.concat(c))}}const r=this.types[t];if(r){const n=d.id(this.#e.get(t));return i=>{const a=r.map(({name:c,type:l})=>{const u=this.getEncoder(l)(i[c]);return this.#e.has(l)?o.keccak256(u):u});return a.unshift(n),o.concat(a)}}o.assertArgument(!1,`unknown type: ${t}`,"type",t)}encodeType(t){const e=this.#e.get(t);return o.assertArgument(e,`unknown type: ${JSON.stringify(t)}`,"name",t),e}encodeData(t,e){return this.getEncoder(t)(e)}hashStruct(t,e){return o.keccak256(this.encodeData(t,e))}encode(t){return this.encodeData(this.primaryType,t)}hash(t){return this.hashStruct(this.primaryType,t)}_visit(t,e,r){if(ve(t))return r(t,e);const n=se(t).array;if(n)return o.assertArgument(n.count===-1||n.count===e.length,`array length mismatch; expected length ${n.count}`,"value",e),e.map(a=>this._visit(n.prefix,a,r));const i=this.types[t];if(i)return i.reduce((a,{name:c,type:l})=>(a[c]=this._visit(l,e[c],r),a),{});o.assertArgument(!1,`unknown type: ${t}`,"type",t)}visit(t,e){return this._visit(this.primaryType,t,e)}static from(t){return new j(t)}static getPrimaryType(t){return j.from(t).primaryType}static hashStruct(t,e,r){return j.from(e).hashStruct(t,r)}static hashDomain(t){const e=[];for(const r in t){if(t[r]==null)continue;const n=Kr[r];o.assertArgument(n,`invalid typed-data domain key: ${JSON.stringify(r)}`,"domain",t),e.push({name:r,type:n})}return e.sort((r,n)=>Se.indexOf(r.name)-Se.indexOf(n.name)),j.hashStruct("EIP712Domain",{EIP712Domain:e},t)}static encode(t,e,r){return o.concat(["0x1901",j.hashDomain(t),j.from(e).hash(r)])}static hash(t,e,r){return o.keccak256(j.encode(t,e,r))}static async resolveNames(t,e,r,n){t=Object.assign({},t);for(const c in t)t[c]==null&&delete t[c];const i={};t.verifyingContract&&!o.isHexString(t.verifyingContract,20)&&(i[t.verifyingContract]="0x");const a=j.from(e);a.visit(r,(c,l)=>(c==="address"&&!o.isHexString(l,20)&&(i[l]="0x"),l));for(const c in i)i[c]=await n(c);return t.verifyingContract&&i[t.verifyingContract]&&(t.verifyingContract=i[t.verifyingContract]),r=a.visit(r,(c,l)=>c==="address"&&i[l]?i[l]:l),{domain:t,value:r}}static getPayload(t,e,r){j.hashDomain(t);const n={},i=[];Se.forEach(l=>{const u=t[l];u!=null&&(n[l]=fo[l](u),i.push({name:l,type:Kr[l]}))});const a=j.from(e);e=a.types;const c=Object.assign({},e);return o.assertArgument(c.EIP712Domain==null,"types must not contain EIP712Domain type","types.EIP712Domain",e),c.EIP712Domain=i,a.encode(r),{types:c,domain:n,primaryType:a.primaryType,message:a.visit(r,(l,u)=>{if(l.match(/^bytes(\d*)/))return o.hexlify(o.getBytes(u));if(l.match(/^u?int/))return d.getBigInt(u).toString();switch(l){case"address":return u.toLowerCase();case"bool":return!!u;case"string":return o.assertArgument(typeof u=="string","invalid string","value",u),u}o.assertArgument(!1,"unsupported type","type",l)})}}}function Re(s){return s.match(/^ipfs:\/\/ipfs\//i)?s=s.substring(12):s.match(/^ipfs:\/\//i)?s=s.substring(7):o.assertArgument(!1,"unsupported IPFS format","link",s),`https://gateway.ipfs.io/ipfs/${s}`}class go{name;constructor(t){o.defineProperties(this,{name:t})}connect(t){return this}supportsCoinType(t){return!1}async encodeAddress(t,e){throw new Error("unsupported coin")}async decodeAddress(t,e){throw new Error("unsupported coin")}}const qs=new RegExp("^(ipfs)://(.*)$","i"),Yr=[new RegExp("^(https)://(.*)$","i"),new RegExp("^(data):(.*)$","i"),qs,new RegExp("^eip155:[0-9]+/(erc[0-9]+):(.*)$","i")];class Rt{provider;address;name;#t;#e;constructor(t,e,r){o.defineProperties(this,{provider:t,address:e,name:r}),this.#t=null,this.#e=new d.Contract(e,["function supportsInterface(bytes4) view returns (bool)","function resolve(bytes, bytes) view returns (bytes)","function addr(bytes32) view returns (address)","function addr(bytes32, uint) view returns (bytes)","function text(bytes32, string) view returns (string)","function contenthash(bytes32) view returns (bytes)"],t)}async supportsWildcard(){return this.#t==null&&(this.#t=(async()=>{try{return await this.#e.supportsInterface("0x9061b923")}catch(t){if(o.isError(t,"CALL_EXCEPTION"))return!1;throw this.#t=null,t}})()),await this.#t}async#r(t,e){e=(e||[]).slice();const r=this.#e.interface;e.unshift(je(this.name));let n=null;await this.supportsWildcard()&&(n=r.getFunction(t),o.assert(n,"missing fragment","UNKNOWN_ERROR",{info:{funcName:t}}),e=[Ki(this.name,255),r.encodeFunctionData(n,e)],t="resolve(bytes,bytes)"),e.push({enableCcipRead:!0});try{const i=await this.#e[t](...e);return n?r.decodeFunctionResult(n,i)[0]:i}catch(i){if(!o.isError(i,"CALL_EXCEPTION"))throw i}return null}async getAddress(t){if(t==null&&(t=60),t===60)try{const i=await this.#r("addr(bytes32)");return i==null||i===Ft?null:i}catch(i){if(o.isError(i,"CALL_EXCEPTION"))return null;throw i}if(t>=0&&t<2147483648){let i=t+2147483648;const a=await this.#r("addr(bytes32,uint)",[i]);if(o.isHexString(a,20))return o.getAddress(a)}let e=null;for(const i of this.provider.plugins)if(i instanceof go&&i.supportsCoinType(t)){e=i;break}if(e==null)return null;const r=await this.#r("addr(bytes32,uint)",[t]);if(r==null||r==="0x")return null;const n=await e.decodeAddress(t,r);if(n!=null)return n;o.assert(!1,"invalid coin data","UNSUPPORTED_OPERATION",{operation:`getAddress(${t})`,info:{coinType:t,data:r}})}async getText(t){const e=await this.#r("text(bytes32,string)",[t]);return e==null||e==="0x"?null:e}async getContentHash(){const t=await this.#r("contenthash(bytes32)");if(t==null||t==="0x")return null;const e=t.match(/^0x(e3010170|e5010172)(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(e){const n=e[1]==="e3010170"?"ipfs":"ipns",i=parseInt(e[4],16);if(e[5].length===i*2)return`${n}://${ss("0x"+e[2])}`}const r=t.match(/^0xe40101fa011b20([0-9a-f]*)$/);if(r&&r[1].length===64)return`bzz://${r[1]}`;o.assert(!1,"invalid or unsupported content hash data","UNSUPPORTED_OPERATION",{operation:"getContentHash()",info:{data:t}})}async getAvatar(){return(await this._getAvatar()).url}async _getAvatar(){const t=[{type:"name",value:this.name}];try{const e=await this.getText("avatar");if(e==null)return t.push({type:"!avatar",value:""}),{url:null,linkage:t};t.push({type:"avatar",value:e});for(let r=0;r<Yr.length;r++){const n=e.match(Yr[r]);if(n==null)continue;const i=n[1].toLowerCase();switch(i){case"https":case"data":return t.push({type:"url",value:e}),{linkage:t,url:e};case"ipfs":{const a=Re(e);return t.push({type:"ipfs",value:e}),t.push({type:"url",value:a}),{linkage:t,url:a}}case"erc721":case"erc1155":{const a=i==="erc721"?"tokenURI(uint256)":"uri(uint256)";t.push({type:i,value:e});const c=await this.getAddress();if(c==null)return t.push({type:"!owner",value:""}),{url:null,linkage:t};const l=(n[2]||"").split("/");if(l.length!==2)return t.push({type:`!${i}caip`,value:n[2]||""}),{url:null,linkage:t};const u=l[1],f=new d.Contract(l[0],["function tokenURI(uint) view returns (string)","function ownerOf(uint) view returns (address)","function uri(uint) view returns (string)","function balanceOf(address, uint256) view returns (uint)"],this.provider);if(i==="erc721"){const g=await f.ownerOf(u);if(c!==g)return t.push({type:"!owner",value:g}),{url:null,linkage:t};t.push({type:"owner",value:g})}else if(i==="erc1155"){const g=await f.balanceOf(c,u);if(!g)return t.push({type:"!balance",value:"0"}),{url:null,linkage:t};t.push({type:"balance",value:g.toString()})}let h=await f[a](u);if(h==null||h==="0x")return t.push({type:"!metadata-url",value:""}),{url:null,linkage:t};t.push({type:"metadata-url-base",value:h}),i==="erc1155"&&(h=h.replace("{id}",d.toBeHex(u,32).substring(2)),t.push({type:"metadata-url-expanded",value:h})),h.match(/^ipfs:/i)&&(h=Re(h)),t.push({type:"metadata-url",value:h});let A={};const w=await new nt(h).send();w.assertOk();try{A=w.bodyJson}catch{try{t.push({type:"!metadata",value:w.bodyText})}catch{const y=w.body;return y&&t.push({type:"!metadata",value:o.hexlify(y)}),{url:null,linkage:t}}return{url:null,linkage:t}}if(!A)return t.push({type:"!metadata",value:""}),{url:null,linkage:t};t.push({type:"metadata",value:JSON.stringify(A)});let m=A.image;if(typeof m!="string")return t.push({type:"!imageUrl",value:""}),{url:null,linkage:t};if(!m.match(/^(https:\/\/|data:)/i)){if(m.match(qs)==null)return t.push({type:"!imageUrl-ipfs",value:m}),{url:null,linkage:t};t.push({type:"imageUrl-ipfs",value:m}),m=Re(m)}return t.push({type:"url",value:m}),{linkage:t,url:m}}}}}catch{}return{linkage:t,url:null}}static async getEnsAddress(t){const e=await t.getNetwork(),r=e.getPlugin("org.ethers.plugins.network.Ens");return o.assert(r,"network does not support ENS","UNSUPPORTED_OPERATION",{operation:"getEnsAddress",info:{network:e}}),r.address}static async#s(t,e){const r=await Rt.getEnsAddress(t);try{const i=await new d.Contract(r,["function resolver(bytes32) view returns (address)"],t).resolver(je(e),{enableCcipRead:!0});return i===Ft?null:i}catch(n){throw n}return null}static async fromName(t,e){let r=e;for(;;){if(r===""||r==="."||e!=="eth"&&r==="eth")return null;const n=await Rt.#s(t,r);if(n!=null){const i=new Rt(t,n,e);return r!==e&&!await i.supportsWildcard()?null:i}r=r.split(".").slice(1).join(".")}}}const qr=BigInt(0);function v(s,t){return(function(e){return e==null?t:s(e)})}function be(s,t){return(e=>{if(t&&e==null)return null;if(!Array.isArray(e))throw new Error("not an array");return e.map(r=>s(r))})}function Wt(s,t){return(e=>{const r={};for(const n in s){let i=n;if(t&&n in t&&!(i in e)){for(const a of t[n])if(a in e){i=a;break}}try{const a=s[n](e[i]);a!==void 0&&(r[n]=a)}catch(a){const c=a instanceof Error?a.message:"not-an-error";o.assert(!1,`invalid value for value.${n} (${c})`,"BAD_DATA",{value:e})}}return r})}function Ao(s){switch(s){case!0:case"true":return!0;case!1:case"false":return!1}o.assertArgument(!1,`invalid boolean; ${JSON.stringify(s)}`,"value",s)}function Mt(s){return o.assertArgument(o.isHexString(s,!0),"invalid data","value",s),s}function K(s){return o.assertArgument(o.isHexString(s,32),"invalid hash","value",s),s}const po=Wt({address:o.getAddress,blockHash:K,blockNumber:d.getNumber,data:Mt,index:d.getNumber,removed:v(Ao,!1),topics:be(K),transactionHash:K,transactionIndex:d.getNumber},{index:["logIndex"]});function mo(s){return po(s)}const wo=Wt({hash:v(K),parentHash:K,parentBeaconBlockRoot:v(K,null),number:d.getNumber,timestamp:d.getNumber,nonce:v(Mt),difficulty:d.getBigInt,gasLimit:d.getBigInt,gasUsed:d.getBigInt,stateRoot:v(K,null),receiptsRoot:v(K,null),blobGasUsed:v(d.getBigInt,null),excessBlobGas:v(d.getBigInt,null),miner:v(o.getAddress),prevRandao:v(K,null),extraData:Mt,baseFeePerGas:v(d.getBigInt)},{prevRandao:["mixHash"]});function yo(s){const t=wo(s);return t.transactions=s.transactions.map(e=>typeof e=="string"?e:Ws(e)),t}const bo=Wt({transactionIndex:d.getNumber,blockNumber:d.getNumber,transactionHash:K,address:o.getAddress,topics:be(K),data:Mt,index:d.getNumber,blockHash:K},{index:["logIndex"]});function Eo(s){return bo(s)}const Bo=Wt({to:v(o.getAddress,null),from:v(o.getAddress,null),contractAddress:v(o.getAddress,null),index:d.getNumber,root:v(o.hexlify),gasUsed:d.getBigInt,blobGasUsed:v(d.getBigInt,null),logsBloom:v(Mt),blockHash:K,hash:K,logs:be(Eo),blockNumber:d.getNumber,cumulativeGasUsed:d.getBigInt,effectiveGasPrice:v(d.getBigInt),blobGasPrice:v(d.getBigInt,null),status:v(d.getNumber),type:v(d.getNumber,0)},{effectiveGasPrice:["gasPrice"],hash:["transactionHash"],index:["transactionIndex"]});function xo(s){return Bo(s)}function Ws(s){s.to&&d.getBigInt(s.to)===qr&&(s.to="0x0000000000000000000000000000000000000000");const t=Wt({hash:K,index:v(d.getNumber,void 0),type:e=>e==="0x"||e==null?0:d.getNumber(e),accessList:v(d.accessListify,null),blobVersionedHashes:v(be(K,!0),null),blockHash:v(K,null),blockNumber:v(d.getNumber,null),transactionIndex:v(d.getNumber,null),from:o.getAddress,gasPrice:v(d.getBigInt),maxPriorityFeePerGas:v(d.getBigInt),maxFeePerGas:v(d.getBigInt),maxFeePerBlobGas:v(d.getBigInt,null),gasLimit:d.getBigInt,to:v(o.getAddress,null),value:d.getBigInt,nonce:d.getNumber,data:Mt,creates:v(o.getAddress,null),chainId:v(d.getBigInt,null)},{data:["input"],gasLimit:["gas"],index:["transactionIndex"]})(s);if(t.to==null&&t.creates==null&&(t.creates=xs(t)),(s.type===1||s.type===2)&&s.accessList==null&&(t.accessList=[]),s.signature?t.signature=H.from(s.signature):t.signature=H.from(s),t.chainId==null){const e=t.signature.legacyChainId;e!=null&&(t.chainId=e)}return t.blockHash&&d.getBigInt(t.blockHash)===qr&&(t.blockHash=null),t}const Co="0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e";class Xt{name;constructor(t){o.defineProperties(this,{name:t})}clone(){return new Xt(this.name)}}class Ee extends Xt{effectiveBlock;txBase;txCreate;txDataZero;txDataNonzero;txAccessListStorageKey;txAccessListAddress;constructor(t,e){t==null&&(t=0),super(`org.ethers.network.plugins.GasCost#${t||0}`);const r={effectiveBlock:t};function n(i,a){let c=(e||{})[i];c==null&&(c=a),o.assertArgument(typeof c=="number",`invalud value for ${i}`,"costs",e),r[i]=c}n("txBase",21e3),n("txCreate",32e3),n("txDataZero",4),n("txDataNonzero",16),n("txAccessListStorageKey",1900),n("txAccessListAddress",2400),o.defineProperties(this,r)}clone(){return new Ee(this.effectiveBlock,this)}}class Be extends Xt{address;targetNetwork;constructor(t,e){super("org.ethers.plugins.network.Ens"),o.defineProperties(this,{address:t||Co,targetNetwork:e??1})}clone(){return new Be(this.address,this.targetNetwork)}}class Io extends Xt{#t;#e;get url(){return this.#t}get processFunc(){return this.#e}constructor(t,e){super("org.ethers.plugins.network.FetchUrlFeeDataPlugin"),this.#t=t,this.#e=e}clone(){return this}}const Oe=new Map;class W{#t;#e;#r;constructor(t,e){this.#t=t,this.#e=d.getBigInt(e),this.#r=new Map}toJSON(){return{name:this.name,chainId:String(this.chainId)}}get name(){return this.#t}set name(t){this.#t=t}get chainId(){return this.#e}set chainId(t){this.#e=d.getBigInt(t,"chainId")}matches(t){if(t==null)return!1;if(typeof t=="string"){try{return this.chainId===d.getBigInt(t)}catch{}return this.name===t}if(typeof t=="number"||typeof t=="bigint"){try{return this.chainId===d.getBigInt(t)}catch{}return!1}if(typeof t=="object"){if(t.chainId!=null){try{return this.chainId===d.getBigInt(t.chainId)}catch{}return!1}return t.name!=null?this.name===t.name:!1}return!1}get plugins(){return Array.from(this.#r.values())}attachPlugin(t){if(this.#r.get(t.name))throw new Error(`cannot replace existing plugin: ${t.name} `);return this.#r.set(t.name,t.clone()),this}getPlugin(t){return this.#r.get(t)||null}getPlugins(t){return this.plugins.filter(e=>e.name.split("#")[0]===t)}clone(){const t=new W(this.name,this.chainId);return this.plugins.forEach(e=>{t.attachPlugin(e.clone())}),t}computeIntrinsicGas(t){const e=this.getPlugin("org.ethers.plugins.network.GasCost")||new Ee;let r=e.txBase;if(t.to==null&&(r+=e.txCreate),t.data)for(let n=2;n<t.data.length;n+=2)t.data.substring(n,n+2)==="00"?r+=e.txDataZero:r+=e.txDataNonzero;if(t.accessList){const n=d.accessListify(t.accessList);for(const i in n)r+=e.txAccessListAddress+e.txAccessListStorageKey*n[i].storageKeys.length}return r}static from(t){if(Po(),t==null)return W.from("mainnet");if(typeof t=="number"&&(t=BigInt(t)),typeof t=="string"||typeof t=="bigint"){const e=Oe.get(t);if(e)return e();if(typeof t=="bigint")return new W("unknown",t);o.assertArgument(!1,"unknown network","network",t)}if(typeof t.clone=="function")return t.clone();if(typeof t=="object"){o.assertArgument(typeof t.name=="string"&&typeof t.chainId=="number","invalid network object name or chainId","network",t);const e=new W(t.name,t.chainId);return(t.ensAddress||t.ensNetwork!=null)&&e.attachPlugin(new Be(t.ensAddress,t.ensNetwork)),e}o.assertArgument(!1,"invalid network","network",t)}static register(t,e){typeof t=="number"&&(t=BigInt(t));const r=Oe.get(t);r&&o.assertArgument(!1,`conflicting network for ${JSON.stringify(r.name)}`,"nameOrChainId",t),Oe.set(t,e)}}function Wr(s,t){const e=String(s);if(!e.match(/^[0-9.]+$/))throw new Error(`invalid gwei value: ${s}`);const r=e.split(".");if(r.length===1&&r.push(""),r.length!==2)throw new Error(`invalid gwei value: ${s}`);for(;r[1].length<t;)r[1]+="0";if(r[1].length>9){let n=BigInt(r[1].substring(0,9));r[1].substring(9).match(/^0+$/)||n++,r[1]=n.toString()}return BigInt(r[0]+r[1])}function Xr(s){return new Io(s,async(t,e,r)=>{r.setHeader("User-Agent","ethers");let n;try{const[i,a]=await Promise.all([r.send(),t()]);n=i;const c=n.bodyJson.standard;return{gasPrice:a.gasPrice,maxFeePerGas:Wr(c.maxFee,9),maxPriorityFeePerGas:Wr(c.maxPriorityFee,9)}}catch(i){o.assert(!1,`error encountered with polygon gas station (${JSON.stringify(r.url)})`,"SERVER_ERROR",{request:r,response:n,error:i})}})}let _r=!1;function Po(){if(_r)return;_r=!0;function s(t,e,r){const n=function(){const i=new W(t,e);return r.ensNetwork!=null&&i.attachPlugin(new Be(null,r.ensNetwork)),i.attachPlugin(new Ee),(r.plugins||[]).forEach(a=>{i.attachPlugin(a)}),i};W.register(t,n),W.register(e,n),r.altNames&&r.altNames.forEach(i=>{W.register(i,n)})}s("mainnet",1,{ensNetwork:1,altNames:["homestead"]}),s("ropsten",3,{ensNetwork:3}),s("rinkeby",4,{ensNetwork:4}),s("goerli",5,{ensNetwork:5}),s("kovan",42,{ensNetwork:42}),s("sepolia",11155111,{ensNetwork:11155111}),s("holesky",17e3,{ensNetwork:17e3}),s("classic",61,{}),s("classicKotti",6,{}),s("arbitrum",42161,{ensNetwork:1}),s("arbitrum-goerli",421613,{}),s("arbitrum-sepolia",421614,{}),s("base",8453,{ensNetwork:1}),s("base-goerli",84531,{}),s("base-sepolia",84532,{}),s("bnb",56,{ensNetwork:1}),s("bnbt",97,{}),s("linea",59144,{ensNetwork:1}),s("linea-goerli",59140,{}),s("linea-sepolia",59141,{}),s("matic",137,{ensNetwork:1,plugins:[Xr("https://gasstation.polygon.technology/v2")]}),s("matic-amoy",80002,{}),s("matic-mumbai",80001,{altNames:["maticMumbai","maticmum"],plugins:[Xr("https://gasstation-testnet.polygon.technology/v2")]}),s("optimism",10,{ensNetwork:1,plugins:[]}),s("optimism-goerli",420,{}),s("optimism-sepolia",11155420,{}),s("xdai",100,{ensNetwork:1})}function Ze(s){return JSON.parse(JSON.stringify(s))}class No{#t;#e;#r;#s;constructor(t){this.#t=t,this.#e=null,this.#r=4e3,this.#s=-2}get pollingInterval(){return this.#r}set pollingInterval(t){this.#r=t}async#n(){try{const t=await this.#t.getBlockNumber();if(this.#s===-2){this.#s=t;return}if(t!==this.#s){for(let e=this.#s+1;e<=t;e++){if(this.#e==null)return;await this.#t.emit("block",e)}this.#s=t}}catch{}this.#e!=null&&(this.#e=this.#t._setTimeout(this.#n.bind(this),this.#r))}start(){this.#e||(this.#e=this.#t._setTimeout(this.#n.bind(this),this.#r),this.#n())}stop(){this.#e&&(this.#t._clearTimeout(this.#e),this.#e=null)}pause(t){this.stop(),t&&(this.#s=-2)}resume(){this.start()}}class ur{#t;#e;#r;constructor(t){this.#t=t,this.#r=!1,this.#e=e=>{this._poll(e,this.#t)}}async _poll(t,e){throw new Error("sub-classes must override this")}start(){this.#r||(this.#r=!0,this.#e(-2),this.#t.on("block",this.#e))}stop(){this.#r&&(this.#r=!1,this.#t.off("block",this.#e))}pause(t){this.stop()}resume(){this.start()}}class ko extends ur{#t;#e;constructor(t,e){super(t),this.#t=e,this.#e=-2}pause(t){t&&(this.#e=-2),super.pause(t)}async _poll(t,e){const r=await e.getBlock(this.#t);r!=null&&(this.#e===-2?this.#e=r.number:r.number>this.#e&&(e.emit(this.#t,r.number),this.#e=r.number))}}class So extends ur{#t;constructor(t,e){super(t),this.#t=Ze(e)}async _poll(t,e){throw new Error("@TODO")}}class vo extends ur{#t;constructor(t,e){super(t),this.#t=e}async _poll(t,e){const r=await e.getTransactionReceipt(this.#t);r&&e.emit(this.#t,r)}}class hr{#t;#e;#r;#s;#n;constructor(t,e){this.#t=t,this.#e=Ze(e),this.#r=this.#o.bind(this),this.#s=!1,this.#n=-2}async#o(t){if(this.#n===-2)return;const e=Ze(this.#e);e.fromBlock=this.#n+1,e.toBlock=t;const r=await this.#t.getLogs(e);if(r.length===0){this.#n<t-60&&(this.#n=t-60);return}for(const n of r)this.#t.emit(this.#e,n),this.#n=n.blockNumber}start(){this.#s||(this.#s=!0,this.#n===-2&&this.#t.getBlockNumber().then(t=>{this.#n=t}),this.#t.on("block",this.#r))}stop(){this.#s&&(this.#s=!1,this.#t.off("block",this.#r))}pause(t){this.stop(),t&&(this.#n=-2)}resume(){this.start()}}const Ro=BigInt(2),Oo=10;function ne(s){return s&&typeof s.then=="function"}function oe(s,t){return s+":"+JSON.stringify(t,(e,r)=>{if(r==null)return"null";if(typeof r=="bigint")return`bigint:${r.toString()}`;if(typeof r=="string")return r.toLowerCase();if(typeof r=="object"&&!Array.isArray(r)){const n=Object.keys(r);return n.sort(),n.reduce((i,a)=>(i[a]=r[a],i),{})}return r})}class Xs{name;constructor(t){o.defineProperties(this,{name:t})}start(){}stop(){}pause(t){}resume(){}}function Do(s){return JSON.parse(JSON.stringify(s))}function Ye(s){return s=Array.from(new Set(s).values()),s.sort(),s}async function De(s,t){if(s==null)throw new Error("invalid event");if(Array.isArray(s)&&(s={topics:s}),typeof s=="string")switch(s){case"block":case"debug":case"error":case"finalized":case"network":case"pending":case"safe":return{type:s,tag:s}}if(o.isHexString(s,32)){const e=s.toLowerCase();return{type:"transaction",tag:oe("tx",{hash:e}),hash:e}}if(s.orphan){const e=s;return{type:"orphan",tag:oe("orphan",e),filter:Do(e)}}if(s.address||s.topics){const e=s,r={topics:(e.topics||[]).map(n=>n==null?null:Array.isArray(n)?Ye(n.map(i=>i.toLowerCase())):n.toLowerCase())};if(e.address){const n=[],i=[],a=c=>{o.isHexString(c)?n.push(c):i.push((async()=>{n.push(await o.resolveAddress(c,t))})())};Array.isArray(e.address)?e.address.forEach(a):a(e.address),i.length&&await Promise.all(i),r.address=Ye(n.map(c=>c.toLowerCase()))}return{filter:r,tag:oe("event",r),type:"event"}}o.assertArgument(!1,"unknown ProviderEvent","event",s)}function Te(){return new Date().getTime()}const To={cacheTimeout:250,pollingInterval:4e3};class Fo{#t;#e;#r;#s;#n;#o;#i;#a;#d;#l;#g;#A;constructor(t,e){if(this.#A=Object.assign({},To,e||{}),t==="any")this.#o=!0,this.#n=null;else if(t){const r=W.from(t);this.#o=!1,this.#n=Promise.resolve(r),setTimeout(()=>{this.emit("network",r,null)},0)}else this.#o=!1,this.#n=null;this.#a=-1,this.#i=new Map,this.#t=new Map,this.#e=new Map,this.#r=null,this.#s=!1,this.#d=1,this.#l=new Map,this.#g=!1}get pollingInterval(){return this.#A.pollingInterval}get provider(){return this}get plugins(){return Array.from(this.#e.values())}attachPlugin(t){if(this.#e.get(t.name))throw new Error(`cannot replace existing plugin: ${t.name} `);return this.#e.set(t.name,t.connect(this)),this}getPlugin(t){return this.#e.get(t)||null}get disableCcipRead(){return this.#g}set disableCcipRead(t){this.#g=!!t}async#c(t){const e=this.#A.cacheTimeout;if(e<0)return await this._perform(t);const r=oe(t.method,t);let n=this.#i.get(r);return n||(n=this._perform(t),this.#i.set(r,n),setTimeout(()=>{this.#i.get(r)===n&&this.#i.delete(r)},e)),await n}async ccipReadFetch(t,e,r){if(this.disableCcipRead||r.length===0||t.to==null)return null;const n=t.to.toLowerCase(),i=e.toLowerCase(),a=[];for(let c=0;c<r.length;c++){const l=r[c],u=l.replace("{sender}",n).replace("{data}",i),f=new nt(u);l.indexOf("{data}")===-1&&(f.body={data:i,sender:n}),this.emit("debug",{action:"sendCcipReadFetchRequest",request:f,index:c,urls:r});let h="unknown error",A;try{A=await f.send()}catch(w){a.push(w.message),this.emit("debug",{action:"receiveCcipReadFetchError",request:f,result:{error:w}});continue}try{const w=A.bodyJson;if(w.data)return this.emit("debug",{action:"receiveCcipReadFetchResult",request:f,result:w}),w.data;w.message&&(h=w.message),this.emit("debug",{action:"receiveCcipReadFetchError",request:f,result:w})}catch{}o.assert(A.statusCode<400||A.statusCode>=500,`response not found during CCIP fetch: ${h}`,"OFFCHAIN_FAULT",{reason:"404_MISSING_RESOURCE",transaction:t,info:{url:l,errorMessage:h}}),a.push(h)}o.assert(!1,`error encountered during CCIP fetch: ${a.map(c=>JSON.stringify(c)).join(", ")}`,"OFFCHAIN_FAULT",{reason:"500_SERVER_ERROR",transaction:t,info:{urls:r,errorMessages:a}})}_wrapBlock(t,e){return new d.Block(yo(t),this)}_wrapLog(t,e){return new d.Log(mo(t),this)}_wrapTransactionReceipt(t,e){return new d.TransactionReceipt(xo(t),this)}_wrapTransactionResponse(t,e){return new d.TransactionResponse(Ws(t),this)}_detectNetwork(){o.assert(!1,"sub-classes must implement this","UNSUPPORTED_OPERATION",{operation:"_detectNetwork"})}async _perform(t){o.assert(!1,`unsupported method: ${t.method}`,"UNSUPPORTED_OPERATION",{operation:t.method,info:t})}async getBlockNumber(){const t=d.getNumber(await this.#c({method:"getBlockNumber"}),"%response");return this.#a>=0&&(this.#a=t),t}_getAddress(t){return o.resolveAddress(t,this)}_getBlockTag(t){if(t==null)return"latest";switch(t){case"earliest":return"0x0";case"finalized":case"latest":case"pending":case"safe":return t}if(o.isHexString(t))return o.isHexString(t,32)?t:d.toQuantity(t);if(typeof t=="bigint"&&(t=d.getNumber(t,"blockTag")),typeof t=="number")return t>=0?d.toQuantity(t):this.#a>=0?d.toQuantity(this.#a+t):this.getBlockNumber().then(e=>d.toQuantity(e+t));o.assertArgument(!1,"invalid blockTag","blockTag",t)}_getFilter(t){const e=(t.topics||[]).map(l=>l==null?null:Array.isArray(l)?Ye(l.map(u=>u.toLowerCase())):l.toLowerCase()),r="blockHash"in t?t.blockHash:void 0,n=(l,u,f)=>{let h;switch(l.length){case 0:break;case 1:h=l[0];break;default:l.sort(),h=l}if(r&&(u!=null||f!=null))throw new Error("invalid filter");const A={};return h&&(A.address=h),e.length&&(A.topics=e),u&&(A.fromBlock=u),f&&(A.toBlock=f),r&&(A.blockHash=r),A};let i=[];if(t.address)if(Array.isArray(t.address))for(const l of t.address)i.push(this._getAddress(l));else i.push(this._getAddress(t.address));let a;"fromBlock"in t&&(a=this._getBlockTag(t.fromBlock));let c;return"toBlock"in t&&(c=this._getBlockTag(t.toBlock)),i.filter(l=>typeof l!="string").length||a!=null&&typeof a!="string"||c!=null&&typeof c!="string"?Promise.all([Promise.all(i),a,c]).then(l=>n(l[0],l[1],l[2])):n(i,a,c)}_getTransactionRequest(t){const e=d.copyRequest(t),r=[];if(["to","from"].forEach(n=>{if(e[n]==null)return;const i=o.resolveAddress(e[n],this);ne(i)?r.push((async function(){e[n]=await i})()):e[n]=i}),e.blockTag!=null){const n=this._getBlockTag(e.blockTag);ne(n)?r.push((async function(){e.blockTag=await n})()):e.blockTag=n}return r.length?(async function(){return await Promise.all(r),e})():e}async getNetwork(){if(this.#n==null){const n=(async()=>{try{const i=await this._detectNetwork();return this.emit("network",i,null),i}catch(i){throw this.#n===n&&(this.#n=null),i}})();return this.#n=n,(await n).clone()}const t=this.#n,[e,r]=await Promise.all([t,this._detectNetwork()]);return e.chainId!==r.chainId&&(this.#o?(this.emit("network",r,e),this.#n===t&&(this.#n=Promise.resolve(r))):o.assert(!1,`network changed: ${e.chainId} => ${r.chainId} `,"NETWORK_ERROR",{event:"changed"})),e.clone()}async getFeeData(){const t=await this.getNetwork(),e=async()=>{const{_block:n,gasPrice:i,priorityFee:a}=await o.resolveProperties({_block:this.#p("latest",!1),gasPrice:(async()=>{try{const f=await this.#c({method:"getGasPrice"});return d.getBigInt(f,"%response")}catch{}return null})(),priorityFee:(async()=>{try{const f=await this.#c({method:"getPriorityFee"});return d.getBigInt(f,"%response")}catch{}return null})()});let c=null,l=null;const u=this._wrapBlock(n,t);return u&&u.baseFeePerGas&&(l=a??BigInt("1000000000"),c=u.baseFeePerGas*Ro+l),new d.FeeData(i,c,l)},r=t.getPlugin("org.ethers.plugins.network.FetchUrlFeeDataPlugin");if(r){const n=new nt(r.url),i=await r.processFunc(e,this,n);return new d.FeeData(i.gasPrice,i.maxFeePerGas,i.maxPriorityFeePerGas)}return await e()}async estimateGas(t){let e=this._getTransactionRequest(t);return ne(e)&&(e=await e),d.getBigInt(await this.#c({method:"estimateGas",transaction:e}),"%response")}async#u(t,e,r){o.assert(r<Oo,"CCIP read exceeded maximum redirections","OFFCHAIN_FAULT",{reason:"TOO_MANY_REDIRECTS",transaction:Object.assign({},t,{blockTag:e,enableCcipRead:!0})});const n=d.copyRequest(t);try{return o.hexlify(await this._perform({method:"call",transaction:n,blockTag:e}))}catch(i){if(!this.disableCcipRead&&o.isCallException(i)&&i.data&&r>=0&&e==="latest"&&n.to!=null&&o.dataSlice(i.data,0,4)==="0x556f1830"){const a=i.data,c=await o.resolveAddress(n.to,this);let l;try{l=Qo(o.dataSlice(i.data,4))}catch(h){o.assert(!1,h.message,"OFFCHAIN_FAULT",{reason:"BAD_DATA",transaction:n,info:{data:a}})}o.assert(l.sender.toLowerCase()===c.toLowerCase(),"CCIP Read sender mismatch","CALL_EXCEPTION",{action:"call",data:a,reason:"OffchainLookup",transaction:n,invocation:null,revert:{signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",name:"OffchainLookup",args:l.errorArgs}});const u=await this.ccipReadFetch(n,l.calldata,l.urls);o.assert(u!=null,"CCIP Read failed to fetch data","OFFCHAIN_FAULT",{reason:"FETCH_FAILED",transaction:n,info:{data:i.data,errorArgs:l.errorArgs}});const f={to:c,data:o.concat([l.selector,Ho([u,l.extraData])])};this.emit("debug",{action:"sendCcipReadCall",transaction:f});try{const h=await this.#u(f,e,r+1);return this.emit("debug",{action:"receiveCcipReadCallResult",transaction:Object.assign({},f),result:h}),h}catch(h){throw this.emit("debug",{action:"receiveCcipReadCallError",transaction:Object.assign({},f),error:h}),h}}throw i}}async#h(t){const{value:e}=await o.resolveProperties({network:this.getNetwork(),value:t});return e}async call(t){const{tx:e,blockTag:r}=await o.resolveProperties({tx:this._getTransactionRequest(t),blockTag:this._getBlockTag(t.blockTag)});return await this.#h(this.#u(e,r,t.enableCcipRead?0:-1))}async#f(t,e,r){let n=this._getAddress(e),i=this._getBlockTag(r);return(typeof n!="string"||typeof i!="string")&&([n,i]=await Promise.all([n,i])),await this.#h(this.#c(Object.assign(t,{address:n,blockTag:i})))}async getBalance(t,e){return d.getBigInt(await this.#f({method:"getBalance"},t,e),"%response")}async getTransactionCount(t,e){return d.getNumber(await this.#f({method:"getTransactionCount"},t,e),"%response")}async getCode(t,e){return o.hexlify(await this.#f({method:"getCode"},t,e))}async getStorage(t,e,r){const n=d.getBigInt(e,"position");return o.hexlify(await this.#f({method:"getStorage",position:n},t,r))}async broadcastTransaction(t){const{blockNumber:e,hash:r,network:n}=await o.resolveProperties({blockNumber:this.getBlockNumber(),hash:this._perform({method:"broadcastTransaction",signedTransaction:t}),network:this.getNetwork()}),i=tt.from(t);if(i.hash!==r)throw new Error("@TODO: the returned hash did not match");return this._wrapTransactionResponse(i,n).replaceableTransaction(e)}async#p(t,e){if(o.isHexString(t,32))return await this.#c({method:"getBlock",blockHash:t,includeTransactions:e});let r=this._getBlockTag(t);return typeof r!="string"&&(r=await r),await this.#c({method:"getBlock",blockTag:r,includeTransactions:e})}async getBlock(t,e){const{network:r,params:n}=await o.resolveProperties({network:this.getNetwork(),params:this.#p(t,!!e)});return n==null?null:this._wrapBlock(n,r)}async getTransaction(t){const{network:e,params:r}=await o.resolveProperties({network:this.getNetwork(),params:this.#c({method:"getTransaction",hash:t})});return r==null?null:this._wrapTransactionResponse(r,e)}async getTransactionReceipt(t){const{network:e,params:r}=await o.resolveProperties({network:this.getNetwork(),params:this.#c({method:"getTransactionReceipt",hash:t})});if(r==null)return null;if(r.gasPrice==null&&r.effectiveGasPrice==null){const n=await this.#c({method:"getTransaction",hash:t});if(n==null)throw new Error("report this; could not find tx or effectiveGasPrice");r.effectiveGasPrice=n.gasPrice}return this._wrapTransactionReceipt(r,e)}async getTransactionResult(t){const{result:e}=await o.resolveProperties({network:this.getNetwork(),result:this.#c({method:"getTransactionResult",hash:t})});return e==null?null:o.hexlify(e)}async getLogs(t){let e=this._getFilter(t);ne(e)&&(e=await e);const{network:r,params:n}=await o.resolveProperties({network:this.getNetwork(),params:this.#c({method:"getLogs",filter:e})});return n.map(i=>this._wrapLog(i,r))}_getProvider(t){o.assert(!1,"provider cannot connect to target network","UNSUPPORTED_OPERATION",{operation:"_getProvider()"})}async getResolver(t){return await Rt.fromName(this,t)}async getAvatar(t){const e=await this.getResolver(t);return e?await e.getAvatar():null}async resolveName(t){const e=await this.getResolver(t);return e?await e.getAddress():null}async lookupAddress(t){t=o.getAddress(t);const e=je(t.substring(2).toLowerCase()+".addr.reverse");try{const r=await Rt.getEnsAddress(this),i=await new d.Contract(r,["function resolver(bytes32) view returns (address)"],this).resolver(e);if(i==null||i===Ft)return null;const c=await new d.Contract(i,["function name(bytes32) view returns (string)"],this).name(e);return await this.resolveName(c)!==t?null:c}catch(r){if(o.isError(r,"BAD_DATA")&&r.value==="0x"||o.isError(r,"CALL_EXCEPTION"))return null;throw r}return null}async waitForTransaction(t,e,r){const n=e??1;return n===0?this.getTransactionReceipt(t):new Promise(async(i,a)=>{let c=null;const l=(async u=>{try{const f=await this.getTransactionReceipt(t);if(f!=null&&u-f.blockNumber+1>=n){i(f),c&&(clearTimeout(c),c=null);return}}catch(f){console.log("EEE",f)}this.once("block",l)});r!=null&&(c=setTimeout(()=>{c!=null&&(c=null,this.off("block",l),a(o.makeError("timeout","TIMEOUT",{reason:"timeout"})))},r)),l(await this.getBlockNumber())})}async waitForBlock(t){o.assert(!1,"not implemented yet","NOT_IMPLEMENTED",{operation:"waitForBlock"})}_clearTimeout(t){const e=this.#l.get(t);e&&(e.timer&&clearTimeout(e.timer),this.#l.delete(t))}_setTimeout(t,e){e==null&&(e=0);const r=this.#d++,n=()=>{this.#l.delete(r),t()};if(this.paused)this.#l.set(r,{timer:null,func:n,time:e});else{const i=setTimeout(n,e);this.#l.set(r,{timer:i,func:n,time:Te()})}return r}_forEachSubscriber(t){for(const e of this.#t.values())t(e.subscriber)}_getSubscriber(t){switch(t.type){case"debug":case"error":case"network":return new Xs(t.type);case"block":{const e=new No(this);return e.pollingInterval=this.pollingInterval,e}case"safe":case"finalized":return new ko(this,t.type);case"event":return new hr(this,t.filter);case"transaction":return new vo(this,t.hash);case"orphan":return new So(this,t.filter)}throw new Error(`unsupported event: ${t.type}`)}_recoverSubscriber(t,e){for(const r of this.#t.values())if(r.subscriber===t){r.started&&r.subscriber.stop(),r.subscriber=e,r.started&&e.start(),this.#r!=null&&e.pause(this.#r);break}}async#m(t,e){let r=await De(t,this);return r.type==="event"&&e&&e.length>0&&e[0].removed===!0&&(r=await De({orphan:"drop-log",log:e[0]},this)),this.#t.get(r.tag)||null}async#w(t){const e=await De(t,this),r=e.tag;let n=this.#t.get(r);return n||(n={subscriber:this._getSubscriber(e),tag:r,addressableMap:new WeakMap,nameMap:new Map,started:!1,listeners:[]},this.#t.set(r,n)),n}async on(t,e){const r=await this.#w(t);return r.listeners.push({listener:e,once:!1}),r.started||(r.subscriber.start(),r.started=!0,this.#r!=null&&r.subscriber.pause(this.#r)),this}async once(t,e){const r=await this.#w(t);return r.listeners.push({listener:e,once:!0}),r.started||(r.subscriber.start(),r.started=!0,this.#r!=null&&r.subscriber.pause(this.#r)),this}async emit(t,...e){const r=await this.#m(t,e);if(!r||r.listeners.length===0)return!1;const n=r.listeners.length;return r.listeners=r.listeners.filter(({listener:i,once:a})=>{const c=new d.EventPayload(this,a?null:i,t);try{i.call(this,...e,c)}catch{}return!a}),r.listeners.length===0&&(r.started&&r.subscriber.stop(),this.#t.delete(r.tag)),n>0}async listenerCount(t){if(t){const r=await this.#m(t);return r?r.listeners.length:0}let e=0;for(const{listeners:r}of this.#t.values())e+=r.length;return e}async listeners(t){if(t){const r=await this.#m(t);return r?r.listeners.map(({listener:n})=>n):[]}let e=[];for(const{listeners:r}of this.#t.values())e=e.concat(r.map(({listener:n})=>n));return e}async off(t,e){const r=await this.#m(t);if(!r)return this;if(e){const n=r.listeners.map(({listener:i})=>i).indexOf(e);n>=0&&r.listeners.splice(n,1)}return(!e||r.listeners.length===0)&&(r.started&&r.subscriber.stop(),this.#t.delete(r.tag)),this}async removeAllListeners(t){if(t){const{tag:e,started:r,subscriber:n}=await this.#w(t);r&&n.stop(),this.#t.delete(e)}else for(const[e,{started:r,subscriber:n}]of this.#t)r&&n.stop(),this.#t.delete(e);return this}async addListener(t,e){return await this.on(t,e)}async removeListener(t,e){return this.off(t,e)}get destroyed(){return this.#s}destroy(){this.removeAllListeners();for(const t of this.#l.keys())this._clearTimeout(t);this.#s=!0}get paused(){return this.#r!=null}set paused(t){!!t!==this.paused&&(this.paused?this.resume():this.pause(!1))}pause(t){if(this.#a=-1,this.#r!=null){if(this.#r==!!t)return;o.assert(!1,"cannot change pause type; resume first","UNSUPPORTED_OPERATION",{operation:"pause"})}this._forEachSubscriber(e=>e.pause(t)),this.#r=!!t;for(const e of this.#l.values())e.timer&&clearTimeout(e.timer),e.time=Te()-e.time}resume(){if(this.#r!=null){this._forEachSubscriber(t=>t.resume()),this.#r=null;for(const t of this.#l.values()){let e=t.time;e<0&&(e=0),t.time=Te(),setTimeout(t.func,e)}}}}function Lo(s,t){try{const e=qe(s,t);if(e)return d.toUtf8String(e)}catch{}return null}function qe(s,t){if(s==="0x")return null;try{const e=d.getNumber(o.dataSlice(s,t,t+32)),r=d.getNumber(o.dataSlice(s,e,e+32));return o.dataSlice(s,e+32,e+32+r)}catch{}return null}function $r(s){const t=d.toBeArray(s);if(t.length>32)throw new Error("internal; should not happen");const e=new Uint8Array(32);return e.set(t,32-t.length),e}function Uo(s){if(s.length%32===0)return s;const t=new Uint8Array(Math.ceil(s.length/32)*32);return t.set(s),t}const Mo=new Uint8Array([]);function Ho(s){const t=[];let e=0;for(let r=0;r<s.length;r++)t.push(Mo),e+=32;for(let r=0;r<s.length;r++){const n=o.getBytes(s[r]);t[r]=$r(e),t.push($r(n.length)),t.push(Uo(n)),e+=32+Math.ceil(n.length/32)*32}return o.concat(t)}const ts="0x0000000000000000000000000000000000000000000000000000000000000000";function Qo(s){const t={sender:"",urls:[],calldata:"",selector:"",extraData:"",errorArgs:[]};o.assert(o.dataLength(s)>=160,"insufficient OffchainLookup data","OFFCHAIN_FAULT",{reason:"insufficient OffchainLookup data"});const e=o.dataSlice(s,0,32);o.assert(o.dataSlice(e,0,12)===o.dataSlice(ts,0,12),"corrupt OffchainLookup sender","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup sender"}),t.sender=o.dataSlice(e,12);try{const r=[],n=d.getNumber(o.dataSlice(s,32,64)),i=d.getNumber(o.dataSlice(s,n,n+32)),a=o.dataSlice(s,n+32);for(let c=0;c<i;c++){const l=Lo(a,c*32);if(l==null)throw new Error("abort");r.push(l)}t.urls=r}catch{o.assert(!1,"corrupt OffchainLookup urls","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup urls"})}try{const r=qe(s,64);if(r==null)throw new Error("abort");t.calldata=r}catch{o.assert(!1,"corrupt OffchainLookup calldata","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup calldata"})}o.assert(o.dataSlice(s,100,128)===o.dataSlice(ts,0,28),"corrupt OffchainLookup callbaackSelector","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup callbaackSelector"}),t.selector=o.dataSlice(s,96,100);try{const r=qe(s,128);if(r==null)throw new Error("abort");t.extraData=r}catch{o.assert(!1,"corrupt OffchainLookup extraData","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup extraData"})}return t.errorArgs="sender,urls,calldata,selector,extraData".split(/,/).map(r=>t[r]),t}function Nt(s,t){if(s.provider)return s.provider;o.assert(!1,"missing provider","UNSUPPORTED_OPERATION",{operation:t})}async function es(s,t){let e=d.copyRequest(t);if(e.to!=null&&(e.to=o.resolveAddress(e.to,s)),e.from!=null){const r=e.from;e.from=Promise.all([s.getAddress(),o.resolveAddress(r,s)]).then(([n,i])=>(o.assertArgument(n.toLowerCase()===i.toLowerCase(),"transaction from mismatch","tx.from",i),n))}else e.from=s.getAddress();return await o.resolveProperties(e)}class fr{provider;constructor(t){o.defineProperties(this,{provider:t||null})}async getNonce(t){return Nt(this,"getTransactionCount").getTransactionCount(await this.getAddress(),t)}async populateCall(t){return await es(this,t)}async populateTransaction(t){const e=Nt(this,"populateTransaction"),r=await es(this,t);r.nonce==null&&(r.nonce=await this.getNonce("pending")),r.gasLimit==null&&(r.gasLimit=await this.estimateGas(r));const n=await this.provider.getNetwork();if(r.chainId!=null){const a=d.getBigInt(r.chainId);o.assertArgument(a===n.chainId,"transaction chainId mismatch","tx.chainId",t.chainId)}else r.chainId=n.chainId;const i=r.maxFeePerGas!=null||r.maxPriorityFeePerGas!=null;if(r.gasPrice!=null&&(r.type===2||i)?o.assertArgument(!1,"eip-1559 transaction do not support gasPrice","tx",t):(r.type===0||r.type===1)&&i&&o.assertArgument(!1,"pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas","tx",t),(r.type===2||r.type==null)&&r.maxFeePerGas!=null&&r.maxPriorityFeePerGas!=null)r.type=2;else if(r.type===0||r.type===1){const a=await e.getFeeData();o.assert(a.gasPrice!=null,"network does not support gasPrice","UNSUPPORTED_OPERATION",{operation:"getGasPrice"}),r.gasPrice==null&&(r.gasPrice=a.gasPrice)}else{const a=await e.getFeeData();if(r.type==null)if(a.maxFeePerGas!=null&&a.maxPriorityFeePerGas!=null)if(r.type=2,r.gasPrice!=null){const c=r.gasPrice;delete r.gasPrice,r.maxFeePerGas=c,r.maxPriorityFeePerGas=c}else r.maxFeePerGas==null&&(r.maxFeePerGas=a.maxFeePerGas),r.maxPriorityFeePerGas==null&&(r.maxPriorityFeePerGas=a.maxPriorityFeePerGas);else a.gasPrice!=null?(o.assert(!i,"network does not support EIP-1559","UNSUPPORTED_OPERATION",{operation:"populateTransaction"}),r.gasPrice==null&&(r.gasPrice=a.gasPrice),r.type=0):o.assert(!1,"failed to get consistent fee data","UNSUPPORTED_OPERATION",{operation:"signer.getFeeData"});else(r.type===2||r.type===3)&&(r.maxFeePerGas==null&&(r.maxFeePerGas=a.maxFeePerGas),r.maxPriorityFeePerGas==null&&(r.maxPriorityFeePerGas=a.maxPriorityFeePerGas))}return await o.resolveProperties(r)}async estimateGas(t){return Nt(this,"estimateGas").estimateGas(await this.populateCall(t))}async call(t){return Nt(this,"call").call(await this.populateCall(t))}async resolveName(t){return await Nt(this,"resolveName").resolveName(t)}async sendTransaction(t){const e=Nt(this,"sendTransaction"),r=await this.populateTransaction(t);delete r.from;const n=tt.from(r);return await e.broadcastTransaction(await this.signTransaction(n))}}class dr extends fr{address;constructor(t,e){super(e),o.defineProperties(this,{address:t})}async getAddress(){return this.address}connect(t){return new dr(this.address,t)}#t(t,e){o.assert(!1,`VoidSigner cannot sign ${t}`,"UNSUPPORTED_OPERATION",{operation:e})}async signTransaction(t){this.#t("transactions","signTransaction")}async signMessage(t){this.#t("messages","signMessage")}async signTypedData(t,e,r){this.#t("typed-data","signTypedData")}}function Go(s){return JSON.parse(JSON.stringify(s))}class _s{#t;#e;#r;#s;#n;#o;constructor(t){this.#t=t,this.#e=null,this.#r=this.#i.bind(this),this.#s=!1,this.#n=null,this.#o=!1}_subscribe(t){throw new Error("subclasses must override this")}_emitResults(t,e){throw new Error("subclasses must override this")}_recover(t){throw new Error("subclasses must override this")}async#i(t){try{this.#e==null&&(this.#e=this._subscribe(this.#t));let e=null;try{e=await this.#e}catch(i){if(!o.isError(i,"UNSUPPORTED_OPERATION")||i.operation!=="eth_newFilter")throw i}if(e==null){this.#e=null,this.#t._recoverSubscriber(this,this._recover(this.#t));return}const r=await this.#t.getNetwork();if(this.#n||(this.#n=r),this.#n.chainId!==r.chainId)throw new Error("chaid changed");if(this.#o)return;const n=await this.#t.send("eth_getFilterChanges",[e]);await this._emitResults(this.#t,n)}catch(e){console.log("@TODO",e)}this.#t.once("block",this.#r)}#a(){const t=this.#e;t&&(this.#e=null,t.then(e=>{this.#t.destroyed||this.#t.send("eth_uninstallFilter",[e])}))}start(){this.#s||(this.#s=!0,this.#i(-2))}stop(){this.#s&&(this.#s=!1,this.#o=!0,this.#a(),this.#t.off("block",this.#r))}pause(t){t&&this.#a(),this.#t.off("block",this.#r)}resume(){this.start()}}class Vo extends _s{#t;constructor(t,e){super(t),this.#t=Go(e)}_recover(t){return new hr(t,this.#t)}async _subscribe(t){return await t.send("eth_newFilter",[this.#t])}async _emitResults(t,e){for(const r of e)t.emit(this.#t,t._wrapLog(r,t._network))}}class Jo extends _s{async _subscribe(t){return await t.send("eth_newPendingTransactionFilter",[])}async _emitResults(t,e){for(const r of e)t.emit("pending",r)}}const zo="bigint,boolean,function,number,string,symbol".split(/,/g);function ae(s){if(s==null||zo.indexOf(typeof s)>=0||typeof s.getAddress=="function")return s;if(Array.isArray(s))return s.map(ae);if(typeof s=="object")return Object.keys(s).reduce((t,e)=>(t[e]=s[e],t),{});throw new Error(`should not happen: ${s} (${typeof s})`)}function Ko(s){return new Promise(t=>{setTimeout(t,s)})}function kt(s){return s&&s.toLowerCase()}function rs(s){return s&&typeof s.pollingInterval=="number"}const $s={polling:!1,staticNetwork:null,batchStallTime:10,batchMaxSize:1<<20,batchMaxCount:100,cacheTimeout:250,pollingInterval:4e3};class Fe extends fr{address;constructor(t,e){super(t),e=o.getAddress(e),o.defineProperties(this,{address:e})}connect(t){o.assert(!1,"cannot reconnect JsonRpcSigner","UNSUPPORTED_OPERATION",{operation:"signer.connect"})}async getAddress(){return this.address}async populateTransaction(t){return await this.populateCall(t)}async sendUncheckedTransaction(t){const e=ae(t),r=[];if(e.from){const i=e.from;r.push((async()=>{const a=await o.resolveAddress(i,this.provider);o.assertArgument(a!=null&&a.toLowerCase()===this.address.toLowerCase(),"from address mismatch","transaction",t),e.from=a})())}else e.from=this.address;if(e.gasLimit==null&&r.push((async()=>{e.gasLimit=await this.provider.estimateGas({...e,from:this.address})})()),e.to!=null){const i=e.to;r.push((async()=>{e.to=await o.resolveAddress(i,this.provider)})())}r.length&&await Promise.all(r);const n=this.provider.getRpcTransaction(e);return this.provider.send("eth_sendTransaction",[n])}async sendTransaction(t){const e=await this.provider.getBlockNumber(),r=await this.sendUncheckedTransaction(t);return await new Promise((n,i)=>{const a=[1e3,100];let c=0;const l=async()=>{try{const u=await this.provider.getTransaction(r);if(u!=null){n(u.replaceableTransaction(e));return}}catch(u){if(o.isError(u,"CANCELLED")||o.isError(u,"BAD_DATA")||o.isError(u,"NETWORK_ERROR")||o.isError(u,"UNSUPPORTED_OPERATION")){u.info==null&&(u.info={}),u.info.sendTransactionHash=r,i(u);return}if(o.isError(u,"INVALID_ARGUMENT")&&(c++,u.info==null&&(u.info={}),u.info.sendTransactionHash=r,c>10)){i(u);return}this.provider.emit("error",o.makeError("failed to fetch transation after sending (will try again)","UNKNOWN_ERROR",{error:u}))}this.provider._setTimeout(()=>{l()},a.pop()||4e3)};l()})}async signTransaction(t){const e=ae(t);if(e.from){const n=await o.resolveAddress(e.from,this.provider);o.assertArgument(n!=null&&n.toLowerCase()===this.address.toLowerCase(),"from address mismatch","transaction",t),e.from=n}else e.from=this.address;const r=this.provider.getRpcTransaction(e);return await this.provider.send("eth_signTransaction",[r])}async signMessage(t){const e=typeof t=="string"?d.toUtf8Bytes(t):t;return await this.provider.send("personal_sign",[o.hexlify(e),this.address.toLowerCase()])}async signTypedData(t,e,r){const n=ae(r),i=await j.resolveNames(t,e,n,async a=>{const c=await o.resolveAddress(a);return o.assertArgument(c!=null,"TypedData does not support null address","value",a),c});return await this.provider.send("eth_signTypedData_v4",[this.address.toLowerCase(),JSON.stringify(j.getPayload(i.domain,e,i.value))])}async unlock(t){return this.provider.send("personal_unlockAccount",[this.address.toLowerCase(),t,null])}async _legacySignMessage(t){const e=typeof t=="string"?d.toUtf8Bytes(t):t;return await this.provider.send("eth_sign",[this.address.toLowerCase(),o.hexlify(e)])}}class jo extends Fo{#t;#e;#r;#s;#n;#o;#i;#a(){if(this.#s)return;const t=this._getOption("batchMaxCount")===1?0:this._getOption("batchStallTime");this.#s=setTimeout(()=>{this.#s=null;const e=this.#r;for(this.#r=[];e.length;){const r=[e.shift()];for(;e.length&&r.length!==this.#t.batchMaxCount;)if(r.push(e.shift()),JSON.stringify(r.map(i=>i.payload)).length>this.#t.batchMaxSize){e.unshift(r.pop());break}(async()=>{const n=r.length===1?r[0].payload:r.map(i=>i.payload);this.emit("debug",{action:"sendRpcPayload",payload:n});try{const i=await this._send(n);this.emit("debug",{action:"receiveRpcResult",result:i});for(const{resolve:a,reject:c,payload:l}of r){if(this.destroyed){c(o.makeError("provider destroyed; cancelled request","UNSUPPORTED_OPERATION",{operation:l.method}));continue}const u=i.filter(f=>f.id===l.id)[0];if(u==null){const f=o.makeError("missing response for request","BAD_DATA",{value:i,info:{payload:l}});this.emit("error",f),c(f);continue}if("error"in u){c(this.getRpcError(l,u));continue}a(u.result)}}catch(i){this.emit("debug",{action:"receiveRpcError",error:i});for(const{reject:a}of r)a(i)}})()}},t)}constructor(t,e){super(t,e),this.#e=1,this.#t=Object.assign({},$s,e||{}),this.#r=[],this.#s=null,this.#o=null,this.#i=null;{let n=null;const i=new Promise(a=>{n=a});this.#n={promise:i,resolve:n}}const r=this._getOption("staticNetwork");typeof r=="boolean"?(o.assertArgument(!r||t!=="any","staticNetwork cannot be used on special network 'any'","options",e),r&&t!=null&&(this.#o=W.from(t))):r&&(o.assertArgument(t==null||r.matches(t),"staticNetwork MUST match network object","options",e),this.#o=r)}_getOption(t){return this.#t[t]}get _network(){return o.assert(this.#o,"network is not available yet","NETWORK_ERROR"),this.#o}async _perform(t){if(t.method==="call"||t.method==="estimateGas"){let r=t.transaction;if(r&&r.type!=null&&d.getBigInt(r.type)&&r.maxFeePerGas==null&&r.maxPriorityFeePerGas==null){const n=await this.getFeeData();n.maxFeePerGas==null&&n.maxPriorityFeePerGas==null&&(t=Object.assign({},t,{transaction:Object.assign({},r,{type:void 0})}))}}const e=this.getRpcRequest(t);return e!=null?await this.send(e.method,e.args):super._perform(t)}async _detectNetwork(){const t=this._getOption("staticNetwork");if(t)if(t===!0){if(this.#o)return this.#o}else return t;return this.#i?await this.#i:this.ready?(this.#i=(async()=>{try{const e=W.from(d.getBigInt(await this.send("eth_chainId",[])));return this.#i=null,e}catch(e){throw this.#i=null,e}})(),await this.#i):(this.#i=(async()=>{const e={id:this.#e++,method:"eth_chainId",params:[],jsonrpc:"2.0"};this.emit("debug",{action:"sendRpcPayload",payload:e});let r;try{r=(await this._send(e))[0],this.#i=null}catch(n){throw this.#i=null,this.emit("debug",{action:"receiveRpcError",error:n}),n}if(this.emit("debug",{action:"receiveRpcResult",result:r}),"result"in r)return W.from(d.getBigInt(r.result));throw this.getRpcError(e,r)})(),await this.#i)}_start(){this.#n==null||this.#n.resolve==null||(this.#n.resolve(),this.#n=null,(async()=>{for(;this.#o==null&&!this.destroyed;)try{this.#o=await this._detectNetwork()}catch(t){if(this.destroyed)break;console.log("JsonRpcProvider failed to detect network and cannot start up; retry in 1s (perhaps the URL is wrong or the node is not started)"),this.emit("error",o.makeError("failed to bootstrap network detection","NETWORK_ERROR",{event:"initial-network-discovery",info:{error:t}})),await Ko(1e3)}this.#a()})())}async _waitUntilReady(){if(this.#n!=null)return await this.#n.promise}_getSubscriber(t){return t.type==="pending"?new Jo(this):t.type==="event"?this._getOption("polling")?new hr(this,t.filter):new Vo(this,t.filter):t.type==="orphan"&&t.filter.orphan==="drop-log"?new Xs("orphan"):super._getSubscriber(t)}get ready(){return this.#n==null}getRpcTransaction(t){const e={};return["chainId","gasLimit","gasPrice","type","maxFeePerGas","maxPriorityFeePerGas","nonce","value"].forEach(r=>{if(t[r]==null)return;let n=r;r==="gasLimit"&&(n="gas"),e[n]=d.toQuantity(d.getBigInt(t[r],`tx.${r}`))}),["from","to","data"].forEach(r=>{t[r]!=null&&(e[r]=o.hexlify(t[r]))}),t.accessList&&(e.accessList=d.accessListify(t.accessList)),t.blobVersionedHashes&&(e.blobVersionedHashes=t.blobVersionedHashes.map(r=>r.toLowerCase())),e}getRpcRequest(t){switch(t.method){case"chainId":return{method:"eth_chainId",args:[]};case"getBlockNumber":return{method:"eth_blockNumber",args:[]};case"getGasPrice":return{method:"eth_gasPrice",args:[]};case"getPriorityFee":return{method:"eth_maxPriorityFeePerGas",args:[]};case"getBalance":return{method:"eth_getBalance",args:[kt(t.address),t.blockTag]};case"getTransactionCount":return{method:"eth_getTransactionCount",args:[kt(t.address),t.blockTag]};case"getCode":return{method:"eth_getCode",args:[kt(t.address),t.blockTag]};case"getStorage":return{method:"eth_getStorageAt",args:[kt(t.address),"0x"+t.position.toString(16),t.blockTag]};case"broadcastTransaction":return{method:"eth_sendRawTransaction",args:[t.signedTransaction]};case"getBlock":if("blockTag"in t)return{method:"eth_getBlockByNumber",args:[t.blockTag,!!t.includeTransactions]};if("blockHash"in t)return{method:"eth_getBlockByHash",args:[t.blockHash,!!t.includeTransactions]};break;case"getTransaction":return{method:"eth_getTransactionByHash",args:[t.hash]};case"getTransactionReceipt":return{method:"eth_getTransactionReceipt",args:[t.hash]};case"call":return{method:"eth_call",args:[this.getRpcTransaction(t.transaction),t.blockTag]};case"estimateGas":return{method:"eth_estimateGas",args:[this.getRpcTransaction(t.transaction)]};case"getLogs":return t.filter&&t.filter.address!=null&&(Array.isArray(t.filter.address)?t.filter.address=t.filter.address.map(kt):t.filter.address=kt(t.filter.address)),{method:"eth_getLogs",args:[t.filter]}}return null}getRpcError(t,e){const{method:r}=t,{error:n}=e;if(r==="eth_estimateGas"&&n.message){const c=n.message;if(!c.match(/revert/i)&&c.match(/insufficient funds/i))return o.makeError("insufficient funds","INSUFFICIENT_FUNDS",{transaction:t.params[0],info:{payload:t,error:n}})}if(r==="eth_call"||r==="eth_estimateGas"){const c=We(n),l=d.AbiCoder.getBuiltinCallException(r==="eth_call"?"call":"estimateGas",t.params[0],c?c.data:null);return l.info={error:n,payload:t},l}const i=JSON.stringify(Yo(n));if(typeof n.message=="string"&&n.message.match(/user denied|ethers-user-denied/i)){const c={eth_sign:"signMessage",personal_sign:"signMessage",eth_signTypedData_v4:"signTypedData",eth_signTransaction:"signTransaction",eth_sendTransaction:"sendTransaction",eth_requestAccounts:"requestAccess",wallet_requestAccounts:"requestAccess"};return o.makeError("user rejected action","ACTION_REJECTED",{action:c[r]||"unknown",reason:"rejected",info:{payload:t,error:n}})}if(r==="eth_sendRawTransaction"||r==="eth_sendTransaction"){const c=t.params[0];if(i.match(/insufficient funds|base fee exceeds gas limit/i))return o.makeError("insufficient funds for intrinsic transaction cost","INSUFFICIENT_FUNDS",{transaction:c,info:{error:n}});if(i.match(/nonce/i)&&i.match(/too low/i))return o.makeError("nonce has already been used","NONCE_EXPIRED",{transaction:c,info:{error:n}});if(i.match(/replacement transaction/i)&&i.match(/underpriced/i))return o.makeError("replacement fee too low","REPLACEMENT_UNDERPRICED",{transaction:c,info:{error:n}});if(i.match(/only replay-protected/i))return o.makeError("legacy pre-eip-155 transactions not supported","UNSUPPORTED_OPERATION",{operation:r,info:{transaction:c,info:{error:n}}})}let a=!!i.match(/the method .* does not exist/i);return a||n&&n.details&&n.details.startsWith("Unauthorized method:")&&(a=!0),a?o.makeError("unsupported operation","UNSUPPORTED_OPERATION",{operation:t.method,info:{error:n,payload:t}}):o.makeError("could not coalesce error","UNKNOWN_ERROR",{error:n,payload:t})}send(t,e){if(this.destroyed)return Promise.reject(o.makeError("provider destroyed; cancelled request","UNSUPPORTED_OPERATION",{operation:t}));const r=this.#e++,n=new Promise((i,a)=>{this.#r.push({resolve:i,reject:a,payload:{method:t,params:e,id:r,jsonrpc:"2.0"}})});return this.#a(),n}async getSigner(t){t==null&&(t=0);const e=this.send("eth_accounts",[]);if(typeof t=="number"){const n=await e;if(t>=n.length)throw new Error("no such account");return new Fe(this,n[t])}const{accounts:r}=await o.resolveProperties({network:this.getNetwork(),accounts:e});t=o.getAddress(t);for(const n of r)if(o.getAddress(n)===t)return new Fe(this,t);throw new Error("invalid account")}async listAccounts(){return(await this.send("eth_accounts",[])).map(e=>new Fe(this,e))}destroy(){this.#s&&(clearTimeout(this.#s),this.#s=null);for(const{payload:t,reject:e}of this.#r)e(o.makeError("provider destroyed; cancelled request","UNSUPPORTED_OPERATION",{operation:t.method}));this.#r=[],super.destroy()}}class tn extends jo{#t;constructor(t,e){super(t,e);let r=this._getOption("pollingInterval");r==null&&(r=$s.pollingInterval),this.#t=r}_getSubscriber(t){const e=super._getSubscriber(t);return rs(e)&&(e.pollingInterval=this.#t),e}get pollingInterval(){return this.#t}set pollingInterval(t){if(!Number.isInteger(t)||t<0)throw new Error("invalid interval");this.#t=t,this._forEachSubscriber(e=>{rs(e)&&(e.pollingInterval=this.#t)})}}class Zo extends tn{#t;constructor(t,e,r){t==null&&(t="http://localhost:8545"),super(e,r),typeof t=="string"?this.#t=new nt(t):this.#t=t.clone()}_getConnection(){return this.#t.clone()}async send(t,e){return await this._start(),await super.send(t,e)}async _send(t){const e=this._getConnection();e.body=JSON.stringify(t),e.setHeader("content-type","application/json");const r=await e.send();r.assertOk();let n=r.bodyJson;return Array.isArray(n)||(n=[n]),n}}function We(s){if(s==null)return null;if(typeof s.message=="string"&&s.message.match(/revert/i)&&o.isHexString(s.data))return{message:s.message,data:s.data};if(typeof s=="object"){for(const t in s){const e=We(s[t]);if(e)return e}return null}if(typeof s=="string")try{return We(JSON.parse(s))}catch{}return null}function Xe(s,t){if(s!=null){if(typeof s.message=="string"&&t.push(s.message),typeof s=="object")for(const e in s)Xe(s[e],t);if(typeof s=="string")try{return Xe(JSON.parse(s),t)}catch{}}}function Yo(s){const t=[];return Xe(s,t),t}exports.AbstractSigner=fr;exports.JsonRpcApiPollingProvider=tn;exports.JsonRpcProvider=Zo;exports.SHA2=_e;exports.SigningKey=st;exports.Transaction=tt;exports.TypedDataEncoder=j;exports.VoidSigner=dr;exports.ZeroAddress=Ft;exports.computeAddress=Ks;exports.createHmac=Nn;exports.decodeBase58=sn;exports.encodeBase58=ss;exports.getCreateAddress=xs;exports.pbkdf2=hs;exports.pbkdf2Sync=kn;exports.randomBytes=Sn;exports.sha256=Zt;exports.sha256$1=Bt;
|