@monygroupcorp/micro-web3 0.1.1 → 0.1.3

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.
@@ -1,4 +1,4 @@
1
- "use strict";var t=require("@monygroupcorp/microact"),e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function r(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var n,i={exports:{}};var o=(n||(n=1,function(t,e){function r(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function i(t,e,r){if(i.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))}var o;"object"==typeof t?t.exports=i:e.BN=i,i.BN=i,i.wordSize=26;try{o="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:require("buffer").Buffer}catch(t){}function s(t,e){var n=t.charCodeAt(e);return n>=48&&n<=57?n-48:n>=65&&n<=70?n-55:n>=97&&n<=102?n-87:void r(!1,"Invalid character in "+t)}function a(t,e,r){var n=s(t,r);return r-1>=e&&(n|=s(t,r-1)<<4),n}function l(t,e,n,i){for(var o=0,s=0,a=Math.min(t.length,n),l=e;l<a;l++){var c=t.charCodeAt(l)-48;o*=i,s=c>=49?c-49+10:c>=17?c-17+10:c,r(c>=0&&s<i,"Invalid character"),o+=s}return o}function c(t,e){t.words=e.words,t.length=e.length,t.negative=e.negative,t.red=e.red}if(i.isBN=function(t){return t instanceof i||null!==t&&"object"==typeof t&&t.constructor.wordSize===i.wordSize&&Array.isArray(t.words)},i.max=function(t,e){return t.cmp(e)>0?t:e},i.min=function(t,e){return t.cmp(e)<0?t:e},i.prototype._init=function(t,e,n){if("number"==typeof t)return this._initNumber(t,e,n);if("object"==typeof t)return this._initArray(t,e,n);"hex"===e&&(e=16),r(e===(0|e)&&e>=2&&e<=36);var i=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(i++,this.negative=1),i<t.length&&(16===e?this._parseHex(t,i,n):(this._parseBase(t,e,i),"le"===n&&this._initArray(this.toArray(),e,n)))},i.prototype._initNumber=function(t,e,n){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(r(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===n&&this._initArray(this.toArray(),e,n)},i.prototype._initArray=function(t,e,n){if(r("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var o,s,a=0;if("be"===n)for(i=t.length-1,o=0;i>=0;i-=3)s=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[o]|=s<<a&67108863,this.words[o+1]=s>>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===n)for(i=0,o=0;i<t.length;i+=3)s=t[i]|t[i+1]<<8|t[i+2]<<16,this.words[o]|=s<<a&67108863,this.words[o+1]=s>>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this._strip()},i.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var n=0;n<this.length;n++)this.words[n]=0;var i,o=0,s=0;if("be"===r)for(n=t.length-1;n>=e;n-=2)i=a(t,e,n)<<o,this.words[s]|=67108863&i,o>=18?(o-=18,s+=1,this.words[s]|=i>>>26):o+=8;else for(n=(t.length-e)%2==0?e+1:e;n<t.length;n+=2)i=a(t,e,n)<<o,this.words[s]|=67108863&i,o>=18?(o-=18,s+=1,this.words[s]|=i>>>26):o+=8;this._strip()},i.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var o=t.length-r,s=o%n,a=Math.min(o,o-s)+r,c=0,u=r;u<a;u+=n)c=l(t,u,u+n,e),this.imuln(i),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c);if(0!==s){var h=1;for(c=l(t,u,t.length,e),u=0;u<s;u++)h*=e;this.imuln(h),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c)}this._strip()},i.prototype.copy=function(t){t.words=new Array(this.length);for(var e=0;e<this.length;e++)t.words[e]=this.words[e];t.length=this.length,t.negative=this.negative,t.red=this.red},i.prototype._move=function(t){c(t,this)},i.prototype.clone=function(){var t=new i(null);return this.copy(t),t},i.prototype._expand=function(t){for(;this.length<t;)this.words[this.length++]=0;return this},i.prototype._strip=function(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this._normSign()},i.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!=typeof Symbol&&"function"==typeof Symbol.for)try{i.prototype[Symbol.for("nodejs.util.inspect.custom")]=u}catch(t){i.prototype.inspect=u}else i.prototype.inspect=u;function u(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var h=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],d=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function p(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],o=0|e.words[0],s=i*o,a=67108863&s,l=s/67108864|0;r.words[0]=a;for(var c=1;c<n;c++){for(var u=l>>>26,h=67108863&l,d=Math.min(c,e.length-1),f=Math.max(0,c-t.length+1);f<=d;f++){var p=c-f|0;u+=(s=(i=0|t.words[p])*(o=0|e.words[f])+h)/67108864|0,h=67108863&s}r.words[c]=0|h,l=0|u}return 0!==l?r.words[c]=0|l:r.length--,r._strip()}i.prototype.toString=function(t,e){var n;if(e=0|e||1,16===(t=t||10)||"hex"===t){n="";for(var i=0,o=0,s=0;s<this.length;s++){var a=this.words[s],l=(16777215&(a<<i|o)).toString(16);o=a>>>24-i&16777215,(i+=2)>=26&&(i-=26,s--),n=0!==o||s!==this.length-1?h[6-l.length]+l+n:l+n}for(0!==o&&(n=o.toString(16)+n);n.length%e!==0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(t===(0|t)&&t>=2&&t<=36){var c=d[t],u=f[t];n="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modrn(u).toString(t);n=(p=p.idivn(u)).isZero()?m+n:h[c-m.length]+m+n}for(this.isZero()&&(n="0"+n);n.length%e!==0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}r(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},i.prototype.toJSON=function(){return this.toString(16,2)},o&&(i.prototype.toBuffer=function(t,e){return this.toArrayLike(o,t,e)}),i.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},i.prototype.toArrayLike=function(t,e,n){this._strip();var i=this.byteLength(),o=n||Math.max(1,i);r(i<=o,"byte array longer than desired length"),r(o>0,"Requested array length <= 0");var s=function(t,e){return t.allocUnsafe?t.allocUnsafe(e):new t(e)}(t,o);return this["_toArrayLike"+("le"===e?"LE":"BE")](s,i),s},i.prototype._toArrayLikeLE=function(t,e){for(var r=0,n=0,i=0,o=0;i<this.length;i++){var s=this.words[i]<<o|n;t[r++]=255&s,r<t.length&&(t[r++]=s>>8&255),r<t.length&&(t[r++]=s>>16&255),6===o?(r<t.length&&(t[r++]=s>>24&255),n=0,o=0):(n=s>>>24,o+=2)}if(r<t.length)for(t[r++]=n;r<t.length;)t[r++]=0},i.prototype._toArrayLikeBE=function(t,e){for(var r=t.length-1,n=0,i=0,o=0;i<this.length;i++){var s=this.words[i]<<o|n;t[r--]=255&s,r>=0&&(t[r--]=s>>8&255),r>=0&&(t[r--]=s>>16&255),6===o?(r>=0&&(t[r--]=s>>24&255),n=0,o=0):(n=s>>>24,o+=2)}if(r>=0)for(t[r--]=n;r>=0;)t[r--]=0},Math.clz32?i.prototype._countBits=function(t){return 32-Math.clz32(t)}:i.prototype._countBits=function(t){var e=t,r=0;return e>=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},i.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 8191&e||(r+=13,e>>>=13),127&e||(r+=7,e>>>=7),15&e||(r+=4,e>>>=4),3&e||(r+=2,e>>>=2),1&e||r++,r},i.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;e<this.length;e++){var r=this._zeroBits(this.words[e]);if(t+=r,26!==r)break}return t},i.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},i.prototype.toTwos=function(t){return 0!==this.negative?this.abs().inotn(t).iaddn(1):this.clone()},i.prototype.fromTwos=function(t){return this.testn(t-1)?this.notn(t).iaddn(1).ineg():this.clone()},i.prototype.isNeg=function(){return 0!==this.negative},i.prototype.neg=function(){return this.clone().ineg()},i.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},i.prototype.iuor=function(t){for(;this.length<t.length;)this.words[this.length++]=0;for(var e=0;e<t.length;e++)this.words[e]=this.words[e]|t.words[e];return this._strip()},i.prototype.ior=function(t){return r(0===(this.negative|t.negative)),this.iuor(t)},i.prototype.or=function(t){return this.length>t.length?this.clone().ior(t):t.clone().ior(this)},i.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},i.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;r<e.length;r++)this.words[r]=this.words[r]&t.words[r];return this.length=e.length,this._strip()},i.prototype.iand=function(t){return r(0===(this.negative|t.negative)),this.iuand(t)},i.prototype.and=function(t){return this.length>t.length?this.clone().iand(t):t.clone().iand(this)},i.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},i.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;n<r.length;n++)this.words[n]=e.words[n]^r.words[n];if(this!==e)for(;n<e.length;n++)this.words[n]=e.words[n];return this.length=e.length,this._strip()},i.prototype.ixor=function(t){return r(0===(this.negative|t.negative)),this.iuxor(t)},i.prototype.xor=function(t){return this.length>t.length?this.clone().ixor(t):t.clone().ixor(this)},i.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},i.prototype.inotn=function(t){r("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),n=t%26;this._expand(e),n>0&&e--;for(var i=0;i<e;i++)this.words[i]=67108863&~this.words[i];return n>0&&(this.words[i]=~this.words[i]&67108863>>26-n),this._strip()},i.prototype.notn=function(t){return this.clone().inotn(t)},i.prototype.setn=function(t,e){r("number"==typeof t&&t>=0);var n=t/26|0,i=t%26;return this._expand(n+1),this.words[n]=e?this.words[n]|1<<i:this.words[n]&~(1<<i),this._strip()},i.prototype.iadd=function(t){var e,r,n;if(0!==this.negative&&0===t.negative)return this.negative=0,e=this.isub(t),this.negative^=1,this._normSign();if(0===this.negative&&0!==t.negative)return t.negative=0,e=this.isub(t),t.negative=1,e._normSign();this.length>t.length?(r=this,n=t):(r=t,n=this);for(var i=0,o=0;o<n.length;o++)e=(0|r.words[o])+(0|n.words[o])+i,this.words[o]=67108863&e,i=e>>>26;for(;0!==i&&o<r.length;o++)e=(0|r.words[o])+i,this.words[o]=67108863&e,i=e>>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;o<r.length;o++)this.words[o]=r.words[o];return this},i.prototype.add=function(t){var e;return 0!==t.negative&&0===this.negative?(t.negative=0,e=this.sub(t),t.negative^=1,e):0===t.negative&&0!==this.negative?(this.negative=0,e=t.sub(this),this.negative=1,e):this.length>t.length?this.clone().iadd(t):t.clone().iadd(this)},i.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,n,i=this.cmp(t);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(r=this,n=t):(r=t,n=this);for(var o=0,s=0;s<n.length;s++)o=(e=(0|r.words[s])-(0|n.words[s])+o)>>26,this.words[s]=67108863&e;for(;0!==o&&s<r.length;s++)o=(e=(0|r.words[s])+o)>>26,this.words[s]=67108863&e;if(0===o&&s<r.length&&r!==this)for(;s<r.length;s++)this.words[s]=r.words[s];return this.length=Math.max(this.length,s),r!==this&&(this.negative=1),this._strip()},i.prototype.sub=function(t){return this.clone().isub(t)};var m=function(t,e,r){var n,i,o,s=t.words,a=e.words,l=r.words,c=0,u=0|s[0],h=8191&u,d=u>>>13,f=0|s[1],p=8191&f,m=f>>>13,g=0|s[2],v=8191&g,y=g>>>13,w=0|s[3],b=8191&w,E=w>>>13,A=0|s[4],k=8191&A,S=A>>>13,C=0|s[5],x=8191&C,_=C>>>13,P=0|s[6],T=8191&P,I=P>>>13,N=0|s[7],M=8191&N,B=N>>>13,R=0|s[8],F=8191&R,O=R>>>13,D=0|s[9],U=8191&D,L=D>>>13,q=0|a[0],z=8191&q,G=q>>>13,j=0|a[1],H=8191&j,K=j>>>13,W=0|a[2],V=8191&W,$=W>>>13,J=0|a[3],Q=8191&J,Y=J>>>13,X=0|a[4],Z=8191&X,tt=X>>>13,et=0|a[5],rt=8191&et,nt=et>>>13,it=0|a[6],ot=8191&it,st=it>>>13,at=0|a[7],lt=8191&at,ct=at>>>13,ut=0|a[8],ht=8191&ut,dt=ut>>>13,ft=0|a[9],pt=8191&ft,mt=ft>>>13;r.negative=t.negative^e.negative,r.length=19;var gt=(c+(n=Math.imul(h,z))|0)+((8191&(i=(i=Math.imul(h,G))+Math.imul(d,z)|0))<<13)|0;c=((o=Math.imul(d,G))+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(p,z),i=(i=Math.imul(p,G))+Math.imul(m,z)|0,o=Math.imul(m,G);var vt=(c+(n=n+Math.imul(h,H)|0)|0)+((8191&(i=(i=i+Math.imul(h,K)|0)+Math.imul(d,H)|0))<<13)|0;c=((o=o+Math.imul(d,K)|0)+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(v,z),i=(i=Math.imul(v,G))+Math.imul(y,z)|0,o=Math.imul(y,G),n=n+Math.imul(p,H)|0,i=(i=i+Math.imul(p,K)|0)+Math.imul(m,H)|0,o=o+Math.imul(m,K)|0;var yt=(c+(n=n+Math.imul(h,V)|0)|0)+((8191&(i=(i=i+Math.imul(h,$)|0)+Math.imul(d,V)|0))<<13)|0;c=((o=o+Math.imul(d,$)|0)+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(b,z),i=(i=Math.imul(b,G))+Math.imul(E,z)|0,o=Math.imul(E,G),n=n+Math.imul(v,H)|0,i=(i=i+Math.imul(v,K)|0)+Math.imul(y,H)|0,o=o+Math.imul(y,K)|0,n=n+Math.imul(p,V)|0,i=(i=i+Math.imul(p,$)|0)+Math.imul(m,V)|0,o=o+Math.imul(m,$)|0;var wt=(c+(n=n+Math.imul(h,Q)|0)|0)+((8191&(i=(i=i+Math.imul(h,Y)|0)+Math.imul(d,Q)|0))<<13)|0;c=((o=o+Math.imul(d,Y)|0)+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(k,z),i=(i=Math.imul(k,G))+Math.imul(S,z)|0,o=Math.imul(S,G),n=n+Math.imul(b,H)|0,i=(i=i+Math.imul(b,K)|0)+Math.imul(E,H)|0,o=o+Math.imul(E,K)|0,n=n+Math.imul(v,V)|0,i=(i=i+Math.imul(v,$)|0)+Math.imul(y,V)|0,o=o+Math.imul(y,$)|0,n=n+Math.imul(p,Q)|0,i=(i=i+Math.imul(p,Y)|0)+Math.imul(m,Q)|0,o=o+Math.imul(m,Y)|0;var bt=(c+(n=n+Math.imul(h,Z)|0)|0)+((8191&(i=(i=i+Math.imul(h,tt)|0)+Math.imul(d,Z)|0))<<13)|0;c=((o=o+Math.imul(d,tt)|0)+(i>>>13)|0)+(bt>>>26)|0,bt&=67108863,n=Math.imul(x,z),i=(i=Math.imul(x,G))+Math.imul(_,z)|0,o=Math.imul(_,G),n=n+Math.imul(k,H)|0,i=(i=i+Math.imul(k,K)|0)+Math.imul(S,H)|0,o=o+Math.imul(S,K)|0,n=n+Math.imul(b,V)|0,i=(i=i+Math.imul(b,$)|0)+Math.imul(E,V)|0,o=o+Math.imul(E,$)|0,n=n+Math.imul(v,Q)|0,i=(i=i+Math.imul(v,Y)|0)+Math.imul(y,Q)|0,o=o+Math.imul(y,Y)|0,n=n+Math.imul(p,Z)|0,i=(i=i+Math.imul(p,tt)|0)+Math.imul(m,Z)|0,o=o+Math.imul(m,tt)|0;var Et=(c+(n=n+Math.imul(h,rt)|0)|0)+((8191&(i=(i=i+Math.imul(h,nt)|0)+Math.imul(d,rt)|0))<<13)|0;c=((o=o+Math.imul(d,nt)|0)+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(T,z),i=(i=Math.imul(T,G))+Math.imul(I,z)|0,o=Math.imul(I,G),n=n+Math.imul(x,H)|0,i=(i=i+Math.imul(x,K)|0)+Math.imul(_,H)|0,o=o+Math.imul(_,K)|0,n=n+Math.imul(k,V)|0,i=(i=i+Math.imul(k,$)|0)+Math.imul(S,V)|0,o=o+Math.imul(S,$)|0,n=n+Math.imul(b,Q)|0,i=(i=i+Math.imul(b,Y)|0)+Math.imul(E,Q)|0,o=o+Math.imul(E,Y)|0,n=n+Math.imul(v,Z)|0,i=(i=i+Math.imul(v,tt)|0)+Math.imul(y,Z)|0,o=o+Math.imul(y,tt)|0,n=n+Math.imul(p,rt)|0,i=(i=i+Math.imul(p,nt)|0)+Math.imul(m,rt)|0,o=o+Math.imul(m,nt)|0;var At=(c+(n=n+Math.imul(h,ot)|0)|0)+((8191&(i=(i=i+Math.imul(h,st)|0)+Math.imul(d,ot)|0))<<13)|0;c=((o=o+Math.imul(d,st)|0)+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(M,z),i=(i=Math.imul(M,G))+Math.imul(B,z)|0,o=Math.imul(B,G),n=n+Math.imul(T,H)|0,i=(i=i+Math.imul(T,K)|0)+Math.imul(I,H)|0,o=o+Math.imul(I,K)|0,n=n+Math.imul(x,V)|0,i=(i=i+Math.imul(x,$)|0)+Math.imul(_,V)|0,o=o+Math.imul(_,$)|0,n=n+Math.imul(k,Q)|0,i=(i=i+Math.imul(k,Y)|0)+Math.imul(S,Q)|0,o=o+Math.imul(S,Y)|0,n=n+Math.imul(b,Z)|0,i=(i=i+Math.imul(b,tt)|0)+Math.imul(E,Z)|0,o=o+Math.imul(E,tt)|0,n=n+Math.imul(v,rt)|0,i=(i=i+Math.imul(v,nt)|0)+Math.imul(y,rt)|0,o=o+Math.imul(y,nt)|0,n=n+Math.imul(p,ot)|0,i=(i=i+Math.imul(p,st)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,st)|0;var kt=(c+(n=n+Math.imul(h,lt)|0)|0)+((8191&(i=(i=i+Math.imul(h,ct)|0)+Math.imul(d,lt)|0))<<13)|0;c=((o=o+Math.imul(d,ct)|0)+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(F,z),i=(i=Math.imul(F,G))+Math.imul(O,z)|0,o=Math.imul(O,G),n=n+Math.imul(M,H)|0,i=(i=i+Math.imul(M,K)|0)+Math.imul(B,H)|0,o=o+Math.imul(B,K)|0,n=n+Math.imul(T,V)|0,i=(i=i+Math.imul(T,$)|0)+Math.imul(I,V)|0,o=o+Math.imul(I,$)|0,n=n+Math.imul(x,Q)|0,i=(i=i+Math.imul(x,Y)|0)+Math.imul(_,Q)|0,o=o+Math.imul(_,Y)|0,n=n+Math.imul(k,Z)|0,i=(i=i+Math.imul(k,tt)|0)+Math.imul(S,Z)|0,o=o+Math.imul(S,tt)|0,n=n+Math.imul(b,rt)|0,i=(i=i+Math.imul(b,nt)|0)+Math.imul(E,rt)|0,o=o+Math.imul(E,nt)|0,n=n+Math.imul(v,ot)|0,i=(i=i+Math.imul(v,st)|0)+Math.imul(y,ot)|0,o=o+Math.imul(y,st)|0,n=n+Math.imul(p,lt)|0,i=(i=i+Math.imul(p,ct)|0)+Math.imul(m,lt)|0,o=o+Math.imul(m,ct)|0;var St=(c+(n=n+Math.imul(h,ht)|0)|0)+((8191&(i=(i=i+Math.imul(h,dt)|0)+Math.imul(d,ht)|0))<<13)|0;c=((o=o+Math.imul(d,dt)|0)+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(U,z),i=(i=Math.imul(U,G))+Math.imul(L,z)|0,o=Math.imul(L,G),n=n+Math.imul(F,H)|0,i=(i=i+Math.imul(F,K)|0)+Math.imul(O,H)|0,o=o+Math.imul(O,K)|0,n=n+Math.imul(M,V)|0,i=(i=i+Math.imul(M,$)|0)+Math.imul(B,V)|0,o=o+Math.imul(B,$)|0,n=n+Math.imul(T,Q)|0,i=(i=i+Math.imul(T,Y)|0)+Math.imul(I,Q)|0,o=o+Math.imul(I,Y)|0,n=n+Math.imul(x,Z)|0,i=(i=i+Math.imul(x,tt)|0)+Math.imul(_,Z)|0,o=o+Math.imul(_,tt)|0,n=n+Math.imul(k,rt)|0,i=(i=i+Math.imul(k,nt)|0)+Math.imul(S,rt)|0,o=o+Math.imul(S,nt)|0,n=n+Math.imul(b,ot)|0,i=(i=i+Math.imul(b,st)|0)+Math.imul(E,ot)|0,o=o+Math.imul(E,st)|0,n=n+Math.imul(v,lt)|0,i=(i=i+Math.imul(v,ct)|0)+Math.imul(y,lt)|0,o=o+Math.imul(y,ct)|0,n=n+Math.imul(p,ht)|0,i=(i=i+Math.imul(p,dt)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,dt)|0;var Ct=(c+(n=n+Math.imul(h,pt)|0)|0)+((8191&(i=(i=i+Math.imul(h,mt)|0)+Math.imul(d,pt)|0))<<13)|0;c=((o=o+Math.imul(d,mt)|0)+(i>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,n=Math.imul(U,H),i=(i=Math.imul(U,K))+Math.imul(L,H)|0,o=Math.imul(L,K),n=n+Math.imul(F,V)|0,i=(i=i+Math.imul(F,$)|0)+Math.imul(O,V)|0,o=o+Math.imul(O,$)|0,n=n+Math.imul(M,Q)|0,i=(i=i+Math.imul(M,Y)|0)+Math.imul(B,Q)|0,o=o+Math.imul(B,Y)|0,n=n+Math.imul(T,Z)|0,i=(i=i+Math.imul(T,tt)|0)+Math.imul(I,Z)|0,o=o+Math.imul(I,tt)|0,n=n+Math.imul(x,rt)|0,i=(i=i+Math.imul(x,nt)|0)+Math.imul(_,rt)|0,o=o+Math.imul(_,nt)|0,n=n+Math.imul(k,ot)|0,i=(i=i+Math.imul(k,st)|0)+Math.imul(S,ot)|0,o=o+Math.imul(S,st)|0,n=n+Math.imul(b,lt)|0,i=(i=i+Math.imul(b,ct)|0)+Math.imul(E,lt)|0,o=o+Math.imul(E,ct)|0,n=n+Math.imul(v,ht)|0,i=(i=i+Math.imul(v,dt)|0)+Math.imul(y,ht)|0,o=o+Math.imul(y,dt)|0;var xt=(c+(n=n+Math.imul(p,pt)|0)|0)+((8191&(i=(i=i+Math.imul(p,mt)|0)+Math.imul(m,pt)|0))<<13)|0;c=((o=o+Math.imul(m,mt)|0)+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(U,V),i=(i=Math.imul(U,$))+Math.imul(L,V)|0,o=Math.imul(L,$),n=n+Math.imul(F,Q)|0,i=(i=i+Math.imul(F,Y)|0)+Math.imul(O,Q)|0,o=o+Math.imul(O,Y)|0,n=n+Math.imul(M,Z)|0,i=(i=i+Math.imul(M,tt)|0)+Math.imul(B,Z)|0,o=o+Math.imul(B,tt)|0,n=n+Math.imul(T,rt)|0,i=(i=i+Math.imul(T,nt)|0)+Math.imul(I,rt)|0,o=o+Math.imul(I,nt)|0,n=n+Math.imul(x,ot)|0,i=(i=i+Math.imul(x,st)|0)+Math.imul(_,ot)|0,o=o+Math.imul(_,st)|0,n=n+Math.imul(k,lt)|0,i=(i=i+Math.imul(k,ct)|0)+Math.imul(S,lt)|0,o=o+Math.imul(S,ct)|0,n=n+Math.imul(b,ht)|0,i=(i=i+Math.imul(b,dt)|0)+Math.imul(E,ht)|0,o=o+Math.imul(E,dt)|0;var _t=(c+(n=n+Math.imul(v,pt)|0)|0)+((8191&(i=(i=i+Math.imul(v,mt)|0)+Math.imul(y,pt)|0))<<13)|0;c=((o=o+Math.imul(y,mt)|0)+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(U,Q),i=(i=Math.imul(U,Y))+Math.imul(L,Q)|0,o=Math.imul(L,Y),n=n+Math.imul(F,Z)|0,i=(i=i+Math.imul(F,tt)|0)+Math.imul(O,Z)|0,o=o+Math.imul(O,tt)|0,n=n+Math.imul(M,rt)|0,i=(i=i+Math.imul(M,nt)|0)+Math.imul(B,rt)|0,o=o+Math.imul(B,nt)|0,n=n+Math.imul(T,ot)|0,i=(i=i+Math.imul(T,st)|0)+Math.imul(I,ot)|0,o=o+Math.imul(I,st)|0,n=n+Math.imul(x,lt)|0,i=(i=i+Math.imul(x,ct)|0)+Math.imul(_,lt)|0,o=o+Math.imul(_,ct)|0,n=n+Math.imul(k,ht)|0,i=(i=i+Math.imul(k,dt)|0)+Math.imul(S,ht)|0,o=o+Math.imul(S,dt)|0;var Pt=(c+(n=n+Math.imul(b,pt)|0)|0)+((8191&(i=(i=i+Math.imul(b,mt)|0)+Math.imul(E,pt)|0))<<13)|0;c=((o=o+Math.imul(E,mt)|0)+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(U,Z),i=(i=Math.imul(U,tt))+Math.imul(L,Z)|0,o=Math.imul(L,tt),n=n+Math.imul(F,rt)|0,i=(i=i+Math.imul(F,nt)|0)+Math.imul(O,rt)|0,o=o+Math.imul(O,nt)|0,n=n+Math.imul(M,ot)|0,i=(i=i+Math.imul(M,st)|0)+Math.imul(B,ot)|0,o=o+Math.imul(B,st)|0,n=n+Math.imul(T,lt)|0,i=(i=i+Math.imul(T,ct)|0)+Math.imul(I,lt)|0,o=o+Math.imul(I,ct)|0,n=n+Math.imul(x,ht)|0,i=(i=i+Math.imul(x,dt)|0)+Math.imul(_,ht)|0,o=o+Math.imul(_,dt)|0;var Tt=(c+(n=n+Math.imul(k,pt)|0)|0)+((8191&(i=(i=i+Math.imul(k,mt)|0)+Math.imul(S,pt)|0))<<13)|0;c=((o=o+Math.imul(S,mt)|0)+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(U,rt),i=(i=Math.imul(U,nt))+Math.imul(L,rt)|0,o=Math.imul(L,nt),n=n+Math.imul(F,ot)|0,i=(i=i+Math.imul(F,st)|0)+Math.imul(O,ot)|0,o=o+Math.imul(O,st)|0,n=n+Math.imul(M,lt)|0,i=(i=i+Math.imul(M,ct)|0)+Math.imul(B,lt)|0,o=o+Math.imul(B,ct)|0,n=n+Math.imul(T,ht)|0,i=(i=i+Math.imul(T,dt)|0)+Math.imul(I,ht)|0,o=o+Math.imul(I,dt)|0;var It=(c+(n=n+Math.imul(x,pt)|0)|0)+((8191&(i=(i=i+Math.imul(x,mt)|0)+Math.imul(_,pt)|0))<<13)|0;c=((o=o+Math.imul(_,mt)|0)+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(U,ot),i=(i=Math.imul(U,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),n=n+Math.imul(F,lt)|0,i=(i=i+Math.imul(F,ct)|0)+Math.imul(O,lt)|0,o=o+Math.imul(O,ct)|0,n=n+Math.imul(M,ht)|0,i=(i=i+Math.imul(M,dt)|0)+Math.imul(B,ht)|0,o=o+Math.imul(B,dt)|0;var Nt=(c+(n=n+Math.imul(T,pt)|0)|0)+((8191&(i=(i=i+Math.imul(T,mt)|0)+Math.imul(I,pt)|0))<<13)|0;c=((o=o+Math.imul(I,mt)|0)+(i>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,n=Math.imul(U,lt),i=(i=Math.imul(U,ct))+Math.imul(L,lt)|0,o=Math.imul(L,ct),n=n+Math.imul(F,ht)|0,i=(i=i+Math.imul(F,dt)|0)+Math.imul(O,ht)|0,o=o+Math.imul(O,dt)|0;var Mt=(c+(n=n+Math.imul(M,pt)|0)|0)+((8191&(i=(i=i+Math.imul(M,mt)|0)+Math.imul(B,pt)|0))<<13)|0;c=((o=o+Math.imul(B,mt)|0)+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(U,ht),i=(i=Math.imul(U,dt))+Math.imul(L,ht)|0,o=Math.imul(L,dt);var Bt=(c+(n=n+Math.imul(F,pt)|0)|0)+((8191&(i=(i=i+Math.imul(F,mt)|0)+Math.imul(O,pt)|0))<<13)|0;c=((o=o+Math.imul(O,mt)|0)+(i>>>13)|0)+(Bt>>>26)|0,Bt&=67108863;var Rt=(c+(n=Math.imul(U,pt))|0)+((8191&(i=(i=Math.imul(U,mt))+Math.imul(L,pt)|0))<<13)|0;return c=((o=Math.imul(L,mt))+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,l[0]=gt,l[1]=vt,l[2]=yt,l[3]=wt,l[4]=bt,l[5]=Et,l[6]=At,l[7]=kt,l[8]=St,l[9]=Ct,l[10]=xt,l[11]=_t,l[12]=Pt,l[13]=Tt,l[14]=It,l[15]=Nt,l[16]=Mt,l[17]=Bt,l[18]=Rt,0!==c&&(l[19]=c,r.length++),r};function g(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,o=0;o<r.length-1;o++){var s=i;i=0;for(var a=67108863&n,l=Math.min(o,e.length-1),c=Math.max(0,o-t.length+1);c<=l;c++){var u=o-c,h=(0|t.words[u])*(0|e.words[c]),d=67108863&h;a=67108863&(d=d+a|0),i+=(s=(s=s+(h/67108864|0)|0)+(d>>>26)|0)>>>26,s&=67108863}r.words[o]=a,n=s,s=i}return 0!==n?r.words[o]=n:r.length--,r._strip()}function v(t,e,r){return g(t,e,r)}Math.imul||(m=p),i.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?m(this,t,e):r<63?p(this,t,e):r<1024?g(this,t,e):v(this,t,e)},i.prototype.mul=function(t){var e=new i(null);return e.words=new Array(this.length+t.length),this.mulTo(t,e)},i.prototype.mulf=function(t){var e=new i(null);return e.words=new Array(this.length+t.length),v(this,t,e)},i.prototype.imul=function(t){return this.clone().mulTo(t,this)},i.prototype.imuln=function(t){var e=t<0;e&&(t=-t),r("number"==typeof t),r(t<67108864);for(var n=0,i=0;i<this.length;i++){var o=(0|this.words[i])*t,s=(67108863&o)+(67108863&n);n>>=26,n+=o/67108864|0,n+=s>>>26,this.words[i]=67108863&s}return 0!==n&&(this.words[i]=n,this.length++),this.length=0===t?1:this.length,e?this.ineg():this},i.prototype.muln=function(t){return this.clone().imuln(t)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r<e.length;r++){var n=r/26|0,i=r%26;e[r]=t.words[n]>>>i&1}return e}(t);if(0===e.length)return new i(1);for(var r=this,n=0;n<e.length&&0===e[n];n++,r=r.sqr());if(++n<e.length)for(var o=r.sqr();n<e.length;n++,o=o.sqr())0!==e[n]&&(r=r.mul(o));return r},i.prototype.iushln=function(t){r("number"==typeof t&&t>=0);var e,n=t%26,i=(t-n)/26,o=67108863>>>26-n<<26-n;if(0!==n){var s=0;for(e=0;e<this.length;e++){var a=this.words[e]&o,l=(0|this.words[e])-a<<n;this.words[e]=l|s,s=a>>>26-n}s&&(this.words[e]=s,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e<i;e++)this.words[e]=0;this.length+=i}return this._strip()},i.prototype.ishln=function(t){return r(0===this.negative),this.iushln(t)},i.prototype.iushrn=function(t,e,n){var i;r("number"==typeof t&&t>=0),i=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<<o,l=n;if(i-=s,i=Math.max(0,i),l){for(var c=0;c<s;c++)l.words[c]=this.words[c];l.length=s}if(0===s);else if(this.length>s)for(this.length-=s,c=0;c<this.length;c++)this.words[c]=this.words[c+s];else this.words[0]=0,this.length=1;var u=0;for(c=this.length-1;c>=0&&(0!==u||c>=i);c--){var h=0|this.words[c];this.words[c]=u<<26-o|h>>>o,u=h&a}return l&&0!==u&&(l.words[l.length++]=u),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},i.prototype.ishrn=function(t,e,n){return r(0===this.negative),this.iushrn(t,e,n)},i.prototype.shln=function(t){return this.clone().ishln(t)},i.prototype.ushln=function(t){return this.clone().iushln(t)},i.prototype.shrn=function(t){return this.clone().ishrn(t)},i.prototype.ushrn=function(t){return this.clone().iushrn(t)},i.prototype.testn=function(t){r("number"==typeof t&&t>=0);var e=t%26,n=(t-e)/26,i=1<<e;return!(this.length<=n||!(this.words[n]&i))},i.prototype.imaskn=function(t){r("number"==typeof t&&t>=0);var e=t%26,n=(t-e)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=n)return this;if(0!==e&&n++,this.length=Math.min(n,this.length),0!==e){var i=67108863^67108863>>>e<<e;this.words[this.length-1]&=i}return this._strip()},i.prototype.maskn=function(t){return this.clone().imaskn(t)},i.prototype.iaddn=function(t){return r("number"==typeof t),r(t<67108864),t<0?this.isubn(-t):0!==this.negative?1===this.length&&(0|this.words[0])<=t?(this.words[0]=t-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(t),this.negative=1,this):this._iaddn(t)},i.prototype._iaddn=function(t){this.words[0]+=t;for(var e=0;e<this.length&&this.words[e]>=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},i.prototype.isubn=function(t){if(r("number"==typeof t),r(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e<this.length&&this.words[e]<0;e++)this.words[e]+=67108864,this.words[e+1]-=1;return this._strip()},i.prototype.addn=function(t){return this.clone().iaddn(t)},i.prototype.subn=function(t){return this.clone().isubn(t)},i.prototype.iabs=function(){return this.negative=0,this},i.prototype.abs=function(){return this.clone().iabs()},i.prototype._ishlnsubmul=function(t,e,n){var i,o,s=t.length+n;this._expand(s);var a=0;for(i=0;i<t.length;i++){o=(0|this.words[i+n])+a;var l=(0|t.words[i])*e;a=((o-=67108863&l)>>26)-(l/67108864|0),this.words[i+n]=67108863&o}for(;i<this.length-n;i++)a=(o=(0|this.words[i+n])+a)>>26,this.words[i+n]=67108863&o;if(0===a)return this._strip();for(r(-1===a),a=0,i=0;i<this.length;i++)a=(o=-(0|this.words[i])+a)>>26,this.words[i]=67108863&o;return this.negative=1,this._strip()},i.prototype._wordDiv=function(t,e){var r=(this.length,t.length),n=this.clone(),o=t,s=0|o.words[o.length-1];0!=(r=26-this._countBits(s))&&(o=o.ushln(r),n.iushln(r),s=0|o.words[o.length-1]);var a,l=n.length-o.length;if("mod"!==e){(a=new i(null)).length=l+1,a.words=new Array(a.length);for(var c=0;c<a.length;c++)a.words[c]=0}var u=n.clone()._ishlnsubmul(o,1,l);0===u.negative&&(n=u,a&&(a.words[l]=1));for(var h=l-1;h>=0;h--){var d=67108864*(0|n.words[o.length+h])+(0|n.words[o.length+h-1]);for(d=Math.min(d/s|0,67108863),n._ishlnsubmul(o,d,h);0!==n.negative;)d--,n.negative=0,n._ishlnsubmul(o,1,h),n.isZero()||(n.negative^=1);a&&(a.words[h]=d)}return a&&a._strip(),n._strip(),"div"!==e&&0!==r&&n.iushrn(r),{div:a||null,mod:n}},i.prototype.divmod=function(t,e,n){return r(!t.isZero()),this.isZero()?{div:new i(0),mod:new i(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(o=a.div.neg()),"div"!==e&&(s=a.mod.neg(),n&&0!==s.negative&&s.iadd(t)),{div:o,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(o=a.div.neg()),{div:o,mod:a.mod}):0!==(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),n&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new i(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new i(this.modrn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new i(this.modrn(t.words[0]))}:this._wordDiv(t,e);var o,s,a},i.prototype.div=function(t){return this.divmod(t,"div",!1).div},i.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},i.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},i.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},i.prototype.modrn=function(t){var e=t<0;e&&(t=-t),r(t<=67108863);for(var n=(1<<26)%t,i=0,o=this.length-1;o>=0;o--)i=(n*i+(0|this.words[o]))%t;return e?-i:i},i.prototype.modn=function(t){return this.modrn(t)},i.prototype.idivn=function(t){var e=t<0;e&&(t=-t),r(t<=67108863);for(var n=0,i=this.length-1;i>=0;i--){var o=(0|this.words[i])+67108864*n;this.words[i]=o/t|0,n=o%t}return this._strip(),e?this.ineg():this},i.prototype.divn=function(t){return this.clone().idivn(t)},i.prototype.egcd=function(t){r(0===t.negative),r(!t.isZero());var e=this,n=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var o=new i(1),s=new i(0),a=new i(0),l=new i(1),c=0;e.isEven()&&n.isEven();)e.iushrn(1),n.iushrn(1),++c;for(var u=n.clone(),h=e.clone();!e.isZero();){for(var d=0,f=1;0===(e.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(o.isOdd()||s.isOdd())&&(o.iadd(u),s.isub(h)),o.iushrn(1),s.iushrn(1);for(var p=0,m=1;0===(n.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(n.iushrn(p);p-- >0;)(a.isOdd()||l.isOdd())&&(a.iadd(u),l.isub(h)),a.iushrn(1),l.iushrn(1);e.cmp(n)>=0?(e.isub(n),o.isub(a),s.isub(l)):(n.isub(e),a.isub(o),l.isub(s))}return{a:a,b:l,gcd:n.iushln(c)}},i.prototype._invmp=function(t){r(0===t.negative),r(!t.isZero());var e=this,n=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var o,s=new i(1),a=new i(0),l=n.clone();e.cmpn(1)>0&&n.cmpn(1)>0;){for(var c=0,u=1;0===(e.words[0]&u)&&c<26;++c,u<<=1);if(c>0)for(e.iushrn(c);c-- >0;)s.isOdd()&&s.iadd(l),s.iushrn(1);for(var h=0,d=1;0===(n.words[0]&d)&&h<26;++h,d<<=1);if(h>0)for(n.iushrn(h);h-- >0;)a.isOdd()&&a.iadd(l),a.iushrn(1);e.cmp(n)>=0?(e.isub(n),s.isub(a)):(n.isub(e),a.isub(s))}return(o=0===e.cmpn(1)?s:a).cmpn(0)<0&&o.iadd(t),o},i.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=e.cmp(r);if(i<0){var o=e;e=r,r=o}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.iushln(n)},i.prototype.invm=function(t){return this.egcd(t).a.umod(t)},i.prototype.isEven=function(){return!(1&this.words[0])},i.prototype.isOdd=function(){return!(1&~this.words[0])},i.prototype.andln=function(t){return this.words[0]&t},i.prototype.bincn=function(t){r("number"==typeof t);var e=t%26,n=(t-e)/26,i=1<<e;if(this.length<=n)return this._expand(n+1),this.words[n]|=i,this;for(var o=i,s=n;0!==o&&s<this.length;s++){var a=0|this.words[s];o=(a+=o)>>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},i.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},i.prototype.cmpn=function(t){var e,n=t<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;if(this._strip(),this.length>1)e=1;else{n&&(t=-t),r(t<=67108863,"Number is too big");var i=0|this.words[0];e=i===t?0:i<t?-1:1}return 0!==this.negative?0|-e:e},i.prototype.cmp=function(t){if(0!==this.negative&&0===t.negative)return-1;if(0===this.negative&&0!==t.negative)return 1;var e=this.ucmp(t);return 0!==this.negative?0|-e:e},i.prototype.ucmp=function(t){if(this.length>t.length)return 1;if(this.length<t.length)return-1;for(var e=0,r=this.length-1;r>=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){n<i?e=-1:n>i&&(e=1);break}}return e},i.prototype.gtn=function(t){return 1===this.cmpn(t)},i.prototype.gt=function(t){return 1===this.cmp(t)},i.prototype.gten=function(t){return this.cmpn(t)>=0},i.prototype.gte=function(t){return this.cmp(t)>=0},i.prototype.ltn=function(t){return-1===this.cmpn(t)},i.prototype.lt=function(t){return-1===this.cmp(t)},i.prototype.lten=function(t){return this.cmpn(t)<=0},i.prototype.lte=function(t){return this.cmp(t)<=0},i.prototype.eqn=function(t){return 0===this.cmpn(t)},i.prototype.eq=function(t){return 0===this.cmp(t)},i.red=function(t){return new S(t)},i.prototype.toRed=function(t){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},i.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(t){return this.red=t,this},i.prototype.forceRed=function(t){return r(!this.red,"Already a number in reduction context"),this._forceRed(t)},i.prototype.redAdd=function(t){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},i.prototype.redIAdd=function(t){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},i.prototype.redSub=function(t){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},i.prototype.redISub=function(t){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},i.prototype.redShl=function(t){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},i.prototype.redMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},i.prototype.redIMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},i.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(t){return r(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var y={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new i(e,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function b(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function E(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function A(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function k(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function S(t){if("string"==typeof t){var e=i._prime(t);this.m=e.p,this.prime=e}else r(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function C(t){S.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new i(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var n=e<this.n?-1:r.ucmp(this.p);return 0===n?(r.words[0]=0,r.length=1):n>0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(b,w),b.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i<n;i++)e.words[i]=t.words[i];if(e.length=n,t.length<=9)return t.words[0]=0,void(t.length=1);var o=t.words[9];for(e.words[e.length++]=o&r,i=10;i<t.length;i++){var s=0|t.words[i];t.words[i-10]=(s&r)<<4|o>>>22,o=s}o>>>=22,t.words[i-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},b.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r<t.length;r++){var n=0|t.words[r];e+=977*n,t.words[r]=67108863&e,e=64*n+(e/67108864|0)}return 0===t.words[t.length-1]&&(t.length--,0===t.words[t.length-1]&&t.length--),t},n(E,w),n(A,w),n(k,w),k.prototype.imulK=function(t){for(var e=0,r=0;r<t.length;r++){var n=19*(0|t.words[r])+e,i=67108863&n;n>>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},i._prime=function(t){if(y[t])return y[t];var e;if("k256"===t)e=new b;else if("p224"===t)e=new E;else if("p192"===t)e=new A;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new k}return y[t]=e,e},S.prototype._verify1=function(t){r(0===t.negative,"red works only with positives"),r(t.red,"red works only with red numbers")},S.prototype._verify2=function(t,e){r(0===(t.negative|e.negative),"red works only with positives"),r(t.red&&t.red===e.red,"red works only with red numbers")},S.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):(c(t,t.umod(this.m)._forceRed(this)),t)},S.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},S.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},S.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},S.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},S.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},S.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},S.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},S.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},S.prototype.isqr=function(t){return this.imul(t,t.clone())},S.prototype.sqr=function(t){return this.mul(t,t)},S.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(r(e%2==1),3===e){var n=this.m.add(new i(1)).iushrn(2);return this.pow(t,n)}for(var o=this.m.subn(1),s=0;!o.isZero()&&0===o.andln(1);)s++,o.iushrn(1);r(!o.isZero());var a=new i(1).toRed(this),l=a.redNeg(),c=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new i(2*u*u).toRed(this);0!==this.pow(u,c).cmp(l);)u.redIAdd(l);for(var h=this.pow(u,o),d=this.pow(t,o.addn(1).iushrn(1)),f=this.pow(t,o),p=s;0!==f.cmp(a);){for(var m=f,g=0;0!==m.cmp(a);g++)m=m.redSqr();r(g<p);var v=this.pow(h,new i(1).iushln(p-g-1));d=d.redMul(v),h=v.redSqr(),f=f.redMul(h),p=g}return d},S.prototype.invm=function(t){var e=t._invmp(this.m);return 0!==e.negative?(e.negative=0,this.imod(e).redNeg()):this.imod(e)},S.prototype.pow=function(t,e){if(e.isZero())return new i(1).toRed(this);if(0===e.cmpn(1))return t.clone();var r=new Array(16);r[0]=new i(1).toRed(this),r[1]=t;for(var n=2;n<r.length;n++)r[n]=this.mul(r[n-1],t);var o=r[0],s=0,a=0,l=e.bitLength()%26;for(0===l&&(l=26),n=e.length-1;n>=0;n--){for(var c=e.words[n],u=l-1;u>=0;u--){var h=c>>u&1;o!==r[0]&&(o=this.sqr(o)),0!==h||0!==s?(s<<=1,s|=h,(4===++a||0===n&&0===u)&&(o=this.mul(o,r[s]),a=0,s=0)):a=0}l=26}return o},S.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},S.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},i.mont=function(t){return new C(t)},n(C,S),C.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},C.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},C.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},C.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new i(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),o=r.isub(n).iushrn(this.shift),s=o;return o.cmp(this.m)>=0?s=o.isub(this.m):o.cmpn(0)<0&&(s=o.iadd(this.m)),s._forceRed(this)},C.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(i,i.exports)),i.exports),s=r(o);let a=!1,l=!1;const c={debug:1,default:2,info:2,warning:3,error:4,off:5};let u=c.default,h=null;const d=function(){try{const t=[];if(["NFD","NFC","NFKD","NFKC"].forEach(e=>{try{if("test"!=="test".normalize(e))throw new Error("bad normalize")}catch(r){t.push(e)}}),t.length)throw new Error("missing "+t.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(t){return t.message}return null}();var f,p;!function(t){t.DEBUG="DEBUG",t.INFO="INFO",t.WARNING="WARNING",t.ERROR="ERROR",t.OFF="OFF"}(f||(f={})),function(t){t.UNKNOWN_ERROR="UNKNOWN_ERROR",t.NOT_IMPLEMENTED="NOT_IMPLEMENTED",t.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",t.NETWORK_ERROR="NETWORK_ERROR",t.SERVER_ERROR="SERVER_ERROR",t.TIMEOUT="TIMEOUT",t.BUFFER_OVERRUN="BUFFER_OVERRUN",t.NUMERIC_FAULT="NUMERIC_FAULT",t.MISSING_NEW="MISSING_NEW",t.INVALID_ARGUMENT="INVALID_ARGUMENT",t.MISSING_ARGUMENT="MISSING_ARGUMENT",t.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",t.CALL_EXCEPTION="CALL_EXCEPTION",t.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",t.NONCE_EXPIRED="NONCE_EXPIRED",t.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",t.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",t.TRANSACTION_REPLACED="TRANSACTION_REPLACED",t.ACTION_REJECTED="ACTION_REJECTED"}(p||(p={}));const m="0123456789abcdef";class g{constructor(t){Object.defineProperty(this,"version",{enumerable:!0,value:t,writable:!1})}_log(t,e){const r=t.toLowerCase();null==c[r]&&this.throwArgumentError("invalid log level name","logLevel",t),u>c[r]||console.log.apply(console,e)}debug(...t){this._log(g.levels.DEBUG,t)}info(...t){this._log(g.levels.INFO,t)}warn(...t){this._log(g.levels.WARNING,t)}makeError(t,e,r){if(l)return this.makeError("censored error",e,{});e||(e=g.errors.UNKNOWN_ERROR),r||(r={});const n=[];Object.keys(r).forEach(t=>{const e=r[t];try{if(e instanceof Uint8Array){let r="";for(let t=0;t<e.length;t++)r+=m[e[t]>>4],r+=m[15&e[t]];n.push(t+"=Uint8Array(0x"+r+")")}else n.push(t+"="+JSON.stringify(e))}catch(e){n.push(t+"="+JSON.stringify(r[t].toString()))}}),n.push(`code=${e}`),n.push(`version=${this.version}`);const i=t;let o="";switch(e){case p.NUMERIC_FAULT:{o="NUMERIC_FAULT";const e=t;switch(e){case"overflow":case"underflow":case"division-by-zero":o+="-"+e;break;case"negative-power":case"negative-width":o+="-unsupported";break;case"unbound-bitwise-result":o+="-unbound-result"}break}case p.CALL_EXCEPTION:case p.INSUFFICIENT_FUNDS:case p.MISSING_NEW:case p.NONCE_EXPIRED:case p.REPLACEMENT_UNDERPRICED:case p.TRANSACTION_REPLACED:case p.UNPREDICTABLE_GAS_LIMIT:o=e}o&&(t+=" [ See: https://links.ethers.org/v5-errors-"+o+" ]"),n.length&&(t+=" ("+n.join(", ")+")");const s=new Error(t);return s.reason=i,s.code=e,Object.keys(r).forEach(function(t){s[t]=r[t]}),s}throwError(t,e,r){throw this.makeError(t,e,r)}throwArgumentError(t,e,r){return this.throwError(t,g.errors.INVALID_ARGUMENT,{argument:e,value:r})}assert(t,e,r,n){t||this.throwError(e,r,n)}assertArgument(t,e,r,n){t||this.throwArgumentError(e,r,n)}checkNormalize(t){d&&this.throwError("platform missing String.prototype.normalize",g.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:d})}checkSafeUint53(t,e){"number"==typeof t&&(null==e&&(e="value not safe"),(t<0||t>=9007199254740991)&&this.throwError(e,g.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:t}),t%1&&this.throwError(e,g.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:t}))}checkArgumentCount(t,e,r){r=r?": "+r:"",t<e&&this.throwError("missing argument"+r,g.errors.MISSING_ARGUMENT,{count:t,expectedCount:e}),t>e&&this.throwError("too many arguments"+r,g.errors.UNEXPECTED_ARGUMENT,{count:t,expectedCount:e})}checkNew(t,e){t!==Object&&null!=t||this.throwError("missing new",g.errors.MISSING_NEW,{name:e.name})}checkAbstract(t,e){t===e?this.throwError("cannot instantiate abstract class "+JSON.stringify(e.name)+" directly; use a sub-class",g.errors.UNSUPPORTED_OPERATION,{name:t.name,operation:"new"}):t!==Object&&null!=t||this.throwError("missing new",g.errors.MISSING_NEW,{name:e.name})}static globalLogger(){return h||(h=new g("logger/5.8.0")),h}static setCensorship(t,e){if(!t&&e&&this.globalLogger().throwError("cannot permanently disable censorship",g.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),a){if(!t)return;this.globalLogger().throwError("error censorship permanent",g.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}l=!!t,a=!!e}static setLogLevel(t){const e=c[t.toLowerCase()];null!=e?u=e:g.globalLogger().warn("invalid log level - "+t)}static from(t){return new g(t)}}g.errors=p,g.levels=f;const v=new g("bytes/5.8.0");function y(t){return!!t.toHexString}function w(t){return t.slice||(t.slice=function(){const e=Array.prototype.slice.call(arguments);return w(new Uint8Array(Array.prototype.slice.apply(t,e)))}),t}function b(t){return _(t)&&!(t.length%2)||A(t)}function E(t){return"number"==typeof t&&t==t&&t%1==0}function A(t){if(null==t)return!1;if(t.constructor===Uint8Array)return!0;if("string"==typeof t)return!1;if(!E(t.length)||t.length<0)return!1;for(let e=0;e<t.length;e++){const r=t[e];if(!E(r)||r<0||r>=256)return!1}return!0}function k(t,e){if(e||(e={}),"number"==typeof t){v.checkSafeUint53(t,"invalid arrayify value");const e=[];for(;t;)e.unshift(255&t),t=parseInt(String(t/256));return 0===e.length&&e.push(0),w(new Uint8Array(e))}if(e.allowMissingPrefix&&"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),y(t)&&(t=t.toHexString()),_(t)){let r=t.substring(2);r.length%2&&("left"===e.hexPad?r="0"+r:"right"===e.hexPad?r+="0":v.throwArgumentError("hex data is odd-length","value",t));const n=[];for(let t=0;t<r.length;t+=2)n.push(parseInt(r.substring(t,t+2),16));return w(new Uint8Array(n))}return A(t)?w(new Uint8Array(t)):v.throwArgumentError("invalid arrayify value","value",t)}function S(t){const e=t.map(t=>k(t)),r=e.reduce((t,e)=>t+e.length,0),n=new Uint8Array(r);return e.reduce((t,e)=>(n.set(e,t),t+e.length),0),w(n)}function C(t){let e=k(t);if(0===e.length)return e;let r=0;for(;r<e.length&&0===e[r];)r++;return r&&(e=e.slice(r)),e}function x(t,e){(t=k(t)).length>e&&v.throwArgumentError("value out of range","value",arguments[0]);const r=new Uint8Array(e);return r.set(t,e-t.length),w(r)}function _(t,e){return!("string"!=typeof t||!t.match(/^0x[0-9A-Fa-f]*$/))&&(!e||t.length===2+2*e)}const P="0123456789abcdef";function T(t,e){if(e||(e={}),"number"==typeof t){v.checkSafeUint53(t,"invalid hexlify value");let e="";for(;t;)e=P[15&t]+e,t=Math.floor(t/16);return e.length?(e.length%2&&(e="0"+e),"0x"+e):"0x00"}if("bigint"==typeof t)return(t=t.toString(16)).length%2?"0x0"+t:"0x"+t;if(e.allowMissingPrefix&&"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),y(t))return t.toHexString();if(_(t))return t.length%2&&("left"===e.hexPad?t="0x0"+t.substring(2):"right"===e.hexPad?t+="0":v.throwArgumentError("hex data is odd-length","value",t)),t.toLowerCase();if(A(t)){let e="0x";for(let r=0;r<t.length;r++){let n=t[r];e+=P[(240&n)>>4]+P[15&n]}return e}return v.throwArgumentError("invalid hexlify value","value",t)}function I(t){if("string"!=typeof t)t=T(t);else if(!_(t)||t.length%2)return null;return(t.length-2)/2}function N(t,e,r){return"string"!=typeof t?t=T(t):(!_(t)||t.length%2)&&v.throwArgumentError("invalid hexData","value",t),e=2+2*e,null!=r?"0x"+t.substring(e,2+2*r):"0x"+t.substring(e)}function M(t){let e="0x";return t.forEach(t=>{e+=T(t).substring(2)}),e}function B(t){const e=R(T(t,{hexPad:"left"}));return"0x"===e?"0x0":e}function R(t){"string"!=typeof t&&(t=T(t)),_(t)||v.throwArgumentError("invalid hex string","value",t),t=t.substring(2);let e=0;for(;e<t.length&&"0"===t[e];)e++;return"0x"+t.substring(e)}function F(t,e){for("string"!=typeof t?t=T(t):_(t)||v.throwArgumentError("invalid hex string","value",t),t.length>2*e+2&&v.throwArgumentError("value out of range","value",arguments[1]);t.length<2*e+2;)t="0x0"+t.substring(2);return t}function O(t){const e={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(b(t)){let r=k(t);64===r.length?(e.v=27+(r[32]>>7),r[32]&=127,e.r=T(r.slice(0,32)),e.s=T(r.slice(32,64))):65===r.length?(e.r=T(r.slice(0,32)),e.s=T(r.slice(32,64)),e.v=r[64]):v.throwArgumentError("invalid signature string","signature",t),e.v<27&&(0===e.v||1===e.v?e.v+=27:v.throwArgumentError("signature invalid v byte","signature",t)),e.recoveryParam=1-e.v%2,e.recoveryParam&&(r[32]|=128),e._vs=T(r.slice(32,64))}else{if(e.r=t.r,e.s=t.s,e.v=t.v,e.recoveryParam=t.recoveryParam,e._vs=t._vs,null!=e._vs){const r=x(k(e._vs),32);e._vs=T(r);const n=r[0]>=128?1:0;null==e.recoveryParam?e.recoveryParam=n:e.recoveryParam!==n&&v.throwArgumentError("signature recoveryParam mismatch _vs","signature",t),r[0]&=127;const i=T(r);null==e.s?e.s=i:e.s!==i&&v.throwArgumentError("signature v mismatch _vs","signature",t)}if(null==e.recoveryParam)null==e.v?v.throwArgumentError("signature missing v and recoveryParam","signature",t):0===e.v||1===e.v?e.recoveryParam=e.v:e.recoveryParam=1-e.v%2;else if(null==e.v)e.v=27+e.recoveryParam;else{const r=0===e.v||1===e.v?e.v:1-e.v%2;e.recoveryParam!==r&&v.throwArgumentError("signature recoveryParam mismatch v","signature",t)}null!=e.r&&_(e.r)?e.r=F(e.r,32):v.throwArgumentError("signature missing or invalid r","signature",t),null!=e.s&&_(e.s)?e.s=F(e.s,32):v.throwArgumentError("signature missing or invalid s","signature",t);const r=k(e.s);r[0]>=128&&v.throwArgumentError("signature s out of range","signature",t),e.recoveryParam&&(r[0]|=128);const n=T(r);e._vs&&(_(e._vs)||v.throwArgumentError("signature invalid _vs","signature",t),e._vs=F(e._vs,32)),null==e._vs?e._vs=n:e._vs!==n&&v.throwArgumentError("signature _vs mismatch v and s","signature",t)}return e.yParityAndS=e._vs,e.compact=e.r+e.yParityAndS.substring(2),e}function D(t){return T(S([(t=O(t)).r,t.s,t.recoveryParam?"0x1c":"0x1b"]))}const U="bignumber/5.8.0";var L=s.BN;const q=new g(U),z={},G=9007199254740991;let j=!1;class H{constructor(t,e){t!==z&&q.throwError("cannot call constructor directly; use BigNumber.from",g.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=e,this._isBigNumber=!0,Object.freeze(this)}fromTwos(t){return W(V(this).fromTwos(t))}toTwos(t){return W(V(this).toTwos(t))}abs(){return"-"===this._hex[0]?H.from(this._hex.substring(1)):this}add(t){return W(V(this).add(V(t)))}sub(t){return W(V(this).sub(V(t)))}div(t){return H.from(t).isZero()&&$("division-by-zero","div"),W(V(this).div(V(t)))}mul(t){return W(V(this).mul(V(t)))}mod(t){const e=V(t);return e.isNeg()&&$("division-by-zero","mod"),W(V(this).umod(e))}pow(t){const e=V(t);return e.isNeg()&&$("negative-power","pow"),W(V(this).pow(e))}and(t){const e=V(t);return(this.isNegative()||e.isNeg())&&$("unbound-bitwise-result","and"),W(V(this).and(e))}or(t){const e=V(t);return(this.isNegative()||e.isNeg())&&$("unbound-bitwise-result","or"),W(V(this).or(e))}xor(t){const e=V(t);return(this.isNegative()||e.isNeg())&&$("unbound-bitwise-result","xor"),W(V(this).xor(e))}mask(t){return(this.isNegative()||t<0)&&$("negative-width","mask"),W(V(this).maskn(t))}shl(t){return(this.isNegative()||t<0)&&$("negative-width","shl"),W(V(this).shln(t))}shr(t){return(this.isNegative()||t<0)&&$("negative-width","shr"),W(V(this).shrn(t))}eq(t){return V(this).eq(V(t))}lt(t){return V(this).lt(V(t))}lte(t){return V(this).lte(V(t))}gt(t){return V(this).gt(V(t))}gte(t){return V(this).gte(V(t))}isNegative(){return"-"===this._hex[0]}isZero(){return V(this).isZero()}toNumber(){try{return V(this).toNumber()}catch(t){$("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch(t){}return q.throwError("this platform does not support BigInt",g.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(10===arguments[0]?j||(j=!0,q.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):16===arguments[0]?q.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",g.errors.UNEXPECTED_ARGUMENT,{}):q.throwError("BigNumber.toString does not accept parameters",g.errors.UNEXPECTED_ARGUMENT,{})),V(this).toString(10)}toHexString(){return this._hex}toJSON(t){return{type:"BigNumber",hex:this.toHexString()}}static from(t){if(t instanceof H)return t;if("string"==typeof t)return t.match(/^-?0x[0-9a-f]+$/i)?new H(z,K(t)):t.match(/^-?[0-9]+$/)?new H(z,K(new L(t))):q.throwArgumentError("invalid BigNumber string","value",t);if("number"==typeof t)return t%1&&$("underflow","BigNumber.from",t),(t>=G||t<=-G)&&$("overflow","BigNumber.from",t),H.from(String(t));const e=t;if("bigint"==typeof e)return H.from(e.toString());if(A(e))return H.from(T(e));if(e)if(e.toHexString){const t=e.toHexString();if("string"==typeof t)return H.from(t)}else{let t=e._hex;if(null==t&&"BigNumber"===e.type&&(t=e.hex),"string"==typeof t&&(_(t)||"-"===t[0]&&_(t.substring(1))))return H.from(t)}return q.throwArgumentError("invalid BigNumber value","value",t)}static isBigNumber(t){return!(!t||!t._isBigNumber)}}function K(t){if("string"!=typeof t)return K(t.toString(16));if("-"===t[0])return"-"===(t=t.substring(1))[0]&&q.throwArgumentError("invalid hex","value",t),"0x00"===(t=K(t))?t:"-"+t;if("0x"!==t.substring(0,2)&&(t="0x"+t),"0x"===t)return"0x00";for(t.length%2&&(t="0x0"+t.substring(2));t.length>4&&"0x00"===t.substring(0,4);)t="0x"+t.substring(4);return t}function W(t){return H.from(K(t))}function V(t){const e=H.from(t).toHexString();return"-"===e[0]?new L("-"+e.substring(3),16):new L(e.substring(2),16)}function $(t,e,r){const n={fault:t,operation:e};return null!=r&&(n.value=r),q.throwError(t,g.errors.NUMERIC_FAULT,n)}const J=new g(U),Q={},Y=H.from(0),X=H.from(-1);function Z(t,e,r,n){const i={fault:e,operation:r};return void 0!==n&&(i.value=n),J.throwError(t,g.errors.NUMERIC_FAULT,i)}let tt="0";for(;tt.length<256;)tt+=tt;function et(t){if("number"!=typeof t)try{t=H.from(t).toNumber()}catch(t){}return"number"==typeof t&&t>=0&&t<=256&&!(t%1)?"1"+tt.substring(0,t):J.throwArgumentError("invalid decimal size","decimals",t)}function rt(t,e){null==e&&(e=0);const r=et(e),n=(t=H.from(t)).lt(Y);n&&(t=t.mul(X));let i=t.mod(r).toString();for(;i.length<r.length-1;)i="0"+i;i=i.match(/^([0-9]*[1-9]|0)(0*)/)[1];const o=t.div(r).toString();return t=1===r.length?o:o+"."+i,n&&(t="-"+t),t}function nt(t,e){null==e&&(e=0);const r=et(e);"string"==typeof t&&t.match(/^-?[0-9.]+$/)||J.throwArgumentError("invalid decimal value","value",t);const n="-"===t.substring(0,1);n&&(t=t.substring(1)),"."===t&&J.throwArgumentError("missing value","value",t);const i=t.split(".");i.length>2&&J.throwArgumentError("too many decimal points","value",t);let o=i[0],s=i[1];for(o||(o="0"),s||(s="0");"0"===s[s.length-1];)s=s.substring(0,s.length-1);for(s.length>r.length-1&&Z("fractional component exceeds decimals","underflow","parseFixed"),""===s&&(s="0");s.length<r.length-1;)s+="0";const a=H.from(o),l=H.from(s);let c=a.mul(r).add(l);return n&&(c=c.mul(X)),c}class it{constructor(t,e,r,n){t!==Q&&J.throwError("cannot use FixedFormat constructor; use FixedFormat.from",g.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.signed=e,this.width=r,this.decimals=n,this.name=(e?"":"u")+"fixed"+String(r)+"x"+String(n),this._multiplier=et(n),Object.freeze(this)}static from(t){if(t instanceof it)return t;"number"==typeof t&&(t=`fixed128x${t}`);let e=!0,r=128,n=18;if("string"==typeof t)if("fixed"===t);else if("ufixed"===t)e=!1;else{const i=t.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);i||J.throwArgumentError("invalid fixed format","format",t),e="u"!==i[1],r=parseInt(i[2]),n=parseInt(i[3])}else if(t){const i=(e,r,n)=>null==t[e]?n:(typeof t[e]!==r&&J.throwArgumentError("invalid fixed format ("+e+" not "+r+")","format."+e,t[e]),t[e]);e=i("signed","boolean",e),r=i("width","number",r),n=i("decimals","number",n)}return r%8&&J.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",r),n>80&&J.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",n),new it(Q,e,r,n)}}class ot{constructor(t,e,r,n){t!==Q&&J.throwError("cannot use FixedNumber constructor; use FixedNumber.from",g.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=n,this._hex=e,this._value=r,this._isFixedNumber=!0,Object.freeze(this)}_checkFormat(t){this.format.name!==t.format.name&&J.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",t)}addUnsafe(t){this._checkFormat(t);const e=nt(this._value,this.format.decimals),r=nt(t._value,t.format.decimals);return ot.fromValue(e.add(r),this.format.decimals,this.format)}subUnsafe(t){this._checkFormat(t);const e=nt(this._value,this.format.decimals),r=nt(t._value,t.format.decimals);return ot.fromValue(e.sub(r),this.format.decimals,this.format)}mulUnsafe(t){this._checkFormat(t);const e=nt(this._value,this.format.decimals),r=nt(t._value,t.format.decimals);return ot.fromValue(e.mul(r).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(t){this._checkFormat(t);const e=nt(this._value,this.format.decimals),r=nt(t._value,t.format.decimals);return ot.fromValue(e.mul(this.format._multiplier).div(r),this.format.decimals,this.format)}floor(){const t=this.toString().split(".");1===t.length&&t.push("0");let e=ot.from(t[0],this.format);const r=!t[1].match(/^(0*)$/);return this.isNegative()&&r&&(e=e.subUnsafe(st.toFormat(e.format))),e}ceiling(){const t=this.toString().split(".");1===t.length&&t.push("0");let e=ot.from(t[0],this.format);const r=!t[1].match(/^(0*)$/);return!this.isNegative()&&r&&(e=e.addUnsafe(st.toFormat(e.format))),e}round(t){null==t&&(t=0);const e=this.toString().split(".");if(1===e.length&&e.push("0"),(t<0||t>80||t%1)&&J.throwArgumentError("invalid decimal count","decimals",t),e[1].length<=t)return this;const r=ot.from("1"+tt.substring(0,t),this.format),n=at.toFormat(this.format);return this.mulUnsafe(r).addUnsafe(n).floor().divUnsafe(r)}isZero(){return"0.0"===this._value||"0"===this._value}isNegative(){return"-"===this._value[0]}toString(){return this._value}toHexString(t){if(null==t)return this._hex;t%8&&J.throwArgumentError("invalid byte width","width",t);return F(H.from(this._hex).fromTwos(this.format.width).toTwos(t).toHexString(),t/8)}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(t){return ot.fromString(this._value,t)}static fromValue(t,e,r){return null!=r||null==e||function(t){return null!=t&&(H.isBigNumber(t)||"number"==typeof t&&t%1==0||"string"==typeof t&&!!t.match(/^-?[0-9]+$/)||_(t)||"bigint"==typeof t||A(t))}(e)||(r=e,e=null),null==e&&(e=0),null==r&&(r="fixed"),ot.fromString(rt(t,e),it.from(r))}static fromString(t,e){null==e&&(e="fixed");const r=it.from(e),n=nt(t,r.decimals);!r.signed&&n.lt(Y)&&Z("unsigned value cannot be negative","overflow","value",t);let i=null;r.signed?i=n.toTwos(r.width).toHexString():(i=n.toHexString(),i=F(i,r.width/8));const o=rt(n,r.decimals);return new ot(Q,i,o,r)}static fromBytes(t,e){null==e&&(e="fixed");const r=it.from(e);if(k(t).length>r.width/8)throw new Error("overflow");let n=H.from(t);r.signed&&(n=n.fromTwos(r.width));const i=n.toTwos((r.signed?0:1)+r.width).toHexString(),o=rt(n,r.decimals);return new ot(Q,i,o,r)}static from(t,e){if("string"==typeof t)return ot.fromString(t,e);if(A(t))return ot.fromBytes(t,e);try{return ot.fromValue(t,0,e)}catch(t){if(t.code!==g.errors.INVALID_ARGUMENT)throw t}return J.throwArgumentError("invalid FixedNumber value","value",t)}static isFixedNumber(t){return!(!t||!t._isFixedNumber)}}const st=ot.from(1),at=ot.from("0.5");var lt=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const ct=new g("properties/5.8.0");function ut(t,e,r){Object.defineProperty(t,e,{enumerable:!0,value:r,writable:!1})}function ht(t,e){for(let r=0;r<32;r++){if(t[e])return t[e];if(!t.prototype||"object"!=typeof t.prototype)break;t=Object.getPrototypeOf(t.prototype).constructor}return null}function dt(t){return lt(this,void 0,void 0,function*(){const e=Object.keys(t).map(e=>{const r=t[e];return Promise.resolve(r).then(t=>({key:e,value:t}))});return(yield Promise.all(e)).reduce((t,e)=>(t[e.key]=e.value,t),{})})}function ft(t,e){t&&"object"==typeof t||ct.throwArgumentError("invalid object","object",t),Object.keys(t).forEach(r=>{e[r]||ct.throwArgumentError("invalid object key - "+r,"transaction:"+r,t)})}function pt(t){const e={};for(const r in t)e[r]=t[r];return e}const mt={bigint:!0,boolean:!0,function:!0,number:!0,string:!0};function gt(t){if(null==t||mt[typeof t])return!0;if(Array.isArray(t)||"object"==typeof t){if(!Object.isFrozen(t))return!1;const e=Object.keys(t);for(let r=0;r<e.length;r++){let n=null;try{n=t[e[r]]}catch(t){continue}if(!gt(n))return!1}return!0}return ct.throwArgumentError("Cannot deepCopy "+typeof t,"object",t)}function vt(t){if(gt(t))return t;if(Array.isArray(t))return Object.freeze(t.map(t=>yt(t)));if("object"==typeof t){const e={};for(const r in t){const n=t[r];void 0!==n&&ut(e,r,yt(n))}return e}return ct.throwArgumentError("Cannot deepCopy "+typeof t,"object",t)}function yt(t){return vt(t)}class wt{constructor(t){for(const e in t)this[e]=yt(t[e])}}const bt="abi/5.8.0",Et=new g(bt),At={};let kt={calldata:!0,memory:!0,storage:!0},St={calldata:!0,memory:!0};function Ct(t,e){if("bytes"===t||"string"===t){if(kt[e])return!0}else if("address"===t){if("payable"===e)return!0}else if((t.indexOf("[")>=0||"tuple"===t)&&St[e])return!0;return(kt[e]||"payable"===e)&&Et.throwArgumentError("invalid modifier","name",e),!1}function xt(t,e){for(let r in e)ut(t,r,e[r])}const _t=Object.freeze({sighash:"sighash",minimal:"minimal",full:"full",json:"json"}),Pt=new RegExp(/^(.*)\[([0-9]*)\]$/);class Tt{constructor(t,e){t!==At&&Et.throwError("use fromString",g.errors.UNSUPPORTED_OPERATION,{operation:"new ParamType()"}),xt(this,e);let r=this.type.match(Pt);xt(this,r?{arrayLength:parseInt(r[2]||"-1"),arrayChildren:Tt.fromObject({type:r[1],components:this.components}),baseType:"array"}:{arrayLength:null,arrayChildren:null,baseType:null!=this.components?"tuple":this.type}),this._isParamType=!0,Object.freeze(this)}format(t){if(t||(t=_t.sighash),_t[t]||Et.throwArgumentError("invalid format type","format",t),t===_t.json){let e={type:"tuple"===this.baseType?"tuple":this.type,name:this.name||void 0};return"boolean"==typeof this.indexed&&(e.indexed=this.indexed),this.components&&(e.components=this.components.map(e=>JSON.parse(e.format(t)))),JSON.stringify(e)}let e="";return"array"===this.baseType?(e+=this.arrayChildren.format(t),e+="["+(this.arrayLength<0?"":String(this.arrayLength))+"]"):"tuple"===this.baseType?(t!==_t.sighash&&(e+=this.type),e+="("+this.components.map(e=>e.format(t)).join(t===_t.full?", ":",")+")"):e+=this.type,t!==_t.sighash&&(!0===this.indexed&&(e+=" indexed"),t===_t.full&&this.name&&(e+=" "+this.name)),e}static from(t,e){return"string"==typeof t?Tt.fromString(t,e):Tt.fromObject(t)}static fromObject(t){return Tt.isParamType(t)?t:new Tt(At,{name:t.name||null,type:qt(t.type),indexed:null==t.indexed?null:!!t.indexed,components:t.components?t.components.map(Tt.fromObject):null})}static fromString(t,e){return r=function(t,e){let r=t;function n(e){Et.throwArgumentError(`unexpected character at position ${e}`,"param",t)}function i(t){let r={type:"",name:"",parent:t,state:{allowType:!0}};return e&&(r.indexed=!1),r}t=t.replace(/\s/g," ");let o={type:"",name:"",state:{allowType:!0}},s=o;for(let r=0;r<t.length;r++){let o=t[r];switch(o){case"(":s.state.allowType&&""===s.type?s.type="tuple":s.state.allowParams||n(r),s.state.allowType=!1,s.type=qt(s.type),s.components=[i(s)],s=s.components[0];break;case")":delete s.state,"indexed"===s.name&&(e||n(r),s.indexed=!0,s.name=""),Ct(s.type,s.name)&&(s.name=""),s.type=qt(s.type);let t=s;s=s.parent,s||n(r),delete t.parent,s.state.allowParams=!1,s.state.allowName=!0,s.state.allowArray=!0;break;case",":delete s.state,"indexed"===s.name&&(e||n(r),s.indexed=!0,s.name=""),Ct(s.type,s.name)&&(s.name=""),s.type=qt(s.type);let a=i(s.parent);s.parent.components.push(a),delete s.parent,s=a;break;case" ":s.state.allowType&&""!==s.type&&(s.type=qt(s.type),delete s.state.allowType,s.state.allowName=!0,s.state.allowParams=!0),s.state.allowName&&""!==s.name&&("indexed"===s.name?(e||n(r),s.indexed&&n(r),s.indexed=!0,s.name=""):Ct(s.type,s.name)?s.name="":s.state.allowName=!1);break;case"[":s.state.allowArray||n(r),s.type+=o,s.state.allowArray=!1,s.state.allowName=!1,s.state.readArray=!0;break;case"]":s.state.readArray||n(r),s.type+=o,s.state.readArray=!1,s.state.allowArray=!0,s.state.allowName=!0;break;default:s.state.allowType?(s.type+=o,s.state.allowParams=!0,s.state.allowArray=!0):s.state.allowName?(s.name+=o,delete s.state.allowArray):s.state.readArray?s.type+=o:n(r)}}return s.parent&&Et.throwArgumentError("unexpected eof","param",t),delete o.state,"indexed"===s.name?(e||n(r.length-7),s.indexed&&n(r.length-7),s.indexed=!0,s.name=""):Ct(s.type,s.name)&&(s.name=""),o.type=qt(o.type),o}(t,!!e),Tt.fromObject({name:r.name,type:r.type,indexed:r.indexed,components:r.components});var r}static isParamType(t){return!(null==t||!t._isParamType)}}function It(t,e){return function(t){t=t.trim();let e=[],r="",n=0;for(let i=0;i<t.length;i++){let o=t[i];","===o&&0===n?(e.push(r),r=""):(r+=o,"("===o?n++:")"===o&&(n--,-1===n&&Et.throwArgumentError("unbalanced parenthesis","value",t)))}r&&e.push(r);return e}(t).map(t=>Tt.fromString(t,e))}class Nt{constructor(t,e){t!==At&&Et.throwError("use a static from method",g.errors.UNSUPPORTED_OPERATION,{operation:"new Fragment()"}),xt(this,e),this._isFragment=!0,Object.freeze(this)}static from(t){return Nt.isFragment(t)?t:"string"==typeof t?Nt.fromString(t):Nt.fromObject(t)}static fromObject(t){if(Nt.isFragment(t))return t;switch(t.type){case"function":return Dt.fromObject(t);case"event":return Mt.fromObject(t);case"constructor":return Ot.fromObject(t);case"error":return Lt.fromObject(t);case"fallback":case"receive":return null}return Et.throwArgumentError("invalid fragment object","value",t)}static fromString(t){return"event"===(t=(t=(t=t.replace(/\s/g," ")).replace(/\(/g," (").replace(/\)/g,") ").replace(/\s+/g," ")).trim()).split(" ")[0]?Mt.fromString(t.substring(5).trim()):"function"===t.split(" ")[0]?Dt.fromString(t.substring(8).trim()):"constructor"===t.split("(")[0].trim()?Ot.fromString(t.trim()):"error"===t.split(" ")[0]?Lt.fromString(t.substring(5).trim()):Et.throwArgumentError("unsupported fragment","value",t)}static isFragment(t){return!(!t||!t._isFragment)}}class Mt extends Nt{format(t){if(t||(t=_t.sighash),_t[t]||Et.throwArgumentError("invalid format type","format",t),t===_t.json)return JSON.stringify({type:"event",anonymous:this.anonymous,name:this.name,inputs:this.inputs.map(e=>JSON.parse(e.format(t)))});let e="";return t!==_t.sighash&&(e+="event "),e+=this.name+"("+this.inputs.map(e=>e.format(t)).join(t===_t.full?", ":",")+") ",t!==_t.sighash&&this.anonymous&&(e+="anonymous "),e.trim()}static from(t){return"string"==typeof t?Mt.fromString(t):Mt.fromObject(t)}static fromObject(t){if(Mt.isEventFragment(t))return t;"event"!==t.type&&Et.throwArgumentError("invalid event object","value",t);const e={name:Gt(t.name),anonymous:t.anonymous,inputs:t.inputs?t.inputs.map(Tt.fromObject):[],type:"event"};return new Mt(At,e)}static fromString(t){let e=t.match(jt);e||Et.throwArgumentError("invalid event string","value",t);let r=!1;return e[3].split(" ").forEach(t=>{switch(t.trim()){case"anonymous":r=!0;break;case"":break;default:Et.warn("unknown modifier: "+t)}}),Mt.fromObject({name:e[1].trim(),anonymous:r,inputs:It(e[2],!0),type:"event"})}static isEventFragment(t){return t&&t._isFragment&&"event"===t.type}}function Bt(t,e){e.gas=null;let r=t.split("@");return 1!==r.length?(r.length>2&&Et.throwArgumentError("invalid human-readable ABI signature","value",t),r[1].match(/^[0-9]+$/)||Et.throwArgumentError("invalid human-readable ABI signature gas","value",t),e.gas=H.from(r[1]),r[0]):t}function Rt(t,e){e.constant=!1,e.payable=!1,e.stateMutability="nonpayable",t.split(" ").forEach(t=>{switch(t.trim()){case"constant":e.constant=!0;break;case"payable":e.payable=!0,e.stateMutability="payable";break;case"nonpayable":e.payable=!1,e.stateMutability="nonpayable";break;case"pure":e.constant=!0,e.stateMutability="pure";break;case"view":e.constant=!0,e.stateMutability="view";break;case"external":case"public":case"":break;default:console.log("unknown modifier: "+t)}})}function Ft(t){let e={constant:!1,payable:!0,stateMutability:"payable"};return null!=t.stateMutability?(e.stateMutability=t.stateMutability,e.constant="view"===e.stateMutability||"pure"===e.stateMutability,null!=t.constant&&!!t.constant!==e.constant&&Et.throwArgumentError("cannot have constant function with mutability "+e.stateMutability,"value",t),e.payable="payable"===e.stateMutability,null!=t.payable&&!!t.payable!==e.payable&&Et.throwArgumentError("cannot have payable function with mutability "+e.stateMutability,"value",t)):null!=t.payable?(e.payable=!!t.payable,null!=t.constant||e.payable||"constructor"===t.type||Et.throwArgumentError("unable to determine stateMutability","value",t),e.constant=!!t.constant,e.constant?e.stateMutability="view":e.stateMutability=e.payable?"payable":"nonpayable",e.payable&&e.constant&&Et.throwArgumentError("cannot have constant payable function","value",t)):null!=t.constant?(e.constant=!!t.constant,e.payable=!e.constant,e.stateMutability=e.constant?"view":"payable"):"constructor"!==t.type&&Et.throwArgumentError("unable to determine stateMutability","value",t),e}class Ot extends Nt{format(t){if(t||(t=_t.sighash),_t[t]||Et.throwArgumentError("invalid format type","format",t),t===_t.json)return JSON.stringify({type:"constructor",stateMutability:"nonpayable"!==this.stateMutability?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(e=>JSON.parse(e.format(t)))});t===_t.sighash&&Et.throwError("cannot format a constructor for sighash",g.errors.UNSUPPORTED_OPERATION,{operation:"format(sighash)"});let e="constructor("+this.inputs.map(e=>e.format(t)).join(t===_t.full?", ":",")+") ";return this.stateMutability&&"nonpayable"!==this.stateMutability&&(e+=this.stateMutability+" "),e.trim()}static from(t){return"string"==typeof t?Ot.fromString(t):Ot.fromObject(t)}static fromObject(t){if(Ot.isConstructorFragment(t))return t;"constructor"!==t.type&&Et.throwArgumentError("invalid constructor object","value",t);let e=Ft(t);e.constant&&Et.throwArgumentError("constructor cannot be constant","value",t);const r={name:null,type:t.type,inputs:t.inputs?t.inputs.map(Tt.fromObject):[],payable:e.payable,stateMutability:e.stateMutability,gas:t.gas?H.from(t.gas):null};return new Ot(At,r)}static fromString(t){let e={type:"constructor"},r=(t=Bt(t,e)).match(jt);return r&&"constructor"===r[1].trim()||Et.throwArgumentError("invalid constructor string","value",t),e.inputs=It(r[2].trim(),!1),Rt(r[3].trim(),e),Ot.fromObject(e)}static isConstructorFragment(t){return t&&t._isFragment&&"constructor"===t.type}}class Dt extends Ot{format(t){if(t||(t=_t.sighash),_t[t]||Et.throwArgumentError("invalid format type","format",t),t===_t.json)return JSON.stringify({type:"function",name:this.name,constant:this.constant,stateMutability:"nonpayable"!==this.stateMutability?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(e=>JSON.parse(e.format(t))),outputs:this.outputs.map(e=>JSON.parse(e.format(t)))});let e="";return t!==_t.sighash&&(e+="function "),e+=this.name+"("+this.inputs.map(e=>e.format(t)).join(t===_t.full?", ":",")+") ",t!==_t.sighash&&(this.stateMutability?"nonpayable"!==this.stateMutability&&(e+=this.stateMutability+" "):this.constant&&(e+="view "),this.outputs&&this.outputs.length&&(e+="returns ("+this.outputs.map(e=>e.format(t)).join(", ")+") "),null!=this.gas&&(e+="@"+this.gas.toString()+" ")),e.trim()}static from(t){return"string"==typeof t?Dt.fromString(t):Dt.fromObject(t)}static fromObject(t){if(Dt.isFunctionFragment(t))return t;"function"!==t.type&&Et.throwArgumentError("invalid function object","value",t);let e=Ft(t);const r={type:t.type,name:Gt(t.name),constant:e.constant,inputs:t.inputs?t.inputs.map(Tt.fromObject):[],outputs:t.outputs?t.outputs.map(Tt.fromObject):[],payable:e.payable,stateMutability:e.stateMutability,gas:t.gas?H.from(t.gas):null};return new Dt(At,r)}static fromString(t){let e={type:"function"},r=(t=Bt(t,e)).split(" returns ");r.length>2&&Et.throwArgumentError("invalid function string","value",t);let n=r[0].match(jt);if(n||Et.throwArgumentError("invalid function signature","value",t),e.name=n[1].trim(),e.name&&Gt(e.name),e.inputs=It(n[2],!1),Rt(n[3].trim(),e),r.length>1){let n=r[1].match(jt);""==n[1].trim()&&""==n[3].trim()||Et.throwArgumentError("unexpected tokens","value",t),e.outputs=It(n[2],!1)}else e.outputs=[];return Dt.fromObject(e)}static isFunctionFragment(t){return t&&t._isFragment&&"function"===t.type}}function Ut(t){const e=t.format();return"Error(string)"!==e&&"Panic(uint256)"!==e||Et.throwArgumentError(`cannot specify user defined ${e} error`,"fragment",t),t}class Lt extends Nt{format(t){if(t||(t=_t.sighash),_t[t]||Et.throwArgumentError("invalid format type","format",t),t===_t.json)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map(e=>JSON.parse(e.format(t)))});let e="";return t!==_t.sighash&&(e+="error "),e+=this.name+"("+this.inputs.map(e=>e.format(t)).join(t===_t.full?", ":",")+") ",e.trim()}static from(t){return"string"==typeof t?Lt.fromString(t):Lt.fromObject(t)}static fromObject(t){if(Lt.isErrorFragment(t))return t;"error"!==t.type&&Et.throwArgumentError("invalid error object","value",t);const e={type:t.type,name:Gt(t.name),inputs:t.inputs?t.inputs.map(Tt.fromObject):[]};return Ut(new Lt(At,e))}static fromString(t){let e={type:"error"},r=t.match(jt);return r||Et.throwArgumentError("invalid error signature","value",t),e.name=r[1].trim(),e.name&&Gt(e.name),e.inputs=It(r[2],!1),Ut(Lt.fromObject(e))}static isErrorFragment(t){return t&&t._isFragment&&"error"===t.type}}function qt(t){return t.match(/^uint($|[^1-9])/)?t="uint256"+t.substring(4):t.match(/^int($|[^1-9])/)&&(t="int256"+t.substring(3)),t}const zt=new RegExp("^[a-zA-Z$_][a-zA-Z0-9$_]*$");function Gt(t){return t&&t.match(zt)||Et.throwArgumentError(`invalid identifier "${t}"`,"value",t),t}const jt=new RegExp("^([^)(]*)\\((.*)\\)([^)(]*)$");const Ht=new g(bt);function Kt(t){const e=[],r=function(t,n){if(Array.isArray(n))for(let i in n){const o=t.slice();o.push(i);try{r(o,n[i])}catch(t){e.push({path:o,error:t})}}};return r([],t),e}class Wt{constructor(t,e,r,n){this.name=t,this.type=e,this.localName=r,this.dynamic=n}_throwError(t,e){Ht.throwArgumentError(t,this.localName,e)}}class Vt{constructor(t){ut(this,"wordSize",t||32),this._data=[],this._dataLength=0,this._padding=new Uint8Array(t)}get data(){return M(this._data)}get length(){return this._dataLength}_writeData(t){return this._data.push(t),this._dataLength+=t.length,t.length}appendWriter(t){return this._writeData(S(t._data))}writeBytes(t){let e=k(t);const r=e.length%this.wordSize;return r&&(e=S([e,this._padding.slice(r)])),this._writeData(e)}_getValue(t){let e=k(H.from(t));return e.length>this.wordSize&&Ht.throwError("value out-of-bounds",g.errors.BUFFER_OVERRUN,{length:this.wordSize,offset:e.length}),e.length%this.wordSize&&(e=S([this._padding.slice(e.length%this.wordSize),e])),e}writeValue(t){return this._writeData(this._getValue(t))}writeUpdatableValue(){const t=this._data.length;return this._data.push(this._padding),this._dataLength+=this.wordSize,e=>{this._data[t]=this._getValue(e)}}}class $t{constructor(t,e,r,n){ut(this,"_data",k(t)),ut(this,"wordSize",e||32),ut(this,"_coerceFunc",r),ut(this,"allowLoose",n),this._offset=0}get data(){return T(this._data)}get consumed(){return this._offset}static coerce(t,e){let r=t.match("^u?int([0-9]+)$");return r&&parseInt(r[1])<=48&&(e=e.toNumber()),e}coerce(t,e){return this._coerceFunc?this._coerceFunc(t,e):$t.coerce(t,e)}_peekBytes(t,e,r){let n=Math.ceil(e/this.wordSize)*this.wordSize;return this._offset+n>this._data.length&&(this.allowLoose&&r&&this._offset+e<=this._data.length?n=e:Ht.throwError("data out-of-bounds",g.errors.BUFFER_OVERRUN,{length:this._data.length,offset:this._offset+n})),this._data.slice(this._offset,this._offset+n)}subReader(t){return new $t(this._data.slice(this._offset+t),this.wordSize,this._coerceFunc,this.allowLoose)}readBytes(t,e){let r=this._peekBytes(0,t,!!e);return this._offset+=r.length,r.slice(0,t)}readValue(){return H.from(this.readBytes(this.wordSize))}}var Jt,Qt={exports:{}};
1
+ "use strict";var t=require("@monygroupcorp/microact"),e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function r(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var n,i={exports:{}};var o=(n||(n=1,function(t,e){function r(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function i(t,e,r){if(i.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))}var o;"object"==typeof t?t.exports=i:e.BN=i,i.BN=i,i.wordSize=26;try{o="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:require("buffer").Buffer}catch(t){}function s(t,e){var n=t.charCodeAt(e);return n>=48&&n<=57?n-48:n>=65&&n<=70?n-55:n>=97&&n<=102?n-87:void r(!1,"Invalid character in "+t)}function a(t,e,r){var n=s(t,r);return r-1>=e&&(n|=s(t,r-1)<<4),n}function l(t,e,n,i){for(var o=0,s=0,a=Math.min(t.length,n),l=e;l<a;l++){var c=t.charCodeAt(l)-48;o*=i,s=c>=49?c-49+10:c>=17?c-17+10:c,r(c>=0&&s<i,"Invalid character"),o+=s}return o}function c(t,e){t.words=e.words,t.length=e.length,t.negative=e.negative,t.red=e.red}if(i.isBN=function(t){return t instanceof i||null!==t&&"object"==typeof t&&t.constructor.wordSize===i.wordSize&&Array.isArray(t.words)},i.max=function(t,e){return t.cmp(e)>0?t:e},i.min=function(t,e){return t.cmp(e)<0?t:e},i.prototype._init=function(t,e,n){if("number"==typeof t)return this._initNumber(t,e,n);if("object"==typeof t)return this._initArray(t,e,n);"hex"===e&&(e=16),r(e===(0|e)&&e>=2&&e<=36);var i=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(i++,this.negative=1),i<t.length&&(16===e?this._parseHex(t,i,n):(this._parseBase(t,e,i),"le"===n&&this._initArray(this.toArray(),e,n)))},i.prototype._initNumber=function(t,e,n){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(r(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===n&&this._initArray(this.toArray(),e,n)},i.prototype._initArray=function(t,e,n){if(r("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var o,s,a=0;if("be"===n)for(i=t.length-1,o=0;i>=0;i-=3)s=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[o]|=s<<a&67108863,this.words[o+1]=s>>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===n)for(i=0,o=0;i<t.length;i+=3)s=t[i]|t[i+1]<<8|t[i+2]<<16,this.words[o]|=s<<a&67108863,this.words[o+1]=s>>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this._strip()},i.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var n=0;n<this.length;n++)this.words[n]=0;var i,o=0,s=0;if("be"===r)for(n=t.length-1;n>=e;n-=2)i=a(t,e,n)<<o,this.words[s]|=67108863&i,o>=18?(o-=18,s+=1,this.words[s]|=i>>>26):o+=8;else for(n=(t.length-e)%2==0?e+1:e;n<t.length;n+=2)i=a(t,e,n)<<o,this.words[s]|=67108863&i,o>=18?(o-=18,s+=1,this.words[s]|=i>>>26):o+=8;this._strip()},i.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var o=t.length-r,s=o%n,a=Math.min(o,o-s)+r,c=0,u=r;u<a;u+=n)c=l(t,u,u+n,e),this.imuln(i),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c);if(0!==s){var h=1;for(c=l(t,u,t.length,e),u=0;u<s;u++)h*=e;this.imuln(h),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c)}this._strip()},i.prototype.copy=function(t){t.words=new Array(this.length);for(var e=0;e<this.length;e++)t.words[e]=this.words[e];t.length=this.length,t.negative=this.negative,t.red=this.red},i.prototype._move=function(t){c(t,this)},i.prototype.clone=function(){var t=new i(null);return this.copy(t),t},i.prototype._expand=function(t){for(;this.length<t;)this.words[this.length++]=0;return this},i.prototype._strip=function(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this._normSign()},i.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!=typeof Symbol&&"function"==typeof Symbol.for)try{i.prototype[Symbol.for("nodejs.util.inspect.custom")]=u}catch(t){i.prototype.inspect=u}else i.prototype.inspect=u;function u(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var h=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],d=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function p(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],o=0|e.words[0],s=i*o,a=67108863&s,l=s/67108864|0;r.words[0]=a;for(var c=1;c<n;c++){for(var u=l>>>26,h=67108863&l,d=Math.min(c,e.length-1),f=Math.max(0,c-t.length+1);f<=d;f++){var p=c-f|0;u+=(s=(i=0|t.words[p])*(o=0|e.words[f])+h)/67108864|0,h=67108863&s}r.words[c]=0|h,l=0|u}return 0!==l?r.words[c]=0|l:r.length--,r._strip()}i.prototype.toString=function(t,e){var n;if(e=0|e||1,16===(t=t||10)||"hex"===t){n="";for(var i=0,o=0,s=0;s<this.length;s++){var a=this.words[s],l=(16777215&(a<<i|o)).toString(16);o=a>>>24-i&16777215,(i+=2)>=26&&(i-=26,s--),n=0!==o||s!==this.length-1?h[6-l.length]+l+n:l+n}for(0!==o&&(n=o.toString(16)+n);n.length%e!==0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(t===(0|t)&&t>=2&&t<=36){var c=d[t],u=f[t];n="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modrn(u).toString(t);n=(p=p.idivn(u)).isZero()?m+n:h[c-m.length]+m+n}for(this.isZero()&&(n="0"+n);n.length%e!==0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}r(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},i.prototype.toJSON=function(){return this.toString(16,2)},o&&(i.prototype.toBuffer=function(t,e){return this.toArrayLike(o,t,e)}),i.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},i.prototype.toArrayLike=function(t,e,n){this._strip();var i=this.byteLength(),o=n||Math.max(1,i);r(i<=o,"byte array longer than desired length"),r(o>0,"Requested array length <= 0");var s=function(t,e){return t.allocUnsafe?t.allocUnsafe(e):new t(e)}(t,o);return this["_toArrayLike"+("le"===e?"LE":"BE")](s,i),s},i.prototype._toArrayLikeLE=function(t,e){for(var r=0,n=0,i=0,o=0;i<this.length;i++){var s=this.words[i]<<o|n;t[r++]=255&s,r<t.length&&(t[r++]=s>>8&255),r<t.length&&(t[r++]=s>>16&255),6===o?(r<t.length&&(t[r++]=s>>24&255),n=0,o=0):(n=s>>>24,o+=2)}if(r<t.length)for(t[r++]=n;r<t.length;)t[r++]=0},i.prototype._toArrayLikeBE=function(t,e){for(var r=t.length-1,n=0,i=0,o=0;i<this.length;i++){var s=this.words[i]<<o|n;t[r--]=255&s,r>=0&&(t[r--]=s>>8&255),r>=0&&(t[r--]=s>>16&255),6===o?(r>=0&&(t[r--]=s>>24&255),n=0,o=0):(n=s>>>24,o+=2)}if(r>=0)for(t[r--]=n;r>=0;)t[r--]=0},Math.clz32?i.prototype._countBits=function(t){return 32-Math.clz32(t)}:i.prototype._countBits=function(t){var e=t,r=0;return e>=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},i.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 8191&e||(r+=13,e>>>=13),127&e||(r+=7,e>>>=7),15&e||(r+=4,e>>>=4),3&e||(r+=2,e>>>=2),1&e||r++,r},i.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;e<this.length;e++){var r=this._zeroBits(this.words[e]);if(t+=r,26!==r)break}return t},i.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},i.prototype.toTwos=function(t){return 0!==this.negative?this.abs().inotn(t).iaddn(1):this.clone()},i.prototype.fromTwos=function(t){return this.testn(t-1)?this.notn(t).iaddn(1).ineg():this.clone()},i.prototype.isNeg=function(){return 0!==this.negative},i.prototype.neg=function(){return this.clone().ineg()},i.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},i.prototype.iuor=function(t){for(;this.length<t.length;)this.words[this.length++]=0;for(var e=0;e<t.length;e++)this.words[e]=this.words[e]|t.words[e];return this._strip()},i.prototype.ior=function(t){return r(0===(this.negative|t.negative)),this.iuor(t)},i.prototype.or=function(t){return this.length>t.length?this.clone().ior(t):t.clone().ior(this)},i.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},i.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;r<e.length;r++)this.words[r]=this.words[r]&t.words[r];return this.length=e.length,this._strip()},i.prototype.iand=function(t){return r(0===(this.negative|t.negative)),this.iuand(t)},i.prototype.and=function(t){return this.length>t.length?this.clone().iand(t):t.clone().iand(this)},i.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},i.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;n<r.length;n++)this.words[n]=e.words[n]^r.words[n];if(this!==e)for(;n<e.length;n++)this.words[n]=e.words[n];return this.length=e.length,this._strip()},i.prototype.ixor=function(t){return r(0===(this.negative|t.negative)),this.iuxor(t)},i.prototype.xor=function(t){return this.length>t.length?this.clone().ixor(t):t.clone().ixor(this)},i.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},i.prototype.inotn=function(t){r("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),n=t%26;this._expand(e),n>0&&e--;for(var i=0;i<e;i++)this.words[i]=67108863&~this.words[i];return n>0&&(this.words[i]=~this.words[i]&67108863>>26-n),this._strip()},i.prototype.notn=function(t){return this.clone().inotn(t)},i.prototype.setn=function(t,e){r("number"==typeof t&&t>=0);var n=t/26|0,i=t%26;return this._expand(n+1),this.words[n]=e?this.words[n]|1<<i:this.words[n]&~(1<<i),this._strip()},i.prototype.iadd=function(t){var e,r,n;if(0!==this.negative&&0===t.negative)return this.negative=0,e=this.isub(t),this.negative^=1,this._normSign();if(0===this.negative&&0!==t.negative)return t.negative=0,e=this.isub(t),t.negative=1,e._normSign();this.length>t.length?(r=this,n=t):(r=t,n=this);for(var i=0,o=0;o<n.length;o++)e=(0|r.words[o])+(0|n.words[o])+i,this.words[o]=67108863&e,i=e>>>26;for(;0!==i&&o<r.length;o++)e=(0|r.words[o])+i,this.words[o]=67108863&e,i=e>>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;o<r.length;o++)this.words[o]=r.words[o];return this},i.prototype.add=function(t){var e;return 0!==t.negative&&0===this.negative?(t.negative=0,e=this.sub(t),t.negative^=1,e):0===t.negative&&0!==this.negative?(this.negative=0,e=t.sub(this),this.negative=1,e):this.length>t.length?this.clone().iadd(t):t.clone().iadd(this)},i.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,n,i=this.cmp(t);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(r=this,n=t):(r=t,n=this);for(var o=0,s=0;s<n.length;s++)o=(e=(0|r.words[s])-(0|n.words[s])+o)>>26,this.words[s]=67108863&e;for(;0!==o&&s<r.length;s++)o=(e=(0|r.words[s])+o)>>26,this.words[s]=67108863&e;if(0===o&&s<r.length&&r!==this)for(;s<r.length;s++)this.words[s]=r.words[s];return this.length=Math.max(this.length,s),r!==this&&(this.negative=1),this._strip()},i.prototype.sub=function(t){return this.clone().isub(t)};var m=function(t,e,r){var n,i,o,s=t.words,a=e.words,l=r.words,c=0,u=0|s[0],h=8191&u,d=u>>>13,f=0|s[1],p=8191&f,m=f>>>13,g=0|s[2],v=8191&g,w=g>>>13,y=0|s[3],b=8191&y,E=y>>>13,A=0|s[4],k=8191&A,S=A>>>13,C=0|s[5],x=8191&C,_=C>>>13,T=0|s[6],P=8191&T,I=T>>>13,N=0|s[7],M=8191&N,B=N>>>13,R=0|s[8],F=8191&R,O=R>>>13,D=0|s[9],U=8191&D,L=D>>>13,q=0|a[0],z=8191&q,G=q>>>13,H=0|a[1],j=8191&H,K=H>>>13,W=0|a[2],V=8191&W,$=W>>>13,J=0|a[3],Q=8191&J,Y=J>>>13,X=0|a[4],Z=8191&X,tt=X>>>13,et=0|a[5],rt=8191&et,nt=et>>>13,it=0|a[6],ot=8191&it,st=it>>>13,at=0|a[7],lt=8191&at,ct=at>>>13,ut=0|a[8],ht=8191&ut,dt=ut>>>13,ft=0|a[9],pt=8191&ft,mt=ft>>>13;r.negative=t.negative^e.negative,r.length=19;var gt=(c+(n=Math.imul(h,z))|0)+((8191&(i=(i=Math.imul(h,G))+Math.imul(d,z)|0))<<13)|0;c=((o=Math.imul(d,G))+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(p,z),i=(i=Math.imul(p,G))+Math.imul(m,z)|0,o=Math.imul(m,G);var vt=(c+(n=n+Math.imul(h,j)|0)|0)+((8191&(i=(i=i+Math.imul(h,K)|0)+Math.imul(d,j)|0))<<13)|0;c=((o=o+Math.imul(d,K)|0)+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(v,z),i=(i=Math.imul(v,G))+Math.imul(w,z)|0,o=Math.imul(w,G),n=n+Math.imul(p,j)|0,i=(i=i+Math.imul(p,K)|0)+Math.imul(m,j)|0,o=o+Math.imul(m,K)|0;var wt=(c+(n=n+Math.imul(h,V)|0)|0)+((8191&(i=(i=i+Math.imul(h,$)|0)+Math.imul(d,V)|0))<<13)|0;c=((o=o+Math.imul(d,$)|0)+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(b,z),i=(i=Math.imul(b,G))+Math.imul(E,z)|0,o=Math.imul(E,G),n=n+Math.imul(v,j)|0,i=(i=i+Math.imul(v,K)|0)+Math.imul(w,j)|0,o=o+Math.imul(w,K)|0,n=n+Math.imul(p,V)|0,i=(i=i+Math.imul(p,$)|0)+Math.imul(m,V)|0,o=o+Math.imul(m,$)|0;var yt=(c+(n=n+Math.imul(h,Q)|0)|0)+((8191&(i=(i=i+Math.imul(h,Y)|0)+Math.imul(d,Q)|0))<<13)|0;c=((o=o+Math.imul(d,Y)|0)+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(k,z),i=(i=Math.imul(k,G))+Math.imul(S,z)|0,o=Math.imul(S,G),n=n+Math.imul(b,j)|0,i=(i=i+Math.imul(b,K)|0)+Math.imul(E,j)|0,o=o+Math.imul(E,K)|0,n=n+Math.imul(v,V)|0,i=(i=i+Math.imul(v,$)|0)+Math.imul(w,V)|0,o=o+Math.imul(w,$)|0,n=n+Math.imul(p,Q)|0,i=(i=i+Math.imul(p,Y)|0)+Math.imul(m,Q)|0,o=o+Math.imul(m,Y)|0;var bt=(c+(n=n+Math.imul(h,Z)|0)|0)+((8191&(i=(i=i+Math.imul(h,tt)|0)+Math.imul(d,Z)|0))<<13)|0;c=((o=o+Math.imul(d,tt)|0)+(i>>>13)|0)+(bt>>>26)|0,bt&=67108863,n=Math.imul(x,z),i=(i=Math.imul(x,G))+Math.imul(_,z)|0,o=Math.imul(_,G),n=n+Math.imul(k,j)|0,i=(i=i+Math.imul(k,K)|0)+Math.imul(S,j)|0,o=o+Math.imul(S,K)|0,n=n+Math.imul(b,V)|0,i=(i=i+Math.imul(b,$)|0)+Math.imul(E,V)|0,o=o+Math.imul(E,$)|0,n=n+Math.imul(v,Q)|0,i=(i=i+Math.imul(v,Y)|0)+Math.imul(w,Q)|0,o=o+Math.imul(w,Y)|0,n=n+Math.imul(p,Z)|0,i=(i=i+Math.imul(p,tt)|0)+Math.imul(m,Z)|0,o=o+Math.imul(m,tt)|0;var Et=(c+(n=n+Math.imul(h,rt)|0)|0)+((8191&(i=(i=i+Math.imul(h,nt)|0)+Math.imul(d,rt)|0))<<13)|0;c=((o=o+Math.imul(d,nt)|0)+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(P,z),i=(i=Math.imul(P,G))+Math.imul(I,z)|0,o=Math.imul(I,G),n=n+Math.imul(x,j)|0,i=(i=i+Math.imul(x,K)|0)+Math.imul(_,j)|0,o=o+Math.imul(_,K)|0,n=n+Math.imul(k,V)|0,i=(i=i+Math.imul(k,$)|0)+Math.imul(S,V)|0,o=o+Math.imul(S,$)|0,n=n+Math.imul(b,Q)|0,i=(i=i+Math.imul(b,Y)|0)+Math.imul(E,Q)|0,o=o+Math.imul(E,Y)|0,n=n+Math.imul(v,Z)|0,i=(i=i+Math.imul(v,tt)|0)+Math.imul(w,Z)|0,o=o+Math.imul(w,tt)|0,n=n+Math.imul(p,rt)|0,i=(i=i+Math.imul(p,nt)|0)+Math.imul(m,rt)|0,o=o+Math.imul(m,nt)|0;var At=(c+(n=n+Math.imul(h,ot)|0)|0)+((8191&(i=(i=i+Math.imul(h,st)|0)+Math.imul(d,ot)|0))<<13)|0;c=((o=o+Math.imul(d,st)|0)+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(M,z),i=(i=Math.imul(M,G))+Math.imul(B,z)|0,o=Math.imul(B,G),n=n+Math.imul(P,j)|0,i=(i=i+Math.imul(P,K)|0)+Math.imul(I,j)|0,o=o+Math.imul(I,K)|0,n=n+Math.imul(x,V)|0,i=(i=i+Math.imul(x,$)|0)+Math.imul(_,V)|0,o=o+Math.imul(_,$)|0,n=n+Math.imul(k,Q)|0,i=(i=i+Math.imul(k,Y)|0)+Math.imul(S,Q)|0,o=o+Math.imul(S,Y)|0,n=n+Math.imul(b,Z)|0,i=(i=i+Math.imul(b,tt)|0)+Math.imul(E,Z)|0,o=o+Math.imul(E,tt)|0,n=n+Math.imul(v,rt)|0,i=(i=i+Math.imul(v,nt)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,nt)|0,n=n+Math.imul(p,ot)|0,i=(i=i+Math.imul(p,st)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,st)|0;var kt=(c+(n=n+Math.imul(h,lt)|0)|0)+((8191&(i=(i=i+Math.imul(h,ct)|0)+Math.imul(d,lt)|0))<<13)|0;c=((o=o+Math.imul(d,ct)|0)+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(F,z),i=(i=Math.imul(F,G))+Math.imul(O,z)|0,o=Math.imul(O,G),n=n+Math.imul(M,j)|0,i=(i=i+Math.imul(M,K)|0)+Math.imul(B,j)|0,o=o+Math.imul(B,K)|0,n=n+Math.imul(P,V)|0,i=(i=i+Math.imul(P,$)|0)+Math.imul(I,V)|0,o=o+Math.imul(I,$)|0,n=n+Math.imul(x,Q)|0,i=(i=i+Math.imul(x,Y)|0)+Math.imul(_,Q)|0,o=o+Math.imul(_,Y)|0,n=n+Math.imul(k,Z)|0,i=(i=i+Math.imul(k,tt)|0)+Math.imul(S,Z)|0,o=o+Math.imul(S,tt)|0,n=n+Math.imul(b,rt)|0,i=(i=i+Math.imul(b,nt)|0)+Math.imul(E,rt)|0,o=o+Math.imul(E,nt)|0,n=n+Math.imul(v,ot)|0,i=(i=i+Math.imul(v,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,n=n+Math.imul(p,lt)|0,i=(i=i+Math.imul(p,ct)|0)+Math.imul(m,lt)|0,o=o+Math.imul(m,ct)|0;var St=(c+(n=n+Math.imul(h,ht)|0)|0)+((8191&(i=(i=i+Math.imul(h,dt)|0)+Math.imul(d,ht)|0))<<13)|0;c=((o=o+Math.imul(d,dt)|0)+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(U,z),i=(i=Math.imul(U,G))+Math.imul(L,z)|0,o=Math.imul(L,G),n=n+Math.imul(F,j)|0,i=(i=i+Math.imul(F,K)|0)+Math.imul(O,j)|0,o=o+Math.imul(O,K)|0,n=n+Math.imul(M,V)|0,i=(i=i+Math.imul(M,$)|0)+Math.imul(B,V)|0,o=o+Math.imul(B,$)|0,n=n+Math.imul(P,Q)|0,i=(i=i+Math.imul(P,Y)|0)+Math.imul(I,Q)|0,o=o+Math.imul(I,Y)|0,n=n+Math.imul(x,Z)|0,i=(i=i+Math.imul(x,tt)|0)+Math.imul(_,Z)|0,o=o+Math.imul(_,tt)|0,n=n+Math.imul(k,rt)|0,i=(i=i+Math.imul(k,nt)|0)+Math.imul(S,rt)|0,o=o+Math.imul(S,nt)|0,n=n+Math.imul(b,ot)|0,i=(i=i+Math.imul(b,st)|0)+Math.imul(E,ot)|0,o=o+Math.imul(E,st)|0,n=n+Math.imul(v,lt)|0,i=(i=i+Math.imul(v,ct)|0)+Math.imul(w,lt)|0,o=o+Math.imul(w,ct)|0,n=n+Math.imul(p,ht)|0,i=(i=i+Math.imul(p,dt)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,dt)|0;var Ct=(c+(n=n+Math.imul(h,pt)|0)|0)+((8191&(i=(i=i+Math.imul(h,mt)|0)+Math.imul(d,pt)|0))<<13)|0;c=((o=o+Math.imul(d,mt)|0)+(i>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,n=Math.imul(U,j),i=(i=Math.imul(U,K))+Math.imul(L,j)|0,o=Math.imul(L,K),n=n+Math.imul(F,V)|0,i=(i=i+Math.imul(F,$)|0)+Math.imul(O,V)|0,o=o+Math.imul(O,$)|0,n=n+Math.imul(M,Q)|0,i=(i=i+Math.imul(M,Y)|0)+Math.imul(B,Q)|0,o=o+Math.imul(B,Y)|0,n=n+Math.imul(P,Z)|0,i=(i=i+Math.imul(P,tt)|0)+Math.imul(I,Z)|0,o=o+Math.imul(I,tt)|0,n=n+Math.imul(x,rt)|0,i=(i=i+Math.imul(x,nt)|0)+Math.imul(_,rt)|0,o=o+Math.imul(_,nt)|0,n=n+Math.imul(k,ot)|0,i=(i=i+Math.imul(k,st)|0)+Math.imul(S,ot)|0,o=o+Math.imul(S,st)|0,n=n+Math.imul(b,lt)|0,i=(i=i+Math.imul(b,ct)|0)+Math.imul(E,lt)|0,o=o+Math.imul(E,ct)|0,n=n+Math.imul(v,ht)|0,i=(i=i+Math.imul(v,dt)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,dt)|0;var xt=(c+(n=n+Math.imul(p,pt)|0)|0)+((8191&(i=(i=i+Math.imul(p,mt)|0)+Math.imul(m,pt)|0))<<13)|0;c=((o=o+Math.imul(m,mt)|0)+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(U,V),i=(i=Math.imul(U,$))+Math.imul(L,V)|0,o=Math.imul(L,$),n=n+Math.imul(F,Q)|0,i=(i=i+Math.imul(F,Y)|0)+Math.imul(O,Q)|0,o=o+Math.imul(O,Y)|0,n=n+Math.imul(M,Z)|0,i=(i=i+Math.imul(M,tt)|0)+Math.imul(B,Z)|0,o=o+Math.imul(B,tt)|0,n=n+Math.imul(P,rt)|0,i=(i=i+Math.imul(P,nt)|0)+Math.imul(I,rt)|0,o=o+Math.imul(I,nt)|0,n=n+Math.imul(x,ot)|0,i=(i=i+Math.imul(x,st)|0)+Math.imul(_,ot)|0,o=o+Math.imul(_,st)|0,n=n+Math.imul(k,lt)|0,i=(i=i+Math.imul(k,ct)|0)+Math.imul(S,lt)|0,o=o+Math.imul(S,ct)|0,n=n+Math.imul(b,ht)|0,i=(i=i+Math.imul(b,dt)|0)+Math.imul(E,ht)|0,o=o+Math.imul(E,dt)|0;var _t=(c+(n=n+Math.imul(v,pt)|0)|0)+((8191&(i=(i=i+Math.imul(v,mt)|0)+Math.imul(w,pt)|0))<<13)|0;c=((o=o+Math.imul(w,mt)|0)+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(U,Q),i=(i=Math.imul(U,Y))+Math.imul(L,Q)|0,o=Math.imul(L,Y),n=n+Math.imul(F,Z)|0,i=(i=i+Math.imul(F,tt)|0)+Math.imul(O,Z)|0,o=o+Math.imul(O,tt)|0,n=n+Math.imul(M,rt)|0,i=(i=i+Math.imul(M,nt)|0)+Math.imul(B,rt)|0,o=o+Math.imul(B,nt)|0,n=n+Math.imul(P,ot)|0,i=(i=i+Math.imul(P,st)|0)+Math.imul(I,ot)|0,o=o+Math.imul(I,st)|0,n=n+Math.imul(x,lt)|0,i=(i=i+Math.imul(x,ct)|0)+Math.imul(_,lt)|0,o=o+Math.imul(_,ct)|0,n=n+Math.imul(k,ht)|0,i=(i=i+Math.imul(k,dt)|0)+Math.imul(S,ht)|0,o=o+Math.imul(S,dt)|0;var Tt=(c+(n=n+Math.imul(b,pt)|0)|0)+((8191&(i=(i=i+Math.imul(b,mt)|0)+Math.imul(E,pt)|0))<<13)|0;c=((o=o+Math.imul(E,mt)|0)+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(U,Z),i=(i=Math.imul(U,tt))+Math.imul(L,Z)|0,o=Math.imul(L,tt),n=n+Math.imul(F,rt)|0,i=(i=i+Math.imul(F,nt)|0)+Math.imul(O,rt)|0,o=o+Math.imul(O,nt)|0,n=n+Math.imul(M,ot)|0,i=(i=i+Math.imul(M,st)|0)+Math.imul(B,ot)|0,o=o+Math.imul(B,st)|0,n=n+Math.imul(P,lt)|0,i=(i=i+Math.imul(P,ct)|0)+Math.imul(I,lt)|0,o=o+Math.imul(I,ct)|0,n=n+Math.imul(x,ht)|0,i=(i=i+Math.imul(x,dt)|0)+Math.imul(_,ht)|0,o=o+Math.imul(_,dt)|0;var Pt=(c+(n=n+Math.imul(k,pt)|0)|0)+((8191&(i=(i=i+Math.imul(k,mt)|0)+Math.imul(S,pt)|0))<<13)|0;c=((o=o+Math.imul(S,mt)|0)+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(U,rt),i=(i=Math.imul(U,nt))+Math.imul(L,rt)|0,o=Math.imul(L,nt),n=n+Math.imul(F,ot)|0,i=(i=i+Math.imul(F,st)|0)+Math.imul(O,ot)|0,o=o+Math.imul(O,st)|0,n=n+Math.imul(M,lt)|0,i=(i=i+Math.imul(M,ct)|0)+Math.imul(B,lt)|0,o=o+Math.imul(B,ct)|0,n=n+Math.imul(P,ht)|0,i=(i=i+Math.imul(P,dt)|0)+Math.imul(I,ht)|0,o=o+Math.imul(I,dt)|0;var It=(c+(n=n+Math.imul(x,pt)|0)|0)+((8191&(i=(i=i+Math.imul(x,mt)|0)+Math.imul(_,pt)|0))<<13)|0;c=((o=o+Math.imul(_,mt)|0)+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(U,ot),i=(i=Math.imul(U,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),n=n+Math.imul(F,lt)|0,i=(i=i+Math.imul(F,ct)|0)+Math.imul(O,lt)|0,o=o+Math.imul(O,ct)|0,n=n+Math.imul(M,ht)|0,i=(i=i+Math.imul(M,dt)|0)+Math.imul(B,ht)|0,o=o+Math.imul(B,dt)|0;var Nt=(c+(n=n+Math.imul(P,pt)|0)|0)+((8191&(i=(i=i+Math.imul(P,mt)|0)+Math.imul(I,pt)|0))<<13)|0;c=((o=o+Math.imul(I,mt)|0)+(i>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,n=Math.imul(U,lt),i=(i=Math.imul(U,ct))+Math.imul(L,lt)|0,o=Math.imul(L,ct),n=n+Math.imul(F,ht)|0,i=(i=i+Math.imul(F,dt)|0)+Math.imul(O,ht)|0,o=o+Math.imul(O,dt)|0;var Mt=(c+(n=n+Math.imul(M,pt)|0)|0)+((8191&(i=(i=i+Math.imul(M,mt)|0)+Math.imul(B,pt)|0))<<13)|0;c=((o=o+Math.imul(B,mt)|0)+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(U,ht),i=(i=Math.imul(U,dt))+Math.imul(L,ht)|0,o=Math.imul(L,dt);var Bt=(c+(n=n+Math.imul(F,pt)|0)|0)+((8191&(i=(i=i+Math.imul(F,mt)|0)+Math.imul(O,pt)|0))<<13)|0;c=((o=o+Math.imul(O,mt)|0)+(i>>>13)|0)+(Bt>>>26)|0,Bt&=67108863;var Rt=(c+(n=Math.imul(U,pt))|0)+((8191&(i=(i=Math.imul(U,mt))+Math.imul(L,pt)|0))<<13)|0;return c=((o=Math.imul(L,mt))+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,l[0]=gt,l[1]=vt,l[2]=wt,l[3]=yt,l[4]=bt,l[5]=Et,l[6]=At,l[7]=kt,l[8]=St,l[9]=Ct,l[10]=xt,l[11]=_t,l[12]=Tt,l[13]=Pt,l[14]=It,l[15]=Nt,l[16]=Mt,l[17]=Bt,l[18]=Rt,0!==c&&(l[19]=c,r.length++),r};function g(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,o=0;o<r.length-1;o++){var s=i;i=0;for(var a=67108863&n,l=Math.min(o,e.length-1),c=Math.max(0,o-t.length+1);c<=l;c++){var u=o-c,h=(0|t.words[u])*(0|e.words[c]),d=67108863&h;a=67108863&(d=d+a|0),i+=(s=(s=s+(h/67108864|0)|0)+(d>>>26)|0)>>>26,s&=67108863}r.words[o]=a,n=s,s=i}return 0!==n?r.words[o]=n:r.length--,r._strip()}function v(t,e,r){return g(t,e,r)}Math.imul||(m=p),i.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?m(this,t,e):r<63?p(this,t,e):r<1024?g(this,t,e):v(this,t,e)},i.prototype.mul=function(t){var e=new i(null);return e.words=new Array(this.length+t.length),this.mulTo(t,e)},i.prototype.mulf=function(t){var e=new i(null);return e.words=new Array(this.length+t.length),v(this,t,e)},i.prototype.imul=function(t){return this.clone().mulTo(t,this)},i.prototype.imuln=function(t){var e=t<0;e&&(t=-t),r("number"==typeof t),r(t<67108864);for(var n=0,i=0;i<this.length;i++){var o=(0|this.words[i])*t,s=(67108863&o)+(67108863&n);n>>=26,n+=o/67108864|0,n+=s>>>26,this.words[i]=67108863&s}return 0!==n&&(this.words[i]=n,this.length++),this.length=0===t?1:this.length,e?this.ineg():this},i.prototype.muln=function(t){return this.clone().imuln(t)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r<e.length;r++){var n=r/26|0,i=r%26;e[r]=t.words[n]>>>i&1}return e}(t);if(0===e.length)return new i(1);for(var r=this,n=0;n<e.length&&0===e[n];n++,r=r.sqr());if(++n<e.length)for(var o=r.sqr();n<e.length;n++,o=o.sqr())0!==e[n]&&(r=r.mul(o));return r},i.prototype.iushln=function(t){r("number"==typeof t&&t>=0);var e,n=t%26,i=(t-n)/26,o=67108863>>>26-n<<26-n;if(0!==n){var s=0;for(e=0;e<this.length;e++){var a=this.words[e]&o,l=(0|this.words[e])-a<<n;this.words[e]=l|s,s=a>>>26-n}s&&(this.words[e]=s,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e<i;e++)this.words[e]=0;this.length+=i}return this._strip()},i.prototype.ishln=function(t){return r(0===this.negative),this.iushln(t)},i.prototype.iushrn=function(t,e,n){var i;r("number"==typeof t&&t>=0),i=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<<o,l=n;if(i-=s,i=Math.max(0,i),l){for(var c=0;c<s;c++)l.words[c]=this.words[c];l.length=s}if(0===s);else if(this.length>s)for(this.length-=s,c=0;c<this.length;c++)this.words[c]=this.words[c+s];else this.words[0]=0,this.length=1;var u=0;for(c=this.length-1;c>=0&&(0!==u||c>=i);c--){var h=0|this.words[c];this.words[c]=u<<26-o|h>>>o,u=h&a}return l&&0!==u&&(l.words[l.length++]=u),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},i.prototype.ishrn=function(t,e,n){return r(0===this.negative),this.iushrn(t,e,n)},i.prototype.shln=function(t){return this.clone().ishln(t)},i.prototype.ushln=function(t){return this.clone().iushln(t)},i.prototype.shrn=function(t){return this.clone().ishrn(t)},i.prototype.ushrn=function(t){return this.clone().iushrn(t)},i.prototype.testn=function(t){r("number"==typeof t&&t>=0);var e=t%26,n=(t-e)/26,i=1<<e;return!(this.length<=n||!(this.words[n]&i))},i.prototype.imaskn=function(t){r("number"==typeof t&&t>=0);var e=t%26,n=(t-e)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=n)return this;if(0!==e&&n++,this.length=Math.min(n,this.length),0!==e){var i=67108863^67108863>>>e<<e;this.words[this.length-1]&=i}return this._strip()},i.prototype.maskn=function(t){return this.clone().imaskn(t)},i.prototype.iaddn=function(t){return r("number"==typeof t),r(t<67108864),t<0?this.isubn(-t):0!==this.negative?1===this.length&&(0|this.words[0])<=t?(this.words[0]=t-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(t),this.negative=1,this):this._iaddn(t)},i.prototype._iaddn=function(t){this.words[0]+=t;for(var e=0;e<this.length&&this.words[e]>=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},i.prototype.isubn=function(t){if(r("number"==typeof t),r(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e<this.length&&this.words[e]<0;e++)this.words[e]+=67108864,this.words[e+1]-=1;return this._strip()},i.prototype.addn=function(t){return this.clone().iaddn(t)},i.prototype.subn=function(t){return this.clone().isubn(t)},i.prototype.iabs=function(){return this.negative=0,this},i.prototype.abs=function(){return this.clone().iabs()},i.prototype._ishlnsubmul=function(t,e,n){var i,o,s=t.length+n;this._expand(s);var a=0;for(i=0;i<t.length;i++){o=(0|this.words[i+n])+a;var l=(0|t.words[i])*e;a=((o-=67108863&l)>>26)-(l/67108864|0),this.words[i+n]=67108863&o}for(;i<this.length-n;i++)a=(o=(0|this.words[i+n])+a)>>26,this.words[i+n]=67108863&o;if(0===a)return this._strip();for(r(-1===a),a=0,i=0;i<this.length;i++)a=(o=-(0|this.words[i])+a)>>26,this.words[i]=67108863&o;return this.negative=1,this._strip()},i.prototype._wordDiv=function(t,e){var r=(this.length,t.length),n=this.clone(),o=t,s=0|o.words[o.length-1];0!=(r=26-this._countBits(s))&&(o=o.ushln(r),n.iushln(r),s=0|o.words[o.length-1]);var a,l=n.length-o.length;if("mod"!==e){(a=new i(null)).length=l+1,a.words=new Array(a.length);for(var c=0;c<a.length;c++)a.words[c]=0}var u=n.clone()._ishlnsubmul(o,1,l);0===u.negative&&(n=u,a&&(a.words[l]=1));for(var h=l-1;h>=0;h--){var d=67108864*(0|n.words[o.length+h])+(0|n.words[o.length+h-1]);for(d=Math.min(d/s|0,67108863),n._ishlnsubmul(o,d,h);0!==n.negative;)d--,n.negative=0,n._ishlnsubmul(o,1,h),n.isZero()||(n.negative^=1);a&&(a.words[h]=d)}return a&&a._strip(),n._strip(),"div"!==e&&0!==r&&n.iushrn(r),{div:a||null,mod:n}},i.prototype.divmod=function(t,e,n){return r(!t.isZero()),this.isZero()?{div:new i(0),mod:new i(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(o=a.div.neg()),"div"!==e&&(s=a.mod.neg(),n&&0!==s.negative&&s.iadd(t)),{div:o,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(o=a.div.neg()),{div:o,mod:a.mod}):0!==(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),n&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new i(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new i(this.modrn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new i(this.modrn(t.words[0]))}:this._wordDiv(t,e);var o,s,a},i.prototype.div=function(t){return this.divmod(t,"div",!1).div},i.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},i.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},i.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},i.prototype.modrn=function(t){var e=t<0;e&&(t=-t),r(t<=67108863);for(var n=(1<<26)%t,i=0,o=this.length-1;o>=0;o--)i=(n*i+(0|this.words[o]))%t;return e?-i:i},i.prototype.modn=function(t){return this.modrn(t)},i.prototype.idivn=function(t){var e=t<0;e&&(t=-t),r(t<=67108863);for(var n=0,i=this.length-1;i>=0;i--){var o=(0|this.words[i])+67108864*n;this.words[i]=o/t|0,n=o%t}return this._strip(),e?this.ineg():this},i.prototype.divn=function(t){return this.clone().idivn(t)},i.prototype.egcd=function(t){r(0===t.negative),r(!t.isZero());var e=this,n=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var o=new i(1),s=new i(0),a=new i(0),l=new i(1),c=0;e.isEven()&&n.isEven();)e.iushrn(1),n.iushrn(1),++c;for(var u=n.clone(),h=e.clone();!e.isZero();){for(var d=0,f=1;0===(e.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(o.isOdd()||s.isOdd())&&(o.iadd(u),s.isub(h)),o.iushrn(1),s.iushrn(1);for(var p=0,m=1;0===(n.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(n.iushrn(p);p-- >0;)(a.isOdd()||l.isOdd())&&(a.iadd(u),l.isub(h)),a.iushrn(1),l.iushrn(1);e.cmp(n)>=0?(e.isub(n),o.isub(a),s.isub(l)):(n.isub(e),a.isub(o),l.isub(s))}return{a:a,b:l,gcd:n.iushln(c)}},i.prototype._invmp=function(t){r(0===t.negative),r(!t.isZero());var e=this,n=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var o,s=new i(1),a=new i(0),l=n.clone();e.cmpn(1)>0&&n.cmpn(1)>0;){for(var c=0,u=1;0===(e.words[0]&u)&&c<26;++c,u<<=1);if(c>0)for(e.iushrn(c);c-- >0;)s.isOdd()&&s.iadd(l),s.iushrn(1);for(var h=0,d=1;0===(n.words[0]&d)&&h<26;++h,d<<=1);if(h>0)for(n.iushrn(h);h-- >0;)a.isOdd()&&a.iadd(l),a.iushrn(1);e.cmp(n)>=0?(e.isub(n),s.isub(a)):(n.isub(e),a.isub(s))}return(o=0===e.cmpn(1)?s:a).cmpn(0)<0&&o.iadd(t),o},i.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=e.cmp(r);if(i<0){var o=e;e=r,r=o}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.iushln(n)},i.prototype.invm=function(t){return this.egcd(t).a.umod(t)},i.prototype.isEven=function(){return!(1&this.words[0])},i.prototype.isOdd=function(){return!(1&~this.words[0])},i.prototype.andln=function(t){return this.words[0]&t},i.prototype.bincn=function(t){r("number"==typeof t);var e=t%26,n=(t-e)/26,i=1<<e;if(this.length<=n)return this._expand(n+1),this.words[n]|=i,this;for(var o=i,s=n;0!==o&&s<this.length;s++){var a=0|this.words[s];o=(a+=o)>>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},i.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},i.prototype.cmpn=function(t){var e,n=t<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;if(this._strip(),this.length>1)e=1;else{n&&(t=-t),r(t<=67108863,"Number is too big");var i=0|this.words[0];e=i===t?0:i<t?-1:1}return 0!==this.negative?0|-e:e},i.prototype.cmp=function(t){if(0!==this.negative&&0===t.negative)return-1;if(0===this.negative&&0!==t.negative)return 1;var e=this.ucmp(t);return 0!==this.negative?0|-e:e},i.prototype.ucmp=function(t){if(this.length>t.length)return 1;if(this.length<t.length)return-1;for(var e=0,r=this.length-1;r>=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){n<i?e=-1:n>i&&(e=1);break}}return e},i.prototype.gtn=function(t){return 1===this.cmpn(t)},i.prototype.gt=function(t){return 1===this.cmp(t)},i.prototype.gten=function(t){return this.cmpn(t)>=0},i.prototype.gte=function(t){return this.cmp(t)>=0},i.prototype.ltn=function(t){return-1===this.cmpn(t)},i.prototype.lt=function(t){return-1===this.cmp(t)},i.prototype.lten=function(t){return this.cmpn(t)<=0},i.prototype.lte=function(t){return this.cmp(t)<=0},i.prototype.eqn=function(t){return 0===this.cmpn(t)},i.prototype.eq=function(t){return 0===this.cmp(t)},i.red=function(t){return new S(t)},i.prototype.toRed=function(t){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},i.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(t){return this.red=t,this},i.prototype.forceRed=function(t){return r(!this.red,"Already a number in reduction context"),this._forceRed(t)},i.prototype.redAdd=function(t){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},i.prototype.redIAdd=function(t){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},i.prototype.redSub=function(t){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},i.prototype.redISub=function(t){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},i.prototype.redShl=function(t){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},i.prototype.redMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},i.prototype.redIMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},i.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(t){return r(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var w={k256:null,p224:null,p192:null,p25519:null};function y(t,e){this.name=t,this.p=new i(e,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function b(){y.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function E(){y.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function A(){y.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function k(){y.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function S(t){if("string"==typeof t){var e=i._prime(t);this.m=e.p,this.prime=e}else r(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function C(t){S.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}y.prototype._tmp=function(){var t=new i(null);return t.words=new Array(Math.ceil(this.n/13)),t},y.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var n=e<this.n?-1:r.ucmp(this.p);return 0===n?(r.words[0]=0,r.length=1):n>0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},y.prototype.split=function(t,e){t.iushrn(this.n,0,e)},y.prototype.imulK=function(t){return t.imul(this.k)},n(b,y),b.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i<n;i++)e.words[i]=t.words[i];if(e.length=n,t.length<=9)return t.words[0]=0,void(t.length=1);var o=t.words[9];for(e.words[e.length++]=o&r,i=10;i<t.length;i++){var s=0|t.words[i];t.words[i-10]=(s&r)<<4|o>>>22,o=s}o>>>=22,t.words[i-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},b.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r<t.length;r++){var n=0|t.words[r];e+=977*n,t.words[r]=67108863&e,e=64*n+(e/67108864|0)}return 0===t.words[t.length-1]&&(t.length--,0===t.words[t.length-1]&&t.length--),t},n(E,y),n(A,y),n(k,y),k.prototype.imulK=function(t){for(var e=0,r=0;r<t.length;r++){var n=19*(0|t.words[r])+e,i=67108863&n;n>>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},i._prime=function(t){if(w[t])return w[t];var e;if("k256"===t)e=new b;else if("p224"===t)e=new E;else if("p192"===t)e=new A;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new k}return w[t]=e,e},S.prototype._verify1=function(t){r(0===t.negative,"red works only with positives"),r(t.red,"red works only with red numbers")},S.prototype._verify2=function(t,e){r(0===(t.negative|e.negative),"red works only with positives"),r(t.red&&t.red===e.red,"red works only with red numbers")},S.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):(c(t,t.umod(this.m)._forceRed(this)),t)},S.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},S.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},S.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},S.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},S.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},S.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},S.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},S.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},S.prototype.isqr=function(t){return this.imul(t,t.clone())},S.prototype.sqr=function(t){return this.mul(t,t)},S.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(r(e%2==1),3===e){var n=this.m.add(new i(1)).iushrn(2);return this.pow(t,n)}for(var o=this.m.subn(1),s=0;!o.isZero()&&0===o.andln(1);)s++,o.iushrn(1);r(!o.isZero());var a=new i(1).toRed(this),l=a.redNeg(),c=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new i(2*u*u).toRed(this);0!==this.pow(u,c).cmp(l);)u.redIAdd(l);for(var h=this.pow(u,o),d=this.pow(t,o.addn(1).iushrn(1)),f=this.pow(t,o),p=s;0!==f.cmp(a);){for(var m=f,g=0;0!==m.cmp(a);g++)m=m.redSqr();r(g<p);var v=this.pow(h,new i(1).iushln(p-g-1));d=d.redMul(v),h=v.redSqr(),f=f.redMul(h),p=g}return d},S.prototype.invm=function(t){var e=t._invmp(this.m);return 0!==e.negative?(e.negative=0,this.imod(e).redNeg()):this.imod(e)},S.prototype.pow=function(t,e){if(e.isZero())return new i(1).toRed(this);if(0===e.cmpn(1))return t.clone();var r=new Array(16);r[0]=new i(1).toRed(this),r[1]=t;for(var n=2;n<r.length;n++)r[n]=this.mul(r[n-1],t);var o=r[0],s=0,a=0,l=e.bitLength()%26;for(0===l&&(l=26),n=e.length-1;n>=0;n--){for(var c=e.words[n],u=l-1;u>=0;u--){var h=c>>u&1;o!==r[0]&&(o=this.sqr(o)),0!==h||0!==s?(s<<=1,s|=h,(4===++a||0===n&&0===u)&&(o=this.mul(o,r[s]),a=0,s=0)):a=0}l=26}return o},S.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},S.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},i.mont=function(t){return new C(t)},n(C,S),C.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},C.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},C.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},C.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new i(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),o=r.isub(n).iushrn(this.shift),s=o;return o.cmp(this.m)>=0?s=o.isub(this.m):o.cmpn(0)<0&&(s=o.iadd(this.m)),s._forceRed(this)},C.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(i,i.exports)),i.exports),s=r(o);let a=!1,l=!1;const c={debug:1,default:2,info:2,warning:3,error:4,off:5};let u=c.default,h=null;const d=function(){try{const t=[];if(["NFD","NFC","NFKD","NFKC"].forEach(e=>{try{if("test"!=="test".normalize(e))throw new Error("bad normalize")}catch(r){t.push(e)}}),t.length)throw new Error("missing "+t.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(t){return t.message}return null}();var f,p;!function(t){t.DEBUG="DEBUG",t.INFO="INFO",t.WARNING="WARNING",t.ERROR="ERROR",t.OFF="OFF"}(f||(f={})),function(t){t.UNKNOWN_ERROR="UNKNOWN_ERROR",t.NOT_IMPLEMENTED="NOT_IMPLEMENTED",t.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",t.NETWORK_ERROR="NETWORK_ERROR",t.SERVER_ERROR="SERVER_ERROR",t.TIMEOUT="TIMEOUT",t.BUFFER_OVERRUN="BUFFER_OVERRUN",t.NUMERIC_FAULT="NUMERIC_FAULT",t.MISSING_NEW="MISSING_NEW",t.INVALID_ARGUMENT="INVALID_ARGUMENT",t.MISSING_ARGUMENT="MISSING_ARGUMENT",t.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",t.CALL_EXCEPTION="CALL_EXCEPTION",t.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",t.NONCE_EXPIRED="NONCE_EXPIRED",t.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",t.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",t.TRANSACTION_REPLACED="TRANSACTION_REPLACED",t.ACTION_REJECTED="ACTION_REJECTED"}(p||(p={}));const m="0123456789abcdef";class g{constructor(t){Object.defineProperty(this,"version",{enumerable:!0,value:t,writable:!1})}_log(t,e){const r=t.toLowerCase();null==c[r]&&this.throwArgumentError("invalid log level name","logLevel",t),u>c[r]||console.log.apply(console,e)}debug(...t){this._log(g.levels.DEBUG,t)}info(...t){this._log(g.levels.INFO,t)}warn(...t){this._log(g.levels.WARNING,t)}makeError(t,e,r){if(l)return this.makeError("censored error",e,{});e||(e=g.errors.UNKNOWN_ERROR),r||(r={});const n=[];Object.keys(r).forEach(t=>{const e=r[t];try{if(e instanceof Uint8Array){let r="";for(let t=0;t<e.length;t++)r+=m[e[t]>>4],r+=m[15&e[t]];n.push(t+"=Uint8Array(0x"+r+")")}else n.push(t+"="+JSON.stringify(e))}catch(e){n.push(t+"="+JSON.stringify(r[t].toString()))}}),n.push(`code=${e}`),n.push(`version=${this.version}`);const i=t;let o="";switch(e){case p.NUMERIC_FAULT:{o="NUMERIC_FAULT";const e=t;switch(e){case"overflow":case"underflow":case"division-by-zero":o+="-"+e;break;case"negative-power":case"negative-width":o+="-unsupported";break;case"unbound-bitwise-result":o+="-unbound-result"}break}case p.CALL_EXCEPTION:case p.INSUFFICIENT_FUNDS:case p.MISSING_NEW:case p.NONCE_EXPIRED:case p.REPLACEMENT_UNDERPRICED:case p.TRANSACTION_REPLACED:case p.UNPREDICTABLE_GAS_LIMIT:o=e}o&&(t+=" [ See: https://links.ethers.org/v5-errors-"+o+" ]"),n.length&&(t+=" ("+n.join(", ")+")");const s=new Error(t);return s.reason=i,s.code=e,Object.keys(r).forEach(function(t){s[t]=r[t]}),s}throwError(t,e,r){throw this.makeError(t,e,r)}throwArgumentError(t,e,r){return this.throwError(t,g.errors.INVALID_ARGUMENT,{argument:e,value:r})}assert(t,e,r,n){t||this.throwError(e,r,n)}assertArgument(t,e,r,n){t||this.throwArgumentError(e,r,n)}checkNormalize(t){d&&this.throwError("platform missing String.prototype.normalize",g.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:d})}checkSafeUint53(t,e){"number"==typeof t&&(null==e&&(e="value not safe"),(t<0||t>=9007199254740991)&&this.throwError(e,g.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:t}),t%1&&this.throwError(e,g.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:t}))}checkArgumentCount(t,e,r){r=r?": "+r:"",t<e&&this.throwError("missing argument"+r,g.errors.MISSING_ARGUMENT,{count:t,expectedCount:e}),t>e&&this.throwError("too many arguments"+r,g.errors.UNEXPECTED_ARGUMENT,{count:t,expectedCount:e})}checkNew(t,e){t!==Object&&null!=t||this.throwError("missing new",g.errors.MISSING_NEW,{name:e.name})}checkAbstract(t,e){t===e?this.throwError("cannot instantiate abstract class "+JSON.stringify(e.name)+" directly; use a sub-class",g.errors.UNSUPPORTED_OPERATION,{name:t.name,operation:"new"}):t!==Object&&null!=t||this.throwError("missing new",g.errors.MISSING_NEW,{name:e.name})}static globalLogger(){return h||(h=new g("logger/5.8.0")),h}static setCensorship(t,e){if(!t&&e&&this.globalLogger().throwError("cannot permanently disable censorship",g.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),a){if(!t)return;this.globalLogger().throwError("error censorship permanent",g.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}l=!!t,a=!!e}static setLogLevel(t){const e=c[t.toLowerCase()];null!=e?u=e:g.globalLogger().warn("invalid log level - "+t)}static from(t){return new g(t)}}g.errors=p,g.levels=f;const v=new g("bytes/5.8.0");function w(t){return!!t.toHexString}function y(t){return t.slice||(t.slice=function(){const e=Array.prototype.slice.call(arguments);return y(new Uint8Array(Array.prototype.slice.apply(t,e)))}),t}function b(t){return _(t)&&!(t.length%2)||A(t)}function E(t){return"number"==typeof t&&t==t&&t%1==0}function A(t){if(null==t)return!1;if(t.constructor===Uint8Array)return!0;if("string"==typeof t)return!1;if(!E(t.length)||t.length<0)return!1;for(let e=0;e<t.length;e++){const r=t[e];if(!E(r)||r<0||r>=256)return!1}return!0}function k(t,e){if(e||(e={}),"number"==typeof t){v.checkSafeUint53(t,"invalid arrayify value");const e=[];for(;t;)e.unshift(255&t),t=parseInt(String(t/256));return 0===e.length&&e.push(0),y(new Uint8Array(e))}if(e.allowMissingPrefix&&"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),w(t)&&(t=t.toHexString()),_(t)){let r=t.substring(2);r.length%2&&("left"===e.hexPad?r="0"+r:"right"===e.hexPad?r+="0":v.throwArgumentError("hex data is odd-length","value",t));const n=[];for(let t=0;t<r.length;t+=2)n.push(parseInt(r.substring(t,t+2),16));return y(new Uint8Array(n))}return A(t)?y(new Uint8Array(t)):v.throwArgumentError("invalid arrayify value","value",t)}function S(t){const e=t.map(t=>k(t)),r=e.reduce((t,e)=>t+e.length,0),n=new Uint8Array(r);return e.reduce((t,e)=>(n.set(e,t),t+e.length),0),y(n)}function C(t){let e=k(t);if(0===e.length)return e;let r=0;for(;r<e.length&&0===e[r];)r++;return r&&(e=e.slice(r)),e}function x(t,e){(t=k(t)).length>e&&v.throwArgumentError("value out of range","value",arguments[0]);const r=new Uint8Array(e);return r.set(t,e-t.length),y(r)}function _(t,e){return!("string"!=typeof t||!t.match(/^0x[0-9A-Fa-f]*$/))&&(!e||t.length===2+2*e)}const T="0123456789abcdef";function P(t,e){if(e||(e={}),"number"==typeof t){v.checkSafeUint53(t,"invalid hexlify value");let e="";for(;t;)e=T[15&t]+e,t=Math.floor(t/16);return e.length?(e.length%2&&(e="0"+e),"0x"+e):"0x00"}if("bigint"==typeof t)return(t=t.toString(16)).length%2?"0x0"+t:"0x"+t;if(e.allowMissingPrefix&&"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),w(t))return t.toHexString();if(_(t))return t.length%2&&("left"===e.hexPad?t="0x0"+t.substring(2):"right"===e.hexPad?t+="0":v.throwArgumentError("hex data is odd-length","value",t)),t.toLowerCase();if(A(t)){let e="0x";for(let r=0;r<t.length;r++){let n=t[r];e+=T[(240&n)>>4]+T[15&n]}return e}return v.throwArgumentError("invalid hexlify value","value",t)}function I(t){if("string"!=typeof t)t=P(t);else if(!_(t)||t.length%2)return null;return(t.length-2)/2}function N(t,e,r){return"string"!=typeof t?t=P(t):(!_(t)||t.length%2)&&v.throwArgumentError("invalid hexData","value",t),e=2+2*e,null!=r?"0x"+t.substring(e,2+2*r):"0x"+t.substring(e)}function M(t){let e="0x";return t.forEach(t=>{e+=P(t).substring(2)}),e}function B(t){const e=R(P(t,{hexPad:"left"}));return"0x"===e?"0x0":e}function R(t){"string"!=typeof t&&(t=P(t)),_(t)||v.throwArgumentError("invalid hex string","value",t),t=t.substring(2);let e=0;for(;e<t.length&&"0"===t[e];)e++;return"0x"+t.substring(e)}function F(t,e){for("string"!=typeof t?t=P(t):_(t)||v.throwArgumentError("invalid hex string","value",t),t.length>2*e+2&&v.throwArgumentError("value out of range","value",arguments[1]);t.length<2*e+2;)t="0x0"+t.substring(2);return t}function O(t){const e={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(b(t)){let r=k(t);64===r.length?(e.v=27+(r[32]>>7),r[32]&=127,e.r=P(r.slice(0,32)),e.s=P(r.slice(32,64))):65===r.length?(e.r=P(r.slice(0,32)),e.s=P(r.slice(32,64)),e.v=r[64]):v.throwArgumentError("invalid signature string","signature",t),e.v<27&&(0===e.v||1===e.v?e.v+=27:v.throwArgumentError("signature invalid v byte","signature",t)),e.recoveryParam=1-e.v%2,e.recoveryParam&&(r[32]|=128),e._vs=P(r.slice(32,64))}else{if(e.r=t.r,e.s=t.s,e.v=t.v,e.recoveryParam=t.recoveryParam,e._vs=t._vs,null!=e._vs){const r=x(k(e._vs),32);e._vs=P(r);const n=r[0]>=128?1:0;null==e.recoveryParam?e.recoveryParam=n:e.recoveryParam!==n&&v.throwArgumentError("signature recoveryParam mismatch _vs","signature",t),r[0]&=127;const i=P(r);null==e.s?e.s=i:e.s!==i&&v.throwArgumentError("signature v mismatch _vs","signature",t)}if(null==e.recoveryParam)null==e.v?v.throwArgumentError("signature missing v and recoveryParam","signature",t):0===e.v||1===e.v?e.recoveryParam=e.v:e.recoveryParam=1-e.v%2;else if(null==e.v)e.v=27+e.recoveryParam;else{const r=0===e.v||1===e.v?e.v:1-e.v%2;e.recoveryParam!==r&&v.throwArgumentError("signature recoveryParam mismatch v","signature",t)}null!=e.r&&_(e.r)?e.r=F(e.r,32):v.throwArgumentError("signature missing or invalid r","signature",t),null!=e.s&&_(e.s)?e.s=F(e.s,32):v.throwArgumentError("signature missing or invalid s","signature",t);const r=k(e.s);r[0]>=128&&v.throwArgumentError("signature s out of range","signature",t),e.recoveryParam&&(r[0]|=128);const n=P(r);e._vs&&(_(e._vs)||v.throwArgumentError("signature invalid _vs","signature",t),e._vs=F(e._vs,32)),null==e._vs?e._vs=n:e._vs!==n&&v.throwArgumentError("signature _vs mismatch v and s","signature",t)}return e.yParityAndS=e._vs,e.compact=e.r+e.yParityAndS.substring(2),e}function D(t){return P(S([(t=O(t)).r,t.s,t.recoveryParam?"0x1c":"0x1b"]))}const U="bignumber/5.8.0";var L=s.BN;const q=new g(U),z={},G=9007199254740991;let H=!1;class j{constructor(t,e){t!==z&&q.throwError("cannot call constructor directly; use BigNumber.from",g.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=e,this._isBigNumber=!0,Object.freeze(this)}fromTwos(t){return W(V(this).fromTwos(t))}toTwos(t){return W(V(this).toTwos(t))}abs(){return"-"===this._hex[0]?j.from(this._hex.substring(1)):this}add(t){return W(V(this).add(V(t)))}sub(t){return W(V(this).sub(V(t)))}div(t){return j.from(t).isZero()&&$("division-by-zero","div"),W(V(this).div(V(t)))}mul(t){return W(V(this).mul(V(t)))}mod(t){const e=V(t);return e.isNeg()&&$("division-by-zero","mod"),W(V(this).umod(e))}pow(t){const e=V(t);return e.isNeg()&&$("negative-power","pow"),W(V(this).pow(e))}and(t){const e=V(t);return(this.isNegative()||e.isNeg())&&$("unbound-bitwise-result","and"),W(V(this).and(e))}or(t){const e=V(t);return(this.isNegative()||e.isNeg())&&$("unbound-bitwise-result","or"),W(V(this).or(e))}xor(t){const e=V(t);return(this.isNegative()||e.isNeg())&&$("unbound-bitwise-result","xor"),W(V(this).xor(e))}mask(t){return(this.isNegative()||t<0)&&$("negative-width","mask"),W(V(this).maskn(t))}shl(t){return(this.isNegative()||t<0)&&$("negative-width","shl"),W(V(this).shln(t))}shr(t){return(this.isNegative()||t<0)&&$("negative-width","shr"),W(V(this).shrn(t))}eq(t){return V(this).eq(V(t))}lt(t){return V(this).lt(V(t))}lte(t){return V(this).lte(V(t))}gt(t){return V(this).gt(V(t))}gte(t){return V(this).gte(V(t))}isNegative(){return"-"===this._hex[0]}isZero(){return V(this).isZero()}toNumber(){try{return V(this).toNumber()}catch(t){$("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch(t){}return q.throwError("this platform does not support BigInt",g.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(10===arguments[0]?H||(H=!0,q.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):16===arguments[0]?q.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",g.errors.UNEXPECTED_ARGUMENT,{}):q.throwError("BigNumber.toString does not accept parameters",g.errors.UNEXPECTED_ARGUMENT,{})),V(this).toString(10)}toHexString(){return this._hex}toJSON(t){return{type:"BigNumber",hex:this.toHexString()}}static from(t){if(t instanceof j)return t;if("string"==typeof t)return t.match(/^-?0x[0-9a-f]+$/i)?new j(z,K(t)):t.match(/^-?[0-9]+$/)?new j(z,K(new L(t))):q.throwArgumentError("invalid BigNumber string","value",t);if("number"==typeof t)return t%1&&$("underflow","BigNumber.from",t),(t>=G||t<=-G)&&$("overflow","BigNumber.from",t),j.from(String(t));const e=t;if("bigint"==typeof e)return j.from(e.toString());if(A(e))return j.from(P(e));if(e)if(e.toHexString){const t=e.toHexString();if("string"==typeof t)return j.from(t)}else{let t=e._hex;if(null==t&&"BigNumber"===e.type&&(t=e.hex),"string"==typeof t&&(_(t)||"-"===t[0]&&_(t.substring(1))))return j.from(t)}return q.throwArgumentError("invalid BigNumber value","value",t)}static isBigNumber(t){return!(!t||!t._isBigNumber)}}function K(t){if("string"!=typeof t)return K(t.toString(16));if("-"===t[0])return"-"===(t=t.substring(1))[0]&&q.throwArgumentError("invalid hex","value",t),"0x00"===(t=K(t))?t:"-"+t;if("0x"!==t.substring(0,2)&&(t="0x"+t),"0x"===t)return"0x00";for(t.length%2&&(t="0x0"+t.substring(2));t.length>4&&"0x00"===t.substring(0,4);)t="0x"+t.substring(4);return t}function W(t){return j.from(K(t))}function V(t){const e=j.from(t).toHexString();return"-"===e[0]?new L("-"+e.substring(3),16):new L(e.substring(2),16)}function $(t,e,r){const n={fault:t,operation:e};return null!=r&&(n.value=r),q.throwError(t,g.errors.NUMERIC_FAULT,n)}const J=new g(U),Q={},Y=j.from(0),X=j.from(-1);function Z(t,e,r,n){const i={fault:e,operation:r};return void 0!==n&&(i.value=n),J.throwError(t,g.errors.NUMERIC_FAULT,i)}let tt="0";for(;tt.length<256;)tt+=tt;function et(t){if("number"!=typeof t)try{t=j.from(t).toNumber()}catch(t){}return"number"==typeof t&&t>=0&&t<=256&&!(t%1)?"1"+tt.substring(0,t):J.throwArgumentError("invalid decimal size","decimals",t)}function rt(t,e){null==e&&(e=0);const r=et(e),n=(t=j.from(t)).lt(Y);n&&(t=t.mul(X));let i=t.mod(r).toString();for(;i.length<r.length-1;)i="0"+i;i=i.match(/^([0-9]*[1-9]|0)(0*)/)[1];const o=t.div(r).toString();return t=1===r.length?o:o+"."+i,n&&(t="-"+t),t}function nt(t,e){null==e&&(e=0);const r=et(e);"string"==typeof t&&t.match(/^-?[0-9.]+$/)||J.throwArgumentError("invalid decimal value","value",t);const n="-"===t.substring(0,1);n&&(t=t.substring(1)),"."===t&&J.throwArgumentError("missing value","value",t);const i=t.split(".");i.length>2&&J.throwArgumentError("too many decimal points","value",t);let o=i[0],s=i[1];for(o||(o="0"),s||(s="0");"0"===s[s.length-1];)s=s.substring(0,s.length-1);for(s.length>r.length-1&&Z("fractional component exceeds decimals","underflow","parseFixed"),""===s&&(s="0");s.length<r.length-1;)s+="0";const a=j.from(o),l=j.from(s);let c=a.mul(r).add(l);return n&&(c=c.mul(X)),c}class it{constructor(t,e,r,n){t!==Q&&J.throwError("cannot use FixedFormat constructor; use FixedFormat.from",g.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.signed=e,this.width=r,this.decimals=n,this.name=(e?"":"u")+"fixed"+String(r)+"x"+String(n),this._multiplier=et(n),Object.freeze(this)}static from(t){if(t instanceof it)return t;"number"==typeof t&&(t=`fixed128x${t}`);let e=!0,r=128,n=18;if("string"==typeof t)if("fixed"===t);else if("ufixed"===t)e=!1;else{const i=t.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);i||J.throwArgumentError("invalid fixed format","format",t),e="u"!==i[1],r=parseInt(i[2]),n=parseInt(i[3])}else if(t){const i=(e,r,n)=>null==t[e]?n:(typeof t[e]!==r&&J.throwArgumentError("invalid fixed format ("+e+" not "+r+")","format."+e,t[e]),t[e]);e=i("signed","boolean",e),r=i("width","number",r),n=i("decimals","number",n)}return r%8&&J.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",r),n>80&&J.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",n),new it(Q,e,r,n)}}class ot{constructor(t,e,r,n){t!==Q&&J.throwError("cannot use FixedNumber constructor; use FixedNumber.from",g.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=n,this._hex=e,this._value=r,this._isFixedNumber=!0,Object.freeze(this)}_checkFormat(t){this.format.name!==t.format.name&&J.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",t)}addUnsafe(t){this._checkFormat(t);const e=nt(this._value,this.format.decimals),r=nt(t._value,t.format.decimals);return ot.fromValue(e.add(r),this.format.decimals,this.format)}subUnsafe(t){this._checkFormat(t);const e=nt(this._value,this.format.decimals),r=nt(t._value,t.format.decimals);return ot.fromValue(e.sub(r),this.format.decimals,this.format)}mulUnsafe(t){this._checkFormat(t);const e=nt(this._value,this.format.decimals),r=nt(t._value,t.format.decimals);return ot.fromValue(e.mul(r).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(t){this._checkFormat(t);const e=nt(this._value,this.format.decimals),r=nt(t._value,t.format.decimals);return ot.fromValue(e.mul(this.format._multiplier).div(r),this.format.decimals,this.format)}floor(){const t=this.toString().split(".");1===t.length&&t.push("0");let e=ot.from(t[0],this.format);const r=!t[1].match(/^(0*)$/);return this.isNegative()&&r&&(e=e.subUnsafe(st.toFormat(e.format))),e}ceiling(){const t=this.toString().split(".");1===t.length&&t.push("0");let e=ot.from(t[0],this.format);const r=!t[1].match(/^(0*)$/);return!this.isNegative()&&r&&(e=e.addUnsafe(st.toFormat(e.format))),e}round(t){null==t&&(t=0);const e=this.toString().split(".");if(1===e.length&&e.push("0"),(t<0||t>80||t%1)&&J.throwArgumentError("invalid decimal count","decimals",t),e[1].length<=t)return this;const r=ot.from("1"+tt.substring(0,t),this.format),n=at.toFormat(this.format);return this.mulUnsafe(r).addUnsafe(n).floor().divUnsafe(r)}isZero(){return"0.0"===this._value||"0"===this._value}isNegative(){return"-"===this._value[0]}toString(){return this._value}toHexString(t){if(null==t)return this._hex;t%8&&J.throwArgumentError("invalid byte width","width",t);return F(j.from(this._hex).fromTwos(this.format.width).toTwos(t).toHexString(),t/8)}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(t){return ot.fromString(this._value,t)}static fromValue(t,e,r){return null!=r||null==e||function(t){return null!=t&&(j.isBigNumber(t)||"number"==typeof t&&t%1==0||"string"==typeof t&&!!t.match(/^-?[0-9]+$/)||_(t)||"bigint"==typeof t||A(t))}(e)||(r=e,e=null),null==e&&(e=0),null==r&&(r="fixed"),ot.fromString(rt(t,e),it.from(r))}static fromString(t,e){null==e&&(e="fixed");const r=it.from(e),n=nt(t,r.decimals);!r.signed&&n.lt(Y)&&Z("unsigned value cannot be negative","overflow","value",t);let i=null;r.signed?i=n.toTwos(r.width).toHexString():(i=n.toHexString(),i=F(i,r.width/8));const o=rt(n,r.decimals);return new ot(Q,i,o,r)}static fromBytes(t,e){null==e&&(e="fixed");const r=it.from(e);if(k(t).length>r.width/8)throw new Error("overflow");let n=j.from(t);r.signed&&(n=n.fromTwos(r.width));const i=n.toTwos((r.signed?0:1)+r.width).toHexString(),o=rt(n,r.decimals);return new ot(Q,i,o,r)}static from(t,e){if("string"==typeof t)return ot.fromString(t,e);if(A(t))return ot.fromBytes(t,e);try{return ot.fromValue(t,0,e)}catch(t){if(t.code!==g.errors.INVALID_ARGUMENT)throw t}return J.throwArgumentError("invalid FixedNumber value","value",t)}static isFixedNumber(t){return!(!t||!t._isFixedNumber)}}const st=ot.from(1),at=ot.from("0.5");var lt=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const ct=new g("properties/5.8.0");function ut(t,e,r){Object.defineProperty(t,e,{enumerable:!0,value:r,writable:!1})}function ht(t,e){for(let r=0;r<32;r++){if(t[e])return t[e];if(!t.prototype||"object"!=typeof t.prototype)break;t=Object.getPrototypeOf(t.prototype).constructor}return null}function dt(t){return lt(this,void 0,void 0,function*(){const e=Object.keys(t).map(e=>{const r=t[e];return Promise.resolve(r).then(t=>({key:e,value:t}))});return(yield Promise.all(e)).reduce((t,e)=>(t[e.key]=e.value,t),{})})}function ft(t,e){t&&"object"==typeof t||ct.throwArgumentError("invalid object","object",t),Object.keys(t).forEach(r=>{e[r]||ct.throwArgumentError("invalid object key - "+r,"transaction:"+r,t)})}function pt(t){const e={};for(const r in t)e[r]=t[r];return e}const mt={bigint:!0,boolean:!0,function:!0,number:!0,string:!0};function gt(t){if(null==t||mt[typeof t])return!0;if(Array.isArray(t)||"object"==typeof t){if(!Object.isFrozen(t))return!1;const e=Object.keys(t);for(let r=0;r<e.length;r++){let n=null;try{n=t[e[r]]}catch(t){continue}if(!gt(n))return!1}return!0}return ct.throwArgumentError("Cannot deepCopy "+typeof t,"object",t)}function vt(t){if(gt(t))return t;if(Array.isArray(t))return Object.freeze(t.map(t=>wt(t)));if("object"==typeof t){const e={};for(const r in t){const n=t[r];void 0!==n&&ut(e,r,wt(n))}return e}return ct.throwArgumentError("Cannot deepCopy "+typeof t,"object",t)}function wt(t){return vt(t)}class yt{constructor(t){for(const e in t)this[e]=wt(t[e])}}const bt="abi/5.8.0",Et=new g(bt),At={};let kt={calldata:!0,memory:!0,storage:!0},St={calldata:!0,memory:!0};function Ct(t,e){if("bytes"===t||"string"===t){if(kt[e])return!0}else if("address"===t){if("payable"===e)return!0}else if((t.indexOf("[")>=0||"tuple"===t)&&St[e])return!0;return(kt[e]||"payable"===e)&&Et.throwArgumentError("invalid modifier","name",e),!1}function xt(t,e){for(let r in e)ut(t,r,e[r])}const _t=Object.freeze({sighash:"sighash",minimal:"minimal",full:"full",json:"json"}),Tt=new RegExp(/^(.*)\[([0-9]*)\]$/);class Pt{constructor(t,e){t!==At&&Et.throwError("use fromString",g.errors.UNSUPPORTED_OPERATION,{operation:"new ParamType()"}),xt(this,e);let r=this.type.match(Tt);xt(this,r?{arrayLength:parseInt(r[2]||"-1"),arrayChildren:Pt.fromObject({type:r[1],components:this.components}),baseType:"array"}:{arrayLength:null,arrayChildren:null,baseType:null!=this.components?"tuple":this.type}),this._isParamType=!0,Object.freeze(this)}format(t){if(t||(t=_t.sighash),_t[t]||Et.throwArgumentError("invalid format type","format",t),t===_t.json){let e={type:"tuple"===this.baseType?"tuple":this.type,name:this.name||void 0};return"boolean"==typeof this.indexed&&(e.indexed=this.indexed),this.components&&(e.components=this.components.map(e=>JSON.parse(e.format(t)))),JSON.stringify(e)}let e="";return"array"===this.baseType?(e+=this.arrayChildren.format(t),e+="["+(this.arrayLength<0?"":String(this.arrayLength))+"]"):"tuple"===this.baseType?(t!==_t.sighash&&(e+=this.type),e+="("+this.components.map(e=>e.format(t)).join(t===_t.full?", ":",")+")"):e+=this.type,t!==_t.sighash&&(!0===this.indexed&&(e+=" indexed"),t===_t.full&&this.name&&(e+=" "+this.name)),e}static from(t,e){return"string"==typeof t?Pt.fromString(t,e):Pt.fromObject(t)}static fromObject(t){return Pt.isParamType(t)?t:new Pt(At,{name:t.name||null,type:qt(t.type),indexed:null==t.indexed?null:!!t.indexed,components:t.components?t.components.map(Pt.fromObject):null})}static fromString(t,e){return r=function(t,e){let r=t;function n(e){Et.throwArgumentError(`unexpected character at position ${e}`,"param",t)}function i(t){let r={type:"",name:"",parent:t,state:{allowType:!0}};return e&&(r.indexed=!1),r}t=t.replace(/\s/g," ");let o={type:"",name:"",state:{allowType:!0}},s=o;for(let r=0;r<t.length;r++){let o=t[r];switch(o){case"(":s.state.allowType&&""===s.type?s.type="tuple":s.state.allowParams||n(r),s.state.allowType=!1,s.type=qt(s.type),s.components=[i(s)],s=s.components[0];break;case")":delete s.state,"indexed"===s.name&&(e||n(r),s.indexed=!0,s.name=""),Ct(s.type,s.name)&&(s.name=""),s.type=qt(s.type);let t=s;s=s.parent,s||n(r),delete t.parent,s.state.allowParams=!1,s.state.allowName=!0,s.state.allowArray=!0;break;case",":delete s.state,"indexed"===s.name&&(e||n(r),s.indexed=!0,s.name=""),Ct(s.type,s.name)&&(s.name=""),s.type=qt(s.type);let a=i(s.parent);s.parent.components.push(a),delete s.parent,s=a;break;case" ":s.state.allowType&&""!==s.type&&(s.type=qt(s.type),delete s.state.allowType,s.state.allowName=!0,s.state.allowParams=!0),s.state.allowName&&""!==s.name&&("indexed"===s.name?(e||n(r),s.indexed&&n(r),s.indexed=!0,s.name=""):Ct(s.type,s.name)?s.name="":s.state.allowName=!1);break;case"[":s.state.allowArray||n(r),s.type+=o,s.state.allowArray=!1,s.state.allowName=!1,s.state.readArray=!0;break;case"]":s.state.readArray||n(r),s.type+=o,s.state.readArray=!1,s.state.allowArray=!0,s.state.allowName=!0;break;default:s.state.allowType?(s.type+=o,s.state.allowParams=!0,s.state.allowArray=!0):s.state.allowName?(s.name+=o,delete s.state.allowArray):s.state.readArray?s.type+=o:n(r)}}return s.parent&&Et.throwArgumentError("unexpected eof","param",t),delete o.state,"indexed"===s.name?(e||n(r.length-7),s.indexed&&n(r.length-7),s.indexed=!0,s.name=""):Ct(s.type,s.name)&&(s.name=""),o.type=qt(o.type),o}(t,!!e),Pt.fromObject({name:r.name,type:r.type,indexed:r.indexed,components:r.components});var r}static isParamType(t){return!(null==t||!t._isParamType)}}function It(t,e){return function(t){t=t.trim();let e=[],r="",n=0;for(let i=0;i<t.length;i++){let o=t[i];","===o&&0===n?(e.push(r),r=""):(r+=o,"("===o?n++:")"===o&&(n--,-1===n&&Et.throwArgumentError("unbalanced parenthesis","value",t)))}r&&e.push(r);return e}(t).map(t=>Pt.fromString(t,e))}class Nt{constructor(t,e){t!==At&&Et.throwError("use a static from method",g.errors.UNSUPPORTED_OPERATION,{operation:"new Fragment()"}),xt(this,e),this._isFragment=!0,Object.freeze(this)}static from(t){return Nt.isFragment(t)?t:"string"==typeof t?Nt.fromString(t):Nt.fromObject(t)}static fromObject(t){if(Nt.isFragment(t))return t;switch(t.type){case"function":return Dt.fromObject(t);case"event":return Mt.fromObject(t);case"constructor":return Ot.fromObject(t);case"error":return Lt.fromObject(t);case"fallback":case"receive":return null}return Et.throwArgumentError("invalid fragment object","value",t)}static fromString(t){return"event"===(t=(t=(t=t.replace(/\s/g," ")).replace(/\(/g," (").replace(/\)/g,") ").replace(/\s+/g," ")).trim()).split(" ")[0]?Mt.fromString(t.substring(5).trim()):"function"===t.split(" ")[0]?Dt.fromString(t.substring(8).trim()):"constructor"===t.split("(")[0].trim()?Ot.fromString(t.trim()):"error"===t.split(" ")[0]?Lt.fromString(t.substring(5).trim()):Et.throwArgumentError("unsupported fragment","value",t)}static isFragment(t){return!(!t||!t._isFragment)}}class Mt extends Nt{format(t){if(t||(t=_t.sighash),_t[t]||Et.throwArgumentError("invalid format type","format",t),t===_t.json)return JSON.stringify({type:"event",anonymous:this.anonymous,name:this.name,inputs:this.inputs.map(e=>JSON.parse(e.format(t)))});let e="";return t!==_t.sighash&&(e+="event "),e+=this.name+"("+this.inputs.map(e=>e.format(t)).join(t===_t.full?", ":",")+") ",t!==_t.sighash&&this.anonymous&&(e+="anonymous "),e.trim()}static from(t){return"string"==typeof t?Mt.fromString(t):Mt.fromObject(t)}static fromObject(t){if(Mt.isEventFragment(t))return t;"event"!==t.type&&Et.throwArgumentError("invalid event object","value",t);const e={name:Gt(t.name),anonymous:t.anonymous,inputs:t.inputs?t.inputs.map(Pt.fromObject):[],type:"event"};return new Mt(At,e)}static fromString(t){let e=t.match(Ht);e||Et.throwArgumentError("invalid event string","value",t);let r=!1;return e[3].split(" ").forEach(t=>{switch(t.trim()){case"anonymous":r=!0;break;case"":break;default:Et.warn("unknown modifier: "+t)}}),Mt.fromObject({name:e[1].trim(),anonymous:r,inputs:It(e[2],!0),type:"event"})}static isEventFragment(t){return t&&t._isFragment&&"event"===t.type}}function Bt(t,e){e.gas=null;let r=t.split("@");return 1!==r.length?(r.length>2&&Et.throwArgumentError("invalid human-readable ABI signature","value",t),r[1].match(/^[0-9]+$/)||Et.throwArgumentError("invalid human-readable ABI signature gas","value",t),e.gas=j.from(r[1]),r[0]):t}function Rt(t,e){e.constant=!1,e.payable=!1,e.stateMutability="nonpayable",t.split(" ").forEach(t=>{switch(t.trim()){case"constant":e.constant=!0;break;case"payable":e.payable=!0,e.stateMutability="payable";break;case"nonpayable":e.payable=!1,e.stateMutability="nonpayable";break;case"pure":e.constant=!0,e.stateMutability="pure";break;case"view":e.constant=!0,e.stateMutability="view";break;case"external":case"public":case"":break;default:console.log("unknown modifier: "+t)}})}function Ft(t){let e={constant:!1,payable:!0,stateMutability:"payable"};return null!=t.stateMutability?(e.stateMutability=t.stateMutability,e.constant="view"===e.stateMutability||"pure"===e.stateMutability,null!=t.constant&&!!t.constant!==e.constant&&Et.throwArgumentError("cannot have constant function with mutability "+e.stateMutability,"value",t),e.payable="payable"===e.stateMutability,null!=t.payable&&!!t.payable!==e.payable&&Et.throwArgumentError("cannot have payable function with mutability "+e.stateMutability,"value",t)):null!=t.payable?(e.payable=!!t.payable,null!=t.constant||e.payable||"constructor"===t.type||Et.throwArgumentError("unable to determine stateMutability","value",t),e.constant=!!t.constant,e.constant?e.stateMutability="view":e.stateMutability=e.payable?"payable":"nonpayable",e.payable&&e.constant&&Et.throwArgumentError("cannot have constant payable function","value",t)):null!=t.constant?(e.constant=!!t.constant,e.payable=!e.constant,e.stateMutability=e.constant?"view":"payable"):"constructor"!==t.type&&Et.throwArgumentError("unable to determine stateMutability","value",t),e}class Ot extends Nt{format(t){if(t||(t=_t.sighash),_t[t]||Et.throwArgumentError("invalid format type","format",t),t===_t.json)return JSON.stringify({type:"constructor",stateMutability:"nonpayable"!==this.stateMutability?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(e=>JSON.parse(e.format(t)))});t===_t.sighash&&Et.throwError("cannot format a constructor for sighash",g.errors.UNSUPPORTED_OPERATION,{operation:"format(sighash)"});let e="constructor("+this.inputs.map(e=>e.format(t)).join(t===_t.full?", ":",")+") ";return this.stateMutability&&"nonpayable"!==this.stateMutability&&(e+=this.stateMutability+" "),e.trim()}static from(t){return"string"==typeof t?Ot.fromString(t):Ot.fromObject(t)}static fromObject(t){if(Ot.isConstructorFragment(t))return t;"constructor"!==t.type&&Et.throwArgumentError("invalid constructor object","value",t);let e=Ft(t);e.constant&&Et.throwArgumentError("constructor cannot be constant","value",t);const r={name:null,type:t.type,inputs:t.inputs?t.inputs.map(Pt.fromObject):[],payable:e.payable,stateMutability:e.stateMutability,gas:t.gas?j.from(t.gas):null};return new Ot(At,r)}static fromString(t){let e={type:"constructor"},r=(t=Bt(t,e)).match(Ht);return r&&"constructor"===r[1].trim()||Et.throwArgumentError("invalid constructor string","value",t),e.inputs=It(r[2].trim(),!1),Rt(r[3].trim(),e),Ot.fromObject(e)}static isConstructorFragment(t){return t&&t._isFragment&&"constructor"===t.type}}class Dt extends Ot{format(t){if(t||(t=_t.sighash),_t[t]||Et.throwArgumentError("invalid format type","format",t),t===_t.json)return JSON.stringify({type:"function",name:this.name,constant:this.constant,stateMutability:"nonpayable"!==this.stateMutability?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(e=>JSON.parse(e.format(t))),outputs:this.outputs.map(e=>JSON.parse(e.format(t)))});let e="";return t!==_t.sighash&&(e+="function "),e+=this.name+"("+this.inputs.map(e=>e.format(t)).join(t===_t.full?", ":",")+") ",t!==_t.sighash&&(this.stateMutability?"nonpayable"!==this.stateMutability&&(e+=this.stateMutability+" "):this.constant&&(e+="view "),this.outputs&&this.outputs.length&&(e+="returns ("+this.outputs.map(e=>e.format(t)).join(", ")+") "),null!=this.gas&&(e+="@"+this.gas.toString()+" ")),e.trim()}static from(t){return"string"==typeof t?Dt.fromString(t):Dt.fromObject(t)}static fromObject(t){if(Dt.isFunctionFragment(t))return t;"function"!==t.type&&Et.throwArgumentError("invalid function object","value",t);let e=Ft(t);const r={type:t.type,name:Gt(t.name),constant:e.constant,inputs:t.inputs?t.inputs.map(Pt.fromObject):[],outputs:t.outputs?t.outputs.map(Pt.fromObject):[],payable:e.payable,stateMutability:e.stateMutability,gas:t.gas?j.from(t.gas):null};return new Dt(At,r)}static fromString(t){let e={type:"function"},r=(t=Bt(t,e)).split(" returns ");r.length>2&&Et.throwArgumentError("invalid function string","value",t);let n=r[0].match(Ht);if(n||Et.throwArgumentError("invalid function signature","value",t),e.name=n[1].trim(),e.name&&Gt(e.name),e.inputs=It(n[2],!1),Rt(n[3].trim(),e),r.length>1){let n=r[1].match(Ht);""==n[1].trim()&&""==n[3].trim()||Et.throwArgumentError("unexpected tokens","value",t),e.outputs=It(n[2],!1)}else e.outputs=[];return Dt.fromObject(e)}static isFunctionFragment(t){return t&&t._isFragment&&"function"===t.type}}function Ut(t){const e=t.format();return"Error(string)"!==e&&"Panic(uint256)"!==e||Et.throwArgumentError(`cannot specify user defined ${e} error`,"fragment",t),t}class Lt extends Nt{format(t){if(t||(t=_t.sighash),_t[t]||Et.throwArgumentError("invalid format type","format",t),t===_t.json)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map(e=>JSON.parse(e.format(t)))});let e="";return t!==_t.sighash&&(e+="error "),e+=this.name+"("+this.inputs.map(e=>e.format(t)).join(t===_t.full?", ":",")+") ",e.trim()}static from(t){return"string"==typeof t?Lt.fromString(t):Lt.fromObject(t)}static fromObject(t){if(Lt.isErrorFragment(t))return t;"error"!==t.type&&Et.throwArgumentError("invalid error object","value",t);const e={type:t.type,name:Gt(t.name),inputs:t.inputs?t.inputs.map(Pt.fromObject):[]};return Ut(new Lt(At,e))}static fromString(t){let e={type:"error"},r=t.match(Ht);return r||Et.throwArgumentError("invalid error signature","value",t),e.name=r[1].trim(),e.name&&Gt(e.name),e.inputs=It(r[2],!1),Ut(Lt.fromObject(e))}static isErrorFragment(t){return t&&t._isFragment&&"error"===t.type}}function qt(t){return t.match(/^uint($|[^1-9])/)?t="uint256"+t.substring(4):t.match(/^int($|[^1-9])/)&&(t="int256"+t.substring(3)),t}const zt=new RegExp("^[a-zA-Z$_][a-zA-Z0-9$_]*$");function Gt(t){return t&&t.match(zt)||Et.throwArgumentError(`invalid identifier "${t}"`,"value",t),t}const Ht=new RegExp("^([^)(]*)\\((.*)\\)([^)(]*)$");const jt=new g(bt);function Kt(t){const e=[],r=function(t,n){if(Array.isArray(n))for(let i in n){const o=t.slice();o.push(i);try{r(o,n[i])}catch(t){e.push({path:o,error:t})}}};return r([],t),e}class Wt{constructor(t,e,r,n){this.name=t,this.type=e,this.localName=r,this.dynamic=n}_throwError(t,e){jt.throwArgumentError(t,this.localName,e)}}class Vt{constructor(t){ut(this,"wordSize",t||32),this._data=[],this._dataLength=0,this._padding=new Uint8Array(t)}get data(){return M(this._data)}get length(){return this._dataLength}_writeData(t){return this._data.push(t),this._dataLength+=t.length,t.length}appendWriter(t){return this._writeData(S(t._data))}writeBytes(t){let e=k(t);const r=e.length%this.wordSize;return r&&(e=S([e,this._padding.slice(r)])),this._writeData(e)}_getValue(t){let e=k(j.from(t));return e.length>this.wordSize&&jt.throwError("value out-of-bounds",g.errors.BUFFER_OVERRUN,{length:this.wordSize,offset:e.length}),e.length%this.wordSize&&(e=S([this._padding.slice(e.length%this.wordSize),e])),e}writeValue(t){return this._writeData(this._getValue(t))}writeUpdatableValue(){const t=this._data.length;return this._data.push(this._padding),this._dataLength+=this.wordSize,e=>{this._data[t]=this._getValue(e)}}}class $t{constructor(t,e,r,n){ut(this,"_data",k(t)),ut(this,"wordSize",e||32),ut(this,"_coerceFunc",r),ut(this,"allowLoose",n),this._offset=0}get data(){return P(this._data)}get consumed(){return this._offset}static coerce(t,e){let r=t.match("^u?int([0-9]+)$");return r&&parseInt(r[1])<=48&&(e=e.toNumber()),e}coerce(t,e){return this._coerceFunc?this._coerceFunc(t,e):$t.coerce(t,e)}_peekBytes(t,e,r){let n=Math.ceil(e/this.wordSize)*this.wordSize;return this._offset+n>this._data.length&&(this.allowLoose&&r&&this._offset+e<=this._data.length?n=e:jt.throwError("data out-of-bounds",g.errors.BUFFER_OVERRUN,{length:this._data.length,offset:this._offset+n})),this._data.slice(this._offset,this._offset+n)}subReader(t){return new $t(this._data.slice(this._offset+t),this.wordSize,this._coerceFunc,this.allowLoose)}readBytes(t,e){let r=this._peekBytes(0,t,!!e);return this._offset+=r.length,r.slice(0,t)}readValue(){return j.from(this.readBytes(this.wordSize))}}var Jt,Qt={exports:{}};
2
2
  /**
3
3
  * [js-sha3]{@link https://github.com/emn178/js-sha3}
4
4
  *
@@ -6,5 +6,5 @@
6
6
  * @author Chen, Yi-Cyuan [emn178@gmail.com]
7
7
  * @copyright Chen, Yi-Cyuan 2015-2018
8
8
  * @license MIT
9
- */var Yt,Xt=(Jt||(Jt=1,Yt=Qt,function(){var t="input is invalid type",r="object"==typeof window,n=r?window:{};n.JS_SHA3_NO_WINDOW&&(r=!1);var i=!r&&"object"==typeof self;!n.JS_SHA3_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node?n=e:i&&(n=self);var o=!n.JS_SHA3_NO_COMMON_JS&&Yt.exports,s=!n.JS_SHA3_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,a="0123456789abcdef".split(""),l=[4,1024,262144,67108864],c=[0,8,16,24],u=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],h=[224,256,384,512],d=[128,256],f=["hex","buffer","arrayBuffer","array","digest"],p={128:168,256:136};!n.JS_SHA3_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),!s||!n.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(t){return"object"==typeof t&&t.buffer&&t.buffer.constructor===ArrayBuffer});for(var m=function(t,e,r){return function(n){return new I(t,e,t).update(n)[r]()}},g=function(t,e,r){return function(n,i){return new I(t,e,i).update(n)[r]()}},v=function(t,e,r){return function(e,n,i,o){return A["cshake"+t].update(e,n,i,o)[r]()}},y=function(t,e,r){return function(e,n,i,o){return A["kmac"+t].update(e,n,i,o)[r]()}},w=function(t,e,r,n){for(var i=0;i<f.length;++i){var o=f[i];t[o]=e(r,n,o)}return t},b=function(t,e){var r=m(t,e,"hex");return r.create=function(){return new I(t,e,t)},r.update=function(t){return r.create().update(t)},w(r,m,t,e)},E=[{name:"keccak",padding:[1,256,65536,16777216],bits:h,createMethod:b},{name:"sha3",padding:[6,1536,393216,100663296],bits:h,createMethod:b},{name:"shake",padding:[31,7936,2031616,520093696],bits:d,createMethod:function(t,e){var r=g(t,e,"hex");return r.create=function(r){return new I(t,e,r)},r.update=function(t,e){return r.create(e).update(t)},w(r,g,t,e)}},{name:"cshake",padding:l,bits:d,createMethod:function(t,e){var r=p[t],n=v(t,0,"hex");return n.create=function(n,i,o){return i||o?new I(t,e,n).bytepad([i,o],r):A["shake"+t].create(n)},n.update=function(t,e,r,i){return n.create(e,r,i).update(t)},w(n,v,t,e)}},{name:"kmac",padding:l,bits:d,createMethod:function(t,e){var r=p[t],n=y(t,0,"hex");return n.create=function(n,i,o){return new N(t,e,i).bytepad(["KMAC",o],r).bytepad([n],r)},n.update=function(t,e,r,i){return n.create(t,r,i).update(e)},w(n,y,t,e)}}],A={},k=[],S=0;S<E.length;++S)for(var C=E[S],x=C.bits,_=0;_<x.length;++_){var P=C.name+"_"+x[_];if(k.push(P),A[P]=C.createMethod(x[_],C.padding),"sha3"!==C.name){var T=C.name+x[_];k.push(T),A[T]=A[P]}}function I(t,e,r){this.blocks=[],this.s=[],this.padding=e,this.outputBits=r,this.reset=!0,this.finalized=!1,this.block=0,this.start=0,this.blockCount=1600-(t<<1)>>5,this.byteCount=this.blockCount<<2,this.outputBlocks=r>>5,this.extraBytes=(31&r)>>3;for(var n=0;n<50;++n)this.s[n]=0}function N(t,e,r){I.call(this,t,e,r)}I.prototype.update=function(e){if(this.finalized)throw new Error("finalize already called");var r,n=typeof e;if("string"!==n){if("object"!==n)throw new Error(t);if(null===e)throw new Error(t);if(s&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||s&&ArrayBuffer.isView(e)))throw new Error(t);r=!0}for(var i,o,a=this.blocks,l=this.byteCount,u=e.length,h=this.blockCount,d=0,f=this.s;d<u;){if(this.reset)for(this.reset=!1,a[0]=this.block,i=1;i<h+1;++i)a[i]=0;if(r)for(i=this.start;d<u&&i<l;++d)a[i>>2]|=e[d]<<c[3&i++];else for(i=this.start;d<u&&i<l;++d)(o=e.charCodeAt(d))<128?a[i>>2]|=o<<c[3&i++]:o<2048?(a[i>>2]|=(192|o>>6)<<c[3&i++],a[i>>2]|=(128|63&o)<<c[3&i++]):o<55296||o>=57344?(a[i>>2]|=(224|o>>12)<<c[3&i++],a[i>>2]|=(128|o>>6&63)<<c[3&i++],a[i>>2]|=(128|63&o)<<c[3&i++]):(o=65536+((1023&o)<<10|1023&e.charCodeAt(++d)),a[i>>2]|=(240|o>>18)<<c[3&i++],a[i>>2]|=(128|o>>12&63)<<c[3&i++],a[i>>2]|=(128|o>>6&63)<<c[3&i++],a[i>>2]|=(128|63&o)<<c[3&i++]);if(this.lastByteIndex=i,i>=l){for(this.start=i-l,this.block=a[h],i=0;i<h;++i)f[i]^=a[i];M(f),this.reset=!0}else this.start=i}return this},I.prototype.encode=function(t,e){var r=255&t,n=1,i=[r];for(r=255&(t>>=8);r>0;)i.unshift(r),r=255&(t>>=8),++n;return e?i.push(n):i.unshift(n),this.update(i),i.length},I.prototype.encodeString=function(e){var r,n=typeof e;if("string"!==n){if("object"!==n)throw new Error(t);if(null===e)throw new Error(t);if(s&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||s&&ArrayBuffer.isView(e)))throw new Error(t);r=!0}var i=0,o=e.length;if(r)i=o;else for(var a=0;a<e.length;++a){var l=e.charCodeAt(a);l<128?i+=1:l<2048?i+=2:l<55296||l>=57344?i+=3:(l=65536+((1023&l)<<10|1023&e.charCodeAt(++a)),i+=4)}return i+=this.encode(8*i),this.update(e),i},I.prototype.bytepad=function(t,e){for(var r=this.encode(e),n=0;n<t.length;++n)r+=this.encodeString(t[n]);var i=e-r%e,o=[];return o.length=i,this.update(o),this},I.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,e=this.lastByteIndex,r=this.blockCount,n=this.s;if(t[e>>2]|=this.padding[3&e],this.lastByteIndex===this.byteCount)for(t[0]=t[r],e=1;e<r+1;++e)t[e]=0;for(t[r-1]|=2147483648,e=0;e<r;++e)n[e]^=t[e];M(n)}},I.prototype.toString=I.prototype.hex=function(){this.finalize();for(var t,e=this.blockCount,r=this.s,n=this.outputBlocks,i=this.extraBytes,o=0,s=0,l="";s<n;){for(o=0;o<e&&s<n;++o,++s)t=r[o],l+=a[t>>4&15]+a[15&t]+a[t>>12&15]+a[t>>8&15]+a[t>>20&15]+a[t>>16&15]+a[t>>28&15]+a[t>>24&15];s%e===0&&(M(r),o=0)}return i&&(t=r[o],l+=a[t>>4&15]+a[15&t],i>1&&(l+=a[t>>12&15]+a[t>>8&15]),i>2&&(l+=a[t>>20&15]+a[t>>16&15])),l},I.prototype.arrayBuffer=function(){this.finalize();var t,e=this.blockCount,r=this.s,n=this.outputBlocks,i=this.extraBytes,o=0,s=0,a=this.outputBits>>3;t=i?new ArrayBuffer(n+1<<2):new ArrayBuffer(a);for(var l=new Uint32Array(t);s<n;){for(o=0;o<e&&s<n;++o,++s)l[s]=r[o];s%e===0&&M(r)}return i&&(l[o]=r[o],t=t.slice(0,a)),t},I.prototype.buffer=I.prototype.arrayBuffer,I.prototype.digest=I.prototype.array=function(){this.finalize();for(var t,e,r=this.blockCount,n=this.s,i=this.outputBlocks,o=this.extraBytes,s=0,a=0,l=[];a<i;){for(s=0;s<r&&a<i;++s,++a)t=a<<2,e=n[s],l[t]=255&e,l[t+1]=e>>8&255,l[t+2]=e>>16&255,l[t+3]=e>>24&255;a%r===0&&M(n)}return o&&(t=a<<2,e=n[s],l[t]=255&e,o>1&&(l[t+1]=e>>8&255),o>2&&(l[t+2]=e>>16&255)),l},N.prototype=new I,N.prototype.finalize=function(){return this.encode(this.outputBits,!0),I.prototype.finalize.call(this)};var M=function(t){var e,r,n,i,o,s,a,l,c,h,d,f,p,m,g,v,y,w,b,E,A,k,S,C,x,_,P,T,I,N,M,B,R,F,O,D,U,L,q,z,G,j,H,K,W,V,$,J,Q,Y,X,Z,tt,et,rt,nt,it,ot,st,at,lt,ct,ut;for(n=0;n<48;n+=2)i=t[0]^t[10]^t[20]^t[30]^t[40],o=t[1]^t[11]^t[21]^t[31]^t[41],s=t[2]^t[12]^t[22]^t[32]^t[42],a=t[3]^t[13]^t[23]^t[33]^t[43],l=t[4]^t[14]^t[24]^t[34]^t[44],c=t[5]^t[15]^t[25]^t[35]^t[45],h=t[6]^t[16]^t[26]^t[36]^t[46],d=t[7]^t[17]^t[27]^t[37]^t[47],e=(f=t[8]^t[18]^t[28]^t[38]^t[48])^(s<<1|a>>>31),r=(p=t[9]^t[19]^t[29]^t[39]^t[49])^(a<<1|s>>>31),t[0]^=e,t[1]^=r,t[10]^=e,t[11]^=r,t[20]^=e,t[21]^=r,t[30]^=e,t[31]^=r,t[40]^=e,t[41]^=r,e=i^(l<<1|c>>>31),r=o^(c<<1|l>>>31),t[2]^=e,t[3]^=r,t[12]^=e,t[13]^=r,t[22]^=e,t[23]^=r,t[32]^=e,t[33]^=r,t[42]^=e,t[43]^=r,e=s^(h<<1|d>>>31),r=a^(d<<1|h>>>31),t[4]^=e,t[5]^=r,t[14]^=e,t[15]^=r,t[24]^=e,t[25]^=r,t[34]^=e,t[35]^=r,t[44]^=e,t[45]^=r,e=l^(f<<1|p>>>31),r=c^(p<<1|f>>>31),t[6]^=e,t[7]^=r,t[16]^=e,t[17]^=r,t[26]^=e,t[27]^=r,t[36]^=e,t[37]^=r,t[46]^=e,t[47]^=r,e=h^(i<<1|o>>>31),r=d^(o<<1|i>>>31),t[8]^=e,t[9]^=r,t[18]^=e,t[19]^=r,t[28]^=e,t[29]^=r,t[38]^=e,t[39]^=r,t[48]^=e,t[49]^=r,m=t[0],g=t[1],V=t[11]<<4|t[10]>>>28,$=t[10]<<4|t[11]>>>28,T=t[20]<<3|t[21]>>>29,I=t[21]<<3|t[20]>>>29,at=t[31]<<9|t[30]>>>23,lt=t[30]<<9|t[31]>>>23,j=t[40]<<18|t[41]>>>14,H=t[41]<<18|t[40]>>>14,F=t[2]<<1|t[3]>>>31,O=t[3]<<1|t[2]>>>31,v=t[13]<<12|t[12]>>>20,y=t[12]<<12|t[13]>>>20,J=t[22]<<10|t[23]>>>22,Q=t[23]<<10|t[22]>>>22,N=t[33]<<13|t[32]>>>19,M=t[32]<<13|t[33]>>>19,ct=t[42]<<2|t[43]>>>30,ut=t[43]<<2|t[42]>>>30,et=t[5]<<30|t[4]>>>2,rt=t[4]<<30|t[5]>>>2,D=t[14]<<6|t[15]>>>26,U=t[15]<<6|t[14]>>>26,w=t[25]<<11|t[24]>>>21,b=t[24]<<11|t[25]>>>21,Y=t[34]<<15|t[35]>>>17,X=t[35]<<15|t[34]>>>17,B=t[45]<<29|t[44]>>>3,R=t[44]<<29|t[45]>>>3,C=t[6]<<28|t[7]>>>4,x=t[7]<<28|t[6]>>>4,nt=t[17]<<23|t[16]>>>9,it=t[16]<<23|t[17]>>>9,L=t[26]<<25|t[27]>>>7,q=t[27]<<25|t[26]>>>7,E=t[36]<<21|t[37]>>>11,A=t[37]<<21|t[36]>>>11,Z=t[47]<<24|t[46]>>>8,tt=t[46]<<24|t[47]>>>8,K=t[8]<<27|t[9]>>>5,W=t[9]<<27|t[8]>>>5,_=t[18]<<20|t[19]>>>12,P=t[19]<<20|t[18]>>>12,ot=t[29]<<7|t[28]>>>25,st=t[28]<<7|t[29]>>>25,z=t[38]<<8|t[39]>>>24,G=t[39]<<8|t[38]>>>24,k=t[48]<<14|t[49]>>>18,S=t[49]<<14|t[48]>>>18,t[0]=m^~v&w,t[1]=g^~y&b,t[10]=C^~_&T,t[11]=x^~P&I,t[20]=F^~D&L,t[21]=O^~U&q,t[30]=K^~V&J,t[31]=W^~$&Q,t[40]=et^~nt&ot,t[41]=rt^~it&st,t[2]=v^~w&E,t[3]=y^~b&A,t[12]=_^~T&N,t[13]=P^~I&M,t[22]=D^~L&z,t[23]=U^~q&G,t[32]=V^~J&Y,t[33]=$^~Q&X,t[42]=nt^~ot&at,t[43]=it^~st&lt,t[4]=w^~E&k,t[5]=b^~A&S,t[14]=T^~N&B,t[15]=I^~M&R,t[24]=L^~z&j,t[25]=q^~G&H,t[34]=J^~Y&Z,t[35]=Q^~X&tt,t[44]=ot^~at&ct,t[45]=st^~lt&ut,t[6]=E^~k&m,t[7]=A^~S&g,t[16]=N^~B&C,t[17]=M^~R&x,t[26]=z^~j&F,t[27]=G^~H&O,t[36]=Y^~Z&K,t[37]=X^~tt&W,t[46]=at^~ct&et,t[47]=lt^~ut&rt,t[8]=k^~m&v,t[9]=S^~g&y,t[18]=B^~C&_,t[19]=R^~x&P,t[28]=j^~F&D,t[29]=H^~O&U,t[38]=Z^~K&V,t[39]=tt^~W&$,t[48]=ct^~et&nt,t[49]=ut^~rt&it,t[0]^=u[n],t[1]^=u[n+1]};if(o)Yt.exports=A;else for(S=0;S<k.length;++S)n[k[S]]=A[k[S]]}()),Qt.exports),Zt=r(Xt);function te(t){return"0x"+Zt.keccak_256(k(t))}const ee=new g("rlp/5.8.0");function re(t){const e=[];for(;t;)e.unshift(255&t),t>>=8;return e}function ne(t,e,r){let n=0;for(let i=0;i<r;i++)n=256*n+t[e+i];return n}function ie(t){if(Array.isArray(t)){let e=[];if(t.forEach(function(t){e=e.concat(ie(t))}),e.length<=55)return e.unshift(192+e.length),e;const r=re(e.length);return r.unshift(247+r.length),r.concat(e)}b(t)||ee.throwArgumentError("RLP object must be BytesLike","object",t);const e=Array.prototype.slice.call(k(t));if(1===e.length&&e[0]<=127)return e;if(e.length<=55)return e.unshift(128+e.length),e;const r=re(e.length);return r.unshift(183+r.length),r.concat(e)}function oe(t){return T(ie(t))}function se(t,e,r,n){const i=[];for(;r<e+1+n;){const o=ae(t,r);i.push(o.result),(r+=o.consumed)>e+1+n&&ee.throwError("child data too short",g.errors.BUFFER_OVERRUN,{})}return{consumed:1+n,result:i}}function ae(t,e){if(0===t.length&&ee.throwError("data too short",g.errors.BUFFER_OVERRUN,{}),t[e]>=248){const r=t[e]-247;e+1+r>t.length&&ee.throwError("data short segment too short",g.errors.BUFFER_OVERRUN,{});const n=ne(t,e+1,r);return e+1+r+n>t.length&&ee.throwError("data long segment too short",g.errors.BUFFER_OVERRUN,{}),se(t,e,e+1+r,r+n)}if(t[e]>=192){const r=t[e]-192;return e+1+r>t.length&&ee.throwError("data array too short",g.errors.BUFFER_OVERRUN,{}),se(t,e,e+1,r)}if(t[e]>=184){const r=t[e]-183;e+1+r>t.length&&ee.throwError("data array too short",g.errors.BUFFER_OVERRUN,{});const n=ne(t,e+1,r);e+1+r+n>t.length&&ee.throwError("data array too short",g.errors.BUFFER_OVERRUN,{});return{consumed:1+r+n,result:T(t.slice(e+1+r,e+1+r+n))}}if(t[e]>=128){const r=t[e]-128;e+1+r>t.length&&ee.throwError("data too short",g.errors.BUFFER_OVERRUN,{});return{consumed:1+r,result:T(t.slice(e+1,e+1+r))}}return{consumed:1,result:T(t[e])}}function le(t){const e=k(t),r=ae(e,0);return r.consumed!==e.length&&ee.throwArgumentError("invalid rlp data","data",t),r.result}var ce=Object.freeze({__proto__:null,decode:le,encode:oe});const ue=new g("address/5.8.0");function he(t){_(t,20)||ue.throwArgumentError("invalid address","address",t);const e=(t=t.toLowerCase()).substring(2).split(""),r=new Uint8Array(40);for(let t=0;t<40;t++)r[t]=e[t].charCodeAt(0);const n=k(te(r));for(let t=0;t<40;t+=2)n[t>>1]>>4>=8&&(e[t]=e[t].toUpperCase()),(15&n[t>>1])>=8&&(e[t+1]=e[t+1].toUpperCase());return"0x"+e.join("")}const de={};for(let t=0;t<10;t++)de[String(t)]=String(t);for(let t=0;t<26;t++)de[String.fromCharCode(65+t)]=String(10+t);const fe=Math.floor((pe=9007199254740991,Math.log10?Math.log10(pe):Math.log(pe)/Math.LN10));var pe;function me(t){let e=(t=(t=t.toUpperCase()).substring(4)+t.substring(0,2)+"00").split("").map(t=>de[t]).join("");for(;e.length>=fe;){let t=e.substring(0,fe);e=parseInt(t,10)%97+e.substring(t.length)}let r=String(98-parseInt(e,10)%97);for(;r.length<2;)r="0"+r;return r}function ge(t){let e=null;if("string"!=typeof t&&ue.throwArgumentError("invalid address","address",t),t.match(/^(0x)?[0-9a-fA-F]{40}$/))"0x"!==t.substring(0,2)&&(t="0x"+t),e=he(t),t.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&e!==t&&ue.throwArgumentError("bad address checksum","address",t);else if(t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(t.substring(2,4)!==me(t)&&ue.throwArgumentError("bad icap checksum","address",t),r=t.substring(4),e=new L(r,36).toString(16);e.length<40;)e="0"+e;e=he("0x"+e)}else ue.throwArgumentError("invalid address","address",t);var r;return e}function ve(t){let e=null;try{e=ge(t.from)}catch(e){ue.throwArgumentError("missing from address","transaction",t)}return ge(N(te(oe([e,C(k(H.from(t.nonce).toHexString()))])),12))}class ye extends Wt{constructor(t){super("address","address",t,!1)}defaultValue(){return"0x0000000000000000000000000000000000000000"}encode(t,e){try{e=ge(e)}catch(t){this._throwError(t.message,e)}return t.writeValue(e)}decode(t){return ge(F(t.readValue().toHexString(),20))}}class we extends Wt{constructor(t){super(t.name,t.type,void 0,t.dynamic),this.coder=t}defaultValue(){return this.coder.defaultValue()}encode(t,e){return this.coder.encode(t,e)}decode(t){return this.coder.decode(t)}}const be=new g(bt);function Ee(t,e,r){let n=null;if(Array.isArray(r))n=r;else if(r&&"object"==typeof r){let t={};n=e.map(e=>{const n=e.localName;return n||be.throwError("cannot encode object for signature with missing names",g.errors.INVALID_ARGUMENT,{argument:"values",coder:e,value:r}),t[n]&&be.throwError("cannot encode object for signature with duplicate names",g.errors.INVALID_ARGUMENT,{argument:"values",coder:e,value:r}),t[n]=!0,r[n]})}else be.throwArgumentError("invalid tuple value","tuple",r);e.length!==n.length&&be.throwArgumentError("types/value length mismatch","tuple",r);let i=new Vt(t.wordSize),o=new Vt(t.wordSize),s=[];e.forEach((t,e)=>{let r=n[e];if(t.dynamic){let e=o.length;t.encode(o,r);let n=i.writeUpdatableValue();s.push(t=>{n(t+e)})}else t.encode(i,r)}),s.forEach(t=>{t(i.length)});let a=t.appendWriter(i);return a+=t.appendWriter(o),a}function Ae(t,e){let r=[],n=t.subReader(0);e.forEach(e=>{let i=null;if(e.dynamic){let r=t.readValue(),o=n.subReader(r.toNumber());try{i=e.decode(o)}catch(t){if(t.code===g.errors.BUFFER_OVERRUN)throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}}else try{i=e.decode(t)}catch(t){if(t.code===g.errors.BUFFER_OVERRUN)throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}null!=i&&r.push(i)});const i=e.reduce((t,e)=>{const r=e.localName;return r&&(t[r]||(t[r]=0),t[r]++),t},{});e.forEach((t,e)=>{let n=t.localName;if(!n||1!==i[n])return;if("length"===n&&(n="_length"),null!=r[n])return;const o=r[e];o instanceof Error?Object.defineProperty(r,n,{enumerable:!0,get:()=>{throw o}}):r[n]=o});for(let t=0;t<r.length;t++){const e=r[t];e instanceof Error&&Object.defineProperty(r,t,{enumerable:!0,get:()=>{throw e}})}return Object.freeze(r)}class ke extends Wt{constructor(t,e,r){super("array",t.type+"["+(e>=0?e:"")+"]",r,-1===e||t.dynamic),this.coder=t,this.length=e}defaultValue(){const t=this.coder.defaultValue(),e=[];for(let r=0;r<this.length;r++)e.push(t);return e}encode(t,e){Array.isArray(e)||this._throwError("expected array value",e);let r=this.length;-1===r&&(r=e.length,t.writeValue(e.length)),be.checkArgumentCount(e.length,r,"coder array"+(this.localName?" "+this.localName:""));let n=[];for(let t=0;t<e.length;t++)n.push(this.coder);return Ee(t,n,e)}decode(t){let e=this.length;-1===e&&(e=t.readValue().toNumber(),32*e>t._data.length&&be.throwError("insufficient data length",g.errors.BUFFER_OVERRUN,{length:t._data.length,count:e}));let r=[];for(let t=0;t<e;t++)r.push(new we(this.coder));return t.coerce(this.name,Ae(t,r))}}class Se extends Wt{constructor(t){super("bool","bool",t,!1)}defaultValue(){return!1}encode(t,e){return t.writeValue(e?1:0)}decode(t){return t.coerce(this.type,!t.readValue().isZero())}}class Ce extends Wt{constructor(t,e){super(t,t,e,!0)}defaultValue(){return"0x"}encode(t,e){e=k(e);let r=t.writeValue(e.length);return r+=t.writeBytes(e),r}decode(t){return t.readBytes(t.readValue().toNumber(),!0)}}class xe extends Ce{constructor(t){super("bytes",t)}decode(t){return t.coerce(this.name,T(super.decode(t)))}}class _e extends Wt{constructor(t,e){let r="bytes"+String(t);super(r,r,e,!1),this.size=t}defaultValue(){return"0x0000000000000000000000000000000000000000000000000000000000000000".substring(0,2+2*this.size)}encode(t,e){let r=k(e);return r.length!==this.size&&this._throwError("incorrect data length",e),t.writeBytes(r)}decode(t){return t.coerce(this.name,T(t.readBytes(this.size)))}}class Pe extends Wt{constructor(t){super("null","",t,!1)}defaultValue(){return null}encode(t,e){return null!=e&&this._throwError("not null",e),t.writeBytes([])}decode(t){return t.readBytes(0),t.coerce(this.name,null)}}const Te="0x0000000000000000000000000000000000000000",Ie=H.from(-1),Ne=H.from(0),Me=H.from(1),Be=H.from(2),Re=H.from("1000000000000000000"),Fe=H.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),Oe=H.from("-0x8000000000000000000000000000000000000000000000000000000000000000"),De=H.from("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),Ue="0x0000000000000000000000000000000000000000000000000000000000000000";var Le=Object.freeze({__proto__:null,AddressZero:Te,EtherSymbol:"Ξ",HashZero:Ue,MaxInt256:De,MaxUint256:Fe,MinInt256:Oe,NegativeOne:Ie,One:Me,Two:Be,WeiPerEther:Re,Zero:Ne});class qe extends Wt{constructor(t,e,r){const n=(e?"int":"uint")+8*t;super(n,n,r,!1),this.size=t,this.signed=e}defaultValue(){return 0}encode(t,e){let r=H.from(e),n=Fe.mask(8*t.wordSize);if(this.signed){let t=n.mask(8*this.size-1);(r.gt(t)||r.lt(t.add(Me).mul(Ie)))&&this._throwError("value out-of-bounds",e)}else(r.lt(Ne)||r.gt(n.mask(8*this.size)))&&this._throwError("value out-of-bounds",e);return r=r.toTwos(8*this.size).mask(8*this.size),this.signed&&(r=r.fromTwos(8*this.size).toTwos(8*t.wordSize)),t.writeValue(r)}decode(t){let e=t.readValue().mask(8*this.size);return this.signed&&(e=e.fromTwos(8*this.size)),t.coerce(this.name,e)}}const ze=new g("strings/5.8.0");var Ge,je;function He(t,e,r,n,i){if(t===je.BAD_PREFIX||t===je.UNEXPECTED_CONTINUE){let t=0;for(let n=e+1;n<r.length&&r[n]>>6==2;n++)t++;return t}return t===je.OVERRUN?r.length-e-1:0}!function(t){t.current="",t.NFC="NFC",t.NFD="NFD",t.NFKC="NFKC",t.NFKD="NFKD"}(Ge||(Ge={})),function(t){t.UNEXPECTED_CONTINUE="unexpected continuation byte",t.BAD_PREFIX="bad codepoint prefix",t.OVERRUN="string overrun",t.MISSING_CONTINUE="missing continuation byte",t.OUT_OF_RANGE="out of UTF-8 range",t.UTF16_SURROGATE="UTF-16 surrogate",t.OVERLONG="overlong representation"}(je||(je={}));const Ke=Object.freeze({error:function(t,e,r,n,i){return ze.throwArgumentError(`invalid codepoint at offset ${e}; ${t}`,"bytes",r)},ignore:He,replace:function(t,e,r,n,i){return t===je.OVERLONG?(n.push(i),0):(n.push(65533),He(t,e,r))}});function We(t,e){null==e&&(e=Ke.error),t=k(t);const r=[];let n=0;for(;n<t.length;){const i=t[n++];if(!(i>>7)){r.push(i);continue}let o=null,s=null;if(192==(224&i))o=1,s=127;else if(224==(240&i))o=2,s=2047;else{if(240!=(248&i)){n+=e(128==(192&i)?je.UNEXPECTED_CONTINUE:je.BAD_PREFIX,n-1,t,r);continue}o=3,s=65535}if(n-1+o>=t.length){n+=e(je.OVERRUN,n-1,t,r);continue}let a=i&(1<<8-o-1)-1;for(let i=0;i<o;i++){let i=t[n];if(128!=(192&i)){n+=e(je.MISSING_CONTINUE,n,t,r),a=null;break}a=a<<6|63&i,n++}null!==a&&(a>1114111?n+=e(je.OUT_OF_RANGE,n-1-o,t,r,a):a>=55296&&a<=57343?n+=e(je.UTF16_SURROGATE,n-1-o,t,r,a):a<=s?n+=e(je.OVERLONG,n-1-o,t,r,a):r.push(a))}return r}function Ve(t,e=Ge.current){e!=Ge.current&&(ze.checkNormalize(),t=t.normalize(e));let r=[];for(let e=0;e<t.length;e++){const n=t.charCodeAt(e);if(n<128)r.push(n);else if(n<2048)r.push(n>>6|192),r.push(63&n|128);else if(55296==(64512&n)){e++;const i=t.charCodeAt(e);if(e>=t.length||56320!=(64512&i))throw new Error("invalid utf-8 string");const o=65536+((1023&n)<<10)+(1023&i);r.push(o>>18|240),r.push(o>>12&63|128),r.push(o>>6&63|128),r.push(63&o|128)}else r.push(n>>12|224),r.push(n>>6&63|128),r.push(63&n|128)}return k(r)}function $e(t){const e="0000"+t.toString(16);return"\\u"+e.substring(e.length-4)}function Je(t){return t.map(t=>t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10&1023),56320+(1023&t)))).join("")}function Qe(t,e){return Je(We(t,e))}function Ye(t,e=Ge.current){return We(Ve(t,e))}function Xe(t,e){e||(e=function(t){return[parseInt(t,16)]});let r=0,n={};return t.split(",").forEach(t=>{let i=t.split(":");r+=parseInt(i[0],16),n[r]=e(i[1])}),n}function Ze(t){let e=0;return t.split(",").map(t=>{let r=t.split("-");1===r.length?r[1]="0":""===r[1]&&(r[1]="1");let n=e+parseInt(r[0],16);return e=parseInt(r[1],16),{l:n,h:e}})}function tr(t,e){let r=0;for(let n=0;n<e.length;n++){let i=e[n];if(r+=i.l,t>=r&&t<=r+i.h&&(t-r)%(i.d||1)===0){if(i.e&&-1!==i.e.indexOf(t-r))continue;return i}}return null}const er=Ze("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),rr="ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map(t=>parseInt(t,16)),nr=[{h:25,s:32,l:65},{h:30,s:32,e:[23],l:127},{h:54,s:1,e:[48],l:64,d:2},{h:14,s:1,l:57,d:2},{h:44,s:1,l:17,d:2},{h:10,s:1,e:[2,6,8],l:61,d:2},{h:16,s:1,l:68,d:2},{h:84,s:1,e:[18,24,66],l:19,d:2},{h:26,s:32,e:[17],l:435},{h:22,s:1,l:71,d:2},{h:15,s:80,l:40},{h:31,s:32,l:16},{h:32,s:1,l:80,d:2},{h:52,s:1,l:42,d:2},{h:12,s:1,l:55,d:2},{h:40,s:1,e:[38],l:15,d:2},{h:14,s:1,l:48,d:2},{h:37,s:48,l:49},{h:148,s:1,l:6351,d:2},{h:88,s:1,l:160,d:2},{h:15,s:16,l:704},{h:25,s:26,l:854},{h:25,s:32,l:55915},{h:37,s:40,l:1247},{h:25,s:-119711,l:53248},{h:25,s:-119763,l:52},{h:25,s:-119815,l:52},{h:25,s:-119867,e:[1,4,5,7,8,11,12,17],l:52},{h:25,s:-119919,l:52},{h:24,s:-119971,e:[2,7,8,17],l:52},{h:24,s:-120023,e:[2,7,13,15,16,17],l:52},{h:25,s:-120075,l:52},{h:25,s:-120127,l:52},{h:25,s:-120179,l:52},{h:25,s:-120231,l:52},{h:25,s:-120283,l:52},{h:25,s:-120335,l:52},{h:24,s:-119543,e:[17],l:56},{h:24,s:-119601,e:[17],l:58},{h:24,s:-119659,e:[17],l:58},{h:24,s:-119717,e:[17],l:58},{h:24,s:-119775,e:[17],l:58}],ir=Xe("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),or=Xe("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),sr=Xe("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",function(t){if(t.length%4!=0)throw new Error("bad data");let e=[];for(let r=0;r<t.length;r+=4)e.push(parseInt(t.substring(r,r+4),16));return e}),ar=Ze("80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001");class lr extends Ce{constructor(t){super("string",t)}defaultValue(){return""}encode(t,e){return super.encode(t,Ve(e))}decode(t){return Qe(super.decode(t))}}class cr extends Wt{constructor(t,e){let r=!1;const n=[];t.forEach(t=>{t.dynamic&&(r=!0),n.push(t.type)});super("tuple","tuple("+n.join(",")+")",e,r),this.coders=t}defaultValue(){const t=[];this.coders.forEach(e=>{t.push(e.defaultValue())});const e=this.coders.reduce((t,e)=>{const r=e.localName;return r&&(t[r]||(t[r]=0),t[r]++),t},{});return this.coders.forEach((r,n)=>{let i=r.localName;i&&1===e[i]&&("length"===i&&(i="_length"),null==t[i]&&(t[i]=t[n]))}),Object.freeze(t)}encode(t,e){return Ee(t,this.coders,e)}decode(t){return t.coerce(this.name,Ae(t,this.coders))}}const ur=new g(bt),hr=new RegExp(/^bytes([0-9]*)$/),dr=new RegExp(/^(u?int)([0-9]*)$/);class fr{constructor(t){ut(this,"coerceFunc",t||null)}_getCoder(t){switch(t.baseType){case"address":return new ye(t.name);case"bool":return new Se(t.name);case"string":return new lr(t.name);case"bytes":return new xe(t.name);case"array":return new ke(this._getCoder(t.arrayChildren),t.arrayLength,t.name);case"tuple":return new cr((t.components||[]).map(t=>this._getCoder(t)),t.name);case"":return new Pe(t.name)}let e=t.type.match(dr);if(e){let r=parseInt(e[2]||"256");return(0===r||r>256||r%8!=0)&&ur.throwArgumentError("invalid "+e[1]+" bit length","param",t),new qe(r/8,"int"===e[1],t.name)}if(e=t.type.match(hr),e){let r=parseInt(e[1]);return(0===r||r>32)&&ur.throwArgumentError("invalid bytes length","param",t),new _e(r,t.name)}return ur.throwArgumentError("invalid type","type",t.type)}_getWordSize(){return 32}_getReader(t,e){return new $t(t,this._getWordSize(),this.coerceFunc,e)}_getWriter(){return new Vt(this._getWordSize())}getDefaultValue(t){const e=t.map(t=>this._getCoder(Tt.from(t)));return new cr(e,"_").defaultValue()}encode(t,e){t.length!==e.length&&ur.throwError("types/values length mismatch",g.errors.INVALID_ARGUMENT,{count:{types:t.length,values:e.length},value:{types:t,values:e}});const r=t.map(t=>this._getCoder(Tt.from(t))),n=new cr(r,"_"),i=this._getWriter();return n.encode(i,e),i.data}decode(t,e,r){const n=t.map(t=>this._getCoder(Tt.from(t)));return new cr(n,"_").decode(this._getReader(k(e),r))}}const pr=new fr;function mr(t){return te(Ve(t))}const gr="hash/5.8.0";function vr(t){t=atob(t);const e=[];for(let r=0;r<t.length;r++)e.push(t.charCodeAt(r));return k(e)}function yr(t){t=k(t);let e="";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return btoa(e)}var wr=Object.freeze({__proto__:null,decode:vr,encode:yr});function br(t,e){null==e&&(e=1);const r=[],n=r.forEach,i=function(t,e){n.call(t,function(t){e>0&&Array.isArray(t)?i(t,e-1):r.push(t)})};return i(t,e),r}function Er(t){return function(t){let e=0;return()=>t[e++]}(function(t){let e=0;function r(){return t[e++]<<8|t[e++]}let n=r(),i=1,o=[0,1];for(let t=1;t<n;t++)o.push(i+=r());let s=r(),a=e;e+=s;let l=0,c=0;function u(){return 0==l&&(c=c<<8|t[e++],l=8),c>>--l&1}const h=Math.pow(2,31),d=h>>>1,f=d>>1,p=h-1;let m=0;for(let t=0;t<31;t++)m=m<<1|u();let g=[],v=0,y=h;for(;;){let t=Math.floor(((m-v+1)*i-1)/y),e=0,r=n;for(;r-e>1;){let n=e+r>>>1;t<o[n]?r=n:e=n}if(0==e)break;g.push(e);let s=v+Math.floor(y*o[e]/i),a=v+Math.floor(y*o[e+1]/i)-1;for(;0==((s^a)&d);)m=m<<1&p|u(),s=s<<1&p,a=a<<1&p|1;for(;s&~a&f;)m=m&d|m<<1&p>>>1|u(),s=s<<1^d,a=(a^d)<<1|d|1;v=s,y=1+a-s}let w=n-4;return g.map(e=>{switch(e-w){case 3:return w+65792+(t[a++]<<16|t[a++]<<8|t[a++]);case 2:return w+256+(t[a++]<<8|t[a++]);case 1:return w+t[a++];default:return e-1}})}(t))}function Ar(t){return 1&t?~t>>1:t>>1}function kr(t,e){let r=Array(t);for(let n=0,i=-1;n<t;n++)r[n]=i+=1+e();return r}function Sr(t,e){let r=Array(t);for(let n=0,i=0;n<t;n++)r[n]=i+=Ar(e());return r}function Cr(t,e){let r=kr(t(),t),n=t(),i=kr(n,t),o=function(t,e){let r=Array(t);for(let n=0;n<t;n++)r[n]=1+e();return r}(n,t);for(let t=0;t<n;t++)for(let e=0;e<o[t];e++)r.push(i[t]+e);return e?r.map(t=>e[t]):r}function xr(t,e,r){let n=Array(t).fill(void 0).map(()=>[]);for(let i=0;i<e;i++)Sr(t,r).forEach((t,e)=>n[e].push(t));return n}function _r(t,e){let r=1+e(),n=e(),i=function(t){let e=[];for(;;){let r=t();if(0==r)break;e.push(r)}return e}(e);return br(xr(i.length,1+t,e).map((t,e)=>{const o=t[0],s=t.slice(1);return Array(i[e]).fill(void 0).map((t,e)=>{let i=e*n;return[o+e*r,s.map(t=>t+i)]})}))}function Pr(t,e){return xr(1+e(),1+t,e).map(t=>[t[0],t.slice(1)])}const Tr=Er(vr("AEQF2AO2DEsA2wIrAGsBRABxAN8AZwCcAEwAqgA0AGwAUgByADcATAAVAFYAIQAyACEAKAAYAFgAGwAjABQAMAAmADIAFAAfABQAKwATACoADgAbAA8AHQAYABoAGQAxADgALAAoADwAEwA9ABMAGgARAA4ADwAWABMAFgAIAA8AHgQXBYMA5BHJAS8JtAYoAe4AExozi0UAH21tAaMnBT8CrnIyhrMDhRgDygIBUAEHcoFHUPe8AXBjAewCjgDQR8IICIcEcQLwATXCDgzvHwBmBoHNAqsBdBcUAykgDhAMShskMgo8AY8jqAQfAUAfHw8BDw87MioGlCIPBwZCa4ELatMAAMspJVgsDl8AIhckSg8XAHdvTwBcIQEiDT4OPhUqbyECAEoAS34Aej8Ybx83JgT/Xw8gHxZ/7w8RICxPHA9vBw+Pfw8PHwAPFv+fAsAvCc8vEr8ivwD/EQ8Bol8OEBa/A78hrwAPCU8vESNvvwWfHwNfAVoDHr+ZAAED34YaAdJPAK7PLwSEgDLHAGo1Pz8Pvx9fUwMrpb8O/58VTzAPIBoXIyQJNF8hpwIVAT8YGAUADDNBaX3RAMomJCg9EhUeA29MABsZBTMNJipjOhc19gcIDR8bBwQHEggCWi6DIgLuAQYA+BAFCha3A5XiAEsqM7UFFgFLhAMjFTMYE1Klnw74nRVBG/ASCm0BYRN/BrsU3VoWy+S0vV8LQx+vN8gF2AC2AK5EAWwApgYDKmAAroQ0NDQ0AT+OCg7wAAIHRAbpNgVcBV0APTA5BfbPFgMLzcYL/QqqA82eBALKCjQCjqYCht0/k2+OAsXQAoP3ASTKDgDw6ACKAUYCMpIKJpRaAE4A5womABzZvs0REEKiACIQAd5QdAECAj4Ywg/wGqY2AVgAYADYvAoCGAEubA0gvAY2ALAAbpbvqpyEAGAEpgQAJgAG7gAgAEACmghUFwCqAMpAINQIwC4DthRAAPcycKgApoIdABwBfCisABoATwBqASIAvhnSBP8aH/ECeAKXAq40NjgDBTwFYQU6AXs3oABgAD4XNgmcCY1eCl5tIFZeUqGgyoNHABgAEQAaABNwWQAmABMATPMa3T34ADldyprmM1M2XociUQgLzvwAXT3xABgAEQAaABNwIGFAnADD8AAgAD4BBJWzaCcIAIEBFMAWwKoAAdq9BWAF5wLQpALEtQAKUSGkahR4GnJM+gsAwCgeFAiUAECQ0BQuL8AAIAAAADKeIheclvFqQAAETr4iAMxIARMgAMIoHhQIAn0E0pDQFC4HhznoAAAAIAI2C0/4lvFqQAAETgBJJwYCAy4ABgYAFAA8MBKYEH4eRhTkAjYeFcgACAYAeABsOqyQ5gRwDayqugEgaIIAtgoACgDmEABmBAWGme5OBJJA2m4cDeoAmITWAXwrMgOgAGwBCh6CBXYF1Tzg1wKAAFdiuABRAFwAXQBsAG8AdgBrAHYAbwCEAHEwfxQBVE5TEQADVFhTBwBDANILAqcCzgLTApQCrQL6vAAMAL8APLhNBKkE6glGKTAU4Dr4N2EYEwBCkABKk8rHAbYBmwIoAiU4Ajf/Aq4CowCAANIChzgaNBsCsTgeODcFXrgClQKdAqQBiQGYAqsCsjTsNHsfNPA0ixsAWTWiOAMFPDQSNCk2BDZHNow2TTZUNhk28Jk9VzI3QkEoAoICoQKwAqcAQAAxBV4FXbS9BW47YkIXP1ciUqs05DS/FwABUwJW11e6nHuYZmSh/RAYA8oMKvZ8KASoUAJYWAJ6ILAsAZSoqjpgA0ocBIhmDgDWAAawRDQoAAcuAj5iAHABZiR2AIgiHgCaAU68ACxuHAG0ygM8MiZIAlgBdF4GagJqAPZOHAMuBgoATkYAsABiAHgAMLoGDPj0HpKEBAAOJgAuALggTAHWAeAMEDbd20Uege0ADwAWADkAQgA9OHd+2MUQZBBhBgNNDkxxPxUQArEPqwvqERoM1irQ090ANK4H8ANYB/ADWANYB/AH8ANYB/ADWANYA1gDWBwP8B/YxRBkD00EcgWTBZAE2wiIJk4RhgctCNdUEnQjHEwDSgEBIypJITuYMxAlR0wRTQgIATZHbKx9PQNMMbBU+pCnA9AyVDlxBgMedhKlAC8PeCE1uk6DekxxpQpQT7NX9wBFBgASqwAS5gBJDSgAUCwGPQBI4zTYABNGAE2bAE3KAExdGABKaAbgAFBXAFCOAFBJABI2SWdObALDOq0//QomCZhvwHdTBkIQHCemEPgMNAG2ATwN7kvZBPIGPATKH34ZGg/OlZ0Ipi3eDO4m5C6igFsj9iqEBe5L9TzeC05RaQ9aC2YJ5DpkgU8DIgEOIowK3g06CG4Q9ArKbA3mEUYHOgPWSZsApgcCCxIdNhW2JhFirQsKOXgG/Br3C5AmsBMqev0F1BoiBk4BKhsAANAu6IWxWjJcHU9gBgQLJiPIFKlQIQ0mQLh4SRocBxYlqgKSQ3FKiFE3HpQh9zw+DWcuFFF9B/Y8BhlQC4I8n0asRQ8R0z6OPUkiSkwtBDaALDAnjAnQD4YMunxzAVoJIgmyDHITMhEYN8YIOgcaLpclJxYIIkaWYJsE+KAD9BPSAwwFQAlCBxQDthwuEy8VKgUOgSXYAvQ21i60ApBWgQEYBcwPJh/gEFFH4Q7qCJwCZgOEJewALhUiABginAhEZABgj9lTBi7MCMhqbSN1A2gU6GIRdAeSDlgHqBw0FcAc4nDJXgyGCSiksAlcAXYJmgFgBOQICjVcjKEgQmdUi1kYnCBiQUBd/QIyDGYVoES+h3kCjA9sEhwBNgF0BzoNAgJ4Ee4RbBCWCOyGBTW2M/k6JgRQIYQgEgooA1BszwsoJvoM+WoBpBJjAw00PnfvZ6xgtyUX/gcaMsZBYSHyC5NPzgydGsIYQ1QvGeUHwAP0GvQn60FYBgADpAQUOk4z7wS+C2oIjAlAAEoOpBgH2BhrCnKM0QEyjAG4mgNYkoQCcJAGOAcMAGgMiAV65gAeAqgIpAAGANADWAA6Aq4HngAaAIZCAT4DKDABIuYCkAOUCDLMAZYwAfQqBBzEDBYA+DhuSwLDsgKAa2ajBd5ZAo8CSjYBTiYEBk9IUgOwcuIA3ABMBhTgSAEWrEvMG+REAeBwLADIAPwABjYHBkIBzgH0bgC4AWALMgmjtLYBTuoqAIQAFmwB2AKKAN4ANgCA8gFUAE4FWvoF1AJQSgESMhksWGIBvAMgATQBDgB6BsyOpsoIIARuB9QCEBwV4gLvLwe2AgMi4BPOQsYCvd9WADIXUu5eZwqoCqdeaAC0YTQHMnM9UQAPH6k+yAdy/BZIiQImSwBQ5gBQQzSaNTFWSTYBpwGqKQK38AFtqwBI/wK37gK3rQK3sAK6280C0gK33AK3zxAAUEIAUD9SklKDArekArw5AEQAzAHCO147WTteO1k7XjtZO147WTteO1kDmChYI03AVU0oJqkKbV9GYewMpw3VRMk6ShPcYFJgMxPJLbgUwhXPJVcZPhq9JwYl5VUKDwUt1GYxCC00dhe9AEApaYNCY4ceMQpMHOhTklT5LRwAskujM7ANrRsWREEFSHXuYisWDwojAmSCAmJDXE6wXDchAqH4AmiZAmYKAp+FOBwMAmY8AmYnBG8EgAN/FAN+kzkHOXgYOYM6JCQCbB4CMjc4CwJtyAJtr/CLADRoRiwBaADfAOIASwYHmQyOAP8MwwAOtgJ3MAJ2o0ACeUxEAni7Hl3cRa9G9AJ8QAJ6yQJ9CgJ88UgBSH5kJQAsFklZSlwWGErNAtECAtDNSygDiFADh+dExpEzAvKiXQQDA69Lz0wuJgTQTU1NsAKLQAKK2cIcCB5EaAa4Ao44Ao5dQZiCAo7aAo5deVG1UzYLUtVUhgKT/AKTDQDqAB1VH1WwVdEHLBwplocy4nhnRTw6ApegAu+zWCKpAFomApaQApZ9nQCqWa1aCoJOADwClrYClk9cRVzSApnMApllXMtdCBoCnJw5wzqeApwXAp+cAp65iwAeEDIrEAKd8gKekwC2PmE1YfACntQCoG8BqgKeoCACnk+mY8lkKCYsAiewAiZ/AqD8AqBN2AKmMAKlzwKoAAB+AqfzaH1osgAESmodatICrOQCrK8CrWgCrQMCVx4CVd0CseLYAx9PbJgCsr4OArLpGGzhbWRtSWADJc4Ctl08QG6RAylGArhfArlIFgK5K3hwN3DiAr0aAy2zAzISAr6JcgMDM3ICvhtzI3NQAsPMAsMFc4N0TDZGdOEDPKgDPJsDPcACxX0CxkgCxhGKAshqUgLIRQLJUALJLwJkngLd03h6YniveSZL0QMYpGcDAmH1GfSVJXsMXpNevBICz2wCz20wTFTT9BSgAMeuAs90ASrrA04TfkwGAtwoAtuLAtJQA1JdA1NgAQIDVY2AikABzBfuYUZ2AILPg44C2sgC2d+EEYRKpz0DhqYAMANkD4ZyWvoAVgLfZgLeuXR4AuIw7RUB8zEoAfScAfLTiALr9ALpcXoAAur6AurlAPpIAboC7ooC652Wq5cEAu5AA4XhmHpw4XGiAvMEAGoDjheZlAL3FAORbwOSiAL3mQL52gL4Z5odmqy8OJsfA52EAv77ARwAOp8dn7QDBY4DpmsDptoA0sYDBmuhiaIGCgMMSgFgASACtgNGAJwEgLpoBgC8BGzAEowcggCEDC6kdjoAJAM0C5IKRoABZCgiAIzw3AYBLACkfng9ogigkgNmWAN6AEQCvrkEVqTGAwCsBRbAA+4iQkMCHR072jI2PTbUNsk2RjY5NvA23TZKNiU3EDcZN5I+RTxDRTBCJkK5VBYKFhZfwQCWygU3AJBRHpu+OytgNxa61A40GMsYjsn7BVwFXQVcBV0FaAVdBVwFXQVcBV0FXAVdBVwFXUsaCNyKAK4AAQUHBwKU7oICoW1e7jAEzgPxA+YDwgCkBFDAwADABKzAAOxFLhitA1UFTDeyPkM+bj51QkRCuwTQWWQ8X+0AWBYzsACNA8xwzAGm7EZ/QisoCTAbLDs6fnLfb8H2GccsbgFw13M1HAVkBW/Jxsm9CNRO8E8FDD0FBQw9FkcClOYCoMFegpDfADgcMiA2AJQACB8AsigKAIzIEAJKeBIApY5yPZQIAKQiHb4fvj5BKSRPQrZCOz0oXyxgOywfKAnGbgMClQaCAkILXgdeCD9IIGUgQj5fPoY+dT52Ao5CM0dAX9BTVG9SDzFwWTQAbxBzJF/lOEIQQglCCkKJIAls5AcClQICoKPMODEFxhi6KSAbiyfIRrMjtCgdWCAkPlFBIitCsEJRzAbMAV/OEyQzDg0OAQQEJ36i328/Mk9AybDJsQlq3tDRApUKAkFzXf1d/j9uALYP6hCoFgCTGD8kPsFKQiobrm0+zj0KSD8kPnVCRBwMDyJRTHFgMTJa5rwXQiQ2YfI/JD7BMEJEHGINTw4TOFlIRzwJO0icMQpyPyQ+wzJCRBv6DVgnKB01NgUKj2bwYzMqCoBkznBgEF+zYDIocwRIX+NgHj4HICNfh2C4CwdwFWpTG/lgUhYGAwRfv2Ts8mAaXzVgml/XYIJfuWC4HI1gUF9pYJZgMR6ilQHMAOwLAlDRefC0in4AXAEJA6PjCwc0IamOANMMCAECRQDFNRTZBgd+CwQlRA+r6+gLBDEFBnwUBXgKATIArwAGRAAHA3cDdAN2A3kDdwN9A3oDdQN7A30DfAN4A3oDfQAYEAAlAtYASwMAUAFsAHcKAHcAmgB3AHUAdQB2AHVu8UgAygDAAHcAdQB1AHYAdQALCgB3AAsAmgB3AAsCOwB3AAtu8UgAygDAAHgKAJoAdwB3AHUAdQB2AHUAeAB1AHUAdgB1bvFIAMoAwAALCgCaAHcACwB3AAsCOwB3AAtu8UgAygDAAH4ACwGgALcBpwC6AahdAu0COwLtbvFIAMoAwAALCgCaAu0ACwLtAAsCOwLtAAtu8UgAygDAA24ACwNvAAu0VsQAAzsAABCkjUIpAAsAUIusOggWcgMeBxVsGwL67U/2HlzmWOEeOgALASvuAAseAfpKUpnpGgYJDCIZM6YyARUE9ThqAD5iXQgnAJYJPnOzw0ZAEZxEKsIAkA4DhAHnTAIDxxUDK0lxCQlPYgIvIQVYJQBVqE1GakUAKGYiDToSBA1EtAYAXQJYAIF8GgMHRyAAIAjOe9YncekRAA0KACUrjwE7Ayc6AAYWAqaiKG4McEcqANoN3+Mg9TwCBhIkuCny+JwUQ29L008JluRxu3K+oAdqiHOqFH0AG5SUIfUJ5SxCGfxdipRzqTmT4V5Zb+r1Uo4Vm+NqSSEl2mNvR2JhIa8SpYO6ntdwFXHCWTCK8f2+Hxo7uiG3drDycAuKIMP5bhi06ACnqArH1rz4Rqg//lm6SgJGEVbF9xJHISaR6HxqxSnkw6shDnelHKNEfGUXSJRJ1GcsmtJw25xrZMDK9gXSm1/YMkdX4/6NKYOdtk/NQ3/NnDASjTc3fPjIjW/5sVfVObX2oTDWkr1dF9f3kxBsD3/3aQO8hPfRz+e0uEiJqt1161griu7gz8hDDwtpy+F+BWtefnKHZPAxcZoWbnznhJpy0e842j36bcNzGnIEusgGX0a8ZxsnjcSsPDZ09yZ36fCQbriHeQ72JRMILNl6ePPf2HWoVwgWAm1fb3V2sAY0+B6rAXqSwPBgseVmoqsBTSrm91+XasMYYySI8eeRxH3ZvHkMz3BQ5aJ3iUVbYPNM3/7emRtjlsMgv/9VyTsyt/mK+8fgWeT6SoFaclXqn42dAIsvAarF5vNNWHzKSkKQ/8Hfk5ZWK7r9yliOsooyBjRhfkHP4Q2DkWXQi6FG/9r/IwbmkV5T7JSopHKn1pJwm9tb5Ot0oyN1Z2mPpKXHTxx2nlK08fKk1hEYA8WgVVWL5lgx0iTv+KdojJeU23ZDjmiubXOxVXJKKi2Wjuh2HLZOFLiSC7Tls5SMh4f+Pj6xUSrNjFqLGehRNB8lC0QSLNmkJJx/wSG3MnjE9T1CkPwJI0wH2lfzwETIiVqUxg0dfu5q39Gt+hwdcxkhhNvQ4TyrBceof3Mhs/IxFci1HmHr4FMZgXEEczPiGCx0HRwzAqDq2j9AVm1kwN0mRVLWLylgtoPNapF5cY4Y1wJh/e0BBwZj44YgZrDNqvD/9Hv7GFYdUQeDJuQ3EWI4HaKqavU1XjC/n41kT4L79kqGq0kLhdTZvgP3TA3fS0ozVz+5piZsoOtIvBUFoMKbNcmBL6YxxaUAusHB38XrS8dQMnQwJfUUkpRoGr5AUeWicvBTzyK9g77+yCkf5PAysL7r/JjcZgrbvRpMW9iyaxZvKO6ceZN2EwIxKwVFPuvFuiEPGCoagbMo+SpydLrXqBzNCDGFCrO/rkcwa2xhokQZ5CdZ0AsU3JfSqJ6n5I14YA+P/uAgfhPU84Tlw7cEFfp7AEE8ey4sP12PTt4Cods1GRgDOB5xvyiR5m+Bx8O5nBCNctU8BevfV5A08x6RHd5jcwPTMDSZJOedIZ1cGQ704lxbAzqZOP05ZxaOghzSdvFBHYqomATARyAADK4elP8Ly3IrUZKfWh23Xy20uBUmLS4Pfagu9+oyVa2iPgqRP3F2CTUsvJ7+RYnN8fFZbU/HVvxvcFFDKkiTqV5UBZ3Gz54JAKByi9hkKMZJvuGgcSYXFmw08UyoQyVdfTD1/dMkCHXcTGAKeROgArsvmRrQTLUOXioOHGK2QkjHuoYFgXciZoTJd6Fs5q1QX1G+p/e26hYsEf7QZD1nnIyl/SFkNtYYmmBhpBrxl9WbY0YpHWRuw2Ll/tj9mD8P4snVzJl4F9J+1arVeTb9E5r2ILH04qStjxQNwn3m4YNqxmaNbLAqW2TN6LidwuJRqS+NXbtqxoeDXpxeGWmxzSkWxjkyCkX4NQRme6q5SAcC+M7+9ETfA/EwrzQajKakCwYyeunP6ZFlxU2oMEn1Pz31zeStW74G406ZJFCl1wAXIoUKkWotYEpOuXB1uVNxJ63dpJEqfxBeptwIHNrPz8BllZoIcBoXwgfJ+8VAUnVPvRvexnw0Ma/WiGYuJO5y8QTvEYBigFmhUxY5RqzE8OcywN/8m4UYrlaniJO75XQ6KSo9+tWHlu+hMi0UVdiKQp7NelnoZUzNaIyBPVeOwK6GNp+FfHuPOoyhaWuNvTYFkvxscMQWDh+zeFCFkgwbXftiV23ywJ4+uwRqmg9k3KzwIQpzppt8DBBOMbrqwQM5Gb05sEwdKzMiAqOloaA/lr0KA+1pr0/+HiWoiIjHA/wir2nIuS3PeU/ji3O6ZwoxcR1SZ9FhtLC5S0FIzFhbBWcGVP/KpxOPSiUoAdWUpqKH++6Scz507iCcxYI6rdMBICPJZea7OcmeFw5mObJSiqpjg2UoWNIs+cFhyDSt6geV5qgi3FunmwwDoGSMgerFOZGX1m0dMCYo5XOruxO063dwENK9DbnVM9wYFREzh4vyU1WYYJ/LRRp6oxgjqP/X5a8/4Af6p6NWkQferzBmXme0zY/4nwMJm/wd1tIqSwGz+E3xPEAOoZlJit3XddD7/BT1pllzOx+8bmQtANQ/S6fZexc6qi3W+Q2xcmXTUhuS5mpHQRvcxZUN0S5+PL9lXWUAaRZhEH8hTdAcuNMMCuVNKTEGtSUKNi3O6KhSaTzck8csZ2vWRZ+d7mW8c4IKwXIYd25S/zIftPkwPzufjEvOHWVD1m+FjpDVUTV0DGDuHj6QnaEwLu/dEgdLQOg9E1Sro9XHJ8ykLAwtPu+pxqKDuFexqON1sKQm7rwbE1E68UCfA/erovrTCG+DBSNg0l4goDQvZN6uNlbyLpcZAwj2UclycvLpIZMgv4yRlpb3YuMftozorbcGVHt/VeDV3+Fdf1TP0iuaCsPi2G4XeGhsyF1ubVDxkoJhmniQ0/jSg/eYML9KLfnCFgISWkp91eauR3IQvED0nAPXK+6hPCYs+n3+hCZbiskmVMG2da+0EsZPonUeIY8EbfusQXjsK/eFDaosbPjEfQS0RKG7yj5GG69M7MeO1HmiUYocgygJHL6M1qzUDDwUSmr99V7Sdr2F3JjQAJY+F0yH33Iv3+C9M38eML7gTgmNu/r2bUMiPvpYbZ6v1/IaESirBHNa7mPKn4dEmYg7v/+HQgPN1G79jBQ1+soydfDC2r+h2Bl/KIc5KjMK7OH6nb1jLsNf0EHVe2KBiE51ox636uyG6Lho0t3J34L5QY/ilE3mikaF4HKXG1mG1rCevT1Vv6GavltxoQe/bMrpZvRggnBxSEPEeEzkEdOxTnPXHVjUYdw8JYvjB/o7Eegc3Ma+NUxLLnsK0kJlinPmUHzHGtrk5+CAbVzFOBqpyy3QVUnzTDfC/0XD94/okH+OB+i7g9lolhWIjSnfIb+Eq43ZXOWmwvjyV/qqD+t0e+7mTEM74qP/Ozt8nmC7mRpyu63OB4KnUzFc074SqoyPUAgM+/TJGFo6T44EHnQU4X4z6qannVqgw/U7zCpwcmXV1AubIrvOmkKHazJAR55ePjp5tLBsN8vAqs3NAHdcEHOR2xQ0lsNAFzSUuxFQCFYvXLZJdOj9p4fNq6p0HBGUik2YzaI4xySy91KzhQ0+q1hjxvImRwPRf76tChlRkhRCi74NXZ9qUNeIwP+s5p+3m5nwPdNOHgSLD79n7O9m1n1uDHiMntq4nkYwV5OZ1ENbXxFd4PgrlvavZsyUO4MqYlqqn1O8W/I1dEZq5dXhrbETLaZIbC2Kj/Aa/QM+fqUOHdf0tXAQ1huZ3cmWECWSXy/43j35+Mvq9xws7JKseriZ1pEWKc8qlzNrGPUGcVgOa9cPJYIJsGnJTAUsEcDOEVULO5x0rXBijc1lgXEzQQKhROf8zIV82w8eswc78YX11KYLWQRcgHNJElBxfXr72lS2RBSl07qTKorO2uUDZr3sFhYsvnhLZn0A94KRzJ/7DEGIAhW5ZWFpL8gEwu1aLA9MuWZzNwl8Oze9Y+bX+v9gywRVnoB5I/8kXTXU3141yRLYrIOOz6SOnyHNy4SieqzkBXharjfjqq1q6tklaEbA8Qfm2DaIPs7OTq/nvJBjKfO2H9bH2cCMh1+5gspfycu8f/cuuRmtDjyqZ7uCIMyjdV3a+p3fqmXsRx4C8lujezIFHnQiVTXLXuI1XrwN3+siYYj2HHTvESUx8DlOTXpak9qFRK+L3mgJ1WsD7F4cu1aJoFoYQnu+wGDMOjJM3kiBQWHCcvhJ/HRdxodOQp45YZaOTA22Nb4XKCVxqkbwMYFhzYQYIAnCW8FW14uf98jhUG2zrKhQQ0q0CEq0t5nXyvUyvR8DvD69LU+g3i+HFWQMQ8PqZuHD+sNKAV0+M6EJC0szq7rEr7B5bQ8BcNHzvDMc9eqB5ZCQdTf80Obn4uzjwpYU7SISdtV0QGa9D3Wrh2BDQtpBKxaNFV+/Cy2P/Sv+8s7Ud0Fd74X4+o/TNztWgETUapy+majNQ68Lq3ee0ZO48VEbTZYiH1Co4OlfWef82RWeyUXo7woM03PyapGfikTnQinoNq5z5veLpeMV3HCAMTaZmA1oGLAn7XS3XYsz+XK7VMQsc4XKrmDXOLU/pSXVNUq8dIqTba///3x6LiLS6xs1xuCAYSfcQ3+rQgmu7uvf3THKt5Ooo97TqcbRqxx7EASizaQCBQllG/rYxVapMLgtLbZS64w1MDBMXX+PQpBKNwqUKOf2DDRDUXQf9EhOS0Qj4nTmlA8dzSLz/G1d+Ud8MTy/6ghhdiLpeerGY/UlDOfiuqFsMUU5/UYlP+BAmgRLuNpvrUaLlVkrqDievNVEAwF+4CoM1MZTmjxjJMsKJq+u8Zd7tNCUFy6LiyYXRJQ4VyvEQFFaCGKsxIwQkk7EzZ6LTJq2hUuPhvAW+gQnSG6J+MszC+7QCRHcnqDdyNRJ6T9xyS87A6MDutbzKGvGktpbXqtzWtXb9HsfK2cBMomjN9a4y+TaJLnXxAeX/HWzmf4cR4vALt/P4w4qgKY04ml4ZdLOinFYS6cup3G/1ie4+t1eOnpBNlqGqs75ilzkT4+DsZQxNvaSKJ//6zIbbk/M7LOhFmRc/1R+kBtz7JFGdZm/COotIdvQoXpTqP/1uqEUmCb/QWoGLMwO5ANcHzxdY48IGP5+J+zKOTBFZ4Pid+GTM+Wq12MV/H86xEJptBa6T+p3kgpwLedManBHC2GgNrFpoN2xnrMz9WFWX/8/ygSBkavq2Uv7FdCsLEYLu9LLIvAU0bNRDtzYl+/vXmjpIvuJFYjmI0im6QEYqnIeMsNjXG4vIutIGHijeAG/9EDBozKV5cldkHbLxHh25vT+ZEzbhXlqvpzKJwcEgfNwLAKFeo0/pvEE10XDB+EXRTXtSzJozQKFFAJhMxYkVaCW+E9AL7tMeU8acxidHqzb6lX4691UsDpy/LLRmT+epgW56+5Cw8tB4kMUv6s9lh3eRKbyGs+H/4mQMaYzPTf2OOdokEn+zzgvoD3FqNKk8QqGAXVsqcGdXrT62fSPkR2vROFi68A6se86UxRUk4cajfPyCC4G5wDhD+zNq4jodQ4u4n/m37Lr36n4LIAAsVr02dFi9AiwA81MYs2rm4eDlDNmdMRvEKRHfBwW5DdMNp0jPFZMeARqF/wL4XBfd+EMLBfMzpH5GH6NaW+1vrvMdg+VxDzatk3MXgO3ro3P/DpcC6+Mo4MySJhKJhSR01SGGGp5hPWmrrUgrv3lDnP+HhcI3nt3YqBoVAVTBAQT5iuhTg8nvPtd8ZeYj6w1x6RqGUBrSku7+N1+BaasZvjTk64RoIDlL8brpEcJx3OmY7jLoZsswdtmhfC/G21llXhITOwmvRDDeTTPbyASOa16cF5/A1fZAidJpqju3wYAy9avPR1ya6eNp9K8XYrrtuxlqi+bDKwlfrYdR0RRiKRVTLOH85+ZY7XSmzRpfZBJjaTa81VDcJHpZnZnSQLASGYW9l51ZV/h7eVzTi3Hv6hUsgc/51AqJRTkpbFVLXXszoBL8nBX0u/0jBLT8nH+fJePbrwURT58OY+UieRjd1vs04w0VG5VN2U6MoGZkQzKN/ptz0Q366dxoTGmj7i1NQGHi9GgnquXFYdrCfZBmeb7s0T6yrdlZH5cZuwHFyIJ/kAtGsTg0xH5taAAq44BAk1CPk9KVVbqQzrCUiFdF/6gtlPQ8bHHc1G1W92MXGZ5HEHftyLYs8mbD/9xYRUWkHmlM0zC2ilJlnNgV4bfALpQghxOUoZL7VTqtCHIaQSXm+YUMnpkXybnV+A6xlm2CVy8fn0Xlm2XRa0+zzOa21JWWmixfiPMSCZ7qA4rS93VN3pkpF1s5TonQjisHf7iU9ZGvUPOAKZcR1pbeVf/Ul7OhepGCaId9wOtqo7pJ7yLcBZ0pFkOF28y4zEI/kcUNmutBHaQpBdNM8vjCS6HZRokkeo88TBAjGyG7SR+6vUgTcyK9Imalj0kuxz0wmK+byQU11AiJFk/ya5dNduRClcnU64yGu/ieWSeOos1t3ep+RPIWQ2pyTYVbZltTbsb7NiwSi3AV+8KLWk7LxCnfZUetEM8ThnsSoGH38/nyAwFguJp8FjvlHtcWZuU4hPva0rHfr0UhOOJ/F6vS62FW7KzkmRll2HEc7oUq4fyi5T70Vl7YVIfsPHUCdHesf9Lk7WNVWO75JDkYbMI8TOW8JKVtLY9d6UJRITO8oKo0xS+o99Yy04iniGHAaGj88kEWgwv0OrHdY/nr76DOGNS59hXCGXzTKUvDl9iKpLSWYN1lxIeyywdNpTkhay74w2jFT6NS8qkjo5CxA1yfSYwp6AJIZNKIeEK5PJAW7ORgWgwp0VgzYpqovMrWxbu+DGZ6Lhie1RAqpzm8VUzKJOH3mCzWuTOLsN3VT/dv2eeYe9UjbR8YTBsLz7q60VN1sU51k+um1f8JxD5pPhbhSC8rRaB454tmh6YUWrJI3+GWY0qeWioj/tbkYITOkJaeuGt4JrJvHA+l0Gu7kY7XOaa05alMnRWVCXqFgLIwSY4uF59Ue5SU4QKuc/HamDxbr0x6csCetXGoP7Qn1Bk/J9DsynO/UD6iZ1Hyrz+jit0hDCwi/E9OjgKTbB3ZQKQ/0ZOvevfNHG0NK4Aj3Cp7NpRk07RT1i/S0EL93Ag8GRgKI9CfpajKyK6+Jj/PI1KO5/85VAwz2AwzP8FTBb075IxCXv6T9RVvWT2tUaqxDS92zrGUbWzUYk9mSs82pECH+fkqsDt93VW++4YsR/dHCYcQSYTO/KaBMDj9LSD/J/+z20Kq8XvZUAIHtm9hRPP3ItbuAu2Hm5lkPs92pd7kCxgRs0xOVBnZ13ccdA0aunrwv9SdqElJRC3g+oCu+nXyCgmXUs9yMjTMAIHfxZV+aPKcZeUBWt057Xo85Ks1Ir5gzEHCWqZEhrLZMuF11ziGtFQUds/EESajhagzcKsxamcSZxGth4UII+adPhQkUnx2WyN+4YWR+r3f8MnkyGFuR4zjzxJS8WsQYR5PTyRaD9ixa6Mh741nBHbzfjXHskGDq179xaRNrCIB1z1xRfWfjqw2pHc1zk9xlPpL8sQWAIuETZZhbnmL54rceXVNRvUiKrrqIkeogsl0XXb17ylNb0f4GA9Wd44vffEG8FSZGHEL2fbaTGRcSiCeA8PmA/f6Hz8HCS76fXUHwgwkzSwlI71ekZ7Fapmlk/KC+Hs8hUcw3N2LN5LhkVYyizYFl/uPeVP5lsoJHhhfWvvSWruCUW1ZcJOeuTbrDgywJ/qG07gZJplnTvLcYdNaH0KMYOYMGX+rB4NGPFmQsNaIwlWrfCezxre8zXBrsMT+edVLbLqN1BqB76JH4BvZTqUIMfGwPGEn+EnmTV86fPBaYbFL3DFEhjB45CewkXEAtJxk4/Ms2pPXnaRqdky0HOYdcUcE2zcXq4vaIvW2/v0nHFJH2XXe22ueDmq/18XGtELSq85j9X8q0tcNSSKJIX8FTuJF/Pf8j5PhqG2u+osvsLxYrvvfeVJL+4tkcXcr9JV7v0ERmj/X6fM3NC4j6dS1+9Umr2oPavqiAydTZPLMNRGY23LO9zAVDly7jD+70G5TPPLdhRIl4WxcYjLnM+SNcJ26FOrkrISUtPObIz5Zb3AG612krnpy15RMW+1cQjlnWFI6538qky9axd2oJmHIHP08KyP0ubGO+TQNOYuv2uh17yCIvR8VcStw7o1g0NM60sk+8Tq7YfIBJrtp53GkvzXH7OA0p8/n/u1satf/VJhtR1l8Wa6Gmaug7haSpaCaYQax6ta0mkutlb+eAOSG1aobM81D9A4iS1RRlzBBoVX6tU1S6WE2N9ORY6DfeLRC4l9Rvr5h95XDWB2mR1d4WFudpsgVYwiTwT31ljskD8ZyDOlm5DkGh9N/UB/0AI5Xvb8ZBmai2hQ4BWMqFwYnzxwB26YHSOv9WgY3JXnvoN+2R4rqGVh/LLDMtpFP+SpMGJNWvbIl5SOodbCczW2RKleksPoUeGEzrjtKHVdtZA+kfqO+rVx/iclCqwoopepvJpSTDjT+b9GWylGRF8EDbGlw6eUzmJM95Ovoz+kwLX3c2fTjFeYEsE7vUZm3mqdGJuKh2w9/QGSaqRHs99aScGOdDqkFcACoqdbBoQqqjamhH6Q9ng39JCg3lrGJwd50Qk9ovnqBTr8MME7Ps2wiVfygUmPoUBJJfJWX5Nda0nuncbFkA==")),Ir=new Set(Cr(Tr)),Nr=new Set(Cr(Tr)),Mr=function(t){let e=[];for(;;){let r=t();if(0==r)break;e.push(_r(r,t))}for(;;){let r=t()-1;if(r<0)break;e.push(Pr(r,t))}return function(t){const e={};for(let r=0;r<t.length;r++){const n=t[r];e[n[0]]=n[1]}return e}(br(e))}(Tr),Br=function(t){let e=Cr(t).sort((t,e)=>t-e);return function r(){let n=[];for(;;){let i=Cr(t,e);if(0==i.length)break;n.push({set:new Set(i),node:r()})}n.sort((t,e)=>e.set.size-t.set.size);let i=t(),o=i%3;i=i/3|0;let s=!!(1&i);return i>>=1,{branches:n,valid:o,fe0f:s,save:1==i,check:2==i}}()}(Tr);function Rr(t){return Ye(t)}function Fr(t){return t.filter(t=>65039!=t)}function Or(t){for(let e of t.split(".")){let t=Rr(e);try{for(let e=t.lastIndexOf(95)-1;e>=0;e--)if(95!==t[e])throw new Error("underscore only allowed at start");if(t.length>=4&&t.every(t=>t<128)&&45===t[2]&&45===t[3])throw new Error("invalid label extension")}catch(t){throw new Error(`Invalid label "${e}": ${t.message}`)}}return t}function Dr(t){return Or(function(t,e){let r=Rr(t).reverse(),n=[];for(;r.length;){let t=Ur(r);if(t){n.push(...e(t));continue}let i=r.pop();if(Ir.has(i)){n.push(i);continue}if(Nr.has(i))continue;let o=Mr[i];if(!o)throw new Error(`Disallowed codepoint: 0x${i.toString(16).toUpperCase()}`);n.push(...o)}return Or((i=String.fromCodePoint(...n),i.normalize("NFC")));var i}(t,Fr))}function Ur(t,e){var r;let n,i,o=Br,s=[],a=t.length;for(;a;){let e=t[--a];if(o=null===(r=o.branches.find(t=>t.set.has(e)))||void 0===r?void 0:r.node,!o)break;if(o.save)i=e;else if(o.check&&e===i)break;s.push(e),o.fe0f&&(s.push(65039),a>0&&65039==t[a-1]&&a--),o.valid&&(n=s.slice(),2==o.valid&&n.splice(1,1),t.length=a)}return n}const Lr=new g(gr),qr=new Uint8Array(32);function zr(t){if(0===t.length)throw new Error("invalid ENS name; empty component");return t}function Gr(t){const e=Ve(Dr(t)),r=[];if(0===t.length)return r;let n=0;for(let t=0;t<e.length;t++){46===e[t]&&(r.push(zr(e.slice(n,t))),n=t+1)}if(n>=e.length)throw new Error("invalid ENS name; empty component");return r.push(zr(e.slice(n))),r}function jr(t){"string"!=typeof t&&Lr.throwArgumentError("invalid ENS name; not a string","name",t);let e=qr;const r=Gr(t);for(;r.length;)e=te(S([e,te(r.pop())]));return T(e)}function Hr(t){return T(S(Gr(t).map(t=>{if(t.length>63)throw new Error("invalid DNS encoded entry; length exceeds 63 bytes");const e=new Uint8Array(t.length+1);return e.set(t,1),e[0]=e.length-1,e})))+"00"}qr.fill(0);function Kr(t){return"string"==typeof t&&(t=Ve(t)),te(S([Ve("Ethereum Signed Message:\n"),Ve(String(t.length)),t]))}var Wr=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const Vr=new g(gr),$r=new Uint8Array(32);$r.fill(0);const Jr=H.from(-1),Qr=H.from(0),Yr=H.from(1),Xr=H.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");const Zr=F(Yr.toHexString(),32),tn=F(Qr.toHexString(),32),en={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"},rn=["name","version","chainId","verifyingContract","salt"];function nn(t){return function(e){return"string"!=typeof e&&Vr.throwArgumentError(`invalid domain value for ${JSON.stringify(t)}`,`domain.${t}`,e),e}}const on={name:nn("name"),version:nn("version"),chainId:function(t){try{return H.from(t).toString()}catch(t){}return Vr.throwArgumentError('invalid domain value for "chainId"',"domain.chainId",t)},verifyingContract:function(t){try{return ge(t).toLowerCase()}catch(t){}return Vr.throwArgumentError('invalid domain value "verifyingContract"',"domain.verifyingContract",t)},salt:function(t){try{const e=k(t);if(32!==e.length)throw new Error("bad length");return T(e)}catch(t){}return Vr.throwArgumentError('invalid domain value "salt"',"domain.salt",t)}};function sn(t){{const e=t.match(/^(u?)int(\d*)$/);if(e){const r=""===e[1],n=parseInt(e[2]||"256");(n%8!=0||n>256||e[2]&&e[2]!==String(n))&&Vr.throwArgumentError("invalid numeric width","type",t);const i=Xr.mask(r?n-1:n),o=r?i.add(Yr).mul(Jr):Qr;return function(e){const r=H.from(e);return(r.lt(o)||r.gt(i))&&Vr.throwArgumentError(`value out-of-bounds for ${t}`,"value",e),F(r.toTwos(256).toHexString(),32)}}}{const e=t.match(/^bytes(\d+)$/);if(e){const r=parseInt(e[1]);return(0===r||r>32||e[1]!==String(r))&&Vr.throwArgumentError("invalid bytes width","type",t),function(e){return k(e).length!==r&&Vr.throwArgumentError(`invalid length for ${t}`,"value",e),function(t){const e=k(t),r=e.length%32;return r?M([e,$r.slice(r)]):T(e)}(e)}}}switch(t){case"address":return function(t){return F(ge(t),32)};case"bool":return function(t){return t?Zr:tn};case"bytes":return function(t){return te(t)};case"string":return function(t){return mr(t)}}return null}function an(t,e){return`${t}(${e.map(({name:t,type:e})=>e+" "+t).join(",")})`}class ln{constructor(t){ut(this,"types",Object.freeze(yt(t))),ut(this,"_encoderCache",{}),ut(this,"_types",{});const e={},r={},n={};Object.keys(t).forEach(t=>{e[t]={},r[t]=[],n[t]={}});for(const n in t){const i={};t[n].forEach(o=>{i[o.name]&&Vr.throwArgumentError(`duplicate variable name ${JSON.stringify(o.name)} in ${JSON.stringify(n)}`,"types",t),i[o.name]=!0;const s=o.type.match(/^([^\x5b]*)(\x5b|$)/)[1];s===n&&Vr.throwArgumentError(`circular type reference to ${JSON.stringify(s)}`,"types",t);sn(s)||(r[s]||Vr.throwArgumentError(`unknown type ${JSON.stringify(s)}`,"types",t),r[s].push(n),e[n][s]=!0)})}const i=Object.keys(r).filter(t=>0===r[t].length);0===i.length?Vr.throwArgumentError("missing primary type","types",t):i.length>1&&Vr.throwArgumentError(`ambiguous primary types or unused types: ${i.map(t=>JSON.stringify(t)).join(", ")}`,"types",t),ut(this,"primaryType",i[0]),function i(o,s){s[o]&&Vr.throwArgumentError(`circular type reference to ${JSON.stringify(o)}`,"types",t),s[o]=!0,Object.keys(e[o]).forEach(t=>{r[t]&&(i(t,s),Object.keys(s).forEach(e=>{n[e][t]=!0}))}),delete s[o]}(this.primaryType,{});for(const e in n){const r=Object.keys(n[e]);r.sort(),this._types[e]=an(e,t[e])+r.map(e=>an(e,t[e])).join("")}}getEncoder(t){let e=this._encoderCache[t];return e||(e=this._encoderCache[t]=this._getEncoder(t)),e}_getEncoder(t){{const e=sn(t);if(e)return e}const e=t.match(/^(.*)(\x5b(\d*)\x5d)$/);if(e){const t=e[1],r=this.getEncoder(t),n=parseInt(e[3]);return e=>{n>=0&&e.length!==n&&Vr.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",e);let i=e.map(r);return this._types[t]&&(i=i.map(te)),te(M(i))}}const r=this.types[t];if(r){const e=mr(this._types[t]);return t=>{const n=r.map(({name:e,type:r})=>{const n=this.getEncoder(r)(t[e]);return this._types[r]?te(n):n});return n.unshift(e),M(n)}}return Vr.throwArgumentError(`unknown type: ${t}`,"type",t)}encodeType(t){const e=this._types[t];return e||Vr.throwArgumentError(`unknown type: ${JSON.stringify(t)}`,"name",t),e}encodeData(t,e){return this.getEncoder(t)(e)}hashStruct(t,e){return te(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(sn(t))return r(t,e);const n=t.match(/^(.*)(\x5b(\d*)\x5d)$/);if(n){const t=n[1],i=parseInt(n[3]);return i>=0&&e.length!==i&&Vr.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",e),e.map(e=>this._visit(t,e,r))}const i=this.types[t];return i?i.reduce((t,{name:n,type:i})=>(t[n]=this._visit(i,e[n],r),t),{}):Vr.throwArgumentError(`unknown type: ${t}`,"type",t)}visit(t,e){return this._visit(this.primaryType,t,e)}static from(t){return new ln(t)}static getPrimaryType(t){return ln.from(t).primaryType}static hashStruct(t,e,r){return ln.from(e).hashStruct(t,r)}static hashDomain(t){const e=[];for(const r in t){const n=en[r];n||Vr.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(r)}`,"domain",t),e.push({name:r,type:n})}return e.sort((t,e)=>rn.indexOf(t.name)-rn.indexOf(e.name)),ln.hashStruct("EIP712Domain",{EIP712Domain:e},t)}static encode(t,e,r){return M(["0x1901",ln.hashDomain(t),ln.from(e).hash(r)])}static hash(t,e,r){return te(ln.encode(t,e,r))}static resolveNames(t,e,r,n){return Wr(this,void 0,void 0,function*(){t=pt(t);const i={};t.verifyingContract&&!_(t.verifyingContract,20)&&(i[t.verifyingContract]="0x");const o=ln.from(e);o.visit(r,(t,e)=>("address"!==t||_(e,20)||(i[e]="0x"),e));for(const t in i)i[t]=yield n(t);return t.verifyingContract&&i[t.verifyingContract]&&(t.verifyingContract=i[t.verifyingContract]),r=o.visit(r,(t,e)=>"address"===t&&i[e]?i[e]:e),{domain:t,value:r}})}static getPayload(t,e,r){ln.hashDomain(t);const n={},i=[];rn.forEach(e=>{const r=t[e];null!=r&&(n[e]=on[e](r),i.push({name:e,type:en[e]}))});const o=ln.from(e),s=pt(e);return s.EIP712Domain?Vr.throwArgumentError("types must not contain EIP712Domain type","types.EIP712Domain",e):s.EIP712Domain=i,o.encode(r),{types:s,domain:n,primaryType:o.primaryType,message:o.visit(r,(t,e)=>{if(t.match(/^bytes(\d*)/))return T(k(e));if(t.match(/^u?int/))return H.from(e).toString();switch(t){case"address":return e.toLowerCase();case"bool":return!!e;case"string":return"string"!=typeof e&&Vr.throwArgumentError("invalid string","value",e),e}return Vr.throwArgumentError("unsupported type","type",t)})}}}const cn=new g(bt);class un extends wt{}class hn extends wt{}class dn extends wt{}class fn extends wt{static isIndexed(t){return!(!t||!t._isIndexed)}}const pn={"0x08c379a0":{signature:"Error(string)",name:"Error",inputs:["string"],reason:!0},"0x4e487b71":{signature:"Panic(uint256)",name:"Panic",inputs:["uint256"]}};function mn(t,e){const r=new Error(`deferred error during ABI decoding triggered accessing ${t}`);return r.error=e,r}class gn{constructor(t){let e=[];e="string"==typeof t?JSON.parse(t):t,ut(this,"fragments",e.map(t=>Nt.from(t)).filter(t=>null!=t)),ut(this,"_abiCoder",ht(new.target,"getAbiCoder")()),ut(this,"functions",{}),ut(this,"errors",{}),ut(this,"events",{}),ut(this,"structs",{}),this.fragments.forEach(t=>{let e=null;switch(t.type){case"constructor":return this.deploy?void cn.warn("duplicate definition - constructor"):void ut(this,"deploy",t);case"function":e=this.functions;break;case"event":e=this.events;break;case"error":e=this.errors;break;default:return}let r=t.format();e[r]?cn.warn("duplicate definition - "+r):e[r]=t}),this.deploy||ut(this,"deploy",Ot.from({payable:!1,type:"constructor"})),ut(this,"_isInterface",!0)}format(t){t||(t=_t.full),t===_t.sighash&&cn.throwArgumentError("interface does not support formatting sighash","format",t);const e=this.fragments.map(e=>e.format(t));return t===_t.json?JSON.stringify(e.map(t=>JSON.parse(t))):e}static getAbiCoder(){return pr}static getAddress(t){return ge(t)}static getSighash(t){return N(mr(t.format()),0,4)}static getEventTopic(t){return mr(t.format())}getFunction(t){if(_(t)){for(const e in this.functions)if(t===this.getSighash(e))return this.functions[e];cn.throwArgumentError("no matching function","sighash",t)}if(-1===t.indexOf("(")){const e=t.trim(),r=Object.keys(this.functions).filter(t=>t.split("(")[0]===e);return 0===r.length?cn.throwArgumentError("no matching function","name",e):r.length>1&&cn.throwArgumentError("multiple matching functions","name",e),this.functions[r[0]]}const e=this.functions[Dt.fromString(t).format()];return e||cn.throwArgumentError("no matching function","signature",t),e}getEvent(t){if(_(t)){const e=t.toLowerCase();for(const t in this.events)if(e===this.getEventTopic(t))return this.events[t];cn.throwArgumentError("no matching event","topichash",e)}if(-1===t.indexOf("(")){const e=t.trim(),r=Object.keys(this.events).filter(t=>t.split("(")[0]===e);return 0===r.length?cn.throwArgumentError("no matching event","name",e):r.length>1&&cn.throwArgumentError("multiple matching events","name",e),this.events[r[0]]}const e=this.events[Mt.fromString(t).format()];return e||cn.throwArgumentError("no matching event","signature",t),e}getError(t){if(_(t)){const e=ht(this.constructor,"getSighash");for(const r in this.errors){if(t===e(this.errors[r]))return this.errors[r]}cn.throwArgumentError("no matching error","sighash",t)}if(-1===t.indexOf("(")){const e=t.trim(),r=Object.keys(this.errors).filter(t=>t.split("(")[0]===e);return 0===r.length?cn.throwArgumentError("no matching error","name",e):r.length>1&&cn.throwArgumentError("multiple matching errors","name",e),this.errors[r[0]]}const e=this.errors[Dt.fromString(t).format()];return e||cn.throwArgumentError("no matching error","signature",t),e}getSighash(t){if("string"==typeof t)try{t=this.getFunction(t)}catch(e){try{t=this.getError(t)}catch(t){throw e}}return ht(this.constructor,"getSighash")(t)}getEventTopic(t){return"string"==typeof t&&(t=this.getEvent(t)),ht(this.constructor,"getEventTopic")(t)}_decodeParams(t,e){return this._abiCoder.decode(t,e)}_encodeParams(t,e){return this._abiCoder.encode(t,e)}encodeDeploy(t){return this._encodeParams(this.deploy.inputs,t||[])}decodeErrorResult(t,e){"string"==typeof t&&(t=this.getError(t));const r=k(e);return T(r.slice(0,4))!==this.getSighash(t)&&cn.throwArgumentError(`data signature does not match error ${t.name}.`,"data",T(r)),this._decodeParams(t.inputs,r.slice(4))}encodeErrorResult(t,e){return"string"==typeof t&&(t=this.getError(t)),T(S([this.getSighash(t),this._encodeParams(t.inputs,e||[])]))}decodeFunctionData(t,e){"string"==typeof t&&(t=this.getFunction(t));const r=k(e);return T(r.slice(0,4))!==this.getSighash(t)&&cn.throwArgumentError(`data signature does not match function ${t.name}.`,"data",T(r)),this._decodeParams(t.inputs,r.slice(4))}encodeFunctionData(t,e){return"string"==typeof t&&(t=this.getFunction(t)),T(S([this.getSighash(t),this._encodeParams(t.inputs,e||[])]))}decodeFunctionResult(t,e){"string"==typeof t&&(t=this.getFunction(t));let r=k(e),n=null,i="",o=null,s=null,a=null;switch(r.length%this._abiCoder._getWordSize()){case 0:try{return this._abiCoder.decode(t.outputs,r)}catch(t){}break;case 4:{const t=T(r.slice(0,4)),e=pn[t];if(e)o=this._abiCoder.decode(e.inputs,r.slice(4)),s=e.name,a=e.signature,e.reason&&(n=o[0]),"Error"===s?i=`; VM Exception while processing transaction: reverted with reason string ${JSON.stringify(o[0])}`:"Panic"===s&&(i=`; VM Exception while processing transaction: reverted with panic code ${o[0]}`);else try{const e=this.getError(t);o=this._abiCoder.decode(e.inputs,r.slice(4)),s=e.name,a=e.format()}catch(t){}break}}return cn.throwError("call revert exception"+i,g.errors.CALL_EXCEPTION,{method:t.format(),data:T(e),errorArgs:o,errorName:s,errorSignature:a,reason:n})}encodeFunctionResult(t,e){return"string"==typeof t&&(t=this.getFunction(t)),T(this._abiCoder.encode(t.outputs,e||[]))}encodeFilterTopics(t,e){"string"==typeof t&&(t=this.getEvent(t)),e.length>t.inputs.length&&cn.throwError("too many arguments for "+t.format(),g.errors.UNEXPECTED_ARGUMENT,{argument:"values",value:e});let r=[];t.anonymous||r.push(this.getEventTopic(t));const n=(t,e)=>"string"===t.type?mr(e):"bytes"===t.type?te(T(e)):("bool"===t.type&&"boolean"==typeof e&&(e=e?"0x01":"0x00"),t.type.match(/^u?int/)&&(e=H.from(e).toHexString()),"address"===t.type&&this._abiCoder.encode(["address"],[e]),F(T(e),32));for(e.forEach((e,i)=>{let o=t.inputs[i];o.indexed?null==e?r.push(null):"array"===o.baseType||"tuple"===o.baseType?cn.throwArgumentError("filtering with tuples or arrays not supported","contract."+o.name,e):Array.isArray(e)?r.push(e.map(t=>n(o,t))):r.push(n(o,e)):null!=e&&cn.throwArgumentError("cannot filter non-indexed parameters; must be null","contract."+o.name,e)});r.length&&null===r[r.length-1];)r.pop();return r}encodeEventLog(t,e){"string"==typeof t&&(t=this.getEvent(t));const r=[],n=[],i=[];return t.anonymous||r.push(this.getEventTopic(t)),e.length!==t.inputs.length&&cn.throwArgumentError("event arguments/values mismatch","values",e),t.inputs.forEach((t,o)=>{const s=e[o];if(t.indexed)if("string"===t.type)r.push(mr(s));else if("bytes"===t.type)r.push(te(s));else{if("tuple"===t.baseType||"array"===t.baseType)throw new Error("not implemented");r.push(this._abiCoder.encode([t.type],[s]))}else n.push(t),i.push(s)}),{data:this._abiCoder.encode(n,i),topics:r}}decodeEventLog(t,e,r){if("string"==typeof t&&(t=this.getEvent(t)),null!=r&&!t.anonymous){let e=this.getEventTopic(t);_(r[0],32)&&r[0].toLowerCase()===e||cn.throwError("fragment/topic mismatch",g.errors.INVALID_ARGUMENT,{argument:"topics[0]",expected:e,value:r[0]}),r=r.slice(1)}let n=[],i=[],o=[];t.inputs.forEach((t,e)=>{t.indexed?"string"===t.type||"bytes"===t.type||"tuple"===t.baseType||"array"===t.baseType?(n.push(Tt.fromObject({type:"bytes32",name:t.name})),o.push(!0)):(n.push(t),o.push(!1)):(i.push(t),o.push(!1))});let s=null!=r?this._abiCoder.decode(n,S(r)):null,a=this._abiCoder.decode(i,e,!0),l=[],c=0,u=0;t.inputs.forEach((t,e)=>{if(t.indexed)if(null==s)l[e]=new fn({_isIndexed:!0,hash:null});else if(o[e])l[e]=new fn({_isIndexed:!0,hash:s[u++]});else try{l[e]=s[u++]}catch(t){l[e]=t}else try{l[e]=a[c++]}catch(t){l[e]=t}if(t.name&&null==l[t.name]){const r=l[e];r instanceof Error?Object.defineProperty(l,t.name,{enumerable:!0,get:()=>{throw mn(`property ${JSON.stringify(t.name)}`,r)}}):l[t.name]=r}});for(let t=0;t<l.length;t++){const e=l[t];e instanceof Error&&Object.defineProperty(l,t,{enumerable:!0,get:()=>{throw mn(`index ${t}`,e)}})}return Object.freeze(l)}parseTransaction(t){let e=this.getFunction(t.data.substring(0,10).toLowerCase());return e?new hn({args:this._abiCoder.decode(e.inputs,"0x"+t.data.substring(10)),functionFragment:e,name:e.name,signature:e.format(),sighash:this.getSighash(e),value:H.from(t.value||"0")}):null}parseLog(t){let e=this.getEvent(t.topics[0]);return!e||e.anonymous?null:new un({eventFragment:e,name:e.name,signature:e.format(),topic:this.getEventTopic(e),args:this.decodeEventLog(e,t.data,t.topics)})}parseError(t){const e=T(t);let r=this.getError(e.substring(0,10).toLowerCase());return r?new dn({args:this._abiCoder.decode(r.inputs,"0x"+e.substring(10)),errorFragment:r,name:r.name,signature:r.format(),sighash:this.getSighash(r)}):null}static isInterface(t){return!(!t||!t._isInterface)}}var vn=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const yn=new g("abstract-provider/5.8.0");class wn extends wt{static isForkEvent(t){return!(!t||!t._isForkEvent)}}class bn{constructor(){yn.checkAbstract(new.target,bn),ut(this,"_isProvider",!0)}getFeeData(){return vn(this,void 0,void 0,function*(){const{block:t,gasPrice:e}=yield dt({block:this.getBlock("latest"),gasPrice:this.getGasPrice().catch(t=>null)});let r=null,n=null,i=null;return t&&t.baseFeePerGas&&(r=t.baseFeePerGas,i=H.from("1500000000"),n=t.baseFeePerGas.mul(2).add(i)),{lastBaseFeePerGas:r,maxFeePerGas:n,maxPriorityFeePerGas:i,gasPrice:e}})}addListener(t,e){return this.on(t,e)}removeListener(t,e){return this.off(t,e)}static isProvider(t){return!(!t||!t._isProvider)}}var En=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const An=new g("abstract-signer/5.8.0"),kn=["accessList","ccipReadEnabled","chainId","customData","data","from","gasLimit","gasPrice","maxFeePerGas","maxPriorityFeePerGas","nonce","to","type","value"],Sn=[g.errors.INSUFFICIENT_FUNDS,g.errors.NONCE_EXPIRED,g.errors.REPLACEMENT_UNDERPRICED];class Cn{constructor(){An.checkAbstract(new.target,Cn),ut(this,"_isSigner",!0)}getBalance(t){return En(this,void 0,void 0,function*(){return this._checkProvider("getBalance"),yield this.provider.getBalance(this.getAddress(),t)})}getTransactionCount(t){return En(this,void 0,void 0,function*(){return this._checkProvider("getTransactionCount"),yield this.provider.getTransactionCount(this.getAddress(),t)})}estimateGas(t){return En(this,void 0,void 0,function*(){this._checkProvider("estimateGas");const e=yield dt(this.checkTransaction(t));return yield this.provider.estimateGas(e)})}call(t,e){return En(this,void 0,void 0,function*(){this._checkProvider("call");const r=yield dt(this.checkTransaction(t));return yield this.provider.call(r,e)})}sendTransaction(t){return En(this,void 0,void 0,function*(){this._checkProvider("sendTransaction");const e=yield this.populateTransaction(t),r=yield this.signTransaction(e);return yield this.provider.sendTransaction(r)})}getChainId(){return En(this,void 0,void 0,function*(){this._checkProvider("getChainId");return(yield this.provider.getNetwork()).chainId})}getGasPrice(){return En(this,void 0,void 0,function*(){return this._checkProvider("getGasPrice"),yield this.provider.getGasPrice()})}getFeeData(){return En(this,void 0,void 0,function*(){return this._checkProvider("getFeeData"),yield this.provider.getFeeData()})}resolveName(t){return En(this,void 0,void 0,function*(){return this._checkProvider("resolveName"),yield this.provider.resolveName(t)})}checkTransaction(t){for(const e in t)-1===kn.indexOf(e)&&An.throwArgumentError("invalid transaction key: "+e,"transaction",t);const e=pt(t);return null==e.from?e.from=this.getAddress():e.from=Promise.all([Promise.resolve(e.from),this.getAddress()]).then(e=>(e[0].toLowerCase()!==e[1].toLowerCase()&&An.throwArgumentError("from address mismatch","transaction",t),e[0])),e}populateTransaction(t){return En(this,void 0,void 0,function*(){const e=yield dt(this.checkTransaction(t));null!=e.to&&(e.to=Promise.resolve(e.to).then(t=>En(this,void 0,void 0,function*(){if(null==t)return null;const e=yield this.resolveName(t);return null==e&&An.throwArgumentError("provided ENS name resolves to null","tx.to",t),e})),e.to.catch(t=>{}));const r=null!=e.maxFeePerGas||null!=e.maxPriorityFeePerGas;if(null==e.gasPrice||2!==e.type&&!r?0!==e.type&&1!==e.type||!r||An.throwArgumentError("pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas","transaction",t):An.throwArgumentError("eip-1559 transaction do not support gasPrice","transaction",t),2!==e.type&&null!=e.type||null==e.maxFeePerGas||null==e.maxPriorityFeePerGas)if(0===e.type||1===e.type)null==e.gasPrice&&(e.gasPrice=this.getGasPrice());else{const t=yield this.getFeeData();if(null==e.type)if(null!=t.maxFeePerGas&&null!=t.maxPriorityFeePerGas)if(e.type=2,null!=e.gasPrice){const t=e.gasPrice;delete e.gasPrice,e.maxFeePerGas=t,e.maxPriorityFeePerGas=t}else null==e.maxFeePerGas&&(e.maxFeePerGas=t.maxFeePerGas),null==e.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=t.maxPriorityFeePerGas);else null!=t.gasPrice?(r&&An.throwError("network does not support EIP-1559",g.errors.UNSUPPORTED_OPERATION,{operation:"populateTransaction"}),null==e.gasPrice&&(e.gasPrice=t.gasPrice),e.type=0):An.throwError("failed to get consistent fee data",g.errors.UNSUPPORTED_OPERATION,{operation:"signer.getFeeData"});else 2===e.type&&(null==e.maxFeePerGas&&(e.maxFeePerGas=t.maxFeePerGas),null==e.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=t.maxPriorityFeePerGas))}else e.type=2;return null==e.nonce&&(e.nonce=this.getTransactionCount("pending")),null==e.gasLimit&&(e.gasLimit=this.estimateGas(e).catch(t=>{if(Sn.indexOf(t.code)>=0)throw t;return An.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",g.errors.UNPREDICTABLE_GAS_LIMIT,{error:t,tx:e})})),null==e.chainId?e.chainId=this.getChainId():e.chainId=Promise.all([Promise.resolve(e.chainId),this.getChainId()]).then(e=>(0!==e[1]&&e[0]!==e[1]&&An.throwArgumentError("chainId address mismatch","transaction",t),e[0])),yield dt(e)})}_checkProvider(t){this.provider||An.throwError("missing provider",g.errors.UNSUPPORTED_OPERATION,{operation:t||"_checkProvider"})}static isSigner(t){return!(!t||!t._isSigner)}}class xn extends Cn{constructor(t,e){super(),ut(this,"address",t),ut(this,"provider",e||null)}getAddress(){return Promise.resolve(this.address)}_fail(t,e){return Promise.resolve().then(()=>{An.throwError(t,g.errors.UNSUPPORTED_OPERATION,{operation:e})})}signMessage(t){return this._fail("VoidSigner cannot sign messages","signMessage")}signTransaction(t){return this._fail("VoidSigner cannot sign transactions","signTransaction")}_signTypedData(t,e,r){return this._fail("VoidSigner cannot sign typed data","signTypedData")}connect(t){return new xn(this.address,t)}}var _n,Pn,Tn={},In={};function Nn(){if(Pn)return _n;function t(t,e){if(!t)throw new Error(e||"Assertion failed")}return Pn=1,_n=t,t.equal=function(t,e,r){if(t!=e)throw new Error(r||"Assertion failed: "+t+" != "+e)},_n}var Mn,Bn,Rn,Fn={exports:{}},On={exports:{}};function Dn(){if(Bn)return Fn.exports;Bn=1;try{var t=require("util");if("function"!=typeof t.inherits)throw"";Fn.exports=t.inherits}catch(t){Fn.exports=(Mn||(Mn=1,"function"==typeof Object.create?On.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:On.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}),On.exports)}return Fn.exports}function Un(){if(Rn)return In;Rn=1;var t=Nn(),e=Dn();function r(t,e){return 55296==(64512&t.charCodeAt(e))&&(!(e<0||e+1>=t.length)&&56320==(64512&t.charCodeAt(e+1)))}function n(t){return(t>>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24)>>>0}function i(t){return 1===t.length?"0"+t:t}function o(t){return 7===t.length?"0"+t:6===t.length?"00"+t:5===t.length?"000"+t:4===t.length?"0000"+t:3===t.length?"00000"+t:2===t.length?"000000"+t:1===t.length?"0000000"+t:t}return In.inherits=e,In.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var n=[];if("string"==typeof t)if(e){if("hex"===e)for((t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t),o=0;o<t.length;o+=2)n.push(parseInt(t[o]+t[o+1],16))}else for(var i=0,o=0;o<t.length;o++){var s=t.charCodeAt(o);s<128?n[i++]=s:s<2048?(n[i++]=s>>6|192,n[i++]=63&s|128):r(t,o)?(s=65536+((1023&s)<<10)+(1023&t.charCodeAt(++o)),n[i++]=s>>18|240,n[i++]=s>>12&63|128,n[i++]=s>>6&63|128,n[i++]=63&s|128):(n[i++]=s>>12|224,n[i++]=s>>6&63|128,n[i++]=63&s|128)}else for(o=0;o<t.length;o++)n[o]=0|t[o];return n},In.toHex=function(t){for(var e="",r=0;r<t.length;r++)e+=i(t[r].toString(16));return e},In.htonl=n,In.toHex32=function(t,e){for(var r="",i=0;i<t.length;i++){var s=t[i];"little"===e&&(s=n(s)),r+=o(s.toString(16))}return r},In.zero2=i,In.zero8=o,In.join32=function(e,r,n,i){var o=n-r;t(o%4==0);for(var s=new Array(o/4),a=0,l=r;a<s.length;a++,l+=4){var c;c="big"===i?e[l]<<24|e[l+1]<<16|e[l+2]<<8|e[l+3]:e[l+3]<<24|e[l+2]<<16|e[l+1]<<8|e[l],s[a]=c>>>0}return s},In.split32=function(t,e){for(var r=new Array(4*t.length),n=0,i=0;n<t.length;n++,i+=4){var o=t[n];"big"===e?(r[i]=o>>>24,r[i+1]=o>>>16&255,r[i+2]=o>>>8&255,r[i+3]=255&o):(r[i+3]=o>>>24,r[i+2]=o>>>16&255,r[i+1]=o>>>8&255,r[i]=255&o)}return r},In.rotr32=function(t,e){return t>>>e|t<<32-e},In.rotl32=function(t,e){return t<<e|t>>>32-e},In.sum32=function(t,e){return t+e>>>0},In.sum32_3=function(t,e,r){return t+e+r>>>0},In.sum32_4=function(t,e,r,n){return t+e+r+n>>>0},In.sum32_5=function(t,e,r,n,i){return t+e+r+n+i>>>0},In.sum64=function(t,e,r,n){var i=t[e],o=n+t[e+1]>>>0,s=(o<n?1:0)+r+i;t[e]=s>>>0,t[e+1]=o},In.sum64_hi=function(t,e,r,n){return(e+n>>>0<e?1:0)+t+r>>>0},In.sum64_lo=function(t,e,r,n){return e+n>>>0},In.sum64_4_hi=function(t,e,r,n,i,o,s,a){var l=0,c=e;return l+=(c=c+n>>>0)<e?1:0,l+=(c=c+o>>>0)<o?1:0,t+r+i+s+(l+=(c=c+a>>>0)<a?1:0)>>>0},In.sum64_4_lo=function(t,e,r,n,i,o,s,a){return e+n+o+a>>>0},In.sum64_5_hi=function(t,e,r,n,i,o,s,a,l,c){var u=0,h=e;return u+=(h=h+n>>>0)<e?1:0,u+=(h=h+o>>>0)<o?1:0,u+=(h=h+a>>>0)<a?1:0,t+r+i+s+l+(u+=(h=h+c>>>0)<c?1:0)>>>0},In.sum64_5_lo=function(t,e,r,n,i,o,s,a,l,c){return e+n+o+a+c>>>0},In.rotr64_hi=function(t,e,r){return(e<<32-r|t>>>r)>>>0},In.rotr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0},In.shr64_hi=function(t,e,r){return t>>>r},In.shr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0},In}var Ln,qn={};function zn(){if(Ln)return qn;Ln=1;var t=Un(),e=Nn();function r(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}return qn.BlockHash=r,r.prototype.update=function(e,r){if(e=t.toArray(e,r),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){var n=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-n,e.length),0===this.pending.length&&(this.pending=null),e=t.join32(e,0,e.length-n,this.endian);for(var i=0;i<e.length;i+=this._delta32)this._update(e,i,i+this._delta32)}return this},r.prototype.digest=function(t){return this.update(this._pad()),e(null===this.pending),this._digest(t)},r.prototype._pad=function(){var t=this.pendingTotal,e=this._delta8,r=e-(t+this.padLength)%e,n=new Array(r+this.padLength);n[0]=128;for(var i=1;i<r;i++)n[i]=0;if(t<<=3,"big"===this.endian){for(var o=8;o<this.padLength;o++)n[i++]=0;n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=t>>>24&255,n[i++]=t>>>16&255,n[i++]=t>>>8&255,n[i++]=255&t}else for(n[i++]=255&t,n[i++]=t>>>8&255,n[i++]=t>>>16&255,n[i++]=t>>>24&255,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,o=8;o<this.padLength;o++)n[i++]=0;return n},qn}var Gn,jn,Hn,Kn,Wn,Vn,$n,Jn,Qn,Yn,Xn,Zn,ti={},ei={};function ri(){if(Gn)return ei;Gn=1;var t=Un().rotr32;function e(t,e,r){return t&e^~t&r}function r(t,e,r){return t&e^t&r^e&r}function n(t,e,r){return t^e^r}return ei.ft_1=function(t,i,o,s){return 0===t?e(i,o,s):1===t||3===t?n(i,o,s):2===t?r(i,o,s):void 0},ei.ch32=e,ei.maj32=r,ei.p32=n,ei.s0_256=function(e){return t(e,2)^t(e,13)^t(e,22)},ei.s1_256=function(e){return t(e,6)^t(e,11)^t(e,25)},ei.g0_256=function(e){return t(e,7)^t(e,18)^e>>>3},ei.g1_256=function(e){return t(e,17)^t(e,19)^e>>>10},ei}function ni(){if(Wn)return Kn;Wn=1;var t=Un(),e=zn(),r=ri(),n=Nn(),i=t.sum32,o=t.sum32_4,s=t.sum32_5,a=r.ch32,l=r.maj32,c=r.s0_256,u=r.s1_256,h=r.g0_256,d=r.g1_256,f=e.BlockHash,p=[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];function m(){if(!(this instanceof m))return new m;f.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=p,this.W=new Array(64)}return t.inherits(m,f),Kn=m,m.blockSize=512,m.outSize=256,m.hmacStrength=192,m.padLength=64,m.prototype._update=function(t,e){for(var r=this.W,f=0;f<16;f++)r[f]=t[e+f];for(;f<r.length;f++)r[f]=o(d(r[f-2]),r[f-7],h(r[f-15]),r[f-16]);var p=this.h[0],m=this.h[1],g=this.h[2],v=this.h[3],y=this.h[4],w=this.h[5],b=this.h[6],E=this.h[7];for(n(this.k.length===r.length),f=0;f<r.length;f++){var A=s(E,u(y),a(y,w,b),this.k[f],r[f]),k=i(c(p),l(p,m,g));E=b,b=w,w=y,y=i(v,A),v=g,g=m,m=p,p=i(A,k)}this.h[0]=i(this.h[0],p),this.h[1]=i(this.h[1],m),this.h[2]=i(this.h[2],g),this.h[3]=i(this.h[3],v),this.h[4]=i(this.h[4],y),this.h[5]=i(this.h[5],w),this.h[6]=i(this.h[6],b),this.h[7]=i(this.h[7],E)},m.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"big"):t.split32(this.h,"big")},Kn}function ii(){if(Qn)return Jn;Qn=1;var t=Un(),e=zn(),r=Nn(),n=t.rotr64_hi,i=t.rotr64_lo,o=t.shr64_hi,s=t.shr64_lo,a=t.sum64,l=t.sum64_hi,c=t.sum64_lo,u=t.sum64_4_hi,h=t.sum64_4_lo,d=t.sum64_5_hi,f=t.sum64_5_lo,p=e.BlockHash,m=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function g(){if(!(this instanceof g))return new g;p.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=m,this.W=new Array(160)}function v(t,e,r,n,i){var o=t&r^~t&i;return o<0&&(o+=4294967296),o}function y(t,e,r,n,i,o){var s=e&n^~e&o;return s<0&&(s+=4294967296),s}function w(t,e,r,n,i){var o=t&r^t&i^r&i;return o<0&&(o+=4294967296),o}function b(t,e,r,n,i,o){var s=e&n^e&o^n&o;return s<0&&(s+=4294967296),s}function E(t,e){var r=n(t,e,28)^n(e,t,2)^n(e,t,7);return r<0&&(r+=4294967296),r}function A(t,e){var r=i(t,e,28)^i(e,t,2)^i(e,t,7);return r<0&&(r+=4294967296),r}function k(t,e){var r=n(t,e,14)^n(t,e,18)^n(e,t,9);return r<0&&(r+=4294967296),r}function S(t,e){var r=i(t,e,14)^i(t,e,18)^i(e,t,9);return r<0&&(r+=4294967296),r}function C(t,e){var r=n(t,e,1)^n(t,e,8)^o(t,e,7);return r<0&&(r+=4294967296),r}function x(t,e){var r=i(t,e,1)^i(t,e,8)^s(t,e,7);return r<0&&(r+=4294967296),r}function _(t,e){var r=n(t,e,19)^n(e,t,29)^o(t,e,6);return r<0&&(r+=4294967296),r}function P(t,e){var r=i(t,e,19)^i(e,t,29)^s(t,e,6);return r<0&&(r+=4294967296),r}return t.inherits(g,p),Jn=g,g.blockSize=1024,g.outSize=512,g.hmacStrength=192,g.padLength=128,g.prototype._prepareBlock=function(t,e){for(var r=this.W,n=0;n<32;n++)r[n]=t[e+n];for(;n<r.length;n+=2){var i=_(r[n-4],r[n-3]),o=P(r[n-4],r[n-3]),s=r[n-14],a=r[n-13],l=C(r[n-30],r[n-29]),c=x(r[n-30],r[n-29]),d=r[n-32],f=r[n-31];r[n]=u(i,o,s,a,l,c,d,f),r[n+1]=h(i,o,s,a,l,c,d,f)}},g.prototype._update=function(t,e){this._prepareBlock(t,e);var n=this.W,i=this.h[0],o=this.h[1],s=this.h[2],u=this.h[3],h=this.h[4],p=this.h[5],m=this.h[6],g=this.h[7],C=this.h[8],x=this.h[9],_=this.h[10],P=this.h[11],T=this.h[12],I=this.h[13],N=this.h[14],M=this.h[15];r(this.k.length===n.length);for(var B=0;B<n.length;B+=2){var R=N,F=M,O=k(C,x),D=S(C,x),U=v(C,x,_,P,T),L=y(C,x,_,P,T,I),q=this.k[B],z=this.k[B+1],G=n[B],j=n[B+1],H=d(R,F,O,D,U,L,q,z,G,j),K=f(R,F,O,D,U,L,q,z,G,j);R=E(i,o),F=A(i,o),O=w(i,o,s,u,h),D=b(i,o,s,u,h,p);var W=l(R,F,O,D),V=c(R,F,O,D);N=T,M=I,T=_,I=P,_=C,P=x,C=l(m,g,H,K),x=c(g,g,H,K),m=h,g=p,h=s,p=u,s=i,u=o,i=l(H,K,W,V),o=c(H,K,W,V)}a(this.h,0,i,o),a(this.h,2,s,u),a(this.h,4,h,p),a(this.h,6,m,g),a(this.h,8,C,x),a(this.h,10,_,P),a(this.h,12,T,I),a(this.h,14,N,M)},g.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"big"):t.split32(this.h,"big")},Jn}function oi(){return Zn||(Zn=1,ti.sha1=function(){if(Hn)return jn;Hn=1;var t=Un(),e=zn(),r=ri(),n=t.rotl32,i=t.sum32,o=t.sum32_5,s=r.ft_1,a=e.BlockHash,l=[1518500249,1859775393,2400959708,3395469782];function c(){if(!(this instanceof c))return new c;a.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}return t.inherits(c,a),jn=c,c.blockSize=512,c.outSize=160,c.hmacStrength=80,c.padLength=64,c.prototype._update=function(t,e){for(var r=this.W,a=0;a<16;a++)r[a]=t[e+a];for(;a<r.length;a++)r[a]=n(r[a-3]^r[a-8]^r[a-14]^r[a-16],1);var c=this.h[0],u=this.h[1],h=this.h[2],d=this.h[3],f=this.h[4];for(a=0;a<r.length;a++){var p=~~(a/20),m=o(n(c,5),s(p,u,h,d),f,r[a],l[p]);f=d,d=h,h=n(u,30),u=c,c=m}this.h[0]=i(this.h[0],c),this.h[1]=i(this.h[1],u),this.h[2]=i(this.h[2],h),this.h[3]=i(this.h[3],d),this.h[4]=i(this.h[4],f)},c.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"big"):t.split32(this.h,"big")},jn}(),ti.sha224=function(){if($n)return Vn;$n=1;var t=Un(),e=ni();function r(){if(!(this instanceof r))return new r;e.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}return t.inherits(r,e),Vn=r,r.blockSize=512,r.outSize=224,r.hmacStrength=192,r.padLength=64,r.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h.slice(0,7),"big"):t.split32(this.h.slice(0,7),"big")},Vn}(),ti.sha256=ni(),ti.sha384=function(){if(Xn)return Yn;Xn=1;var t=Un(),e=ii();function r(){if(!(this instanceof r))return new r;e.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}return t.inherits(r,e),Yn=r,r.blockSize=1024,r.outSize=384,r.hmacStrength=192,r.padLength=128,r.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h.slice(0,12),"big"):t.split32(this.h.slice(0,12),"big")},Yn}(),ti.sha512=ii()),ti}var si,ai,li,ci,ui={};var hi=(ci||(ci=1,function(){var t=Tn;t.utils=Un(),t.common=zn(),t.sha=oi(),t.ripemd=function(){if(si)return ui;si=1;var t=Un(),e=zn(),r=t.rotl32,n=t.sum32,i=t.sum32_3,o=t.sum32_4,s=e.BlockHash;function a(){if(!(this instanceof a))return new a;s.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function l(t,e,r,n){return t<=15?e^r^n:t<=31?e&r|~e&n:t<=47?(e|~r)^n:t<=63?e&n|r&~n:e^(r|~n)}function c(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function u(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}t.inherits(a,s),ui.ripemd160=a,a.blockSize=512,a.outSize=160,a.hmacStrength=192,a.padLength=64,a.prototype._update=function(t,e){for(var s=this.h[0],a=this.h[1],m=this.h[2],g=this.h[3],v=this.h[4],y=s,w=a,b=m,E=g,A=v,k=0;k<80;k++){var S=n(r(o(s,l(k,a,m,g),t[h[k]+e],c(k)),f[k]),v);s=v,v=g,g=r(m,10),m=a,a=S,S=n(r(o(y,l(79-k,w,b,E),t[d[k]+e],u(k)),p[k]),A),y=A,A=E,E=r(b,10),b=w,w=S}S=i(this.h[1],m,E),this.h[1]=i(this.h[2],g,A),this.h[2]=i(this.h[3],v,y),this.h[3]=i(this.h[4],s,w),this.h[4]=i(this.h[0],a,b),this.h[0]=S},a.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"little"):t.split32(this.h,"little")};var h=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],d=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],f=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],p=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11];return ui}(),t.hmac=function(){if(li)return ai;li=1;var t=Un(),e=Nn();function r(e,n,i){if(!(this instanceof r))return new r(e,n,i);this.Hash=e,this.blockSize=e.blockSize/8,this.outSize=e.outSize/8,this.inner=null,this.outer=null,this._init(t.toArray(n,i))}return ai=r,r.prototype._init=function(t){t.length>this.blockSize&&(t=(new this.Hash).update(t).digest()),e(t.length<=this.blockSize);for(var r=t.length;r<this.blockSize;r++)t.push(0);for(r=0;r<t.length;r++)t[r]^=54;for(this.inner=(new this.Hash).update(t),r=0;r<t.length;r++)t[r]^=106;this.outer=(new this.Hash).update(t)},r.prototype.update=function(t,e){return this.inner.update(t,e),this},r.prototype.digest=function(t){return this.outer.update(this.inner.digest()),this.outer.digest(t)},ai}(),t.sha1=t.sha.sha1,t.sha256=t.sha.sha256,t.sha224=t.sha.sha224,t.sha384=t.sha.sha384,t.sha512=t.sha.sha512,t.ripemd160=t.ripemd.ripemd160}()),Tn),di=r(hi);function fi(t,e,r){return r={path:e,exports:{},require:function(t,e){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==e&&r.path)}},t(r,r.exports),r.exports}var pi=mi;function mi(t,e){if(!t)throw new Error(e||"Assertion failed")}mi.equal=function(t,e,r){if(t!=e)throw new Error(r||"Assertion failed: "+t+" != "+e)};var gi=fi(function(t,e){var r=e;function n(t){return 1===t.length?"0"+t:t}function i(t){for(var e="",r=0;r<t.length;r++)e+=n(t[r].toString(16));return e}r.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if("string"!=typeof t){for(var n=0;n<t.length;n++)r[n]=0|t[n];return r}if("hex"===e){(t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t);for(n=0;n<t.length;n+=2)r.push(parseInt(t[n]+t[n+1],16))}else for(n=0;n<t.length;n++){var i=t.charCodeAt(n),o=i>>8,s=255&i;o?r.push(o,s):r.push(s)}return r},r.zero2=n,r.toHex=i,r.encode=function(t,e){return"hex"===e?i(t):t}}),vi=fi(function(t,e){var r=e;r.assert=pi,r.toArray=gi.toArray,r.zero2=gi.zero2,r.toHex=gi.toHex,r.encode=gi.encode,r.getNAF=function(t,e,r){var n,i=new Array(Math.max(t.bitLength(),r)+1);for(n=0;n<i.length;n+=1)i[n]=0;var o=1<<e+1,s=t.clone();for(n=0;n<i.length;n++){var a,l=s.andln(o-1);s.isOdd()?(a=l>(o>>1)-1?(o>>1)-l:l,s.isubn(a)):a=0,i[n]=a,s.iushrn(1)}return i},r.getJSF=function(t,e){var r=[[],[]];t=t.clone(),e=e.clone();for(var n,i=0,o=0;t.cmpn(-i)>0||e.cmpn(-o)>0;){var s,a,l=t.andln(3)+i&3,c=e.andln(3)+o&3;3===l&&(l=-1),3===c&&(c=-1),s=1&l?3!==(n=t.andln(7)+i&7)&&5!==n||2!==c?l:-l:0,r[0].push(s),a=1&c?3!==(n=e.andln(7)+o&7)&&5!==n||2!==l?c:-c:0,r[1].push(a),2*i===s+1&&(i=1-i),2*o===a+1&&(o=1-o),t.iushrn(1),e.iushrn(1)}return r},r.cachedProperty=function(t,e,r){var n="_"+e;t.prototype[e]=function(){return void 0!==this[n]?this[n]:this[n]=r.call(this)}},r.parseBytes=function(t){return"string"==typeof t?r.toArray(t,"hex"):t},r.intFromLE=function(t){return new s(t,"hex","le")}}),yi=vi.getNAF,wi=vi.getJSF,bi=vi.assert;function Ei(t,e){this.type=t,this.p=new s(e.p,16),this.red=e.prime?s.red(e.prime):s.mont(this.p),this.zero=new s(0).toRed(this.red),this.one=new s(1).toRed(this.red),this.two=new s(2).toRed(this.red),this.n=e.n&&new s(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var Ai=Ei;function ki(t,e){this.curve=t,this.type=e,this.precomputed=null}Ei.prototype.point=function(){throw new Error("Not implemented")},Ei.prototype.validate=function(){throw new Error("Not implemented")},Ei.prototype._fixedNafMul=function(t,e){bi(t.precomputed);var r=t._getDoubles(),n=yi(e,1,this._bitLength),i=(1<<r.step+1)-(r.step%2==0?2:1);i/=3;var o,s,a=[];for(o=0;o<n.length;o+=r.step){s=0;for(var l=o+r.step-1;l>=o;l--)s=(s<<1)+n[l];a.push(s)}for(var c=this.jpoint(null,null,null),u=this.jpoint(null,null,null),h=i;h>0;h--){for(o=0;o<a.length;o++)(s=a[o])===h?u=u.mixedAdd(r.points[o]):s===-h&&(u=u.mixedAdd(r.points[o].neg()));c=c.add(u)}return c.toP()},Ei.prototype._wnafMul=function(t,e){var r=4,n=t._getNAFPoints(r);r=n.wnd;for(var i=n.points,o=yi(e,r,this._bitLength),s=this.jpoint(null,null,null),a=o.length-1;a>=0;a--){for(var l=0;a>=0&&0===o[a];a--)l++;if(a>=0&&l++,s=s.dblp(l),a<0)break;var c=o[a];bi(0!==c),s="affine"===t.type?c>0?s.mixedAdd(i[c-1>>1]):s.mixedAdd(i[-c-1>>1].neg()):c>0?s.add(i[c-1>>1]):s.add(i[-c-1>>1].neg())}return"affine"===t.type?s.toP():s},Ei.prototype._wnafMulAdd=function(t,e,r,n,i){var o,s,a,l=this._wnafT1,c=this._wnafT2,u=this._wnafT3,h=0;for(o=0;o<n;o++){var d=(a=e[o])._getNAFPoints(t);l[o]=d.wnd,c[o]=d.points}for(o=n-1;o>=1;o-=2){var f=o-1,p=o;if(1===l[f]&&1===l[p]){var m=[e[f],null,null,e[p]];0===e[f].y.cmp(e[p].y)?(m[1]=e[f].add(e[p]),m[2]=e[f].toJ().mixedAdd(e[p].neg())):0===e[f].y.cmp(e[p].y.redNeg())?(m[1]=e[f].toJ().mixedAdd(e[p]),m[2]=e[f].add(e[p].neg())):(m[1]=e[f].toJ().mixedAdd(e[p]),m[2]=e[f].toJ().mixedAdd(e[p].neg()));var g=[-3,-1,-5,-7,0,7,5,1,3],v=wi(r[f],r[p]);for(h=Math.max(v[0].length,h),u[f]=new Array(h),u[p]=new Array(h),s=0;s<h;s++){var y=0|v[0][s],w=0|v[1][s];u[f][s]=g[3*(y+1)+(w+1)],u[p][s]=0,c[f]=m}}else u[f]=yi(r[f],l[f],this._bitLength),u[p]=yi(r[p],l[p],this._bitLength),h=Math.max(u[f].length,h),h=Math.max(u[p].length,h)}var b=this.jpoint(null,null,null),E=this._wnafT4;for(o=h;o>=0;o--){for(var A=0;o>=0;){var k=!0;for(s=0;s<n;s++)E[s]=0|u[s][o],0!==E[s]&&(k=!1);if(!k)break;A++,o--}if(o>=0&&A++,b=b.dblp(A),o<0)break;for(s=0;s<n;s++){var S=E[s];0!==S&&(S>0?a=c[s][S-1>>1]:S<0&&(a=c[s][-S-1>>1].neg()),b="affine"===a.type?b.mixedAdd(a):b.add(a))}}for(o=0;o<n;o++)c[o]=null;return i?b:b.toP()},Ei.BasePoint=ki,ki.prototype.eq=function(){throw new Error("Not implemented")},ki.prototype.validate=function(){return this.curve.validate(this)},Ei.prototype.decodePoint=function(t,e){t=vi.toArray(t,e);var r=this.p.byteLength();if((4===t[0]||6===t[0]||7===t[0])&&t.length-1==2*r)return 6===t[0]?bi(t[t.length-1]%2==0):7===t[0]&&bi(t[t.length-1]%2==1),this.point(t.slice(1,1+r),t.slice(1+r,1+2*r));if((2===t[0]||3===t[0])&&t.length-1===r)return this.pointFromX(t.slice(1,1+r),3===t[0]);throw new Error("Unknown point format")},ki.prototype.encodeCompressed=function(t){return this.encode(t,!0)},ki.prototype._encode=function(t){var e=this.curve.p.byteLength(),r=this.getX().toArray("be",e);return t?[this.getY().isEven()?2:3].concat(r):[4].concat(r,this.getY().toArray("be",e))},ki.prototype.encode=function(t,e){return vi.encode(this._encode(e),t)},ki.prototype.precompute=function(t){if(this.precomputed)return this;var e={doubles:null,naf:null,beta:null};return e.naf=this._getNAFPoints(8),e.doubles=this._getDoubles(4,t),e.beta=this._getBeta(),this.precomputed=e,this},ki.prototype._hasDoubles=function(t){if(!this.precomputed)return!1;var e=this.precomputed.doubles;return!!e&&e.points.length>=Math.ceil((t.bitLength()+1)/e.step)},ki.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],n=this,i=0;i<e;i+=t){for(var o=0;o<t;o++)n=n.dbl();r.push(n)}return{step:t,points:r}},ki.prototype._getNAFPoints=function(t){if(this.precomputed&&this.precomputed.naf)return this.precomputed.naf;for(var e=[this],r=(1<<t)-1,n=1===r?null:this.dbl(),i=1;i<r;i++)e[i]=e[i-1].add(n);return{wnd:t,points:e}},ki.prototype._getBeta=function(){return null},ki.prototype.dblp=function(t){for(var e=this,r=0;r<t;r++)e=e.dbl();return e};var Si=fi(function(t){"function"==typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}}),Ci=vi.assert;function xi(t){Ai.call(this,"short",t),this.a=new s(t.a,16).toRed(this.red),this.b=new s(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}Si(xi,Ai);var _i=xi;function Pi(t,e,r,n){Ai.BasePoint.call(this,t,"affine"),null===e&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new s(e,16),this.y=new s(r,16),n&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function Ti(t,e,r,n){Ai.BasePoint.call(this,t,"jacobian"),null===e&&null===r&&null===n?(this.x=this.curve.one,this.y=this.curve.one,this.z=new s(0)):(this.x=new s(e,16),this.y=new s(r,16),this.z=new s(n,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}xi.prototype._getEndomorphism=function(t){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var e,r;if(t.beta)e=new s(t.beta,16).toRed(this.red);else{var n=this._getEndoRoots(this.p);e=(e=n[0].cmp(n[1])<0?n[0]:n[1]).toRed(this.red)}if(t.lambda)r=new s(t.lambda,16);else{var i=this._getEndoRoots(this.n);0===this.g.mul(i[0]).x.cmp(this.g.x.redMul(e))?r=i[0]:(r=i[1],Ci(0===this.g.mul(r).x.cmp(this.g.x.redMul(e))))}return{beta:e,lambda:r,basis:t.basis?t.basis.map(function(t){return{a:new s(t.a,16),b:new s(t.b,16)}}):this._getEndoBasis(r)}}},xi.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:s.mont(t),r=new s(2).toRed(e).redInvm(),n=r.redNeg(),i=new s(3).toRed(e).redNeg().redSqrt().redMul(r);return[n.redAdd(i).fromRed(),n.redSub(i).fromRed()]},xi.prototype._getEndoBasis=function(t){for(var e,r,n,i,o,a,l,c,u,h=this.n.ushrn(Math.floor(this.n.bitLength()/2)),d=t,f=this.n.clone(),p=new s(1),m=new s(0),g=new s(0),v=new s(1),y=0;0!==d.cmpn(0);){var w=f.div(d);c=f.sub(w.mul(d)),u=g.sub(w.mul(p));var b=v.sub(w.mul(m));if(!n&&c.cmp(h)<0)e=l.neg(),r=p,n=c.neg(),i=u;else if(n&&2===++y)break;l=c,f=d,d=c,g=p,p=u,v=m,m=b}o=c.neg(),a=u;var E=n.sqr().add(i.sqr());return o.sqr().add(a.sqr()).cmp(E)>=0&&(o=e,a=r),n.negative&&(n=n.neg(),i=i.neg()),o.negative&&(o=o.neg(),a=a.neg()),[{a:n,b:i},{a:o,b:a}]},xi.prototype._endoSplit=function(t){var e=this.endo.basis,r=e[0],n=e[1],i=n.b.mul(t).divRound(this.n),o=r.b.neg().mul(t).divRound(this.n),s=i.mul(r.a),a=o.mul(n.a),l=i.mul(r.b),c=o.mul(n.b);return{k1:t.sub(s).sub(a),k2:l.add(c).neg()}},xi.prototype.pointFromX=function(t,e){(t=new s(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=r.redSqrt();if(0!==n.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var i=n.fromRed().isOdd();return(e&&!i||!e&&i)&&(n=n.redNeg()),this.point(t,n)},xi.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,r=t.y,n=this.a.redMul(e),i=e.redSqr().redMul(e).redIAdd(n).redIAdd(this.b);return 0===r.redSqr().redISub(i).cmpn(0)},xi.prototype._endoWnafMulAdd=function(t,e,r){for(var n=this._endoWnafT1,i=this._endoWnafT2,o=0;o<t.length;o++){var s=this._endoSplit(e[o]),a=t[o],l=a._getBeta();s.k1.negative&&(s.k1.ineg(),a=a.neg(!0)),s.k2.negative&&(s.k2.ineg(),l=l.neg(!0)),n[2*o]=a,n[2*o+1]=l,i[2*o]=s.k1,i[2*o+1]=s.k2}for(var c=this._wnafMulAdd(1,n,i,2*o,r),u=0;u<2*o;u++)n[u]=null,i[u]=null;return c},Si(Pi,Ai.BasePoint),xi.prototype.point=function(t,e,r){return new Pi(this,t,e,r)},xi.prototype.pointFromJSON=function(t,e){return Pi.fromJSON(this,t,e)},Pi.prototype._getBeta=function(){if(this.curve.endo){var t=this.precomputed;if(t&&t.beta)return t.beta;var e=this.curve.point(this.x.redMul(this.curve.endo.beta),this.y);if(t){var r=this.curve,n=function(t){return r.point(t.x.redMul(r.endo.beta),t.y)};t.beta=e,e.precomputed={beta:null,naf:t.naf&&{wnd:t.naf.wnd,points:t.naf.points.map(n)},doubles:t.doubles&&{step:t.doubles.step,points:t.doubles.points.map(n)}}}return e}},Pi.prototype.toJSON=function(){return this.precomputed?[this.x,this.y,this.precomputed&&{doubles:this.precomputed.doubles&&{step:this.precomputed.doubles.step,points:this.precomputed.doubles.points.slice(1)},naf:this.precomputed.naf&&{wnd:this.precomputed.naf.wnd,points:this.precomputed.naf.points.slice(1)}}]:[this.x,this.y]},Pi.fromJSON=function(t,e,r){"string"==typeof e&&(e=JSON.parse(e));var n=t.point(e[0],e[1],r);if(!e[2])return n;function i(e){return t.point(e[0],e[1],r)}var o=e[2];return n.precomputed={beta:null,doubles:o.doubles&&{step:o.doubles.step,points:[n].concat(o.doubles.points.map(i))},naf:o.naf&&{wnd:o.naf.wnd,points:[n].concat(o.naf.points.map(i))}},n},Pi.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+">"},Pi.prototype.isInfinity=function(){return this.inf},Pi.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var r=e.redSqr().redISub(this.x).redISub(t.x),n=e.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,n)},Pi.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,r=this.x.redSqr(),n=t.redInvm(),i=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(n),o=i.redSqr().redISub(this.x.redAdd(this.x)),s=i.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,s)},Pi.prototype.getX=function(){return this.x.fromRed()},Pi.prototype.getY=function(){return this.y.fromRed()},Pi.prototype.mul=function(t){return t=new s(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},Pi.prototype.mulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i):this.curve._wnafMulAdd(1,n,i,2)},Pi.prototype.jmulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i,!0):this.curve._wnafMulAdd(1,n,i,2,!0)},Pi.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},Pi.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var r=this.precomputed,n=function(t){return t.neg()};e.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(n)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(n)}}}return e},Pi.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},Si(Ti,Ai.BasePoint),xi.prototype.jpoint=function(t,e,r){return new Ti(this,t,e,r)},Ti.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),n=this.y.redMul(e).redMul(t);return this.curve.point(r,n)},Ti.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},Ti.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),r=this.z.redSqr(),n=this.x.redMul(e),i=t.x.redMul(r),o=this.y.redMul(e.redMul(t.z)),s=t.y.redMul(r.redMul(this.z)),a=n.redSub(i),l=o.redSub(s);if(0===a.cmpn(0))return 0!==l.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var c=a.redSqr(),u=c.redMul(a),h=n.redMul(c),d=l.redSqr().redIAdd(u).redISub(h).redISub(h),f=l.redMul(h.redISub(d)).redISub(o.redMul(u)),p=this.z.redMul(t.z).redMul(a);return this.curve.jpoint(d,f,p)},Ti.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),r=this.x,n=t.x.redMul(e),i=this.y,o=t.y.redMul(e).redMul(this.z),s=r.redSub(n),a=i.redSub(o);if(0===s.cmpn(0))return 0!==a.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var l=s.redSqr(),c=l.redMul(s),u=r.redMul(l),h=a.redSqr().redIAdd(c).redISub(u).redISub(u),d=a.redMul(u.redISub(h)).redISub(i.redMul(c)),f=this.z.redMul(s);return this.curve.jpoint(h,d,f)},Ti.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var e;if(this.curve.zeroA||this.curve.threeA){var r=this;for(e=0;e<t;e++)r=r.dbl();return r}var n=this.curve.a,i=this.curve.tinv,o=this.x,s=this.y,a=this.z,l=a.redSqr().redSqr(),c=s.redAdd(s);for(e=0;e<t;e++){var u=o.redSqr(),h=c.redSqr(),d=h.redSqr(),f=u.redAdd(u).redIAdd(u).redIAdd(n.redMul(l)),p=o.redMul(h),m=f.redSqr().redISub(p.redAdd(p)),g=p.redISub(m),v=f.redMul(g);v=v.redIAdd(v).redISub(d);var y=c.redMul(a);e+1<t&&(l=l.redMul(d)),o=m,a=y,c=v}return this.curve.jpoint(o,c.redMul(i),a)},Ti.prototype.dbl=function(){return this.isInfinity()?this:this.curve.zeroA?this._zeroDbl():this.curve.threeA?this._threeDbl():this._dbl()},Ti.prototype._zeroDbl=function(){var t,e,r;if(this.zOne){var n=this.x.redSqr(),i=this.y.redSqr(),o=i.redSqr(),s=this.x.redAdd(i).redSqr().redISub(n).redISub(o);s=s.redIAdd(s);var a=n.redAdd(n).redIAdd(n),l=a.redSqr().redISub(s).redISub(s),c=o.redIAdd(o);c=(c=c.redIAdd(c)).redIAdd(c),t=l,e=a.redMul(s.redISub(l)).redISub(c),r=this.y.redAdd(this.y)}else{var u=this.x.redSqr(),h=this.y.redSqr(),d=h.redSqr(),f=this.x.redAdd(h).redSqr().redISub(u).redISub(d);f=f.redIAdd(f);var p=u.redAdd(u).redIAdd(u),m=p.redSqr(),g=d.redIAdd(d);g=(g=g.redIAdd(g)).redIAdd(g),t=m.redISub(f).redISub(f),e=p.redMul(f.redISub(t)).redISub(g),r=(r=this.y.redMul(this.z)).redIAdd(r)}return this.curve.jpoint(t,e,r)},Ti.prototype._threeDbl=function(){var t,e,r;if(this.zOne){var n=this.x.redSqr(),i=this.y.redSqr(),o=i.redSqr(),s=this.x.redAdd(i).redSqr().redISub(n).redISub(o);s=s.redIAdd(s);var a=n.redAdd(n).redIAdd(n).redIAdd(this.curve.a),l=a.redSqr().redISub(s).redISub(s);t=l;var c=o.redIAdd(o);c=(c=c.redIAdd(c)).redIAdd(c),e=a.redMul(s.redISub(l)).redISub(c),r=this.y.redAdd(this.y)}else{var u=this.z.redSqr(),h=this.y.redSqr(),d=this.x.redMul(h),f=this.x.redSub(u).redMul(this.x.redAdd(u));f=f.redAdd(f).redIAdd(f);var p=d.redIAdd(d),m=(p=p.redIAdd(p)).redAdd(p);t=f.redSqr().redISub(m),r=this.y.redAdd(this.z).redSqr().redISub(h).redISub(u);var g=h.redSqr();g=(g=(g=g.redIAdd(g)).redIAdd(g)).redIAdd(g),e=f.redMul(p.redISub(t)).redISub(g)}return this.curve.jpoint(t,e,r)},Ti.prototype._dbl=function(){var t=this.curve.a,e=this.x,r=this.y,n=this.z,i=n.redSqr().redSqr(),o=e.redSqr(),s=r.redSqr(),a=o.redAdd(o).redIAdd(o).redIAdd(t.redMul(i)),l=e.redAdd(e),c=(l=l.redIAdd(l)).redMul(s),u=a.redSqr().redISub(c.redAdd(c)),h=c.redISub(u),d=s.redSqr();d=(d=(d=d.redIAdd(d)).redIAdd(d)).redIAdd(d);var f=a.redMul(h).redISub(d),p=r.redAdd(r).redMul(n);return this.curve.jpoint(u,f,p)},Ti.prototype.trpl=function(){if(!this.curve.zeroA)return this.dbl().add(this);var t=this.x.redSqr(),e=this.y.redSqr(),r=this.z.redSqr(),n=e.redSqr(),i=t.redAdd(t).redIAdd(t),o=i.redSqr(),s=this.x.redAdd(e).redSqr().redISub(t).redISub(n),a=(s=(s=(s=s.redIAdd(s)).redAdd(s).redIAdd(s)).redISub(o)).redSqr(),l=n.redIAdd(n);l=(l=(l=l.redIAdd(l)).redIAdd(l)).redIAdd(l);var c=i.redIAdd(s).redSqr().redISub(o).redISub(a).redISub(l),u=e.redMul(c);u=(u=u.redIAdd(u)).redIAdd(u);var h=this.x.redMul(a).redISub(u);h=(h=h.redIAdd(h)).redIAdd(h);var d=this.y.redMul(c.redMul(l.redISub(c)).redISub(s.redMul(a)));d=(d=(d=d.redIAdd(d)).redIAdd(d)).redIAdd(d);var f=this.z.redAdd(s).redSqr().redISub(r).redISub(a);return this.curve.jpoint(h,d,f)},Ti.prototype.mul=function(t,e){return t=new s(t,e),this.curve._wnafMul(this,t)},Ti.prototype.eq=function(t){if("affine"===t.type)return this.eq(t.toJ());if(this===t)return!0;var e=this.z.redSqr(),r=t.z.redSqr();if(0!==this.x.redMul(r).redISub(t.x.redMul(e)).cmpn(0))return!1;var n=e.redMul(this.z),i=r.redMul(t.z);return 0===this.y.redMul(i).redISub(t.y.redMul(n)).cmpn(0)},Ti.prototype.eqXToP=function(t){var e=this.z.redSqr(),r=t.toRed(this.curve.red).redMul(e);if(0===this.x.cmp(r))return!0;for(var n=t.clone(),i=this.curve.redN.redMul(e);;){if(n.iadd(this.curve.n),n.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(i),0===this.x.cmp(r))return!0}},Ti.prototype.inspect=function(){return this.isInfinity()?"<EC JPoint Infinity>":"<EC JPoint x: "+this.x.toString(16,2)+" y: "+this.y.toString(16,2)+" z: "+this.z.toString(16,2)+">"},Ti.prototype.isInfinity=function(){return 0===this.z.cmpn(0)};var Ii=fi(function(t,e){var r=e;r.base=Ai,r.short=_i,r.mont=null,r.edwards=null}),Ni=fi(function(t,e){var r,n=e,i=vi.assert;function o(t){"short"===t.type?this.curve=new Ii.short(t):"edwards"===t.type?this.curve=new Ii.edwards(t):this.curve=new Ii.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,i(this.g.validate(),"Invalid curve"),i(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function s(t,e){Object.defineProperty(n,t,{configurable:!0,enumerable:!0,get:function(){var r=new o(e);return Object.defineProperty(n,t,{configurable:!0,enumerable:!0,value:r}),r}})}n.PresetCurve=o,s("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:di.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),s("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:di.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),s("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:di.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),s("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:di.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),s("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:di.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),s("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:di.sha256,gRed:!1,g:["9"]}),s("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:di.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{r=null.crash()}catch(t){r=void 0}s("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:di.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",r]})});function Mi(t){if(!(this instanceof Mi))return new Mi(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=gi.toArray(t.entropy,t.entropyEnc||"hex"),r=gi.toArray(t.nonce,t.nonceEnc||"hex"),n=gi.toArray(t.pers,t.persEnc||"hex");pi(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,n)}var Bi=Mi;Mi.prototype._init=function(t,e,r){var n=t.concat(e).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i<this.V.length;i++)this.K[i]=0,this.V[i]=1;this._update(n),this._reseed=1,this.reseedInterval=281474976710656},Mi.prototype._hmac=function(){return new di.hmac(this.hash,this.K)},Mi.prototype._update=function(t){var e=this._hmac().update(this.V).update([0]);t&&(e=e.update(t)),this.K=e.digest(),this.V=this._hmac().update(this.V).digest(),t&&(this.K=this._hmac().update(this.V).update([1]).update(t).digest(),this.V=this._hmac().update(this.V).digest())},Mi.prototype.reseed=function(t,e,r,n){"string"!=typeof e&&(n=r,r=e,e=null),t=gi.toArray(t,e),r=gi.toArray(r,n),pi(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(r||[])),this._reseed=1},Mi.prototype.generate=function(t,e,r,n){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof e&&(n=r,r=e,e=null),r&&(r=gi.toArray(r,n||"hex"),this._update(r));for(var i=[];i.length<t;)this.V=this._hmac().update(this.V).digest(),i=i.concat(this.V);var o=i.slice(0,t);return this._update(r),this._reseed++,gi.encode(o,e)};var Ri=vi.assert;function Fi(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}var Oi=Fi;Fi.fromPublic=function(t,e,r){return e instanceof Fi?e:new Fi(t,{pub:e,pubEnc:r})},Fi.fromPrivate=function(t,e,r){return e instanceof Fi?e:new Fi(t,{priv:e,privEnc:r})},Fi.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:"Invalid public key"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},Fi.prototype.getPublic=function(t,e){return"string"==typeof t&&(e=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},Fi.prototype.getPrivate=function(t){return"hex"===t?this.priv.toString(16,2):this.priv},Fi.prototype._importPrivate=function(t,e){this.priv=new s(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},Fi.prototype._importPublic=function(t,e){if(t.x||t.y)return"mont"===this.ec.curve.type?Ri(t.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||Ri(t.x&&t.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(t.x,t.y));this.pub=this.ec.curve.decodePoint(t,e)},Fi.prototype.derive=function(t){return t.validate()||Ri(t.validate(),"public point not validated"),t.mul(this.priv).getX()},Fi.prototype.sign=function(t,e,r){return this.ec.sign(t,this,e,r)},Fi.prototype.verify=function(t,e,r){return this.ec.verify(t,e,this,void 0,r)},Fi.prototype.inspect=function(){return"<Key priv: "+(this.priv&&this.priv.toString(16,2))+" pub: "+(this.pub&&this.pub.inspect())+" >"};var Di=vi.assert;function Ui(t,e){if(t instanceof Ui)return t;this._importDER(t,e)||(Di(t.r&&t.s,"Signature without r or s"),this.r=new s(t.r,16),this.s=new s(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}var Li=Ui;function qi(){this.place=0}function zi(t,e){var r=t[e.place++];if(!(128&r))return r;var n=15&r;if(0===n||n>4)return!1;if(0===t[e.place])return!1;for(var i=0,o=0,s=e.place;o<n;o++,s++)i<<=8,i|=t[s],i>>>=0;return!(i<=127)&&(e.place=s,i)}function Gi(t){for(var e=0,r=t.length-1;!t[e]&&!(128&t[e+1])&&e<r;)e++;return 0===e?t:t.slice(e)}function ji(t,e){if(e<128)t.push(e);else{var r=1+(Math.log(e)/Math.LN2>>>3);for(t.push(128|r);--r;)t.push(e>>>(r<<3)&255);t.push(e)}}Ui.prototype._importDER=function(t,e){t=vi.toArray(t,e);var r=new qi;if(48!==t[r.place++])return!1;var n=zi(t,r);if(!1===n)return!1;if(n+r.place!==t.length)return!1;if(2!==t[r.place++])return!1;var i=zi(t,r);if(!1===i)return!1;if(128&t[r.place])return!1;var o=t.slice(r.place,i+r.place);if(r.place+=i,2!==t[r.place++])return!1;var a=zi(t,r);if(!1===a)return!1;if(t.length!==a+r.place)return!1;if(128&t[r.place])return!1;var l=t.slice(r.place,a+r.place);if(0===o[0]){if(!(128&o[1]))return!1;o=o.slice(1)}if(0===l[0]){if(!(128&l[1]))return!1;l=l.slice(1)}return this.r=new s(o),this.s=new s(l),this.recoveryParam=null,!0},Ui.prototype.toDER=function(t){var e=this.r.toArray(),r=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&r[0]&&(r=[0].concat(r)),e=Gi(e),r=Gi(r);!(r[0]||128&r[1]);)r=r.slice(1);var n=[2];ji(n,e.length),(n=n.concat(e)).push(2),ji(n,r.length);var i=n.concat(r),o=[48];return ji(o,i.length),o=o.concat(i),vi.encode(o,t)};var Hi=function(){throw new Error("unsupported")},Ki=vi.assert;function Wi(t){if(!(this instanceof Wi))return new Wi(t);"string"==typeof t&&(Ki(Object.prototype.hasOwnProperty.call(Ni,t),"Unknown curve "+t),t=Ni[t]),t instanceof Ni.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}var Vi=Wi;Wi.prototype.keyPair=function(t){return new Oi(this,t)},Wi.prototype.keyFromPrivate=function(t,e){return Oi.fromPrivate(this,t,e)},Wi.prototype.keyFromPublic=function(t,e){return Oi.fromPublic(this,t,e)},Wi.prototype.genKeyPair=function(t){t||(t={});for(var e=new Bi({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||Hi(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),r=this.n.byteLength(),n=this.n.sub(new s(2));;){var i=new s(e.generate(r));if(!(i.cmp(n)>0))return i.iaddn(1),this.keyFromPrivate(i)}},Wi.prototype._truncateToN=function(t,e,r){var n;if(s.isBN(t)||"number"==typeof t)n=(t=new s(t,16)).byteLength();else if("object"==typeof t)n=t.length,t=new s(t,16);else{var i=t.toString();n=i.length+1>>>1,t=new s(i,16)}"number"!=typeof r&&(r=8*n);var o=r-this.n.bitLength();return o>0&&(t=t.ushrn(o)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},Wi.prototype.sign=function(t,e,r,n){if("object"==typeof r&&(n=r,r=null),n||(n={}),"string"!=typeof t&&"number"!=typeof t&&!s.isBN(t)){Ki("object"==typeof t&&t&&"number"==typeof t.length,"Expected message to be an array-like, a hex string, or a BN instance"),Ki(t.length>>>0===t.length);for(var i=0;i<t.length;i++)Ki((255&t[i])===t[i])}e=this.keyFromPrivate(e,r),t=this._truncateToN(t,!1,n.msgBitLength),Ki(!t.isNeg(),"Can not sign a negative message");var o=this.n.byteLength(),a=e.getPrivate().toArray("be",o),l=t.toArray("be",o);Ki(new s(l).eq(t),"Can not sign message");for(var c=new Bi({hash:this.hash,entropy:a,nonce:l,pers:n.pers,persEnc:n.persEnc||"utf8"}),u=this.n.sub(new s(1)),h=0;;h++){var d=n.k?n.k(h):new s(c.generate(this.n.byteLength()));if(!((d=this._truncateToN(d,!0)).cmpn(1)<=0||d.cmp(u)>=0)){var f=this.g.mul(d);if(!f.isInfinity()){var p=f.getX(),m=p.umod(this.n);if(0!==m.cmpn(0)){var g=d.invm(this.n).mul(m.mul(e.getPrivate()).iadd(t));if(0!==(g=g.umod(this.n)).cmpn(0)){var v=(f.getY().isOdd()?1:0)|(0!==p.cmp(m)?2:0);return n.canonical&&g.cmp(this.nh)>0&&(g=this.n.sub(g),v^=1),new Li({r:m,s:g,recoveryParam:v})}}}}}},Wi.prototype.verify=function(t,e,r,n,i){i||(i={}),t=this._truncateToN(t,!1,i.msgBitLength),r=this.keyFromPublic(r,n);var o=(e=new Li(e,"hex")).r,s=e.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;if(s.cmpn(1)<0||s.cmp(this.n)>=0)return!1;var a,l=s.invm(this.n),c=l.mul(t).umod(this.n),u=l.mul(o).umod(this.n);return this.curve._maxwellTrick?!(a=this.g.jmulAdd(c,r.getPublic(),u)).isInfinity()&&a.eqXToP(o):!(a=this.g.mulAdd(c,r.getPublic(),u)).isInfinity()&&0===a.getX().umod(this.n).cmp(o)},Wi.prototype.recoverPubKey=function(t,e,r,n){Ki((3&r)===r,"The recovery param is more than two bits"),e=new Li(e,n);var i=this.n,o=new s(t),a=e.r,l=e.s,c=1&r,u=r>>1;if(a.cmp(this.curve.p.umod(this.curve.n))>=0&&u)throw new Error("Unable to find sencond key candinate");a=u?this.curve.pointFromX(a.add(this.curve.n),c):this.curve.pointFromX(a,c);var h=e.r.invm(i),d=i.sub(o).mul(h).umod(i),f=l.mul(h).umod(i);return this.g.mulAdd(d,a,f)},Wi.prototype.getKeyRecoveryParam=function(t,e,r,n){if(null!==(e=new Li(e,n)).recoveryParam)return e.recoveryParam;for(var i=0;i<4;i++){var o;try{o=this.recoverPubKey(t,e,i)}catch(t){continue}if(o.eq(r))return i}throw new Error("Unable to find valid recovery factor")};var $i=fi(function(t,e){var r=e;r.version="6.6.1",r.utils=vi,r.rand=function(){throw new Error("unsupported")},r.curve=Ii,r.curves=Ni,r.ec=Vi,r.eddsa=null}).ec;const Ji=new g("signing-key/5.8.0");let Qi=null;function Yi(){return Qi||(Qi=new $i("secp256k1")),Qi}class Xi{constructor(t){ut(this,"curve","secp256k1"),ut(this,"privateKey",T(t)),32!==I(this.privateKey)&&Ji.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");const e=Yi().keyFromPrivate(k(this.privateKey));ut(this,"publicKey","0x"+e.getPublic(!1,"hex")),ut(this,"compressedPublicKey","0x"+e.getPublic(!0,"hex")),ut(this,"_isSigningKey",!0)}_addPoint(t){const e=Yi().keyFromPublic(k(this.publicKey)),r=Yi().keyFromPublic(k(t));return"0x"+e.pub.add(r.pub).encodeCompressed("hex")}signDigest(t){const e=Yi().keyFromPrivate(k(this.privateKey)),r=k(t);32!==r.length&&Ji.throwArgumentError("bad digest length","digest",t);const n=e.sign(r,{canonical:!0});return O({recoveryParam:n.recoveryParam,r:F("0x"+n.r.toString(16),32),s:F("0x"+n.s.toString(16),32)})}computeSharedSecret(t){const e=Yi().keyFromPrivate(k(this.privateKey)),r=Yi().keyFromPublic(k(to(t)));return F("0x"+e.derive(r.getPublic()).toString(16),32)}static isSigningKey(t){return!(!t||!t._isSigningKey)}}function Zi(t,e){const r=O(e),n={r:k(r.r),s:k(r.s)};return"0x"+Yi().recoverPubKey(k(t),n,r.recoveryParam).encode("hex",!1)}function to(t,e){const r=k(t);if(32===r.length){const t=new Xi(r);return e?"0x"+Yi().keyFromPrivate(r).getPublic(!0,"hex"):t.publicKey}return 33===r.length?e?T(r):"0x"+Yi().keyFromPublic(r).getPublic(!1,"hex"):65===r.length?e?"0x"+Yi().keyFromPublic(r).getPublic(!0,"hex"):T(r):Ji.throwArgumentError("invalid public or private key","key","[REDACTED]")}const eo=new g("transactions/5.8.0");var ro;function no(t){return"0x"===t?null:ge(t)}function io(t){return"0x"===t?Ne:H.from(t)}!function(t){t[t.legacy=0]="legacy",t[t.eip2930=1]="eip2930",t[t.eip1559=2]="eip1559"}(ro||(ro={}));const oo=[{name:"nonce",maxLength:32,numeric:!0},{name:"gasPrice",maxLength:32,numeric:!0},{name:"gasLimit",maxLength:32,numeric:!0},{name:"to",length:20},{name:"value",maxLength:32,numeric:!0},{name:"data"}],so={chainId:!0,data:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,type:!0,value:!0};function ao(t){return ge(N(te(N(to(t),1)),12))}function lo(t,e){return ao(Zi(k(t),e))}function co(t,e){const r=C(H.from(t).toHexString());return r.length>32&&eo.throwArgumentError("invalid length for "+e,"transaction:"+e,t),r}function uo(t,e){return{address:ge(t),storageKeys:(e||[]).map((e,r)=>(32!==I(e)&&eo.throwArgumentError("invalid access list storageKey",`accessList[${t}:${r}]`,e),e.toLowerCase()))}}function ho(t){if(Array.isArray(t))return t.map((t,e)=>Array.isArray(t)?(t.length>2&&eo.throwArgumentError("access list expected to be [ address, storageKeys[] ]",`value[${e}]`,t),uo(t[0],t[1])):uo(t.address,t.storageKeys));const e=Object.keys(t).map(e=>{const r=t[e].reduce((t,e)=>(t[e]=!0,t),{});return uo(e,Object.keys(r).sort())});return e.sort((t,e)=>t.address.localeCompare(e.address)),e}function fo(t){return ho(t).map(t=>[t.address,t.storageKeys])}function po(t,e){if(null!=t.gasPrice){const e=H.from(t.gasPrice),r=H.from(t.maxFeePerGas||0);e.eq(r)||eo.throwArgumentError("mismatch EIP-1559 gasPrice != maxFeePerGas","tx",{gasPrice:e,maxFeePerGas:r})}const r=[co(t.chainId||0,"chainId"),co(t.nonce||0,"nonce"),co(t.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),co(t.maxFeePerGas||0,"maxFeePerGas"),co(t.gasLimit||0,"gasLimit"),null!=t.to?ge(t.to):"0x",co(t.value||0,"value"),t.data||"0x",fo(t.accessList||[])];if(e){const t=O(e);r.push(co(t.recoveryParam,"recoveryParam")),r.push(C(t.r)),r.push(C(t.s))}return M(["0x02",oe(r)])}function mo(t,e){const r=[co(t.chainId||0,"chainId"),co(t.nonce||0,"nonce"),co(t.gasPrice||0,"gasPrice"),co(t.gasLimit||0,"gasLimit"),null!=t.to?ge(t.to):"0x",co(t.value||0,"value"),t.data||"0x",fo(t.accessList||[])];if(e){const t=O(e);r.push(co(t.recoveryParam,"recoveryParam")),r.push(C(t.r)),r.push(C(t.s))}return M(["0x01",oe(r)])}function go(t,e){if(null==t.type||0===t.type)return null!=t.accessList&&eo.throwArgumentError("untyped transactions do not support accessList; include type: 1","transaction",t),function(t,e){ft(t,so);const r=[];oo.forEach(function(e){let n=t[e.name]||[];const i={};e.numeric&&(i.hexPad="left"),n=k(T(n,i)),e.length&&n.length!==e.length&&n.length>0&&eo.throwArgumentError("invalid length for "+e.name,"transaction:"+e.name,n),e.maxLength&&(n=C(n),n.length>e.maxLength&&eo.throwArgumentError("invalid length for "+e.name,"transaction:"+e.name,n)),r.push(T(n))});let n=0;if(null!=t.chainId?(n=t.chainId,"number"!=typeof n&&eo.throwArgumentError("invalid transaction.chainId","transaction",t)):e&&!b(e)&&e.v>28&&(n=Math.floor((e.v-35)/2)),0!==n&&(r.push(T(n)),r.push("0x"),r.push("0x")),!e)return oe(r);const i=O(e);let o=27+i.recoveryParam;return 0!==n?(r.pop(),r.pop(),r.pop(),o+=2*n+8,i.v>28&&i.v!==o&&eo.throwArgumentError("transaction.chainId/signature.v mismatch","signature",e)):i.v!==o&&eo.throwArgumentError("transaction.chainId/signature.v mismatch","signature",e),r.push(T(o)),r.push(C(k(i.r))),r.push(C(k(i.s))),oe(r)}(t,e);switch(t.type){case 1:return mo(t,e);case 2:return po(t,e)}return eo.throwError(`unsupported transaction type: ${t.type}`,g.errors.UNSUPPORTED_OPERATION,{operation:"serializeTransaction",transactionType:t.type})}function vo(t,e,r){try{const r=io(e[0]).toNumber();if(0!==r&&1!==r)throw new Error("bad recid");t.v=r}catch(t){eo.throwArgumentError("invalid v for transaction type: 1","v",e[0])}t.r=F(e[1],32),t.s=F(e[2],32);try{const e=te(r(t));t.from=lo(e,{r:t.r,s:t.s,recoveryParam:t.v})}catch(t){}}function yo(t){const e=k(t);if(e[0]>127)return function(t){const e=le(t);9!==e.length&&6!==e.length&&eo.throwArgumentError("invalid raw transaction","rawTransaction",t);const r={nonce:io(e[0]).toNumber(),gasPrice:io(e[1]),gasLimit:io(e[2]),to:no(e[3]),value:io(e[4]),data:e[5],chainId:0};if(6===e.length)return r;try{r.v=H.from(e[6]).toNumber()}catch(t){return r}if(r.r=F(e[7],32),r.s=F(e[8],32),H.from(r.r).isZero()&&H.from(r.s).isZero())r.chainId=r.v,r.v=0;else{r.chainId=Math.floor((r.v-35)/2),r.chainId<0&&(r.chainId=0);let n=r.v-27;const i=e.slice(0,6);0!==r.chainId&&(i.push(T(r.chainId)),i.push("0x"),i.push("0x"),n-=2*r.chainId+8);const o=te(oe(i));try{r.from=lo(o,{r:T(r.r),s:T(r.s),recoveryParam:n})}catch(t){}r.hash=te(t)}return r.type=null,r}(e);switch(e[0]){case 1:return function(t){const e=le(t.slice(1));8!==e.length&&11!==e.length&&eo.throwArgumentError("invalid component count for transaction type: 1","payload",T(t));const r={type:1,chainId:io(e[0]).toNumber(),nonce:io(e[1]).toNumber(),gasPrice:io(e[2]),gasLimit:io(e[3]),to:no(e[4]),value:io(e[5]),data:e[6],accessList:ho(e[7])};return 8===e.length||(r.hash=te(t),vo(r,e.slice(8),mo)),r}(e);case 2:return function(t){const e=le(t.slice(1));9!==e.length&&12!==e.length&&eo.throwArgumentError("invalid component count for transaction type: 2","payload",T(t));const r=io(e[2]),n=io(e[3]),i={type:2,chainId:io(e[0]).toNumber(),nonce:io(e[1]).toNumber(),maxPriorityFeePerGas:r,maxFeePerGas:n,gasPrice:null,gasLimit:io(e[4]),to:no(e[5]),value:io(e[6]),data:e[7],accessList:ho(e[8])};return 9===e.length||(i.hash=te(t),vo(i,e.slice(9),po)),i}(e)}return eo.throwError(`unsupported transaction type: ${e[0]}`,g.errors.UNSUPPORTED_OPERATION,{operation:"parseTransaction",transactionType:e[0]})}var wo=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const bo=new g("contracts/5.8.0"),Eo={chainId:!0,data:!0,from:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,value:!0,type:!0,accessList:!0,maxFeePerGas:!0,maxPriorityFeePerGas:!0,customData:!0,ccipReadEnabled:!0};function Ao(t,e){return wo(this,void 0,void 0,function*(){const r=yield e;"string"!=typeof r&&bo.throwArgumentError("invalid address or ENS name","name",r);try{return ge(r)}catch(t){}t||bo.throwError("a provider or signer is needed to resolve ENS names",g.errors.UNSUPPORTED_OPERATION,{operation:"resolveName"});const n=yield t.resolveName(r);return null==n&&bo.throwArgumentError("resolver or addr is not configured for ENS name","name",r),n})}function ko(t,e,r){return wo(this,void 0,void 0,function*(){return Array.isArray(r)?yield Promise.all(r.map((r,n)=>ko(t,Array.isArray(e)?e[n]:e[r.name],r))):"address"===r.type?yield Ao(t,e):"tuple"===r.type?yield ko(t,e,r.components):"array"===r.baseType?Array.isArray(e)?yield Promise.all(e.map(e=>ko(t,e,r.arrayChildren))):Promise.reject(bo.makeError("invalid value for array",g.errors.INVALID_ARGUMENT,{argument:"value",value:e})):e})}function So(t,e,r){return wo(this,void 0,void 0,function*(){let n={};r.length===e.inputs.length+1&&"object"==typeof r[r.length-1]&&(n=pt(r.pop())),bo.checkArgumentCount(r.length,e.inputs.length,"passed to contract"),t.signer?n.from?n.from=dt({override:Ao(t.signer,n.from),signer:t.signer.getAddress()}).then(t=>wo(this,void 0,void 0,function*(){return ge(t.signer)!==t.override&&bo.throwError("Contract with a Signer cannot override from",g.errors.UNSUPPORTED_OPERATION,{operation:"overrides.from"}),t.override})):n.from=t.signer.getAddress():n.from&&(n.from=Ao(t.provider,n.from));const i=yield dt({args:ko(t.signer||t.provider,r,e.inputs),address:t.resolvedAddress,overrides:dt(n)||{}}),o=t.interface.encodeFunctionData(e,i.args),s={data:o,to:i.address},a=i.overrides;if(null!=a.nonce&&(s.nonce=H.from(a.nonce).toNumber()),null!=a.gasLimit&&(s.gasLimit=H.from(a.gasLimit)),null!=a.gasPrice&&(s.gasPrice=H.from(a.gasPrice)),null!=a.maxFeePerGas&&(s.maxFeePerGas=H.from(a.maxFeePerGas)),null!=a.maxPriorityFeePerGas&&(s.maxPriorityFeePerGas=H.from(a.maxPriorityFeePerGas)),null!=a.from&&(s.from=a.from),null!=a.type&&(s.type=a.type),null!=a.accessList&&(s.accessList=ho(a.accessList)),null==s.gasLimit&&null!=e.gas){let t=21e3;const r=k(o);for(let e=0;e<r.length;e++)t+=4,r[e]&&(t+=64);s.gasLimit=H.from(e.gas).add(t)}if(a.value){const t=H.from(a.value);t.isZero()||e.payable||bo.throwError("non-payable method cannot override value",g.errors.UNSUPPORTED_OPERATION,{operation:"overrides.value",value:n.value}),s.value=t}a.customData&&(s.customData=pt(a.customData)),a.ccipReadEnabled&&(s.ccipReadEnabled=!!a.ccipReadEnabled),delete n.nonce,delete n.gasLimit,delete n.gasPrice,delete n.from,delete n.value,delete n.type,delete n.accessList,delete n.maxFeePerGas,delete n.maxPriorityFeePerGas,delete n.customData,delete n.ccipReadEnabled;const l=Object.keys(n).filter(t=>null!=n[t]);return l.length&&bo.throwError(`cannot override ${l.map(t=>JSON.stringify(t)).join(",")}`,g.errors.UNSUPPORTED_OPERATION,{operation:"overrides",overrides:l}),s})}function Co(t,e){const r=e.wait.bind(e);e.wait=e=>r(e).then(e=>(e.events=e.logs.map(r=>{let n=yt(r),i=null;try{i=t.interface.parseLog(r)}catch(t){}return i&&(n.args=i.args,n.decode=(e,r)=>t.interface.decodeEventLog(i.eventFragment,e,r),n.event=i.name,n.eventSignature=i.signature),n.removeListener=()=>t.provider,n.getBlock=()=>t.provider.getBlock(e.blockHash),n.getTransaction=()=>t.provider.getTransaction(e.transactionHash),n.getTransactionReceipt=()=>Promise.resolve(e),n}),e))}function xo(t,e,r){const n=t.signer||t.provider;return function(...i){return wo(this,void 0,void 0,function*(){let o;if(i.length===e.inputs.length+1&&"object"==typeof i[i.length-1]){const t=pt(i.pop());null!=t.blockTag&&(o=yield t.blockTag),delete t.blockTag,i.push(t)}null!=t.deployTransaction&&(yield t._deployed(o));const s=yield So(t,e,i),a=yield n.call(s,o);try{let n=t.interface.decodeFunctionResult(e,a);return r&&1===e.outputs.length&&(n=n[0]),n}catch(e){throw e.code===g.errors.CALL_EXCEPTION&&(e.address=t.address,e.args=i,e.transaction=s),e}})}}function _o(t,e,r){return e.constant?xo(t,e,r):function(t,e){return function(...r){return wo(this,void 0,void 0,function*(){t.signer||bo.throwError("sending a transaction requires a signer",g.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction"}),null!=t.deployTransaction&&(yield t._deployed());const n=yield So(t,e,r),i=yield t.signer.sendTransaction(n);return Co(t,i),i})}}(t,e)}function Po(t){return!t.address||null!=t.topics&&0!==t.topics.length?(t.address||"*")+"@"+(t.topics?t.topics.map(t=>Array.isArray(t)?t.join("|"):t).join(":"):""):"*"}class To{constructor(t,e){ut(this,"tag",t),ut(this,"filter",e),this._listeners=[]}addListener(t,e){this._listeners.push({listener:t,once:e})}removeListener(t){let e=!1;this._listeners=this._listeners.filter(r=>!(!e&&r.listener===t)||(e=!0,!1))}removeAllListeners(){this._listeners=[]}listeners(){return this._listeners.map(t=>t.listener)}listenerCount(){return this._listeners.length}run(t){const e=this.listenerCount();return this._listeners=this._listeners.filter(e=>{const r=t.slice();return setTimeout(()=>{e.listener.apply(this,r)},0),!e.once}),e}prepareEvent(t){}getEmit(t){return[t]}}class Io extends To{constructor(){super("error",null)}}class No extends To{constructor(t,e,r,n){const i={address:t};let o=e.getEventTopic(r);n?(o!==n[0]&&bo.throwArgumentError("topic mismatch","topics",n),i.topics=n.slice()):i.topics=[o],super(Po(i),i),ut(this,"address",t),ut(this,"interface",e),ut(this,"fragment",r)}prepareEvent(t){super.prepareEvent(t),t.event=this.fragment.name,t.eventSignature=this.fragment.format(),t.decode=(t,e)=>this.interface.decodeEventLog(this.fragment,t,e);try{t.args=this.interface.decodeEventLog(this.fragment,t.data,t.topics)}catch(e){t.args=null,t.decodeError=e}}getEmit(t){const e=Kt(t.args);if(e.length)throw e[0].error;const r=(t.args||[]).slice();return r.push(t),r}}class Mo extends To{constructor(t,e){super("*",{address:t}),ut(this,"address",t),ut(this,"interface",e)}prepareEvent(t){super.prepareEvent(t);try{const e=this.interface.parseLog(t);t.event=e.name,t.eventSignature=e.signature,t.decode=(t,r)=>this.interface.decodeEventLog(e.eventFragment,t,r),t.args=e.args}catch(t){}}}class Bo{constructor(t,e,r){ut(this,"interface",ht(new.target,"getInterface")(e)),null==r?(ut(this,"provider",null),ut(this,"signer",null)):Cn.isSigner(r)?(ut(this,"provider",r.provider||null),ut(this,"signer",r)):bn.isProvider(r)?(ut(this,"provider",r),ut(this,"signer",null)):bo.throwArgumentError("invalid signer or provider","signerOrProvider",r),ut(this,"callStatic",{}),ut(this,"estimateGas",{}),ut(this,"functions",{}),ut(this,"populateTransaction",{}),ut(this,"filters",{});{const t={};Object.keys(this.interface.events).forEach(e=>{const r=this.interface.events[e];ut(this.filters,e,(...t)=>({address:this.address,topics:this.interface.encodeFilterTopics(r,t)})),t[r.name]||(t[r.name]=[]),t[r.name].push(e)}),Object.keys(t).forEach(e=>{const r=t[e];1===r.length?ut(this.filters,e,this.filters[r[0]]):bo.warn(`Duplicate definition of ${e} (${r.join(", ")})`)})}if(ut(this,"_runningEvents",{}),ut(this,"_wrappedEmits",{}),null==t&&bo.throwArgumentError("invalid contract address or ENS name","addressOrName",t),ut(this,"address",t),this.provider)ut(this,"resolvedAddress",Ao(this.provider,t));else try{ut(this,"resolvedAddress",Promise.resolve(ge(t)))}catch(t){bo.throwError("provider is required to use ENS name as contract address",g.errors.UNSUPPORTED_OPERATION,{operation:"new Contract"})}this.resolvedAddress.catch(t=>{});const n={},i={};Object.keys(this.interface.functions).forEach(t=>{const e=this.interface.functions[t];if(i[t])bo.warn(`Duplicate ABI entry for ${JSON.stringify(t)}`);else{i[t]=!0;{const r=e.name;n[`%${r}`]||(n[`%${r}`]=[]),n[`%${r}`].push(t)}null==this[t]&&ut(this,t,_o(this,e,!0)),null==this.functions[t]&&ut(this.functions,t,_o(this,e,!1)),null==this.callStatic[t]&&ut(this.callStatic,t,xo(this,e,!0)),null==this.populateTransaction[t]&&ut(this.populateTransaction,t,function(t,e){return function(...r){return So(t,e,r)}}(this,e)),null==this.estimateGas[t]&&ut(this.estimateGas,t,function(t,e){const r=t.signer||t.provider;return function(...n){return wo(this,void 0,void 0,function*(){r||bo.throwError("estimate require a provider or signer",g.errors.UNSUPPORTED_OPERATION,{operation:"estimateGas"});const i=yield So(t,e,n);return yield r.estimateGas(i)})}}(this,e))}}),Object.keys(n).forEach(t=>{const e=n[t];if(e.length>1)return;t=t.substring(1);const r=e[0];try{null==this[t]&&ut(this,t,this[r])}catch(t){}null==this.functions[t]&&ut(this.functions,t,this.functions[r]),null==this.callStatic[t]&&ut(this.callStatic,t,this.callStatic[r]),null==this.populateTransaction[t]&&ut(this.populateTransaction,t,this.populateTransaction[r]),null==this.estimateGas[t]&&ut(this.estimateGas,t,this.estimateGas[r])})}static getContractAddress(t){return ve(t)}static getInterface(t){return gn.isInterface(t)?t:new gn(t)}deployed(){return this._deployed()}_deployed(t){return this._deployedPromise||(this.deployTransaction?this._deployedPromise=this.deployTransaction.wait().then(()=>this):this._deployedPromise=this.provider.getCode(this.address,t).then(t=>("0x"===t&&bo.throwError("contract not deployed",g.errors.UNSUPPORTED_OPERATION,{contractAddress:this.address,operation:"getDeployed"}),this))),this._deployedPromise}fallback(t){this.signer||bo.throwError("sending a transactions require a signer",g.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction(fallback)"});const e=pt(t||{});return["from","to"].forEach(function(t){null!=e[t]&&bo.throwError("cannot override "+t,g.errors.UNSUPPORTED_OPERATION,{operation:t})}),e.to=this.resolvedAddress,this.deployed().then(()=>this.signer.sendTransaction(e))}connect(t){"string"==typeof t&&(t=new xn(t,this.provider));const e=new this.constructor(this.address,this.interface,t);return this.deployTransaction&&ut(e,"deployTransaction",this.deployTransaction),e}attach(t){return new this.constructor(t,this.interface,this.signer||this.provider)}static isIndexed(t){return fn.isIndexed(t)}_normalizeRunningEvent(t){return this._runningEvents[t.tag]?this._runningEvents[t.tag]:t}_getRunningEvent(t){if("string"==typeof t){if("error"===t)return this._normalizeRunningEvent(new Io);if("event"===t)return this._normalizeRunningEvent(new To("event",null));if("*"===t)return this._normalizeRunningEvent(new Mo(this.address,this.interface));const e=this.interface.getEvent(t);return this._normalizeRunningEvent(new No(this.address,this.interface,e))}if(t.topics&&t.topics.length>0){try{const e=t.topics[0];if("string"!=typeof e)throw new Error("invalid topic");const r=this.interface.getEvent(e);return this._normalizeRunningEvent(new No(this.address,this.interface,r,t.topics))}catch(t){}const e={address:this.address,topics:t.topics};return this._normalizeRunningEvent(new To(Po(e),e))}return this._normalizeRunningEvent(new Mo(this.address,this.interface))}_checkRunningEvents(t){if(0===t.listenerCount()){delete this._runningEvents[t.tag];const e=this._wrappedEmits[t.tag];e&&t.filter&&(this.provider.off(t.filter,e),delete this._wrappedEmits[t.tag])}}_wrapEvent(t,e,r){const n=yt(e);return n.removeListener=()=>{r&&(t.removeListener(r),this._checkRunningEvents(t))},n.getBlock=()=>this.provider.getBlock(e.blockHash),n.getTransaction=()=>this.provider.getTransaction(e.transactionHash),n.getTransactionReceipt=()=>this.provider.getTransactionReceipt(e.transactionHash),t.prepareEvent(n),n}_addEventListener(t,e,r){if(this.provider||bo.throwError("events require a provider or a signer with a provider",g.errors.UNSUPPORTED_OPERATION,{operation:"once"}),t.addListener(e,r),this._runningEvents[t.tag]=t,!this._wrappedEmits[t.tag]){const r=r=>{let n=this._wrapEvent(t,r,e);if(null==n.decodeError)try{const e=t.getEmit(n);this.emit(t.filter,...e)}catch(t){n.decodeError=t.error}null!=t.filter&&this.emit("event",n),null!=n.decodeError&&this.emit("error",n.decodeError,n)};this._wrappedEmits[t.tag]=r,null!=t.filter&&this.provider.on(t.filter,r)}}queryFilter(t,e,r){const n=this._getRunningEvent(t),i=pt(n.filter);return"string"==typeof e&&_(e,32)?(null!=r&&bo.throwArgumentError("cannot specify toBlock with blockhash","toBlock",r),i.blockHash=e):(i.fromBlock=null!=e?e:0,i.toBlock=null!=r?r:"latest"),this.provider.getLogs(i).then(t=>t.map(t=>this._wrapEvent(n,t,null)))}on(t,e){return this._addEventListener(this._getRunningEvent(t),e,!1),this}once(t,e){return this._addEventListener(this._getRunningEvent(t),e,!0),this}emit(t,...e){if(!this.provider)return!1;const r=this._getRunningEvent(t),n=r.run(e)>0;return this._checkRunningEvents(r),n}listenerCount(t){return this.provider?null==t?Object.keys(this._runningEvents).reduce((t,e)=>t+this._runningEvents[e].listenerCount(),0):this._getRunningEvent(t).listenerCount():0}listeners(t){if(!this.provider)return[];if(null==t){const t=[];for(let e in this._runningEvents)this._runningEvents[e].listeners().forEach(e=>{t.push(e)});return t}return this._getRunningEvent(t).listeners()}removeAllListeners(t){if(!this.provider)return this;if(null==t){for(const t in this._runningEvents){const e=this._runningEvents[t];e.removeAllListeners(),this._checkRunningEvents(e)}return this}const e=this._getRunningEvent(t);return e.removeAllListeners(),this._checkRunningEvents(e),this}off(t,e){if(!this.provider)return this;const r=this._getRunningEvent(t);return r.removeListener(e),this._checkRunningEvents(r),this}removeListener(t,e){return this.off(t,e)}}class Ro extends Bo{}class Fo{constructor(t){ut(this,"alphabet",t),ut(this,"base",t.length),ut(this,"_alphabetMap",{}),ut(this,"_leader",t.charAt(0));for(let e=0;e<t.length;e++)this._alphabetMap[t.charAt(e)]=e}encode(t){let e=k(t);if(0===e.length)return"";let r=[0];for(let t=0;t<e.length;++t){let n=e[t];for(let t=0;t<r.length;++t)n+=r[t]<<8,r[t]=n%this.base,n=n/this.base|0;for(;n>0;)r.push(n%this.base),n=n/this.base|0}let n="";for(let t=0;0===e[t]&&t<e.length-1;++t)n+=this._leader;for(let t=r.length-1;t>=0;--t)n+=this.alphabet[r[t]];return n}decode(t){if("string"!=typeof t)throw new TypeError("Expected String");let e=[];if(0===t.length)return new Uint8Array(e);e.push(0);for(let r=0;r<t.length;r++){let n=this._alphabetMap[t[r]];if(void 0===n)throw new Error("Non-base"+this.base+" character");let i=n;for(let t=0;t<e.length;++t)i+=e[t]*this.base,e[t]=255&i,i>>=8;for(;i>0;)e.push(255&i),i>>=8}for(let r=0;t[r]===this._leader&&r<t.length-1;++r)e.push(0);return k(new Uint8Array(e.reverse()))}}new Fo("abcdefghijklmnopqrstuvwxyz234567");const Oo=new Fo("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");var Do;!function(t){t.sha256="sha256",t.sha512="sha512"}(Do||(Do={}));const Uo=new g("sha2/5.8.0");function Lo(t){return"0x"+di.ripemd160().update(k(t)).digest("hex")}function qo(t){return"0x"+di.sha256().update(k(t)).digest("hex")}function zo(t,e,r){return Do[t]||Uo.throwError("unsupported algorithm "+t,g.errors.UNSUPPORTED_OPERATION,{operation:"hmac",algorithm:t}),"0x"+di.hmac(di[t],k(e)).update(k(r)).digest("hex")}function Go(t,e,r,n,i){let o;t=k(t),e=k(e);let s=1;const a=new Uint8Array(n),l=new Uint8Array(e.length+4);let c,u;l.set(e);for(let h=1;h<=s;h++){l[e.length]=h>>24&255,l[e.length+1]=h>>16&255,l[e.length+2]=h>>8&255,l[e.length+3]=255&h;let d=k(zo(i,t,l));o||(o=d.length,u=new Uint8Array(o),s=Math.ceil(n/o),c=n-(s-1)*o),u.set(d);for(let e=1;e<r;e++){d=k(zo(i,t,d));for(let t=0;t<o;t++)u[t]^=d[t]}const f=(h-1)*o,p=h===s?c:o;a.set(k(u).slice(0,p),f)}return T(a)}const jo=new g("wordlists/5.8.0");class Ho{constructor(t){jo.checkAbstract(new.target,Ho),ut(this,"locale",t)}split(t){return t.toLowerCase().split(/ +/g)}join(t){return t.join(" ")}static check(t){const e=[];for(let r=0;r<2048;r++){const n=t.getWord(r);if(r!==t.getWordIndex(n))return"0x";e.push(n)}return mr(e.join("\n")+"\n")}static register(t,e){e||(e=t.locale)}}let Ko=null;function Wo(t){if(null==Ko&&(Ko="AbandonAbilityAbleAboutAboveAbsentAbsorbAbstractAbsurdAbuseAccessAccidentAccountAccuseAchieveAcidAcousticAcquireAcrossActActionActorActressActualAdaptAddAddictAddressAdjustAdmitAdultAdvanceAdviceAerobicAffairAffordAfraidAgainAgeAgentAgreeAheadAimAirAirportAisleAlarmAlbumAlcoholAlertAlienAllAlleyAllowAlmostAloneAlphaAlreadyAlsoAlterAlwaysAmateurAmazingAmongAmountAmusedAnalystAnchorAncientAngerAngleAngryAnimalAnkleAnnounceAnnualAnotherAnswerAntennaAntiqueAnxietyAnyApartApologyAppearAppleApproveAprilArchArcticAreaArenaArgueArmArmedArmorArmyAroundArrangeArrestArriveArrowArtArtefactArtistArtworkAskAspectAssaultAssetAssistAssumeAsthmaAthleteAtomAttackAttendAttitudeAttractAuctionAuditAugustAuntAuthorAutoAutumnAverageAvocadoAvoidAwakeAwareAwayAwesomeAwfulAwkwardAxisBabyBachelorBaconBadgeBagBalanceBalconyBallBambooBananaBannerBarBarelyBargainBarrelBaseBasicBasketBattleBeachBeanBeautyBecauseBecomeBeefBeforeBeginBehaveBehindBelieveBelowBeltBenchBenefitBestBetrayBetterBetweenBeyondBicycleBidBikeBindBiologyBirdBirthBitterBlackBladeBlameBlanketBlastBleakBlessBlindBloodBlossomBlouseBlueBlurBlushBoardBoatBodyBoilBombBoneBonusBookBoostBorderBoringBorrowBossBottomBounceBoxBoyBracketBrainBrandBrassBraveBreadBreezeBrickBridgeBriefBrightBringBriskBroccoliBrokenBronzeBroomBrotherBrownBrushBubbleBuddyBudgetBuffaloBuildBulbBulkBulletBundleBunkerBurdenBurgerBurstBusBusinessBusyButterBuyerBuzzCabbageCabinCableCactusCageCakeCallCalmCameraCampCanCanalCancelCandyCannonCanoeCanvasCanyonCapableCapitalCaptainCarCarbonCardCargoCarpetCarryCartCaseCashCasinoCastleCasualCatCatalogCatchCategoryCattleCaughtCauseCautionCaveCeilingCeleryCementCensusCenturyCerealCertainChairChalkChampionChangeChaosChapterChargeChaseChatCheapCheckCheeseChefCherryChestChickenChiefChildChimneyChoiceChooseChronicChuckleChunkChurnCigarCinnamonCircleCitizenCityCivilClaimClapClarifyClawClayCleanClerkCleverClickClientCliffClimbClinicClipClockClogCloseClothCloudClownClubClumpClusterClutchCoachCoastCoconutCodeCoffeeCoilCoinCollectColorColumnCombineComeComfortComicCommonCompanyConcertConductConfirmCongressConnectConsiderControlConvinceCookCoolCopperCopyCoralCoreCornCorrectCostCottonCouchCountryCoupleCourseCousinCoverCoyoteCrackCradleCraftCramCraneCrashCraterCrawlCrazyCreamCreditCreekCrewCricketCrimeCrispCriticCropCrossCrouchCrowdCrucialCruelCruiseCrumbleCrunchCrushCryCrystalCubeCultureCupCupboardCuriousCurrentCurtainCurveCushionCustomCuteCycleDadDamageDampDanceDangerDaringDashDaughterDawnDayDealDebateDebrisDecadeDecemberDecideDeclineDecorateDecreaseDeerDefenseDefineDefyDegreeDelayDeliverDemandDemiseDenialDentistDenyDepartDependDepositDepthDeputyDeriveDescribeDesertDesignDeskDespairDestroyDetailDetectDevelopDeviceDevoteDiagramDialDiamondDiaryDiceDieselDietDifferDigitalDignityDilemmaDinnerDinosaurDirectDirtDisagreeDiscoverDiseaseDishDismissDisorderDisplayDistanceDivertDivideDivorceDizzyDoctorDocumentDogDollDolphinDomainDonateDonkeyDonorDoorDoseDoubleDoveDraftDragonDramaDrasticDrawDreamDressDriftDrillDrinkDripDriveDropDrumDryDuckDumbDuneDuringDustDutchDutyDwarfDynamicEagerEagleEarlyEarnEarthEasilyEastEasyEchoEcologyEconomyEdgeEditEducateEffortEggEightEitherElbowElderElectricElegantElementElephantElevatorEliteElseEmbarkEmbodyEmbraceEmergeEmotionEmployEmpowerEmptyEnableEnactEndEndlessEndorseEnemyEnergyEnforceEngageEngineEnhanceEnjoyEnlistEnoughEnrichEnrollEnsureEnterEntireEntryEnvelopeEpisodeEqualEquipEraEraseErodeErosionErrorEruptEscapeEssayEssenceEstateEternalEthicsEvidenceEvilEvokeEvolveExactExampleExcessExchangeExciteExcludeExcuseExecuteExerciseExhaustExhibitExileExistExitExoticExpandExpectExpireExplainExposeExpressExtendExtraEyeEyebrowFabricFaceFacultyFadeFaintFaithFallFalseFameFamilyFamousFanFancyFantasyFarmFashionFatFatalFatherFatigueFaultFavoriteFeatureFebruaryFederalFeeFeedFeelFemaleFenceFestivalFetchFeverFewFiberFictionFieldFigureFileFilmFilterFinalFindFineFingerFinishFireFirmFirstFiscalFishFitFitnessFixFlagFlameFlashFlatFlavorFleeFlightFlipFloatFlockFloorFlowerFluidFlushFlyFoamFocusFogFoilFoldFollowFoodFootForceForestForgetForkFortuneForumForwardFossilFosterFoundFoxFragileFrameFrequentFreshFriendFringeFrogFrontFrostFrownFrozenFruitFuelFunFunnyFurnaceFuryFutureGadgetGainGalaxyGalleryGameGapGarageGarbageGardenGarlicGarmentGasGaspGateGatherGaugeGazeGeneralGeniusGenreGentleGenuineGestureGhostGiantGiftGiggleGingerGiraffeGirlGiveGladGlanceGlareGlassGlideGlimpseGlobeGloomGloryGloveGlowGlueGoatGoddessGoldGoodGooseGorillaGospelGossipGovernGownGrabGraceGrainGrantGrapeGrassGravityGreatGreenGridGriefGritGroceryGroupGrowGruntGuardGuessGuideGuiltGuitarGunGymHabitHairHalfHammerHamsterHandHappyHarborHardHarshHarvestHatHaveHawkHazardHeadHealthHeartHeavyHedgehogHeightHelloHelmetHelpHenHeroHiddenHighHillHintHipHireHistoryHobbyHockeyHoldHoleHolidayHollowHomeHoneyHoodHopeHornHorrorHorseHospitalHostHotelHourHoverHubHugeHumanHumbleHumorHundredHungryHuntHurdleHurryHurtHusbandHybridIceIconIdeaIdentifyIdleIgnoreIllIllegalIllnessImageImitateImmenseImmuneImpactImposeImproveImpulseInchIncludeIncomeIncreaseIndexIndicateIndoorIndustryInfantInflictInformInhaleInheritInitialInjectInjuryInmateInnerInnocentInputInquiryInsaneInsectInsideInspireInstallIntactInterestIntoInvestInviteInvolveIronIslandIsolateIssueItemIvoryJacketJaguarJarJazzJealousJeansJellyJewelJobJoinJokeJourneyJoyJudgeJuiceJumpJungleJuniorJunkJustKangarooKeenKeepKetchupKeyKickKidKidneyKindKingdomKissKitKitchenKiteKittenKiwiKneeKnifeKnockKnowLabLabelLaborLadderLadyLakeLampLanguageLaptopLargeLaterLatinLaughLaundryLavaLawLawnLawsuitLayerLazyLeaderLeafLearnLeaveLectureLeftLegLegalLegendLeisureLemonLendLengthLensLeopardLessonLetterLevelLiarLibertyLibraryLicenseLifeLiftLightLikeLimbLimitLinkLionLiquidListLittleLiveLizardLoadLoanLobsterLocalLockLogicLonelyLongLoopLotteryLoudLoungeLoveLoyalLuckyLuggageLumberLunarLunchLuxuryLyricsMachineMadMagicMagnetMaidMailMainMajorMakeMammalManManageMandateMangoMansionManualMapleMarbleMarchMarginMarineMarketMarriageMaskMassMasterMatchMaterialMathMatrixMatterMaximumMazeMeadowMeanMeasureMeatMechanicMedalMediaMelodyMeltMemberMemoryMentionMenuMercyMergeMeritMerryMeshMessageMetalMethodMiddleMidnightMilkMillionMimicMindMinimumMinorMinuteMiracleMirrorMiseryMissMistakeMixMixedMixtureMobileModelModifyMomMomentMonitorMonkeyMonsterMonthMoonMoralMoreMorningMosquitoMotherMotionMotorMountainMouseMoveMovieMuchMuffinMuleMultiplyMuscleMuseumMushroomMusicMustMutualMyselfMysteryMythNaiveNameNapkinNarrowNastyNationNatureNearNeckNeedNegativeNeglectNeitherNephewNerveNestNetNetworkNeutralNeverNewsNextNiceNightNobleNoiseNomineeNoodleNormalNorthNoseNotableNoteNothingNoticeNovelNowNuclearNumberNurseNutOakObeyObjectObligeObscureObserveObtainObviousOccurOceanOctoberOdorOffOfferOfficeOftenOilOkayOldOliveOlympicOmitOnceOneOnionOnlineOnlyOpenOperaOpinionOpposeOptionOrangeOrbitOrchardOrderOrdinaryOrganOrientOriginalOrphanOstrichOtherOutdoorOuterOutputOutsideOvalOvenOverOwnOwnerOxygenOysterOzonePactPaddlePagePairPalacePalmPandaPanelPanicPantherPaperParadeParentParkParrotPartyPassPatchPathPatientPatrolPatternPausePavePaymentPeacePeanutPearPeasantPelicanPenPenaltyPencilPeoplePepperPerfectPermitPersonPetPhonePhotoPhrasePhysicalPianoPicnicPicturePiecePigPigeonPillPilotPinkPioneerPipePistolPitchPizzaPlacePlanetPlasticPlatePlayPleasePledgePluckPlugPlungePoemPoetPointPolarPolePolicePondPonyPoolPopularPortionPositionPossiblePostPotatoPotteryPovertyPowderPowerPracticePraisePredictPreferPreparePresentPrettyPreventPricePridePrimaryPrintPriorityPrisonPrivatePrizeProblemProcessProduceProfitProgramProjectPromoteProofPropertyProsperProtectProudProvidePublicPuddingPullPulpPulsePumpkinPunchPupilPuppyPurchasePurityPurposePursePushPutPuzzlePyramidQualityQuantumQuarterQuestionQuickQuitQuizQuoteRabbitRaccoonRaceRackRadarRadioRailRainRaiseRallyRampRanchRandomRangeRapidRareRateRatherRavenRawRazorReadyRealReasonRebelRebuildRecallReceiveRecipeRecordRecycleReduceReflectReformRefuseRegionRegretRegularRejectRelaxReleaseReliefRelyRemainRememberRemindRemoveRenderRenewRentReopenRepairRepeatReplaceReportRequireRescueResembleResistResourceResponseResultRetireRetreatReturnReunionRevealReviewRewardRhythmRibRibbonRiceRichRideRidgeRifleRightRigidRingRiotRippleRiskRitualRivalRiverRoadRoastRobotRobustRocketRomanceRoofRookieRoomRoseRotateRoughRoundRouteRoyalRubberRudeRugRuleRunRunwayRuralSadSaddleSadnessSafeSailSaladSalmonSalonSaltSaluteSameSampleSandSatisfySatoshiSauceSausageSaveSayScaleScanScareScatterSceneSchemeSchoolScienceScissorsScorpionScoutScrapScreenScriptScrubSeaSearchSeasonSeatSecondSecretSectionSecuritySeedSeekSegmentSelectSellSeminarSeniorSenseSentenceSeriesServiceSessionSettleSetupSevenShadowShaftShallowShareShedShellSheriffShieldShiftShineShipShiverShockShoeShootShopShortShoulderShoveShrimpShrugShuffleShySiblingSickSideSiegeSightSignSilentSilkSillySilverSimilarSimpleSinceSingSirenSisterSituateSixSizeSkateSketchSkiSkillSkinSkirtSkullSlabSlamSleepSlenderSliceSlideSlightSlimSloganSlotSlowSlushSmallSmartSmileSmokeSmoothSnackSnakeSnapSniffSnowSoapSoccerSocialSockSodaSoftSolarSoldierSolidSolutionSolveSomeoneSongSoonSorrySortSoulSoundSoupSourceSouthSpaceSpareSpatialSpawnSpeakSpecialSpeedSpellSpendSphereSpiceSpiderSpikeSpinSpiritSplitSpoilSponsorSpoonSportSpotSpraySpreadSpringSpySquareSqueezeSquirrelStableStadiumStaffStageStairsStampStandStartStateStaySteakSteelStemStepStereoStickStillStingStockStomachStoneStoolStoryStoveStrategyStreetStrikeStrongStruggleStudentStuffStumbleStyleSubjectSubmitSubwaySuccessSuchSuddenSufferSugarSuggestSuitSummerSunSunnySunsetSuperSupplySupremeSureSurfaceSurgeSurpriseSurroundSurveySuspectSustainSwallowSwampSwapSwarmSwearSweetSwiftSwimSwingSwitchSwordSymbolSymptomSyrupSystemTableTackleTagTailTalentTalkTankTapeTargetTaskTasteTattooTaxiTeachTeamTellTenTenantTennisTentTermTestTextThankThatThemeThenTheoryThereTheyThingThisThoughtThreeThriveThrowThumbThunderTicketTideTigerTiltTimberTimeTinyTipTiredTissueTitleToastTobaccoTodayToddlerToeTogetherToiletTokenTomatoTomorrowToneTongueTonightToolToothTopTopicToppleTorchTornadoTortoiseTossTotalTouristTowardTowerTownToyTrackTradeTrafficTragicTrainTransferTrapTrashTravelTrayTreatTreeTrendTrialTribeTrickTriggerTrimTripTrophyTroubleTruckTrueTrulyTrumpetTrustTruthTryTubeTuitionTumbleTunaTunnelTurkeyTurnTurtleTwelveTwentyTwiceTwinTwistTwoTypeTypicalUglyUmbrellaUnableUnawareUncleUncoverUnderUndoUnfairUnfoldUnhappyUniformUniqueUnitUniverseUnknownUnlockUntilUnusualUnveilUpdateUpgradeUpholdUponUpperUpsetUrbanUrgeUsageUseUsedUsefulUselessUsualUtilityVacantVacuumVagueValidValleyValveVanVanishVaporVariousVastVaultVehicleVelvetVendorVentureVenueVerbVerifyVersionVeryVesselVeteranViableVibrantViciousVictoryVideoViewVillageVintageViolinVirtualVirusVisaVisitVisualVitalVividVocalVoiceVoidVolcanoVolumeVoteVoyageWageWagonWaitWalkWallWalnutWantWarfareWarmWarriorWashWaspWasteWaterWaveWayWealthWeaponWearWeaselWeatherWebWeddingWeekendWeirdWelcomeWestWetWhaleWhatWheatWheelWhenWhereWhipWhisperWideWidthWifeWildWillWinWindowWineWingWinkWinnerWinterWireWisdomWiseWishWitnessWolfWomanWonderWoodWoolWordWorkWorldWorryWorthWrapWreckWrestleWristWriteWrongYardYearYellowYouYoungYouthZebraZeroZoneZoo".replace(/([A-Z])/g," $1").toLowerCase().substring(1).split(" "),"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60"!==Ho.check(t)))throw Ko=null,new Error("BIP39 Wordlist for en (English) FAILED")}const Vo=new class extends Ho{constructor(){super("en")}getWord(t){return Wo(this),Ko[t]}getWordIndex(t){return Wo(this),Ko.indexOf(t)}};Ho.register(Vo);const $o={en:Vo},Jo=new g("hdnode/5.8.0"),Qo=H.from("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),Yo=Ve("Bitcoin seed"),Xo=2147483648;function Zo(t){return(1<<t)-1<<8-t}function ts(t){return(1<<t)-1}function es(t){return F(T(t),32)}function rs(t){return Oo.encode(S([t,N(qo(qo(t)),0,4)]))}function ns(t){if(null==t)return $o.en;if("string"==typeof t){const e=$o[t];return null==e&&Jo.throwArgumentError("unknown locale","wordlist",t),e}return t}const is={},os="m/44'/60'/0'/0/0";class ss{constructor(t,e,r,n,i,o,s,a){if(t!==is)throw new Error("HDNode constructor cannot be called directly");if(e){const t=new Xi(e);ut(this,"privateKey",t.privateKey),ut(this,"publicKey",t.compressedPublicKey)}else ut(this,"privateKey",null),ut(this,"publicKey",T(r));ut(this,"parentFingerprint",n),ut(this,"fingerprint",N(Lo(qo(this.publicKey)),0,4)),ut(this,"address",ao(this.publicKey)),ut(this,"chainCode",i),ut(this,"index",o),ut(this,"depth",s),null==a?(ut(this,"mnemonic",null),ut(this,"path",null)):"string"==typeof a?(ut(this,"mnemonic",null),ut(this,"path",a)):(ut(this,"mnemonic",a),ut(this,"path",a.path))}get extendedKey(){if(this.depth>=256)throw new Error("Depth too large!");return rs(S([null!=this.privateKey?"0x0488ADE4":"0x0488B21E",T(this.depth),this.parentFingerprint,F(T(this.index),4),this.chainCode,null!=this.privateKey?S(["0x00",this.privateKey]):this.publicKey]))}neuter(){return new ss(is,null,this.publicKey,this.parentFingerprint,this.chainCode,this.index,this.depth,this.path)}_derive(t){if(t>4294967295)throw new Error("invalid index - "+String(t));let e=this.path;e&&(e+="/"+(2147483647&t));const r=new Uint8Array(37);if(t&Xo){if(!this.privateKey)throw new Error("cannot derive child of neutered node");r.set(k(this.privateKey),1),e&&(e+="'")}else r.set(k(this.publicKey));for(let e=24;e>=0;e-=8)r[33+(e>>3)]=t>>24-e&255;const n=k(zo(Do.sha512,this.chainCode,r)),i=n.slice(0,32),o=n.slice(32);let s=null,a=null;if(this.privateKey)s=es(H.from(i).add(this.privateKey).mod(Qo));else{a=new Xi(T(i))._addPoint(this.publicKey)}let l=e;const c=this.mnemonic;return c&&(l=Object.freeze({phrase:c.phrase,path:e,locale:c.locale||"en"})),new ss(is,s,a,this.fingerprint,es(o),t,this.depth+1,l)}derivePath(t){const e=t.split("/");if(0===e.length||"m"===e[0]&&0!==this.depth)throw new Error("invalid path - "+t);"m"===e[0]&&e.shift();let r=this;for(let t=0;t<e.length;t++){const n=e[t];if(n.match(/^[0-9]+'$/)){const t=parseInt(n.substring(0,n.length-1));if(t>=Xo)throw new Error("invalid path index - "+n);r=r._derive(Xo+t)}else{if(!n.match(/^[0-9]+$/))throw new Error("invalid path component - "+n);{const t=parseInt(n);if(t>=Xo)throw new Error("invalid path index - "+n);r=r._derive(t)}}}return r}static _fromSeed(t,e){const r=k(t);if(r.length<16||r.length>64)throw new Error("invalid seed");const n=k(zo(Do.sha512,Yo,r));return new ss(is,es(n.slice(0,32)),null,"0x00000000",es(n.slice(32)),0,0,e)}static fromMnemonic(t,e,r){return t=cs(ls(t,r=ns(r)),r),ss._fromSeed(as(t,e),{phrase:t,path:"m",locale:r.locale})}static fromSeed(t){return ss._fromSeed(t,null)}static fromExtendedKey(t){const e=Oo.decode(t);82===e.length&&rs(e.slice(0,78))===t||Jo.throwArgumentError("invalid extended key","extendedKey","[REDACTED]");const r=e[4],n=T(e.slice(5,9)),i=parseInt(T(e.slice(9,13)).substring(2),16),o=T(e.slice(13,45)),s=e.slice(45,78);switch(T(e.slice(0,4))){case"0x0488b21e":case"0x043587cf":return new ss(is,null,T(s),n,o,i,r,null);case"0x0488ade4":case"0x04358394 ":if(0!==s[0])break;return new ss(is,T(s.slice(1)),null,n,o,i,r,null)}return Jo.throwArgumentError("invalid extended key","extendedKey","[REDACTED]")}}function as(t,e){e||(e="");const r=Ve("mnemonic"+e,Ge.NFKD);return Go(Ve(t,Ge.NFKD),r,2048,64,"sha512")}function ls(t,e){e=ns(e),Jo.checkNormalize();const r=e.split(t);if(r.length%3!=0)throw new Error("invalid mnemonic");const n=k(new Uint8Array(Math.ceil(11*r.length/8)));let i=0;for(let t=0;t<r.length;t++){let o=e.getWordIndex(r[t].normalize("NFKD"));if(-1===o)throw new Error("invalid mnemonic");for(let t=0;t<11;t++)o&1<<10-t&&(n[i>>3]|=1<<7-i%8),i++}const o=32*r.length/3,s=Zo(r.length/3);if((k(qo(n.slice(0,o/8)))[0]&s)!==(n[n.length-1]&s))throw new Error("invalid checksum");return T(n.slice(0,o/8))}function cs(t,e){if(e=ns(e),(t=k(t)).length%4!=0||t.length<16||t.length>32)throw new Error("invalid entropy");const r=[0];let n=11;for(let e=0;e<t.length;e++)n>8?(r[r.length-1]<<=8,r[r.length-1]|=t[e],n-=8):(r[r.length-1]<<=n,r[r.length-1]|=t[e]>>8-n,r.push(t[e]&ts(8-n)),n+=3);const i=t.length/4,o=k(qo(t))[0]&Zo(i);return r[r.length-1]<<=i,r[r.length-1]|=o>>8-i,e.join(r.map(t=>e.getWord(t)))}const us=new g("random/5.8.0");const hs=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("unable to locate global object")}();let ds=hs.crypto||hs.msCrypto;function fs(t){(t<=0||t>1024||t%1||t!=t)&&us.throwArgumentError("invalid length","length",t);const e=new Uint8Array(t);return ds.getRandomValues(e),k(e)}function ps(t){for(let e=(t=t.slice()).length-1;e>0;e--){const r=Math.floor(Math.random()*(e+1)),n=t[e];t[e]=t[r],t[r]=n}return t}ds&&ds.getRandomValues||(us.warn("WARNING: Missing strong random number source"),ds={getRandomValues:function(t){return us.throwError("no secure random source avaialble",g.errors.UNSUPPORTED_OPERATION,{operation:"crypto.getRandomValues"})}});var ms,gs={exports:{}};var vs=(ms||(ms=1,function(t){!function(){function e(t){return parseInt(t)===t}function r(t){if(!e(t.length))return!1;for(var r=0;r<t.length;r++)if(!e(t[r])||t[r]<0||t[r]>255)return!1;return!0}function n(t,n){if(t.buffer&&ArrayBuffer.isView(t)&&"Uint8Array"===t.name)return n&&(t=t.slice?t.slice():Array.prototype.slice.call(t)),t;if(Array.isArray(t)){if(!r(t))throw new Error("Array contains invalid value: "+t);return new Uint8Array(t)}if(e(t.length)&&r(t))return new Uint8Array(t);throw new Error("unsupported array-like object")}function i(t){return new Uint8Array(t)}function o(t,e,r,n,i){null==n&&null==i||(t=t.slice?t.slice(n,i):Array.prototype.slice.call(t,n,i)),e.set(t,r)}var s,a={toBytes:function(t){var e=[],r=0;for(t=encodeURI(t);r<t.length;){var i=t.charCodeAt(r++);37===i?(e.push(parseInt(t.substr(r,2),16)),r+=2):e.push(i)}return n(e)},fromBytes:function(t){for(var e=[],r=0;r<t.length;){var n=t[r];n<128?(e.push(String.fromCharCode(n)),r++):n>191&&n<224?(e.push(String.fromCharCode((31&n)<<6|63&t[r+1])),r+=2):(e.push(String.fromCharCode((15&n)<<12|(63&t[r+1])<<6|63&t[r+2])),r+=3)}return e.join("")}},l=(s="0123456789abcdef",{toBytes:function(t){for(var e=[],r=0;r<t.length;r+=2)e.push(parseInt(t.substr(r,2),16));return e},fromBytes:function(t){for(var e=[],r=0;r<t.length;r++){var n=t[r];e.push(s[(240&n)>>4]+s[15&n])}return e.join("")}}),c={16:10,24:12,32:14},u=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],h=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],d=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],f=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],p=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],m=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],g=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],v=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],y=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],w=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],b=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],E=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],A=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],k=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],S=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function C(t){for(var e=[],r=0;r<t.length;r+=4)e.push(t[r]<<24|t[r+1]<<16|t[r+2]<<8|t[r+3]);return e}var x=function(t){if(!(this instanceof x))throw Error("AES must be instanitated with `new`");Object.defineProperty(this,"key",{value:n(t,!0)}),this._prepare()};x.prototype._prepare=function(){var t=c[this.key.length];if(null==t)throw new Error("invalid key size (must be 16, 24 or 32 bytes)");this._Ke=[],this._Kd=[];for(var e=0;e<=t;e++)this._Ke.push([0,0,0,0]),this._Kd.push([0,0,0,0]);var r,n=4*(t+1),i=this.key.length/4,o=C(this.key);for(e=0;e<i;e++)r=e>>2,this._Ke[r][e%4]=o[e],this._Kd[t-r][e%4]=o[e];for(var s,a=0,l=i;l<n;){if(s=o[i-1],o[0]^=h[s>>16&255]<<24^h[s>>8&255]<<16^h[255&s]<<8^h[s>>24&255]^u[a]<<24,a+=1,8!=i)for(e=1;e<i;e++)o[e]^=o[e-1];else{for(e=1;e<i/2;e++)o[e]^=o[e-1];for(s=o[i/2-1],o[i/2]^=h[255&s]^h[s>>8&255]<<8^h[s>>16&255]<<16^h[s>>24&255]<<24,e=i/2+1;e<i;e++)o[e]^=o[e-1]}for(e=0;e<i&&l<n;)d=l>>2,f=l%4,this._Ke[d][f]=o[e],this._Kd[t-d][f]=o[e++],l++}for(var d=1;d<t;d++)for(var f=0;f<4;f++)s=this._Kd[d][f],this._Kd[d][f]=E[s>>24&255]^A[s>>16&255]^k[s>>8&255]^S[255&s]},x.prototype.encrypt=function(t){if(16!=t.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var e=this._Ke.length-1,r=[0,0,0,0],n=C(t),o=0;o<4;o++)n[o]^=this._Ke[0][o];for(var s=1;s<e;s++){for(o=0;o<4;o++)r[o]=f[n[o]>>24&255]^p[n[(o+1)%4]>>16&255]^m[n[(o+2)%4]>>8&255]^g[255&n[(o+3)%4]]^this._Ke[s][o];n=r.slice()}var a,l=i(16);for(o=0;o<4;o++)a=this._Ke[e][o],l[4*o]=255&(h[n[o]>>24&255]^a>>24),l[4*o+1]=255&(h[n[(o+1)%4]>>16&255]^a>>16),l[4*o+2]=255&(h[n[(o+2)%4]>>8&255]^a>>8),l[4*o+3]=255&(h[255&n[(o+3)%4]]^a);return l},x.prototype.decrypt=function(t){if(16!=t.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var e=this._Kd.length-1,r=[0,0,0,0],n=C(t),o=0;o<4;o++)n[o]^=this._Kd[0][o];for(var s=1;s<e;s++){for(o=0;o<4;o++)r[o]=v[n[o]>>24&255]^y[n[(o+3)%4]>>16&255]^w[n[(o+2)%4]>>8&255]^b[255&n[(o+1)%4]]^this._Kd[s][o];n=r.slice()}var a,l=i(16);for(o=0;o<4;o++)a=this._Kd[e][o],l[4*o]=255&(d[n[o]>>24&255]^a>>24),l[4*o+1]=255&(d[n[(o+3)%4]>>16&255]^a>>16),l[4*o+2]=255&(d[n[(o+2)%4]>>8&255]^a>>8),l[4*o+3]=255&(d[255&n[(o+1)%4]]^a);return l};var _=function(t){if(!(this instanceof _))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new x(t)};_.prototype.encrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),s=0;s<t.length;s+=16)o(t,r,0,s,s+16),o(r=this._aes.encrypt(r),e,s);return e},_.prototype.decrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),s=0;s<t.length;s+=16)o(t,r,0,s,s+16),o(r=this._aes.decrypt(r),e,s);return e};var P=function(t,e){if(!(this instanceof P))throw Error("AES must be instanitated with `new`");if(this.description="Cipher Block Chaining",this.name="cbc",e){if(16!=e.length)throw new Error("invalid initialation vector size (must be 16 bytes)")}else e=i(16);this._lastCipherblock=n(e,!0),this._aes=new x(t)};P.prototype.encrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),s=0;s<t.length;s+=16){o(t,r,0,s,s+16);for(var a=0;a<16;a++)r[a]^=this._lastCipherblock[a];this._lastCipherblock=this._aes.encrypt(r),o(this._lastCipherblock,e,s)}return e},P.prototype.decrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),s=0;s<t.length;s+=16){o(t,r,0,s,s+16),r=this._aes.decrypt(r);for(var a=0;a<16;a++)e[s+a]=r[a]^this._lastCipherblock[a];o(t,this._lastCipherblock,0,s,s+16)}return e};var T=function(t,e,r){if(!(this instanceof T))throw Error("AES must be instanitated with `new`");if(this.description="Cipher Feedback",this.name="cfb",e){if(16!=e.length)throw new Error("invalid initialation vector size (must be 16 size)")}else e=i(16);r||(r=1),this.segmentSize=r,this._shiftRegister=n(e,!0),this._aes=new x(t)};T.prototype.encrypt=function(t){if(t.length%this.segmentSize!=0)throw new Error("invalid plaintext size (must be segmentSize bytes)");for(var e,r=n(t,!0),i=0;i<r.length;i+=this.segmentSize){e=this._aes.encrypt(this._shiftRegister);for(var s=0;s<this.segmentSize;s++)r[i+s]^=e[s];o(this._shiftRegister,this._shiftRegister,0,this.segmentSize),o(r,this._shiftRegister,16-this.segmentSize,i,i+this.segmentSize)}return r},T.prototype.decrypt=function(t){if(t.length%this.segmentSize!=0)throw new Error("invalid ciphertext size (must be segmentSize bytes)");for(var e,r=n(t,!0),i=0;i<r.length;i+=this.segmentSize){e=this._aes.encrypt(this._shiftRegister);for(var s=0;s<this.segmentSize;s++)r[i+s]^=e[s];o(this._shiftRegister,this._shiftRegister,0,this.segmentSize),o(t,this._shiftRegister,16-this.segmentSize,i,i+this.segmentSize)}return r};var I=function(t,e){if(!(this instanceof I))throw Error("AES must be instanitated with `new`");if(this.description="Output Feedback",this.name="ofb",e){if(16!=e.length)throw new Error("invalid initialation vector size (must be 16 bytes)")}else e=i(16);this._lastPrecipher=n(e,!0),this._lastPrecipherIndex=16,this._aes=new x(t)};I.prototype.encrypt=function(t){for(var e=n(t,!0),r=0;r<e.length;r++)16===this._lastPrecipherIndex&&(this._lastPrecipher=this._aes.encrypt(this._lastPrecipher),this._lastPrecipherIndex=0),e[r]^=this._lastPrecipher[this._lastPrecipherIndex++];return e},I.prototype.decrypt=I.prototype.encrypt;var N=function(t){if(!(this instanceof N))throw Error("Counter must be instanitated with `new`");0===t||t||(t=1),"number"==typeof t?(this._counter=i(16),this.setValue(t)):this.setBytes(t)};N.prototype.setValue=function(t){if("number"!=typeof t||parseInt(t)!=t)throw new Error("invalid counter value (must be an integer)");for(var e=15;e>=0;--e)this._counter[e]=t%256,t>>=8},N.prototype.setBytes=function(t){if(16!=(t=n(t,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=t},N.prototype.increment=function(){for(var t=15;t>=0;t--){if(255!==this._counter[t]){this._counter[t]++;break}this._counter[t]=0}};var M=function(t,e){if(!(this instanceof M))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",e instanceof N||(e=new N(e)),this._counter=e,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new x(t)};M.prototype.encrypt=function(t){for(var e=n(t,!0),r=0;r<e.length;r++)16===this._remainingCounterIndex&&(this._remainingCounter=this._aes.encrypt(this._counter._counter),this._remainingCounterIndex=0,this._counter.increment()),e[r]^=this._remainingCounter[this._remainingCounterIndex++];return e},M.prototype.decrypt=M.prototype.encrypt;var B={AES:x,Counter:N,ModeOfOperation:{ecb:_,cbc:P,cfb:T,ofb:I,ctr:M},utils:{hex:l,utf8:a},padding:{pkcs7:{pad:function(t){var e=16-(t=n(t,!0)).length%16,r=i(t.length+e);o(t,r);for(var s=t.length;s<r.length;s++)r[s]=e;return r},strip:function(t){if((t=n(t,!0)).length<16)throw new Error("PKCS#7 invalid length");var e=t[t.length-1];if(e>16)throw new Error("PKCS#7 padding byte out of range");for(var r=t.length-e,s=0;s<e;s++)if(t[r+s]!==e)throw new Error("PKCS#7 invalid padding byte");var a=i(r);return o(t,a,0,0,r),a}}},_arrayTest:{coerceArray:n,createArray:i,copyArray:o}};t.exports=B}()}(gs)),gs.exports),ys=r(vs);const ws="json-wallets/5.8.0";function bs(t){return"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),k(t)}function Es(t,e){for(t=String(t);t.length<e;)t="0"+t;return t}function As(t){return"string"==typeof t?Ve(t,Ge.NFKC):k(t)}function ks(t,e){let r=t;const n=e.toLowerCase().split("/");for(let t=0;t<n.length;t++){let e=null;for(const i in r)if(i.toLowerCase()===n[t]){e=r[i];break}if(null===e)return null;r=e}return r}function Ss(t){const e=k(t);e[6]=15&e[6]|64,e[8]=63&e[8]|128;const r=T(e);return[r.substring(2,10),r.substring(10,14),r.substring(14,18),r.substring(18,22),r.substring(22,34)].join("-")}const Cs=new g(ws);class xs extends wt{isCrowdsaleAccount(t){return!(!t||!t._isCrowdsaleAccount)}}function _s(t,e){const r=JSON.parse(t);e=As(e);const n=ge(ks(r,"ethaddr")),i=bs(ks(r,"encseed"));i&&i.length%16==0||Cs.throwArgumentError("invalid encseed","json",t);const o=k(Go(e,e,2e3,32,"sha256")).slice(0,16),s=i.slice(0,16),a=i.slice(16),l=new ys.ModeOfOperation.cbc(o,s),c=ys.padding.pkcs7.strip(k(l.decrypt(a)));let u="";for(let t=0;t<c.length;t++)u+=String.fromCharCode(c[t]);const h=te(Ve(u));return new xs({_isCrowdsaleAccount:!0,address:n,privateKey:h})}function Ps(t){let e=null;try{e=JSON.parse(t)}catch(t){return!1}return e.encseed&&e.ethaddr}function Ts(t){let e=null;try{e=JSON.parse(t)}catch(t){return!1}return!(!e.version||parseInt(e.version)!==e.version||3!==parseInt(e.version))}var Is,Ns={exports:{}};var Ms=(Is||(Is=1,function(t){!function(){const e=2147483647;function r(t){const e=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]);let r=1779033703,n=3144134277,i=1013904242,o=2773480762,s=1359893119,a=2600822924,l=528734635,c=1541459225;const u=new Uint32Array(64);function h(t){let h=0,d=t.length;for(;d>=64;){let f,p,m,g,v,y=r,w=n,b=i,E=o,A=s,k=a,S=l,C=c;for(p=0;p<16;p++)m=h+4*p,u[p]=(255&t[m])<<24|(255&t[m+1])<<16|(255&t[m+2])<<8|255&t[m+3];for(p=16;p<64;p++)f=u[p-2],g=(f>>>17|f<<15)^(f>>>19|f<<13)^f>>>10,f=u[p-15],v=(f>>>7|f<<25)^(f>>>18|f<<14)^f>>>3,u[p]=(g+u[p-7]|0)+(v+u[p-16]|0)|0;for(p=0;p<64;p++)g=(((A>>>6|A<<26)^(A>>>11|A<<21)^(A>>>25|A<<7))+(A&k^~A&S)|0)+(C+(e[p]+u[p]|0)|0)|0,v=((y>>>2|y<<30)^(y>>>13|y<<19)^(y>>>22|y<<10))+(y&w^y&b^w&b)|0,C=S,S=k,k=A,A=E+g|0,E=b,b=w,w=y,y=g+v|0;r=r+y|0,n=n+w|0,i=i+b|0,o=o+E|0,s=s+A|0,a=a+k|0,l=l+S|0,c=c+C|0,h+=64,d-=64}}h(t);let d,f=t.length%64,p=t.length/536870912|0,m=t.length<<3,g=f<56?56:120,v=t.slice(t.length-f,t.length);for(v.push(128),d=f+1;d<g;d++)v.push(0);return v.push(p>>>24&255),v.push(p>>>16&255),v.push(p>>>8&255),v.push(p>>>0&255),v.push(m>>>24&255),v.push(m>>>16&255),v.push(m>>>8&255),v.push(m>>>0&255),h(v),[r>>>24&255,r>>>16&255,r>>>8&255,r>>>0&255,n>>>24&255,n>>>16&255,n>>>8&255,n>>>0&255,i>>>24&255,i>>>16&255,i>>>8&255,i>>>0&255,o>>>24&255,o>>>16&255,o>>>8&255,o>>>0&255,s>>>24&255,s>>>16&255,s>>>8&255,s>>>0&255,a>>>24&255,a>>>16&255,a>>>8&255,a>>>0&255,l>>>24&255,l>>>16&255,l>>>8&255,l>>>0&255,c>>>24&255,c>>>16&255,c>>>8&255,c>>>0&255]}function n(t,e,n){t=t.length<=64?t:r(t);const i=64+e.length+4,o=new Array(i),s=new Array(64);let a,l=[];for(a=0;a<64;a++)o[a]=54;for(a=0;a<t.length;a++)o[a]^=t[a];for(a=0;a<e.length;a++)o[64+a]=e[a];for(a=i-4;a<i;a++)o[a]=0;for(a=0;a<64;a++)s[a]=92;for(a=0;a<t.length;a++)s[a]^=t[a];function c(){for(let t=i-1;t>=i-4;t--){if(o[t]++,o[t]<=255)return;o[t]=0}}for(;n>=32;)c(),l=l.concat(r(s.concat(r(o)))),n-=32;return n>0&&(c(),l=l.concat(r(s.concat(r(o))).slice(0,n))),l}function i(t,e,r,n,i){let o;for(l(t,16*(2*r-1),i,0,16),o=0;o<2*r;o++)a(t,16*o,i,16),s(i,n),l(i,0,t,e+16*o,16);for(o=0;o<r;o++)l(t,e+2*o*16,t,16*o,16);for(o=0;o<r;o++)l(t,e+16*(2*o+1),t,16*(o+r),16)}function o(t,e){return t<<e|t>>>32-e}function s(t,e){l(t,0,e,0,16);for(let t=8;t>0;t-=2)e[4]^=o(e[0]+e[12],7),e[8]^=o(e[4]+e[0],9),e[12]^=o(e[8]+e[4],13),e[0]^=o(e[12]+e[8],18),e[9]^=o(e[5]+e[1],7),e[13]^=o(e[9]+e[5],9),e[1]^=o(e[13]+e[9],13),e[5]^=o(e[1]+e[13],18),e[14]^=o(e[10]+e[6],7),e[2]^=o(e[14]+e[10],9),e[6]^=o(e[2]+e[14],13),e[10]^=o(e[6]+e[2],18),e[3]^=o(e[15]+e[11],7),e[7]^=o(e[3]+e[15],9),e[11]^=o(e[7]+e[3],13),e[15]^=o(e[11]+e[7],18),e[1]^=o(e[0]+e[3],7),e[2]^=o(e[1]+e[0],9),e[3]^=o(e[2]+e[1],13),e[0]^=o(e[3]+e[2],18),e[6]^=o(e[5]+e[4],7),e[7]^=o(e[6]+e[5],9),e[4]^=o(e[7]+e[6],13),e[5]^=o(e[4]+e[7],18),e[11]^=o(e[10]+e[9],7),e[8]^=o(e[11]+e[10],9),e[9]^=o(e[8]+e[11],13),e[10]^=o(e[9]+e[8],18),e[12]^=o(e[15]+e[14],7),e[13]^=o(e[12]+e[15],9),e[14]^=o(e[13]+e[12],13),e[15]^=o(e[14]+e[13],18);for(let r=0;r<16;++r)t[r]+=e[r]}function a(t,e,r,n){for(let i=0;i<n;i++)r[i]^=t[e+i]}function l(t,e,r,n,i){for(;i--;)r[n++]=t[e++]}function c(t){if(!t||"number"!=typeof t.length)return!1;for(let e=0;e<t.length;e++){const r=t[e];if("number"!=typeof r||r%1||r<0||r>=256)return!1}return!0}function u(t,e){if("number"!=typeof t||t%1)throw new Error("invalid "+e);return t}function h(t,r,o,s,h,d,f){if(o=u(o,"N"),s=u(s,"r"),h=u(h,"p"),d=u(d,"dkLen"),0===o||o&o-1)throw new Error("N must be power of 2");if(o>e/128/s)throw new Error("N too large");if(s>e/128/h)throw new Error("r too large");if(!c(t))throw new Error("password must be an array or buffer");if(t=Array.prototype.slice.call(t),!c(r))throw new Error("salt must be an array or buffer");r=Array.prototype.slice.call(r);let p=n(t,r,128*h*s);const m=new Uint32Array(32*h*s);for(let t=0;t<m.length;t++){const e=4*t;m[t]=(255&p[e+3])<<24|(255&p[e+2])<<16|(255&p[e+1])<<8|255&p[e+0]}const g=new Uint32Array(64*s),v=new Uint32Array(32*s*o),y=32*s,w=new Uint32Array(16),b=new Uint32Array(16),E=h*o*2;let A,k,S=0,C=null,x=!1,_=0,P=0;const T=f?parseInt(1e3/s):4294967295,I="undefined"!=typeof setImmediate?setImmediate:setTimeout,N=function(){if(x)return f(new Error("cancelled"),S/E);let e;switch(_){case 0:k=32*P*s,l(m,k,g,0,y),_=1,A=0;case 1:e=o-A,e>T&&(e=T);for(let t=0;t<e;t++)l(g,0,v,(A+t)*y,y),i(g,y,s,w,b);if(A+=e,S+=e,f){const t=parseInt(1e3*S/E);if(t!==C){if(x=f(null,S/E),x)break;C=t}}if(A<o)break;A=0,_=2;case 2:e=o-A,e>T&&(e=T);for(let t=0;t<e;t++){const t=g[16*(2*s-1)]&o-1;a(v,t*y,g,y),i(g,y,s,w,b)}if(A+=e,S+=e,f){const t=parseInt(1e3*S/E);if(t!==C){if(x=f(null,S/E),x)break;C=t}}if(A<o)break;if(l(g,0,m,k,y),P++,P<h){_=0;break}p=[];for(let t=0;t<m.length;t++)p.push(255&m[t]),p.push(m[t]>>8&255),p.push(m[t]>>16&255),p.push(m[t]>>24&255);const r=n(t,p,d);return f&&f(null,1,r),r}f&&I(N)};if(!f)for(;;){const t=N();if(null!=t)return t}N()}const d={scrypt:function(t,e,r,n,i,o,s){return new Promise(function(a,l){let c=0;s&&s(0),h(t,e,r,n,i,o,function(t,e,r){if(t)l(t);else if(r)s&&1!==c&&s(1),a(new Uint8Array(r));else if(s&&e!==c)return c=e,s(e)})})},syncScrypt:function(t,e,r,n,i,o){return new Uint8Array(h(t,e,r,n,i,o))}};t.exports=d}()}(Ns)),Ns.exports),Bs=r(Ms),Rs=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const Fs=new g(ws);function Os(t){return null!=t&&t.mnemonic&&t.mnemonic.phrase}class Ds extends wt{isKeystoreAccount(t){return!(!t||!t._isKeystoreAccount)}}function Us(t,e){const r=bs(ks(t,"crypto/ciphertext"));if(T(te(S([e.slice(16,32),r]))).substring(2)!==ks(t,"crypto/mac").toLowerCase())throw new Error("invalid password");const n=function(t,e,r){if("aes-128-ctr"===ks(t,"crypto/cipher")){const n=bs(ks(t,"crypto/cipherparams/iv")),i=new ys.Counter(n);return k(new ys.ModeOfOperation.ctr(e,i).decrypt(r))}return null}(t,e.slice(0,16),r);n||Fs.throwError("unsupported cipher",g.errors.UNSUPPORTED_OPERATION,{operation:"decrypt"});const i=e.slice(32,64),o=ao(n);if(t.address){let e=t.address.toLowerCase();if("0x"!==e.substring(0,2)&&(e="0x"+e),ge(e)!==o)throw new Error("address mismatch")}const s={_isKeystoreAccount:!0,address:o,privateKey:T(n)};if("0.1"===ks(t,"x-ethers/version")){const e=bs(ks(t,"x-ethers/mnemonicCiphertext")),r=bs(ks(t,"x-ethers/mnemonicCounter")),n=new ys.Counter(r),o=new ys.ModeOfOperation.ctr(i,n),a=ks(t,"x-ethers/path")||os,l=ks(t,"x-ethers/locale")||"en",c=k(o.decrypt(e));try{const t=cs(c,l),e=ss.fromMnemonic(t,null,l).derivePath(a);if(e.privateKey!=s.privateKey)throw new Error("mnemonic mismatch");s.mnemonic=e.mnemonic}catch(t){if(t.code!==g.errors.INVALID_ARGUMENT||"wordlist"!==t.argument)throw t}}return new Ds(s)}function Ls(t,e,r,n,i){return k(Go(t,e,r,n,i))}function qs(t,e,r,n,i){return Promise.resolve(Ls(t,e,r,n,i))}function zs(t,e,r,n,i){const o=As(e),s=ks(t,"crypto/kdf");if(s&&"string"==typeof s){const e=function(t,e){return Fs.throwArgumentError("invalid key-derivation function parameters",t,e)};if("scrypt"===s.toLowerCase()){const r=bs(ks(t,"crypto/kdfparams/salt")),a=parseInt(ks(t,"crypto/kdfparams/n")),l=parseInt(ks(t,"crypto/kdfparams/r")),c=parseInt(ks(t,"crypto/kdfparams/p"));a&&l&&c||e("kdf",s),a&a-1&&e("N",a);const u=parseInt(ks(t,"crypto/kdfparams/dklen"));return 32!==u&&e("dklen",u),n(o,r,a,l,c,64,i)}if("pbkdf2"===s.toLowerCase()){const n=bs(ks(t,"crypto/kdfparams/salt"));let i=null;const s=ks(t,"crypto/kdfparams/prf");"hmac-sha256"===s?i="sha256":"hmac-sha512"===s?i="sha512":e("prf",s);const a=parseInt(ks(t,"crypto/kdfparams/c")),l=parseInt(ks(t,"crypto/kdfparams/dklen"));return 32!==l&&e("dklen",l),r(o,n,a,l,i)}}return Fs.throwArgumentError("unsupported key-derivation function","kdf",s)}function Gs(t,e,r){if(Ps(t)){r&&r(0);const n=_s(t,e);return r&&r(1),Promise.resolve(n)}return Ts(t)?function(t,e,r){return Rs(this,void 0,void 0,function*(){const n=JSON.parse(t);return Us(n,yield zs(n,e,qs,Bs.scrypt,r))})}(t,e,r):Promise.reject(new Error("invalid JSON wallet"))}function js(t,e){if(Ps(t))return _s(t,e);if(Ts(t))return function(t,e){const r=JSON.parse(t);return Us(r,zs(r,e,Ls,Bs.syncScrypt))}(t,e);throw new Error("invalid JSON wallet")}var Hs=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const Ks=new g("wallet/5.8.0");class Ws extends Cn{constructor(t,e){if(super(),null!=(r=t)&&_(r.privateKey,32)&&null!=r.address){const e=new Xi(t.privateKey);if(ut(this,"_signingKey",()=>e),ut(this,"address",ao(this.publicKey)),this.address!==ge(t.address)&&Ks.throwArgumentError("privateKey/address mismatch","privateKey","[REDACTED]"),function(t){const e=t.mnemonic;return e&&e.phrase}(t)){const e=t.mnemonic;ut(this,"_mnemonic",()=>({phrase:e.phrase,path:e.path||os,locale:e.locale||"en"}));const r=this.mnemonic;ao(ss.fromMnemonic(r.phrase,null,r.locale).derivePath(r.path).privateKey)!==this.address&&Ks.throwArgumentError("mnemonic/address mismatch","privateKey","[REDACTED]")}else ut(this,"_mnemonic",()=>null)}else{if(Xi.isSigningKey(t))"secp256k1"!==t.curve&&Ks.throwArgumentError("unsupported curve; must be secp256k1","privateKey","[REDACTED]"),ut(this,"_signingKey",()=>t);else{"string"==typeof t&&t.match(/^[0-9a-f]*$/i)&&64===t.length&&(t="0x"+t);const e=new Xi(t);ut(this,"_signingKey",()=>e)}ut(this,"_mnemonic",()=>null),ut(this,"address",ao(this.publicKey))}var r;e&&!bn.isProvider(e)&&Ks.throwArgumentError("invalid provider","provider",e),ut(this,"provider",e||null)}get mnemonic(){return this._mnemonic()}get privateKey(){return this._signingKey().privateKey}get publicKey(){return this._signingKey().publicKey}getAddress(){return Promise.resolve(this.address)}connect(t){return new Ws(this,t)}signTransaction(t){return dt(t).then(e=>{null!=e.from&&(ge(e.from)!==this.address&&Ks.throwArgumentError("transaction from address mismatch","transaction.from",t.from),delete e.from);const r=this._signingKey().signDigest(te(go(e)));return go(e,r)})}signMessage(t){return Hs(this,void 0,void 0,function*(){return D(this._signingKey().signDigest(Kr(t)))})}_signTypedData(t,e,r){return Hs(this,void 0,void 0,function*(){const n=yield ln.resolveNames(t,e,r,t=>(null==this.provider&&Ks.throwError("cannot resolve ENS names without a provider",g.errors.UNSUPPORTED_OPERATION,{operation:"resolveName",value:t}),this.provider.resolveName(t)));return D(this._signingKey().signDigest(ln.hash(n.domain,e,n.value)))})}encrypt(t,e,r){if("function"!=typeof e||r||(r=e,e={}),r&&"function"!=typeof r)throw new Error("invalid callback");return e||(e={}),function(t,e,r,n){try{if(ge(t.address)!==ao(t.privateKey))throw new Error("address/privateKey mismatch");if(Os(t)){const e=t.mnemonic;if(ss.fromMnemonic(e.phrase,null,e.locale).derivePath(e.path||os).privateKey!=t.privateKey)throw new Error("mnemonic mismatch")}}catch(t){return Promise.reject(t)}"function"!=typeof r||n||(n=r,r={}),r||(r={});const i=k(t.privateKey),o=As(e);let s=null,a=null,l=null;if(Os(t)){const e=t.mnemonic;s=k(ls(e.phrase,e.locale||"en")),a=e.path||os,l=e.locale||"en"}let c=r.client;c||(c="ethers.js");let u=null;u=r.salt?k(r.salt):fs(32);let h=null;if(r.iv){if(h=k(r.iv),16!==h.length)throw new Error("invalid iv")}else h=fs(16);let d=null;if(r.uuid){if(d=k(r.uuid),16!==d.length)throw new Error("invalid uuid")}else d=fs(16);let f=1<<17,p=8,m=1;return r.scrypt&&(r.scrypt.N&&(f=r.scrypt.N),r.scrypt.r&&(p=r.scrypt.r),r.scrypt.p&&(m=r.scrypt.p)),Bs.scrypt(o,u,f,p,m,64,n).then(e=>{const r=(e=k(e)).slice(0,16),n=e.slice(16,32),o=e.slice(32,64),g=new ys.Counter(h),v=k(new ys.ModeOfOperation.ctr(r,g).encrypt(i)),y=te(S([n,v])),w={address:t.address.substring(2).toLowerCase(),id:Ss(d),version:3,crypto:{cipher:"aes-128-ctr",cipherparams:{iv:T(h).substring(2)},ciphertext:T(v).substring(2),kdf:"scrypt",kdfparams:{salt:T(u).substring(2),n:f,dklen:32,p:m,r:p},mac:y.substring(2)}};if(s){const t=fs(16),e=new ys.Counter(t),r=k(new ys.ModeOfOperation.ctr(o,e).encrypt(s)),n=new Date,i=n.getUTCFullYear()+"-"+Es(n.getUTCMonth()+1,2)+"-"+Es(n.getUTCDate(),2)+"T"+Es(n.getUTCHours(),2)+"-"+Es(n.getUTCMinutes(),2)+"-"+Es(n.getUTCSeconds(),2)+".0Z";w["x-ethers"]={client:c,gethFilename:"UTC--"+i+"--"+w.address,mnemonicCounter:T(t).substring(2),mnemonicCiphertext:T(r).substring(2),path:a,locale:l,version:"0.1"}}return JSON.stringify(w)})}(this,t,e,r)}static createRandom(t){let e=fs(16);t||(t={}),t.extraEntropy&&(e=k(N(te(S([e,t.extraEntropy])),0,16)));const r=cs(e,t.locale);return Ws.fromMnemonic(r,t.path,t.locale)}static fromEncryptedJson(t,e,r){return Gs(t,e,r).then(t=>new Ws(t))}static fromEncryptedJsonSync(t,e){return new Ws(js(t,e))}static fromMnemonic(t,e,r){return e||(e=os),new Ws(ss.fromMnemonic(t,null,r).derivePath(e))}}const Vs=new g("networks/5.8.0");function $s(t){const e=function(e,r){null==r&&(r={});const n=[];if(e.InfuraProvider&&"-"!==r.infura)try{n.push(new e.InfuraProvider(t,r.infura))}catch(t){}if(e.EtherscanProvider&&"-"!==r.etherscan)try{n.push(new e.EtherscanProvider(t,r.etherscan))}catch(t){}if(e.AlchemyProvider&&"-"!==r.alchemy)try{n.push(new e.AlchemyProvider(t,r.alchemy))}catch(t){}if(e.PocketProvider&&"-"!==r.pocket){const i=["goerli","ropsten","rinkeby","sepolia"];try{const o=new e.PocketProvider(t,r.pocket);o.network&&-1===i.indexOf(o.network.name)&&n.push(o)}catch(t){}}if(e.CloudflareProvider&&"-"!==r.cloudflare)try{n.push(new e.CloudflareProvider(t))}catch(t){}if(e.AnkrProvider&&"-"!==r.ankr)try{const i=["ropsten"],o=new e.AnkrProvider(t,r.ankr);o.network&&-1===i.indexOf(o.network.name)&&n.push(o)}catch(t){}if(e.QuickNodeProvider&&"-"!==r.quicknode)try{n.push(new e.QuickNodeProvider(t,r.quicknode))}catch(t){}if(0===n.length)return null;if(e.FallbackProvider){let i=1;return null!=r.quorum?i=r.quorum:"homestead"===t&&(i=2),new e.FallbackProvider(n,i)}return n[0]};return e.renetwork=function(t){return $s(t)},e}function Js(t,e){const r=function(r,n){return r.JsonRpcProvider?new r.JsonRpcProvider(t,e):null};return r.renetwork=function(e){return Js(t,e)},r}const Qs={chainId:1,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"homestead",_defaultProvider:$s("homestead")},Ys={chainId:3,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"ropsten",_defaultProvider:$s("ropsten")},Xs={chainId:63,name:"classicMordor",_defaultProvider:Js("https://www.ethercluster.com/mordor","classicMordor")},Zs={unspecified:{chainId:0,name:"unspecified"},homestead:Qs,mainnet:Qs,morden:{chainId:2,name:"morden"},ropsten:Ys,testnet:Ys,rinkeby:{chainId:4,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"rinkeby",_defaultProvider:$s("rinkeby")},kovan:{chainId:42,name:"kovan",_defaultProvider:$s("kovan")},goerli:{chainId:5,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"goerli",_defaultProvider:$s("goerli")},kintsugi:{chainId:1337702,name:"kintsugi"},sepolia:{chainId:11155111,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"sepolia",_defaultProvider:$s("sepolia")},holesky:{chainId:17e3,name:"holesky",_defaultProvider:$s("holesky")},classic:{chainId:61,name:"classic",_defaultProvider:Js("https://www.ethercluster.com/etc","classic")},classicMorden:{chainId:62,name:"classicMorden"},classicMordor:Xs,classicTestnet:Xs,classicKotti:{chainId:6,name:"classicKotti",_defaultProvider:Js("https://www.ethercluster.com/kotti","classicKotti")},xdai:{chainId:100,name:"xdai"},matic:{chainId:137,name:"matic",_defaultProvider:$s("matic")},maticmum:{chainId:80001,name:"maticmum",_defaultProvider:$s("maticmum")},optimism:{chainId:10,name:"optimism",_defaultProvider:$s("optimism")},"optimism-kovan":{chainId:69,name:"optimism-kovan"},"optimism-goerli":{chainId:420,name:"optimism-goerli"},"optimism-sepolia":{chainId:11155420,name:"optimism-sepolia"},arbitrum:{chainId:42161,name:"arbitrum"},"arbitrum-rinkeby":{chainId:421611,name:"arbitrum-rinkeby"},"arbitrum-goerli":{chainId:421613,name:"arbitrum-goerli"},"arbitrum-sepolia":{chainId:421614,name:"arbitrum-sepolia"},bnb:{chainId:56,name:"bnb"},bnbt:{chainId:97,name:"bnbt"}};function ta(t){if(null==t)return null;if("number"==typeof t){for(const e in Zs){const r=Zs[e];if(r.chainId===t)return{name:r.name,chainId:r.chainId,ensAddress:r.ensAddress||null,_defaultProvider:r._defaultProvider||null}}return{chainId:t,name:"unknown"}}if("string"==typeof t){const e=Zs[t];return null==e?null:{name:e.name,chainId:e.chainId,ensAddress:e.ensAddress,_defaultProvider:e._defaultProvider||null}}const e=Zs[t.name];if(!e)return"number"!=typeof t.chainId&&Vs.throwArgumentError("invalid network chainId","network",t),t;0!==t.chainId&&t.chainId!==e.chainId&&Vs.throwArgumentError("network chainId mismatch","network",t);let r=t._defaultProvider||null;var n;return null==r&&e._defaultProvider&&(r=(n=e._defaultProvider)&&"function"==typeof n.renetwork?e._defaultProvider.renetwork(t):e._defaultProvider),{name:t.name,chainId:e.chainId,ensAddress:t.ensAddress||e.ensAddress||null,_defaultProvider:r}}var ea=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};function ra(t,e){return ea(this,void 0,void 0,function*(){null==e&&(e={});const r={method:e.method||"GET",headers:e.headers||{},body:e.body||void 0};if(!0!==e.skipFetchSetup&&(r.mode="cors",r.cache="no-cache",r.credentials="same-origin",r.redirect="follow",r.referrer="client"),null!=e.fetchOptions){const t=e.fetchOptions;t.mode&&(r.mode=t.mode),t.cache&&(r.cache=t.cache),t.credentials&&(r.credentials=t.credentials),t.redirect&&(r.redirect=t.redirect),t.referrer&&(r.referrer=t.referrer)}const n=yield fetch(t,r),i=yield n.arrayBuffer(),o={};return n.headers.forEach?n.headers.forEach((t,e)=>{o[e.toLowerCase()]=t}):n.headers.keys().forEach(t=>{o[t.toLowerCase()]=n.headers.get(t)}),{headers:o,statusCode:n.status,statusMessage:n.statusText,body:k(new Uint8Array(i))}})}var na=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const ia=new g("web/5.8.0");function oa(t){return new Promise(e=>{setTimeout(e,t)})}function sa(t,e){if(null==t)return null;if("string"==typeof t)return t;if(b(t)){if(e&&("text"===e.split("/")[0]||"application/json"===e.split(";")[0].trim()))try{return Qe(t)}catch(t){}return T(t)}return t}function aa(t,e,r){const n="object"==typeof t&&null!=t.throttleLimit?t.throttleLimit:12;ia.assertArgument(n>0&&n%1==0,"invalid connection throttle limit","connection.throttleLimit",n);const i="object"==typeof t?t.throttleCallback:null,o="object"==typeof t&&"number"==typeof t.throttleSlotInterval?t.throttleSlotInterval:100;ia.assertArgument(o>0&&o%1==0,"invalid connection throttle slot interval","connection.throttleSlotInterval",o);const s="object"==typeof t&&!!t.errorPassThrough,a={};let l=null;const c={method:"GET"};let u=!1,h=12e4;if("string"==typeof t)l=t;else if("object"==typeof t){if(null!=t&&null!=t.url||ia.throwArgumentError("missing URL","connection.url",t),l=t.url,"number"==typeof t.timeout&&t.timeout>0&&(h=t.timeout),t.headers)for(const e in t.headers)a[e.toLowerCase()]={key:e,value:String(t.headers[e])},["if-none-match","if-modified-since"].indexOf(e.toLowerCase())>=0&&(u=!0);if(c.allowGzip=!!t.allowGzip,null!=t.user&&null!=t.password){"https:"!==l.substring(0,6)&&!0!==t.allowInsecureAuthentication&&ia.throwError("basic authentication requires a secure https url",g.errors.INVALID_ARGUMENT,{argument:"url",url:l,user:t.user,password:"[REDACTED]"});const e=t.user+":"+t.password;a.authorization={key:"Authorization",value:"Basic "+yr(Ve(e))}}null!=t.skipFetchSetup&&(c.skipFetchSetup=!!t.skipFetchSetup),null!=t.fetchOptions&&(c.fetchOptions=pt(t.fetchOptions))}const d=new RegExp("^data:([^;:]*)?(;base64)?,(.*)$","i"),f=l?l.match(d):null;if(f)try{const t={statusCode:200,statusMessage:"OK",headers:{"content-type":f[1]||"text/plain"},body:f[2]?vr(f[3]):(p=f[3],Ve(p.replace(/%([0-9a-f][0-9a-f])/gi,(t,e)=>String.fromCharCode(parseInt(e,16)))))};let e=t.body;return r&&(e=r(t.body,t)),Promise.resolve(e)}catch(t){ia.throwError("processing response error",g.errors.SERVER_ERROR,{body:sa(f[1],f[2]),error:t,requestBody:null,requestMethod:"GET",url:l})}var p;e&&(c.method="POST",c.body=e,null==a["content-type"]&&(a["content-type"]={key:"Content-Type",value:"application/octet-stream"}),null==a["content-length"]&&(a["content-length"]={key:"Content-Length",value:String(e.length)}));const m={};Object.keys(a).forEach(t=>{const e=a[t];m[e.key]=e.value}),c.headers=m;const v=function(){let t=null;return{promise:new Promise(function(e,r){h&&(t=setTimeout(()=>{null!=t&&(t=null,r(ia.makeError("timeout",g.errors.TIMEOUT,{requestBody:sa(c.body,m["content-type"]),requestMethod:c.method,timeout:h,url:l})))},h))}),cancel:function(){null!=t&&(clearTimeout(t),t=null)}}}(),y=function(){return na(this,void 0,void 0,function*(){for(let t=0;t<n;t++){let e=null;try{if(e=yield ra(l,c),t<n)if(301===e.statusCode||302===e.statusCode){const t=e.headers.location||"";if("GET"===c.method&&t.match(/^https:/)){l=e.headers.location;continue}}else if(429===e.statusCode){let r=!0;if(i&&(r=yield i(t,l)),r){let r=0;const n=e.headers["retry-after"];r="string"==typeof n&&n.match(/^[1-9][0-9]*$/)?1e3*parseInt(n):o*parseInt(String(Math.random()*Math.pow(2,t))),yield oa(r);continue}}}catch(t){e=t.response,null==e&&(v.cancel(),ia.throwError("missing response",g.errors.SERVER_ERROR,{requestBody:sa(c.body,m["content-type"]),requestMethod:c.method,serverError:t,url:l}))}let a=e.body;if(u&&304===e.statusCode?a=null:!s&&(e.statusCode<200||e.statusCode>=300)&&(v.cancel(),ia.throwError("bad response",g.errors.SERVER_ERROR,{status:e.statusCode,headers:e.headers,body:sa(a,e.headers?e.headers["content-type"]:null),requestBody:sa(c.body,m["content-type"]),requestMethod:c.method,url:l})),r)try{const t=yield r(a,e);return v.cancel(),t}catch(r){if(r.throttleRetry&&t<n){let e=!0;if(i&&(e=yield i(t,l)),e){const e=o*parseInt(String(Math.random()*Math.pow(2,t)));yield oa(e);continue}}v.cancel(),ia.throwError("processing response error",g.errors.SERVER_ERROR,{body:sa(a,e.headers?e.headers["content-type"]:null),error:r,requestBody:sa(c.body,m["content-type"]),requestMethod:c.method,url:l})}return v.cancel(),a}return ia.throwError("failed response",g.errors.SERVER_ERROR,{requestBody:sa(c.body,m["content-type"]),requestMethod:c.method,url:l})})}();return Promise.race([v.promise,y])}function la(t,e,r){let n=null;if(null!=e){n=Ve(e);const r="string"==typeof t?{url:t}:pt(t);if(r.headers){0!==Object.keys(r.headers).filter(t=>"content-type"===t.toLowerCase()).length||(r.headers=pt(r.headers),r.headers["content-type"]="application/json")}else r.headers={"content-type":"application/json"};t=r}return aa(t,n,(t,e)=>{let n=null;if(null!=t)try{n=JSON.parse(Qe(t))}catch(e){ia.throwError("invalid JSON",g.errors.SERVER_ERROR,{body:t,error:e})}return r&&(n=r(n,e)),n})}function ca(t,e){return e||(e={}),null==(e=pt(e)).floor&&(e.floor=0),null==e.ceiling&&(e.ceiling=1e4),null==e.interval&&(e.interval=250),new Promise(function(r,n){let i=null,o=!1;const s=()=>!o&&(o=!0,i&&clearTimeout(i),!0);e.timeout&&(i=setTimeout(()=>{s()&&n(new Error("timeout"))},e.timeout));const a=e.retryLimit;let l=0;!function i(){return t().then(function(t){if(void 0!==t)s()&&r(t);else if(e.oncePoll)e.oncePoll.once("poll",i);else if(e.onceBlock)e.onceBlock.once("block",i);else if(!o){if(l++,l>a)return void(s()&&n(new Error("retry limit reached")));let t=e.interval*parseInt(String(Math.random()*Math.pow(2,l)));t<e.floor&&(t=e.floor),t>e.ceiling&&(t=e.ceiling),setTimeout(i,t)}return null},function(t){s()&&n(t)})}()})}var ua,ha;var da=function(){if(ha)return ua;ha=1;for(var t="qpzry9x8gf2tvdw0s3jn54khce6mua7l",e={},r=0;r<32;r++){var n=t.charAt(r);if(void 0!==e[n])throw new TypeError(n+" is ambiguous");e[n]=r}function i(t){var e=t>>25;return(33554431&t)<<5^996825010&-(1&e)^642813549&-(e>>1&1)^513874426&-(e>>2&1)^1027748829&-(e>>3&1)^705979059&-(e>>4&1)}function o(t){for(var e=1,r=0;r<t.length;++r){var n=t.charCodeAt(r);if(n<33||n>126)return"Invalid prefix ("+t+")";e=i(e)^n>>5}for(e=i(e),r=0;r<t.length;++r){var o=t.charCodeAt(r);e=i(e)^31&o}return e}function s(t,r){if(r=r||90,t.length<8)return t+" too short";if(t.length>r)return"Exceeds length limit";var n=t.toLowerCase(),s=t.toUpperCase();if(t!==n&&t!==s)return"Mixed-case string "+t;var a=(t=n).lastIndexOf("1");if(-1===a)return"No separator character for "+t;if(0===a)return"Missing prefix for "+t;var l=t.slice(0,a),c=t.slice(a+1);if(c.length<6)return"Data too short";var u=o(l);if("string"==typeof u)return u;for(var h=[],d=0;d<c.length;++d){var f=c.charAt(d),p=e[f];if(void 0===p)return"Unknown character "+f;u=i(u)^p,d+6>=c.length||h.push(p)}return 1!==u?"Invalid checksum for "+t:{prefix:l,words:h}}function a(t,e,r,n){for(var i=0,o=0,s=(1<<r)-1,a=[],l=0;l<t.length;++l)for(i=i<<e|t[l],o+=e;o>=r;)o-=r,a.push(i>>o&s);if(n)o>0&&a.push(i<<r-o&s);else{if(o>=e)return"Excess padding";if(i<<r-o&s)return"Non-zero padding"}return a}return ua={decodeUnsafe:function(){var t=s.apply(null,arguments);if("object"==typeof t)return t},decode:function(t){var e=s.apply(null,arguments);if("object"==typeof e)return e;throw new Error(e)},encode:function(e,r,n){if(n=n||90,e.length+7+r.length>n)throw new TypeError("Exceeds length limit");var s=o(e=e.toLowerCase());if("string"==typeof s)throw new Error(s);for(var a=e+"1",l=0;l<r.length;++l){var c=r[l];if(c>>5)throw new Error("Non 5-bit word");s=i(s)^c,a+=t.charAt(c)}for(l=0;l<6;++l)s=i(s);for(s^=1,l=0;l<6;++l){a+=t.charAt(s>>5*(5-l)&31)}return a},toWordsUnsafe:function(t){var e=a(t,8,5,!0);if(Array.isArray(e))return e},toWords:function(t){var e=a(t,8,5,!0);if(Array.isArray(e))return e;throw new Error(e)},fromWordsUnsafe:function(t){var e=a(t,5,8,!1);if(Array.isArray(e))return e},fromWords:function(t){var e=a(t,5,8,!1);if(Array.isArray(e))return e;throw new Error(e)}},ua}(),fa=r(da);const pa="providers/5.8.0",ma=new g(pa);class ga{constructor(){this.formats=this.getDefaultFormats()}getDefaultFormats(){const t={},e=this.address.bind(this),r=this.bigNumber.bind(this),n=this.blockTag.bind(this),i=this.data.bind(this),o=this.hash.bind(this),s=this.hex.bind(this),a=this.number.bind(this),l=this.type.bind(this);return t.transaction={hash:o,type:l,accessList:ga.allowNull(this.accessList.bind(this),null),blockHash:ga.allowNull(o,null),blockNumber:ga.allowNull(a,null),transactionIndex:ga.allowNull(a,null),confirmations:ga.allowNull(a,null),from:e,gasPrice:ga.allowNull(r),maxPriorityFeePerGas:ga.allowNull(r),maxFeePerGas:ga.allowNull(r),gasLimit:r,to:ga.allowNull(e,null),value:r,nonce:a,data:i,r:ga.allowNull(this.uint256),s:ga.allowNull(this.uint256),v:ga.allowNull(a),creates:ga.allowNull(e,null),raw:ga.allowNull(i)},t.transactionRequest={from:ga.allowNull(e),nonce:ga.allowNull(a),gasLimit:ga.allowNull(r),gasPrice:ga.allowNull(r),maxPriorityFeePerGas:ga.allowNull(r),maxFeePerGas:ga.allowNull(r),to:ga.allowNull(e),value:ga.allowNull(r),data:ga.allowNull(t=>this.data(t,!0)),type:ga.allowNull(a),accessList:ga.allowNull(this.accessList.bind(this),null)},t.receiptLog={transactionIndex:a,blockNumber:a,transactionHash:o,address:e,topics:ga.arrayOf(o),data:i,logIndex:a,blockHash:o},t.receipt={to:ga.allowNull(this.address,null),from:ga.allowNull(this.address,null),contractAddress:ga.allowNull(e,null),transactionIndex:a,root:ga.allowNull(s),gasUsed:r,logsBloom:ga.allowNull(i),blockHash:o,transactionHash:o,logs:ga.arrayOf(this.receiptLog.bind(this)),blockNumber:a,confirmations:ga.allowNull(a,null),cumulativeGasUsed:r,effectiveGasPrice:ga.allowNull(r),status:ga.allowNull(a),type:l},t.block={hash:ga.allowNull(o),parentHash:o,number:a,timestamp:a,nonce:ga.allowNull(s),difficulty:this.difficulty.bind(this),gasLimit:r,gasUsed:r,miner:ga.allowNull(e),extraData:i,transactions:ga.allowNull(ga.arrayOf(o)),baseFeePerGas:ga.allowNull(r)},t.blockWithTransactions=pt(t.block),t.blockWithTransactions.transactions=ga.allowNull(ga.arrayOf(this.transactionResponse.bind(this))),t.filter={fromBlock:ga.allowNull(n,void 0),toBlock:ga.allowNull(n,void 0),blockHash:ga.allowNull(o,void 0),address:ga.allowNull(e,void 0),topics:ga.allowNull(this.topics.bind(this),void 0)},t.filterLog={blockNumber:ga.allowNull(a),blockHash:ga.allowNull(o),transactionIndex:a,removed:ga.allowNull(this.boolean.bind(this)),address:e,data:ga.allowFalsish(i,"0x"),topics:ga.arrayOf(o),transactionHash:o,logIndex:a},t}accessList(t){return ho(t||[])}number(t){return"0x"===t?0:H.from(t).toNumber()}type(t){return"0x"===t||null==t?0:H.from(t).toNumber()}bigNumber(t){return H.from(t)}boolean(t){if("boolean"==typeof t)return t;if("string"==typeof t){if("true"===(t=t.toLowerCase()))return!0;if("false"===t)return!1}throw new Error("invalid boolean - "+t)}hex(t,e){return"string"==typeof t&&(e||"0x"===t.substring(0,2)||(t="0x"+t),_(t))?t.toLowerCase():ma.throwArgumentError("invalid hash","value",t)}data(t,e){const r=this.hex(t,e);if(r.length%2!=0)throw new Error("invalid data; odd-length - "+t);return r}address(t){return ge(t)}callAddress(t){if(!_(t,32))return null;const e=ge(N(t,12));return e===Te?null:e}contractAddress(t){return ve(t)}blockTag(t){if(null==t)return"latest";if("earliest"===t)return"0x0";switch(t){case"earliest":return"0x0";case"latest":case"pending":case"safe":case"finalized":return t}if("number"==typeof t||_(t))return B(t);throw new Error("invalid blockTag")}hash(t,e){const r=this.hex(t,e);return 32!==I(r)?ma.throwArgumentError("invalid hash","value",t):r}difficulty(t){if(null==t)return null;const e=H.from(t);try{return e.toNumber()}catch(t){}return null}uint256(t){if(!_(t))throw new Error("invalid uint256");return F(t,32)}_block(t,e){null!=t.author&&null==t.miner&&(t.miner=t.author);const r=null!=t._difficulty?t._difficulty:t.difficulty,n=ga.check(e,t);return n._difficulty=null==r?null:H.from(r),n}block(t){return this._block(t,this.formats.block)}blockWithTransactions(t){return this._block(t,this.formats.blockWithTransactions)}transactionRequest(t){return ga.check(this.formats.transactionRequest,t)}transactionResponse(t){null!=t.gas&&null==t.gasLimit&&(t.gasLimit=t.gas),t.to&&H.from(t.to).isZero()&&(t.to="0x0000000000000000000000000000000000000000"),null!=t.input&&null==t.data&&(t.data=t.input),null==t.to&&null==t.creates&&(t.creates=this.contractAddress(t)),1!==t.type&&2!==t.type||null!=t.accessList||(t.accessList=[]);const e=ga.check(this.formats.transaction,t);if(null!=t.chainId){let r=t.chainId;_(r)&&(r=H.from(r).toNumber()),e.chainId=r}else{let r=t.networkId;null==r&&null==e.v&&(r=t.chainId),_(r)&&(r=H.from(r).toNumber()),"number"!=typeof r&&null!=e.v&&(r=(e.v-35)/2,r<0&&(r=0),r=parseInt(r)),"number"!=typeof r&&(r=0),e.chainId=r}return e.blockHash&&"x"===e.blockHash.replace(/0/g,"")&&(e.blockHash=null),e}transaction(t){return yo(t)}receiptLog(t){return ga.check(this.formats.receiptLog,t)}receipt(t){const e=ga.check(this.formats.receipt,t);if(null!=e.root)if(e.root.length<=4){const t=H.from(e.root).toNumber();0===t||1===t?(null!=e.status&&e.status!==t&&ma.throwArgumentError("alt-root-status/status mismatch","value",{root:e.root,status:e.status}),e.status=t,delete e.root):ma.throwArgumentError("invalid alt-root-status","value.root",e.root)}else 66!==e.root.length&&ma.throwArgumentError("invalid root hash","value.root",e.root);return null!=e.status&&(e.byzantium=!0),e}topics(t){return Array.isArray(t)?t.map(t=>this.topics(t)):null!=t?this.hash(t,!0):null}filter(t){return ga.check(this.formats.filter,t)}filterLog(t){return ga.check(this.formats.filterLog,t)}static check(t,e){const r={};for(const n in t)try{const i=t[n](e[n]);void 0!==i&&(r[n]=i)}catch(t){throw t.checkKey=n,t.checkValue=e[n],t}return r}static allowNull(t,e){return function(r){return null==r?e:t(r)}}static allowFalsish(t,e){return function(r){return r?t(r):e}}static arrayOf(t){return function(e){if(!Array.isArray(e))throw new Error("not an array");const r=[];return e.forEach(function(e){r.push(t(e))}),r}}}function va(t){return t&&"function"==typeof t.isCommunityResource}function ya(t){return va(t)&&t.isCommunityResource()}let wa=!1;function ba(){wa||(wa=!0,console.log("========= NOTICE ========="),console.log("Request-Rate Exceeded (this message will not be repeated)"),console.log(""),console.log("The default API keys for each service are provided as a highly-throttled,"),console.log("community resource for low-traffic projects and early prototyping."),console.log(""),console.log("While your application will continue to function, we highly recommended"),console.log("signing up for your own API keys to improve performance, increase your"),console.log("request rate/limit and enable other perks, such as metrics and advanced APIs."),console.log(""),console.log("For more details: https://docs.ethers.io/api-keys/"),console.log("=========================="))}var Ea=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const Aa=new g(pa);function ka(t){return null==t?"null":(32!==I(t)&&Aa.throwArgumentError("invalid topic","topic",t),t.toLowerCase())}function Sa(t){for(t=t.slice();t.length>0&&null==t[t.length-1];)t.pop();return t.map(t=>{if(Array.isArray(t)){const e={};t.forEach(t=>{e[ka(t)]=!0});const r=Object.keys(e);return r.sort(),r.join("|")}return ka(t)}).join("&")}function Ca(t){if("string"==typeof t){if(32===I(t=t.toLowerCase()))return"tx:"+t;if(-1===t.indexOf(":"))return t}else{if(Array.isArray(t))return"filter:*:"+Sa(t);if(wn.isForkEvent(t))throw Aa.warn("not implemented"),new Error("not implemented");if(t&&"object"==typeof t)return"filter:"+(t.address||"*")+":"+Sa(t.topics||[])}throw new Error("invalid event - "+t)}function xa(){return(new Date).getTime()}function _a(t){return new Promise(e=>{setTimeout(e,t)})}const Pa=["block","network","pending","poll"];class Ta{constructor(t,e,r){ut(this,"tag",t),ut(this,"listener",e),ut(this,"once",r),this._lastBlockNumber=-2,this._inflight=!1}get event(){switch(this.type){case"tx":return this.hash;case"filter":return this.filter}return this.tag}get type(){return this.tag.split(":")[0]}get hash(){const t=this.tag.split(":");return"tx"!==t[0]?null:t[1]}get filter(){const t=this.tag.split(":");if("filter"!==t[0])return null;const e=t[1],r=""===(n=t[2])?[]:n.split(/&/g).map(t=>{if(""===t)return[];const e=t.split("|").map(t=>"null"===t?null:t);return 1===e.length?e[0]:e});var n;const i={};return r.length>0&&(i.topics=r),e&&"*"!==e&&(i.address=e),i}pollable(){return this.tag.indexOf(":")>=0||Pa.indexOf(this.tag)>=0}}const Ia={0:{symbol:"btc",p2pkh:0,p2sh:5,prefix:"bc"},2:{symbol:"ltc",p2pkh:48,p2sh:50,prefix:"ltc"},3:{symbol:"doge",p2pkh:30,p2sh:22},60:{symbol:"eth",ilk:"eth"},61:{symbol:"etc",ilk:"eth"},700:{symbol:"xdai",ilk:"eth"}};function Na(t){return F(H.from(t).toHexString(),32)}function Ma(t){return Oo.encode(S([t,N(qo(qo(t)),0,4)]))}const Ba=new RegExp("^(ipfs)://(.*)$","i"),Ra=[new RegExp("^(https)://(.*)$","i"),new RegExp("^(data):(.*)$","i"),Ba,new RegExp("^eip155:[0-9]+/(erc[0-9]+):(.*)$","i")];function Fa(t,e){try{return Qe(Oa(t,e))}catch(t){}return null}function Oa(t,e){if("0x"===t)return null;const r=H.from(N(t,e,e+32)).toNumber(),n=H.from(N(t,r,r+32)).toNumber();return N(t,r+32,r+32+n)}function Da(t){return t.match(/^ipfs:\/\/ipfs\//i)?t=t.substring(12):t.match(/^ipfs:\/\//i)?t=t.substring(7):Aa.throwArgumentError("unsupported IPFS format","link",t),`https://gateway.ipfs.io/ipfs/${t}`}function Ua(t){const e=k(t);if(e.length>32)throw new Error("internal; should not happen");const r=new Uint8Array(32);return r.set(e,32-e.length),r}function La(t){if(t.length%32==0)return t;const e=new Uint8Array(32*Math.ceil(t.length/32));return e.set(t),e}function qa(t){const e=[];let r=0;for(let n=0;n<t.length;n++)e.push(null),r+=32;for(let n=0;n<t.length;n++){const i=k(t[n]);e[n]=Ua(r),e.push(Ua(i.length)),e.push(La(i)),r+=32+32*Math.ceil(i.length/32)}return M(e)}class za{constructor(t,e,r,n){ut(this,"provider",t),ut(this,"name",r),ut(this,"address",t.formatter.address(e)),ut(this,"_resolvedAddress",n)}supportsWildcard(){return this._supportsEip2544||(this._supportsEip2544=this.provider.call({to:this.address,data:"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000"}).then(t=>H.from(t).eq(1)).catch(t=>{if(t.code===g.errors.CALL_EXCEPTION)return!1;throw this._supportsEip2544=null,t})),this._supportsEip2544}_fetch(t,e){return Ea(this,void 0,void 0,function*(){const r={to:this.address,ccipReadEnabled:!0,data:M([t,jr(this.name),e||"0x"])};let n=!1;(yield this.supportsWildcard())&&(n=!0,r.data=M(["0x9061b923",qa([Hr(this.name),r.data])]));try{let t=yield this.provider.call(r);return k(t).length%32==4&&Aa.throwError("resolver threw error",g.errors.CALL_EXCEPTION,{transaction:r,data:t}),n&&(t=Oa(t,0)),t}catch(t){if(t.code===g.errors.CALL_EXCEPTION)return null;throw t}})}_fetchBytes(t,e){return Ea(this,void 0,void 0,function*(){const r=yield this._fetch(t,e);return null!=r?Oa(r,0):null})}_getAddress(t,e){const r=Ia[String(t)];if(null==r&&Aa.throwError(`unsupported coin type: ${t}`,g.errors.UNSUPPORTED_OPERATION,{operation:`getAddress(${t})`}),"eth"===r.ilk)return this.provider.formatter.address(e);const n=k(e);if(null!=r.p2pkh){const t=e.match(/^0x76a9([0-9a-f][0-9a-f])([0-9a-f]*)88ac$/);if(t){const e=parseInt(t[1],16);if(t[2].length===2*e&&e>=1&&e<=75)return Ma(S([[r.p2pkh],"0x"+t[2]]))}}if(null!=r.p2sh){const t=e.match(/^0xa9([0-9a-f][0-9a-f])([0-9a-f]*)87$/);if(t){const e=parseInt(t[1],16);if(t[2].length===2*e&&e>=1&&e<=75)return Ma(S([[r.p2sh],"0x"+t[2]]))}}if(null!=r.prefix){const t=n[1];let e=n[0];if(0===e?20!==t&&32!==t&&(e=-1):e=-1,e>=0&&n.length===2+t&&t>=1&&t<=75){const t=fa.toWords(n.slice(2));return t.unshift(e),fa.encode(r.prefix,t)}}return null}getAddress(t){return Ea(this,void 0,void 0,function*(){if(null==t&&(t=60),60===t)try{const t=yield this._fetch("0x3b3b57de");return"0x"===t||t===Ue?null:this.provider.formatter.callAddress(t)}catch(t){if(t.code===g.errors.CALL_EXCEPTION)return null;throw t}const e=yield this._fetchBytes("0xf1cb7e06",Na(t));if(null==e||"0x"===e)return null;const r=this._getAddress(t,e);return null==r&&Aa.throwError("invalid or unsupported coin data",g.errors.UNSUPPORTED_OPERATION,{operation:`getAddress(${t})`,coinType:t,data:e}),r})}getAvatar(){return Ea(this,void 0,void 0,function*(){const t=[{type:"name",content:this.name}];try{const e=yield this.getText("avatar");if(null==e)return null;for(let r=0;r<Ra.length;r++){const n=e.match(Ra[r]);if(null==n)continue;const i=n[1].toLowerCase();switch(i){case"https":return t.push({type:"url",content:e}),{linkage:t,url:e};case"data":return t.push({type:"data",content:e}),{linkage:t,url:e};case"ipfs":return t.push({type:"ipfs",content:e}),{linkage:t,url:Da(e)};case"erc721":case"erc1155":{const r="erc721"===i?"0xc87b56dd":"0x0e89341c";t.push({type:i,content:e});const o=this._resolvedAddress||(yield this.getAddress()),s=(n[2]||"").split("/");if(2!==s.length)return null;const a=yield this.provider.formatter.address(s[0]),l=F(H.from(s[1]).toHexString(),32);if("erc721"===i){const e=this.provider.formatter.callAddress(yield this.provider.call({to:a,data:M(["0x6352211e",l])}));if(o!==e)return null;t.push({type:"owner",content:e})}else if("erc1155"===i){const e=H.from(yield this.provider.call({to:a,data:M(["0x00fdd58e",F(o,32),l])}));if(e.isZero())return null;t.push({type:"balance",content:e.toString()})}const c={to:this.provider.formatter.address(s[0]),data:M([r,l])};let u=Fa(yield this.provider.call(c),0);if(null==u)return null;t.push({type:"metadata-url-base",content:u}),"erc1155"===i&&(u=u.replace("{id}",l.substring(2)),t.push({type:"metadata-url-expanded",content:u})),u.match(/^ipfs:/i)&&(u=Da(u)),t.push({type:"metadata-url",content:u});const h=yield la(u);if(!h)return null;t.push({type:"metadata",content:JSON.stringify(h)});let d=h.image;if("string"!=typeof d)return null;if(d.match(/^(https:\/\/|data:)/i));else{if(null==d.match(Ba))return null;t.push({type:"url-ipfs",content:d}),d=Da(d)}return t.push({type:"url",content:d}),{linkage:t,url:d}}}}}catch(t){}return null})}getContentHash(){return Ea(this,void 0,void 0,function*(){const t=yield this._fetchBytes("0xbc1c58d1");if(null==t||"0x"===t)return null;const e=t.match(/^0xe3010170(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(e){const t=parseInt(e[3],16);if(e[4].length===2*t)return"ipfs://"+Oo.encode("0x"+e[1])}const r=t.match(/^0xe5010172(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(r){const t=parseInt(r[3],16);if(r[4].length===2*t)return"ipns://"+Oo.encode("0x"+r[1])}const n=t.match(/^0xe40101fa011b20([0-9a-f]*)$/);if(n&&64===n[1].length)return"bzz://"+n[1];const i=t.match(/^0x90b2c605([0-9a-f]*)$/);if(i&&68===i[1].length){const t={"=":"","+":"-","/":"_"};return"sia://"+yr("0x"+i[1]).replace(/[=+\/]/g,e=>t[e])}return Aa.throwError("invalid or unsupported content hash data",g.errors.UNSUPPORTED_OPERATION,{operation:"getContentHash()",data:t})})}getText(t){return Ea(this,void 0,void 0,function*(){let e=Ve(t);e=S([Na(64),Na(e.length),e]),e.length%32!=0&&(e=S([e,F("0x",32-t.length%32)]));const r=yield this._fetchBytes("0x59d1d43c",T(e));return null==r||"0x"===r?null:Qe(r)})}}let Ga=null,ja=1;class Ha extends bn{constructor(t){if(super(),this._events=[],this._emitted={block:-2},this.disableCcipRead=!1,this.formatter=new.target.getFormatter(),ut(this,"anyNetwork","any"===t),this.anyNetwork&&(t=this.detectNetwork()),t instanceof Promise)this._networkPromise=t,t.catch(t=>{}),this._ready().catch(t=>{});else{const e=ht(new.target,"getNetwork")(t);e?(ut(this,"_network",e),this.emit("network",e,null)):Aa.throwArgumentError("invalid network","network",t)}this._maxInternalBlockNumber=-1024,this._lastBlockNumber=-2,this._maxFilterBlockRange=10,this._pollingInterval=4e3,this._fastQueryDate=0}_ready(){return Ea(this,void 0,void 0,function*(){if(null==this._network){let t=null;if(this._networkPromise)try{t=yield this._networkPromise}catch(t){}null==t&&(t=yield this.detectNetwork()),t||Aa.throwError("no network detected",g.errors.UNKNOWN_ERROR,{}),null==this._network&&(this.anyNetwork?this._network=t:ut(this,"_network",t),this.emit("network",t,null))}return this._network})}get ready(){return ca(()=>this._ready().then(t=>t,t=>{if(t.code!==g.errors.NETWORK_ERROR||"noNetwork"!==t.event)throw t}))}static getFormatter(){return null==Ga&&(Ga=new ga),Ga}static getNetwork(t){return ta(null==t?"homestead":t)}ccipReadFetch(t,e,r){return Ea(this,void 0,void 0,function*(){if(this.disableCcipRead||0===r.length)return null;const n=t.to.toLowerCase(),i=e.toLowerCase(),o=[];for(let t=0;t<r.length;t++){const e=r[t],s=e.replace("{sender}",n).replace("{data}",i),a=e.indexOf("{data}")>=0?null:JSON.stringify({data:i,sender:n}),l=yield la({url:s,errorPassThrough:!0},a,(t,e)=>(t.status=e.statusCode,t));if(l.data)return l.data;const c=l.message||"unknown error";if(l.status>=400&&l.status<500)return Aa.throwError(`response not found during CCIP fetch: ${c}`,g.errors.SERVER_ERROR,{url:e,errorMessage:c});o.push(c)}return Aa.throwError(`error encountered during CCIP fetch: ${o.map(t=>JSON.stringify(t)).join(", ")}`,g.errors.SERVER_ERROR,{urls:r,errorMessages:o})})}_getInternalBlockNumber(t){return Ea(this,void 0,void 0,function*(){if(yield this._ready(),t>0)for(;this._internalBlockNumber;){const e=this._internalBlockNumber;try{const r=yield e;if(xa()-r.respTime<=t)return r.blockNumber;break}catch(t){if(this._internalBlockNumber===e)break}}const e=xa(),r=dt({blockNumber:this.perform("getBlockNumber",{}),networkError:this.getNetwork().then(t=>null,t=>t)}).then(({blockNumber:t,networkError:n})=>{if(n)throw this._internalBlockNumber===r&&(this._internalBlockNumber=null),n;const i=xa();return(t=H.from(t).toNumber())<this._maxInternalBlockNumber&&(t=this._maxInternalBlockNumber),this._maxInternalBlockNumber=t,this._setFastBlockNumber(t),{blockNumber:t,reqTime:e,respTime:i}});return this._internalBlockNumber=r,r.catch(t=>{this._internalBlockNumber===r&&(this._internalBlockNumber=null)}),(yield r).blockNumber})}poll(){return Ea(this,void 0,void 0,function*(){const t=ja++,e=[];let r=null;try{r=yield this._getInternalBlockNumber(100+this.pollingInterval/2)}catch(t){return void this.emit("error",t)}if(this._setFastBlockNumber(r),this.emit("poll",t,r),r!==this._lastBlockNumber){if(-2===this._emitted.block&&(this._emitted.block=r-1),Math.abs(this._emitted.block-r)>1e3)Aa.warn(`network block skew detected; skipping block events (emitted=${this._emitted.block} blockNumber${r})`),this.emit("error",Aa.makeError("network block skew detected",g.errors.NETWORK_ERROR,{blockNumber:r,event:"blockSkew",previousBlockNumber:this._emitted.block})),this.emit("block",r);else for(let t=this._emitted.block+1;t<=r;t++)this.emit("block",t);this._emitted.block!==r&&(this._emitted.block=r,Object.keys(this._emitted).forEach(t=>{if("block"===t)return;const e=this._emitted[t];"pending"!==e&&r-e>12&&delete this._emitted[t]})),-2===this._lastBlockNumber&&(this._lastBlockNumber=r-1),this._events.forEach(t=>{switch(t.type){case"tx":{const r=t.hash;let n=this.getTransactionReceipt(r).then(t=>t&&null!=t.blockNumber?(this._emitted["t:"+r]=t.blockNumber,this.emit(r,t),null):null).catch(t=>{this.emit("error",t)});e.push(n);break}case"filter":if(!t._inflight){t._inflight=!0,-2===t._lastBlockNumber&&(t._lastBlockNumber=r-1);const n=t.filter;n.fromBlock=t._lastBlockNumber+1,n.toBlock=r;const i=n.toBlock-this._maxFilterBlockRange;i>n.fromBlock&&(n.fromBlock=i),n.fromBlock<0&&(n.fromBlock=0);const o=this.getLogs(n).then(e=>{t._inflight=!1,0!==e.length&&e.forEach(e=>{e.blockNumber>t._lastBlockNumber&&(t._lastBlockNumber=e.blockNumber),this._emitted["b:"+e.blockHash]=e.blockNumber,this._emitted["t:"+e.transactionHash]=e.blockNumber,this.emit(n,e)})}).catch(e=>{this.emit("error",e),t._inflight=!1});e.push(o)}}}),this._lastBlockNumber=r,Promise.all(e).then(()=>{this.emit("didPoll",t)}).catch(t=>{this.emit("error",t)})}else this.emit("didPoll",t)})}resetEventsBlock(t){this._lastBlockNumber=t-1,this.polling&&this.poll()}get network(){return this._network}detectNetwork(){return Ea(this,void 0,void 0,function*(){return Aa.throwError("provider does not support network detection",g.errors.UNSUPPORTED_OPERATION,{operation:"provider.detectNetwork"})})}getNetwork(){return Ea(this,void 0,void 0,function*(){const t=yield this._ready(),e=yield this.detectNetwork();if(t.chainId!==e.chainId){if(this.anyNetwork)return this._network=e,this._lastBlockNumber=-2,this._fastBlockNumber=null,this._fastBlockNumberPromise=null,this._fastQueryDate=0,this._emitted.block=-2,this._maxInternalBlockNumber=-1024,this._internalBlockNumber=null,this.emit("network",e,t),yield _a(0),this._network;const r=Aa.makeError("underlying network changed",g.errors.NETWORK_ERROR,{event:"changed",network:t,detectedNetwork:e});throw this.emit("error",r),r}return t})}get blockNumber(){return this._getInternalBlockNumber(100+this.pollingInterval/2).then(t=>{this._setFastBlockNumber(t)},t=>{}),null!=this._fastBlockNumber?this._fastBlockNumber:-1}get polling(){return null!=this._poller}set polling(t){t&&!this._poller?(this._poller=setInterval(()=>{this.poll()},this.pollingInterval),this._bootstrapPoll||(this._bootstrapPoll=setTimeout(()=>{this.poll(),this._bootstrapPoll=setTimeout(()=>{this._poller||this.poll(),this._bootstrapPoll=null},this.pollingInterval)},0))):!t&&this._poller&&(clearInterval(this._poller),this._poller=null)}get pollingInterval(){return this._pollingInterval}set pollingInterval(t){if("number"!=typeof t||t<=0||parseInt(String(t))!=t)throw new Error("invalid polling interval");this._pollingInterval=t,this._poller&&(clearInterval(this._poller),this._poller=setInterval(()=>{this.poll()},this._pollingInterval))}_getFastBlockNumber(){const t=xa();return t-this._fastQueryDate>2*this._pollingInterval&&(this._fastQueryDate=t,this._fastBlockNumberPromise=this.getBlockNumber().then(t=>((null==this._fastBlockNumber||t>this._fastBlockNumber)&&(this._fastBlockNumber=t),this._fastBlockNumber))),this._fastBlockNumberPromise}_setFastBlockNumber(t){null!=this._fastBlockNumber&&t<this._fastBlockNumber||(this._fastQueryDate=xa(),(null==this._fastBlockNumber||t>this._fastBlockNumber)&&(this._fastBlockNumber=t,this._fastBlockNumberPromise=Promise.resolve(t)))}waitForTransaction(t,e,r){return Ea(this,void 0,void 0,function*(){return this._waitForTransaction(t,null==e?1:e,r||0,null)})}_waitForTransaction(t,e,r,n){return Ea(this,void 0,void 0,function*(){const i=yield this.getTransactionReceipt(t);return(i?i.confirmations:0)>=e?i:new Promise((i,o)=>{const s=[];let a=!1;const l=function(){return!!a||(a=!0,s.forEach(t=>{t()}),!1)},c=t=>{t.confirmations<e||l()||i(t)};if(this.on(t,c),s.push(()=>{this.removeListener(t,c)}),n){let r=n.startBlock,i=null;const c=s=>Ea(this,void 0,void 0,function*(){a||(yield _a(1e3),this.getTransactionCount(n.from).then(u=>Ea(this,void 0,void 0,function*(){if(!a){if(u<=n.nonce)r=s;else{{const e=yield this.getTransaction(t);if(e&&null!=e.blockNumber)return}for(null==i&&(i=r-3,i<n.startBlock&&(i=n.startBlock));i<=s;){if(a)return;const r=yield this.getBlockWithTransactions(i);for(let i=0;i<r.transactions.length;i++){const s=r.transactions[i];if(s.hash===t)return;if(s.from===n.from&&s.nonce===n.nonce){if(a)return;const r=yield this.waitForTransaction(s.hash,e);if(l())return;let i="replaced";return s.data===n.data&&s.to===n.to&&s.value.eq(n.value)?i="repriced":"0x"===s.data&&s.from===s.to&&s.value.isZero()&&(i="cancelled"),void o(Aa.makeError("transaction was replaced",g.errors.TRANSACTION_REPLACED,{cancelled:"replaced"===i||"cancelled"===i,reason:i,replacement:this._wrapTransaction(s),hash:t,receipt:r}))}}i++}}a||this.once("block",c)}}),t=>{a||this.once("block",c)}))});if(a)return;this.once("block",c),s.push(()=>{this.removeListener("block",c)})}if("number"==typeof r&&r>0){const t=setTimeout(()=>{l()||o(Aa.makeError("timeout exceeded",g.errors.TIMEOUT,{timeout:r}))},r);t.unref&&t.unref(),s.push(()=>{clearTimeout(t)})}})})}getBlockNumber(){return Ea(this,void 0,void 0,function*(){return this._getInternalBlockNumber(0)})}getGasPrice(){return Ea(this,void 0,void 0,function*(){yield this.getNetwork();const t=yield this.perform("getGasPrice",{});try{return H.from(t)}catch(e){return Aa.throwError("bad result from backend",g.errors.SERVER_ERROR,{method:"getGasPrice",result:t,error:e})}})}getBalance(t,e){return Ea(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield dt({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getBalance",r);try{return H.from(n)}catch(t){return Aa.throwError("bad result from backend",g.errors.SERVER_ERROR,{method:"getBalance",params:r,result:n,error:t})}})}getTransactionCount(t,e){return Ea(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield dt({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getTransactionCount",r);try{return H.from(n).toNumber()}catch(t){return Aa.throwError("bad result from backend",g.errors.SERVER_ERROR,{method:"getTransactionCount",params:r,result:n,error:t})}})}getCode(t,e){return Ea(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield dt({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getCode",r);try{return T(n)}catch(t){return Aa.throwError("bad result from backend",g.errors.SERVER_ERROR,{method:"getCode",params:r,result:n,error:t})}})}getStorageAt(t,e,r){return Ea(this,void 0,void 0,function*(){yield this.getNetwork();const n=yield dt({address:this._getAddress(t),blockTag:this._getBlockTag(r),position:Promise.resolve(e).then(t=>B(t))}),i=yield this.perform("getStorageAt",n);try{return T(i)}catch(t){return Aa.throwError("bad result from backend",g.errors.SERVER_ERROR,{method:"getStorageAt",params:n,result:i,error:t})}})}_wrapTransaction(t,e,r){if(null!=e&&32!==I(e))throw new Error("invalid response - sendTransaction");const n=t;return null!=e&&t.hash!==e&&Aa.throwError("Transaction hash mismatch from Provider.sendTransaction.",g.errors.UNKNOWN_ERROR,{expectedHash:t.hash,returnedHash:e}),n.wait=(e,n)=>Ea(this,void 0,void 0,function*(){let i;null==e&&(e=1),null==n&&(n=0),0!==e&&null!=r&&(i={data:t.data,from:t.from,nonce:t.nonce,to:t.to,value:t.value,startBlock:r});const o=yield this._waitForTransaction(t.hash,e,n,i);return null==o&&0===e?null:(this._emitted["t:"+t.hash]=o.blockNumber,0===o.status&&Aa.throwError("transaction failed",g.errors.CALL_EXCEPTION,{transactionHash:t.hash,transaction:t,receipt:o}),o)}),n}sendTransaction(t){return Ea(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield Promise.resolve(t).then(t=>T(t)),r=this.formatter.transaction(t);null==r.confirmations&&(r.confirmations=0);const n=yield this._getInternalBlockNumber(100+2*this.pollingInterval);try{const t=yield this.perform("sendTransaction",{signedTransaction:e});return this._wrapTransaction(r,t,n)}catch(t){throw t.transaction=r,t.transactionHash=r.hash,t}})}_getTransactionRequest(t){return Ea(this,void 0,void 0,function*(){const e=yield t,r={};return["from","to"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>t?this._getAddress(t):null))}),["gasLimit","gasPrice","maxFeePerGas","maxPriorityFeePerGas","value"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>t?H.from(t):null))}),["type"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>null!=t?t:null))}),e.accessList&&(r.accessList=this.formatter.accessList(e.accessList)),["data"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>t?T(t):null))}),this.formatter.transactionRequest(yield dt(r))})}_getFilter(t){return Ea(this,void 0,void 0,function*(){t=yield t;const e={};return null!=t.address&&(e.address=this._getAddress(t.address)),["blockHash","topics"].forEach(r=>{null!=t[r]&&(e[r]=t[r])}),["fromBlock","toBlock"].forEach(r=>{null!=t[r]&&(e[r]=this._getBlockTag(t[r]))}),this.formatter.filter(yield dt(e))})}_call(t,e,r){return Ea(this,void 0,void 0,function*(){r>=10&&Aa.throwError("CCIP read exceeded maximum redirections",g.errors.SERVER_ERROR,{redirects:r,transaction:t});const n=t.to,i=yield this.perform("call",{transaction:t,blockTag:e});if(r>=0&&"latest"===e&&null!=n&&"0x556f1830"===i.substring(0,10)&&I(i)%32==4)try{const o=N(i,4),s=N(o,0,32);H.from(s).eq(n)||Aa.throwError("CCIP Read sender did not match",g.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const a=[],l=H.from(N(o,32,64)).toNumber(),c=H.from(N(o,l,l+32)).toNumber(),u=N(o,l+32);for(let e=0;e<c;e++){const r=Fa(u,32*e);null==r&&Aa.throwError("CCIP Read contained corrupt URL string",g.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i}),a.push(r)}const h=Oa(o,64);H.from(N(o,100,128)).isZero()||Aa.throwError("CCIP Read callback selector included junk",g.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const d=N(o,96,100),f=Oa(o,128),p=yield this.ccipReadFetch(t,h,a);null==p&&Aa.throwError("CCIP Read disabled or provided no URLs",g.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const m={to:n,data:M([d,qa([p,f])])};return this._call(m,e,r+1)}catch(t){if(t.code===g.errors.SERVER_ERROR)throw t}try{return T(i)}catch(r){return Aa.throwError("bad result from backend",g.errors.SERVER_ERROR,{method:"call",params:{transaction:t,blockTag:e},result:i,error:r})}})}call(t,e){return Ea(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield dt({transaction:this._getTransactionRequest(t),blockTag:this._getBlockTag(e),ccipReadEnabled:Promise.resolve(t.ccipReadEnabled)});return this._call(r.transaction,r.blockTag,r.ccipReadEnabled?0:-1)})}estimateGas(t){return Ea(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield dt({transaction:this._getTransactionRequest(t)}),r=yield this.perform("estimateGas",e);try{return H.from(r)}catch(t){return Aa.throwError("bad result from backend",g.errors.SERVER_ERROR,{method:"estimateGas",params:e,result:r,error:t})}})}_getAddress(t){return Ea(this,void 0,void 0,function*(){"string"!=typeof(t=yield t)&&Aa.throwArgumentError("invalid address or ENS name","name",t);const e=yield this.resolveName(t);return null==e&&Aa.throwError("ENS name not configured",g.errors.UNSUPPORTED_OPERATION,{operation:`resolveName(${JSON.stringify(t)})`}),e})}_getBlock(t,e){return Ea(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;let r=-128;const n={includeTransactions:!!e};if(_(t,32))n.blockHash=t;else try{n.blockTag=yield this._getBlockTag(t),_(n.blockTag)&&(r=parseInt(n.blockTag.substring(2),16))}catch(e){Aa.throwArgumentError("invalid block hash or block tag","blockHashOrBlockTag",t)}return ca(()=>Ea(this,void 0,void 0,function*(){const t=yield this.perform("getBlock",n);if(null==t)return null!=n.blockHash&&null==this._emitted["b:"+n.blockHash]||null!=n.blockTag&&r>this._emitted.block?null:void 0;if(e){let e=null;for(let r=0;r<t.transactions.length;r++){const n=t.transactions[r];if(null==n.blockNumber)n.confirmations=0;else if(null==n.confirmations){null==e&&(e=yield this._getInternalBlockNumber(100+2*this.pollingInterval));let t=e-n.blockNumber+1;t<=0&&(t=1),n.confirmations=t}}const r=this.formatter.blockWithTransactions(t);return r.transactions=r.transactions.map(t=>this._wrapTransaction(t)),r}return this.formatter.block(t)}),{oncePoll:this})})}getBlock(t){return this._getBlock(t,!1)}getBlockWithTransactions(t){return this._getBlock(t,!0)}getTransaction(t){return Ea(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;const e={transactionHash:this.formatter.hash(t,!0)};return ca(()=>Ea(this,void 0,void 0,function*(){const r=yield this.perform("getTransaction",e);if(null==r)return null==this._emitted["t:"+t]?null:void 0;const n=this.formatter.transactionResponse(r);if(null==n.blockNumber)n.confirmations=0;else if(null==n.confirmations){let t=(yield this._getInternalBlockNumber(100+2*this.pollingInterval))-n.blockNumber+1;t<=0&&(t=1),n.confirmations=t}return this._wrapTransaction(n)}),{oncePoll:this})})}getTransactionReceipt(t){return Ea(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;const e={transactionHash:this.formatter.hash(t,!0)};return ca(()=>Ea(this,void 0,void 0,function*(){const r=yield this.perform("getTransactionReceipt",e);if(null==r)return null==this._emitted["t:"+t]?null:void 0;if(null==r.blockHash)return;const n=this.formatter.receipt(r);if(null==n.blockNumber)n.confirmations=0;else if(null==n.confirmations){let t=(yield this._getInternalBlockNumber(100+2*this.pollingInterval))-n.blockNumber+1;t<=0&&(t=1),n.confirmations=t}return n}),{oncePoll:this})})}getLogs(t){return Ea(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield dt({filter:this._getFilter(t)}),r=yield this.perform("getLogs",e);return r.forEach(t=>{null==t.removed&&(t.removed=!1)}),ga.arrayOf(this.formatter.filterLog.bind(this.formatter))(r)})}getEtherPrice(){return Ea(this,void 0,void 0,function*(){return yield this.getNetwork(),this.perform("getEtherPrice",{})})}_getBlockTag(t){return Ea(this,void 0,void 0,function*(){if("number"==typeof(t=yield t)&&t<0){t%1&&Aa.throwArgumentError("invalid BlockTag","blockTag",t);let e=yield this._getInternalBlockNumber(100+2*this.pollingInterval);return e+=t,e<0&&(e=0),this.formatter.blockTag(e)}return this.formatter.blockTag(t)})}getResolver(t){return Ea(this,void 0,void 0,function*(){let e=t;for(;;){if(""===e||"."===e)return null;if("eth"!==t&&"eth"===e)return null;const r=yield this._getResolver(e,"getResolver");if(null!=r){const n=new za(this,r,t);return e===t||(yield n.supportsWildcard())?n:null}e=e.split(".").slice(1).join(".")}})}_getResolver(t,e){return Ea(this,void 0,void 0,function*(){null==e&&(e="ENS");const r=yield this.getNetwork();r.ensAddress||Aa.throwError("network does not support ENS",g.errors.UNSUPPORTED_OPERATION,{operation:e,network:r.name});try{const e=yield this.call({to:r.ensAddress,data:"0x0178b8bf"+jr(t).substring(2)});return this.formatter.callAddress(e)}catch(t){}return null})}resolveName(t){return Ea(this,void 0,void 0,function*(){t=yield t;try{return Promise.resolve(this.formatter.address(t))}catch(e){if(_(t))throw e}"string"!=typeof t&&Aa.throwArgumentError("invalid ENS name","name",t);const e=yield this.getResolver(t);return e?yield e.getAddress():null})}lookupAddress(t){return Ea(this,void 0,void 0,function*(){t=yield t;const e=(t=this.formatter.address(t)).substring(2).toLowerCase()+".addr.reverse",r=yield this._getResolver(e,"lookupAddress");if(null==r)return null;const n=Fa(yield this.call({to:r,data:"0x691f3431"+jr(e).substring(2)}),0);return(yield this.resolveName(n))!=t?null:n})}getAvatar(t){return Ea(this,void 0,void 0,function*(){let e=null;if(_(t)){const r=this.formatter.address(t).substring(2).toLowerCase()+".addr.reverse",n=yield this._getResolver(r,"getAvatar");if(!n)return null;e=new za(this,n,r);try{const t=yield e.getAvatar();if(t)return t.url}catch(t){if(t.code!==g.errors.CALL_EXCEPTION)throw t}try{const t=Fa(yield this.call({to:n,data:"0x691f3431"+jr(r).substring(2)}),0);e=yield this.getResolver(t)}catch(t){if(t.code!==g.errors.CALL_EXCEPTION)throw t;return null}}else if(e=yield this.getResolver(t),!e)return null;const r=yield e.getAvatar();return null==r?null:r.url})}perform(t,e){return Aa.throwError(t+" not implemented",g.errors.NOT_IMPLEMENTED,{operation:t})}_startEvent(t){this.polling=this._events.filter(t=>t.pollable()).length>0}_stopEvent(t){this.polling=this._events.filter(t=>t.pollable()).length>0}_addEventListener(t,e,r){const n=new Ta(Ca(t),e,r);return this._events.push(n),this._startEvent(n),this}on(t,e){return this._addEventListener(t,e,!1)}once(t,e){return this._addEventListener(t,e,!0)}emit(t,...e){let r=!1,n=[],i=Ca(t);return this._events=this._events.filter(t=>t.tag!==i||(setTimeout(()=>{t.listener.apply(this,e)},0),r=!0,!t.once||(n.push(t),!1))),n.forEach(t=>{this._stopEvent(t)}),r}listenerCount(t){if(!t)return this._events.length;let e=Ca(t);return this._events.filter(t=>t.tag===e).length}listeners(t){if(null==t)return this._events.map(t=>t.listener);let e=Ca(t);return this._events.filter(t=>t.tag===e).map(t=>t.listener)}off(t,e){if(null==e)return this.removeAllListeners(t);const r=[];let n=!1,i=Ca(t);return this._events=this._events.filter(t=>t.tag!==i||t.listener!=e||(!!n||(n=!0,r.push(t),!1))),r.forEach(t=>{this._stopEvent(t)}),this}removeAllListeners(t){let e=[];if(null==t)e=this._events,this._events=[];else{const r=Ca(t);this._events=this._events.filter(t=>t.tag!==r||(e.push(t),!1))}return e.forEach(t=>{this._stopEvent(t)}),this}}var Ka=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const Wa=new g(pa),Va=["call","estimateGas"];function $a(t,e){if(null==t)return null;if("string"==typeof t.message&&t.message.match("reverted")){const r=_(t.data)?t.data:null;if(!e||r)return{message:t.message,data:r}}if("object"==typeof t){for(const r in t){const n=$a(t[r],e);if(n)return n}return null}if("string"==typeof t)try{return $a(JSON.parse(t),e)}catch(t){}return null}function Ja(t,e,r){const n=r.transaction||r.signedTransaction;if("call"===t){const t=$a(e,!0);if(t)return t.data;Wa.throwError("missing revert data in call exception; Transaction reverted without a reason string",g.errors.CALL_EXCEPTION,{data:"0x",transaction:n,error:e})}if("estimateGas"===t){let r=$a(e.body,!1);null==r&&(r=$a(e,!1)),r&&Wa.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",g.errors.UNPREDICTABLE_GAS_LIMIT,{reason:r.message,method:t,transaction:n,error:e})}let i=e.message;throw e.code===g.errors.SERVER_ERROR&&e.error&&"string"==typeof e.error.message?i=e.error.message:"string"==typeof e.body?i=e.body:"string"==typeof e.responseText&&(i=e.responseText),i=(i||"").toLowerCase(),i.match(/insufficient funds|base fee exceeds gas limit|InsufficientFunds/i)&&Wa.throwError("insufficient funds for intrinsic transaction cost",g.errors.INSUFFICIENT_FUNDS,{error:e,method:t,transaction:n}),i.match(/nonce (is )?too low/i)&&Wa.throwError("nonce has already been used",g.errors.NONCE_EXPIRED,{error:e,method:t,transaction:n}),i.match(/replacement transaction underpriced|transaction gas price.*too low/i)&&Wa.throwError("replacement fee too low",g.errors.REPLACEMENT_UNDERPRICED,{error:e,method:t,transaction:n}),i.match(/only replay-protected/i)&&Wa.throwError("legacy pre-eip-155 transactions not supported",g.errors.UNSUPPORTED_OPERATION,{error:e,method:t,transaction:n}),Va.indexOf(t)>=0&&i.match(/gas required exceeds allowance|always failing transaction|execution reverted|revert/)&&Wa.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",g.errors.UNPREDICTABLE_GAS_LIMIT,{error:e,method:t,transaction:n}),e}function Qa(t){return new Promise(function(e){setTimeout(e,t)})}function Ya(t){if(t.error){const e=new Error(t.error.message);throw e.code=t.error.code,e.data=t.error.data,e}return t.result}function Xa(t){return t?t.toLowerCase():t}const Za={};class tl extends Cn{constructor(t,e,r){if(super(),t!==Za)throw new Error("do not call the JsonRpcSigner constructor directly; use provider.getSigner");ut(this,"provider",e),null==r&&(r=0),"string"==typeof r?(ut(this,"_address",this.provider.formatter.address(r)),ut(this,"_index",null)):"number"==typeof r?(ut(this,"_index",r),ut(this,"_address",null)):Wa.throwArgumentError("invalid address or index","addressOrIndex",r)}connect(t){return Wa.throwError("cannot alter JSON-RPC Signer connection",g.errors.UNSUPPORTED_OPERATION,{operation:"connect"})}connectUnchecked(){return new el(Za,this.provider,this._address||this._index)}getAddress(){return this._address?Promise.resolve(this._address):this.provider.send("eth_accounts",[]).then(t=>(t.length<=this._index&&Wa.throwError("unknown account #"+this._index,g.errors.UNSUPPORTED_OPERATION,{operation:"getAddress"}),this.provider.formatter.address(t[this._index])))}sendUncheckedTransaction(t){t=pt(t);const e=this.getAddress().then(t=>(t&&(t=t.toLowerCase()),t));if(null==t.gasLimit){const r=pt(t);r.from=e,t.gasLimit=this.provider.estimateGas(r)}return null!=t.to&&(t.to=Promise.resolve(t.to).then(t=>Ka(this,void 0,void 0,function*(){if(null==t)return null;const e=yield this.provider.resolveName(t);return null==e&&Wa.throwArgumentError("provided ENS name resolves to null","tx.to",t),e}))),dt({tx:dt(t),sender:e}).then(({tx:e,sender:r})=>{null!=e.from?e.from.toLowerCase()!==r&&Wa.throwArgumentError("from address mismatch","transaction",t):e.from=r;const n=this.provider.constructor.hexlifyTransaction(e,{from:!0});return this.provider.send("eth_sendTransaction",[n]).then(t=>t,t=>("string"==typeof t.message&&t.message.match(/user denied/i)&&Wa.throwError("user rejected transaction",g.errors.ACTION_REJECTED,{action:"sendTransaction",transaction:e}),Ja("sendTransaction",t,n)))})}signTransaction(t){return Wa.throwError("signing transactions is unsupported",g.errors.UNSUPPORTED_OPERATION,{operation:"signTransaction"})}sendTransaction(t){return Ka(this,void 0,void 0,function*(){const e=yield this.provider._getInternalBlockNumber(100+2*this.provider.pollingInterval),r=yield this.sendUncheckedTransaction(t);try{return yield ca(()=>Ka(this,void 0,void 0,function*(){const t=yield this.provider.getTransaction(r);if(null!==t)return this.provider._wrapTransaction(t,r,e)}),{oncePoll:this.provider})}catch(t){throw t.transactionHash=r,t}})}signMessage(t){return Ka(this,void 0,void 0,function*(){const e="string"==typeof t?Ve(t):t,r=yield this.getAddress();try{return yield this.provider.send("personal_sign",[T(e),r.toLowerCase()])}catch(e){throw"string"==typeof e.message&&e.message.match(/user denied/i)&&Wa.throwError("user rejected signing",g.errors.ACTION_REJECTED,{action:"signMessage",from:r,messageData:t}),e}})}_legacySignMessage(t){return Ka(this,void 0,void 0,function*(){const e="string"==typeof t?Ve(t):t,r=yield this.getAddress();try{return yield this.provider.send("eth_sign",[r.toLowerCase(),T(e)])}catch(e){throw"string"==typeof e.message&&e.message.match(/user denied/i)&&Wa.throwError("user rejected signing",g.errors.ACTION_REJECTED,{action:"_legacySignMessage",from:r,messageData:t}),e}})}_signTypedData(t,e,r){return Ka(this,void 0,void 0,function*(){const n=yield ln.resolveNames(t,e,r,t=>this.provider.resolveName(t)),i=yield this.getAddress();try{return yield this.provider.send("eth_signTypedData_v4",[i.toLowerCase(),JSON.stringify(ln.getPayload(n.domain,e,n.value))])}catch(t){throw"string"==typeof t.message&&t.message.match(/user denied/i)&&Wa.throwError("user rejected signing",g.errors.ACTION_REJECTED,{action:"_signTypedData",from:i,messageData:{domain:n.domain,types:e,value:n.value}}),t}})}unlock(t){return Ka(this,void 0,void 0,function*(){const e=this.provider,r=yield this.getAddress();return e.send("personal_unlockAccount",[r.toLowerCase(),t,null])})}}class el extends tl{sendTransaction(t){return this.sendUncheckedTransaction(t).then(t=>({hash:t,nonce:null,gasLimit:null,gasPrice:null,data:null,value:null,chainId:null,confirmations:0,from:null,wait:e=>this.provider.waitForTransaction(t,e)}))}}const rl={chainId:!0,data:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,value:!0,type:!0,accessList:!0,maxFeePerGas:!0,maxPriorityFeePerGas:!0};class nl extends Ha{constructor(t,e){let r=e;null==r&&(r=new Promise((t,e)=>{setTimeout(()=>{this.detectNetwork().then(e=>{t(e)},t=>{e(t)})},0)})),super(r),t||(t=ht(this.constructor,"defaultUrl")()),ut(this,"connection","string"==typeof t?Object.freeze({url:t}):Object.freeze(pt(t))),this._nextId=42}get _cache(){return null==this._eventLoopCache&&(this._eventLoopCache={}),this._eventLoopCache}static defaultUrl(){return"http://localhost:8545"}detectNetwork(){return this._cache.detectNetwork||(this._cache.detectNetwork=this._uncachedDetectNetwork(),setTimeout(()=>{this._cache.detectNetwork=null},0)),this._cache.detectNetwork}_uncachedDetectNetwork(){return Ka(this,void 0,void 0,function*(){yield Qa(0);let t=null;try{t=yield this.send("eth_chainId",[])}catch(e){try{t=yield this.send("net_version",[])}catch(t){}}if(null!=t){const e=ht(this.constructor,"getNetwork");try{return e(H.from(t).toNumber())}catch(e){return Wa.throwError("could not detect network",g.errors.NETWORK_ERROR,{chainId:t,event:"invalidNetwork",serverError:e})}}return Wa.throwError("could not detect network",g.errors.NETWORK_ERROR,{event:"noNetwork"})})}getSigner(t){return new tl(Za,this,t)}getUncheckedSigner(t){return this.getSigner(t).connectUnchecked()}listAccounts(){return this.send("eth_accounts",[]).then(t=>t.map(t=>this.formatter.address(t)))}send(t,e){const r={method:t,params:e,id:this._nextId++,jsonrpc:"2.0"};this.emit("debug",{action:"request",request:yt(r),provider:this});const n=["eth_chainId","eth_blockNumber"].indexOf(t)>=0;if(n&&this._cache[t])return this._cache[t];const i=la(this.connection,JSON.stringify(r),Ya).then(t=>(this.emit("debug",{action:"response",request:r,response:t,provider:this}),t),t=>{throw this.emit("debug",{action:"response",error:t,request:r,provider:this}),t});return n&&(this._cache[t]=i,setTimeout(()=>{this._cache[t]=null},0)),i}prepareRequest(t,e){switch(t){case"getBlockNumber":return["eth_blockNumber",[]];case"getGasPrice":return["eth_gasPrice",[]];case"getBalance":return["eth_getBalance",[Xa(e.address),e.blockTag]];case"getTransactionCount":return["eth_getTransactionCount",[Xa(e.address),e.blockTag]];case"getCode":return["eth_getCode",[Xa(e.address),e.blockTag]];case"getStorageAt":return["eth_getStorageAt",[Xa(e.address),F(e.position,32),e.blockTag]];case"sendTransaction":return["eth_sendRawTransaction",[e.signedTransaction]];case"getBlock":return e.blockTag?["eth_getBlockByNumber",[e.blockTag,!!e.includeTransactions]]:e.blockHash?["eth_getBlockByHash",[e.blockHash,!!e.includeTransactions]]:null;case"getTransaction":return["eth_getTransactionByHash",[e.transactionHash]];case"getTransactionReceipt":return["eth_getTransactionReceipt",[e.transactionHash]];case"call":return["eth_call",[ht(this.constructor,"hexlifyTransaction")(e.transaction,{from:!0}),e.blockTag]];case"estimateGas":return["eth_estimateGas",[ht(this.constructor,"hexlifyTransaction")(e.transaction,{from:!0})]];case"getLogs":return e.filter&&null!=e.filter.address&&(e.filter.address=Xa(e.filter.address)),["eth_getLogs",[e.filter]]}return null}perform(t,e){return Ka(this,void 0,void 0,function*(){if("call"===t||"estimateGas"===t){const t=e.transaction;if(t&&null!=t.type&&H.from(t.type).isZero()&&null==t.maxFeePerGas&&null==t.maxPriorityFeePerGas){const r=yield this.getFeeData();null==r.maxFeePerGas&&null==r.maxPriorityFeePerGas&&((e=pt(e)).transaction=pt(t),delete e.transaction.type)}}const r=this.prepareRequest(t,e);null==r&&Wa.throwError(t+" not implemented",g.errors.NOT_IMPLEMENTED,{operation:t});try{return yield this.send(r[0],r[1])}catch(r){return Ja(t,r,e)}})}_startEvent(t){"pending"===t.tag&&this._startPending(),super._startEvent(t)}_startPending(){if(null!=this._pendingFilter)return;const t=this,e=this.send("eth_newPendingTransactionFilter",[]);this._pendingFilter=e,e.then(function(r){return function n(){t.send("eth_getFilterChanges",[r]).then(function(r){if(t._pendingFilter!=e)return null;let n=Promise.resolve();return r.forEach(function(e){t._emitted["t:"+e.toLowerCase()]="pending",n=n.then(function(){return t.getTransaction(e).then(function(e){return t.emit("pending",e),null})})}),n.then(function(){return Qa(1e3)})}).then(function(){if(t._pendingFilter==e)return setTimeout(function(){n()},0),null;t.send("eth_uninstallFilter",[r])}).catch(t=>{})}(),r}).catch(t=>{})}_stopEvent(t){"pending"===t.tag&&0===this.listenerCount("pending")&&(this._pendingFilter=null),super._stopEvent(t)}static hexlifyTransaction(t,e){const r=pt(rl);if(e)for(const t in e)e[t]&&(r[t]=!0);ft(t,r);const n={};return["chainId","gasLimit","gasPrice","type","maxFeePerGas","maxPriorityFeePerGas","nonce","value"].forEach(function(e){if(null==t[e])return;const r=B(H.from(t[e]));"gasLimit"===e&&(e="gas"),n[e]=r}),["from","to","data"].forEach(function(e){null!=t[e]&&(n[e]=T(t[e]))}),t.accessList&&(n.accessList=ho(t.accessList)),n}}let il=null;try{if(il=WebSocket,null==il)throw new Error("inject please")}catch(t){const e=new g(pa);il=function(){e.throwError("WebSockets not supported in this environment",g.errors.UNSUPPORTED_OPERATION,{operation:"new WebSocket()"})}}var ol=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const sl=new g(pa);let al=1;class ll extends nl{constructor(t,e){"any"===e&&sl.throwError("WebSocketProvider does not support 'any' network yet",g.errors.UNSUPPORTED_OPERATION,{operation:"network:any"}),super("string"==typeof t?t:"_websocket",e),this._pollingInterval=-1,this._wsReady=!1,ut(this,"_websocket","string"==typeof t?new il(this.connection.url):t),ut(this,"_requests",{}),ut(this,"_subs",{}),ut(this,"_subIds",{}),ut(this,"_detectNetwork",super.detectNetwork()),this.websocket.onopen=()=>{this._wsReady=!0,Object.keys(this._requests).forEach(t=>{this.websocket.send(this._requests[t].payload)})},this.websocket.onmessage=t=>{const e=t.data,r=JSON.parse(e);if(null!=r.id){const t=String(r.id),n=this._requests[t];if(delete this._requests[t],void 0!==r.result)n.callback(null,r.result),this.emit("debug",{action:"response",request:JSON.parse(n.payload),response:r.result,provider:this});else{let t=null;r.error?(t=new Error(r.error.message||"unknown error"),ut(t,"code",r.error.code||null),ut(t,"response",e)):t=new Error("unknown error"),n.callback(t,void 0),this.emit("debug",{action:"response",error:t,request:JSON.parse(n.payload),provider:this})}}else if("eth_subscription"===r.method){const t=this._subs[r.params.subscription];t&&t.processFunc(r.params.result)}else console.warn("this should not happen")};const r=setInterval(()=>{this.emit("poll")},1e3);r.unref&&r.unref()}get websocket(){return this._websocket}detectNetwork(){return this._detectNetwork}get pollingInterval(){return 0}resetEventsBlock(t){sl.throwError("cannot reset events block on WebSocketProvider",g.errors.UNSUPPORTED_OPERATION,{operation:"resetEventBlock"})}set pollingInterval(t){sl.throwError("cannot set polling interval on WebSocketProvider",g.errors.UNSUPPORTED_OPERATION,{operation:"setPollingInterval"})}poll(){return ol(this,void 0,void 0,function*(){return null})}set polling(t){t&&sl.throwError("cannot set polling on WebSocketProvider",g.errors.UNSUPPORTED_OPERATION,{operation:"setPolling"})}send(t,e){const r=al++;return new Promise((n,i)=>{const o=JSON.stringify({method:t,params:e,id:r,jsonrpc:"2.0"});this.emit("debug",{action:"request",request:JSON.parse(o),provider:this}),this._requests[String(r)]={callback:function(t,e){return t?i(t):n(e)},payload:o},this._wsReady&&this.websocket.send(o)})}static defaultUrl(){return"ws://localhost:8546"}_subscribe(t,e,r){return ol(this,void 0,void 0,function*(){let n=this._subIds[t];null==n&&(n=Promise.all(e).then(t=>this.send("eth_subscribe",t)),this._subIds[t]=n);const i=yield n;this._subs[i]={tag:t,processFunc:r}})}_startEvent(t){switch(t.type){case"block":this._subscribe("block",["newHeads"],t=>{const e=H.from(t.number).toNumber();this._emitted.block=e,this.emit("block",e)});break;case"pending":this._subscribe("pending",["newPendingTransactions"],t=>{this.emit("pending",t)});break;case"filter":this._subscribe(t.tag,["logs",this._getFilter(t.filter)],e=>{null==e.removed&&(e.removed=!1),this.emit(t.filter,this.formatter.filterLog(e))});break;case"tx":{const e=t=>{const e=t.hash;this.getTransactionReceipt(e).then(t=>{t&&this.emit(e,t)})};e(t),this._subscribe("tx",["newHeads"],t=>{this._events.filter(t=>"tx"===t.type).forEach(e)});break}case"debug":case"poll":case"willPoll":case"didPoll":case"error":break;default:console.log("unhandled:",t)}}_stopEvent(t){let e=t.tag;if("tx"===t.type){if(this._events.filter(t=>"tx"===t.type).length)return;e="tx"}else if(this.listenerCount(t.event))return;const r=this._subIds[e];r&&(delete this._subIds[e],r.then(t=>{this._subs[t]&&(delete this._subs[t],this.send("eth_unsubscribe",[t]))}))}destroy(){return ol(this,void 0,void 0,function*(){this.websocket.readyState===il.CONNECTING&&(yield new Promise(t=>{this.websocket.onopen=function(){t(!0)},this.websocket.onerror=function(){t(!1)}})),this.websocket.close(1e3)})}}var cl=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const ul=new g(pa);class hl extends nl{detectNetwork(){const t=Object.create(null,{detectNetwork:{get:()=>super.detectNetwork}});return cl(this,void 0,void 0,function*(){let e=this.network;return null==e&&(e=yield t.detectNetwork.call(this),e||ul.throwError("no network detected",g.errors.UNKNOWN_ERROR,{}),null==this._network&&(ut(this,"_network",e),this.emit("network",e,null))),e})}}class dl extends hl{constructor(t,e){ul.checkAbstract(new.target,dl),t=ht(new.target,"getNetwork")(t),e=ht(new.target,"getApiKey")(e);super(ht(new.target,"getUrl")(t,e),t),"string"==typeof e?ut(this,"apiKey",e):null!=e&&Object.keys(e).forEach(t=>{ut(this,t,e[t])})}_startPending(){ul.warn("WARNING: API provider does not support pending filters")}isCommunityResource(){return!1}getSigner(t){return ul.throwError("API provider does not support signing",g.errors.UNSUPPORTED_OPERATION,{operation:"getSigner"})}listAccounts(){return Promise.resolve([])}static getApiKey(t){return t}static getUrl(t,e){return ul.throwError("not implemented; sub-classes must override getUrl",g.errors.NOT_IMPLEMENTED,{operation:"getUrl"})}}const fl=new g(pa),pl="_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC";class ml extends ll{constructor(t,e){const r=new gl(t,e);super(r.connection.url.replace(/^http/i,"ws").replace(".alchemyapi.",".ws.alchemyapi."),r.network),ut(this,"apiKey",r.apiKey)}isCommunityResource(){return this.apiKey===pl}}class gl extends dl{static getWebSocketProvider(t,e){return new ml(t,e)}static getApiKey(t){return null==t?pl:(t&&"string"!=typeof t&&fl.throwArgumentError("invalid apiKey","apiKey",t),t)}static getUrl(t,e){let r=null;switch(t.name){case"homestead":r="eth-mainnet.alchemyapi.io/v2/";break;case"goerli":r="eth-goerli.g.alchemy.com/v2/";break;case"sepolia":r="eth-sepolia.g.alchemy.com/v2/";break;case"matic":r="polygon-mainnet.g.alchemy.com/v2/";break;case"maticmum":r="polygon-mumbai.g.alchemy.com/v2/";break;case"arbitrum":r="arb-mainnet.g.alchemy.com/v2/";break;case"arbitrum-goerli":r="arb-goerli.g.alchemy.com/v2/";break;case"arbitrum-sepolia":r="arb-sepolia.g.alchemy.com/v2/";break;case"optimism":r="opt-mainnet.g.alchemy.com/v2/";break;case"optimism-goerli":r="opt-goerli.g.alchemy.com/v2/";break;case"optimism-sepolia":r="opt-sepolia.g.alchemy.com/v2/";break;default:fl.throwArgumentError("unsupported network","network",arguments[0])}return{allowGzip:!0,url:"https://"+r+e,throttleCallback:(t,r)=>(e===pl&&ba(),Promise.resolve(!0))}}isCommunityResource(){return this.apiKey===pl}}const vl=new g(pa),yl="9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972";function wl(t){switch(t){case"homestead":return"rpc.ankr.com/eth/";case"ropsten":return"rpc.ankr.com/eth_ropsten/";case"rinkeby":return"rpc.ankr.com/eth_rinkeby/";case"goerli":return"rpc.ankr.com/eth_goerli/";case"sepolia":return"rpc.ankr.com/eth_sepolia/";case"matic":return"rpc.ankr.com/polygon/";case"maticmum":return"rpc.ankr.com/polygon_mumbai/";case"optimism":return"rpc.ankr.com/optimism/";case"optimism-goerli":return"rpc.ankr.com/optimism_testnet/";case"optimism-sepolia":return"rpc.ankr.com/optimism_sepolia/";case"arbitrum":return"rpc.ankr.com/arbitrum/"}return vl.throwArgumentError("unsupported network","name",t)}class bl extends dl{isCommunityResource(){return this.apiKey===yl}static getApiKey(t){return null==t?yl:t}static getUrl(t,e){null==e&&(e=yl);const r={allowGzip:!0,url:"https://"+wl(t.name)+e,throttleCallback:(t,r)=>(e.apiKey===yl&&ba(),Promise.resolve(!0))};return null!=e.projectSecret&&(r.user="",r.password=e.projectSecret),r}}var El=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const Al=new g(pa);class kl extends dl{static getApiKey(t){return null!=t&&Al.throwArgumentError("apiKey not supported for cloudflare","apiKey",t),null}static getUrl(t,e){let r=null;if("homestead"===t.name)r="https://cloudflare-eth.com/";else Al.throwArgumentError("unsupported network","network",arguments[0]);return r}perform(t,e){const r=Object.create(null,{perform:{get:()=>super.perform}});return El(this,void 0,void 0,function*(){if("getBlockNumber"===t){return(yield r.perform.call(this,"getBlock",{blockTag:"latest"})).number}return r.perform.call(this,t,e)})}}var Sl=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const Cl=new g(pa);function xl(t){const e={};for(let r in t){if(null==t[r])continue;let n=t[r];"type"===r&&0===n||(n={type:!0,gasLimit:!0,gasPrice:!0,maxFeePerGs:!0,maxPriorityFeePerGas:!0,nonce:!0,value:!0}[r]?B(T(n)):"accessList"===r?"["+ho(n).map(t=>`{address:"${t.address}",storageKeys:["${t.storageKeys.join('","')}"]}`).join(",")+"]":T(n),e[r]=n)}return e}function _l(t){if(0==t.status&&("No records found"===t.message||"No transactions found"===t.message))return t.result;if(1!=t.status||"string"!=typeof t.message||!t.message.match(/^OK/)){const e=new Error("invalid response");throw e.result=JSON.stringify(t),(t.result||"").toLowerCase().indexOf("rate limit")>=0&&(e.throttleRetry=!0),e}return t.result}function Pl(t){if(t&&0==t.status&&"NOTOK"==t.message&&(t.result||"").toLowerCase().indexOf("rate limit")>=0){const e=new Error("throttled response");throw e.result=JSON.stringify(t),e.throttleRetry=!0,e}if("2.0"!=t.jsonrpc){const e=new Error("invalid response");throw e.result=JSON.stringify(t),e}if(t.error){const e=new Error(t.error.message||"unknown error");throw t.error.code&&(e.code=t.error.code),t.error.data&&(e.data=t.error.data),e}return t.result}function Tl(t){if("pending"===t)throw new Error("pending not supported");return"latest"===t?t:parseInt(t.substring(2),16)}function Il(t,e,r){if("call"===t&&e.code===g.errors.SERVER_ERROR){const t=e.error;if(t&&(t.message.match(/reverted/i)||t.message.match(/VM execution error/i))){let r=t.data;if(r&&(r="0x"+r.replace(/^.*0x/i,"")),_(r))return r;Cl.throwError("missing revert data in call exception",g.errors.CALL_EXCEPTION,{error:e,data:"0x"})}}let n=e.message;throw e.code===g.errors.SERVER_ERROR&&(e.error&&"string"==typeof e.error.message?n=e.error.message:"string"==typeof e.body?n=e.body:"string"==typeof e.responseText&&(n=e.responseText)),n=(n||"").toLowerCase(),n.match(/insufficient funds/)&&Cl.throwError("insufficient funds for intrinsic transaction cost",g.errors.INSUFFICIENT_FUNDS,{error:e,method:t,transaction:r}),n.match(/same hash was already imported|transaction nonce is too low|nonce too low/)&&Cl.throwError("nonce has already been used",g.errors.NONCE_EXPIRED,{error:e,method:t,transaction:r}),n.match(/another transaction with same nonce/)&&Cl.throwError("replacement fee too low",g.errors.REPLACEMENT_UNDERPRICED,{error:e,method:t,transaction:r}),n.match(/execution failed due to an exception|execution reverted/)&&Cl.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",g.errors.UNPREDICTABLE_GAS_LIMIT,{error:e,method:t,transaction:r}),e}class Nl extends Ha{constructor(t,e){super(t),ut(this,"baseUrl",this.getBaseUrl()),ut(this,"apiKey",e||null)}getBaseUrl(){switch(this.network?this.network.name:"invalid"){case"homestead":return"https://api.etherscan.io";case"goerli":return"https://api-goerli.etherscan.io";case"sepolia":return"https://api-sepolia.etherscan.io";case"matic":return"https://api.polygonscan.com";case"maticmum":return"https://api-testnet.polygonscan.com";case"arbitrum":return"https://api.arbiscan.io";case"arbitrum-goerli":return"https://api-goerli.arbiscan.io";case"optimism":return"https://api-optimistic.etherscan.io";case"optimism-goerli":return"https://api-goerli-optimistic.etherscan.io"}return Cl.throwArgumentError("unsupported network","network",this.network.name)}getUrl(t,e){const r=Object.keys(e).reduce((t,r)=>{const n=e[r];return null!=n&&(t+=`&${r}=${n}`),t},""),n=this.apiKey?`&apikey=${this.apiKey}`:"";return`${this.baseUrl}/api?module=${t}${r}${n}`}getPostUrl(){return`${this.baseUrl}/api`}getPostData(t,e){return e.module=t,e.apikey=this.apiKey,e}fetch(t,e,r){return Sl(this,void 0,void 0,function*(){const n=r?this.getPostUrl():this.getUrl(t,e),i=r?this.getPostData(t,e):null,o="proxy"===t?Pl:_l;this.emit("debug",{action:"request",request:n,provider:this});const s={url:n,throttleSlotInterval:1e3,throttleCallback:(t,e)=>(this.isCommunityResource()&&ba(),Promise.resolve(!0))};let a=null;i&&(s.headers={"content-type":"application/x-www-form-urlencoded; charset=UTF-8"},a=Object.keys(i).map(t=>`${t}=${i[t]}`).join("&"));const l=yield la(s,a,o||Pl);return this.emit("debug",{action:"response",request:n,response:yt(l),provider:this}),l})}detectNetwork(){return Sl(this,void 0,void 0,function*(){return this.network})}perform(t,e){const r=Object.create(null,{perform:{get:()=>super.perform}});return Sl(this,void 0,void 0,function*(){switch(t){case"getBlockNumber":return this.fetch("proxy",{action:"eth_blockNumber"});case"getGasPrice":return this.fetch("proxy",{action:"eth_gasPrice"});case"getBalance":return this.fetch("account",{action:"balance",address:e.address,tag:e.blockTag});case"getTransactionCount":return this.fetch("proxy",{action:"eth_getTransactionCount",address:e.address,tag:e.blockTag});case"getCode":return this.fetch("proxy",{action:"eth_getCode",address:e.address,tag:e.blockTag});case"getStorageAt":return this.fetch("proxy",{action:"eth_getStorageAt",address:e.address,position:e.position,tag:e.blockTag});case"sendTransaction":return this.fetch("proxy",{action:"eth_sendRawTransaction",hex:e.signedTransaction},!0).catch(t=>Il("sendTransaction",t,e.signedTransaction));case"getBlock":if(e.blockTag)return this.fetch("proxy",{action:"eth_getBlockByNumber",tag:e.blockTag,boolean:e.includeTransactions?"true":"false"});throw new Error("getBlock by blockHash not implemented");case"getTransaction":return this.fetch("proxy",{action:"eth_getTransactionByHash",txhash:e.transactionHash});case"getTransactionReceipt":return this.fetch("proxy",{action:"eth_getTransactionReceipt",txhash:e.transactionHash});case"call":{if("latest"!==e.blockTag)throw new Error("EtherscanProvider does not support blockTag for call");const t=xl(e.transaction);t.module="proxy",t.action="eth_call";try{return yield this.fetch("proxy",t,!0)}catch(t){return Il("call",t,e.transaction)}}case"estimateGas":{const t=xl(e.transaction);t.module="proxy",t.action="eth_estimateGas";try{return yield this.fetch("proxy",t,!0)}catch(t){return Il("estimateGas",t,e.transaction)}}case"getLogs":{const t={action:"getLogs"};if(e.filter.fromBlock&&(t.fromBlock=Tl(e.filter.fromBlock)),e.filter.toBlock&&(t.toBlock=Tl(e.filter.toBlock)),e.filter.address&&(t.address=e.filter.address),e.filter.topics&&e.filter.topics.length>0&&(e.filter.topics.length>1&&Cl.throwError("unsupported topic count",g.errors.UNSUPPORTED_OPERATION,{topics:e.filter.topics}),1===e.filter.topics.length)){const r=e.filter.topics[0];"string"==typeof r&&66===r.length||Cl.throwError("unsupported topic format",g.errors.UNSUPPORTED_OPERATION,{topic0:r}),t.topic0=r}const r=yield this.fetch("logs",t);let n={};for(let t=0;t<r.length;t++){const e=r[t];if(null==e.blockHash){if(null==n[e.blockNumber]){const t=yield this.getBlock(e.blockNumber);t&&(n[e.blockNumber]=t.hash)}e.blockHash=n[e.blockNumber]}}return r}case"getEtherPrice":return"homestead"!==this.network.name?0:parseFloat((yield this.fetch("stats",{action:"ethprice"})).ethusd)}return r.perform.call(this,t,e)})}getHistory(t,e,r){return Sl(this,void 0,void 0,function*(){const n={action:"txlist",address:yield this.resolveName(t),startblock:null==e?0:e,endblock:null==r?99999999:r,sort:"asc"};return(yield this.fetch("account",n)).map(t=>{["contractAddress","to"].forEach(function(e){""==t[e]&&delete t[e]}),null==t.creates&&null!=t.contractAddress&&(t.creates=t.contractAddress);const e=this.formatter.transactionResponse(t);return t.timeStamp&&(e.timestamp=parseInt(t.timeStamp)),e})})}isCommunityResource(){return null==this.apiKey}}var Ml=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const Bl=new g(pa);function Rl(){return(new Date).getTime()}function Fl(t){let e=null;for(let r=0;r<t.length;r++){const n=t[r];if(null==n)return null;e?e.name===n.name&&e.chainId===n.chainId&&(e.ensAddress===n.ensAddress||null==e.ensAddress&&null==n.ensAddress)||Bl.throwArgumentError("provider mismatch","networks",t):e=n}return e}function Ol(t,e){t=t.slice().sort();const r=Math.floor(t.length/2);if(t.length%2)return t[r];const n=t[r-1],i=t[r];return null!=e&&Math.abs(n-i)>e?null:(n+i)/2}function Dl(t){if(null===t)return"null";if("number"==typeof t||"boolean"==typeof t)return JSON.stringify(t);if("string"==typeof t)return t;if(H.isBigNumber(t))return t.toString();if(Array.isArray(t))return JSON.stringify(t.map(t=>Dl(t)));if("object"==typeof t){const e=Object.keys(t);return e.sort(),"{"+e.map(e=>{let r=t[e];return r="function"==typeof r?"[function]":Dl(r),JSON.stringify(e)+":"+r}).join(",")+"}"}throw new Error("unknown value type: "+typeof t)}let Ul=1;function Ll(t){let e=null,r=null,n=new Promise(n=>{e=function(){r&&(clearTimeout(r),r=null),n()},r=setTimeout(e,t)});return{cancel:e,getPromise:function(){return n},wait:t=>(n=n.then(t),n)}}const ql=[g.errors.CALL_EXCEPTION,g.errors.INSUFFICIENT_FUNDS,g.errors.NONCE_EXPIRED,g.errors.REPLACEMENT_UNDERPRICED,g.errors.UNPREDICTABLE_GAS_LIMIT],zl=["address","args","errorArgs","errorSignature","method","transaction"];function Gl(t,e){const r={weight:t.weight};return Object.defineProperty(r,"provider",{get:()=>t.provider}),t.start&&(r.start=t.start),e&&(r.duration=e-t.start),t.done&&(t.error?r.error=t.error:r.result=t.result||null),r}function jl(t,e,r){let n=Dl;switch(e){case"getBlockNumber":return function(e){const r=e.map(t=>t.result);let n=Ol(e.map(t=>t.result),2);if(null!=n)return n=Math.ceil(n),r.indexOf(n+1)>=0&&n++,n>=t._highestBlockNumber&&(t._highestBlockNumber=n),t._highestBlockNumber};case"getGasPrice":return function(t){const e=t.map(t=>t.result);return e.sort(),e[Math.floor(e.length/2)]};case"getEtherPrice":return function(t){return Ol(t.map(t=>t.result))};case"getBalance":case"getTransactionCount":case"getCode":case"getStorageAt":case"call":case"estimateGas":case"getLogs":break;case"getTransaction":case"getTransactionReceipt":n=function(t){return null==t?null:((t=pt(t)).confirmations=-1,Dl(t))};break;case"getBlock":n=r.includeTransactions?function(t){return null==t?null:((t=pt(t)).transactions=t.transactions.map(t=>((t=pt(t)).confirmations=-1,t)),Dl(t))}:function(t){return null==t?null:Dl(t)};break;default:throw new Error("unknown method: "+e)}return function(t,e){return function(r){const n={};r.forEach(e=>{const r=t(e.result);n[r]||(n[r]={count:0,result:e.result}),n[r].count++});const i=Object.keys(n);for(let t=0;t<i.length;t++){const r=n[i[t]];if(r.count>=e)return r.result}}}(n,t.quorum)}function Hl(t,e){return Ml(this,void 0,void 0,function*(){const r=t.provider;return null!=r.blockNumber&&r.blockNumber>=e||-1===e?r:ca(()=>new Promise((n,i)=>{setTimeout(function(){return r.blockNumber>=e?n(r):t.cancelled?n(null):n(void 0)},0)}),{oncePoll:r})})}function Kl(t,e,r,n){return Ml(this,void 0,void 0,function*(){let i=t.provider;switch(r){case"getBlockNumber":case"getGasPrice":return i[r]();case"getEtherPrice":if(i.getEtherPrice)return i.getEtherPrice();break;case"getBalance":case"getTransactionCount":case"getCode":return n.blockTag&&_(n.blockTag)&&(i=yield Hl(t,e)),i[r](n.address,n.blockTag||"latest");case"getStorageAt":return n.blockTag&&_(n.blockTag)&&(i=yield Hl(t,e)),i.getStorageAt(n.address,n.position,n.blockTag||"latest");case"getBlock":return n.blockTag&&_(n.blockTag)&&(i=yield Hl(t,e)),i[n.includeTransactions?"getBlockWithTransactions":"getBlock"](n.blockTag||n.blockHash);case"call":case"estimateGas":return n.blockTag&&_(n.blockTag)&&(i=yield Hl(t,e)),"call"===r&&n.blockTag?i[r](n.transaction,n.blockTag):i[r](n.transaction);case"getTransaction":case"getTransactionReceipt":return i[r](n.transactionHash);case"getLogs":{let r=n.filter;return(r.fromBlock&&_(r.fromBlock)||r.toBlock&&_(r.toBlock))&&(i=yield Hl(t,e)),i.getLogs(r)}}return Bl.throwError("unknown method error",g.errors.UNKNOWN_ERROR,{method:r,params:n})})}class Wl extends Ha{constructor(t,e){0===t.length&&Bl.throwArgumentError("missing providers","providers",t);const r=t.map((t,e)=>{if(bn.isProvider(t)){const e=ya(t)?2e3:750,r=1;return Object.freeze({provider:t,weight:1,stallTimeout:e,priority:r})}const r=pt(t);null==r.priority&&(r.priority=1),null==r.stallTimeout&&(r.stallTimeout=ya(t)?2e3:750),null==r.weight&&(r.weight=1);const n=r.weight;return(n%1||n>512||n<1)&&Bl.throwArgumentError("invalid weight; must be integer in [1, 512]",`providers[${e}].weight`,n),Object.freeze(r)}),n=r.reduce((t,e)=>t+e.weight,0);null==e?e=n/2:e>n&&Bl.throwArgumentError("quorum will always fail; larger than total weight","quorum",e);let i=Fl(r.map(t=>t.provider.network));null==i&&(i=new Promise((t,e)=>{setTimeout(()=>{this.detectNetwork().then(t,e)},0)})),super(i),ut(this,"providerConfigs",Object.freeze(r)),ut(this,"quorum",e),this._highestBlockNumber=-1}detectNetwork(){return Ml(this,void 0,void 0,function*(){return Fl(yield Promise.all(this.providerConfigs.map(t=>t.provider.getNetwork())))})}perform(t,e){return Ml(this,void 0,void 0,function*(){if("sendTransaction"===t){const t=yield Promise.all(this.providerConfigs.map(t=>t.provider.sendTransaction(e.signedTransaction).then(t=>t.hash,t=>t)));for(let e=0;e<t.length;e++){const r=t[e];if("string"==typeof r)return r}throw t[0]}-1===this._highestBlockNumber&&"getBlockNumber"!==t&&(yield this.getBlockNumber());const r=jl(this,t,e),n=ps(this.providerConfigs.map(pt));n.sort((t,e)=>t.priority-e.priority);const i=this._highestBlockNumber;let o=0,s=!0;for(;;){const a=Rl();let l=n.filter(t=>t.runner&&a-t.start<t.stallTimeout).reduce((t,e)=>t+e.weight,0);for(;l<this.quorum&&o<n.length;){const r=n[o++],s=Ul++;r.start=Rl(),r.staller=Ll(r.stallTimeout),r.staller.wait(()=>{r.staller=null}),r.runner=Kl(r,i,t,e).then(n=>{r.done=!0,r.result=n,this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:s,backend:Gl(r,Rl()),request:{method:t,params:yt(e)},provider:this})},n=>{r.done=!0,r.error=n,this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:s,backend:Gl(r,Rl()),request:{method:t,params:yt(e)},provider:this})}),this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:s,backend:Gl(r,null),request:{method:t,params:yt(e)},provider:this}),l+=r.weight}const c=[];n.forEach(t=>{!t.done&&t.runner&&(c.push(t.runner),t.staller&&c.push(t.staller.getPromise()))}),c.length&&(yield Promise.race(c));const u=n.filter(t=>t.done&&null==t.error);if(u.length>=this.quorum){const t=r(u);if(void 0!==t)return n.forEach(t=>{t.staller&&t.staller.cancel(),t.cancelled=!0}),t;s||(yield Ll(100).getPromise()),s=!1}const h=n.reduce((t,e)=>{if(!e.done||null==e.error)return t;const r=e.error.code;return ql.indexOf(r)>=0&&(t[r]||(t[r]={error:e.error,weight:0}),t[r].weight+=e.weight),t},{});if(Object.keys(h).forEach(t=>{const e=h[t];if(e.weight<this.quorum)return;n.forEach(t=>{t.staller&&t.staller.cancel(),t.cancelled=!0});const r=e.error,i={};zl.forEach(t=>{null!=r[t]&&(i[t]=r[t])}),Bl.throwError(r.reason||r.message,t,i)}),0===n.filter(t=>!t.done).length)break}return n.forEach(t=>{t.staller&&t.staller.cancel(),t.cancelled=!0}),Bl.throwError("failed to meet quorum",g.errors.SERVER_ERROR,{method:t,params:e,results:n.map(t=>Gl(t)),provider:this})})}}const Vl=new g(pa),$l="84842078b09946638c03157f83405213";class Jl extends ll{constructor(t,e){const r=new Ql(t,e),n=r.connection;n.password&&Vl.throwError("INFURA WebSocket project secrets unsupported",g.errors.UNSUPPORTED_OPERATION,{operation:"InfuraProvider.getWebSocketProvider()"});super(n.url.replace(/^http/i,"ws").replace("/v3/","/ws/v3/"),t),ut(this,"apiKey",r.projectId),ut(this,"projectId",r.projectId),ut(this,"projectSecret",r.projectSecret)}isCommunityResource(){return this.projectId===$l}}class Ql extends dl{static getWebSocketProvider(t,e){return new Jl(t,e)}static getApiKey(t){const e={apiKey:$l,projectId:$l,projectSecret:null};return null==t||("string"==typeof t?e.projectId=t:null!=t.projectSecret?(Vl.assertArgument("string"==typeof t.projectId,"projectSecret requires a projectId","projectId",t.projectId),Vl.assertArgument("string"==typeof t.projectSecret,"invalid projectSecret","projectSecret","[REDACTED]"),e.projectId=t.projectId,e.projectSecret=t.projectSecret):t.projectId&&(e.projectId=t.projectId),e.apiKey=e.projectId),e}static getUrl(t,e){let r=null;switch(t?t.name:"unknown"){case"homestead":r="mainnet.infura.io";break;case"goerli":r="goerli.infura.io";break;case"sepolia":r="sepolia.infura.io";break;case"matic":r="polygon-mainnet.infura.io";break;case"maticmum":r="polygon-mumbai.infura.io";break;case"optimism":r="optimism-mainnet.infura.io";break;case"optimism-goerli":r="optimism-goerli.infura.io";break;case"optimism-sepolia":r="optimism-sepolia.infura.io";break;case"arbitrum":r="arbitrum-mainnet.infura.io";break;case"arbitrum-goerli":r="arbitrum-goerli.infura.io";break;case"arbitrum-sepolia":r="arbitrum-sepolia.infura.io";break;default:Vl.throwError("unsupported network",g.errors.INVALID_ARGUMENT,{argument:"network",value:t})}const n={allowGzip:!0,url:"https://"+r+"/v3/"+e.projectId,throttleCallback:(t,r)=>(e.projectId===$l&&ba(),Promise.resolve(!0))};return null!=e.projectSecret&&(n.user="",n.password=e.projectSecret),n}isCommunityResource(){return this.projectId===$l}}const Yl=new g(pa);class Xl extends dl{static getApiKey(t){return t&&"string"!=typeof t&&Yl.throwArgumentError("invalid apiKey","apiKey",t),t||"ETHERS_JS_SHARED"}static getUrl(t,e){Yl.warn("NodeSmith will be discontinued on 2019-12-20; please migrate to another platform.");let r=null;switch(t.name){case"homestead":r="https://ethereum.api.nodesmith.io/v1/mainnet/jsonrpc";break;case"ropsten":r="https://ethereum.api.nodesmith.io/v1/ropsten/jsonrpc";break;case"rinkeby":r="https://ethereum.api.nodesmith.io/v1/rinkeby/jsonrpc";break;case"goerli":r="https://ethereum.api.nodesmith.io/v1/goerli/jsonrpc";break;case"kovan":r="https://ethereum.api.nodesmith.io/v1/kovan/jsonrpc";break;default:Yl.throwArgumentError("unsupported network","network",arguments[0])}return r+"?apiKey="+e}}const Zl=new g(pa),tc="62e1ad51b37b8e00394bda3b";class ec extends dl{static getApiKey(t){const e={applicationId:null,loadBalancer:!0,applicationSecretKey:null};return null==t?e.applicationId=tc:"string"==typeof t?e.applicationId=t:null!=t.applicationSecretKey?(e.applicationId=t.applicationId,e.applicationSecretKey=t.applicationSecretKey):t.applicationId?e.applicationId=t.applicationId:Zl.throwArgumentError("unsupported PocketProvider apiKey","apiKey",t),e}static getUrl(t,e){let r=null;switch(t?t.name:"unknown"){case"goerli":r="eth-goerli.gateway.pokt.network";break;case"homestead":r="eth-mainnet.gateway.pokt.network";break;case"kovan":r="poa-kovan.gateway.pokt.network";break;case"matic":r="poly-mainnet.gateway.pokt.network";break;case"maticmum":r="polygon-mumbai-rpc.gateway.pokt.network";break;case"rinkeby":r="eth-rinkeby.gateway.pokt.network";break;case"ropsten":r="eth-ropsten.gateway.pokt.network";break;default:Zl.throwError("unsupported network",g.errors.INVALID_ARGUMENT,{argument:"network",value:t})}const n={headers:{},url:`https://${r}/v1/lb/${e.applicationId}`};return null!=e.applicationSecretKey&&(n.user="",n.password=e.applicationSecretKey),n}isCommunityResource(){return this.applicationId===tc}}const rc=new g(pa);class nc extends dl{static getApiKey(t){return t&&"string"!=typeof t&&rc.throwArgumentError("invalid apiKey","apiKey",t),t||"919b412a057b5e9c9b6dce193c5a60242d6efadb"}static getUrl(t,e){let r=null;switch(t.name){case"homestead":r="ethers.quiknode.pro";break;case"goerli":r="ethers.ethereum-goerli.quiknode.pro";break;case"sepolia":r="ethers.ethereum-sepolia.quiknode.pro";break;case"holesky":r="ethers.ethereum-holesky.quiknode.pro";break;case"arbitrum":r="ethers.arbitrum-mainnet.quiknode.pro";break;case"arbitrum-goerli":r="ethers.arbitrum-goerli.quiknode.pro";break;case"arbitrum-sepolia":r="ethers.arbitrum-sepolia.quiknode.pro";break;case"base":r="ethers.base-mainnet.quiknode.pro";break;case"base-goerli":r="ethers.base-goerli.quiknode.pro";break;case"base-spolia":r="ethers.base-sepolia.quiknode.pro";break;case"bnb":r="ethers.bsc.quiknode.pro";break;case"bnbt":r="ethers.bsc-testnet.quiknode.pro";break;case"matic":r="ethers.matic.quiknode.pro";break;case"maticmum":r="ethers.matic-testnet.quiknode.pro";break;case"optimism":r="ethers.optimism.quiknode.pro";break;case"optimism-goerli":r="ethers.optimism-goerli.quiknode.pro";break;case"optimism-sepolia":r="ethers.optimism-sepolia.quiknode.pro";break;case"xdai":r="ethers.xdai.quiknode.pro";break;default:rc.throwArgumentError("unsupported network","network",arguments[0])}return"https://"+r+"/"+e}}const ic=new g(pa);let oc=1;function sc(t,e){const r="Web3LegacyFetcher";return function(t,n){const i={method:t,params:n,id:oc++,jsonrpc:"2.0"};return new Promise((t,n)=>{this.emit("debug",{action:"request",fetcher:r,request:yt(i),provider:this}),e(i,(e,o)=>{if(e)return this.emit("debug",{action:"response",fetcher:r,error:e,request:i,provider:this}),n(e);if(this.emit("debug",{action:"response",fetcher:r,request:i,response:o,provider:this}),o.error){const t=new Error(o.error.message);return t.code=o.error.code,t.data=o.error.data,n(t)}t(o.result)})})}}class ac extends nl{constructor(t,e){null==t&&ic.throwArgumentError("missing provider","provider",t);let r=null,n=null,i=null;"function"==typeof t?(r="unknown:",n=t):(r=t.host||t.path||"",!r&&t.isMetaMask&&(r="metamask"),i=t,t.request?(""===r&&(r="eip-1193:"),n=function(t){return function(e,r){null==r&&(r=[]);const n={method:e,params:r};return this.emit("debug",{action:"request",fetcher:"Eip1193Fetcher",request:yt(n),provider:this}),t.request(n).then(t=>(this.emit("debug",{action:"response",fetcher:"Eip1193Fetcher",request:n,response:t,provider:this}),t),t=>{throw this.emit("debug",{action:"response",fetcher:"Eip1193Fetcher",request:n,error:t,provider:this}),t})}}(t)):t.sendAsync?n=sc(0,t.sendAsync.bind(t)):t.send?n=sc(0,t.send.bind(t)):ic.throwArgumentError("unsupported provider","provider",t),r||(r="unknown:")),super(r,e),ut(this,"jsonRpcFetchFunc",n),ut(this,"provider",i)}send(t,e){return this.jsonRpcFetchFunc(t,e)}}const lc=new g(pa);function cc(t,e){if(null==t&&(t="homestead"),"string"==typeof t){const e=t.match(/^(ws|http)s?:/i);if(e)switch(e[1].toLowerCase()){case"http":case"https":return new nl(t);case"ws":case"wss":return new ll(t);default:lc.throwArgumentError("unsupported URL scheme","network",t)}}const r=ta(t);return r&&r._defaultProvider||lc.throwError("unsupported getDefaultProvider network",g.errors.NETWORK_ERROR,{operation:"getDefaultProvider",network:t}),r._defaultProvider({FallbackProvider:Wl,AlchemyProvider:gl,AnkrProvider:bl,CloudflareProvider:kl,EtherscanProvider:Nl,InfuraProvider:Ql,JsonRpcProvider:nl,NodesmithProvider:Xl,PocketProvider:ec,QuickNodeProvider:nc,Web3Provider:ac,IpcProvider:null},e)}var uc=Object.freeze({__proto__:null,AlchemyProvider:gl,AlchemyWebSocketProvider:ml,AnkrProvider:bl,BaseProvider:Ha,CloudflareProvider:kl,EtherscanProvider:Nl,FallbackProvider:Wl,Formatter:ga,InfuraProvider:Ql,InfuraWebSocketProvider:Jl,IpcProvider:null,JsonRpcBatchProvider:class extends nl{send(t,e){const r={method:t,params:e,id:this._nextId++,jsonrpc:"2.0"};null==this._pendingBatch&&(this._pendingBatch=[]);const n={request:r,resolve:null,reject:null},i=new Promise((t,e)=>{n.resolve=t,n.reject=e});return this._pendingBatch.push(n),this._pendingBatchAggregator||(this._pendingBatchAggregator=setTimeout(()=>{const t=this._pendingBatch;this._pendingBatch=null,this._pendingBatchAggregator=null;const e=t.map(t=>t.request);return this.emit("debug",{action:"requestBatch",request:yt(e),provider:this}),la(this.connection,JSON.stringify(e)).then(r=>{this.emit("debug",{action:"response",request:e,response:r,provider:this}),t.forEach((t,e)=>{const n=r[e];if(n.error){const e=new Error(n.error.message);e.code=n.error.code,e.data=n.error.data,t.reject(e)}else t.resolve(n.result)})},r=>{this.emit("debug",{action:"response",error:r,request:e,provider:this}),t.forEach(t=>{t.reject(r)})})},10)),i}},JsonRpcProvider:nl,JsonRpcSigner:tl,NodesmithProvider:Xl,PocketProvider:ec,Provider:bn,QuickNodeProvider:nc,Resolver:za,StaticJsonRpcProvider:hl,UrlJsonRpcProvider:dl,Web3Provider:ac,WebSocketProvider:ll,getDefaultProvider:cc,getNetwork:ta,isCommunityResourcable:va,isCommunityResource:ya,showThrottleMessage:ba});const hc=new RegExp("^bytes([0-9]+)$"),dc=new RegExp("^(u?int)([0-9]*)$"),fc=new RegExp("^(.*)\\[([0-9]*)\\]$"),pc=new g("solidity/5.8.0");function mc(t,e,r){switch(t){case"address":return r?x(e,32):k(e);case"string":return Ve(e);case"bytes":return k(e);case"bool":return e=e?"0x01":"0x00",r?x(e,32):k(e)}let n=t.match(dc);if(n){let i=parseInt(n[2]||"256");return(n[2]&&String(i)!==n[2]||i%8!=0||0===i||i>256)&&pc.throwArgumentError("invalid number type","type",t),r&&(i=256),x(e=H.from(e).toTwos(i),i/8)}if(n=t.match(hc),n){const i=parseInt(n[1]);return(String(i)!==n[1]||0===i||i>32)&&pc.throwArgumentError("invalid bytes type","type",t),k(e).byteLength!==i&&pc.throwArgumentError(`invalid value for ${t}`,"value",e),r?k((e+"0000000000000000000000000000000000000000000000000000000000000000").substring(0,66)):e}if(n=t.match(fc),n&&Array.isArray(e)){const r=n[1];parseInt(n[2]||String(e.length))!=e.length&&pc.throwArgumentError(`invalid array length for ${t}`,"value",e);const i=[];return e.forEach(function(t){i.push(mc(r,t,!0))}),S(i)}return pc.throwArgumentError("invalid type","type",t)}function gc(t,e){t.length!=e.length&&pc.throwArgumentError("wrong number of values; expected ${ types.length }","values",e);const r=[];return t.forEach(function(t,n){r.push(mc(t,e[n]))}),T(S(r))}const vc=new g("units/5.8.0"),yc=["wei","kwei","mwei","gwei","szabo","finney","ether"];function wc(t,e){if("string"==typeof e){const t=yc.indexOf(e);-1!==t&&(e=3*t)}return rt(t,null!=e?e:18)}function bc(t,e){if("string"!=typeof t&&vc.throwArgumentError("value must be a string","value",t),"string"==typeof e){const t=yc.indexOf(e);-1!==t&&(e=3*t)}return nt(t,null!=e?e:18)}function Ec(t){return wc(t,18)}function Ac(t){return bc(t,18)}var kc=Object.freeze({__proto__:null,AbiCoder:fr,ConstructorFragment:Ot,ErrorFragment:Lt,EventFragment:Mt,FormatTypes:_t,Fragment:Nt,FunctionFragment:Dt,HDNode:ss,Indexed:fn,Interface:gn,LogDescription:un,Logger:g,ParamType:Tt,RLP:ce,SigningKey:Xi,get SupportedAlgorithm(){return Do},TransactionDescription:hn,get TransactionTypes(){return ro},get UnicodeNormalizationForm(){return Ge},Utf8ErrorFuncs:Ke,get Utf8ErrorReason(){return je},_TypedDataEncoder:ln,_fetchData:aa,_toEscapedUtf8String:function(t,e){return'"'+We(t,e).map(t=>{if(t<256){switch(t){case 8:return"\\b";case 9:return"\\t";case 10:return"\\n";case 13:return"\\r";case 34:return'\\"';case 92:return"\\\\"}if(t>=32&&t<127)return String.fromCharCode(t)}return t<=65535?$e(t):$e(55296+((t-=65536)>>10&1023))+$e(56320+(1023&t))}).join("")+'"'},accessListify:ho,arrayify:k,base58:Oo,base64:wr,checkProperties:ft,checkResultErrors:Kt,commify:function(t){const e=String(t).split(".");(e.length>2||!e[0].match(/^-?[0-9]*$/)||e[1]&&!e[1].match(/^[0-9]*$/)||"."===t||"-."===t)&&vc.throwArgumentError("invalid value","value",t);let r=e[0],n="";for("-"===r.substring(0,1)&&(n="-",r=r.substring(1));"0"===r.substring(0,1);)r=r.substring(1);""===r&&(r="0");let i="";for(2===e.length&&(i="."+(e[1]||"0"));i.length>2&&"0"===i[i.length-1];)i=i.substring(0,i.length-1);const o=[];for(;r.length;){if(r.length<=3){o.unshift(r);break}{const t=r.length-3;o.unshift(r.substring(t)),r=r.substring(0,t)}}return n+o.join(",")+i},computeAddress:ao,computeHmac:zo,computePublicKey:to,concat:S,deepCopy:yt,defaultAbiCoder:pr,defaultPath:os,defineReadOnly:ut,dnsEncode:Hr,entropyToMnemonic:cs,fetchJson:la,formatBytes32String:function(t){const e=Ve(t);if(e.length>31)throw new Error("bytes32 string must be less than 32 bytes");return T(S([e,Ue]).slice(0,32))},formatEther:Ec,formatUnits:wc,getAccountPath:function(t){return("number"!=typeof t||t<0||t>=Xo||t%1)&&Jo.throwArgumentError("invalid account index","index",t),`m/44'/60'/${t}'/0/0`},getAddress:ge,getContractAddress:ve,getCreate2Address:function(t,e,r){return 32!==I(e)&&ue.throwArgumentError("salt must be 32 bytes","salt",e),32!==I(r)&&ue.throwArgumentError("initCodeHash must be 32 bytes","initCodeHash",r),ge(N(te(S(["0xff",ge(t),e,r])),12))},getIcapAddress:function(t){let e=(r=ge(t).substring(2),new L(r,16).toString(36)).toUpperCase();for(var r;e.length<30;)e="0"+e;return"XE"+me("XE00"+e)+e},getJsonWalletAddress:function(t){if(Ps(t))try{return ge(JSON.parse(t).ethaddr)}catch(t){return null}if(Ts(t))try{return ge(JSON.parse(t).address)}catch(t){return null}return null},getStatic:ht,hashMessage:Kr,hexConcat:M,hexDataLength:I,hexDataSlice:N,hexStripZeros:R,hexValue:B,hexZeroPad:F,hexlify:T,id:mr,isAddress:function(t){try{return ge(t),!0}catch(t){}return!1},isBytes:A,isBytesLike:b,isHexString:_,isValidMnemonic:function(t,e){try{return ls(t,e),!0}catch(t){}return!1},isValidName:function(t){try{return 0!==Gr(t).length}catch(t){}return!1},joinSignature:D,keccak256:te,mnemonicToEntropy:ls,mnemonicToSeed:as,namehash:jr,nameprep:function(t){if(t.match(/^[a-z0-9-]*$/i)&&t.length<=59)return t.toLowerCase();let e=Ye(t);var r;r=e.map(t=>{if(rr.indexOf(t)>=0)return[];if(t>=65024&&t<=65039)return[];let e=function(t){let e=tr(t,nr);if(e)return[t+e.s];let r=ir[t];if(r)return r;let n=or[t];return n?[t+n[0]]:sr[t]||null}(t);return e||[t]}),e=r.reduce((t,e)=>(e.forEach(e=>{t.push(e)}),t),[]),e=Ye(Je(e),Ge.NFKC),e.forEach(t=>{if(tr(t,ar))throw new Error("STRINGPREP_CONTAINS_PROHIBITED")}),e.forEach(t=>{if(tr(t,er))throw new Error("STRINGPREP_CONTAINS_UNASSIGNED")});let n=Je(e);if("-"===n.substring(0,1)||"--"===n.substring(2,4)||"-"===n.substring(n.length-1))throw new Error("invalid hyphen");return n},parseBytes32String:function(t){const e=k(t);if(32!==e.length)throw new Error("invalid bytes32 - not 32 bytes long");if(0!==e[31])throw new Error("invalid bytes32 string - no null terminator");let r=31;for(;0===e[r-1];)r--;return Qe(e.slice(0,r))},parseEther:Ac,parseTransaction:yo,parseUnits:bc,poll:ca,randomBytes:fs,recoverAddress:lo,recoverPublicKey:Zi,resolveProperties:dt,ripemd160:Lo,serializeTransaction:go,sha256:qo,sha512:function(t){return"0x"+di.sha512().update(k(t)).digest("hex")},shallowCopy:pt,shuffled:ps,solidityKeccak256:function(t,e){return te(gc(t,e))},solidityPack:gc,soliditySha256:function(t,e){return qo(gc(t,e))},splitSignature:O,stripZeros:C,toUtf8Bytes:Ve,toUtf8CodePoints:Ye,toUtf8String:Qe,verifyMessage:function(t,e){return lo(Kr(t),e)},verifyTypedData:function(t,e,r,n){return lo(ln.hash(t,e,r),n)},zeroPad:x});const Sc="ethers/5.8.0",Cc=new g(Sc);var xc=Object.freeze({__proto__:null,BaseContract:Bo,BigNumber:H,Contract:Ro,ContractFactory:class{constructor(t,e,r){let n=null;n="string"==typeof e?e:A(e)?T(e):e&&"string"==typeof e.object?e.object:"!","0x"!==n.substring(0,2)&&(n="0x"+n),(!_(n)||n.length%2)&&bo.throwArgumentError("invalid bytecode","bytecode",e),r&&!Cn.isSigner(r)&&bo.throwArgumentError("invalid signer","signer",r),ut(this,"bytecode",n),ut(this,"interface",ht(new.target,"getInterface")(t)),ut(this,"signer",r||null)}getDeployTransaction(...t){let e={};if(t.length===this.interface.deploy.inputs.length+1&&"object"==typeof t[t.length-1]){e=pt(t.pop());for(const t in e)if(!Eo[t])throw new Error("unknown transaction override "+t)}if(["data","from","to"].forEach(t=>{null!=e[t]&&bo.throwError("cannot override "+t,g.errors.UNSUPPORTED_OPERATION,{operation:t})}),e.value){H.from(e.value).isZero()||this.interface.deploy.payable||bo.throwError("non-payable constructor cannot override value",g.errors.UNSUPPORTED_OPERATION,{operation:"overrides.value",value:e.value})}return bo.checkArgumentCount(t.length,this.interface.deploy.inputs.length," in Contract constructor"),e.data=T(S([this.bytecode,this.interface.encodeDeploy(t)])),e}deploy(...t){return wo(this,void 0,void 0,function*(){let e={};t.length===this.interface.deploy.inputs.length+1&&(e=t.pop()),bo.checkArgumentCount(t.length,this.interface.deploy.inputs.length," in Contract constructor");const r=yield ko(this.signer,t,this.interface.deploy.inputs);r.push(e);const n=this.getDeployTransaction(...r),i=yield this.signer.sendTransaction(n),o=ht(this.constructor,"getContractAddress")(i),s=ht(this.constructor,"getContract")(o,this.interface,this.signer);return Co(s,i),ut(s,"deployTransaction",i),s})}attach(t){return this.constructor.getContract(t,this.interface,this.signer)}connect(t){return new this.constructor(this.interface,this.bytecode,t)}static fromSolidity(t,e){null==t&&bo.throwError("missing compiler output",g.errors.MISSING_ARGUMENT,{argument:"compilerOutput"}),"string"==typeof t&&(t=JSON.parse(t));const r=t.abi;let n=null;return t.bytecode?n=t.bytecode:t.evm&&t.evm.bytecode&&(n=t.evm.bytecode),new this(r,n,e)}static getInterface(t){return Ro.getInterface(t)}static getContractAddress(t){return ve(t)}static getContract(t,e,r){return new Ro(t,e,r)}},FixedNumber:ot,Signer:Cn,VoidSigner:xn,Wallet:Ws,Wordlist:Ho,constants:Le,get errors(){return p},getDefaultProvider:cc,logger:Cc,providers:uc,utils:kc,version:Sc,wordlists:$o});try{const t=window;null==t._ethers&&(t._ethers=xc)}catch(t){}const _c=["https://w3s.link/ipfs/","https://cloudflare-ipfs.com/ipfs/","https://ipfs.io/ipfs/","https://gateway.pinata.cloud/ipfs/","https://dweb.link/ipfs/"];function Pc(){const t=function(){try{const t=localStorage.getItem("customIpfsGatewayBaseUrl");if(t&&"string"==typeof t&&t.trim()){const e=t.trim();return e.endsWith("/ipfs/")?e:e.endsWith("/")?e+"ipfs/":e+"/ipfs/"}}catch(t){console.warn("[IpfsService] Failed to read custom gateway from localStorage:",t)}return null}();return t?[t,..._c]:_c}function Tc(t){return!(!t||"string"!=typeof t)&&t.toLowerCase().startsWith("ipfs://")}function Ic(t){if(!Tc(t))return t;const e=t.substring(7);return e.startsWith("/")?e.substring(1):e}function Nc(t,e=0){if(!Tc(t))return t;const r=Pc();if(e<0||e>=r.length)return null;const n=Ic(t);return r[e]+n}function Mc(){return Pc()}var Bc=Object.freeze({__proto__:null,fetchJsonWithIpfsSupport:async function(t,e={}){const{timeout:r=1e4,...n}=e;if(!Tc(t)){const e=new AbortController,i=setTimeout(()=>e.abort(),r);try{const r=await fetch(t,{...n,signal:e.signal});if(!r.ok)throw new Error(`HTTP ${r.status}: ${r.statusText}`);const o=await r.json();return clearTimeout(i),o}catch(t){if(clearTimeout(i),"AbortError"===t.name)throw new Error(`Request timeout after ${r}ms`);throw t}}const i=Pc(),o=Ic(t),s=[];for(let t=0;t<i.length;t++){const e=i[t],a=e+o,l=new AbortController,c=setTimeout(()=>l.abort(),r);try{const r=await fetch(a,{...n,signal:l.signal});if(clearTimeout(c),!r.ok)throw new Error(`HTTP ${r.status}: ${r.statusText}`);const o=await r.json();return t>0&&console.log(`[IpfsService] Resolved IPFS via gateway ${t+1}/${i.length}: ${e}`),o}catch(n){clearTimeout(c);const i="AbortError"===n.name?`Timeout after ${r}ms`:n.message||"Unknown error";s.push(`Gateway ${t+1} (${e}): ${i}`);continue}}throw new Error(`Failed to fetch IPFS content after trying ${i.length} gateways:\n`+s.join("\n"))},getAvailableGateways:Mc,isIpfsUri:Tc,normalizeIpfsPath:Ic,resolveIpfsToHttp:Nc,setCustomGateway:function(t){try{t?localStorage.setItem("customIpfsGatewayBaseUrl",t):localStorage.removeItem("customIpfsGatewayBaseUrl")}catch(t){console.warn("[IpfsService] Failed to save custom gateway to localStorage:",t)}},testImageLoad:function(t,e=5e3){return new Promise(r=>{const n=new Image,i=setTimeout(()=>{n.onload=null,n.onerror=null,r(!1)},e);n.onload=()=>{clearTimeout(i),r(!0)},n.onerror=()=>{clearTimeout(i),r(!1)},n.src=t})}});class Rc extends t.Component{constructor(t){super(t),this.providerMap=t.providerMap,this.walletIcons=t.walletIcons,this.onWalletSelected=t.onWalletSelected,this.state={isVisible:!1}}events(){return{"click .wallet-modal-close":this.hide,"click .wallet-modal-overlay":t=>{t.target===t.currentTarget&&this.hide()},"click .wallet-option":async t=>{const e=t.currentTarget.dataset.wallet;this.onWalletSelected&&await this.onWalletSelected(e),this.hide()}}}show(){this.setState({isVisible:!0})}hide(){this.setState({isVisible:!1})}render(){if(!this.state.isVisible)return'<div class="wallet-modal-container" style="display: none;"></div>';return`\n <div class="wallet-modal-container">\n <div class="wallet-modal-overlay">\n <div class="wallet-modal">\n <div class="wallet-modal-header">\n <h3>Select Your Wallet</h3>\n <button class="wallet-modal-close">&times;</button>\n </div>\n <div class="wallet-options">\n ${Object.keys(this.providerMap).map(t=>`\n <button class="wallet-option" data-wallet="${t}">\n <img src="${this.walletIcons[t]}" alt="${t}">\n <span>${t.charAt(0).toUpperCase()+t.slice(1)}</span>\n </button>\n `).join("")}\n </div>\n </div>\n </div>\n </div>\n `}}class Fc extends t.Component{constructor(t){super(),this.walletService=t.walletService,this.walletModal=null,this.state={walletConnected:!1,address:null,balance:"0.00",loading:!0,menuOpen:!1,hasExecTokens:!1,isVaultBenefactor:!1}}onMount(){console.log("[FloatingWalletButton] onMount called"),this.initialize(),this.setupDOMEventListeners()}async initialize(){await this.checkWalletConnection(),this.setupEventListeners()}async checkWalletConnection(){console.log("[FloatingWalletButton] checkWalletConnection called");try{this.walletService.isInitialized||await this.walletService.initialize();let t=this.walletService.isConnected(),e=this.walletService.getAddress();if(!t&&void 0!==window.ethereum)try{const r=localStorage.getItem("ms2fun_lastWallet");if(r){const n=await window.ethereum.request({method:"eth_accounts"});if(n&&n.length>0)try{await this.walletService.selectWallet(r),await this.walletService.connect(),t=this.walletService.isConnected(),e=this.walletService.getAddress(),t&&console.log("[FloatingWalletButton] Auto-reconnected to",r)}catch(t){console.log("[FloatingWalletButton] Auto-reconnect not possible")}}}catch(t){console.log("[FloatingWalletButton] Could not check existing accounts:",t)}t&&e?await this.loadWalletInfo(e):this.setState({loading:!1,walletConnected:!1})}catch(t){console.error("[FloatingWalletButton] Error checking wallet connection:",t),this.setState({loading:!1,walletConnected:!1})}}async loadWalletInfo(t){try{let e=this.walletService.ethersProvider;e||void 0===window.ethereum||(e=new ac(window.ethereum));let r="0.00";if(e&&t){const n=await e.getBalance(t);r=parseFloat(Ec(n)).toFixed(4)}const n=!1,i=!1;this.setState({walletConnected:!0,address:t,balance:r,loading:!1,hasExecTokens:n,isVaultBenefactor:i})}catch(e){console.error("[FloatingWalletButton] Failed to load wallet info:",e),this.setState({walletConnected:!0,address:t,loading:!1})}}async checkExecTokens(t){return!1}async checkVaultBenefactor(t){return!1}setupEventListeners(){const e=t.eventBus.on("wallet:connected",async t=>{await this.loadWalletInfo(t.address)}),r=t.eventBus.on("wallet:disconnected",()=>{this.setState({walletConnected:!1,address:null,balance:"0.00",menuOpen:!1,hasExecTokens:!1,isVaultBenefactor:!1})}),n=t.eventBus.on("wallet:changed",async t=>{await this.loadWalletInfo(t.address)});this.registerCleanup(()=>{e(),r(),n()})}setupClickOutsideHandler(){const t=t=>{this.element&&!this.element.contains(t.target)&&this.state.menuOpen&&this.setState({menuOpen:!1})};document.addEventListener("click",t),this.registerCleanup(()=>{document.removeEventListener("click",t)})}async handleButtonClick(t){t.preventDefault(),t.stopPropagation(),this.state.walletConnected?this.setState({menuOpen:!this.state.menuOpen}):await this.showWalletModal()}async showWalletModal(){const t={rabby:()=>window.ethereum?.isRabby?window.ethereum:null,rainbow:()=>window.ethereum?.isRainbow?window.ethereum:null,phantom:()=>window.phantom?.ethereum||null,metamask:()=>window.ethereum||null},e={rabby:"/public/wallets/rabby.webp",rainbow:"/public/wallets/rainbow.webp",phantom:"/public/wallets/phantom.webp",metamask:"/public/wallets/MetaMask.webp"};this.walletModal||(this.walletModal=new Rc(t,e,async t=>{await this.handleWalletSelection(t)})),this.walletModal.show()}async handleWalletSelection(t){try{await this.walletService.selectWallet(t),localStorage.setItem("ms2fun_lastWallet",t),await this.walletService.connect()}catch(t){console.error("[FloatingWalletButton] Error connecting wallet:",t)}}handleMenuItemClick(t){this.setState({menuOpen:!1}),window.router?window.router.navigate(t):window.location.href=t}async handleDisconnect(t){t.preventDefault(),t.stopPropagation();try{await this.walletService.disconnect(),this.setState({menuOpen:!1})}catch(t){console.error("[FloatingWalletButton] Failed to disconnect:",t)}}static get styles(){return"\n /* FloatingWalletButton - Bottom-right floating wallet connection button with power user dropdown */\n\n .floating-wallet-button {\n position: fixed;\n bottom: 2rem;\n right: 2rem;\n z-index: 9999; /* Above all content */\n }\n\n .floating-wallet-button .wallet-btn {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.75rem 1.25rem;\n background: linear-gradient(135deg, rgba(139, 69, 19, 0.9), rgba(101, 67, 33, 0.9));\n border: 2px solid rgba(218, 165, 32, 0.6);\n border-radius: 50px;\n color: #fff;\n font-family: 'Cinzel', serif;\n font-size: 0.9rem;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s ease;\n box-shadow: 0 4px 15px rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(10px);\n }\n\n .floating-wallet-button .wallet-btn:hover {\n transform: translateY(-2px);\n box-shadow: 0 6px 20px rgba(218, 165, 32, 0.4);\n border-color: rgba(218, 165, 32, 0.8);\n background: linear-gradient(135deg, rgba(160, 82, 45, 0.95), rgba(120, 80, 50, 0.95));\n }\n\n .floating-wallet-button .wallet-btn:active {\n transform: translateY(0);\n }\n\n /* Wallet icon */\n .floating-wallet-button .wallet-icon {\n font-size: 1.2rem;\n line-height: 1;\n }\n\n /* Wallet text/address */\n .floating-wallet-button .wallet-text,\n .floating-wallet-button .wallet-address {\n font-size: 0.875rem;\n white-space: nowrap;\n }\n\n /* Loading state */\n .floating-wallet-button.loading {\n pointer-events: none;\n }\n\n .floating-wallet-button .wallet-spinner {\n width: 40px;\n height: 40px;\n border: 3px solid rgba(218, 165, 32, 0.3);\n border-top-color: rgba(218, 165, 32, 0.9);\n border-radius: 50%;\n animation: wallet-spin 0.8s linear infinite;\n }\n\n @keyframes wallet-spin {\n to { transform: rotate(360deg); }\n }\n\n /* Dropdown menu */\n .wallet-dropdown-menu {\n position: absolute;\n bottom: calc(100% + 0.5rem);\n right: 0;\n min-width: 240px;\n background: linear-gradient(135deg, rgba(139, 69, 19, 0.98), rgba(101, 67, 33, 0.98));\n border: 2px solid rgba(218, 165, 32, 0.6);\n border-radius: 12px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.6);\n backdrop-filter: blur(15px);\n overflow: hidden;\n animation: dropdown-slide-up 0.2s ease-out;\n }\n\n @keyframes dropdown-slide-up {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n /* Dropdown header */\n .wallet-dropdown-menu .dropdown-header {\n padding: 1rem;\n background: rgba(0, 0, 0, 0.3);\n border-bottom: 1px solid rgba(218, 165, 32, 0.3);\n }\n\n .wallet-dropdown-menu .dropdown-address {\n font-family: 'Cinzel', serif;\n font-size: 0.875rem;\n font-weight: 600;\n color: rgba(218, 165, 32, 0.95);\n margin-bottom: 0.25rem;\n }\n\n .wallet-dropdown-menu .dropdown-balance {\n font-family: 'Lato', sans-serif;\n font-size: 0.75rem;\n color: rgba(255, 255, 255, 0.7);\n }\n\n /* Dropdown divider */\n .wallet-dropdown-menu .dropdown-divider {\n height: 1px;\n background: linear-gradient(90deg,\n transparent,\n rgba(218, 165, 32, 0.3) 50%,\n transparent\n );\n margin: 0;\n }\n\n /* Dropdown items */\n .wallet-dropdown-menu .dropdown-items {\n padding: 0.5rem;\n }\n\n .wallet-dropdown-menu .dropdown-item {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n width: 100%;\n padding: 0.75rem 1rem;\n background: transparent;\n border: none;\n border-radius: 8px;\n color: rgba(255, 255, 255, 0.9);\n font-family: 'Lato', sans-serif;\n font-size: 0.875rem;\n text-align: left;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .wallet-dropdown-menu .dropdown-item:hover {\n background: rgba(218, 165, 32, 0.15);\n color: #fff;\n }\n\n .wallet-dropdown-menu .dropdown-item:active {\n background: rgba(218, 165, 32, 0.25);\n }\n\n .wallet-dropdown-menu .dropdown-item .item-icon {\n font-size: 1.125rem;\n line-height: 1;\n opacity: 0.9;\n }\n\n .wallet-dropdown-menu .dropdown-item .item-label {\n flex: 1;\n }\n\n /* Disconnect button special styling */\n .wallet-dropdown-menu .dropdown-item.disconnect {\n color: rgba(255, 99, 71, 0.9);\n }\n\n .wallet-dropdown-menu .dropdown-item.disconnect:hover {\n background: rgba(255, 99, 71, 0.15);\n color: rgba(255, 99, 71, 1);\n }\n\n /* Responsive adjustments */\n @media (max-width: 768px) {\n .floating-wallet-button {\n bottom: 1rem;\n right: 1rem;\n }\n\n .floating-wallet-button .wallet-btn {\n padding: 0.625rem 1rem;\n font-size: 0.8rem;\n }\n\n .wallet-dropdown-menu {\n min-width: 200px;\n right: 0;\n }\n\n .wallet-dropdown-menu .dropdown-item {\n padding: 0.625rem 0.875rem;\n font-size: 0.8rem;\n }\n }\n\n /* Small screens - even more compact */\n @media (max-width: 480px) {\n .floating-wallet-button {\n bottom: 0.75rem;\n right: 0.75rem;\n }\n\n .floating-wallet-button .wallet-btn {\n padding: 0.5rem 0.875rem;\n font-size: 0.75rem;\n }\n\n .floating-wallet-button .wallet-icon {\n font-size: 1rem;\n }\n\n .wallet-dropdown-menu {\n min-width: 180px;\n }\n }\n\n /* Ensure menu appears above button when open */\n .floating-wallet-button.menu-open .wallet-btn {\n border-color: rgba(218, 165, 32, 0.9);\n background: linear-gradient(135deg, rgba(160, 82, 45, 0.95), rgba(120, 80, 50, 0.95));\n }\n "}render(){if(console.log("[FloatingWalletButton] render called, loading:",this.state.loading,"walletConnected:",this.state.walletConnected),this.state.loading)return'\n <div class="floating-wallet-button loading">\n <div class="wallet-spinner"></div>\n </div>\n ';const{walletConnected:t,address:e,balance:r,menuOpen:n,hasExecTokens:i,isVaultBenefactor:o}=this.state;if(!t)return'\n <div class="floating-wallet-button disconnected" data-ref="wallet-button">\n <button class="wallet-btn" data-ref="connect-btn">\n <span class="wallet-icon">🦊</span>\n <span class="wallet-text">Connect</span>\n </button>\n </div>\n ';const s=`${e.slice(0,6)}...${e.slice(-4)}`;return`\n <div class="floating-wallet-button connected ${n?"menu-open":""}" data-ref="wallet-button">\n <button class="wallet-btn" data-ref="wallet-btn" title="${this.escapeHtml(e)}\nBalance: ${r} ETH">\n <span class="wallet-icon">🦊</span>\n <span class="wallet-address">${this.escapeHtml(s)}</span>\n </button>\n\n ${n?this.renderDropdownMenu(e,r,i,o):""}\n </div>\n `}renderDropdownMenu(t,e,r,n){const i=`${t.slice(0,6)}...${t.slice(-4)}`;return`\n <div class="wallet-dropdown-menu" data-ref="dropdown-menu">\n <div class="dropdown-header">\n <div class="dropdown-address">${this.escapeHtml(i)}</div>\n <div class="dropdown-balance">${e} ETH</div>\n </div>\n\n <div class="dropdown-divider"></div>\n\n <div class="dropdown-items">\n <button class="dropdown-item" data-route="/portfolio" data-ref="menu-item">\n <span class="item-icon">📊</span>\n <span class="item-label">Portfolio</span>\n </button>\n\n ${r?'\n <button class="dropdown-item" data-route="/governance" data-ref="menu-item">\n <span class="item-icon">🗳️</span>\n <span class="item-label">Governance</span>\n </button>\n ':""}\n\n <button class="dropdown-item" data-route="/staking" data-ref="menu-item">\n <span class="item-icon">🎯</span>\n <span class="item-label">Staking</span>\n </button>\n\n ${n?'\n <button class="dropdown-item" data-route="/portfolio?filter=vaults" data-ref="menu-item">\n <span class="item-icon">💰</span>\n <span class="item-label">Vault Positions</span>\n </button>\n ':""}\n </div>\n\n <div class="dropdown-divider"></div>\n\n <div class="dropdown-items">\n <button class="dropdown-item" data-action="settings" data-ref="menu-item">\n <span class="item-icon">⚙️</span>\n <span class="item-label">Settings</span>\n </button>\n\n <button class="dropdown-item disconnect" data-ref="disconnect-btn">\n <span class="item-icon">🔌</span>\n <span class="item-label">Disconnect</span>\n </button>\n </div>\n </div>\n `}setupDOMEventListeners(){if(console.log("[FloatingWalletButton] setupDOMEventListeners called, element:",this.element),!this.element)return;const t=this.element.querySelector(".wallet-btn");console.log("[FloatingWalletButton] mainBtn found:",t),t&&t.addEventListener("click",t=>this.handleButtonClick(t));Array.from(this.element.querySelectorAll(".dropdown-item[data-route], .dropdown-item[data-action]")).forEach(t=>{t.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation();const r=t.getAttribute("data-route"),n=t.getAttribute("data-action");r?this.handleMenuItemClick(r):"settings"===n&&this.setState({menuOpen:!1})})});const e=this.element.querySelector(".dropdown-item.disconnect");e&&e.addEventListener("click",t=>this.handleDisconnect(t))}onStateUpdate(t,e){t.menuOpen!==e.menuOpen&&this.setTimeout(()=>{this.setupDOMEventListeners()},0)}onUnmount(){this.walletModal&&(this.walletModal.hide(),this.walletModal=null)}escapeHtml(t){if(!t)return"";const e=document.createElement("div");return e.textContent=t,e.innerHTML}}class Oc extends t.Component{constructor(t={}){super(),this.props=t,this.setState({gatewayIndex:0,isLoading:!0,hasError:!1,currentSrc:null}),this.handleImageLoad=this.handleImageLoad.bind(this),this.handleImageError=this.handleImageError.bind(this)}getCurrentUrl(){const{src:t}=this.props;return t?Tc(t)?Nc(t,this.state.gatewayIndex):t:null}handleImageLoad(t){this.setState({isLoading:!1,hasError:!1}),this.props.onLoad&&this.props.onLoad(t)}handleImageError(t){const e=Mc(),{src:r}=this.props;if(!Tc(r)||this.state.gatewayIndex>=e.length-1)return this.setState({isLoading:!1,hasError:!0}),console.error("[IpfsImage] Failed to load image:",r,{triedGateways:this.state.gatewayIndex+1,totalGateways:e.length}),void(this.props.onError&&this.props.onError(t));const n=this.state.gatewayIndex+1;this.setState({gatewayIndex:n});const i=this.element?.querySelector("img");if(i){const t=Nc(r,n);t&&(i.src=t)}}render(){const{src:t,alt:e="",className:r="",style:n={},loading:i="lazy",placeholder:o,errorPlaceholder:s}=this.props,{isLoading:a,hasError:l}=this.state;if(!t)return'<div class="ipfs-image-empty"></div>';const c=this.getCurrentUrl();return l?s||`\n <div class="ipfs-image-error ${r}" style="${this.styleToString(n)}">\n <div class="ipfs-image-error-icon">⚠️</div>\n <div class="ipfs-image-error-text">IPFS image unavailable</div>\n </div>\n `:`\n <div class="ipfs-image-container ${r}" style="${this.styleToString(n)}">\n ${a&&o?o:""}\n <img \n src="${this.escapeHtml(c||"")}" \n alt="${this.escapeHtml(e)}" \n loading="${i}"\n class="ipfs-image ${a?"ipfs-image-loading":"ipfs-image-loaded"}"\n style="${a?"opacity: 0;":"opacity: 1; transition: opacity 0.3s;"}"\n />\n </div>\n `}mount(t){super.mount(t);const e=this.element?.querySelector("img");e&&(e.addEventListener("load",this.handleImageLoad),e.addEventListener("error",this.handleImageError),this.registerCleanup(()=>{e.removeEventListener("load",this.handleImageLoad),e.removeEventListener("error",this.handleImageError)}))}styleToString(t){return t&&"object"==typeof t?Object.entries(t).map(([t,e])=>`${t.replace(/([A-Z])/g,"-$1").toLowerCase()}: ${e};`).join(" "):""}}Oc.styles="\n .ipfs-image-container {\n position: relative;\n display: inline-block;\n width: 100%;\n height: 100%;\n }\n \n .ipfs-image {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n \n .ipfs-image-loading {\n opacity: 0;\n }\n \n .ipfs-image-loaded {\n opacity: 1;\n transition: opacity 0.3s ease-in;\n }\n \n .ipfs-image-error {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n background-color: #f5f5f5;\n color: #666;\n padding: 1rem;\n text-align: center;\n }\n \n .ipfs-image-error-icon {\n font-size: 2rem;\n margin-bottom: 0.5rem;\n }\n \n .ipfs-image-error-text {\n font-size: 0.875rem;\n }\n \n .ipfs-image-empty {\n display: block;\n width: 100%;\n height: 100%;\n background-color: transparent;\n }\n \n /* Dark mode support */\n html[data-theme='dark'] .ipfs-image-error {\n background-color: #2a2a2a;\n color: #aaa;\n }\n";class Dc extends t.Component{constructor(t){super(t),this.eventBus=t.eventBus,this.state={nftMintingEnabled:t.nftMintingEnabled||!1,message:t.message||"",isValid:void 0===t.isValid||t.isValid,nftBalance:t.nftBalance||0,swapDirection:t.swapDirection||"buy",lastValidationState:!0,isPhase2:null===t.isPhase2?null:t.isPhase2},this.handleMessageInput=this.handleMessageInput.bind(this),this.handleNFTToggle=this.handleNFTToggle.bind(this),this.handleStoreUpdate=this.handleStoreUpdate.bind(this),this.updateTimer=null}onMount(){this.contractDataUnsubscribe=this.eventBus.on("contractData:updated",t=>{this.updateProps({isPhase2:t.liquidityPool&&"0x0000000000000000000000000000000000000000"!==t.liquidityPool})}),this.addEventListeners(),this.updateElements()}onUnmount(){this.contractDataUnsubscribe&&this.contractDataUnsubscribe(),this.removeEventListeners()}updateProps(t){const e={...this.state,...t},r=this.state.isPhase2!==e.isPhase2||this.state.swapDirection!==e.swapDirection||this.state.nftBalance!==e.nftBalance;this.setState(e),r?(this.validateTransaction(),this.update()):this.updateElements()}addEventListeners(){const t=this.element.querySelector("#messageInput"),e=this.element.querySelector("#nftToggle");t&&(this._messageInput=t,t.addEventListener("input",this.handleMessageInput)),e&&(this._nftToggle=e,e.addEventListener("change",this.handleNFTToggle))}removeEventListeners(){this._messageInput&&this._messageInput.removeEventListener("input",this.handleMessageInput),this._nftToggle&&this._nftToggle.removeEventListener("change",this.handleNFTToggle)}validateTransaction(){const t=this.state.message.length<=140,e=!this.state.nftMintingEnabled||this.state.nftBalance<10,r=t&&e;this.state.lastValidationState!==r&&(this.state.lastValidationState=r,this.state.isValid=r,this.eventBus.emit("transactionValidation",{isValid:r,errors:this.getValidationErrors()}))}getValidationErrors(){const t=[];return this.state.message.length>140&&t.push("Message must be 140 characters or less"),this.state.nftMintingEnabled&&this.state.nftBalance>=10&&t.push("Cannot mint more than 10 NFTs"),t}updateElements(){const t=this.element.querySelector("#messageInput"),e=this.element.querySelector("#nftToggle");t&&!t.matches(":focus")&&(t.value=this.state.message),e&&(e.checked=this.state.nftMintingEnabled),this.removeEventListeners(),this.addEventListeners();const r=this.element.querySelector(".character-count");r&&(r.textContent=`${this.state.message.length}/140`,r.className="character-count "+(this.state.message.length>140?"error":""));const n=this.element.querySelector(".validation-status");n&&(n.className="validation-status "+(this.state.isValid?"valid":"invalid"),n.innerHTML=this.getValidationErrors().map(t=>`<p class="error">${t}</p>`).join(""))}handleMessageInput(t){const e=t.target.value||"";this.state={...this.state,message:e},this.updateElements(),this.emitStateUpdate()}handleNFTToggle(t){const e=t.target.checked;this.state={...this.state,nftMintingEnabled:e},this.updateElements(),this.emitStateUpdate()}emitStateUpdate(){const t={message:this.state.message,nftMintingEnabled:this.state.nftMintingEnabled};this.eventBus.emit("transactionOptions:update",t)}checkPhase2Status(){const{isPhase2:t}=this.state;null!==t&&this.state.isPhase2!==t&&this.setState({isPhase2:t})}template(){const{nftMintingEnabled:t,message:e,isValid:r,isPhase2:n,swapDirection:i}=this.state;return null===n||n?"":`\n <div class="transaction-options">\n <div class="option-group ${"sell"===i?"hidden":""}">\n <label class="nft-toggle">\n <input type="checkbox" \n ${t?"checked":""} \n id="nftToggle">\n Mint NFT with transaction\n </label>\n </div>\n \n <div class="option-group">\n <label for="messageInput">Transaction Message</label>\n <textarea id="messageInput" \n maxlength="140" \n placeholder="Enter optional message..."\n >${e}</textarea>\n <span class="character-count ${e.length>140?"error":""}">\n ${e.length}/140\n </span>\n </div>\n\n <div class="validation-status ${r?"valid":"invalid"}">\n ${this.getValidationErrors().map(t=>`<p class="error">${t}</p>`).join("")}\n </div>\n </div>\n `}render(){return this.template()}}class Uc extends t.Component{constructor(t){super(t),this.state={messages:[]}}show(t){const{title:e="",message:r="",type:n="info",duration:i=5e3}=t,o=Date.now()+Math.random(),s={id:o,title:e,message:r,type:n};this.setState({messages:[...this.state.messages,s]}),i>0&&setTimeout(()=>this.close(o),i)}close(t){const e=this.state.messages.filter(e=>e.id!==t);this.setState({messages:e})}error(t,e="Error"){this.show({title:e,message:t,type:"error"})}success(t,e="Success"){this.show({title:e,message:t,type:"success"})}warning(t,e="Warning"){this.show({title:e,message:t,type:"warning"})}info(t,e="Info"){this.show({title:e,message:t,type:"info"})}render(){return`\n <div id="message-popup-container">\n ${this.state.messages.map(t=>`\n <div class="message-popup ${t.type}" data-id="${t.id}">\n <div class="message-content">\n ${t.title?`<div class="message-title">${t.title}</div>`:""}\n <div class="message-text">${t.message}</div>\n </div>\n <button class="close-button" data-id="${t.id}">&times;</button>\n </div>\n `).join("")}\n </div>\n `}events(){return{"click .close-button":t=>{const e=parseFloat(t.target.dataset.id);this.close(e)}}}static get styles(){return"\n #message-popup-container {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 10000;\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n\n .message-popup {\n background: #ffffff;\n border-radius: 8px;\n padding: 15px 20px;\n min-width: 300px;\n max-width: 400px;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n animation: slideIn 0.3s ease;\n border-left: 4px solid #2196F3;\n }\n\n .message-popup.error {\n border-left-color: #f44336;\n }\n\n .message-popup.success {\n border-left-color: #4CAF50;\n }\n\n .message-popup.warning {\n border-left-color: #ff9800;\n }\n\n .message-content {\n flex-grow: 1;\n margin-right: 10px;\n }\n\n .message-title {\n font-weight: bold;\n margin-bottom: 5px;\n }\n\n .message-text {\n font-size: 14px;\n color: #666;\n }\n\n .close-button {\n background: none;\n border: none;\n color: #999;\n cursor: pointer;\n font-size: 20px;\n padding: 0;\n line-height: 1;\n }\n\n .close-button:hover {\n color: #666;\n }\n\n @keyframes slideIn {\n from {\n transform: translateX(100%);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n }\n\n @keyframes fadeOut {\n from {\n transform: translateX(0);\n opacity: 1;\n }\n to {\n transform: translateX(100%);\n opacity: 0;\n }\n }\n "}}const Lc={PRICE:"price:updated",STATUS:"price:status"};class qc extends t.Component{constructor(t){super(t),this.eventBus=t.eventBus,this.state={price:t.price||0,lastUpdated:t.lastUpdated||null,loading:void 0===t.loading||t.loading,error:t.error||null},this.handlePriceUpdate=this.handlePriceUpdate.bind(this),this.handleStatusUpdate=this.handleStatusUpdate.bind(this)}onMount(){this.eventBus&&(this.eventBus.on(Lc.PRICE,this.handlePriceUpdate),this.eventBus.on(Lc.STATUS,this.handleStatusUpdate))}onUnmount(){this.eventBus&&(this.eventBus.off(Lc.PRICE,this.handlePriceUpdate),this.eventBus.off(Lc.STATUS,this.handleStatusUpdate))}updateProps(t){this.setState({price:void 0!==t.price?t.price:this.state.price,lastUpdated:void 0!==t.lastUpdated?t.lastUpdated:this.state.lastUpdated,loading:void 0!==t.loading?t.loading:this.state.loading,error:void 0!==t.error?t.error:this.state.error})}setState(t){super.setState(t)}handlePriceUpdate({price:t}){this.setState({price:t||0,loading:!1})}handleStatusUpdate({loading:t,error:e}){this.setState({loading:t,error:e})}template(){const{price:t,lastUpdated:e,loading:r,error:n}=this.state;return r?'\n <div class="price-display loading marble-bg">\n <div class="price-header">\n <h3>Cult Exec </h3>\n <h3>Bonding Curve Presale</h3>\n </div>\n <div class="price-content">\n <div class="loading-indicator">Loading...</div>\n </div>\n </div>':n?`\n <div class="price-display error marble-bg">\n <div class="price-header">\n <h3>Cult Exec </h3>\n <h3>Bonding Curve Presale</h3>\n </div>\n <div class="price-content">\n <div class="error-message">Error: ${n}</div>\n </div>\n </div>`:`\n <div class="price-display marble-bg">\n <div class="price-header">\n <h3>Cult Exec </h3>\n <h3>Bonding Curve Presale</h3>\n </div>\n \n <div class="price-content">\n <div class="price-value">\n <span class="amount">${Number(t).toFixed(8)}</span>\n <span class="currency">ETH / Cult Exec</span>\n </div>\n </div>\n </div>\n `}render(){return this.template()}static get styles(){return"\n .price-display {\n background: #1a1a1a;\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 16px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n }\n\n .price-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n }\n\n .price-header h3 {\n margin: 0;\n color: var(--price-display-header-color, var(--color-text-primary, #333));\n font-size: 16px;\n }\n\n .last-updated {\n color: #666;\n font-size: 12px;\n }\n\n .price-content {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 48px;\n }\n\n .price-value {\n font-size: 24px;\n font-weight: bold;\n color: #fff;\n }\n\n .amount {\n margin-right: 8px;\n }\n\n .currency {\n color: var(--price-display-currency-color, var(--color-accent, #764ba2));\n }\n\n .loading-indicator {\n color: #666;\n font-style: italic;\n }\n\n .error-message {\n color: #ff4444;\n font-size: 14px;\n }\n\n /* Loading state animation */\n .price-display.loading .price-content {\n opacity: 0.7;\n }\n\n .price-display.loading .loading-indicator:after {\n content: '';\n animation: loading-dots 1.5s infinite;\n }\n\n @keyframes loading-dots {\n 0% { content: '.'; }\n 33% { content: '..'; }\n 66% { content: '...'; }\n }\n\n /* Error state styles */\n .price-display.error {\n border: 1px solid #ff4444;\n }\n\n /* Mobile responsive styles */\n @media (max-width: 768px) {\n .price-display {\n margin: 8px;\n padding: 12px;\n }\n\n .price-header {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .last-updated {\n margin-top: 4px;\n }\n\n .price-value {\n font-size: 20px;\n }\n }\n "}}class zc extends t.Component{constructor(t){super(t),console.log("[DEBUG] ApproveModal constructor called with amount:",t.amount,"and address:",t.userAddress),this.blockchainService=t.blockchainService,this.eventBus=t.eventBus,this.amount=t.amount,this.userAddress=t.userAddress,this.messagePopup=new Uc("approve-status"),this.handleApprove=this.handleApprove.bind(this),this.handleClose=this.handleClose.bind(this),this.isClosing=!1,this.modalId=Math.random().toString(36).substring(2,9),console.log(`[DEBUG] ApproveModal instance created with ID: ${this.modalId}`)}onMount(){console.log(`[DEBUG-${this.modalId}] ApproveModal mounted to DOM`),super.onMount(),this.setupEventListeners()}setupEventListeners(){const t=this.element.querySelector(".approve-button"),e=this.element.querySelector(".approve-modal-close"),r=this.element.querySelector(".approve-modal-overlay");t?.addEventListener("click",this.handleApprove),e?.addEventListener("click",this.handleClose),r?.addEventListener("click",t=>{t.target===r&&this.handleClose()})}async handleApprove(){console.log(`[DEBUG-${this.modalId}] Approve button clicked`);try{const t=this.element.querySelector(".approve-button");if(!t)return void console.error(`[DEBUG-${this.modalId}] Approve button not found in the modal`);console.log(`[DEBUG-${this.modalId}] Approve button found, disabling and updating text`);const e=this.element.querySelector(".status-message")||document.createElement("div");if(!e.classList.contains("status-message")){e.className="status-message";const t=this.element.querySelector(".approve-modal-content");t?(console.log(`[DEBUG-${this.modalId}] Adding status message to modal content`),t.appendChild(e)):console.error(`[DEBUG-${this.modalId}] Modal content not found`)}if(e.textContent="Waiting for wallet confirmation...",e.className="status-message pending",t.disabled=!0,t.textContent="Approving...",this.userAddress)console.log(`[DEBUG-${this.modalId}] Using provided user address: ${this.userAddress}`);else{if(console.log(`[DEBUG-${this.modalId}] No user address provided, attempting to get from signer`),!this.blockchainService||!this.blockchainService.signer)throw console.error(`[DEBUG-${this.modalId}] No blockchain service or signer available`),new Error("No wallet connected. Please connect your wallet first.");try{this.userAddress=await this.blockchainService.signer.getAddress(),console.log(`[DEBUG-${this.modalId}] Retrieved user address for approval: ${this.userAddress}`)}catch(t){throw console.error(`[DEBUG-${this.modalId}] Failed to get user address for approval:`,t),new Error("Could not get wallet address for approval. Please reconnect your wallet.")}}console.log(`[DEBUG-${this.modalId}] Parsing amount: ${this.amount}`);const r=this.blockchainService.parseExec(this.amount);console.log(`[DEBUG-${this.modalId}] Parsed amount: ${r}`);const n=this.blockchainService.swapRouter?.address||this.blockchainService.swapRouter;console.log(`[DEBUG-${this.modalId}] Router address for approval: ${n}`),console.log(`[DEBUG-${this.modalId}] Approving ${this.amount} EXEC tokens from ${this.userAddress} to ${n}`),e.textContent="Transaction submitted, waiting for confirmation...",console.log(`[DEBUG-${this.modalId}] Calling blockchainService.setApproval`);try{const t=await this.blockchainService.setApproval(n,r);console.log(`[DEBUG-${this.modalId}] Approval transaction result:`,t)}catch(t){throw console.error(`[DEBUG-${this.modalId}] Transaction error:`,t),t}e.textContent="Approval successful!",e.className="status-message success",console.log(`[DEBUG-${this.modalId}] Approval successful, waiting before emitting event`),await new Promise(t=>setTimeout(t,1500)),console.log(`[DEBUG-${this.modalId}] Emitting approve:complete event`),this.eventBus.emit("approve:complete"),console.log(`[DEBUG-${this.modalId}] Calling handleClose after successful approval`),this.handleClose()}catch(t){console.error(`[DEBUG-${this.modalId}] Approval failed:`,t);let e=t.message;if(e.includes("Contract call")){const t=e.split(": ");e=t[t.length-1]}const r=this.element.querySelector(".status-message")||document.createElement("div");if(!r.classList.contains("status-message")){r.className="status-message";const t=this.element.querySelector(".approve-modal-content");t&&t.appendChild(r)}r.textContent=`Error: ${e}`,r.className="status-message error",this.messagePopup.error(`Approval Failed: ${e}`,"Transaction Failed");const n=this.element.querySelector(".approve-button");n&&(n.disabled=!1,n.textContent="Approve")}}handleClose(){if(console.log(`[DEBUG-${this.modalId}] handleClose called`),this.isClosing)console.log(`[DEBUG-${this.modalId}] Already closing, skipping`);else{this.isClosing=!0,console.log(`[DEBUG-${this.modalId}] Closing approval modal`);try{this.element&&this.element.parentNode?(console.log(`[DEBUG-${this.modalId}] Removing modal from DOM`),this.element.parentNode.removeChild(this.element)):console.warn(`[DEBUG-${this.modalId}] Modal element or parent not found during close`),console.log(`[DEBUG-${this.modalId}] Emitting approveModal:closed event`),this.eventBus.emit("approveModal:closed"),console.log(`[DEBUG-${this.modalId}] Calling dispose method`),this.dispose()}catch(t){console.error(`[DEBUG-${this.modalId}] Error closing approval modal:`,t)}}}dispose(){console.log(`[DEBUG-${this.modalId}] Disposing component resources`);const t=this.element?.querySelector(".approve-button"),e=this.element?.querySelector(".approve-modal-close");this.element?.querySelector(".approve-modal-overlay"),t?.removeEventListener("click",this.handleApprove),e?.removeEventListener("click",this.handleClose),this.isClosing=!0,this.blockchainService=null,this.userAddress=null,console.log(`[DEBUG-${this.modalId}] Component disposed`)}show(){console.log(`[DEBUG-${this.modalId}] Show method called`),this.isClosing=!1,this.element.style.display="block",console.log(`[DEBUG-${this.modalId}] Modal set to display:block`)}hide(){console.log(`[DEBUG-${this.modalId}] Hide method called`),this.element.style.display="none"}events(){return console.log(`[DEBUG-${this.modalId}] Setting up event handlers`),{"click .approve-button":t=>{console.log(`[DEBUG-${this.modalId}] Approve button clicked, calling handleApprove`),this.handleApprove()},"click .approve-modal-close":t=>{console.log(`[DEBUG-${this.modalId}] Close button clicked, calling handleClose`),this.handleClose()},"click .approve-modal-overlay":t=>{console.log(`[DEBUG-${this.modalId}] Overlay clicked`,t.target,t.currentTarget),t.target===t.currentTarget&&(console.log(`[DEBUG-${this.modalId}] Overlay direct click detected, calling handleClose`),this.handleClose())}}}render(){const t=this.blockchainService.swapRouter?.address||this.blockchainService.swapRouter;return`\n <div class="approve-modal-overlay">\n <div class="approve-modal">\n <button class="approve-modal-close">&times;</button>\n <div class="approve-modal-content">\n <h2>Approve Router</h2>\n <p>Before selling your $EXEC tokens, you need to approve the router contract to spend them.</p>\n \n <div class="approve-details">\n <div class="approve-info">\n <span class="label">Amount to Approve:</span>\n <span class="value">${parseInt(this.amount).toLocaleString()} $EXEC</span>\n </div>\n <div class="approve-info">\n <span class="label">Router Address:</span>\n <span class="value">${t}</span>\n </div>\n </div>\n\n <button class="approve-button">\n Approve\n </button>\n </div>\n </div>\n </div>\n `}static get styles(){return"\n .approve-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.75);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1000;\n }\n\n .approve-modal {\n background-color: #111;\n border-radius: 8px;\n padding: 24px;\n position: relative;\n width: 90%;\n max-width: 500px;\n }\n\n .approve-modal-close {\n position: absolute;\n top: 16px;\n right: 16px;\n background: none;\n border: none;\n font-size: 24px;\n cursor: pointer;\n color: #fff;\n }\n\n .approve-modal h2 {\n margin: 0 0 16px 0;\n color: #fff;\n }\n\n .approve-details {\n background-color: #1a1a1a;\n border-radius: 8px;\n padding: 16px;\n margin: 16px 0;\n }\n\n .approve-info {\n display: flex;\n justify-content: space-between;\n margin-bottom: 8px;\n word-break: break-all;\n }\n\n .approve-info:last-child {\n margin-bottom: 0;\n }\n\n .approve-info .label {\n color: #888;\n margin-right: 16px;\n }\n\n .approve-info .value {\n color: #fff;\n text-align: right;\n }\n\n .approve-button {\n width: 100%;\n padding: 12px;\n background-color: #007bff;\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 16px;\n margin-top: 16px;\n }\n\n .approve-button:disabled {\n background-color: #555;\n cursor: not-allowed;\n }\n\n .approve-button:hover:not(:disabled) {\n background-color: #0056b3;\n }\n \n .status-message {\n margin-top: 12px;\n padding: 10px;\n border-radius: 4px;\n text-align: center;\n font-size: 14px;\n }\n \n .status-message.pending {\n background-color: #2c3e50;\n color: #f1c40f;\n }\n \n .status-message.success {\n background-color: #27ae60;\n color: white;\n }\n \n .status-message.error {\n background-color: #c0392b;\n color: white;\n }\n "}}class Gc extends t.Component{constructor(t={}){super(t),this.props={balances:{eth:"0",exec:"0"},...t}}updateProps(t){this.props={...this.props,...t},this.updateSelectively(t)}updateSelectively(t){if(!this.element)return;if(void 0!==t.direction||void 0!==t.freeMint||void 0!==t.balances){const{balances:t,direction:e,freeMint:r}=this.props,n=parseFloat(t.eth||0).toFixed(6),i=parseInt(t.exec||0).toLocaleString(),o="sell"===e&&r?`Available: ${(parseInt(t.exec||0)-1e6).toLocaleString()}`:`Balance: ${i}`;this.element.querySelectorAll(".token-balance").forEach((t,r)=>{const s=0===r;t.textContent="buy"===e?s?`Balance: ${n}`:`Balance: ${i}`:s?o:`Balance: ${n}`});this.element.querySelectorAll(".token-symbol").forEach((t,r)=>{const n=0===r;t.textContent="buy"===e?n?"ETH":"$EXEC":n?"$EXEC":"ETH"})}const e=this.element.querySelector(".top-input"),r=this.element.querySelector(".bottom-input");if(void 0!==t.calculatingAmount||void 0!==t.execAmount||void 0!==t.ethAmount){const{direction:t,ethAmount:n,execAmount:i,calculatingAmount:o}=this.props;e&&!e.matches(":focus")&&(e.value="buy"===t?n:i),r&&!r.matches(":focus")&&(r.value="buy"===t?o?"Loading...":i:o?"Loading...":n)}}handleInput(t,e){const r=t.target.value;this.props.onInput&&this.props.onInput(e,r)}events(){return{"input .top-input":t=>this.handleInput(t,"top"),"input .bottom-input":t=>this.handleInput(t,"bottom")}}render(){const{direction:t,ethAmount:e,execAmount:r,calculatingAmount:n,freeMint:i,balances:o}=this.props,s=parseFloat(o.eth||0).toFixed(6),a=parseInt(o.exec||0).toLocaleString(),l="sell"===t&&i?`Available: ${(parseInt(o.exec||0)-1e6).toLocaleString()}`:`Balance: ${a}`;return`\n <div class="swap-inputs">\n <div class="input-container">\n <input type="text" \n class="top-input" \n value="${"buy"===t?e:r}" \n placeholder="0.0"\n pattern="^[0-9]*[.]?[0-9]*$">\n <div class="token-info">\n <span class="token-symbol">${"buy"===t?"ETH":"$EXEC"}</span>\n <span class="token-balance">Balance: ${"buy"===t?s:l}</span>\n </div>\n </div>\n <div class="direction-switch-slot"></div>\n <div class="input-container">\n <input type="text" \n class="bottom-input" \n value="${"buy"===t?n?"Loading...":r:n?"Loading...":e}" \n placeholder="0.0"\n pattern="^[0-9]*[.]?[0-9]*$">\n <div class="token-info">\n <span class="token-symbol">${"buy"===t?"$EXEC":"ETH"}</span>\n <span class="token-balance">Balance: ${"buy"===t?a:s}</span>\n </div>\n </div>\n </div>\n `}}class jc extends t.Component{constructor(t={}){super(),this.props=t}updateProps(t){const e={...this.props};this.props={...this.props,...t};const r="buy"===e.direction?"Buy $EXEC":"Sell $EXEC",n="buy"===this.props.direction?"Buy $EXEC":"Sell $EXEC";if((r!==n||e.disabled!==this.props.disabled)&&this.element){const t=this.element.querySelector(".swap-button");t&&(t.textContent=n,this.props.disabled?t.disabled=!0:t.disabled=!1)}}handleClick(t){t.preventDefault(),!this.props.disabled&&this.props.onClick&&this.props.onClick(t)}events(){return{"click .swap-button":t=>this.handleClick(t)}}render(){const{direction:t,disabled:e}=this.props;return`\n <button class="swap-button" ${e?"disabled":""}>\n ${"buy"===t?"Buy $EXEC":"Sell $EXEC"}\n </button>\n `}}class Hc extends t.Component{constructor(t){super(t),this.blockchainService=t.blockchainService,this.eventBus=t.eventBus,this.state={direction:t.direction||"buy",ethAmount:"",execAmount:"",activeInput:null,freeMint:t.freeMint||!1,freeSupply:t.freeSupply||0,calculatingAmount:!1,isPhase2:null===t.isPhase2?null:t.isPhase2,dataReady:t.dataReady||!1,balances:t.balances||{eth:"0",exec:"0"},price:t.price||{current:0},contractData:t.contractData||{}},this._address=t.address||null,this.transactionOptions=new Dc,this.messagePopup=new Uc("status-message"),this.priceDisplay=new qc({price:this.state.price,contractData:this.state.contractData}),this.messagePopup.initialize(),this.swapInputs=null,this.swapButton=new jc({direction:this.state.direction,disabled:!1,onClick:this.handleSwap.bind(this)}),this.calculateTimer=null,this.onDirectionChange=t.onDirectionChange,this.handleTransactionEvents=this.handleTransactionEvents.bind(this),this.handleBalanceUpdate=this.handleBalanceUpdate.bind(this),this.handleTransactionOptionsUpdate=this.handleTransactionOptionsUpdate.bind(this),this.transactionOptionsState={message:"",nftMintingEnabled:!1},this.approveModal=null,this.eventListeners=[],this.instanceId=Math.random().toString(36).substring(2,9),console.log(`🔵 SwapInterface instance created: ${this.instanceId}`)}handleBalanceUpdate(t){const e=t.balances||this.props.balances,r=void 0!==t.freeMint?t.freeMint:this.props.freeMint,n=void 0!==t.freeSupply?t.freeSupply:this.props.freeSupply;this.setState({balances:e,freeMint:r,freeSupply:n}),this.swapInputs&&this.swapInputs.updateProps({freeMint:r})}updateElements(){requestAnimationFrame(()=>{this.swapInputs&&this.swapInputs.updateProps({direction:this.state.direction,ethAmount:this.state.ethAmount,execAmount:this.state.execAmount,calculatingAmount:this.state.calculatingAmount,freeMint:this.state.freeMint,isPhase2:this.state.isPhase2}),this.swapButton&&this.swapButton.updateProps({direction:this.state.direction})})}async calculateSwapAmount(t,e){if(!t||isNaN(parseFloat(t)))return"";try{if(this.isLiquidityDeployed()){const r=this.state.price.current;if(console.log("calculateSwapAmount price",r),"eth"===e){const e=parseFloat(t)/r*1e6*.95;return console.log("calculateSwapAmount execAmount",e),e.toFixed(0)}{const e=parseFloat(t)/1e6*r*1.055;return console.log("calculateSwapAmount ethAmount",e),e.toFixed(6)}}if("eth"===e){const e=await this.blockchainService.getExecForEth(t),{freeSupply:r,freeMint:n}=this.state;console.log("calculateSwapAmount freeMint",n);const i=r>0&&!n?1e6:0;return Math.floor(e+i).toString()}return(await this.blockchainService.getEthForExec(t)).toString()}catch(t){return console.error("Error calculating swap amount:",t),""}}onMount(){console.log(`[${this.instanceId}] SwapInterface onMount called`),this.bindEvents();const t=[["contractData:updated",this.handleContractDataUpdate.bind(this),"high"],["transaction:pending",this.handleTransactionEvents,"normal"],["transaction:confirmed",this.handleTransactionEvents,"normal"],["transaction:success",this.handleTransactionEvents,"normal"],["transaction:error",this.handleTransactionEvents,"normal"],["balances:updated",this.handleBalanceUpdate,"high"],["transactionOptions:update",this.handleTransactionOptionsUpdate,"low"]];this.eventListeners=t.map(([t,e,r])=>(console.log(`[${this.instanceId}] Subscribing to ${t} with priority ${r}`),this.eventBus.on(t,e)));const{contractData:e}=this.state;if(e&&void 0!==e.liquidityPool){const t=this.isLiquidityDeployed();this.setState({isPhase2:t,dataReady:!0}),this.initializeChildComponents()}this.update(),requestAnimationFrame(()=>{this.mountChildComponents()})}updateProps(t){const e={...this.state},r={...this.state,...t};this.shouldUpdate(e,r)&&this.setState(r)}initializeChildComponents(){null!==this.state.isPhase2?this.swapInputs||(console.log(`[${this.instanceId}] Initializing SwapInputs with phase ${this.state.isPhase2?"2":"1"}`),this.swapInputs=new Gc({direction:this.state.direction,ethAmount:this.state.ethAmount,execAmount:this.state.execAmount,calculatingAmount:this.state.calculatingAmount,freeMint:this.state.freeMint,isPhase2:this.state.isPhase2,onInput:this.handleInput.bind(this)})):console.log(`[${this.instanceId}] Phase not yet determined, skipping SwapInputs initialization`)}mountChildComponents(){const t=this.element.querySelector(".price-display-container");!t||this.priceDisplay.element&&t.contains(this.priceDisplay.element)||(console.log(`[${this.instanceId}] Mounting PriceDisplay component`),this.priceDisplay.mount(t));const e=this.element.querySelector(".transaction-options-container");!e||!this.transactionOptions||this.transactionOptions.element&&e.contains(this.transactionOptions.element)||(console.log(`[${this.instanceId}] Mounting TransactionOptions component`),this.transactionOptions.mount(e));const r=this.element.querySelector(".swap-inputs-container");r&&this.swapInputs&&this.swapInputs.mount(r);const n=this.element.querySelector(".quick-fill-buttons-container");if(n){n.innerHTML='<div class="quick-fill-buttons"></div>';const t=n.querySelector(".quick-fill-buttons");if(t){const{direction:e}=this.state;t.innerHTML="buy"===e?'<button data-amount="0.0025">0.0025</button>\n <button data-amount="0.01">0.01</button>\n <button data-amount="0.05">0.05</button>\n <button data-amount="0.1">0.1</button>':'<button data-percentage="25">25%</button>\n <button data-percentage="50">50%</button>\n <button data-percentage="75">75%</button>\n <button data-percentage="100">100%</button>',t.addEventListener("click",t=>{(t.target.dataset.amount||t.target.dataset.percentage)&&this.handleQuickFill(t)})}}const i=this.element.querySelector(".direction-switch-slot");i&&(i.innerHTML='<button class="direction-switch">↑↓</button>',i.querySelector(".direction-switch").addEventListener("click",t=>{this.handleDirectionSwitch(t)}));const o=this.element.querySelector(".swap-button-container");o&&this.swapButton&&this.swapButton.mount(o)}onUnmount(){if(console.log(`[${this.instanceId}] SwapInterface onUnmount called`),this.eventListeners.forEach(t=>{"function"==typeof t&&t()}),this.eventListeners=[],this.transactionOptions&&this.transactionOptions.element&&this.transactionOptions.element.remove(),this.priceDisplay){try{this.priceDisplay.unmount()}catch(t){console.warn("Error unmounting price display:",t)}this.priceDisplay=null}if(this.swapInputs){try{this.swapInputs.unmount()}catch(t){console.warn("Error unmounting swap inputs:",t)}this.swapInputs=null}if(this.swapButton){try{this.swapButton.unmount()}catch(t){console.warn("Error unmounting swap button:",t)}this.swapButton=null}if(this.approveModal){try{this.approveModal.handleClose()}catch(t){console.warn("Error closing approval modal during unmount:",t)}this.approveModal=null}this.calculateTimer&&(clearTimeout(this.calculateTimer),this.calculateTimer=null)}handleTransactionEvents(t){if(console.log(`[${this.instanceId}] handleTransactionEvents called with:`,{type:t?.type,hasError:!!t?.error,hasHash:!!t?.hash,eventId:t?.id||"none",handled:t?.handled||!1}),t?.handledBy?.includes(this.instanceId))return void console.log(`[${this.instanceId}] Event already handled by this instance, skipping`);t.handledBy||(t.handledBy=[]),t.handledBy.push(this.instanceId);const e="buy"===this.state.direction?"Buy":"Sell";if(t&&t.type){if("buy"!==t.type&&"sell"!==t.type&&"swap"!==t.type||t.error||(console.log(`[${this.instanceId}] Showing transaction pending message for type:`,t.type),this.messagePopup.info(`${e} transaction. Simulating...`,"Transaction Pending")),t.hash&&this.messagePopup.info("Transaction confirmed, waiting for completion...","Transaction Confirmed"),t.receipt&&("buy"===t.type||"sell"===t.type||"swap"===t.type)){const t="buy"===this.state.direction?this.state.execAmount+" EXEC":this.state.ethAmount+" ETH";this.messagePopup.success(`Successfully ${"buy"===e.toLowerCase()?"bought":"sold"} ${t}`,"Transaction Complete"),this.state.ethAmount="",this.state.execAmount="",this.state.calculatingAmount=!1,this.swapInputs&&this.swapInputs.updateProps({ethAmount:"",execAmount:"",calculatingAmount:!1}),this.mountChildComponents()}if(t.error&&!t.handled){console.log(`[${this.instanceId}] Handling error in handleTransactionEvents:`,t.error);let e=t.error?.message||"Transaction failed";if(e.includes("Contract call")){const t=e.split(": ");e=t[t.length-1]}const r="buy"===this.state.direction?"Buy Failed":"Sell Failed";this.messagePopup.error(`${r}: ${e}`,"Transaction Failed"),t.handled=!0}}else console.warn("Invalid transaction event:",t)}handleTransactionOptionsUpdate(t){this.transactionOptionsState={message:t.message,nftMintingEnabled:t.nftMintingEnabled}}handleInput(t,e){this.calculateTimer&&clearTimeout(this.calculateTimer),this.state.activeInput=t,this.state.calculatingAmount=!0,"buy"===this.state.direction?"top"===t?this.state.ethAmount=e:this.state.execAmount=e:"top"===t?this.state.execAmount=e:this.state.ethAmount=e,this.swapInputs&&this.swapInputs.updateProps({direction:this.state.direction,ethAmount:this.state.ethAmount,execAmount:this.state.execAmount,calculatingAmount:this.state.calculatingAmount,freeMint:this.state.freeMint,isPhase2:this.state.isPhase2}),this.calculateTimer=setTimeout(async()=>{try{const r="buy"===this.state.direction==("top"===t),n=await this.calculateSwapAmount(e,r?"eth":"exec");r?(this.state.execAmount=n,this.state.calculatingAmount=!1,this.swapInputs&&this.swapInputs.updateProps({execAmount:n,calculatingAmount:!1})):(this.state.ethAmount=n,this.state.calculatingAmount=!1,this.swapInputs&&this.swapInputs.updateProps({ethAmount:n,calculatingAmount:!1}))}catch(t){console.error("Error calculating swap amount:",t),this.state.calculatingAmount=!1,this.swapInputs&&this.swapInputs.updateProps({calculatingAmount:!1})}},750)}events(){return{}}shouldUpdate(t,e){if(!t||!e)return!0;if(t===e)return!1;return!(t.ethAmount!==e.ethAmount||t.execAmount!==e.execAmount||t.activeInput!==e.activeInput||t.calculatingAmount!==e.calculatingAmount)||t.direction!==e.direction||t.freeMint!==e.freeMint||t.freeSupply!==e.freeSupply||t.isPhase2!==e.isPhase2||t.dataReady!==e.dataReady}handleDirectionSwitch(t){t&&(t.preventDefault(),t.stopPropagation()),this.calculateTimer&&clearTimeout(this.calculateTimer);const e="buy"===this.state.direction?"sell":"buy";console.log("Direction Switch - Current State:",{direction:this.state.direction,newDirection:e,freeMint:this.state.freeMint,freeSupply:this.state.freeSupply}),this.setState({direction:e,calculatingAmount:!1,activeInput:null}),this.onDirectionChange&&this.onDirectionChange(e),requestAnimationFrame(()=>{this.mountChildComponents()})}isLiquidityDeployed(){const{contractData:t}=this.state;if(!t||!t.liquidityPool)return!1;const e="0x0000000000000000000000000000000000000000"!==t.liquidityPool;return console.log("isLiquidityDeployed check:",{liquidityPool:t.liquidityPool,result:e}),e}async handleSwap(){try{if(this.state.calculatingAmount)return void this.messagePopup.info("Please wait for the calculation to complete","Loading");const{ethAmount:t,execAmount:e,direction:r,balances:n,freeMint:i}=this.state;if(!t||!e||parseFloat(t)<=0||parseFloat(e)<=0)return void this.messagePopup.info("Please enter valid amounts","Invalid Input");if("buy"===r){let e=parseFloat(this.blockchainService.formatEther(n.eth||"0"));const r=parseFloat(t);if(isNaN(r)||isNaN(e)||r>e)return void this.messagePopup.info(`Not enough ETH balance. You have ${e.toFixed(6)} ETH, need ${r} ETH`,"Insufficient Balance")}else{const t=e.replace(/,/g,""),r=BigInt(n.exec||0);if(BigInt(parseInt(t)||0)>r){const e=parseInt(n.exec||0).toLocaleString(),r=parseInt(t).toLocaleString();return void this.messagePopup.info(`Not enough EXEC balance. You have ${e} EXEC, need ${r} EXEC`,"Insufficient Balance")}}if("sell"===r&&parseInt(e.replace(/,/g,""))<=1e6&&i)return void this.messagePopup.info("Free minted tokens cannot be sold directly.","Free Mint Restriction");const o=this.isLiquidityDeployed(),s=this.state.execAmount.replace(/,/g,"");if(o){const t=this.blockchainService.parseEther(this.state.ethAmount),e=this.blockchainService.parseExec(s),r=await this.getAddress();if(!r)return void this.messagePopup.error("No wallet address available. Please reconnect your wallet.","Wallet Error");if("buy"===this.state.direction)await this.blockchainService.swapExactEthForTokenSupportingFeeOnTransfer(r,{amount:e},t);else{const t=this.blockchainService.swapRouter?.address||this.blockchainService.swapRouterAddress,n=await this.blockchainService.getApproval(r,t);if(BigInt(n)<BigInt(e)){if(this.approveModal){try{this.eventBus.off("approve:complete"),this.approveModal.handleClose()}catch(t){console.warn("Error closing existing approval modal:",t)}this.approveModal=null}return this.approveModal=new ApproveModal(s,this.blockchainService,r),this.approveModal.mount(document.body),this.eventBus.once("approve:complete",async()=>{try{await this.blockchainService.swapExactTokenForEthSupportingFeeOnTransferV2(r,{amount:e})}catch(t){this.messagePopup.error(`Swap Failed: ${t.message}`,"Transaction Failed")}}),this.eventBus.once("approveModal:closed",()=>{this.approveModal=null}),void this.approveModal.show()}await this.blockchainService.swapExactTokenForEthSupportingFeeOnTransferV2(r,{amount:e})}}else{let t;try{const e=await this.blockchainService.getCurrentTier();if(t=await this.blockchainService.getMerkleProof(this.address,e),!t)return void this.messagePopup.error(`You are not whitelisted for Tier ${e+1}.`,"Not Whitelisted")}catch(t){return void this.messagePopup.error("Failed to verify whitelist status.","Whitelist Check Failed")}let e=s;if("buy"===this.state.direction&&this.state.freeSupply>0&&!this.state.freeMint){const t=parseInt(s);e=Math.max(0,t-1e6).toString()}const r=this.blockchainService.parseEther(this.state.ethAmount),n=this.blockchainService.parseExec(e);if("buy"===this.state.direction)await this.blockchainService.buyBonding({amount:n,maxCost:r,mintNFT:this.transactionOptionsState.nftMintingEnabled,proof:t.proof,message:this.transactionOptionsState.message},r);else{const e=BigInt(r)*BigInt(999)/BigInt(1e3);await this.blockchainService.sellBonding({amount:n,minReturn:e,proof:t.proof,message:this.transactionOptionsState.message})}}}catch(t){console.error("Swap failed:",t);let e=t.message;if(e.includes("Contract call")){const t=e.split(": ");e=t[t.length-1]}const r="buy"===this.state.direction?"Buy Failed":"Sell Failed";this.messagePopup.error(`${r}: ${e}`,"Transaction Failed")}}handleQuickFill(t){t.preventDefault();const e=t.target.dataset.amount,r=t.target.dataset.percentage;let n;if(e)n=e;else if(r){const{balances:t}=this.state,e=t.exec;if(!e||"0"===e)return void console.warn("No EXEC balance available for quick fill");let i=BigInt(e)/BigInt(1e18);if(this.state.freeMint&&(i-=BigInt(1e6),i<=0))return void this.messagePopup.info("You only have free mint tokens which cannot be sold.","Cannot Quick Fill");n=(i*BigInt(r)/BigInt(100)).toString()}this.handleInput("top",n)}handleContractDataUpdate(){try{const t=this.state.isPhase2,e=this.state.dataReady,r=null===t,{contractData:n}=this.state,i=this.isLiquidityDeployed();if(this.state.isPhase2=i,this.state.dataReady=!0,r&&null!==this.state.isPhase2)return console.log(`[${this.instanceId}] Phase determined: ${i?"Phase 2":"Phase 1"}`),this.initializeChildComponents(),this.setState({dataReady:!0,isPhase2:i}),void requestAnimationFrame(()=>this.mountChildComponents());if(!e&&this.state.dataReady)return console.log(`[${this.instanceId}] Data ready, mounting child components`),this.setState({dataReady:!0,isPhase2:i}),void requestAnimationFrame(()=>this.mountChildComponents());if(t!==this.state.isPhase2){console.log("Phase changed"),this.swapInputs&&this.swapInputs.updateProps({isPhase2:this.state.isPhase2});const t=this.element.querySelector(".price-display-container");return void(t&&this.priceDisplay&&this.priceDisplay.mount(t))}const o=this.element.querySelector(".price-display-container");if(o&&this.priceDisplay){!this.priceDisplay.element||!o.contains(this.priceDisplay.element)?this.priceDisplay.mount(o):this.priceDisplay.update()}}catch(t){console.error("Error in handleContractDataUpdate:",t),this.state.dataReady||(this.state.dataReady=!0,this.state.isPhase2=this.isLiquidityDeployed(),this.element&&this.element.innerHTML||this.update())}}render(){console.log("🎨 SwapInterface.render - Starting render");const{direction:t,isPhase2:e,dataReady:r,balances:n,freeMint:i,freeSupply:o}=this.state;if(!r||null===e)return'\n <div class="price-display-container"></div>\n <div class="quick-fill-buttons-container"></div>\n <div class="swap-inputs-container">\n <div style="padding: 20px; text-align: center;">Loading swap interface...</div>\n </div>\n <div class="transaction-options-container"></div>\n <div class="swap-button-container"></div>\n ';console.log("Render - Current State:",{direction:t,freeMint:i,freeSupply:o,isPhase2:e}),parseFloat(n.eth).toFixed(6);parseInt(n.exec).toLocaleString();"sell"===t&&i&&(parseInt(n.exec)-1e6).toLocaleString();const s=`\n <div class="price-display-container"></div>\n ${"sell"===t&&i&&!e?'<div class="free-mint-notice">You have 1,000,000 $EXEC you received for free that cannot be sold here.</div>':"buy"===t&&o>0&&!i&&!e?'<div class="free-mint-notice free-mint-bonus">1,000,000 $EXEC will be added to your purchase. Thank you.</div>':""}\n <div class="quick-fill-buttons-container"></div>\n <div class="swap-inputs-container"></div>\n <div class="transaction-options-container"></div>\n <div class="swap-button-container"></div>\n `;return console.log("🎨 SwapInterface.render - Completed render"),s}async getAddress(){try{const t=await Promise.resolve(this._address);return console.log(`[${this.instanceId}] Resolved address: ${t}`),t}catch(t){return console.error(`[${this.instanceId}] Error resolving address:`,t),null}}setAddress(t){this._address=t}get address(){return this._address}set address(t){this._address=t}}class Kc extends t.Component{constructor(t){super(t),this.eventBus=t.eventBus,this.state={currentPrice:t.price||0,totalBondingSupply:t.contractData?.totalBondingSupply||0,totalMessages:t.contractData?.totalMessages||0,totalNFTs:t.contractData?.totalNFTs||0,dataReady:t.dataReady||!1,contractEthBalance:t.contractData?.contractEthBalance||0,liquidityPool:t.contractData?.liquidityPool||null,chainId:t.chainId||null}}onMount(){this.unsubscribeEvents=[this.eventBus.on("contractData:updated",t=>this.updateProps({contractData:t})),this.eventBus.on("price:updated",t=>this.updateProps({price:t.price}))],this.resizeHandler=()=>requestAnimationFrame(()=>this.drawCurve()),window.addEventListener("resize",this.resizeHandler),this.isLiquidityDeployed()?this.renderDexToolsChart():this.drawCurve()}updateProps(t){const e={...this.state};let r=!1;if(t.contractData){const{contractData:n}=t;e.totalBondingSupply=n.totalBondingSupply,e.totalMessages=n.totalMessages,e.totalNFTs=n.totalNFTs,e.contractEthBalance=n.contractEthBalance,e.liquidityPool!==n.liquidityPool&&(e.liquidityPool=n.liquidityPool,r=!0),e.dataReady=!0,r=!0}void 0!==t.price&&(e.currentPrice=t.price,r=!0),void 0!==t.chainId&&(e.chainId=t.chainId,r=!0),this.setState(e),r&&(this.isLiquidityDeployed()?this.renderDexToolsChart():this.drawCurve())}isLiquidityDeployed(){const{liquidityPool:t}=this.state;return t&&"0x0000000000000000000000000000000000000000"!==t}renderDexToolsChart(){try{const t=this.element.querySelector(".bonding-curve");if(!t)return;t.innerHTML="";const e=`https://www.dextools.io/widget-chart/en/${this.getNetworkName(this.state.chainId)}/pe-light/${this.state.liquidityPool}?theme=dark&chartType=2&chartResolution=30&drawingToolbars=false`;t.innerHTML=`\n <iframe \n id="dextools-widget"\n title="$EXEC DEXTools Trading Chart"\n width="100%"\n height="100%"\n src="${e}"\n style="border: none;"\n onerror="console.warn('DEXTools chart failed to load (expected on localhost)')"\n ></iframe>\n `;const r=t.querySelector("#dextools-widget");r&&(r.onerror=()=>{console.warn("DEXTools chart iframe failed to load (expected on localhost due to X-Frame-Options)"),t.innerHTML='\n <div style="display: flex; align-items: center; justify-content: center; height: 100%; color: #888;">\n <div>Chart will be available in production</div>\n </div>\n '})}catch(t){console.error("Error rendering DEXTools chart:",t);const e=this.element.querySelector(".bonding-curve");e&&(e.innerHTML='\n <div style="display: flex; align-items: center; justify-content: center; height: 100%; color: #888;">\n <div>Chart unavailable (expected on localhost)</div>\n </div>\n ')}}getNetworkName(t){return{1:"ether",5:"goerli"}[t]||"ether"}drawCurve(){const t=this.element.querySelector("#curveChart");if(!t)return;const e=t.getContext("2d");t.width=t.offsetWidth,t.height=t.offsetHeight,e.clearRect(0,0,t.width,t.height),this.drawBaseCurve(e,t),this.state.dataReady?this.drawDataElements(e):this.drawPlaceholderLabels(e)}drawBaseCurve(t,e){const r=getComputedStyle(document.documentElement).getPropertyValue("--bonding-curve-color").trim()||"#764ba2";t.strokeStyle=r,t.lineWidth=2;const n=this.calculateCurvePoints(e,t=>Math.pow(.1+.8*t,3.5));this.drawCurvePath(t,n)}drawDataElements(t){const e=Math.max(.1,Math.min(.9,Math.pow(this.state.currentPrice/.08,1/3.5))),r=this.calculateCurvePoints(this.element.querySelector("#curveChart"),t=>Math.pow(.1+.8*t,3.5));this.drawCurrentPosition(t,r,e),this.drawLabels(t)}drawPlaceholderLabels(t){t.fillStyle="#666666",t.font="12px Courier New",t.fillText("Loading price data...",10,20),t.fillText("Loading supply data...",10,40),t.fillText("Loading NFT data...",10,60)}calculateCurvePoints(t,e){const r=[];for(let n=0;n<=100;n++){const i=n/100,o=e(i),s=i*t.width*.8+.1*t.width,a=.9*t.height-o*t.height*.8;r.push({x:s,y:a})}return r}drawCurvePath(t,e){t.beginPath(),t.moveTo(e[0].x,e[0].y);for(let r=1;r<e.length;r++)t.lineTo(e[r].x,e[r].y);t.stroke()}drawCurrentPosition(t,e,r){const n=Math.floor((r-.025)*e.length),i=Math.floor((r+.025)*e.length);if(n>=0&&i<e.length){const r=getComputedStyle(document.documentElement).getPropertyValue("--bonding-curve-color").trim()||"#764ba2";t.beginPath(),t.strokeStyle=r,t.lineWidth=4,t.moveTo(e[n].x,e[n].y);for(let r=n;r<=i;r++)t.lineTo(e[r].x,e[r].y);t.stroke();const o=e[Math.floor((n+i)/2)];t.beginPath(),t.arc(o.x,o.y,4,0,2*Math.PI),t.fillStyle="#FF0000",t.fill()}}drawLabels(t){t.fillStyle="#666666",t.font="12px Courier New",t.fillText(`${this.state.currentPrice.toFixed(4)} ETH / EXEC`,10,20),t.fillText(`Total Supply: ${this.state.totalBondingSupply.toLocaleString()} EXEC`,10,40),t.fillText(`Total Messages: ${this.state.totalMessages.toLocaleString()}`,10,60),t.fillText(`Total NFTs: ${this.state.totalNFTs.toLocaleString()}`,10,80),t.fillText(`Contract ETH Balance: ${this.state.contractEthBalance}`,10,100)}unmount(){this.unsubscribeEvents&&this.unsubscribeEvents.forEach(t=>t()),this.resizeHandler&&window.removeEventListener("resize",this.resizeHandler),super.unmount()}render(){return`\n <div class="bonding-curve marble-bg">\n ${this.isLiquidityDeployed()?"":'<canvas id="curveChart"></canvas>'}\n </div>\n `}static get styles(){return"\n .bonding-curve {\n width: 100%;\n height: 90%;\n min-height: 400px;\n background: #1a1a1a;\n border-radius: 8px;\n padding: 0px;\n overflow: hidden;\n position: relative;\n }\n\n #curveChart {\n width: 100%;\n height: 100%;\n }\n\n #dextools-widget {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n border: none;\n }\n "}}class Wc extends t.Component{constructor(t){super(t),this.eventBus=t.eventBus,this.state={balances:t.balances||{eth:"0",exec:"0",lastUpdated:null},loading:void 0===t.loading||t.loading,error:t.error||null},this.handleBalanceUpdate=this.handleBalanceUpdate.bind(this)}template(){const{balances:t,loading:e,error:r}=this.state;return`\n <div class="balance-display marble-bg ${e?"loading":""} ${r?"error":""}">\n <div class="balance-header">\n <h3>Your Balances</h3>\n ${t.lastUpdated?`\n <span class="last-updated">\n Last updated: ${new Date(t.lastUpdated).toLocaleTimeString()}\n </span>\n `:""}\n </div>\n \n <div class="balance-content">\n ${e?'\n <div class="loading-indicator">Loading balances...</div>\n ':r?`\n <div class="error-message">${r}</div>\n `:`\n <div class="balance-grid">\n <div class="balance-item eth">\n <span class="label">ETH Balance</span>\n <span class="amount">${t.eth}</span>\n </div>\n <div class="balance-item exec">\n <span class="label">EXEC Balance</span>\n <span class="amount">${t.exec}</span>\n </div>\n </div>\n `}\n </div>\n </div>\n `}render(){return this.template()}onMount(){this.eventBus&&(this.unsubscribeEvents=[this.eventBus.on("balances:updated",this.handleBalanceUpdate)])}onUnmount(){this.unsubscribeEvents&&this.unsubscribeEvents.forEach(t=>t())}updateProps(t){this.setState({balances:void 0!==t.balances?t.balances:this.state.balances,loading:void 0!==t.loading?t.loading:this.state.loading,error:void 0!==t.error?t.error:this.state.error})}handleBalanceUpdate(t){this.setState({balances:t,loading:!1,error:null})}}exports.ApprovalModal=zc,exports.BalanceDisplay=Wc,exports.BlockchainService=class{constructor(t,e){if(!t||!e)throw new Error("BlockchainService requires eventBus and contractCache instances.");this.provider=null,this.signer=null,this.contract=null,this.mirrorContract=null,this.connectionState="disconnected",this.networkConfig=null,this.ethers=xc,this.eventBus=t,this.contractCache=e,this.swapRouterAddress="0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D",this.swapRouter=null,this.isInternalNetworkChange=!1,this.transactionCounter=0,this.activeTransactions=new Map,this.networkChangeState="idle",this.networkChangeTimeout=null,this.networkChangeTimeoutDuration=3e4,this.pendingNetworkChange=null,this.previousNetworkId=null,this.isInitializing=!1,this.chainChangedHandler=()=>this.handleNetworkChange(),this.accountsChangedHandler=()=>this.handleAccountChange()}async initialize(t){this.isInitializing=!0;try{if(!t)throw new Error("Network configuration is required for initialization.");return this.networkConfig=t,await this.initializeProvider(),this.connectionState="connected",this.setupNetworkListeners(),this.eventBus.emit("blockchain:initialized"),this.isInitializing=!1,!0}catch(t){throw this.connectionState="error",this.isInitializing=!1,this.eventBus.emit("blockchain:error",t),this.wrapError(t,"Blockchain initialization failed")}}setupNetworkListeners(){if(window.ethereum&&this.chainChangedHandler&&this.accountsChangedHandler){try{window.ethereum.removeListener("chainChanged",this.chainChangedHandler),window.ethereum.removeListener("accountsChanged",this.accountsChangedHandler)}catch(t){}window.ethereum.on("chainChanged",this.chainChangedHandler),window.ethereum.on("accountsChanged",this.accountsChangedHandler)}}async initializeProvider(){try{if(window.ethereum){const t=parseInt(this.networkConfig?.network||"1");await this.waitForCorrectNetwork(t);const e=new ac(window.ethereum,"any");this.provider=e,this.signer=e.getSigner();const r=await this.provider.getNetwork();if(r.chainId!==t){this.eventBus.emit("network:switching",{from:r.chainId,to:t,automatic:!0});try{this.isInternalNetworkChange=!0,await window.ethereum.request({method:"wallet_switchEthereumChain",params:[{chainId:`0x${t.toString(16)}`}]}),this.provider=new ac(window.ethereum),this.signer=this.provider.getSigner(),this.eventBus.emit("network:switched",{from:r.chainId,to:t,success:!0})}catch(e){if(this.isInternalNetworkChange=!1,this.eventBus.emit("network:switched",{from:r.chainId,to:t,success:!1,error:e.message}),4902!==e.code)throw e;await window.ethereum.request({method:"wallet_addEthereumChain",params:[{chainId:`0x${t.toString(16)}`,rpcUrls:[this.networkConfig.rpcUrl],chainName:this.networkConfig.chainName,nativeCurrency:this.networkConfig.nativeCurrency}]}),this.provider=new ac(window.ethereum),this.signer=this.provider.getSigner()}finally{this.isInternalNetworkChange=!1}}}else this.provider=new nl(this.networkConfig.rpcUrl)}catch(t){throw this.isInternalNetworkChange=!1,this.wrapError(t,"Provider initialization failed")}}async initializeContract(t,e,r,n){try{if(!(t&&e&&r&&n))throw new Error("Contract address and all ABIs are required.");this.contract=new Ro(t,e,this.provider);const i=await this.contract.mirrorERC721();this.mirrorContract=new Ro(i,r,this.provider),this.swapRouter=new Ro(this.swapRouterAddress,n,this.provider);const o=await this.getLiquidityPool();if(o&&"0x0000000000000000000000000000000000000000"!==o){const t=["function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast)","function token0() external view returns (address)","function token1() external view returns (address)"];this.v2PoolContract=new Ro(o,t,this.provider)}else console.warn("Liquidity pool address is zero, skipping V2 pool contract initialization.");this.eventBus.emit("contract:updated")}catch(t){throw this.wrapError(t,"Contract initialization failed")}}async getMerkleProof(t,e=null){return null}async executeContractCall(t,e=[],r={}){try{if(!this.contract)throw new Error("Contract not initialized");let n="mirror"===r.useContract?this.mirrorContract:this.contract;if("router"===r.useContract&&(n=this.swapRouter),"v2pool"===r.useContract&&(n=this.v2PoolContract),r.requiresSigner){if(!this.signer)throw new Error("No wallet connected");n=n.connect(this.signer)}if("function"!=typeof n[t])throw new Error(`Method ${t} not found on contract`);const i=await n[t](...e||[],r.txOptions||{});if(i.wait){const r=await i.wait();return this.eventBus.emit("transaction:confirmed",{hash:r.transactionHash,method:t,args:e}),r}return i}catch(e){throw this.handleContractError(e,t)}}handleContractError(t,e){let r=t.message;if("INSUFFICIENT_FUNDS"===t.code)return new Error("Insufficient funds to complete transaction");if("UNPREDICTABLE_GAS_LIMIT"===t.code){const e=t.message.match(/execution reverted: (.*?)(?:\"|$)/);return r=e?`Tx Reverted: ${e[1]}`:"Transaction would fail - check your inputs",new Error(r)}if(4001===t.code||"ACTION_REJECTED"===t.code)return new Error("Transaction rejected by user");if(t.message.includes("execution reverted")){const e=t.message.match(/execution reverted: (.*?)(?:\"|$)/);r=e?`Tx Reverted: ${e[1]}`:t.message}return console.error(`Contract error in ${e}:`,t),new Error(r)}wrapError(t,e){const r=new Error(`${e}: ${t.message}`);return r.originalError=t,r.code=t.code,r}async handleNetworkChange(){try{if(this.isInitializing)return void console.log("BlockchainService: Ignoring network change during initialization");if(this.isInternalNetworkChange)return;let t=null;try{const e=await window.ethereum.request({method:"eth_chainId"});t=parseInt(e,16)}catch(e){console.warn("Could not get current network from window.ethereum:",e);try{if(this.provider){t=(await this.provider.getNetwork()).chainId}}catch(t){console.warn("Could not get current network from provider:",t)}}this.previousNetworkId=t;const e=parseInt(this.networkConfig?.network||"1");t&&t!==e&&console.log(`User switched to network ${t}, but we need ${e}. Switching back...`),this.networkChangeState="switching",this.pendingNetworkChange={from:t,to:null,startTime:Date.now()},this.eventBus.emit("network:switching",{from:t,to:null,automatic:!0}),this.networkChangeTimeout=setTimeout(()=>{"switching"===this.networkChangeState&&this.handleNetworkChangeTimeout()},this.networkChangeTimeoutDuration),await this.initializeProvider();let r=null;try{const t=await window.ethereum.request({method:"eth_chainId"});r=parseInt(t,16)}catch(t){console.warn("Could not get new network from window.ethereum:",t);try{if(this.provider){r=(await this.provider.getNetwork()).chainId}}catch(t){console.warn("Could not get new network from provider:",t)}}const n=this.pendingNetworkChange?Date.now()-this.pendingNetworkChange.startTime:0;this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),this.networkChangeState="switched";this.pendingNetworkChange;this.pendingNetworkChange=null,this.eventBus.emit("network:switched",{from:t,to:r,success:!0,duration:n}),this.eventBus.emit("network:changed",{automatic:!0}),this.eventBus.emit("contract:updated"),setTimeout(()=>{"switched"===this.networkChangeState&&(this.networkChangeState="idle")},1e3)}catch(t){this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),this.networkChangeState="error",this.eventBus.emit("network:switch:error",{from:this.previousNetworkId,to:null,error:t.message||"Network switch failed",originalError:t}),this.eventBus.emit("blockchain:error",t),setTimeout(()=>{"error"===this.networkChangeState&&(this.networkChangeState="idle",this.pendingNetworkChange=null)},2e3)}}handleNetworkChangeTimeout(){console.warn("Network change timed out after",this.networkChangeTimeoutDuration,"ms"),this.networkChangeState="error",this.eventBus.emit("network:switch:timeout",{from:this.previousNetworkId,to:null,timeout:this.networkChangeTimeoutDuration}),this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),setTimeout(()=>{"error"===this.networkChangeState&&(this.networkChangeState="idle",this.pendingNetworkChange=null)},2e3)}cancelNetworkChange(){return"switching"===this.networkChangeState&&(this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),this.networkChangeState="idle",this.pendingNetworkChange=null,this.eventBus.emit("network:switch:cancelled",{from:this.previousNetworkId}),!0)}getNetworkChangeState(){return this.networkChangeState}async waitForCorrectNetwork(t,e=5e3){const r=Date.now();for(;Date.now()-r<e;){try{const e=await window.ethereum.request({method:"eth_chainId"});if(parseInt(e,16)===t)return void await new Promise(t=>setTimeout(t,200))}catch(t){}await new Promise(t=>setTimeout(t,100))}console.warn(`Network check timeout: Expected ${t}, will verify in initializeProvider`)}async handleAccountChange(){try{if(window.ethereum){const t=new ac(window.ethereum);this.signer=t.getSigner(),this.eventBus.emit("account:changed"),this.eventBus.emit("contract:updated")}}catch(t){this.eventBus.emit("blockchain:error",t)}}getConnectionState(){return this.connectionState}isConnected(){return"connected"===this.connectionState}async getCurrentTier(){try{const t=this.contractCache.get("getCurrentTier",[]);if(null!==t)return t;const e=await this.executeContractCall("getCurrentTier"),r=parseInt(e.toString());return this.contractCache.set("getCurrentTier",[],r),r}catch(t){throw this.wrapError(t,"Failed to get current tier")}}async getCurrentRoot(){try{return(await this.executeContractCall("getCurrentRoot")).toString()}catch(t){throw this.wrapError(t,"Failed to get current root")}}async getLiquidityPool(){try{const t=this.contractCache.get("getLiquidityPool",[]);if(null!==t)return t;const e=(await this.executeContractCall("liquidityPair")).toString();return this.contractCache.set("getLiquidityPool",[],e),e}catch(t){throw this.wrapError(t,"Failed to get liquidity pool address")}}async getTotalBondingSupply(){try{const t=this.contractCache.get("getTotalBondingSupply",[]);if(null!==t)return t;const e=await this.executeContractCall("totalBondingSupply"),r=parseFloat(this.ethers.utils.formatUnits(e,0));return this.contractCache.set("getTotalBondingSupply",[],r),r}catch(t){throw this.wrapError(t,"Failed to get total bonding supply")}}async getTotalMessages(){try{const t=this.contractCache.get("getTotalMessages",[]);if(null!==t)return t;const e=await this.executeContractCall("totalMessages"),r=parseFloat(this.ethers.utils.formatUnits(e,0));return this.contractCache.set("getTotalMessages",[],r),r}catch(t){throw this.wrapError(t,"Failed to get total messages")}}async getMessagesBatch(t,e){return(await this.executeContractCall("getMessagesBatch",[t,e])).map(t=>t.toString())}async getTokenBalance(t){if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getTokenBalance");const e=this.contractCache.get("getTokenBalance",[t]);if(null!==e)return e;const r=await this.executeContractCall("balanceOf",[t]);return this.contractCache.set("getTokenBalance",[t],r),r}async getNFTBalance(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getNFTBalance");const e=this.contractCache.get("getNFTBalance",[t]);if(null!==e)return e;const r=await this.executeContractCall("balanceOf",[t],{useContract:"mirror"}),n=parseInt(r.toString());return this.contractCache.set("getNFTBalance",[t],n),n}catch(t){throw this.wrapError(t,"Failed to get NFT balance")}}async getNFTSupply(){try{return this.executeContractCall("totalSupply",[],{useContract:"mirror"})}catch(t){throw this.wrapError(t,"Failed to get NFT supply")}}async getEthBalance(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getEthBalance");const e=this.contractCache.get("getEthBalance",[t]);if(null!==e)return e;const r=(await this.provider.getBalance(t)).toString();return this.contractCache.set("getEthBalance",[t],r),r}catch(t){throw this.wrapError(t,"Failed to get ETH balance")}}async buyBonding(t,e){try{this.eventBus.emit("transaction:pending",{type:"buy"}),console.log("Buy bonding called with params:",t);const r=await this.executeContractCall("buyBonding",[t.amount,t.maxCost,t.mintNFT,t.proof,t.message],{requiresSigner:!0,txOptions:{value:e}});return this.eventBus.emit("transaction:success",{type:"buy",receipt:r,amount:t.amount}),r}catch(t){throw this.eventBus.emit("transaction:error",{type:"buy",error:this.wrapError(t,"Buy bonding failed")}),t}}async sellBonding(t){try{this.eventBus.emit("transaction:pending",{type:"sell"});const e=await this.executeContractCall("sellBonding",[t.amount,t.minReturn,t.proof,t.message],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"sell",receipt:e,amount:t.amount}),e}catch(t){throw this.eventBus.emit("transaction:error",{type:"sell",error:this.wrapError(t,"Sell bonding failed")}),t}}async getTokenPrice(){try{if(!this.contract)throw new Error("Contract not initialized");const t=Ac("1000000"),e=await this.executeContractCall("calculateCost",[t]);if(!e||!H.isBigNumber(e))throw new Error("Invalid price format from contract");return parseFloat(this.ethers.utils.formatEther(e))}catch(t){throw this.wrapError(t,"Failed to get token price")}}async getCurrentPrice(){try{const t=this.contractCache.get("getCurrentPrice",[]);if(null!==t)return t;const e=await this.getTokenPrice();return this.contractCache.set("getCurrentPrice",[],e),e}catch(t){throw this.wrapError(t,"Failed to get current price")}}async calculateCost(t){try{return await this.executeContractCall("calculateCost",[t])}catch(t){throw this.wrapError(t,"Failed to calculate cost")}}async getExecForEth(t){try{const e=Ac(t.toString()),r=await this.executeContractCall("getExecForEth",[e]);return this.formatExec(r)}catch(t){throw this.wrapError(t,"Failed to calculate EXEC for ETH amount")}}async getEthForExec(t){try{const e=bc(t.toString(),18),r=await this.executeContractCall("getEthForExec",[e]);return this.formatEther(r)}catch(t){throw this.wrapError(t,"Failed to calculate ETH for EXEC amount")}}async getFreeSupply(){try{const t=this.contractCache.get("getFreeSupply",[]);if(null!==t)return t;const e=await this.executeContractCall("freeSupply"),r=this.formatExec(e);return this.contractCache.set("getFreeSupply",[],r),r}catch(t){throw this.wrapError(t,"Failed to get free supply")}}async getFreeMint(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getFreeMint");const e=this.contractCache.get("getFreeMint",[t]);if(null!==e)return e;const r=await this.executeContractCall("freeMint",[t]);return console.log("FREE MINT",r),this.contractCache.set("getFreeMint",[t],r),r}catch(t){throw this.wrapError(t,"Failed to get free mint")}}async getFreeSituation(t){try{const e=await this.getFreeMint(t),r=await this.getFreeSupply();return{freeMint:e,freeSupply:r}}catch(t){throw this.wrapError(t,"Failed to get free situation")}}async getUserNFTIds(t){try{return await this.executeContractCall("getOwnerTokens",[t])}catch(t){throw this.wrapError(t,"Failed to get user NFT IDs")}}async getTokenUri(t){try{return await this.executeContractCall("tokenURI",[t])}catch(t){throw this.wrapError(t,"Failed to get token URI")}}async getContractEthBalance(){try{const t=this.contractCache.get("getContractEthBalance",[]);if(null!==t)return t;const e=await this.provider.getBalance(this.contract.address),r=this.formatEther(e);return console.log("CONTRACT ETH BALANCE",r),this.contractCache.set("getContractEthBalance",[],r),r}catch(t){throw this.wrapError(t,"Failed to get contract ETH balance")}}async getUserNFTs(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getUserNFTs");return await this.executeContractCall("getOwnerTokens",[t])}catch(t){throw this.wrapError(t,"Failed to get user NFT IDs")}}async getNFTMetadata(t){try{const e=await this.executeContractCall("tokenURI",[t]);return console.log("NFT METADATA",e),e}catch(t){throw this.wrapError(t,"Failed to get NFT metadata")}}async getNFTMetadataBatch(t){try{const e=t.map(t=>this.executeContractCall("tokenURI",[t])),r=await Promise.all(e);return console.log("Batch NFT Metadata:",r),r}catch(t){throw this.wrapError(t,"Failed to get NFT metadata batch")}}async getUserNFTsWithMetadata(t,e=5){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getUserNFTsWithMetadata");const r=await this.getUserNFTs(t);if(!r||0===r.length)return[];const n=r.slice(0,e),i=await this.getNFTMetadataBatch(n),o=n.map((t,e)=>({tokenId:t,metadata:i[e]}));return console.log("NFTs with metadata:",o),o}catch(t){throw this.wrapError(t,"Failed to get user NFTs with metadata")}}async balanceMint(t){try{this.eventBus.emit("transaction:pending",{type:"mint"});const e=await this.executeContractCall("balanceMint",[t],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"mint",receipt:e,amount:t}),e}catch(t){throw this.eventBus.emit("transaction:error",{type:"mint",error:this.wrapError(t,"Failed to mint NFTs")}),t}}async transferNFT(t,e,r){try{this.eventBus.emit("transaction:pending",{type:"send"});const n=await this.executeContractCall("transferFrom",[t,e,r],{requiresSigner:!0,useContract:"mirror"});return this.eventBus.emit("transaction:success",{type:"send",receipt:n,tokenId:r,recipient:e}),n}catch(t){throw this.eventBus.emit("transaction:error",{type:"send",error:this.wrapError(t,"Failed to send NFT")}),t}}async getSkipNFT(t){try{return await this.executeContractCall("getSkipNFT",[t])}catch(t){throw this.wrapError(t,"Failed to get skipNFT status")}}async setSkipNFT(t){try{if(!this.signer)throw new Error("No wallet connected");this.eventBus.emit("transaction:pending",{type:"setSkipNFT",skipNFT:t});const e=await this.executeContractCall("setSkipNFT",[t],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"setSkipNFT",receipt:e,skipNFT:t}),e}catch(t){throw this.eventBus.emit("transaction:error",{type:"setSkipNFT",error:this.wrapError(t,"Failed to set skipNFT")}),t}}async transferTokensToSelf(t){try{if(!this.signer)throw new Error("No wallet connected");const e=await this.signer.getAddress();this.eventBus.emit("transaction:pending",{type:"reroll"});const r=await this.executeContractCall("transfer",[e,t],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"reroll",receipt:r,amount:t}),r}catch(t){throw this.eventBus.emit("transaction:error",{type:"reroll",error:this.wrapError(t,"Failed to re-roll NFTs")}),t}}parseEther(t){return Ac(t).toString()}formatEther(t){return parseFloat(Ec(t))}parseExec(t){return bc(t,18).toString()}formatExec(t){return parseFloat(wc(t,18))}async getToken0PriceInToken1(t){try{const e=new this.ethers.Contract(t,["function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast)"],this.provider,{useContract:"v2pool"}),[r,n]=await e.getReserves();return n/r}catch(t){throw this.wrapError(t,"Failed to get token0 price in terms of token1")}}async isToken0(t,e){try{const r=new this.ethers.Contract(t,["function token0() external view returns (address)","function token1() external view returns (address)"],this.provider,{useContract:"v2pool"});return(await r.token0()).toLowerCase()===e.toLowerCase()}catch(t){throw this.wrapError(t,"Failed to check if token is token0")}}async getApproval(t,e=null){try{if(!t)throw new Error("User address is required for approval check");let r;if(null===e)r=this.swapRouter.address||this.swapRouter;else if("string"==typeof e)r=e;else{if(!e||"object"!=typeof e||!e.address)throw new Error("Invalid target for approval check");r=e.address}console.log(`Checking allowance for ${t} to spend tokens at ${r}`);return(await this.executeContractCall("allowance",[t,r])).toString()}catch(t){throw this.wrapError(t,"Failed to get approval")}}async setApproval(t=null,e){try{let r;if(null===t)r=this.swapRouter.address;else if("string"==typeof t)r=t;else{if(!t||"object"!=typeof t||!t.address)throw new Error("Invalid target for approval");r=t.address}console.log(`Setting approval for ${r} to spend ${e} tokens`);const n=`tx_approve_${++this.transactionCounter}_${Date.now()}`,i={type:"approve",id:n,pending:!0};this.activeTransactions.set(n,i),console.log(`[BlockchainService] Emitting transaction:pending for approve ${n}`),this.eventBus.emit("transaction:pending",i);const o=await this.executeContractCall("approve",[r,e],{requiresSigner:!0}),s={type:"approve",id:n,receipt:o,amount:e};return this.activeTransactions.set(n,s),console.log(`[BlockchainService] Emitting transaction:success for ${n}`),this.eventBus.emit("transaction:success",s),o}catch(t){const e={type:"approve",id:`error_approve_${++this.transactionCounter}_${Date.now()}`,error:this.wrapError(t,"Failed to set approval")};throw console.log("[BlockchainService] Emitting transaction:error for approval error"),this.eventBus.emit("transaction:error",e),t}}async swapExactTokenForEthSupportingFeeOnTransferV2(t,e){try{const r=`tx_${++this.transactionCounter}_${Date.now()}`,n={type:"swap",id:r,pending:!0};this.activeTransactions.set(r,n),console.log(`[BlockchainService] Emitting transaction:pending for ${r}`),this.eventBus.emit("transaction:pending",n);const i=["0x185485bF2e26e0Da48149aee0A8032c8c2060Db2","0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"],o=t,s=Math.floor(Date.now()/1e3)+1200,a=(await this.executeContractCall("getAmountsOut",[e.amount,i],{useContract:"router"}))[1],l=BigInt(a)*BigInt(940)/BigInt(1e3);console.log("Sell transaction parameters:",{amountIn:e.amount.toString(),amountOutMin:l.toString(),path:i,txId:r});const c=await this.executeContractCall("swapExactTokensForETHSupportingFeeOnTransferTokens",[e.amount,l,i,o,s],{useContract:"router",requiresSigner:!0}),u={type:"swap",id:r,receipt:c,amount:e.amount};return this.activeTransactions.set(r,u),console.log(`[BlockchainService] Emitting transaction:success for ${r}`),this.eventBus.emit("transaction:success",u),setTimeout(()=>{this.activeTransactions.delete(r)},1e3),c}catch(t){const e={type:"swap",id:`error_${++this.transactionCounter}_${Date.now()}`,error:this.wrapError(t,"Failed to swap tokens for ETH")};throw console.log("[BlockchainService] Emitting transaction:error for error transaction"),this.eventBus.emit("transaction:error",e),t}}async swapExactEthForTokenSupportingFeeOnTransfer(t,e,r){try{const n=`tx_${++this.transactionCounter}_${Date.now()}`,i={type:"swap",id:n,pending:!0};this.activeTransactions.set(n,i),console.log(`[BlockchainService] Emitting transaction:pending for ${n}`),this.eventBus.emit("transaction:pending",i);const o=["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","0x185485bF2e26e0Da48149aee0A8032c8c2060Db2"],s=t,a=Math.floor(Date.now()/1e3)+1200,l=BigInt(e.amount)*BigInt(940)/BigInt(1e3);console.log("Buy transaction parameters:",{amountOutMin:l.toString(),ethValue:r.toString(),path:o,txId:n});const c=await this.executeContractCall("swapExactETHForTokensSupportingFeeOnTransferTokens",[l,o,s,a],{useContract:"router",requiresSigner:!0,txOptions:{value:r}}),u={type:"swap",id:n,receipt:c,amount:e.amount};return this.activeTransactions.set(n,u),console.log(`[BlockchainService] Emitting transaction:success for ${n}`),this.eventBus.emit("transaction:success",u),setTimeout(()=>{this.activeTransactions.delete(n)},1e3),c}catch(t){const e={type:"swap",id:`error_${++this.transactionCounter}_${Date.now()}`,error:this.wrapError(t,"Failed to swap ETH for tokens")};throw console.log("[BlockchainService] Emitting transaction:error for error transaction"),this.eventBus.emit("transaction:error",e),t}}async getCurrentBlockInfo(){try{const t=await this.provider.getBlockNumber(),e=await this.provider.getBlock(t);return{number:t,timestamp:e.timestamp,hash:e.hash,date:new Date(1e3*e.timestamp)}}catch(t){throw this.wrapError(t,"Failed to get current block info")}}},exports.BondingCurve=Kc,exports.ContractCache=class{constructor(t){if(!t)throw new Error("ContractCache requires an eventBus instance.");this.eventBus=t,this.cache=new Map,this.stats={hits:0,misses:0,invalidations:0,sets:0},this.defaultTTLs={price:5e3,balance:3e3,contractData:1e4,supply:1e4,metadata:6e4,tier:3e4,default:5e3},this.noCacheMethods=new Set(["executeContractCall","swapExactETHForTokens","swapExactTokensForETH","buy","sell","mint"]),this.setupEventListeners(),this.debug=!1}setupEventListeners(){this.eventBus.on("transaction:confirmed",()=>{this.invalidateByPattern("balance","price","contractData"),this.debug&&console.log("[ContractCache] Invalidated cache due to transaction confirmation")}),this.eventBus.on("account:changed",()=>{this.invalidateByPattern("balance"),this.debug&&console.log("[ContractCache] Invalidated cache due to account change")}),this.eventBus.on("network:changed",()=>{this.clear(),this.debug&&console.log("[ContractCache] Cleared cache due to network change")}),this.eventBus.on("contractData:updated",()=>{this.invalidateByPattern("contractData","price","supply"),this.debug&&console.log("[ContractCache] Invalidated cache due to contract data update")})}generateKey(t,e=[]){return`${t}:${e.length>0?JSON.stringify(e.map(t=>t&&"object"==typeof t&&t.toString?t.toString():t)):""}`}get(t,e=[]){if(this.noCacheMethods.has(t))return null;const r=this.generateKey(t,e),n=this.cache.get(r);return n?Date.now()>n.expiresAt?(this.cache.delete(r),this.stats.misses++,null):(n.accessCount++,this.stats.hits++,this.debug&&console.log(`[ContractCache] Cache HIT for ${t}`,e),n.value):(this.stats.misses++,null)}set(t,e=[],r,n=null){if(this.noCacheMethods.has(t))return;null===n&&(n=this.getTTLForMethod(t));const i=this.generateKey(t,e),o=Date.now()+n;this.cache.set(i,{value:r,expiresAt:o,accessCount:0,method:t,args:e,cachedAt:Date.now()}),this.stats.sets++,this.debug&&console.log(`[ContractCache] Cached ${t}`,e,`TTL: ${n}ms`)}getTTLForMethod(t){const e=t.toLowerCase();return e.includes("price")||e.includes("cost")?this.defaultTTLs.price:e.includes("balance")?this.defaultTTLs.balance:e.includes("supply")||e.includes("total")?this.defaultTTLs.supply:e.includes("metadata")||e.includes("uri")?this.defaultTTLs.metadata:e.includes("tier")||e.includes("merkle")||e.includes("proof")?this.defaultTTLs.tier:e.includes("contract")||e.includes("pool")||e.includes("liquidity")?this.defaultTTLs.contractData:this.defaultTTLs.default}invalidateByPattern(...t){let e=0;for(const[r,n]of this.cache.entries()){const i=n.method.toLowerCase();t.some(t=>i.includes(t.toLowerCase()))&&(this.cache.delete(r),e++)}this.stats.invalidations+=e,this.debug&&e>0&&console.log(`[ContractCache] Invalidated ${e} entries matching patterns:`,t)}invalidate(t,e=[]){const r=this.generateKey(t,e);this.cache.delete(r)&&(this.stats.invalidations++,this.debug&&console.log(`[ContractCache] Invalidated ${t}`,e))}clear(){const t=this.cache.size;this.cache.clear(),this.stats.invalidations+=t,this.debug&&console.log("[ContractCache] Cleared all cache")}getStats(){const t=this.stats.hits+this.stats.misses,e=t>0?(this.stats.hits/t*100).toFixed(2):0;return{...this.stats,hitRate:`${e}%`,cacheSize:this.cache.size,totalRequests:t}}async warmCache(t,e=[]){this.debug&&console.log("[ContractCache] Warming cache for methods:",e);const r=e.map(async e=>{try{return await t(e)}catch(t){return console.warn(`[ContractCache] Failed to warm cache for ${e}:`,t),null}});await Promise.all(r)}setDebug(t){this.debug=t}cleanup(){const t=Date.now();let e=0;for(const[r,n]of this.cache.entries())t>n.expiresAt&&(this.cache.delete(r),e++);return this.debug&&e>0&&console.log(`[ContractCache] Cleaned up ${e} expired entries`),e}},exports.FloatingWalletButton=Fc,exports.IpfsImage=Oc,exports.IpfsService=Bc,exports.MessagePopup=Uc,exports.PriceDisplay=qc,exports.PriceService=class{constructor(t,e,r=6e4){if(!t||!e)throw new Error("PriceService requires blockchainService and eventBus instances.");this._blockchainService=t,this.eventBus=e,this._cache=new Map,this._contractUpdateInterval=null,this._updateIntervalTime=r,this._cacheExpirationTime=3e5,this._updateDebounceTimeout=null,this._updateDebounceDelay=2e3,this._lastEmittedData=null,this.getCurrentPrice=this.getCurrentPrice.bind(this),this.startContractUpdates=this.startContractUpdates.bind(this),this.stopContractUpdates=this.stopContractUpdates.bind(this),this.debouncedUpdateContractData=this.debouncedUpdateContractData.bind(this)}initialize(t=null){console.log("PriceService: Fetching initial data immediately",t?`for address: ${t}`:"(no address yet)"),this.updateContractData(t).catch(t=>{console.error("Failed to fetch initial contract data:",t)}),this.startContractUpdates(t)}async getCurrentPrice(){try{if(!this._blockchainService)throw new Error("PriceService not initialized");const t=this._getCacheValue("currentPrice");if(null!==t)return t;const e=await this._blockchainService.getTokenPrice();if("number"!=typeof e||isNaN(e)||e<=0)throw console.error("Invalid price value:",e),new Error("Invalid price value received");return this._setCacheValue("currentPrice",e),this.eventBus.emit("price:updated",{price:e}),e}catch(t){throw console.error("Error fetching price:",t),t}}async calculateCost(t){try{if(!this._blockchainService)throw new Error("PriceService not initialized");return await this._blockchainService.calculateCost(t)}catch(t){throw console.error("Error calculating cost:",t),t}}async updateContractData(t=null){try{const e=[this._blockchainService.getCurrentPrice(),this._blockchainService.getTotalBondingSupply(),this._blockchainService.getTotalMessages(),this._blockchainService.getNFTSupply(),this._blockchainService.getFreeSupply(),this._blockchainService.getContractEthBalance(),this._blockchainService.getCurrentTier(),this._blockchainService.getLiquidityPool()];t&&e.push(this._blockchainService.getEthBalance(t),this._blockchainService.getTokenBalance(t),this._blockchainService.getNFTBalance(t),this._blockchainService.getFreeMint(t));const[r,n,i,o,s,a,l,c,u,h,d,f]=await Promise.all(e),p={totalBondingSupply:n,currentPrice:r,totalMessages:i,totalNFTs:o,freeSupply:s,freeMint:void 0!==f&&f,contractEthBalance:a,currentTier:l,liquidityPool:c},m={eth:u||"0",exec:h||"0",nfts:d||0},g=!this._lastEmittedData||JSON.stringify(this._lastEmittedData.contractData)!==JSON.stringify(p),v=!this._lastEmittedData||JSON.stringify(this._lastEmittedData.balances)!==JSON.stringify(m);g&&this.eventBus.emit("contractData:updated",p),v&&this.eventBus.emit("balances:updated",m),this._lastEmittedData&&this._lastEmittedData.contractData.currentPrice===r||this.eventBus.emit("price:updated",{price:r}),this._lastEmittedData={contractData:p,balances:m}}catch(t){console.error("Error updating contract data:",t),this.eventBus.emit("price:error",{error:t.message})}}startContractUpdates(){this.stopContractUpdates(),this.debouncedUpdateContractData(),this._contractUpdateInterval=setInterval(()=>{this.debouncedUpdateContractData()},this._updateIntervalTime)}stopContractUpdates(){this._contractUpdateInterval&&(clearInterval(this._contractUpdateInterval),this._contractUpdateInterval=null)}_setCacheValue(t,e){this._cache.set(t,{value:e,timestamp:Date.now()})}debouncedUpdateContractData(t=null){this._updateDebounceTimeout&&clearTimeout(this._updateDebounceTimeout),this._updateDebounceTimeout=setTimeout(()=>{this.updateContractData(t).catch(t=>{console.error("Failed to update contract data:",t)})},this._updateDebounceDelay)}},exports.SwapButton=jc,exports.SwapInputs=Gc,exports.SwapInterface=Hc,exports.TransactionOptions=Dc,exports.WalletModal=Rc,exports.WalletService=class{constructor(t){if(!t)throw new Error("WalletService requires an eventBus instance.");this.eventBus=t,this.provider=null,this.signer=null,this.connectedAddress=null,this.selectedWallet=null,this.connected=!1,this.ethers=xc,this.isInitialized=!1,this.providerMap={rabby:()=>window.ethereum&&window.ethereum.isRabby?window.ethereum:null,rainbow:()=>window.ethereum&&window.ethereum.isRainbow?window.ethereum:window.rainbow||null,phantom:()=>window.phantom&&window.phantom.ethereum?window.phantom.ethereum:null,metamask:()=>(console.log("Checking for MetaMask with direct window.ethereum access"),window.ethereum||null)},this.walletIcons={rabby:"/public/wallets/rabby.webp",rainbow:"/public/wallets/rainbow.webp",phantom:"/public/wallets/phantom.webp",metamask:"/public/wallets/MetaMask.webp"}}async initialize(){try{return console.log("Initializing WalletService..."),void 0!==window.ethereum?(console.log("Found Ethereum provider"),this.eventBus.emit("wallet:detected"),this.isMetaMask=window.ethereum.isMetaMask,this.setupEventListeners()):(console.log("No Ethereum provider found"),this.eventBus.emit("wallet:notdetected")),this.isInitialized=!0,!0}catch(t){throw console.error("Error initializing WalletService:",t),t}}formatError(t,e=""){if("string"==typeof t)return new Error(`${e}: ${t}`);if(t&&t.message){const r=this.getUserFriendlyErrorMessage(t,e),n=new Error(r);return n.code=t.code,n.originalError=t,n}return new Error(`${e}: Unknown error`)}getUserFriendlyErrorMessage(t,e){const r=t.message||"Unknown error";return 4001===t.code?"Connection request rejected by user":4902===t.code?"Network needs to be added to your wallet":r.includes("redefine property")||r.includes("which has only a getter")?"Wallet conflict detected. Please disable all wallet extensions except the one you want to use, then refresh.":r.includes("user rejected")?"Connection rejected by user":r.includes("already pending")?"A wallet request is already pending, please check your wallet":e?`${e}: ${r}`:r}getAvailableWallets(){const t={};console.log("Checking for available wallets..."),window.ethereum?console.log("window.ethereum is available"):console.log("window.ethereum is not available");for(const[e,r]of Object.entries(this.providerMap))try{console.log(`Checking for ${e} wallet...`);const n=r();n?(console.log(`Found ${e} wallet`),t[e]={name:e,icon:this.walletIcons[e],provider:n}):console.log(`${e} wallet not detected`)}catch(t){console.warn(`Error detecting ${e} wallet:`,t)}return 0===Object.keys(t).length&&window.ethereum?(console.log("No specific wallets detected, but window.ethereum exists. Adding MetaMask as fallback."),t.metamask={name:"metamask",icon:this.walletIcons.metamask,provider:window.ethereum}):!t.metamask&&window.ethereum&&(console.log("window.ethereum exists. Adding MetaMask option regardless of detection."),t.metamask={name:"metamask",icon:this.walletIcons.metamask,provider:window.ethereum}),console.log("Available wallets:",Object.keys(t)),t}async selectWallet(t){try{if(this.cleanup(),!this.providerMap[t])throw new Error(`Unsupported wallet: ${t}`);const e=this.providerMap[t]();if(!e)throw new Error(`${t} not detected. Please install it first.`);return this.selectedWallet=t,this.provider=e,this.setupEventListeners(),this.eventBus.emit("wallet:selected",{type:t,provider:e}),t}catch(t){const e=this.formatError(t,"Wallet selection failed");throw this.eventBus.emit("wallet:error",e),e}}setupEventListeners(){if(this.provider){try{this.provider.removeListener("chainChanged",this.handleNetworkChange),this.provider.removeListener("accountsChanged",this.handleAccountChange)}catch(t){}this.provider.on("chainChanged",()=>this.handleNetworkChange()),this.provider.on("accountsChanged",t=>this.handleAccountChange(t))}}cleanup(){if(this.provider)try{this.provider.removeListener("chainChanged",this.handleNetworkChange),this.provider.removeListener("accountsChanged",this.handleAccountChange)}catch(t){}this.provider=null,this.signer=null,this.connectedAddress=null,this.connected=!1,this.ethersProvider=null}async connect(){try{if(!this.selectedWallet||!this.provider)throw new Error("Please select a wallet first");let t;this.eventBus.emit("wallet:connecting"),console.log(`Attempting to connect to ${this.selectedWallet}...`);try{if(await new Promise(t=>setTimeout(t,500)),"phantom"===this.selectedWallet&&window.phantom&&window.phantom.ethereum)console.log("Using phantom-specific connection method"),t=await window.phantom.ethereum.request({method:"eth_requestAccounts"});else{console.log(`Using standard connection method for ${this.selectedWallet}`);try{const t=await this.provider.request({method:"eth_accounts"});console.log("Existing accounts:",t),t&&0!==t.length||console.log("No existing accounts found, requesting user approval...")}catch(t){console.warn("Error checking existing accounts:",t)}t=await this.provider.request({method:"eth_requestAccounts",params:[]})}}catch(t){throw console.error("Error requesting accounts:",t),t&&4001===t.code?this.formatError(t,"Wallet connection rejected"):t&&t.message&&t.message.includes("wallet must has at least one account")?new Error("Your wallet has no accounts. Please create at least one account in your wallet and try again."):t}if(console.log("Accounts received:",t),!t||!t[0])throw new Error("No accounts found. Please unlock your wallet and make sure you have at least one account set up.");return this.connectedAddress=t[0],this.connected=!0,console.log(`Successfully connected to account: ${this.connectedAddress}`),this.selectedWallet&&localStorage.setItem("ms2fun_lastWallet",this.selectedWallet),this.ethersProvider=new ac(this.provider,"any"),this.signer=this.ethersProvider.getSigner(),this.eventBus.emit("wallet:connected",{address:this.connectedAddress,walletType:this.selectedWallet,provider:this.provider,ethersProvider:this.ethersProvider,signer:this.signer}),this.connectedAddress}catch(t){if(console.error("Wallet connection error:",t),t.message&&(t.message.includes("at least one account")||t.message.includes("wallet must has")||t.message.includes("no accounts"))){const e=new Error("Your wallet has no accounts. Please create at least one account in your wallet and try again.");throw e.code=t.code,e.originalError=t,this.eventBus.emit("wallet:error",e),e}const e=this.formatError(t,"Wallet connection failed");throw this.eventBus.emit("wallet:error",e),e}}async switchNetwork(t){try{if(!this.provider)throw new Error("No wallet connected");const e=`0x${Number(t).toString(16)}`;this.eventBus.emit("network:switching",{to:t,automatic:!1});try{return await this.provider.request({method:"wallet_switchEthereumChain",params:[{chainId:e}]}),this.ethersProvider=new ac(this.provider,"any"),this.signer=this.ethersProvider.getSigner(),this.eventBus.emit("network:switched",{to:t,success:!0}),!0}catch(t){throw 4902===t.code?new Error("Network needs to be added first"):t}}catch(e){const r=this.formatError(e,"Network switch failed");throw this.eventBus.emit("network:switch:error",{from:null,to:t,error:r.message,originalError:e}),this.eventBus.emit("network:switched",{to:t,success:!1,error:r.message}),r}}getAddress(){return this.connectedAddress}isConnected(){return this.connected&&!!this.connectedAddress}getProviderAndSigner(){return{provider:this.ethersProvider,signer:this.signer}}handleNetworkChange(){this.provider&&(this.ethersProvider=new ac(this.provider,"any"),this.signer=this.ethersProvider.getSigner())}handleAccountChange(t){t&&Array.isArray(t)&&(0===t.length?(this.connected=!1,this.connectedAddress=null,this.eventBus.emit("wallet:disconnected")):t[0]!==this.connectedAddress&&(this.connectedAddress=t[0],this.eventBus.emit("wallet:changed",{address:t[0]})))}async disconnect(){this.cleanup(),this.eventBus.emit("wallet:disconnected")}};
9
+ */var Yt,Xt=(Jt||(Jt=1,Yt=Qt,function(){var t="input is invalid type",r="object"==typeof window,n=r?window:{};n.JS_SHA3_NO_WINDOW&&(r=!1);var i=!r&&"object"==typeof self;!n.JS_SHA3_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node?n=e:i&&(n=self);var o=!n.JS_SHA3_NO_COMMON_JS&&Yt.exports,s=!n.JS_SHA3_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,a="0123456789abcdef".split(""),l=[4,1024,262144,67108864],c=[0,8,16,24],u=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],h=[224,256,384,512],d=[128,256],f=["hex","buffer","arrayBuffer","array","digest"],p={128:168,256:136};!n.JS_SHA3_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),!s||!n.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(t){return"object"==typeof t&&t.buffer&&t.buffer.constructor===ArrayBuffer});for(var m=function(t,e,r){return function(n){return new I(t,e,t).update(n)[r]()}},g=function(t,e,r){return function(n,i){return new I(t,e,i).update(n)[r]()}},v=function(t,e,r){return function(e,n,i,o){return A["cshake"+t].update(e,n,i,o)[r]()}},w=function(t,e,r){return function(e,n,i,o){return A["kmac"+t].update(e,n,i,o)[r]()}},y=function(t,e,r,n){for(var i=0;i<f.length;++i){var o=f[i];t[o]=e(r,n,o)}return t},b=function(t,e){var r=m(t,e,"hex");return r.create=function(){return new I(t,e,t)},r.update=function(t){return r.create().update(t)},y(r,m,t,e)},E=[{name:"keccak",padding:[1,256,65536,16777216],bits:h,createMethod:b},{name:"sha3",padding:[6,1536,393216,100663296],bits:h,createMethod:b},{name:"shake",padding:[31,7936,2031616,520093696],bits:d,createMethod:function(t,e){var r=g(t,e,"hex");return r.create=function(r){return new I(t,e,r)},r.update=function(t,e){return r.create(e).update(t)},y(r,g,t,e)}},{name:"cshake",padding:l,bits:d,createMethod:function(t,e){var r=p[t],n=v(t,0,"hex");return n.create=function(n,i,o){return i||o?new I(t,e,n).bytepad([i,o],r):A["shake"+t].create(n)},n.update=function(t,e,r,i){return n.create(e,r,i).update(t)},y(n,v,t,e)}},{name:"kmac",padding:l,bits:d,createMethod:function(t,e){var r=p[t],n=w(t,0,"hex");return n.create=function(n,i,o){return new N(t,e,i).bytepad(["KMAC",o],r).bytepad([n],r)},n.update=function(t,e,r,i){return n.create(t,r,i).update(e)},y(n,w,t,e)}}],A={},k=[],S=0;S<E.length;++S)for(var C=E[S],x=C.bits,_=0;_<x.length;++_){var T=C.name+"_"+x[_];if(k.push(T),A[T]=C.createMethod(x[_],C.padding),"sha3"!==C.name){var P=C.name+x[_];k.push(P),A[P]=A[T]}}function I(t,e,r){this.blocks=[],this.s=[],this.padding=e,this.outputBits=r,this.reset=!0,this.finalized=!1,this.block=0,this.start=0,this.blockCount=1600-(t<<1)>>5,this.byteCount=this.blockCount<<2,this.outputBlocks=r>>5,this.extraBytes=(31&r)>>3;for(var n=0;n<50;++n)this.s[n]=0}function N(t,e,r){I.call(this,t,e,r)}I.prototype.update=function(e){if(this.finalized)throw new Error("finalize already called");var r,n=typeof e;if("string"!==n){if("object"!==n)throw new Error(t);if(null===e)throw new Error(t);if(s&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||s&&ArrayBuffer.isView(e)))throw new Error(t);r=!0}for(var i,o,a=this.blocks,l=this.byteCount,u=e.length,h=this.blockCount,d=0,f=this.s;d<u;){if(this.reset)for(this.reset=!1,a[0]=this.block,i=1;i<h+1;++i)a[i]=0;if(r)for(i=this.start;d<u&&i<l;++d)a[i>>2]|=e[d]<<c[3&i++];else for(i=this.start;d<u&&i<l;++d)(o=e.charCodeAt(d))<128?a[i>>2]|=o<<c[3&i++]:o<2048?(a[i>>2]|=(192|o>>6)<<c[3&i++],a[i>>2]|=(128|63&o)<<c[3&i++]):o<55296||o>=57344?(a[i>>2]|=(224|o>>12)<<c[3&i++],a[i>>2]|=(128|o>>6&63)<<c[3&i++],a[i>>2]|=(128|63&o)<<c[3&i++]):(o=65536+((1023&o)<<10|1023&e.charCodeAt(++d)),a[i>>2]|=(240|o>>18)<<c[3&i++],a[i>>2]|=(128|o>>12&63)<<c[3&i++],a[i>>2]|=(128|o>>6&63)<<c[3&i++],a[i>>2]|=(128|63&o)<<c[3&i++]);if(this.lastByteIndex=i,i>=l){for(this.start=i-l,this.block=a[h],i=0;i<h;++i)f[i]^=a[i];M(f),this.reset=!0}else this.start=i}return this},I.prototype.encode=function(t,e){var r=255&t,n=1,i=[r];for(r=255&(t>>=8);r>0;)i.unshift(r),r=255&(t>>=8),++n;return e?i.push(n):i.unshift(n),this.update(i),i.length},I.prototype.encodeString=function(e){var r,n=typeof e;if("string"!==n){if("object"!==n)throw new Error(t);if(null===e)throw new Error(t);if(s&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||s&&ArrayBuffer.isView(e)))throw new Error(t);r=!0}var i=0,o=e.length;if(r)i=o;else for(var a=0;a<e.length;++a){var l=e.charCodeAt(a);l<128?i+=1:l<2048?i+=2:l<55296||l>=57344?i+=3:(l=65536+((1023&l)<<10|1023&e.charCodeAt(++a)),i+=4)}return i+=this.encode(8*i),this.update(e),i},I.prototype.bytepad=function(t,e){for(var r=this.encode(e),n=0;n<t.length;++n)r+=this.encodeString(t[n]);var i=e-r%e,o=[];return o.length=i,this.update(o),this},I.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,e=this.lastByteIndex,r=this.blockCount,n=this.s;if(t[e>>2]|=this.padding[3&e],this.lastByteIndex===this.byteCount)for(t[0]=t[r],e=1;e<r+1;++e)t[e]=0;for(t[r-1]|=2147483648,e=0;e<r;++e)n[e]^=t[e];M(n)}},I.prototype.toString=I.prototype.hex=function(){this.finalize();for(var t,e=this.blockCount,r=this.s,n=this.outputBlocks,i=this.extraBytes,o=0,s=0,l="";s<n;){for(o=0;o<e&&s<n;++o,++s)t=r[o],l+=a[t>>4&15]+a[15&t]+a[t>>12&15]+a[t>>8&15]+a[t>>20&15]+a[t>>16&15]+a[t>>28&15]+a[t>>24&15];s%e===0&&(M(r),o=0)}return i&&(t=r[o],l+=a[t>>4&15]+a[15&t],i>1&&(l+=a[t>>12&15]+a[t>>8&15]),i>2&&(l+=a[t>>20&15]+a[t>>16&15])),l},I.prototype.arrayBuffer=function(){this.finalize();var t,e=this.blockCount,r=this.s,n=this.outputBlocks,i=this.extraBytes,o=0,s=0,a=this.outputBits>>3;t=i?new ArrayBuffer(n+1<<2):new ArrayBuffer(a);for(var l=new Uint32Array(t);s<n;){for(o=0;o<e&&s<n;++o,++s)l[s]=r[o];s%e===0&&M(r)}return i&&(l[o]=r[o],t=t.slice(0,a)),t},I.prototype.buffer=I.prototype.arrayBuffer,I.prototype.digest=I.prototype.array=function(){this.finalize();for(var t,e,r=this.blockCount,n=this.s,i=this.outputBlocks,o=this.extraBytes,s=0,a=0,l=[];a<i;){for(s=0;s<r&&a<i;++s,++a)t=a<<2,e=n[s],l[t]=255&e,l[t+1]=e>>8&255,l[t+2]=e>>16&255,l[t+3]=e>>24&255;a%r===0&&M(n)}return o&&(t=a<<2,e=n[s],l[t]=255&e,o>1&&(l[t+1]=e>>8&255),o>2&&(l[t+2]=e>>16&255)),l},N.prototype=new I,N.prototype.finalize=function(){return this.encode(this.outputBits,!0),I.prototype.finalize.call(this)};var M=function(t){var e,r,n,i,o,s,a,l,c,h,d,f,p,m,g,v,w,y,b,E,A,k,S,C,x,_,T,P,I,N,M,B,R,F,O,D,U,L,q,z,G,H,j,K,W,V,$,J,Q,Y,X,Z,tt,et,rt,nt,it,ot,st,at,lt,ct,ut;for(n=0;n<48;n+=2)i=t[0]^t[10]^t[20]^t[30]^t[40],o=t[1]^t[11]^t[21]^t[31]^t[41],s=t[2]^t[12]^t[22]^t[32]^t[42],a=t[3]^t[13]^t[23]^t[33]^t[43],l=t[4]^t[14]^t[24]^t[34]^t[44],c=t[5]^t[15]^t[25]^t[35]^t[45],h=t[6]^t[16]^t[26]^t[36]^t[46],d=t[7]^t[17]^t[27]^t[37]^t[47],e=(f=t[8]^t[18]^t[28]^t[38]^t[48])^(s<<1|a>>>31),r=(p=t[9]^t[19]^t[29]^t[39]^t[49])^(a<<1|s>>>31),t[0]^=e,t[1]^=r,t[10]^=e,t[11]^=r,t[20]^=e,t[21]^=r,t[30]^=e,t[31]^=r,t[40]^=e,t[41]^=r,e=i^(l<<1|c>>>31),r=o^(c<<1|l>>>31),t[2]^=e,t[3]^=r,t[12]^=e,t[13]^=r,t[22]^=e,t[23]^=r,t[32]^=e,t[33]^=r,t[42]^=e,t[43]^=r,e=s^(h<<1|d>>>31),r=a^(d<<1|h>>>31),t[4]^=e,t[5]^=r,t[14]^=e,t[15]^=r,t[24]^=e,t[25]^=r,t[34]^=e,t[35]^=r,t[44]^=e,t[45]^=r,e=l^(f<<1|p>>>31),r=c^(p<<1|f>>>31),t[6]^=e,t[7]^=r,t[16]^=e,t[17]^=r,t[26]^=e,t[27]^=r,t[36]^=e,t[37]^=r,t[46]^=e,t[47]^=r,e=h^(i<<1|o>>>31),r=d^(o<<1|i>>>31),t[8]^=e,t[9]^=r,t[18]^=e,t[19]^=r,t[28]^=e,t[29]^=r,t[38]^=e,t[39]^=r,t[48]^=e,t[49]^=r,m=t[0],g=t[1],V=t[11]<<4|t[10]>>>28,$=t[10]<<4|t[11]>>>28,P=t[20]<<3|t[21]>>>29,I=t[21]<<3|t[20]>>>29,at=t[31]<<9|t[30]>>>23,lt=t[30]<<9|t[31]>>>23,H=t[40]<<18|t[41]>>>14,j=t[41]<<18|t[40]>>>14,F=t[2]<<1|t[3]>>>31,O=t[3]<<1|t[2]>>>31,v=t[13]<<12|t[12]>>>20,w=t[12]<<12|t[13]>>>20,J=t[22]<<10|t[23]>>>22,Q=t[23]<<10|t[22]>>>22,N=t[33]<<13|t[32]>>>19,M=t[32]<<13|t[33]>>>19,ct=t[42]<<2|t[43]>>>30,ut=t[43]<<2|t[42]>>>30,et=t[5]<<30|t[4]>>>2,rt=t[4]<<30|t[5]>>>2,D=t[14]<<6|t[15]>>>26,U=t[15]<<6|t[14]>>>26,y=t[25]<<11|t[24]>>>21,b=t[24]<<11|t[25]>>>21,Y=t[34]<<15|t[35]>>>17,X=t[35]<<15|t[34]>>>17,B=t[45]<<29|t[44]>>>3,R=t[44]<<29|t[45]>>>3,C=t[6]<<28|t[7]>>>4,x=t[7]<<28|t[6]>>>4,nt=t[17]<<23|t[16]>>>9,it=t[16]<<23|t[17]>>>9,L=t[26]<<25|t[27]>>>7,q=t[27]<<25|t[26]>>>7,E=t[36]<<21|t[37]>>>11,A=t[37]<<21|t[36]>>>11,Z=t[47]<<24|t[46]>>>8,tt=t[46]<<24|t[47]>>>8,K=t[8]<<27|t[9]>>>5,W=t[9]<<27|t[8]>>>5,_=t[18]<<20|t[19]>>>12,T=t[19]<<20|t[18]>>>12,ot=t[29]<<7|t[28]>>>25,st=t[28]<<7|t[29]>>>25,z=t[38]<<8|t[39]>>>24,G=t[39]<<8|t[38]>>>24,k=t[48]<<14|t[49]>>>18,S=t[49]<<14|t[48]>>>18,t[0]=m^~v&y,t[1]=g^~w&b,t[10]=C^~_&P,t[11]=x^~T&I,t[20]=F^~D&L,t[21]=O^~U&q,t[30]=K^~V&J,t[31]=W^~$&Q,t[40]=et^~nt&ot,t[41]=rt^~it&st,t[2]=v^~y&E,t[3]=w^~b&A,t[12]=_^~P&N,t[13]=T^~I&M,t[22]=D^~L&z,t[23]=U^~q&G,t[32]=V^~J&Y,t[33]=$^~Q&X,t[42]=nt^~ot&at,t[43]=it^~st&lt,t[4]=y^~E&k,t[5]=b^~A&S,t[14]=P^~N&B,t[15]=I^~M&R,t[24]=L^~z&H,t[25]=q^~G&j,t[34]=J^~Y&Z,t[35]=Q^~X&tt,t[44]=ot^~at&ct,t[45]=st^~lt&ut,t[6]=E^~k&m,t[7]=A^~S&g,t[16]=N^~B&C,t[17]=M^~R&x,t[26]=z^~H&F,t[27]=G^~j&O,t[36]=Y^~Z&K,t[37]=X^~tt&W,t[46]=at^~ct&et,t[47]=lt^~ut&rt,t[8]=k^~m&v,t[9]=S^~g&w,t[18]=B^~C&_,t[19]=R^~x&T,t[28]=H^~F&D,t[29]=j^~O&U,t[38]=Z^~K&V,t[39]=tt^~W&$,t[48]=ct^~et&nt,t[49]=ut^~rt&it,t[0]^=u[n],t[1]^=u[n+1]};if(o)Yt.exports=A;else for(S=0;S<k.length;++S)n[k[S]]=A[k[S]]}()),Qt.exports),Zt=r(Xt);function te(t){return"0x"+Zt.keccak_256(k(t))}const ee=new g("rlp/5.8.0");function re(t){const e=[];for(;t;)e.unshift(255&t),t>>=8;return e}function ne(t,e,r){let n=0;for(let i=0;i<r;i++)n=256*n+t[e+i];return n}function ie(t){if(Array.isArray(t)){let e=[];if(t.forEach(function(t){e=e.concat(ie(t))}),e.length<=55)return e.unshift(192+e.length),e;const r=re(e.length);return r.unshift(247+r.length),r.concat(e)}b(t)||ee.throwArgumentError("RLP object must be BytesLike","object",t);const e=Array.prototype.slice.call(k(t));if(1===e.length&&e[0]<=127)return e;if(e.length<=55)return e.unshift(128+e.length),e;const r=re(e.length);return r.unshift(183+r.length),r.concat(e)}function oe(t){return P(ie(t))}function se(t,e,r,n){const i=[];for(;r<e+1+n;){const o=ae(t,r);i.push(o.result),(r+=o.consumed)>e+1+n&&ee.throwError("child data too short",g.errors.BUFFER_OVERRUN,{})}return{consumed:1+n,result:i}}function ae(t,e){if(0===t.length&&ee.throwError("data too short",g.errors.BUFFER_OVERRUN,{}),t[e]>=248){const r=t[e]-247;e+1+r>t.length&&ee.throwError("data short segment too short",g.errors.BUFFER_OVERRUN,{});const n=ne(t,e+1,r);return e+1+r+n>t.length&&ee.throwError("data long segment too short",g.errors.BUFFER_OVERRUN,{}),se(t,e,e+1+r,r+n)}if(t[e]>=192){const r=t[e]-192;return e+1+r>t.length&&ee.throwError("data array too short",g.errors.BUFFER_OVERRUN,{}),se(t,e,e+1,r)}if(t[e]>=184){const r=t[e]-183;e+1+r>t.length&&ee.throwError("data array too short",g.errors.BUFFER_OVERRUN,{});const n=ne(t,e+1,r);e+1+r+n>t.length&&ee.throwError("data array too short",g.errors.BUFFER_OVERRUN,{});return{consumed:1+r+n,result:P(t.slice(e+1+r,e+1+r+n))}}if(t[e]>=128){const r=t[e]-128;e+1+r>t.length&&ee.throwError("data too short",g.errors.BUFFER_OVERRUN,{});return{consumed:1+r,result:P(t.slice(e+1,e+1+r))}}return{consumed:1,result:P(t[e])}}function le(t){const e=k(t),r=ae(e,0);return r.consumed!==e.length&&ee.throwArgumentError("invalid rlp data","data",t),r.result}var ce=Object.freeze({__proto__:null,decode:le,encode:oe});const ue=new g("address/5.8.0");function he(t){_(t,20)||ue.throwArgumentError("invalid address","address",t);const e=(t=t.toLowerCase()).substring(2).split(""),r=new Uint8Array(40);for(let t=0;t<40;t++)r[t]=e[t].charCodeAt(0);const n=k(te(r));for(let t=0;t<40;t+=2)n[t>>1]>>4>=8&&(e[t]=e[t].toUpperCase()),(15&n[t>>1])>=8&&(e[t+1]=e[t+1].toUpperCase());return"0x"+e.join("")}const de={};for(let t=0;t<10;t++)de[String(t)]=String(t);for(let t=0;t<26;t++)de[String.fromCharCode(65+t)]=String(10+t);const fe=Math.floor((pe=9007199254740991,Math.log10?Math.log10(pe):Math.log(pe)/Math.LN10));var pe;function me(t){let e=(t=(t=t.toUpperCase()).substring(4)+t.substring(0,2)+"00").split("").map(t=>de[t]).join("");for(;e.length>=fe;){let t=e.substring(0,fe);e=parseInt(t,10)%97+e.substring(t.length)}let r=String(98-parseInt(e,10)%97);for(;r.length<2;)r="0"+r;return r}function ge(t){let e=null;if("string"!=typeof t&&ue.throwArgumentError("invalid address","address",t),t.match(/^(0x)?[0-9a-fA-F]{40}$/))"0x"!==t.substring(0,2)&&(t="0x"+t),e=he(t),t.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&e!==t&&ue.throwArgumentError("bad address checksum","address",t);else if(t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(t.substring(2,4)!==me(t)&&ue.throwArgumentError("bad icap checksum","address",t),r=t.substring(4),e=new L(r,36).toString(16);e.length<40;)e="0"+e;e=he("0x"+e)}else ue.throwArgumentError("invalid address","address",t);var r;return e}function ve(t){let e=null;try{e=ge(t.from)}catch(e){ue.throwArgumentError("missing from address","transaction",t)}return ge(N(te(oe([e,C(k(j.from(t.nonce).toHexString()))])),12))}class we extends Wt{constructor(t){super("address","address",t,!1)}defaultValue(){return"0x0000000000000000000000000000000000000000"}encode(t,e){try{e=ge(e)}catch(t){this._throwError(t.message,e)}return t.writeValue(e)}decode(t){return ge(F(t.readValue().toHexString(),20))}}class ye extends Wt{constructor(t){super(t.name,t.type,void 0,t.dynamic),this.coder=t}defaultValue(){return this.coder.defaultValue()}encode(t,e){return this.coder.encode(t,e)}decode(t){return this.coder.decode(t)}}const be=new g(bt);function Ee(t,e,r){let n=null;if(Array.isArray(r))n=r;else if(r&&"object"==typeof r){let t={};n=e.map(e=>{const n=e.localName;return n||be.throwError("cannot encode object for signature with missing names",g.errors.INVALID_ARGUMENT,{argument:"values",coder:e,value:r}),t[n]&&be.throwError("cannot encode object for signature with duplicate names",g.errors.INVALID_ARGUMENT,{argument:"values",coder:e,value:r}),t[n]=!0,r[n]})}else be.throwArgumentError("invalid tuple value","tuple",r);e.length!==n.length&&be.throwArgumentError("types/value length mismatch","tuple",r);let i=new Vt(t.wordSize),o=new Vt(t.wordSize),s=[];e.forEach((t,e)=>{let r=n[e];if(t.dynamic){let e=o.length;t.encode(o,r);let n=i.writeUpdatableValue();s.push(t=>{n(t+e)})}else t.encode(i,r)}),s.forEach(t=>{t(i.length)});let a=t.appendWriter(i);return a+=t.appendWriter(o),a}function Ae(t,e){let r=[],n=t.subReader(0);e.forEach(e=>{let i=null;if(e.dynamic){let r=t.readValue(),o=n.subReader(r.toNumber());try{i=e.decode(o)}catch(t){if(t.code===g.errors.BUFFER_OVERRUN)throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}}else try{i=e.decode(t)}catch(t){if(t.code===g.errors.BUFFER_OVERRUN)throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}null!=i&&r.push(i)});const i=e.reduce((t,e)=>{const r=e.localName;return r&&(t[r]||(t[r]=0),t[r]++),t},{});e.forEach((t,e)=>{let n=t.localName;if(!n||1!==i[n])return;if("length"===n&&(n="_length"),null!=r[n])return;const o=r[e];o instanceof Error?Object.defineProperty(r,n,{enumerable:!0,get:()=>{throw o}}):r[n]=o});for(let t=0;t<r.length;t++){const e=r[t];e instanceof Error&&Object.defineProperty(r,t,{enumerable:!0,get:()=>{throw e}})}return Object.freeze(r)}class ke extends Wt{constructor(t,e,r){super("array",t.type+"["+(e>=0?e:"")+"]",r,-1===e||t.dynamic),this.coder=t,this.length=e}defaultValue(){const t=this.coder.defaultValue(),e=[];for(let r=0;r<this.length;r++)e.push(t);return e}encode(t,e){Array.isArray(e)||this._throwError("expected array value",e);let r=this.length;-1===r&&(r=e.length,t.writeValue(e.length)),be.checkArgumentCount(e.length,r,"coder array"+(this.localName?" "+this.localName:""));let n=[];for(let t=0;t<e.length;t++)n.push(this.coder);return Ee(t,n,e)}decode(t){let e=this.length;-1===e&&(e=t.readValue().toNumber(),32*e>t._data.length&&be.throwError("insufficient data length",g.errors.BUFFER_OVERRUN,{length:t._data.length,count:e}));let r=[];for(let t=0;t<e;t++)r.push(new ye(this.coder));return t.coerce(this.name,Ae(t,r))}}class Se extends Wt{constructor(t){super("bool","bool",t,!1)}defaultValue(){return!1}encode(t,e){return t.writeValue(e?1:0)}decode(t){return t.coerce(this.type,!t.readValue().isZero())}}class Ce extends Wt{constructor(t,e){super(t,t,e,!0)}defaultValue(){return"0x"}encode(t,e){e=k(e);let r=t.writeValue(e.length);return r+=t.writeBytes(e),r}decode(t){return t.readBytes(t.readValue().toNumber(),!0)}}class xe extends Ce{constructor(t){super("bytes",t)}decode(t){return t.coerce(this.name,P(super.decode(t)))}}class _e extends Wt{constructor(t,e){let r="bytes"+String(t);super(r,r,e,!1),this.size=t}defaultValue(){return"0x0000000000000000000000000000000000000000000000000000000000000000".substring(0,2+2*this.size)}encode(t,e){let r=k(e);return r.length!==this.size&&this._throwError("incorrect data length",e),t.writeBytes(r)}decode(t){return t.coerce(this.name,P(t.readBytes(this.size)))}}class Te extends Wt{constructor(t){super("null","",t,!1)}defaultValue(){return null}encode(t,e){return null!=e&&this._throwError("not null",e),t.writeBytes([])}decode(t){return t.readBytes(0),t.coerce(this.name,null)}}const Pe="0x0000000000000000000000000000000000000000",Ie=j.from(-1),Ne=j.from(0),Me=j.from(1),Be=j.from(2),Re=j.from("1000000000000000000"),Fe=j.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),Oe=j.from("-0x8000000000000000000000000000000000000000000000000000000000000000"),De=j.from("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),Ue="0x0000000000000000000000000000000000000000000000000000000000000000";var Le=Object.freeze({__proto__:null,AddressZero:Pe,EtherSymbol:"Ξ",HashZero:Ue,MaxInt256:De,MaxUint256:Fe,MinInt256:Oe,NegativeOne:Ie,One:Me,Two:Be,WeiPerEther:Re,Zero:Ne});class qe extends Wt{constructor(t,e,r){const n=(e?"int":"uint")+8*t;super(n,n,r,!1),this.size=t,this.signed=e}defaultValue(){return 0}encode(t,e){let r=j.from(e),n=Fe.mask(8*t.wordSize);if(this.signed){let t=n.mask(8*this.size-1);(r.gt(t)||r.lt(t.add(Me).mul(Ie)))&&this._throwError("value out-of-bounds",e)}else(r.lt(Ne)||r.gt(n.mask(8*this.size)))&&this._throwError("value out-of-bounds",e);return r=r.toTwos(8*this.size).mask(8*this.size),this.signed&&(r=r.fromTwos(8*this.size).toTwos(8*t.wordSize)),t.writeValue(r)}decode(t){let e=t.readValue().mask(8*this.size);return this.signed&&(e=e.fromTwos(8*this.size)),t.coerce(this.name,e)}}const ze=new g("strings/5.8.0");var Ge,He;function je(t,e,r,n,i){if(t===He.BAD_PREFIX||t===He.UNEXPECTED_CONTINUE){let t=0;for(let n=e+1;n<r.length&&r[n]>>6==2;n++)t++;return t}return t===He.OVERRUN?r.length-e-1:0}!function(t){t.current="",t.NFC="NFC",t.NFD="NFD",t.NFKC="NFKC",t.NFKD="NFKD"}(Ge||(Ge={})),function(t){t.UNEXPECTED_CONTINUE="unexpected continuation byte",t.BAD_PREFIX="bad codepoint prefix",t.OVERRUN="string overrun",t.MISSING_CONTINUE="missing continuation byte",t.OUT_OF_RANGE="out of UTF-8 range",t.UTF16_SURROGATE="UTF-16 surrogate",t.OVERLONG="overlong representation"}(He||(He={}));const Ke=Object.freeze({error:function(t,e,r,n,i){return ze.throwArgumentError(`invalid codepoint at offset ${e}; ${t}`,"bytes",r)},ignore:je,replace:function(t,e,r,n,i){return t===He.OVERLONG?(n.push(i),0):(n.push(65533),je(t,e,r))}});function We(t,e){null==e&&(e=Ke.error),t=k(t);const r=[];let n=0;for(;n<t.length;){const i=t[n++];if(!(i>>7)){r.push(i);continue}let o=null,s=null;if(192==(224&i))o=1,s=127;else if(224==(240&i))o=2,s=2047;else{if(240!=(248&i)){n+=e(128==(192&i)?He.UNEXPECTED_CONTINUE:He.BAD_PREFIX,n-1,t,r);continue}o=3,s=65535}if(n-1+o>=t.length){n+=e(He.OVERRUN,n-1,t,r);continue}let a=i&(1<<8-o-1)-1;for(let i=0;i<o;i++){let i=t[n];if(128!=(192&i)){n+=e(He.MISSING_CONTINUE,n,t,r),a=null;break}a=a<<6|63&i,n++}null!==a&&(a>1114111?n+=e(He.OUT_OF_RANGE,n-1-o,t,r,a):a>=55296&&a<=57343?n+=e(He.UTF16_SURROGATE,n-1-o,t,r,a):a<=s?n+=e(He.OVERLONG,n-1-o,t,r,a):r.push(a))}return r}function Ve(t,e=Ge.current){e!=Ge.current&&(ze.checkNormalize(),t=t.normalize(e));let r=[];for(let e=0;e<t.length;e++){const n=t.charCodeAt(e);if(n<128)r.push(n);else if(n<2048)r.push(n>>6|192),r.push(63&n|128);else if(55296==(64512&n)){e++;const i=t.charCodeAt(e);if(e>=t.length||56320!=(64512&i))throw new Error("invalid utf-8 string");const o=65536+((1023&n)<<10)+(1023&i);r.push(o>>18|240),r.push(o>>12&63|128),r.push(o>>6&63|128),r.push(63&o|128)}else r.push(n>>12|224),r.push(n>>6&63|128),r.push(63&n|128)}return k(r)}function $e(t){const e="0000"+t.toString(16);return"\\u"+e.substring(e.length-4)}function Je(t){return t.map(t=>t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10&1023),56320+(1023&t)))).join("")}function Qe(t,e){return Je(We(t,e))}function Ye(t,e=Ge.current){return We(Ve(t,e))}function Xe(t,e){e||(e=function(t){return[parseInt(t,16)]});let r=0,n={};return t.split(",").forEach(t=>{let i=t.split(":");r+=parseInt(i[0],16),n[r]=e(i[1])}),n}function Ze(t){let e=0;return t.split(",").map(t=>{let r=t.split("-");1===r.length?r[1]="0":""===r[1]&&(r[1]="1");let n=e+parseInt(r[0],16);return e=parseInt(r[1],16),{l:n,h:e}})}function tr(t,e){let r=0;for(let n=0;n<e.length;n++){let i=e[n];if(r+=i.l,t>=r&&t<=r+i.h&&(t-r)%(i.d||1)===0){if(i.e&&-1!==i.e.indexOf(t-r))continue;return i}}return null}const er=Ze("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),rr="ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map(t=>parseInt(t,16)),nr=[{h:25,s:32,l:65},{h:30,s:32,e:[23],l:127},{h:54,s:1,e:[48],l:64,d:2},{h:14,s:1,l:57,d:2},{h:44,s:1,l:17,d:2},{h:10,s:1,e:[2,6,8],l:61,d:2},{h:16,s:1,l:68,d:2},{h:84,s:1,e:[18,24,66],l:19,d:2},{h:26,s:32,e:[17],l:435},{h:22,s:1,l:71,d:2},{h:15,s:80,l:40},{h:31,s:32,l:16},{h:32,s:1,l:80,d:2},{h:52,s:1,l:42,d:2},{h:12,s:1,l:55,d:2},{h:40,s:1,e:[38],l:15,d:2},{h:14,s:1,l:48,d:2},{h:37,s:48,l:49},{h:148,s:1,l:6351,d:2},{h:88,s:1,l:160,d:2},{h:15,s:16,l:704},{h:25,s:26,l:854},{h:25,s:32,l:55915},{h:37,s:40,l:1247},{h:25,s:-119711,l:53248},{h:25,s:-119763,l:52},{h:25,s:-119815,l:52},{h:25,s:-119867,e:[1,4,5,7,8,11,12,17],l:52},{h:25,s:-119919,l:52},{h:24,s:-119971,e:[2,7,8,17],l:52},{h:24,s:-120023,e:[2,7,13,15,16,17],l:52},{h:25,s:-120075,l:52},{h:25,s:-120127,l:52},{h:25,s:-120179,l:52},{h:25,s:-120231,l:52},{h:25,s:-120283,l:52},{h:25,s:-120335,l:52},{h:24,s:-119543,e:[17],l:56},{h:24,s:-119601,e:[17],l:58},{h:24,s:-119659,e:[17],l:58},{h:24,s:-119717,e:[17],l:58},{h:24,s:-119775,e:[17],l:58}],ir=Xe("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),or=Xe("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),sr=Xe("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",function(t){if(t.length%4!=0)throw new Error("bad data");let e=[];for(let r=0;r<t.length;r+=4)e.push(parseInt(t.substring(r,r+4),16));return e}),ar=Ze("80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001");class lr extends Ce{constructor(t){super("string",t)}defaultValue(){return""}encode(t,e){return super.encode(t,Ve(e))}decode(t){return Qe(super.decode(t))}}class cr extends Wt{constructor(t,e){let r=!1;const n=[];t.forEach(t=>{t.dynamic&&(r=!0),n.push(t.type)});super("tuple","tuple("+n.join(",")+")",e,r),this.coders=t}defaultValue(){const t=[];this.coders.forEach(e=>{t.push(e.defaultValue())});const e=this.coders.reduce((t,e)=>{const r=e.localName;return r&&(t[r]||(t[r]=0),t[r]++),t},{});return this.coders.forEach((r,n)=>{let i=r.localName;i&&1===e[i]&&("length"===i&&(i="_length"),null==t[i]&&(t[i]=t[n]))}),Object.freeze(t)}encode(t,e){return Ee(t,this.coders,e)}decode(t){return t.coerce(this.name,Ae(t,this.coders))}}const ur=new g(bt),hr=new RegExp(/^bytes([0-9]*)$/),dr=new RegExp(/^(u?int)([0-9]*)$/);class fr{constructor(t){ut(this,"coerceFunc",t||null)}_getCoder(t){switch(t.baseType){case"address":return new we(t.name);case"bool":return new Se(t.name);case"string":return new lr(t.name);case"bytes":return new xe(t.name);case"array":return new ke(this._getCoder(t.arrayChildren),t.arrayLength,t.name);case"tuple":return new cr((t.components||[]).map(t=>this._getCoder(t)),t.name);case"":return new Te(t.name)}let e=t.type.match(dr);if(e){let r=parseInt(e[2]||"256");return(0===r||r>256||r%8!=0)&&ur.throwArgumentError("invalid "+e[1]+" bit length","param",t),new qe(r/8,"int"===e[1],t.name)}if(e=t.type.match(hr),e){let r=parseInt(e[1]);return(0===r||r>32)&&ur.throwArgumentError("invalid bytes length","param",t),new _e(r,t.name)}return ur.throwArgumentError("invalid type","type",t.type)}_getWordSize(){return 32}_getReader(t,e){return new $t(t,this._getWordSize(),this.coerceFunc,e)}_getWriter(){return new Vt(this._getWordSize())}getDefaultValue(t){const e=t.map(t=>this._getCoder(Pt.from(t)));return new cr(e,"_").defaultValue()}encode(t,e){t.length!==e.length&&ur.throwError("types/values length mismatch",g.errors.INVALID_ARGUMENT,{count:{types:t.length,values:e.length},value:{types:t,values:e}});const r=t.map(t=>this._getCoder(Pt.from(t))),n=new cr(r,"_"),i=this._getWriter();return n.encode(i,e),i.data}decode(t,e,r){const n=t.map(t=>this._getCoder(Pt.from(t)));return new cr(n,"_").decode(this._getReader(k(e),r))}}const pr=new fr;function mr(t){return te(Ve(t))}const gr="hash/5.8.0";function vr(t){t=atob(t);const e=[];for(let r=0;r<t.length;r++)e.push(t.charCodeAt(r));return k(e)}function wr(t){t=k(t);let e="";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return btoa(e)}var yr=Object.freeze({__proto__:null,decode:vr,encode:wr});function br(t,e){null==e&&(e=1);const r=[],n=r.forEach,i=function(t,e){n.call(t,function(t){e>0&&Array.isArray(t)?i(t,e-1):r.push(t)})};return i(t,e),r}function Er(t){return function(t){let e=0;return()=>t[e++]}(function(t){let e=0;function r(){return t[e++]<<8|t[e++]}let n=r(),i=1,o=[0,1];for(let t=1;t<n;t++)o.push(i+=r());let s=r(),a=e;e+=s;let l=0,c=0;function u(){return 0==l&&(c=c<<8|t[e++],l=8),c>>--l&1}const h=Math.pow(2,31),d=h>>>1,f=d>>1,p=h-1;let m=0;for(let t=0;t<31;t++)m=m<<1|u();let g=[],v=0,w=h;for(;;){let t=Math.floor(((m-v+1)*i-1)/w),e=0,r=n;for(;r-e>1;){let n=e+r>>>1;t<o[n]?r=n:e=n}if(0==e)break;g.push(e);let s=v+Math.floor(w*o[e]/i),a=v+Math.floor(w*o[e+1]/i)-1;for(;0==((s^a)&d);)m=m<<1&p|u(),s=s<<1&p,a=a<<1&p|1;for(;s&~a&f;)m=m&d|m<<1&p>>>1|u(),s=s<<1^d,a=(a^d)<<1|d|1;v=s,w=1+a-s}let y=n-4;return g.map(e=>{switch(e-y){case 3:return y+65792+(t[a++]<<16|t[a++]<<8|t[a++]);case 2:return y+256+(t[a++]<<8|t[a++]);case 1:return y+t[a++];default:return e-1}})}(t))}function Ar(t){return 1&t?~t>>1:t>>1}function kr(t,e){let r=Array(t);for(let n=0,i=-1;n<t;n++)r[n]=i+=1+e();return r}function Sr(t,e){let r=Array(t);for(let n=0,i=0;n<t;n++)r[n]=i+=Ar(e());return r}function Cr(t,e){let r=kr(t(),t),n=t(),i=kr(n,t),o=function(t,e){let r=Array(t);for(let n=0;n<t;n++)r[n]=1+e();return r}(n,t);for(let t=0;t<n;t++)for(let e=0;e<o[t];e++)r.push(i[t]+e);return e?r.map(t=>e[t]):r}function xr(t,e,r){let n=Array(t).fill(void 0).map(()=>[]);for(let i=0;i<e;i++)Sr(t,r).forEach((t,e)=>n[e].push(t));return n}function _r(t,e){let r=1+e(),n=e(),i=function(t){let e=[];for(;;){let r=t();if(0==r)break;e.push(r)}return e}(e);return br(xr(i.length,1+t,e).map((t,e)=>{const o=t[0],s=t.slice(1);return Array(i[e]).fill(void 0).map((t,e)=>{let i=e*n;return[o+e*r,s.map(t=>t+i)]})}))}function Tr(t,e){return xr(1+e(),1+t,e).map(t=>[t[0],t.slice(1)])}const Pr=Er(vr("AEQF2AO2DEsA2wIrAGsBRABxAN8AZwCcAEwAqgA0AGwAUgByADcATAAVAFYAIQAyACEAKAAYAFgAGwAjABQAMAAmADIAFAAfABQAKwATACoADgAbAA8AHQAYABoAGQAxADgALAAoADwAEwA9ABMAGgARAA4ADwAWABMAFgAIAA8AHgQXBYMA5BHJAS8JtAYoAe4AExozi0UAH21tAaMnBT8CrnIyhrMDhRgDygIBUAEHcoFHUPe8AXBjAewCjgDQR8IICIcEcQLwATXCDgzvHwBmBoHNAqsBdBcUAykgDhAMShskMgo8AY8jqAQfAUAfHw8BDw87MioGlCIPBwZCa4ELatMAAMspJVgsDl8AIhckSg8XAHdvTwBcIQEiDT4OPhUqbyECAEoAS34Aej8Ybx83JgT/Xw8gHxZ/7w8RICxPHA9vBw+Pfw8PHwAPFv+fAsAvCc8vEr8ivwD/EQ8Bol8OEBa/A78hrwAPCU8vESNvvwWfHwNfAVoDHr+ZAAED34YaAdJPAK7PLwSEgDLHAGo1Pz8Pvx9fUwMrpb8O/58VTzAPIBoXIyQJNF8hpwIVAT8YGAUADDNBaX3RAMomJCg9EhUeA29MABsZBTMNJipjOhc19gcIDR8bBwQHEggCWi6DIgLuAQYA+BAFCha3A5XiAEsqM7UFFgFLhAMjFTMYE1Klnw74nRVBG/ASCm0BYRN/BrsU3VoWy+S0vV8LQx+vN8gF2AC2AK5EAWwApgYDKmAAroQ0NDQ0AT+OCg7wAAIHRAbpNgVcBV0APTA5BfbPFgMLzcYL/QqqA82eBALKCjQCjqYCht0/k2+OAsXQAoP3ASTKDgDw6ACKAUYCMpIKJpRaAE4A5womABzZvs0REEKiACIQAd5QdAECAj4Ywg/wGqY2AVgAYADYvAoCGAEubA0gvAY2ALAAbpbvqpyEAGAEpgQAJgAG7gAgAEACmghUFwCqAMpAINQIwC4DthRAAPcycKgApoIdABwBfCisABoATwBqASIAvhnSBP8aH/ECeAKXAq40NjgDBTwFYQU6AXs3oABgAD4XNgmcCY1eCl5tIFZeUqGgyoNHABgAEQAaABNwWQAmABMATPMa3T34ADldyprmM1M2XociUQgLzvwAXT3xABgAEQAaABNwIGFAnADD8AAgAD4BBJWzaCcIAIEBFMAWwKoAAdq9BWAF5wLQpALEtQAKUSGkahR4GnJM+gsAwCgeFAiUAECQ0BQuL8AAIAAAADKeIheclvFqQAAETr4iAMxIARMgAMIoHhQIAn0E0pDQFC4HhznoAAAAIAI2C0/4lvFqQAAETgBJJwYCAy4ABgYAFAA8MBKYEH4eRhTkAjYeFcgACAYAeABsOqyQ5gRwDayqugEgaIIAtgoACgDmEABmBAWGme5OBJJA2m4cDeoAmITWAXwrMgOgAGwBCh6CBXYF1Tzg1wKAAFdiuABRAFwAXQBsAG8AdgBrAHYAbwCEAHEwfxQBVE5TEQADVFhTBwBDANILAqcCzgLTApQCrQL6vAAMAL8APLhNBKkE6glGKTAU4Dr4N2EYEwBCkABKk8rHAbYBmwIoAiU4Ajf/Aq4CowCAANIChzgaNBsCsTgeODcFXrgClQKdAqQBiQGYAqsCsjTsNHsfNPA0ixsAWTWiOAMFPDQSNCk2BDZHNow2TTZUNhk28Jk9VzI3QkEoAoICoQKwAqcAQAAxBV4FXbS9BW47YkIXP1ciUqs05DS/FwABUwJW11e6nHuYZmSh/RAYA8oMKvZ8KASoUAJYWAJ6ILAsAZSoqjpgA0ocBIhmDgDWAAawRDQoAAcuAj5iAHABZiR2AIgiHgCaAU68ACxuHAG0ygM8MiZIAlgBdF4GagJqAPZOHAMuBgoATkYAsABiAHgAMLoGDPj0HpKEBAAOJgAuALggTAHWAeAMEDbd20Uege0ADwAWADkAQgA9OHd+2MUQZBBhBgNNDkxxPxUQArEPqwvqERoM1irQ090ANK4H8ANYB/ADWANYB/AH8ANYB/ADWANYA1gDWBwP8B/YxRBkD00EcgWTBZAE2wiIJk4RhgctCNdUEnQjHEwDSgEBIypJITuYMxAlR0wRTQgIATZHbKx9PQNMMbBU+pCnA9AyVDlxBgMedhKlAC8PeCE1uk6DekxxpQpQT7NX9wBFBgASqwAS5gBJDSgAUCwGPQBI4zTYABNGAE2bAE3KAExdGABKaAbgAFBXAFCOAFBJABI2SWdObALDOq0//QomCZhvwHdTBkIQHCemEPgMNAG2ATwN7kvZBPIGPATKH34ZGg/OlZ0Ipi3eDO4m5C6igFsj9iqEBe5L9TzeC05RaQ9aC2YJ5DpkgU8DIgEOIowK3g06CG4Q9ArKbA3mEUYHOgPWSZsApgcCCxIdNhW2JhFirQsKOXgG/Br3C5AmsBMqev0F1BoiBk4BKhsAANAu6IWxWjJcHU9gBgQLJiPIFKlQIQ0mQLh4SRocBxYlqgKSQ3FKiFE3HpQh9zw+DWcuFFF9B/Y8BhlQC4I8n0asRQ8R0z6OPUkiSkwtBDaALDAnjAnQD4YMunxzAVoJIgmyDHITMhEYN8YIOgcaLpclJxYIIkaWYJsE+KAD9BPSAwwFQAlCBxQDthwuEy8VKgUOgSXYAvQ21i60ApBWgQEYBcwPJh/gEFFH4Q7qCJwCZgOEJewALhUiABginAhEZABgj9lTBi7MCMhqbSN1A2gU6GIRdAeSDlgHqBw0FcAc4nDJXgyGCSiksAlcAXYJmgFgBOQICjVcjKEgQmdUi1kYnCBiQUBd/QIyDGYVoES+h3kCjA9sEhwBNgF0BzoNAgJ4Ee4RbBCWCOyGBTW2M/k6JgRQIYQgEgooA1BszwsoJvoM+WoBpBJjAw00PnfvZ6xgtyUX/gcaMsZBYSHyC5NPzgydGsIYQ1QvGeUHwAP0GvQn60FYBgADpAQUOk4z7wS+C2oIjAlAAEoOpBgH2BhrCnKM0QEyjAG4mgNYkoQCcJAGOAcMAGgMiAV65gAeAqgIpAAGANADWAA6Aq4HngAaAIZCAT4DKDABIuYCkAOUCDLMAZYwAfQqBBzEDBYA+DhuSwLDsgKAa2ajBd5ZAo8CSjYBTiYEBk9IUgOwcuIA3ABMBhTgSAEWrEvMG+REAeBwLADIAPwABjYHBkIBzgH0bgC4AWALMgmjtLYBTuoqAIQAFmwB2AKKAN4ANgCA8gFUAE4FWvoF1AJQSgESMhksWGIBvAMgATQBDgB6BsyOpsoIIARuB9QCEBwV4gLvLwe2AgMi4BPOQsYCvd9WADIXUu5eZwqoCqdeaAC0YTQHMnM9UQAPH6k+yAdy/BZIiQImSwBQ5gBQQzSaNTFWSTYBpwGqKQK38AFtqwBI/wK37gK3rQK3sAK6280C0gK33AK3zxAAUEIAUD9SklKDArekArw5AEQAzAHCO147WTteO1k7XjtZO147WTteO1kDmChYI03AVU0oJqkKbV9GYewMpw3VRMk6ShPcYFJgMxPJLbgUwhXPJVcZPhq9JwYl5VUKDwUt1GYxCC00dhe9AEApaYNCY4ceMQpMHOhTklT5LRwAskujM7ANrRsWREEFSHXuYisWDwojAmSCAmJDXE6wXDchAqH4AmiZAmYKAp+FOBwMAmY8AmYnBG8EgAN/FAN+kzkHOXgYOYM6JCQCbB4CMjc4CwJtyAJtr/CLADRoRiwBaADfAOIASwYHmQyOAP8MwwAOtgJ3MAJ2o0ACeUxEAni7Hl3cRa9G9AJ8QAJ6yQJ9CgJ88UgBSH5kJQAsFklZSlwWGErNAtECAtDNSygDiFADh+dExpEzAvKiXQQDA69Lz0wuJgTQTU1NsAKLQAKK2cIcCB5EaAa4Ao44Ao5dQZiCAo7aAo5deVG1UzYLUtVUhgKT/AKTDQDqAB1VH1WwVdEHLBwplocy4nhnRTw6ApegAu+zWCKpAFomApaQApZ9nQCqWa1aCoJOADwClrYClk9cRVzSApnMApllXMtdCBoCnJw5wzqeApwXAp+cAp65iwAeEDIrEAKd8gKekwC2PmE1YfACntQCoG8BqgKeoCACnk+mY8lkKCYsAiewAiZ/AqD8AqBN2AKmMAKlzwKoAAB+AqfzaH1osgAESmodatICrOQCrK8CrWgCrQMCVx4CVd0CseLYAx9PbJgCsr4OArLpGGzhbWRtSWADJc4Ctl08QG6RAylGArhfArlIFgK5K3hwN3DiAr0aAy2zAzISAr6JcgMDM3ICvhtzI3NQAsPMAsMFc4N0TDZGdOEDPKgDPJsDPcACxX0CxkgCxhGKAshqUgLIRQLJUALJLwJkngLd03h6YniveSZL0QMYpGcDAmH1GfSVJXsMXpNevBICz2wCz20wTFTT9BSgAMeuAs90ASrrA04TfkwGAtwoAtuLAtJQA1JdA1NgAQIDVY2AikABzBfuYUZ2AILPg44C2sgC2d+EEYRKpz0DhqYAMANkD4ZyWvoAVgLfZgLeuXR4AuIw7RUB8zEoAfScAfLTiALr9ALpcXoAAur6AurlAPpIAboC7ooC652Wq5cEAu5AA4XhmHpw4XGiAvMEAGoDjheZlAL3FAORbwOSiAL3mQL52gL4Z5odmqy8OJsfA52EAv77ARwAOp8dn7QDBY4DpmsDptoA0sYDBmuhiaIGCgMMSgFgASACtgNGAJwEgLpoBgC8BGzAEowcggCEDC6kdjoAJAM0C5IKRoABZCgiAIzw3AYBLACkfng9ogigkgNmWAN6AEQCvrkEVqTGAwCsBRbAA+4iQkMCHR072jI2PTbUNsk2RjY5NvA23TZKNiU3EDcZN5I+RTxDRTBCJkK5VBYKFhZfwQCWygU3AJBRHpu+OytgNxa61A40GMsYjsn7BVwFXQVcBV0FaAVdBVwFXQVcBV0FXAVdBVwFXUsaCNyKAK4AAQUHBwKU7oICoW1e7jAEzgPxA+YDwgCkBFDAwADABKzAAOxFLhitA1UFTDeyPkM+bj51QkRCuwTQWWQ8X+0AWBYzsACNA8xwzAGm7EZ/QisoCTAbLDs6fnLfb8H2GccsbgFw13M1HAVkBW/Jxsm9CNRO8E8FDD0FBQw9FkcClOYCoMFegpDfADgcMiA2AJQACB8AsigKAIzIEAJKeBIApY5yPZQIAKQiHb4fvj5BKSRPQrZCOz0oXyxgOywfKAnGbgMClQaCAkILXgdeCD9IIGUgQj5fPoY+dT52Ao5CM0dAX9BTVG9SDzFwWTQAbxBzJF/lOEIQQglCCkKJIAls5AcClQICoKPMODEFxhi6KSAbiyfIRrMjtCgdWCAkPlFBIitCsEJRzAbMAV/OEyQzDg0OAQQEJ36i328/Mk9AybDJsQlq3tDRApUKAkFzXf1d/j9uALYP6hCoFgCTGD8kPsFKQiobrm0+zj0KSD8kPnVCRBwMDyJRTHFgMTJa5rwXQiQ2YfI/JD7BMEJEHGINTw4TOFlIRzwJO0icMQpyPyQ+wzJCRBv6DVgnKB01NgUKj2bwYzMqCoBkznBgEF+zYDIocwRIX+NgHj4HICNfh2C4CwdwFWpTG/lgUhYGAwRfv2Ts8mAaXzVgml/XYIJfuWC4HI1gUF9pYJZgMR6ilQHMAOwLAlDRefC0in4AXAEJA6PjCwc0IamOANMMCAECRQDFNRTZBgd+CwQlRA+r6+gLBDEFBnwUBXgKATIArwAGRAAHA3cDdAN2A3kDdwN9A3oDdQN7A30DfAN4A3oDfQAYEAAlAtYASwMAUAFsAHcKAHcAmgB3AHUAdQB2AHVu8UgAygDAAHcAdQB1AHYAdQALCgB3AAsAmgB3AAsCOwB3AAtu8UgAygDAAHgKAJoAdwB3AHUAdQB2AHUAeAB1AHUAdgB1bvFIAMoAwAALCgCaAHcACwB3AAsCOwB3AAtu8UgAygDAAH4ACwGgALcBpwC6AahdAu0COwLtbvFIAMoAwAALCgCaAu0ACwLtAAsCOwLtAAtu8UgAygDAA24ACwNvAAu0VsQAAzsAABCkjUIpAAsAUIusOggWcgMeBxVsGwL67U/2HlzmWOEeOgALASvuAAseAfpKUpnpGgYJDCIZM6YyARUE9ThqAD5iXQgnAJYJPnOzw0ZAEZxEKsIAkA4DhAHnTAIDxxUDK0lxCQlPYgIvIQVYJQBVqE1GakUAKGYiDToSBA1EtAYAXQJYAIF8GgMHRyAAIAjOe9YncekRAA0KACUrjwE7Ayc6AAYWAqaiKG4McEcqANoN3+Mg9TwCBhIkuCny+JwUQ29L008JluRxu3K+oAdqiHOqFH0AG5SUIfUJ5SxCGfxdipRzqTmT4V5Zb+r1Uo4Vm+NqSSEl2mNvR2JhIa8SpYO6ntdwFXHCWTCK8f2+Hxo7uiG3drDycAuKIMP5bhi06ACnqArH1rz4Rqg//lm6SgJGEVbF9xJHISaR6HxqxSnkw6shDnelHKNEfGUXSJRJ1GcsmtJw25xrZMDK9gXSm1/YMkdX4/6NKYOdtk/NQ3/NnDASjTc3fPjIjW/5sVfVObX2oTDWkr1dF9f3kxBsD3/3aQO8hPfRz+e0uEiJqt1161griu7gz8hDDwtpy+F+BWtefnKHZPAxcZoWbnznhJpy0e842j36bcNzGnIEusgGX0a8ZxsnjcSsPDZ09yZ36fCQbriHeQ72JRMILNl6ePPf2HWoVwgWAm1fb3V2sAY0+B6rAXqSwPBgseVmoqsBTSrm91+XasMYYySI8eeRxH3ZvHkMz3BQ5aJ3iUVbYPNM3/7emRtjlsMgv/9VyTsyt/mK+8fgWeT6SoFaclXqn42dAIsvAarF5vNNWHzKSkKQ/8Hfk5ZWK7r9yliOsooyBjRhfkHP4Q2DkWXQi6FG/9r/IwbmkV5T7JSopHKn1pJwm9tb5Ot0oyN1Z2mPpKXHTxx2nlK08fKk1hEYA8WgVVWL5lgx0iTv+KdojJeU23ZDjmiubXOxVXJKKi2Wjuh2HLZOFLiSC7Tls5SMh4f+Pj6xUSrNjFqLGehRNB8lC0QSLNmkJJx/wSG3MnjE9T1CkPwJI0wH2lfzwETIiVqUxg0dfu5q39Gt+hwdcxkhhNvQ4TyrBceof3Mhs/IxFci1HmHr4FMZgXEEczPiGCx0HRwzAqDq2j9AVm1kwN0mRVLWLylgtoPNapF5cY4Y1wJh/e0BBwZj44YgZrDNqvD/9Hv7GFYdUQeDJuQ3EWI4HaKqavU1XjC/n41kT4L79kqGq0kLhdTZvgP3TA3fS0ozVz+5piZsoOtIvBUFoMKbNcmBL6YxxaUAusHB38XrS8dQMnQwJfUUkpRoGr5AUeWicvBTzyK9g77+yCkf5PAysL7r/JjcZgrbvRpMW9iyaxZvKO6ceZN2EwIxKwVFPuvFuiEPGCoagbMo+SpydLrXqBzNCDGFCrO/rkcwa2xhokQZ5CdZ0AsU3JfSqJ6n5I14YA+P/uAgfhPU84Tlw7cEFfp7AEE8ey4sP12PTt4Cods1GRgDOB5xvyiR5m+Bx8O5nBCNctU8BevfV5A08x6RHd5jcwPTMDSZJOedIZ1cGQ704lxbAzqZOP05ZxaOghzSdvFBHYqomATARyAADK4elP8Ly3IrUZKfWh23Xy20uBUmLS4Pfagu9+oyVa2iPgqRP3F2CTUsvJ7+RYnN8fFZbU/HVvxvcFFDKkiTqV5UBZ3Gz54JAKByi9hkKMZJvuGgcSYXFmw08UyoQyVdfTD1/dMkCHXcTGAKeROgArsvmRrQTLUOXioOHGK2QkjHuoYFgXciZoTJd6Fs5q1QX1G+p/e26hYsEf7QZD1nnIyl/SFkNtYYmmBhpBrxl9WbY0YpHWRuw2Ll/tj9mD8P4snVzJl4F9J+1arVeTb9E5r2ILH04qStjxQNwn3m4YNqxmaNbLAqW2TN6LidwuJRqS+NXbtqxoeDXpxeGWmxzSkWxjkyCkX4NQRme6q5SAcC+M7+9ETfA/EwrzQajKakCwYyeunP6ZFlxU2oMEn1Pz31zeStW74G406ZJFCl1wAXIoUKkWotYEpOuXB1uVNxJ63dpJEqfxBeptwIHNrPz8BllZoIcBoXwgfJ+8VAUnVPvRvexnw0Ma/WiGYuJO5y8QTvEYBigFmhUxY5RqzE8OcywN/8m4UYrlaniJO75XQ6KSo9+tWHlu+hMi0UVdiKQp7NelnoZUzNaIyBPVeOwK6GNp+FfHuPOoyhaWuNvTYFkvxscMQWDh+zeFCFkgwbXftiV23ywJ4+uwRqmg9k3KzwIQpzppt8DBBOMbrqwQM5Gb05sEwdKzMiAqOloaA/lr0KA+1pr0/+HiWoiIjHA/wir2nIuS3PeU/ji3O6ZwoxcR1SZ9FhtLC5S0FIzFhbBWcGVP/KpxOPSiUoAdWUpqKH++6Scz507iCcxYI6rdMBICPJZea7OcmeFw5mObJSiqpjg2UoWNIs+cFhyDSt6geV5qgi3FunmwwDoGSMgerFOZGX1m0dMCYo5XOruxO063dwENK9DbnVM9wYFREzh4vyU1WYYJ/LRRp6oxgjqP/X5a8/4Af6p6NWkQferzBmXme0zY/4nwMJm/wd1tIqSwGz+E3xPEAOoZlJit3XddD7/BT1pllzOx+8bmQtANQ/S6fZexc6qi3W+Q2xcmXTUhuS5mpHQRvcxZUN0S5+PL9lXWUAaRZhEH8hTdAcuNMMCuVNKTEGtSUKNi3O6KhSaTzck8csZ2vWRZ+d7mW8c4IKwXIYd25S/zIftPkwPzufjEvOHWVD1m+FjpDVUTV0DGDuHj6QnaEwLu/dEgdLQOg9E1Sro9XHJ8ykLAwtPu+pxqKDuFexqON1sKQm7rwbE1E68UCfA/erovrTCG+DBSNg0l4goDQvZN6uNlbyLpcZAwj2UclycvLpIZMgv4yRlpb3YuMftozorbcGVHt/VeDV3+Fdf1TP0iuaCsPi2G4XeGhsyF1ubVDxkoJhmniQ0/jSg/eYML9KLfnCFgISWkp91eauR3IQvED0nAPXK+6hPCYs+n3+hCZbiskmVMG2da+0EsZPonUeIY8EbfusQXjsK/eFDaosbPjEfQS0RKG7yj5GG69M7MeO1HmiUYocgygJHL6M1qzUDDwUSmr99V7Sdr2F3JjQAJY+F0yH33Iv3+C9M38eML7gTgmNu/r2bUMiPvpYbZ6v1/IaESirBHNa7mPKn4dEmYg7v/+HQgPN1G79jBQ1+soydfDC2r+h2Bl/KIc5KjMK7OH6nb1jLsNf0EHVe2KBiE51ox636uyG6Lho0t3J34L5QY/ilE3mikaF4HKXG1mG1rCevT1Vv6GavltxoQe/bMrpZvRggnBxSEPEeEzkEdOxTnPXHVjUYdw8JYvjB/o7Eegc3Ma+NUxLLnsK0kJlinPmUHzHGtrk5+CAbVzFOBqpyy3QVUnzTDfC/0XD94/okH+OB+i7g9lolhWIjSnfIb+Eq43ZXOWmwvjyV/qqD+t0e+7mTEM74qP/Ozt8nmC7mRpyu63OB4KnUzFc074SqoyPUAgM+/TJGFo6T44EHnQU4X4z6qannVqgw/U7zCpwcmXV1AubIrvOmkKHazJAR55ePjp5tLBsN8vAqs3NAHdcEHOR2xQ0lsNAFzSUuxFQCFYvXLZJdOj9p4fNq6p0HBGUik2YzaI4xySy91KzhQ0+q1hjxvImRwPRf76tChlRkhRCi74NXZ9qUNeIwP+s5p+3m5nwPdNOHgSLD79n7O9m1n1uDHiMntq4nkYwV5OZ1ENbXxFd4PgrlvavZsyUO4MqYlqqn1O8W/I1dEZq5dXhrbETLaZIbC2Kj/Aa/QM+fqUOHdf0tXAQ1huZ3cmWECWSXy/43j35+Mvq9xws7JKseriZ1pEWKc8qlzNrGPUGcVgOa9cPJYIJsGnJTAUsEcDOEVULO5x0rXBijc1lgXEzQQKhROf8zIV82w8eswc78YX11KYLWQRcgHNJElBxfXr72lS2RBSl07qTKorO2uUDZr3sFhYsvnhLZn0A94KRzJ/7DEGIAhW5ZWFpL8gEwu1aLA9MuWZzNwl8Oze9Y+bX+v9gywRVnoB5I/8kXTXU3141yRLYrIOOz6SOnyHNy4SieqzkBXharjfjqq1q6tklaEbA8Qfm2DaIPs7OTq/nvJBjKfO2H9bH2cCMh1+5gspfycu8f/cuuRmtDjyqZ7uCIMyjdV3a+p3fqmXsRx4C8lujezIFHnQiVTXLXuI1XrwN3+siYYj2HHTvESUx8DlOTXpak9qFRK+L3mgJ1WsD7F4cu1aJoFoYQnu+wGDMOjJM3kiBQWHCcvhJ/HRdxodOQp45YZaOTA22Nb4XKCVxqkbwMYFhzYQYIAnCW8FW14uf98jhUG2zrKhQQ0q0CEq0t5nXyvUyvR8DvD69LU+g3i+HFWQMQ8PqZuHD+sNKAV0+M6EJC0szq7rEr7B5bQ8BcNHzvDMc9eqB5ZCQdTf80Obn4uzjwpYU7SISdtV0QGa9D3Wrh2BDQtpBKxaNFV+/Cy2P/Sv+8s7Ud0Fd74X4+o/TNztWgETUapy+majNQ68Lq3ee0ZO48VEbTZYiH1Co4OlfWef82RWeyUXo7woM03PyapGfikTnQinoNq5z5veLpeMV3HCAMTaZmA1oGLAn7XS3XYsz+XK7VMQsc4XKrmDXOLU/pSXVNUq8dIqTba///3x6LiLS6xs1xuCAYSfcQ3+rQgmu7uvf3THKt5Ooo97TqcbRqxx7EASizaQCBQllG/rYxVapMLgtLbZS64w1MDBMXX+PQpBKNwqUKOf2DDRDUXQf9EhOS0Qj4nTmlA8dzSLz/G1d+Ud8MTy/6ghhdiLpeerGY/UlDOfiuqFsMUU5/UYlP+BAmgRLuNpvrUaLlVkrqDievNVEAwF+4CoM1MZTmjxjJMsKJq+u8Zd7tNCUFy6LiyYXRJQ4VyvEQFFaCGKsxIwQkk7EzZ6LTJq2hUuPhvAW+gQnSG6J+MszC+7QCRHcnqDdyNRJ6T9xyS87A6MDutbzKGvGktpbXqtzWtXb9HsfK2cBMomjN9a4y+TaJLnXxAeX/HWzmf4cR4vALt/P4w4qgKY04ml4ZdLOinFYS6cup3G/1ie4+t1eOnpBNlqGqs75ilzkT4+DsZQxNvaSKJ//6zIbbk/M7LOhFmRc/1R+kBtz7JFGdZm/COotIdvQoXpTqP/1uqEUmCb/QWoGLMwO5ANcHzxdY48IGP5+J+zKOTBFZ4Pid+GTM+Wq12MV/H86xEJptBa6T+p3kgpwLedManBHC2GgNrFpoN2xnrMz9WFWX/8/ygSBkavq2Uv7FdCsLEYLu9LLIvAU0bNRDtzYl+/vXmjpIvuJFYjmI0im6QEYqnIeMsNjXG4vIutIGHijeAG/9EDBozKV5cldkHbLxHh25vT+ZEzbhXlqvpzKJwcEgfNwLAKFeo0/pvEE10XDB+EXRTXtSzJozQKFFAJhMxYkVaCW+E9AL7tMeU8acxidHqzb6lX4691UsDpy/LLRmT+epgW56+5Cw8tB4kMUv6s9lh3eRKbyGs+H/4mQMaYzPTf2OOdokEn+zzgvoD3FqNKk8QqGAXVsqcGdXrT62fSPkR2vROFi68A6se86UxRUk4cajfPyCC4G5wDhD+zNq4jodQ4u4n/m37Lr36n4LIAAsVr02dFi9AiwA81MYs2rm4eDlDNmdMRvEKRHfBwW5DdMNp0jPFZMeARqF/wL4XBfd+EMLBfMzpH5GH6NaW+1vrvMdg+VxDzatk3MXgO3ro3P/DpcC6+Mo4MySJhKJhSR01SGGGp5hPWmrrUgrv3lDnP+HhcI3nt3YqBoVAVTBAQT5iuhTg8nvPtd8ZeYj6w1x6RqGUBrSku7+N1+BaasZvjTk64RoIDlL8brpEcJx3OmY7jLoZsswdtmhfC/G21llXhITOwmvRDDeTTPbyASOa16cF5/A1fZAidJpqju3wYAy9avPR1ya6eNp9K8XYrrtuxlqi+bDKwlfrYdR0RRiKRVTLOH85+ZY7XSmzRpfZBJjaTa81VDcJHpZnZnSQLASGYW9l51ZV/h7eVzTi3Hv6hUsgc/51AqJRTkpbFVLXXszoBL8nBX0u/0jBLT8nH+fJePbrwURT58OY+UieRjd1vs04w0VG5VN2U6MoGZkQzKN/ptz0Q366dxoTGmj7i1NQGHi9GgnquXFYdrCfZBmeb7s0T6yrdlZH5cZuwHFyIJ/kAtGsTg0xH5taAAq44BAk1CPk9KVVbqQzrCUiFdF/6gtlPQ8bHHc1G1W92MXGZ5HEHftyLYs8mbD/9xYRUWkHmlM0zC2ilJlnNgV4bfALpQghxOUoZL7VTqtCHIaQSXm+YUMnpkXybnV+A6xlm2CVy8fn0Xlm2XRa0+zzOa21JWWmixfiPMSCZ7qA4rS93VN3pkpF1s5TonQjisHf7iU9ZGvUPOAKZcR1pbeVf/Ul7OhepGCaId9wOtqo7pJ7yLcBZ0pFkOF28y4zEI/kcUNmutBHaQpBdNM8vjCS6HZRokkeo88TBAjGyG7SR+6vUgTcyK9Imalj0kuxz0wmK+byQU11AiJFk/ya5dNduRClcnU64yGu/ieWSeOos1t3ep+RPIWQ2pyTYVbZltTbsb7NiwSi3AV+8KLWk7LxCnfZUetEM8ThnsSoGH38/nyAwFguJp8FjvlHtcWZuU4hPva0rHfr0UhOOJ/F6vS62FW7KzkmRll2HEc7oUq4fyi5T70Vl7YVIfsPHUCdHesf9Lk7WNVWO75JDkYbMI8TOW8JKVtLY9d6UJRITO8oKo0xS+o99Yy04iniGHAaGj88kEWgwv0OrHdY/nr76DOGNS59hXCGXzTKUvDl9iKpLSWYN1lxIeyywdNpTkhay74w2jFT6NS8qkjo5CxA1yfSYwp6AJIZNKIeEK5PJAW7ORgWgwp0VgzYpqovMrWxbu+DGZ6Lhie1RAqpzm8VUzKJOH3mCzWuTOLsN3VT/dv2eeYe9UjbR8YTBsLz7q60VN1sU51k+um1f8JxD5pPhbhSC8rRaB454tmh6YUWrJI3+GWY0qeWioj/tbkYITOkJaeuGt4JrJvHA+l0Gu7kY7XOaa05alMnRWVCXqFgLIwSY4uF59Ue5SU4QKuc/HamDxbr0x6csCetXGoP7Qn1Bk/J9DsynO/UD6iZ1Hyrz+jit0hDCwi/E9OjgKTbB3ZQKQ/0ZOvevfNHG0NK4Aj3Cp7NpRk07RT1i/S0EL93Ag8GRgKI9CfpajKyK6+Jj/PI1KO5/85VAwz2AwzP8FTBb075IxCXv6T9RVvWT2tUaqxDS92zrGUbWzUYk9mSs82pECH+fkqsDt93VW++4YsR/dHCYcQSYTO/KaBMDj9LSD/J/+z20Kq8XvZUAIHtm9hRPP3ItbuAu2Hm5lkPs92pd7kCxgRs0xOVBnZ13ccdA0aunrwv9SdqElJRC3g+oCu+nXyCgmXUs9yMjTMAIHfxZV+aPKcZeUBWt057Xo85Ks1Ir5gzEHCWqZEhrLZMuF11ziGtFQUds/EESajhagzcKsxamcSZxGth4UII+adPhQkUnx2WyN+4YWR+r3f8MnkyGFuR4zjzxJS8WsQYR5PTyRaD9ixa6Mh741nBHbzfjXHskGDq179xaRNrCIB1z1xRfWfjqw2pHc1zk9xlPpL8sQWAIuETZZhbnmL54rceXVNRvUiKrrqIkeogsl0XXb17ylNb0f4GA9Wd44vffEG8FSZGHEL2fbaTGRcSiCeA8PmA/f6Hz8HCS76fXUHwgwkzSwlI71ekZ7Fapmlk/KC+Hs8hUcw3N2LN5LhkVYyizYFl/uPeVP5lsoJHhhfWvvSWruCUW1ZcJOeuTbrDgywJ/qG07gZJplnTvLcYdNaH0KMYOYMGX+rB4NGPFmQsNaIwlWrfCezxre8zXBrsMT+edVLbLqN1BqB76JH4BvZTqUIMfGwPGEn+EnmTV86fPBaYbFL3DFEhjB45CewkXEAtJxk4/Ms2pPXnaRqdky0HOYdcUcE2zcXq4vaIvW2/v0nHFJH2XXe22ueDmq/18XGtELSq85j9X8q0tcNSSKJIX8FTuJF/Pf8j5PhqG2u+osvsLxYrvvfeVJL+4tkcXcr9JV7v0ERmj/X6fM3NC4j6dS1+9Umr2oPavqiAydTZPLMNRGY23LO9zAVDly7jD+70G5TPPLdhRIl4WxcYjLnM+SNcJ26FOrkrISUtPObIz5Zb3AG612krnpy15RMW+1cQjlnWFI6538qky9axd2oJmHIHP08KyP0ubGO+TQNOYuv2uh17yCIvR8VcStw7o1g0NM60sk+8Tq7YfIBJrtp53GkvzXH7OA0p8/n/u1satf/VJhtR1l8Wa6Gmaug7haSpaCaYQax6ta0mkutlb+eAOSG1aobM81D9A4iS1RRlzBBoVX6tU1S6WE2N9ORY6DfeLRC4l9Rvr5h95XDWB2mR1d4WFudpsgVYwiTwT31ljskD8ZyDOlm5DkGh9N/UB/0AI5Xvb8ZBmai2hQ4BWMqFwYnzxwB26YHSOv9WgY3JXnvoN+2R4rqGVh/LLDMtpFP+SpMGJNWvbIl5SOodbCczW2RKleksPoUeGEzrjtKHVdtZA+kfqO+rVx/iclCqwoopepvJpSTDjT+b9GWylGRF8EDbGlw6eUzmJM95Ovoz+kwLX3c2fTjFeYEsE7vUZm3mqdGJuKh2w9/QGSaqRHs99aScGOdDqkFcACoqdbBoQqqjamhH6Q9ng39JCg3lrGJwd50Qk9ovnqBTr8MME7Ps2wiVfygUmPoUBJJfJWX5Nda0nuncbFkA==")),Ir=new Set(Cr(Pr)),Nr=new Set(Cr(Pr)),Mr=function(t){let e=[];for(;;){let r=t();if(0==r)break;e.push(_r(r,t))}for(;;){let r=t()-1;if(r<0)break;e.push(Tr(r,t))}return function(t){const e={};for(let r=0;r<t.length;r++){const n=t[r];e[n[0]]=n[1]}return e}(br(e))}(Pr),Br=function(t){let e=Cr(t).sort((t,e)=>t-e);return function r(){let n=[];for(;;){let i=Cr(t,e);if(0==i.length)break;n.push({set:new Set(i),node:r()})}n.sort((t,e)=>e.set.size-t.set.size);let i=t(),o=i%3;i=i/3|0;let s=!!(1&i);return i>>=1,{branches:n,valid:o,fe0f:s,save:1==i,check:2==i}}()}(Pr);function Rr(t){return Ye(t)}function Fr(t){return t.filter(t=>65039!=t)}function Or(t){for(let e of t.split(".")){let t=Rr(e);try{for(let e=t.lastIndexOf(95)-1;e>=0;e--)if(95!==t[e])throw new Error("underscore only allowed at start");if(t.length>=4&&t.every(t=>t<128)&&45===t[2]&&45===t[3])throw new Error("invalid label extension")}catch(t){throw new Error(`Invalid label "${e}": ${t.message}`)}}return t}function Dr(t){return Or(function(t,e){let r=Rr(t).reverse(),n=[];for(;r.length;){let t=Ur(r);if(t){n.push(...e(t));continue}let i=r.pop();if(Ir.has(i)){n.push(i);continue}if(Nr.has(i))continue;let o=Mr[i];if(!o)throw new Error(`Disallowed codepoint: 0x${i.toString(16).toUpperCase()}`);n.push(...o)}return Or((i=String.fromCodePoint(...n),i.normalize("NFC")));var i}(t,Fr))}function Ur(t,e){var r;let n,i,o=Br,s=[],a=t.length;for(;a;){let e=t[--a];if(o=null===(r=o.branches.find(t=>t.set.has(e)))||void 0===r?void 0:r.node,!o)break;if(o.save)i=e;else if(o.check&&e===i)break;s.push(e),o.fe0f&&(s.push(65039),a>0&&65039==t[a-1]&&a--),o.valid&&(n=s.slice(),2==o.valid&&n.splice(1,1),t.length=a)}return n}const Lr=new g(gr),qr=new Uint8Array(32);function zr(t){if(0===t.length)throw new Error("invalid ENS name; empty component");return t}function Gr(t){const e=Ve(Dr(t)),r=[];if(0===t.length)return r;let n=0;for(let t=0;t<e.length;t++){46===e[t]&&(r.push(zr(e.slice(n,t))),n=t+1)}if(n>=e.length)throw new Error("invalid ENS name; empty component");return r.push(zr(e.slice(n))),r}function Hr(t){"string"!=typeof t&&Lr.throwArgumentError("invalid ENS name; not a string","name",t);let e=qr;const r=Gr(t);for(;r.length;)e=te(S([e,te(r.pop())]));return P(e)}function jr(t){return P(S(Gr(t).map(t=>{if(t.length>63)throw new Error("invalid DNS encoded entry; length exceeds 63 bytes");const e=new Uint8Array(t.length+1);return e.set(t,1),e[0]=e.length-1,e})))+"00"}qr.fill(0);function Kr(t){return"string"==typeof t&&(t=Ve(t)),te(S([Ve("Ethereum Signed Message:\n"),Ve(String(t.length)),t]))}var Wr=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const Vr=new g(gr),$r=new Uint8Array(32);$r.fill(0);const Jr=j.from(-1),Qr=j.from(0),Yr=j.from(1),Xr=j.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");const Zr=F(Yr.toHexString(),32),tn=F(Qr.toHexString(),32),en={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"},rn=["name","version","chainId","verifyingContract","salt"];function nn(t){return function(e){return"string"!=typeof e&&Vr.throwArgumentError(`invalid domain value for ${JSON.stringify(t)}`,`domain.${t}`,e),e}}const on={name:nn("name"),version:nn("version"),chainId:function(t){try{return j.from(t).toString()}catch(t){}return Vr.throwArgumentError('invalid domain value for "chainId"',"domain.chainId",t)},verifyingContract:function(t){try{return ge(t).toLowerCase()}catch(t){}return Vr.throwArgumentError('invalid domain value "verifyingContract"',"domain.verifyingContract",t)},salt:function(t){try{const e=k(t);if(32!==e.length)throw new Error("bad length");return P(e)}catch(t){}return Vr.throwArgumentError('invalid domain value "salt"',"domain.salt",t)}};function sn(t){{const e=t.match(/^(u?)int(\d*)$/);if(e){const r=""===e[1],n=parseInt(e[2]||"256");(n%8!=0||n>256||e[2]&&e[2]!==String(n))&&Vr.throwArgumentError("invalid numeric width","type",t);const i=Xr.mask(r?n-1:n),o=r?i.add(Yr).mul(Jr):Qr;return function(e){const r=j.from(e);return(r.lt(o)||r.gt(i))&&Vr.throwArgumentError(`value out-of-bounds for ${t}`,"value",e),F(r.toTwos(256).toHexString(),32)}}}{const e=t.match(/^bytes(\d+)$/);if(e){const r=parseInt(e[1]);return(0===r||r>32||e[1]!==String(r))&&Vr.throwArgumentError("invalid bytes width","type",t),function(e){return k(e).length!==r&&Vr.throwArgumentError(`invalid length for ${t}`,"value",e),function(t){const e=k(t),r=e.length%32;return r?M([e,$r.slice(r)]):P(e)}(e)}}}switch(t){case"address":return function(t){return F(ge(t),32)};case"bool":return function(t){return t?Zr:tn};case"bytes":return function(t){return te(t)};case"string":return function(t){return mr(t)}}return null}function an(t,e){return`${t}(${e.map(({name:t,type:e})=>e+" "+t).join(",")})`}class ln{constructor(t){ut(this,"types",Object.freeze(wt(t))),ut(this,"_encoderCache",{}),ut(this,"_types",{});const e={},r={},n={};Object.keys(t).forEach(t=>{e[t]={},r[t]=[],n[t]={}});for(const n in t){const i={};t[n].forEach(o=>{i[o.name]&&Vr.throwArgumentError(`duplicate variable name ${JSON.stringify(o.name)} in ${JSON.stringify(n)}`,"types",t),i[o.name]=!0;const s=o.type.match(/^([^\x5b]*)(\x5b|$)/)[1];s===n&&Vr.throwArgumentError(`circular type reference to ${JSON.stringify(s)}`,"types",t);sn(s)||(r[s]||Vr.throwArgumentError(`unknown type ${JSON.stringify(s)}`,"types",t),r[s].push(n),e[n][s]=!0)})}const i=Object.keys(r).filter(t=>0===r[t].length);0===i.length?Vr.throwArgumentError("missing primary type","types",t):i.length>1&&Vr.throwArgumentError(`ambiguous primary types or unused types: ${i.map(t=>JSON.stringify(t)).join(", ")}`,"types",t),ut(this,"primaryType",i[0]),function i(o,s){s[o]&&Vr.throwArgumentError(`circular type reference to ${JSON.stringify(o)}`,"types",t),s[o]=!0,Object.keys(e[o]).forEach(t=>{r[t]&&(i(t,s),Object.keys(s).forEach(e=>{n[e][t]=!0}))}),delete s[o]}(this.primaryType,{});for(const e in n){const r=Object.keys(n[e]);r.sort(),this._types[e]=an(e,t[e])+r.map(e=>an(e,t[e])).join("")}}getEncoder(t){let e=this._encoderCache[t];return e||(e=this._encoderCache[t]=this._getEncoder(t)),e}_getEncoder(t){{const e=sn(t);if(e)return e}const e=t.match(/^(.*)(\x5b(\d*)\x5d)$/);if(e){const t=e[1],r=this.getEncoder(t),n=parseInt(e[3]);return e=>{n>=0&&e.length!==n&&Vr.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",e);let i=e.map(r);return this._types[t]&&(i=i.map(te)),te(M(i))}}const r=this.types[t];if(r){const e=mr(this._types[t]);return t=>{const n=r.map(({name:e,type:r})=>{const n=this.getEncoder(r)(t[e]);return this._types[r]?te(n):n});return n.unshift(e),M(n)}}return Vr.throwArgumentError(`unknown type: ${t}`,"type",t)}encodeType(t){const e=this._types[t];return e||Vr.throwArgumentError(`unknown type: ${JSON.stringify(t)}`,"name",t),e}encodeData(t,e){return this.getEncoder(t)(e)}hashStruct(t,e){return te(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(sn(t))return r(t,e);const n=t.match(/^(.*)(\x5b(\d*)\x5d)$/);if(n){const t=n[1],i=parseInt(n[3]);return i>=0&&e.length!==i&&Vr.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",e),e.map(e=>this._visit(t,e,r))}const i=this.types[t];return i?i.reduce((t,{name:n,type:i})=>(t[n]=this._visit(i,e[n],r),t),{}):Vr.throwArgumentError(`unknown type: ${t}`,"type",t)}visit(t,e){return this._visit(this.primaryType,t,e)}static from(t){return new ln(t)}static getPrimaryType(t){return ln.from(t).primaryType}static hashStruct(t,e,r){return ln.from(e).hashStruct(t,r)}static hashDomain(t){const e=[];for(const r in t){const n=en[r];n||Vr.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(r)}`,"domain",t),e.push({name:r,type:n})}return e.sort((t,e)=>rn.indexOf(t.name)-rn.indexOf(e.name)),ln.hashStruct("EIP712Domain",{EIP712Domain:e},t)}static encode(t,e,r){return M(["0x1901",ln.hashDomain(t),ln.from(e).hash(r)])}static hash(t,e,r){return te(ln.encode(t,e,r))}static resolveNames(t,e,r,n){return Wr(this,void 0,void 0,function*(){t=pt(t);const i={};t.verifyingContract&&!_(t.verifyingContract,20)&&(i[t.verifyingContract]="0x");const o=ln.from(e);o.visit(r,(t,e)=>("address"!==t||_(e,20)||(i[e]="0x"),e));for(const t in i)i[t]=yield n(t);return t.verifyingContract&&i[t.verifyingContract]&&(t.verifyingContract=i[t.verifyingContract]),r=o.visit(r,(t,e)=>"address"===t&&i[e]?i[e]:e),{domain:t,value:r}})}static getPayload(t,e,r){ln.hashDomain(t);const n={},i=[];rn.forEach(e=>{const r=t[e];null!=r&&(n[e]=on[e](r),i.push({name:e,type:en[e]}))});const o=ln.from(e),s=pt(e);return s.EIP712Domain?Vr.throwArgumentError("types must not contain EIP712Domain type","types.EIP712Domain",e):s.EIP712Domain=i,o.encode(r),{types:s,domain:n,primaryType:o.primaryType,message:o.visit(r,(t,e)=>{if(t.match(/^bytes(\d*)/))return P(k(e));if(t.match(/^u?int/))return j.from(e).toString();switch(t){case"address":return e.toLowerCase();case"bool":return!!e;case"string":return"string"!=typeof e&&Vr.throwArgumentError("invalid string","value",e),e}return Vr.throwArgumentError("unsupported type","type",t)})}}}const cn=new g(bt);class un extends yt{}class hn extends yt{}class dn extends yt{}class fn extends yt{static isIndexed(t){return!(!t||!t._isIndexed)}}const pn={"0x08c379a0":{signature:"Error(string)",name:"Error",inputs:["string"],reason:!0},"0x4e487b71":{signature:"Panic(uint256)",name:"Panic",inputs:["uint256"]}};function mn(t,e){const r=new Error(`deferred error during ABI decoding triggered accessing ${t}`);return r.error=e,r}class gn{constructor(t){let e=[];e="string"==typeof t?JSON.parse(t):t,ut(this,"fragments",e.map(t=>Nt.from(t)).filter(t=>null!=t)),ut(this,"_abiCoder",ht(new.target,"getAbiCoder")()),ut(this,"functions",{}),ut(this,"errors",{}),ut(this,"events",{}),ut(this,"structs",{}),this.fragments.forEach(t=>{let e=null;switch(t.type){case"constructor":return this.deploy?void cn.warn("duplicate definition - constructor"):void ut(this,"deploy",t);case"function":e=this.functions;break;case"event":e=this.events;break;case"error":e=this.errors;break;default:return}let r=t.format();e[r]?cn.warn("duplicate definition - "+r):e[r]=t}),this.deploy||ut(this,"deploy",Ot.from({payable:!1,type:"constructor"})),ut(this,"_isInterface",!0)}format(t){t||(t=_t.full),t===_t.sighash&&cn.throwArgumentError("interface does not support formatting sighash","format",t);const e=this.fragments.map(e=>e.format(t));return t===_t.json?JSON.stringify(e.map(t=>JSON.parse(t))):e}static getAbiCoder(){return pr}static getAddress(t){return ge(t)}static getSighash(t){return N(mr(t.format()),0,4)}static getEventTopic(t){return mr(t.format())}getFunction(t){if(_(t)){for(const e in this.functions)if(t===this.getSighash(e))return this.functions[e];cn.throwArgumentError("no matching function","sighash",t)}if(-1===t.indexOf("(")){const e=t.trim(),r=Object.keys(this.functions).filter(t=>t.split("(")[0]===e);return 0===r.length?cn.throwArgumentError("no matching function","name",e):r.length>1&&cn.throwArgumentError("multiple matching functions","name",e),this.functions[r[0]]}const e=this.functions[Dt.fromString(t).format()];return e||cn.throwArgumentError("no matching function","signature",t),e}getEvent(t){if(_(t)){const e=t.toLowerCase();for(const t in this.events)if(e===this.getEventTopic(t))return this.events[t];cn.throwArgumentError("no matching event","topichash",e)}if(-1===t.indexOf("(")){const e=t.trim(),r=Object.keys(this.events).filter(t=>t.split("(")[0]===e);return 0===r.length?cn.throwArgumentError("no matching event","name",e):r.length>1&&cn.throwArgumentError("multiple matching events","name",e),this.events[r[0]]}const e=this.events[Mt.fromString(t).format()];return e||cn.throwArgumentError("no matching event","signature",t),e}getError(t){if(_(t)){const e=ht(this.constructor,"getSighash");for(const r in this.errors){if(t===e(this.errors[r]))return this.errors[r]}cn.throwArgumentError("no matching error","sighash",t)}if(-1===t.indexOf("(")){const e=t.trim(),r=Object.keys(this.errors).filter(t=>t.split("(")[0]===e);return 0===r.length?cn.throwArgumentError("no matching error","name",e):r.length>1&&cn.throwArgumentError("multiple matching errors","name",e),this.errors[r[0]]}const e=this.errors[Dt.fromString(t).format()];return e||cn.throwArgumentError("no matching error","signature",t),e}getSighash(t){if("string"==typeof t)try{t=this.getFunction(t)}catch(e){try{t=this.getError(t)}catch(t){throw e}}return ht(this.constructor,"getSighash")(t)}getEventTopic(t){return"string"==typeof t&&(t=this.getEvent(t)),ht(this.constructor,"getEventTopic")(t)}_decodeParams(t,e){return this._abiCoder.decode(t,e)}_encodeParams(t,e){return this._abiCoder.encode(t,e)}encodeDeploy(t){return this._encodeParams(this.deploy.inputs,t||[])}decodeErrorResult(t,e){"string"==typeof t&&(t=this.getError(t));const r=k(e);return P(r.slice(0,4))!==this.getSighash(t)&&cn.throwArgumentError(`data signature does not match error ${t.name}.`,"data",P(r)),this._decodeParams(t.inputs,r.slice(4))}encodeErrorResult(t,e){return"string"==typeof t&&(t=this.getError(t)),P(S([this.getSighash(t),this._encodeParams(t.inputs,e||[])]))}decodeFunctionData(t,e){"string"==typeof t&&(t=this.getFunction(t));const r=k(e);return P(r.slice(0,4))!==this.getSighash(t)&&cn.throwArgumentError(`data signature does not match function ${t.name}.`,"data",P(r)),this._decodeParams(t.inputs,r.slice(4))}encodeFunctionData(t,e){return"string"==typeof t&&(t=this.getFunction(t)),P(S([this.getSighash(t),this._encodeParams(t.inputs,e||[])]))}decodeFunctionResult(t,e){"string"==typeof t&&(t=this.getFunction(t));let r=k(e),n=null,i="",o=null,s=null,a=null;switch(r.length%this._abiCoder._getWordSize()){case 0:try{return this._abiCoder.decode(t.outputs,r)}catch(t){}break;case 4:{const t=P(r.slice(0,4)),e=pn[t];if(e)o=this._abiCoder.decode(e.inputs,r.slice(4)),s=e.name,a=e.signature,e.reason&&(n=o[0]),"Error"===s?i=`; VM Exception while processing transaction: reverted with reason string ${JSON.stringify(o[0])}`:"Panic"===s&&(i=`; VM Exception while processing transaction: reverted with panic code ${o[0]}`);else try{const e=this.getError(t);o=this._abiCoder.decode(e.inputs,r.slice(4)),s=e.name,a=e.format()}catch(t){}break}}return cn.throwError("call revert exception"+i,g.errors.CALL_EXCEPTION,{method:t.format(),data:P(e),errorArgs:o,errorName:s,errorSignature:a,reason:n})}encodeFunctionResult(t,e){return"string"==typeof t&&(t=this.getFunction(t)),P(this._abiCoder.encode(t.outputs,e||[]))}encodeFilterTopics(t,e){"string"==typeof t&&(t=this.getEvent(t)),e.length>t.inputs.length&&cn.throwError("too many arguments for "+t.format(),g.errors.UNEXPECTED_ARGUMENT,{argument:"values",value:e});let r=[];t.anonymous||r.push(this.getEventTopic(t));const n=(t,e)=>"string"===t.type?mr(e):"bytes"===t.type?te(P(e)):("bool"===t.type&&"boolean"==typeof e&&(e=e?"0x01":"0x00"),t.type.match(/^u?int/)&&(e=j.from(e).toHexString()),"address"===t.type&&this._abiCoder.encode(["address"],[e]),F(P(e),32));for(e.forEach((e,i)=>{let o=t.inputs[i];o.indexed?null==e?r.push(null):"array"===o.baseType||"tuple"===o.baseType?cn.throwArgumentError("filtering with tuples or arrays not supported","contract."+o.name,e):Array.isArray(e)?r.push(e.map(t=>n(o,t))):r.push(n(o,e)):null!=e&&cn.throwArgumentError("cannot filter non-indexed parameters; must be null","contract."+o.name,e)});r.length&&null===r[r.length-1];)r.pop();return r}encodeEventLog(t,e){"string"==typeof t&&(t=this.getEvent(t));const r=[],n=[],i=[];return t.anonymous||r.push(this.getEventTopic(t)),e.length!==t.inputs.length&&cn.throwArgumentError("event arguments/values mismatch","values",e),t.inputs.forEach((t,o)=>{const s=e[o];if(t.indexed)if("string"===t.type)r.push(mr(s));else if("bytes"===t.type)r.push(te(s));else{if("tuple"===t.baseType||"array"===t.baseType)throw new Error("not implemented");r.push(this._abiCoder.encode([t.type],[s]))}else n.push(t),i.push(s)}),{data:this._abiCoder.encode(n,i),topics:r}}decodeEventLog(t,e,r){if("string"==typeof t&&(t=this.getEvent(t)),null!=r&&!t.anonymous){let e=this.getEventTopic(t);_(r[0],32)&&r[0].toLowerCase()===e||cn.throwError("fragment/topic mismatch",g.errors.INVALID_ARGUMENT,{argument:"topics[0]",expected:e,value:r[0]}),r=r.slice(1)}let n=[],i=[],o=[];t.inputs.forEach((t,e)=>{t.indexed?"string"===t.type||"bytes"===t.type||"tuple"===t.baseType||"array"===t.baseType?(n.push(Pt.fromObject({type:"bytes32",name:t.name})),o.push(!0)):(n.push(t),o.push(!1)):(i.push(t),o.push(!1))});let s=null!=r?this._abiCoder.decode(n,S(r)):null,a=this._abiCoder.decode(i,e,!0),l=[],c=0,u=0;t.inputs.forEach((t,e)=>{if(t.indexed)if(null==s)l[e]=new fn({_isIndexed:!0,hash:null});else if(o[e])l[e]=new fn({_isIndexed:!0,hash:s[u++]});else try{l[e]=s[u++]}catch(t){l[e]=t}else try{l[e]=a[c++]}catch(t){l[e]=t}if(t.name&&null==l[t.name]){const r=l[e];r instanceof Error?Object.defineProperty(l,t.name,{enumerable:!0,get:()=>{throw mn(`property ${JSON.stringify(t.name)}`,r)}}):l[t.name]=r}});for(let t=0;t<l.length;t++){const e=l[t];e instanceof Error&&Object.defineProperty(l,t,{enumerable:!0,get:()=>{throw mn(`index ${t}`,e)}})}return Object.freeze(l)}parseTransaction(t){let e=this.getFunction(t.data.substring(0,10).toLowerCase());return e?new hn({args:this._abiCoder.decode(e.inputs,"0x"+t.data.substring(10)),functionFragment:e,name:e.name,signature:e.format(),sighash:this.getSighash(e),value:j.from(t.value||"0")}):null}parseLog(t){let e=this.getEvent(t.topics[0]);return!e||e.anonymous?null:new un({eventFragment:e,name:e.name,signature:e.format(),topic:this.getEventTopic(e),args:this.decodeEventLog(e,t.data,t.topics)})}parseError(t){const e=P(t);let r=this.getError(e.substring(0,10).toLowerCase());return r?new dn({args:this._abiCoder.decode(r.inputs,"0x"+e.substring(10)),errorFragment:r,name:r.name,signature:r.format(),sighash:this.getSighash(r)}):null}static isInterface(t){return!(!t||!t._isInterface)}}var vn=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const wn=new g("abstract-provider/5.8.0");class yn extends yt{static isForkEvent(t){return!(!t||!t._isForkEvent)}}class bn{constructor(){wn.checkAbstract(new.target,bn),ut(this,"_isProvider",!0)}getFeeData(){return vn(this,void 0,void 0,function*(){const{block:t,gasPrice:e}=yield dt({block:this.getBlock("latest"),gasPrice:this.getGasPrice().catch(t=>null)});let r=null,n=null,i=null;return t&&t.baseFeePerGas&&(r=t.baseFeePerGas,i=j.from("1500000000"),n=t.baseFeePerGas.mul(2).add(i)),{lastBaseFeePerGas:r,maxFeePerGas:n,maxPriorityFeePerGas:i,gasPrice:e}})}addListener(t,e){return this.on(t,e)}removeListener(t,e){return this.off(t,e)}static isProvider(t){return!(!t||!t._isProvider)}}var En=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const An=new g("abstract-signer/5.8.0"),kn=["accessList","ccipReadEnabled","chainId","customData","data","from","gasLimit","gasPrice","maxFeePerGas","maxPriorityFeePerGas","nonce","to","type","value"],Sn=[g.errors.INSUFFICIENT_FUNDS,g.errors.NONCE_EXPIRED,g.errors.REPLACEMENT_UNDERPRICED];class Cn{constructor(){An.checkAbstract(new.target,Cn),ut(this,"_isSigner",!0)}getBalance(t){return En(this,void 0,void 0,function*(){return this._checkProvider("getBalance"),yield this.provider.getBalance(this.getAddress(),t)})}getTransactionCount(t){return En(this,void 0,void 0,function*(){return this._checkProvider("getTransactionCount"),yield this.provider.getTransactionCount(this.getAddress(),t)})}estimateGas(t){return En(this,void 0,void 0,function*(){this._checkProvider("estimateGas");const e=yield dt(this.checkTransaction(t));return yield this.provider.estimateGas(e)})}call(t,e){return En(this,void 0,void 0,function*(){this._checkProvider("call");const r=yield dt(this.checkTransaction(t));return yield this.provider.call(r,e)})}sendTransaction(t){return En(this,void 0,void 0,function*(){this._checkProvider("sendTransaction");const e=yield this.populateTransaction(t),r=yield this.signTransaction(e);return yield this.provider.sendTransaction(r)})}getChainId(){return En(this,void 0,void 0,function*(){this._checkProvider("getChainId");return(yield this.provider.getNetwork()).chainId})}getGasPrice(){return En(this,void 0,void 0,function*(){return this._checkProvider("getGasPrice"),yield this.provider.getGasPrice()})}getFeeData(){return En(this,void 0,void 0,function*(){return this._checkProvider("getFeeData"),yield this.provider.getFeeData()})}resolveName(t){return En(this,void 0,void 0,function*(){return this._checkProvider("resolveName"),yield this.provider.resolveName(t)})}checkTransaction(t){for(const e in t)-1===kn.indexOf(e)&&An.throwArgumentError("invalid transaction key: "+e,"transaction",t);const e=pt(t);return null==e.from?e.from=this.getAddress():e.from=Promise.all([Promise.resolve(e.from),this.getAddress()]).then(e=>(e[0].toLowerCase()!==e[1].toLowerCase()&&An.throwArgumentError("from address mismatch","transaction",t),e[0])),e}populateTransaction(t){return En(this,void 0,void 0,function*(){const e=yield dt(this.checkTransaction(t));null!=e.to&&(e.to=Promise.resolve(e.to).then(t=>En(this,void 0,void 0,function*(){if(null==t)return null;const e=yield this.resolveName(t);return null==e&&An.throwArgumentError("provided ENS name resolves to null","tx.to",t),e})),e.to.catch(t=>{}));const r=null!=e.maxFeePerGas||null!=e.maxPriorityFeePerGas;if(null==e.gasPrice||2!==e.type&&!r?0!==e.type&&1!==e.type||!r||An.throwArgumentError("pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas","transaction",t):An.throwArgumentError("eip-1559 transaction do not support gasPrice","transaction",t),2!==e.type&&null!=e.type||null==e.maxFeePerGas||null==e.maxPriorityFeePerGas)if(0===e.type||1===e.type)null==e.gasPrice&&(e.gasPrice=this.getGasPrice());else{const t=yield this.getFeeData();if(null==e.type)if(null!=t.maxFeePerGas&&null!=t.maxPriorityFeePerGas)if(e.type=2,null!=e.gasPrice){const t=e.gasPrice;delete e.gasPrice,e.maxFeePerGas=t,e.maxPriorityFeePerGas=t}else null==e.maxFeePerGas&&(e.maxFeePerGas=t.maxFeePerGas),null==e.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=t.maxPriorityFeePerGas);else null!=t.gasPrice?(r&&An.throwError("network does not support EIP-1559",g.errors.UNSUPPORTED_OPERATION,{operation:"populateTransaction"}),null==e.gasPrice&&(e.gasPrice=t.gasPrice),e.type=0):An.throwError("failed to get consistent fee data",g.errors.UNSUPPORTED_OPERATION,{operation:"signer.getFeeData"});else 2===e.type&&(null==e.maxFeePerGas&&(e.maxFeePerGas=t.maxFeePerGas),null==e.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=t.maxPriorityFeePerGas))}else e.type=2;return null==e.nonce&&(e.nonce=this.getTransactionCount("pending")),null==e.gasLimit&&(e.gasLimit=this.estimateGas(e).catch(t=>{if(Sn.indexOf(t.code)>=0)throw t;return An.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",g.errors.UNPREDICTABLE_GAS_LIMIT,{error:t,tx:e})})),null==e.chainId?e.chainId=this.getChainId():e.chainId=Promise.all([Promise.resolve(e.chainId),this.getChainId()]).then(e=>(0!==e[1]&&e[0]!==e[1]&&An.throwArgumentError("chainId address mismatch","transaction",t),e[0])),yield dt(e)})}_checkProvider(t){this.provider||An.throwError("missing provider",g.errors.UNSUPPORTED_OPERATION,{operation:t||"_checkProvider"})}static isSigner(t){return!(!t||!t._isSigner)}}class xn extends Cn{constructor(t,e){super(),ut(this,"address",t),ut(this,"provider",e||null)}getAddress(){return Promise.resolve(this.address)}_fail(t,e){return Promise.resolve().then(()=>{An.throwError(t,g.errors.UNSUPPORTED_OPERATION,{operation:e})})}signMessage(t){return this._fail("VoidSigner cannot sign messages","signMessage")}signTransaction(t){return this._fail("VoidSigner cannot sign transactions","signTransaction")}_signTypedData(t,e,r){return this._fail("VoidSigner cannot sign typed data","signTypedData")}connect(t){return new xn(this.address,t)}}var _n,Tn,Pn={},In={};function Nn(){if(Tn)return _n;function t(t,e){if(!t)throw new Error(e||"Assertion failed")}return Tn=1,_n=t,t.equal=function(t,e,r){if(t!=e)throw new Error(r||"Assertion failed: "+t+" != "+e)},_n}var Mn,Bn,Rn,Fn={exports:{}},On={exports:{}};function Dn(){if(Bn)return Fn.exports;Bn=1;try{var t=require("util");if("function"!=typeof t.inherits)throw"";Fn.exports=t.inherits}catch(t){Fn.exports=(Mn||(Mn=1,"function"==typeof Object.create?On.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:On.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}),On.exports)}return Fn.exports}function Un(){if(Rn)return In;Rn=1;var t=Nn(),e=Dn();function r(t,e){return 55296==(64512&t.charCodeAt(e))&&(!(e<0||e+1>=t.length)&&56320==(64512&t.charCodeAt(e+1)))}function n(t){return(t>>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24)>>>0}function i(t){return 1===t.length?"0"+t:t}function o(t){return 7===t.length?"0"+t:6===t.length?"00"+t:5===t.length?"000"+t:4===t.length?"0000"+t:3===t.length?"00000"+t:2===t.length?"000000"+t:1===t.length?"0000000"+t:t}return In.inherits=e,In.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var n=[];if("string"==typeof t)if(e){if("hex"===e)for((t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t),o=0;o<t.length;o+=2)n.push(parseInt(t[o]+t[o+1],16))}else for(var i=0,o=0;o<t.length;o++){var s=t.charCodeAt(o);s<128?n[i++]=s:s<2048?(n[i++]=s>>6|192,n[i++]=63&s|128):r(t,o)?(s=65536+((1023&s)<<10)+(1023&t.charCodeAt(++o)),n[i++]=s>>18|240,n[i++]=s>>12&63|128,n[i++]=s>>6&63|128,n[i++]=63&s|128):(n[i++]=s>>12|224,n[i++]=s>>6&63|128,n[i++]=63&s|128)}else for(o=0;o<t.length;o++)n[o]=0|t[o];return n},In.toHex=function(t){for(var e="",r=0;r<t.length;r++)e+=i(t[r].toString(16));return e},In.htonl=n,In.toHex32=function(t,e){for(var r="",i=0;i<t.length;i++){var s=t[i];"little"===e&&(s=n(s)),r+=o(s.toString(16))}return r},In.zero2=i,In.zero8=o,In.join32=function(e,r,n,i){var o=n-r;t(o%4==0);for(var s=new Array(o/4),a=0,l=r;a<s.length;a++,l+=4){var c;c="big"===i?e[l]<<24|e[l+1]<<16|e[l+2]<<8|e[l+3]:e[l+3]<<24|e[l+2]<<16|e[l+1]<<8|e[l],s[a]=c>>>0}return s},In.split32=function(t,e){for(var r=new Array(4*t.length),n=0,i=0;n<t.length;n++,i+=4){var o=t[n];"big"===e?(r[i]=o>>>24,r[i+1]=o>>>16&255,r[i+2]=o>>>8&255,r[i+3]=255&o):(r[i+3]=o>>>24,r[i+2]=o>>>16&255,r[i+1]=o>>>8&255,r[i]=255&o)}return r},In.rotr32=function(t,e){return t>>>e|t<<32-e},In.rotl32=function(t,e){return t<<e|t>>>32-e},In.sum32=function(t,e){return t+e>>>0},In.sum32_3=function(t,e,r){return t+e+r>>>0},In.sum32_4=function(t,e,r,n){return t+e+r+n>>>0},In.sum32_5=function(t,e,r,n,i){return t+e+r+n+i>>>0},In.sum64=function(t,e,r,n){var i=t[e],o=n+t[e+1]>>>0,s=(o<n?1:0)+r+i;t[e]=s>>>0,t[e+1]=o},In.sum64_hi=function(t,e,r,n){return(e+n>>>0<e?1:0)+t+r>>>0},In.sum64_lo=function(t,e,r,n){return e+n>>>0},In.sum64_4_hi=function(t,e,r,n,i,o,s,a){var l=0,c=e;return l+=(c=c+n>>>0)<e?1:0,l+=(c=c+o>>>0)<o?1:0,t+r+i+s+(l+=(c=c+a>>>0)<a?1:0)>>>0},In.sum64_4_lo=function(t,e,r,n,i,o,s,a){return e+n+o+a>>>0},In.sum64_5_hi=function(t,e,r,n,i,o,s,a,l,c){var u=0,h=e;return u+=(h=h+n>>>0)<e?1:0,u+=(h=h+o>>>0)<o?1:0,u+=(h=h+a>>>0)<a?1:0,t+r+i+s+l+(u+=(h=h+c>>>0)<c?1:0)>>>0},In.sum64_5_lo=function(t,e,r,n,i,o,s,a,l,c){return e+n+o+a+c>>>0},In.rotr64_hi=function(t,e,r){return(e<<32-r|t>>>r)>>>0},In.rotr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0},In.shr64_hi=function(t,e,r){return t>>>r},In.shr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0},In}var Ln,qn={};function zn(){if(Ln)return qn;Ln=1;var t=Un(),e=Nn();function r(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}return qn.BlockHash=r,r.prototype.update=function(e,r){if(e=t.toArray(e,r),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){var n=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-n,e.length),0===this.pending.length&&(this.pending=null),e=t.join32(e,0,e.length-n,this.endian);for(var i=0;i<e.length;i+=this._delta32)this._update(e,i,i+this._delta32)}return this},r.prototype.digest=function(t){return this.update(this._pad()),e(null===this.pending),this._digest(t)},r.prototype._pad=function(){var t=this.pendingTotal,e=this._delta8,r=e-(t+this.padLength)%e,n=new Array(r+this.padLength);n[0]=128;for(var i=1;i<r;i++)n[i]=0;if(t<<=3,"big"===this.endian){for(var o=8;o<this.padLength;o++)n[i++]=0;n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=t>>>24&255,n[i++]=t>>>16&255,n[i++]=t>>>8&255,n[i++]=255&t}else for(n[i++]=255&t,n[i++]=t>>>8&255,n[i++]=t>>>16&255,n[i++]=t>>>24&255,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,o=8;o<this.padLength;o++)n[i++]=0;return n},qn}var Gn,Hn,jn,Kn,Wn,Vn,$n,Jn,Qn,Yn,Xn,Zn,ti={},ei={};function ri(){if(Gn)return ei;Gn=1;var t=Un().rotr32;function e(t,e,r){return t&e^~t&r}function r(t,e,r){return t&e^t&r^e&r}function n(t,e,r){return t^e^r}return ei.ft_1=function(t,i,o,s){return 0===t?e(i,o,s):1===t||3===t?n(i,o,s):2===t?r(i,o,s):void 0},ei.ch32=e,ei.maj32=r,ei.p32=n,ei.s0_256=function(e){return t(e,2)^t(e,13)^t(e,22)},ei.s1_256=function(e){return t(e,6)^t(e,11)^t(e,25)},ei.g0_256=function(e){return t(e,7)^t(e,18)^e>>>3},ei.g1_256=function(e){return t(e,17)^t(e,19)^e>>>10},ei}function ni(){if(Wn)return Kn;Wn=1;var t=Un(),e=zn(),r=ri(),n=Nn(),i=t.sum32,o=t.sum32_4,s=t.sum32_5,a=r.ch32,l=r.maj32,c=r.s0_256,u=r.s1_256,h=r.g0_256,d=r.g1_256,f=e.BlockHash,p=[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];function m(){if(!(this instanceof m))return new m;f.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=p,this.W=new Array(64)}return t.inherits(m,f),Kn=m,m.blockSize=512,m.outSize=256,m.hmacStrength=192,m.padLength=64,m.prototype._update=function(t,e){for(var r=this.W,f=0;f<16;f++)r[f]=t[e+f];for(;f<r.length;f++)r[f]=o(d(r[f-2]),r[f-7],h(r[f-15]),r[f-16]);var p=this.h[0],m=this.h[1],g=this.h[2],v=this.h[3],w=this.h[4],y=this.h[5],b=this.h[6],E=this.h[7];for(n(this.k.length===r.length),f=0;f<r.length;f++){var A=s(E,u(w),a(w,y,b),this.k[f],r[f]),k=i(c(p),l(p,m,g));E=b,b=y,y=w,w=i(v,A),v=g,g=m,m=p,p=i(A,k)}this.h[0]=i(this.h[0],p),this.h[1]=i(this.h[1],m),this.h[2]=i(this.h[2],g),this.h[3]=i(this.h[3],v),this.h[4]=i(this.h[4],w),this.h[5]=i(this.h[5],y),this.h[6]=i(this.h[6],b),this.h[7]=i(this.h[7],E)},m.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"big"):t.split32(this.h,"big")},Kn}function ii(){if(Qn)return Jn;Qn=1;var t=Un(),e=zn(),r=Nn(),n=t.rotr64_hi,i=t.rotr64_lo,o=t.shr64_hi,s=t.shr64_lo,a=t.sum64,l=t.sum64_hi,c=t.sum64_lo,u=t.sum64_4_hi,h=t.sum64_4_lo,d=t.sum64_5_hi,f=t.sum64_5_lo,p=e.BlockHash,m=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function g(){if(!(this instanceof g))return new g;p.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=m,this.W=new Array(160)}function v(t,e,r,n,i){var o=t&r^~t&i;return o<0&&(o+=4294967296),o}function w(t,e,r,n,i,o){var s=e&n^~e&o;return s<0&&(s+=4294967296),s}function y(t,e,r,n,i){var o=t&r^t&i^r&i;return o<0&&(o+=4294967296),o}function b(t,e,r,n,i,o){var s=e&n^e&o^n&o;return s<0&&(s+=4294967296),s}function E(t,e){var r=n(t,e,28)^n(e,t,2)^n(e,t,7);return r<0&&(r+=4294967296),r}function A(t,e){var r=i(t,e,28)^i(e,t,2)^i(e,t,7);return r<0&&(r+=4294967296),r}function k(t,e){var r=n(t,e,14)^n(t,e,18)^n(e,t,9);return r<0&&(r+=4294967296),r}function S(t,e){var r=i(t,e,14)^i(t,e,18)^i(e,t,9);return r<0&&(r+=4294967296),r}function C(t,e){var r=n(t,e,1)^n(t,e,8)^o(t,e,7);return r<0&&(r+=4294967296),r}function x(t,e){var r=i(t,e,1)^i(t,e,8)^s(t,e,7);return r<0&&(r+=4294967296),r}function _(t,e){var r=n(t,e,19)^n(e,t,29)^o(t,e,6);return r<0&&(r+=4294967296),r}function T(t,e){var r=i(t,e,19)^i(e,t,29)^s(t,e,6);return r<0&&(r+=4294967296),r}return t.inherits(g,p),Jn=g,g.blockSize=1024,g.outSize=512,g.hmacStrength=192,g.padLength=128,g.prototype._prepareBlock=function(t,e){for(var r=this.W,n=0;n<32;n++)r[n]=t[e+n];for(;n<r.length;n+=2){var i=_(r[n-4],r[n-3]),o=T(r[n-4],r[n-3]),s=r[n-14],a=r[n-13],l=C(r[n-30],r[n-29]),c=x(r[n-30],r[n-29]),d=r[n-32],f=r[n-31];r[n]=u(i,o,s,a,l,c,d,f),r[n+1]=h(i,o,s,a,l,c,d,f)}},g.prototype._update=function(t,e){this._prepareBlock(t,e);var n=this.W,i=this.h[0],o=this.h[1],s=this.h[2],u=this.h[3],h=this.h[4],p=this.h[5],m=this.h[6],g=this.h[7],C=this.h[8],x=this.h[9],_=this.h[10],T=this.h[11],P=this.h[12],I=this.h[13],N=this.h[14],M=this.h[15];r(this.k.length===n.length);for(var B=0;B<n.length;B+=2){var R=N,F=M,O=k(C,x),D=S(C,x),U=v(C,x,_,T,P),L=w(C,x,_,T,P,I),q=this.k[B],z=this.k[B+1],G=n[B],H=n[B+1],j=d(R,F,O,D,U,L,q,z,G,H),K=f(R,F,O,D,U,L,q,z,G,H);R=E(i,o),F=A(i,o),O=y(i,o,s,u,h),D=b(i,o,s,u,h,p);var W=l(R,F,O,D),V=c(R,F,O,D);N=P,M=I,P=_,I=T,_=C,T=x,C=l(m,g,j,K),x=c(g,g,j,K),m=h,g=p,h=s,p=u,s=i,u=o,i=l(j,K,W,V),o=c(j,K,W,V)}a(this.h,0,i,o),a(this.h,2,s,u),a(this.h,4,h,p),a(this.h,6,m,g),a(this.h,8,C,x),a(this.h,10,_,T),a(this.h,12,P,I),a(this.h,14,N,M)},g.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"big"):t.split32(this.h,"big")},Jn}function oi(){return Zn||(Zn=1,ti.sha1=function(){if(jn)return Hn;jn=1;var t=Un(),e=zn(),r=ri(),n=t.rotl32,i=t.sum32,o=t.sum32_5,s=r.ft_1,a=e.BlockHash,l=[1518500249,1859775393,2400959708,3395469782];function c(){if(!(this instanceof c))return new c;a.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}return t.inherits(c,a),Hn=c,c.blockSize=512,c.outSize=160,c.hmacStrength=80,c.padLength=64,c.prototype._update=function(t,e){for(var r=this.W,a=0;a<16;a++)r[a]=t[e+a];for(;a<r.length;a++)r[a]=n(r[a-3]^r[a-8]^r[a-14]^r[a-16],1);var c=this.h[0],u=this.h[1],h=this.h[2],d=this.h[3],f=this.h[4];for(a=0;a<r.length;a++){var p=~~(a/20),m=o(n(c,5),s(p,u,h,d),f,r[a],l[p]);f=d,d=h,h=n(u,30),u=c,c=m}this.h[0]=i(this.h[0],c),this.h[1]=i(this.h[1],u),this.h[2]=i(this.h[2],h),this.h[3]=i(this.h[3],d),this.h[4]=i(this.h[4],f)},c.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"big"):t.split32(this.h,"big")},Hn}(),ti.sha224=function(){if($n)return Vn;$n=1;var t=Un(),e=ni();function r(){if(!(this instanceof r))return new r;e.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}return t.inherits(r,e),Vn=r,r.blockSize=512,r.outSize=224,r.hmacStrength=192,r.padLength=64,r.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h.slice(0,7),"big"):t.split32(this.h.slice(0,7),"big")},Vn}(),ti.sha256=ni(),ti.sha384=function(){if(Xn)return Yn;Xn=1;var t=Un(),e=ii();function r(){if(!(this instanceof r))return new r;e.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}return t.inherits(r,e),Yn=r,r.blockSize=1024,r.outSize=384,r.hmacStrength=192,r.padLength=128,r.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h.slice(0,12),"big"):t.split32(this.h.slice(0,12),"big")},Yn}(),ti.sha512=ii()),ti}var si,ai,li,ci,ui={};var hi=(ci||(ci=1,function(){var t=Pn;t.utils=Un(),t.common=zn(),t.sha=oi(),t.ripemd=function(){if(si)return ui;si=1;var t=Un(),e=zn(),r=t.rotl32,n=t.sum32,i=t.sum32_3,o=t.sum32_4,s=e.BlockHash;function a(){if(!(this instanceof a))return new a;s.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function l(t,e,r,n){return t<=15?e^r^n:t<=31?e&r|~e&n:t<=47?(e|~r)^n:t<=63?e&n|r&~n:e^(r|~n)}function c(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function u(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}t.inherits(a,s),ui.ripemd160=a,a.blockSize=512,a.outSize=160,a.hmacStrength=192,a.padLength=64,a.prototype._update=function(t,e){for(var s=this.h[0],a=this.h[1],m=this.h[2],g=this.h[3],v=this.h[4],w=s,y=a,b=m,E=g,A=v,k=0;k<80;k++){var S=n(r(o(s,l(k,a,m,g),t[h[k]+e],c(k)),f[k]),v);s=v,v=g,g=r(m,10),m=a,a=S,S=n(r(o(w,l(79-k,y,b,E),t[d[k]+e],u(k)),p[k]),A),w=A,A=E,E=r(b,10),b=y,y=S}S=i(this.h[1],m,E),this.h[1]=i(this.h[2],g,A),this.h[2]=i(this.h[3],v,w),this.h[3]=i(this.h[4],s,y),this.h[4]=i(this.h[0],a,b),this.h[0]=S},a.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"little"):t.split32(this.h,"little")};var h=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],d=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],f=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],p=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11];return ui}(),t.hmac=function(){if(li)return ai;li=1;var t=Un(),e=Nn();function r(e,n,i){if(!(this instanceof r))return new r(e,n,i);this.Hash=e,this.blockSize=e.blockSize/8,this.outSize=e.outSize/8,this.inner=null,this.outer=null,this._init(t.toArray(n,i))}return ai=r,r.prototype._init=function(t){t.length>this.blockSize&&(t=(new this.Hash).update(t).digest()),e(t.length<=this.blockSize);for(var r=t.length;r<this.blockSize;r++)t.push(0);for(r=0;r<t.length;r++)t[r]^=54;for(this.inner=(new this.Hash).update(t),r=0;r<t.length;r++)t[r]^=106;this.outer=(new this.Hash).update(t)},r.prototype.update=function(t,e){return this.inner.update(t,e),this},r.prototype.digest=function(t){return this.outer.update(this.inner.digest()),this.outer.digest(t)},ai}(),t.sha1=t.sha.sha1,t.sha256=t.sha.sha256,t.sha224=t.sha.sha224,t.sha384=t.sha.sha384,t.sha512=t.sha.sha512,t.ripemd160=t.ripemd.ripemd160}()),Pn),di=r(hi);function fi(t,e,r){return r={path:e,exports:{},require:function(t,e){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==e&&r.path)}},t(r,r.exports),r.exports}var pi=mi;function mi(t,e){if(!t)throw new Error(e||"Assertion failed")}mi.equal=function(t,e,r){if(t!=e)throw new Error(r||"Assertion failed: "+t+" != "+e)};var gi=fi(function(t,e){var r=e;function n(t){return 1===t.length?"0"+t:t}function i(t){for(var e="",r=0;r<t.length;r++)e+=n(t[r].toString(16));return e}r.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if("string"!=typeof t){for(var n=0;n<t.length;n++)r[n]=0|t[n];return r}if("hex"===e){(t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t);for(n=0;n<t.length;n+=2)r.push(parseInt(t[n]+t[n+1],16))}else for(n=0;n<t.length;n++){var i=t.charCodeAt(n),o=i>>8,s=255&i;o?r.push(o,s):r.push(s)}return r},r.zero2=n,r.toHex=i,r.encode=function(t,e){return"hex"===e?i(t):t}}),vi=fi(function(t,e){var r=e;r.assert=pi,r.toArray=gi.toArray,r.zero2=gi.zero2,r.toHex=gi.toHex,r.encode=gi.encode,r.getNAF=function(t,e,r){var n,i=new Array(Math.max(t.bitLength(),r)+1);for(n=0;n<i.length;n+=1)i[n]=0;var o=1<<e+1,s=t.clone();for(n=0;n<i.length;n++){var a,l=s.andln(o-1);s.isOdd()?(a=l>(o>>1)-1?(o>>1)-l:l,s.isubn(a)):a=0,i[n]=a,s.iushrn(1)}return i},r.getJSF=function(t,e){var r=[[],[]];t=t.clone(),e=e.clone();for(var n,i=0,o=0;t.cmpn(-i)>0||e.cmpn(-o)>0;){var s,a,l=t.andln(3)+i&3,c=e.andln(3)+o&3;3===l&&(l=-1),3===c&&(c=-1),s=1&l?3!==(n=t.andln(7)+i&7)&&5!==n||2!==c?l:-l:0,r[0].push(s),a=1&c?3!==(n=e.andln(7)+o&7)&&5!==n||2!==l?c:-c:0,r[1].push(a),2*i===s+1&&(i=1-i),2*o===a+1&&(o=1-o),t.iushrn(1),e.iushrn(1)}return r},r.cachedProperty=function(t,e,r){var n="_"+e;t.prototype[e]=function(){return void 0!==this[n]?this[n]:this[n]=r.call(this)}},r.parseBytes=function(t){return"string"==typeof t?r.toArray(t,"hex"):t},r.intFromLE=function(t){return new s(t,"hex","le")}}),wi=vi.getNAF,yi=vi.getJSF,bi=vi.assert;function Ei(t,e){this.type=t,this.p=new s(e.p,16),this.red=e.prime?s.red(e.prime):s.mont(this.p),this.zero=new s(0).toRed(this.red),this.one=new s(1).toRed(this.red),this.two=new s(2).toRed(this.red),this.n=e.n&&new s(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var Ai=Ei;function ki(t,e){this.curve=t,this.type=e,this.precomputed=null}Ei.prototype.point=function(){throw new Error("Not implemented")},Ei.prototype.validate=function(){throw new Error("Not implemented")},Ei.prototype._fixedNafMul=function(t,e){bi(t.precomputed);var r=t._getDoubles(),n=wi(e,1,this._bitLength),i=(1<<r.step+1)-(r.step%2==0?2:1);i/=3;var o,s,a=[];for(o=0;o<n.length;o+=r.step){s=0;for(var l=o+r.step-1;l>=o;l--)s=(s<<1)+n[l];a.push(s)}for(var c=this.jpoint(null,null,null),u=this.jpoint(null,null,null),h=i;h>0;h--){for(o=0;o<a.length;o++)(s=a[o])===h?u=u.mixedAdd(r.points[o]):s===-h&&(u=u.mixedAdd(r.points[o].neg()));c=c.add(u)}return c.toP()},Ei.prototype._wnafMul=function(t,e){var r=4,n=t._getNAFPoints(r);r=n.wnd;for(var i=n.points,o=wi(e,r,this._bitLength),s=this.jpoint(null,null,null),a=o.length-1;a>=0;a--){for(var l=0;a>=0&&0===o[a];a--)l++;if(a>=0&&l++,s=s.dblp(l),a<0)break;var c=o[a];bi(0!==c),s="affine"===t.type?c>0?s.mixedAdd(i[c-1>>1]):s.mixedAdd(i[-c-1>>1].neg()):c>0?s.add(i[c-1>>1]):s.add(i[-c-1>>1].neg())}return"affine"===t.type?s.toP():s},Ei.prototype._wnafMulAdd=function(t,e,r,n,i){var o,s,a,l=this._wnafT1,c=this._wnafT2,u=this._wnafT3,h=0;for(o=0;o<n;o++){var d=(a=e[o])._getNAFPoints(t);l[o]=d.wnd,c[o]=d.points}for(o=n-1;o>=1;o-=2){var f=o-1,p=o;if(1===l[f]&&1===l[p]){var m=[e[f],null,null,e[p]];0===e[f].y.cmp(e[p].y)?(m[1]=e[f].add(e[p]),m[2]=e[f].toJ().mixedAdd(e[p].neg())):0===e[f].y.cmp(e[p].y.redNeg())?(m[1]=e[f].toJ().mixedAdd(e[p]),m[2]=e[f].add(e[p].neg())):(m[1]=e[f].toJ().mixedAdd(e[p]),m[2]=e[f].toJ().mixedAdd(e[p].neg()));var g=[-3,-1,-5,-7,0,7,5,1,3],v=yi(r[f],r[p]);for(h=Math.max(v[0].length,h),u[f]=new Array(h),u[p]=new Array(h),s=0;s<h;s++){var w=0|v[0][s],y=0|v[1][s];u[f][s]=g[3*(w+1)+(y+1)],u[p][s]=0,c[f]=m}}else u[f]=wi(r[f],l[f],this._bitLength),u[p]=wi(r[p],l[p],this._bitLength),h=Math.max(u[f].length,h),h=Math.max(u[p].length,h)}var b=this.jpoint(null,null,null),E=this._wnafT4;for(o=h;o>=0;o--){for(var A=0;o>=0;){var k=!0;for(s=0;s<n;s++)E[s]=0|u[s][o],0!==E[s]&&(k=!1);if(!k)break;A++,o--}if(o>=0&&A++,b=b.dblp(A),o<0)break;for(s=0;s<n;s++){var S=E[s];0!==S&&(S>0?a=c[s][S-1>>1]:S<0&&(a=c[s][-S-1>>1].neg()),b="affine"===a.type?b.mixedAdd(a):b.add(a))}}for(o=0;o<n;o++)c[o]=null;return i?b:b.toP()},Ei.BasePoint=ki,ki.prototype.eq=function(){throw new Error("Not implemented")},ki.prototype.validate=function(){return this.curve.validate(this)},Ei.prototype.decodePoint=function(t,e){t=vi.toArray(t,e);var r=this.p.byteLength();if((4===t[0]||6===t[0]||7===t[0])&&t.length-1==2*r)return 6===t[0]?bi(t[t.length-1]%2==0):7===t[0]&&bi(t[t.length-1]%2==1),this.point(t.slice(1,1+r),t.slice(1+r,1+2*r));if((2===t[0]||3===t[0])&&t.length-1===r)return this.pointFromX(t.slice(1,1+r),3===t[0]);throw new Error("Unknown point format")},ki.prototype.encodeCompressed=function(t){return this.encode(t,!0)},ki.prototype._encode=function(t){var e=this.curve.p.byteLength(),r=this.getX().toArray("be",e);return t?[this.getY().isEven()?2:3].concat(r):[4].concat(r,this.getY().toArray("be",e))},ki.prototype.encode=function(t,e){return vi.encode(this._encode(e),t)},ki.prototype.precompute=function(t){if(this.precomputed)return this;var e={doubles:null,naf:null,beta:null};return e.naf=this._getNAFPoints(8),e.doubles=this._getDoubles(4,t),e.beta=this._getBeta(),this.precomputed=e,this},ki.prototype._hasDoubles=function(t){if(!this.precomputed)return!1;var e=this.precomputed.doubles;return!!e&&e.points.length>=Math.ceil((t.bitLength()+1)/e.step)},ki.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],n=this,i=0;i<e;i+=t){for(var o=0;o<t;o++)n=n.dbl();r.push(n)}return{step:t,points:r}},ki.prototype._getNAFPoints=function(t){if(this.precomputed&&this.precomputed.naf)return this.precomputed.naf;for(var e=[this],r=(1<<t)-1,n=1===r?null:this.dbl(),i=1;i<r;i++)e[i]=e[i-1].add(n);return{wnd:t,points:e}},ki.prototype._getBeta=function(){return null},ki.prototype.dblp=function(t){for(var e=this,r=0;r<t;r++)e=e.dbl();return e};var Si=fi(function(t){"function"==typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}}),Ci=vi.assert;function xi(t){Ai.call(this,"short",t),this.a=new s(t.a,16).toRed(this.red),this.b=new s(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}Si(xi,Ai);var _i=xi;function Ti(t,e,r,n){Ai.BasePoint.call(this,t,"affine"),null===e&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new s(e,16),this.y=new s(r,16),n&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function Pi(t,e,r,n){Ai.BasePoint.call(this,t,"jacobian"),null===e&&null===r&&null===n?(this.x=this.curve.one,this.y=this.curve.one,this.z=new s(0)):(this.x=new s(e,16),this.y=new s(r,16),this.z=new s(n,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}xi.prototype._getEndomorphism=function(t){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var e,r;if(t.beta)e=new s(t.beta,16).toRed(this.red);else{var n=this._getEndoRoots(this.p);e=(e=n[0].cmp(n[1])<0?n[0]:n[1]).toRed(this.red)}if(t.lambda)r=new s(t.lambda,16);else{var i=this._getEndoRoots(this.n);0===this.g.mul(i[0]).x.cmp(this.g.x.redMul(e))?r=i[0]:(r=i[1],Ci(0===this.g.mul(r).x.cmp(this.g.x.redMul(e))))}return{beta:e,lambda:r,basis:t.basis?t.basis.map(function(t){return{a:new s(t.a,16),b:new s(t.b,16)}}):this._getEndoBasis(r)}}},xi.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:s.mont(t),r=new s(2).toRed(e).redInvm(),n=r.redNeg(),i=new s(3).toRed(e).redNeg().redSqrt().redMul(r);return[n.redAdd(i).fromRed(),n.redSub(i).fromRed()]},xi.prototype._getEndoBasis=function(t){for(var e,r,n,i,o,a,l,c,u,h=this.n.ushrn(Math.floor(this.n.bitLength()/2)),d=t,f=this.n.clone(),p=new s(1),m=new s(0),g=new s(0),v=new s(1),w=0;0!==d.cmpn(0);){var y=f.div(d);c=f.sub(y.mul(d)),u=g.sub(y.mul(p));var b=v.sub(y.mul(m));if(!n&&c.cmp(h)<0)e=l.neg(),r=p,n=c.neg(),i=u;else if(n&&2===++w)break;l=c,f=d,d=c,g=p,p=u,v=m,m=b}o=c.neg(),a=u;var E=n.sqr().add(i.sqr());return o.sqr().add(a.sqr()).cmp(E)>=0&&(o=e,a=r),n.negative&&(n=n.neg(),i=i.neg()),o.negative&&(o=o.neg(),a=a.neg()),[{a:n,b:i},{a:o,b:a}]},xi.prototype._endoSplit=function(t){var e=this.endo.basis,r=e[0],n=e[1],i=n.b.mul(t).divRound(this.n),o=r.b.neg().mul(t).divRound(this.n),s=i.mul(r.a),a=o.mul(n.a),l=i.mul(r.b),c=o.mul(n.b);return{k1:t.sub(s).sub(a),k2:l.add(c).neg()}},xi.prototype.pointFromX=function(t,e){(t=new s(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=r.redSqrt();if(0!==n.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var i=n.fromRed().isOdd();return(e&&!i||!e&&i)&&(n=n.redNeg()),this.point(t,n)},xi.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,r=t.y,n=this.a.redMul(e),i=e.redSqr().redMul(e).redIAdd(n).redIAdd(this.b);return 0===r.redSqr().redISub(i).cmpn(0)},xi.prototype._endoWnafMulAdd=function(t,e,r){for(var n=this._endoWnafT1,i=this._endoWnafT2,o=0;o<t.length;o++){var s=this._endoSplit(e[o]),a=t[o],l=a._getBeta();s.k1.negative&&(s.k1.ineg(),a=a.neg(!0)),s.k2.negative&&(s.k2.ineg(),l=l.neg(!0)),n[2*o]=a,n[2*o+1]=l,i[2*o]=s.k1,i[2*o+1]=s.k2}for(var c=this._wnafMulAdd(1,n,i,2*o,r),u=0;u<2*o;u++)n[u]=null,i[u]=null;return c},Si(Ti,Ai.BasePoint),xi.prototype.point=function(t,e,r){return new Ti(this,t,e,r)},xi.prototype.pointFromJSON=function(t,e){return Ti.fromJSON(this,t,e)},Ti.prototype._getBeta=function(){if(this.curve.endo){var t=this.precomputed;if(t&&t.beta)return t.beta;var e=this.curve.point(this.x.redMul(this.curve.endo.beta),this.y);if(t){var r=this.curve,n=function(t){return r.point(t.x.redMul(r.endo.beta),t.y)};t.beta=e,e.precomputed={beta:null,naf:t.naf&&{wnd:t.naf.wnd,points:t.naf.points.map(n)},doubles:t.doubles&&{step:t.doubles.step,points:t.doubles.points.map(n)}}}return e}},Ti.prototype.toJSON=function(){return this.precomputed?[this.x,this.y,this.precomputed&&{doubles:this.precomputed.doubles&&{step:this.precomputed.doubles.step,points:this.precomputed.doubles.points.slice(1)},naf:this.precomputed.naf&&{wnd:this.precomputed.naf.wnd,points:this.precomputed.naf.points.slice(1)}}]:[this.x,this.y]},Ti.fromJSON=function(t,e,r){"string"==typeof e&&(e=JSON.parse(e));var n=t.point(e[0],e[1],r);if(!e[2])return n;function i(e){return t.point(e[0],e[1],r)}var o=e[2];return n.precomputed={beta:null,doubles:o.doubles&&{step:o.doubles.step,points:[n].concat(o.doubles.points.map(i))},naf:o.naf&&{wnd:o.naf.wnd,points:[n].concat(o.naf.points.map(i))}},n},Ti.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+">"},Ti.prototype.isInfinity=function(){return this.inf},Ti.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var r=e.redSqr().redISub(this.x).redISub(t.x),n=e.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,n)},Ti.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,r=this.x.redSqr(),n=t.redInvm(),i=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(n),o=i.redSqr().redISub(this.x.redAdd(this.x)),s=i.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,s)},Ti.prototype.getX=function(){return this.x.fromRed()},Ti.prototype.getY=function(){return this.y.fromRed()},Ti.prototype.mul=function(t){return t=new s(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},Ti.prototype.mulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i):this.curve._wnafMulAdd(1,n,i,2)},Ti.prototype.jmulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i,!0):this.curve._wnafMulAdd(1,n,i,2,!0)},Ti.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},Ti.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var r=this.precomputed,n=function(t){return t.neg()};e.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(n)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(n)}}}return e},Ti.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},Si(Pi,Ai.BasePoint),xi.prototype.jpoint=function(t,e,r){return new Pi(this,t,e,r)},Pi.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),n=this.y.redMul(e).redMul(t);return this.curve.point(r,n)},Pi.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},Pi.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),r=this.z.redSqr(),n=this.x.redMul(e),i=t.x.redMul(r),o=this.y.redMul(e.redMul(t.z)),s=t.y.redMul(r.redMul(this.z)),a=n.redSub(i),l=o.redSub(s);if(0===a.cmpn(0))return 0!==l.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var c=a.redSqr(),u=c.redMul(a),h=n.redMul(c),d=l.redSqr().redIAdd(u).redISub(h).redISub(h),f=l.redMul(h.redISub(d)).redISub(o.redMul(u)),p=this.z.redMul(t.z).redMul(a);return this.curve.jpoint(d,f,p)},Pi.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),r=this.x,n=t.x.redMul(e),i=this.y,o=t.y.redMul(e).redMul(this.z),s=r.redSub(n),a=i.redSub(o);if(0===s.cmpn(0))return 0!==a.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var l=s.redSqr(),c=l.redMul(s),u=r.redMul(l),h=a.redSqr().redIAdd(c).redISub(u).redISub(u),d=a.redMul(u.redISub(h)).redISub(i.redMul(c)),f=this.z.redMul(s);return this.curve.jpoint(h,d,f)},Pi.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var e;if(this.curve.zeroA||this.curve.threeA){var r=this;for(e=0;e<t;e++)r=r.dbl();return r}var n=this.curve.a,i=this.curve.tinv,o=this.x,s=this.y,a=this.z,l=a.redSqr().redSqr(),c=s.redAdd(s);for(e=0;e<t;e++){var u=o.redSqr(),h=c.redSqr(),d=h.redSqr(),f=u.redAdd(u).redIAdd(u).redIAdd(n.redMul(l)),p=o.redMul(h),m=f.redSqr().redISub(p.redAdd(p)),g=p.redISub(m),v=f.redMul(g);v=v.redIAdd(v).redISub(d);var w=c.redMul(a);e+1<t&&(l=l.redMul(d)),o=m,a=w,c=v}return this.curve.jpoint(o,c.redMul(i),a)},Pi.prototype.dbl=function(){return this.isInfinity()?this:this.curve.zeroA?this._zeroDbl():this.curve.threeA?this._threeDbl():this._dbl()},Pi.prototype._zeroDbl=function(){var t,e,r;if(this.zOne){var n=this.x.redSqr(),i=this.y.redSqr(),o=i.redSqr(),s=this.x.redAdd(i).redSqr().redISub(n).redISub(o);s=s.redIAdd(s);var a=n.redAdd(n).redIAdd(n),l=a.redSqr().redISub(s).redISub(s),c=o.redIAdd(o);c=(c=c.redIAdd(c)).redIAdd(c),t=l,e=a.redMul(s.redISub(l)).redISub(c),r=this.y.redAdd(this.y)}else{var u=this.x.redSqr(),h=this.y.redSqr(),d=h.redSqr(),f=this.x.redAdd(h).redSqr().redISub(u).redISub(d);f=f.redIAdd(f);var p=u.redAdd(u).redIAdd(u),m=p.redSqr(),g=d.redIAdd(d);g=(g=g.redIAdd(g)).redIAdd(g),t=m.redISub(f).redISub(f),e=p.redMul(f.redISub(t)).redISub(g),r=(r=this.y.redMul(this.z)).redIAdd(r)}return this.curve.jpoint(t,e,r)},Pi.prototype._threeDbl=function(){var t,e,r;if(this.zOne){var n=this.x.redSqr(),i=this.y.redSqr(),o=i.redSqr(),s=this.x.redAdd(i).redSqr().redISub(n).redISub(o);s=s.redIAdd(s);var a=n.redAdd(n).redIAdd(n).redIAdd(this.curve.a),l=a.redSqr().redISub(s).redISub(s);t=l;var c=o.redIAdd(o);c=(c=c.redIAdd(c)).redIAdd(c),e=a.redMul(s.redISub(l)).redISub(c),r=this.y.redAdd(this.y)}else{var u=this.z.redSqr(),h=this.y.redSqr(),d=this.x.redMul(h),f=this.x.redSub(u).redMul(this.x.redAdd(u));f=f.redAdd(f).redIAdd(f);var p=d.redIAdd(d),m=(p=p.redIAdd(p)).redAdd(p);t=f.redSqr().redISub(m),r=this.y.redAdd(this.z).redSqr().redISub(h).redISub(u);var g=h.redSqr();g=(g=(g=g.redIAdd(g)).redIAdd(g)).redIAdd(g),e=f.redMul(p.redISub(t)).redISub(g)}return this.curve.jpoint(t,e,r)},Pi.prototype._dbl=function(){var t=this.curve.a,e=this.x,r=this.y,n=this.z,i=n.redSqr().redSqr(),o=e.redSqr(),s=r.redSqr(),a=o.redAdd(o).redIAdd(o).redIAdd(t.redMul(i)),l=e.redAdd(e),c=(l=l.redIAdd(l)).redMul(s),u=a.redSqr().redISub(c.redAdd(c)),h=c.redISub(u),d=s.redSqr();d=(d=(d=d.redIAdd(d)).redIAdd(d)).redIAdd(d);var f=a.redMul(h).redISub(d),p=r.redAdd(r).redMul(n);return this.curve.jpoint(u,f,p)},Pi.prototype.trpl=function(){if(!this.curve.zeroA)return this.dbl().add(this);var t=this.x.redSqr(),e=this.y.redSqr(),r=this.z.redSqr(),n=e.redSqr(),i=t.redAdd(t).redIAdd(t),o=i.redSqr(),s=this.x.redAdd(e).redSqr().redISub(t).redISub(n),a=(s=(s=(s=s.redIAdd(s)).redAdd(s).redIAdd(s)).redISub(o)).redSqr(),l=n.redIAdd(n);l=(l=(l=l.redIAdd(l)).redIAdd(l)).redIAdd(l);var c=i.redIAdd(s).redSqr().redISub(o).redISub(a).redISub(l),u=e.redMul(c);u=(u=u.redIAdd(u)).redIAdd(u);var h=this.x.redMul(a).redISub(u);h=(h=h.redIAdd(h)).redIAdd(h);var d=this.y.redMul(c.redMul(l.redISub(c)).redISub(s.redMul(a)));d=(d=(d=d.redIAdd(d)).redIAdd(d)).redIAdd(d);var f=this.z.redAdd(s).redSqr().redISub(r).redISub(a);return this.curve.jpoint(h,d,f)},Pi.prototype.mul=function(t,e){return t=new s(t,e),this.curve._wnafMul(this,t)},Pi.prototype.eq=function(t){if("affine"===t.type)return this.eq(t.toJ());if(this===t)return!0;var e=this.z.redSqr(),r=t.z.redSqr();if(0!==this.x.redMul(r).redISub(t.x.redMul(e)).cmpn(0))return!1;var n=e.redMul(this.z),i=r.redMul(t.z);return 0===this.y.redMul(i).redISub(t.y.redMul(n)).cmpn(0)},Pi.prototype.eqXToP=function(t){var e=this.z.redSqr(),r=t.toRed(this.curve.red).redMul(e);if(0===this.x.cmp(r))return!0;for(var n=t.clone(),i=this.curve.redN.redMul(e);;){if(n.iadd(this.curve.n),n.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(i),0===this.x.cmp(r))return!0}},Pi.prototype.inspect=function(){return this.isInfinity()?"<EC JPoint Infinity>":"<EC JPoint x: "+this.x.toString(16,2)+" y: "+this.y.toString(16,2)+" z: "+this.z.toString(16,2)+">"},Pi.prototype.isInfinity=function(){return 0===this.z.cmpn(0)};var Ii=fi(function(t,e){var r=e;r.base=Ai,r.short=_i,r.mont=null,r.edwards=null}),Ni=fi(function(t,e){var r,n=e,i=vi.assert;function o(t){"short"===t.type?this.curve=new Ii.short(t):"edwards"===t.type?this.curve=new Ii.edwards(t):this.curve=new Ii.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,i(this.g.validate(),"Invalid curve"),i(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function s(t,e){Object.defineProperty(n,t,{configurable:!0,enumerable:!0,get:function(){var r=new o(e);return Object.defineProperty(n,t,{configurable:!0,enumerable:!0,value:r}),r}})}n.PresetCurve=o,s("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:di.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),s("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:di.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),s("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:di.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),s("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:di.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),s("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:di.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),s("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:di.sha256,gRed:!1,g:["9"]}),s("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:di.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{r=null.crash()}catch(t){r=void 0}s("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:di.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",r]})});function Mi(t){if(!(this instanceof Mi))return new Mi(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=gi.toArray(t.entropy,t.entropyEnc||"hex"),r=gi.toArray(t.nonce,t.nonceEnc||"hex"),n=gi.toArray(t.pers,t.persEnc||"hex");pi(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,n)}var Bi=Mi;Mi.prototype._init=function(t,e,r){var n=t.concat(e).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i<this.V.length;i++)this.K[i]=0,this.V[i]=1;this._update(n),this._reseed=1,this.reseedInterval=281474976710656},Mi.prototype._hmac=function(){return new di.hmac(this.hash,this.K)},Mi.prototype._update=function(t){var e=this._hmac().update(this.V).update([0]);t&&(e=e.update(t)),this.K=e.digest(),this.V=this._hmac().update(this.V).digest(),t&&(this.K=this._hmac().update(this.V).update([1]).update(t).digest(),this.V=this._hmac().update(this.V).digest())},Mi.prototype.reseed=function(t,e,r,n){"string"!=typeof e&&(n=r,r=e,e=null),t=gi.toArray(t,e),r=gi.toArray(r,n),pi(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(r||[])),this._reseed=1},Mi.prototype.generate=function(t,e,r,n){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof e&&(n=r,r=e,e=null),r&&(r=gi.toArray(r,n||"hex"),this._update(r));for(var i=[];i.length<t;)this.V=this._hmac().update(this.V).digest(),i=i.concat(this.V);var o=i.slice(0,t);return this._update(r),this._reseed++,gi.encode(o,e)};var Ri=vi.assert;function Fi(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}var Oi=Fi;Fi.fromPublic=function(t,e,r){return e instanceof Fi?e:new Fi(t,{pub:e,pubEnc:r})},Fi.fromPrivate=function(t,e,r){return e instanceof Fi?e:new Fi(t,{priv:e,privEnc:r})},Fi.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:"Invalid public key"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},Fi.prototype.getPublic=function(t,e){return"string"==typeof t&&(e=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},Fi.prototype.getPrivate=function(t){return"hex"===t?this.priv.toString(16,2):this.priv},Fi.prototype._importPrivate=function(t,e){this.priv=new s(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},Fi.prototype._importPublic=function(t,e){if(t.x||t.y)return"mont"===this.ec.curve.type?Ri(t.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||Ri(t.x&&t.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(t.x,t.y));this.pub=this.ec.curve.decodePoint(t,e)},Fi.prototype.derive=function(t){return t.validate()||Ri(t.validate(),"public point not validated"),t.mul(this.priv).getX()},Fi.prototype.sign=function(t,e,r){return this.ec.sign(t,this,e,r)},Fi.prototype.verify=function(t,e,r){return this.ec.verify(t,e,this,void 0,r)},Fi.prototype.inspect=function(){return"<Key priv: "+(this.priv&&this.priv.toString(16,2))+" pub: "+(this.pub&&this.pub.inspect())+" >"};var Di=vi.assert;function Ui(t,e){if(t instanceof Ui)return t;this._importDER(t,e)||(Di(t.r&&t.s,"Signature without r or s"),this.r=new s(t.r,16),this.s=new s(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}var Li=Ui;function qi(){this.place=0}function zi(t,e){var r=t[e.place++];if(!(128&r))return r;var n=15&r;if(0===n||n>4)return!1;if(0===t[e.place])return!1;for(var i=0,o=0,s=e.place;o<n;o++,s++)i<<=8,i|=t[s],i>>>=0;return!(i<=127)&&(e.place=s,i)}function Gi(t){for(var e=0,r=t.length-1;!t[e]&&!(128&t[e+1])&&e<r;)e++;return 0===e?t:t.slice(e)}function Hi(t,e){if(e<128)t.push(e);else{var r=1+(Math.log(e)/Math.LN2>>>3);for(t.push(128|r);--r;)t.push(e>>>(r<<3)&255);t.push(e)}}Ui.prototype._importDER=function(t,e){t=vi.toArray(t,e);var r=new qi;if(48!==t[r.place++])return!1;var n=zi(t,r);if(!1===n)return!1;if(n+r.place!==t.length)return!1;if(2!==t[r.place++])return!1;var i=zi(t,r);if(!1===i)return!1;if(128&t[r.place])return!1;var o=t.slice(r.place,i+r.place);if(r.place+=i,2!==t[r.place++])return!1;var a=zi(t,r);if(!1===a)return!1;if(t.length!==a+r.place)return!1;if(128&t[r.place])return!1;var l=t.slice(r.place,a+r.place);if(0===o[0]){if(!(128&o[1]))return!1;o=o.slice(1)}if(0===l[0]){if(!(128&l[1]))return!1;l=l.slice(1)}return this.r=new s(o),this.s=new s(l),this.recoveryParam=null,!0},Ui.prototype.toDER=function(t){var e=this.r.toArray(),r=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&r[0]&&(r=[0].concat(r)),e=Gi(e),r=Gi(r);!(r[0]||128&r[1]);)r=r.slice(1);var n=[2];Hi(n,e.length),(n=n.concat(e)).push(2),Hi(n,r.length);var i=n.concat(r),o=[48];return Hi(o,i.length),o=o.concat(i),vi.encode(o,t)};var ji=function(){throw new Error("unsupported")},Ki=vi.assert;function Wi(t){if(!(this instanceof Wi))return new Wi(t);"string"==typeof t&&(Ki(Object.prototype.hasOwnProperty.call(Ni,t),"Unknown curve "+t),t=Ni[t]),t instanceof Ni.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}var Vi=Wi;Wi.prototype.keyPair=function(t){return new Oi(this,t)},Wi.prototype.keyFromPrivate=function(t,e){return Oi.fromPrivate(this,t,e)},Wi.prototype.keyFromPublic=function(t,e){return Oi.fromPublic(this,t,e)},Wi.prototype.genKeyPair=function(t){t||(t={});for(var e=new Bi({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||ji(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),r=this.n.byteLength(),n=this.n.sub(new s(2));;){var i=new s(e.generate(r));if(!(i.cmp(n)>0))return i.iaddn(1),this.keyFromPrivate(i)}},Wi.prototype._truncateToN=function(t,e,r){var n;if(s.isBN(t)||"number"==typeof t)n=(t=new s(t,16)).byteLength();else if("object"==typeof t)n=t.length,t=new s(t,16);else{var i=t.toString();n=i.length+1>>>1,t=new s(i,16)}"number"!=typeof r&&(r=8*n);var o=r-this.n.bitLength();return o>0&&(t=t.ushrn(o)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},Wi.prototype.sign=function(t,e,r,n){if("object"==typeof r&&(n=r,r=null),n||(n={}),"string"!=typeof t&&"number"!=typeof t&&!s.isBN(t)){Ki("object"==typeof t&&t&&"number"==typeof t.length,"Expected message to be an array-like, a hex string, or a BN instance"),Ki(t.length>>>0===t.length);for(var i=0;i<t.length;i++)Ki((255&t[i])===t[i])}e=this.keyFromPrivate(e,r),t=this._truncateToN(t,!1,n.msgBitLength),Ki(!t.isNeg(),"Can not sign a negative message");var o=this.n.byteLength(),a=e.getPrivate().toArray("be",o),l=t.toArray("be",o);Ki(new s(l).eq(t),"Can not sign message");for(var c=new Bi({hash:this.hash,entropy:a,nonce:l,pers:n.pers,persEnc:n.persEnc||"utf8"}),u=this.n.sub(new s(1)),h=0;;h++){var d=n.k?n.k(h):new s(c.generate(this.n.byteLength()));if(!((d=this._truncateToN(d,!0)).cmpn(1)<=0||d.cmp(u)>=0)){var f=this.g.mul(d);if(!f.isInfinity()){var p=f.getX(),m=p.umod(this.n);if(0!==m.cmpn(0)){var g=d.invm(this.n).mul(m.mul(e.getPrivate()).iadd(t));if(0!==(g=g.umod(this.n)).cmpn(0)){var v=(f.getY().isOdd()?1:0)|(0!==p.cmp(m)?2:0);return n.canonical&&g.cmp(this.nh)>0&&(g=this.n.sub(g),v^=1),new Li({r:m,s:g,recoveryParam:v})}}}}}},Wi.prototype.verify=function(t,e,r,n,i){i||(i={}),t=this._truncateToN(t,!1,i.msgBitLength),r=this.keyFromPublic(r,n);var o=(e=new Li(e,"hex")).r,s=e.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;if(s.cmpn(1)<0||s.cmp(this.n)>=0)return!1;var a,l=s.invm(this.n),c=l.mul(t).umod(this.n),u=l.mul(o).umod(this.n);return this.curve._maxwellTrick?!(a=this.g.jmulAdd(c,r.getPublic(),u)).isInfinity()&&a.eqXToP(o):!(a=this.g.mulAdd(c,r.getPublic(),u)).isInfinity()&&0===a.getX().umod(this.n).cmp(o)},Wi.prototype.recoverPubKey=function(t,e,r,n){Ki((3&r)===r,"The recovery param is more than two bits"),e=new Li(e,n);var i=this.n,o=new s(t),a=e.r,l=e.s,c=1&r,u=r>>1;if(a.cmp(this.curve.p.umod(this.curve.n))>=0&&u)throw new Error("Unable to find sencond key candinate");a=u?this.curve.pointFromX(a.add(this.curve.n),c):this.curve.pointFromX(a,c);var h=e.r.invm(i),d=i.sub(o).mul(h).umod(i),f=l.mul(h).umod(i);return this.g.mulAdd(d,a,f)},Wi.prototype.getKeyRecoveryParam=function(t,e,r,n){if(null!==(e=new Li(e,n)).recoveryParam)return e.recoveryParam;for(var i=0;i<4;i++){var o;try{o=this.recoverPubKey(t,e,i)}catch(t){continue}if(o.eq(r))return i}throw new Error("Unable to find valid recovery factor")};var $i=fi(function(t,e){var r=e;r.version="6.6.1",r.utils=vi,r.rand=function(){throw new Error("unsupported")},r.curve=Ii,r.curves=Ni,r.ec=Vi,r.eddsa=null}).ec;const Ji=new g("signing-key/5.8.0");let Qi=null;function Yi(){return Qi||(Qi=new $i("secp256k1")),Qi}class Xi{constructor(t){ut(this,"curve","secp256k1"),ut(this,"privateKey",P(t)),32!==I(this.privateKey)&&Ji.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");const e=Yi().keyFromPrivate(k(this.privateKey));ut(this,"publicKey","0x"+e.getPublic(!1,"hex")),ut(this,"compressedPublicKey","0x"+e.getPublic(!0,"hex")),ut(this,"_isSigningKey",!0)}_addPoint(t){const e=Yi().keyFromPublic(k(this.publicKey)),r=Yi().keyFromPublic(k(t));return"0x"+e.pub.add(r.pub).encodeCompressed("hex")}signDigest(t){const e=Yi().keyFromPrivate(k(this.privateKey)),r=k(t);32!==r.length&&Ji.throwArgumentError("bad digest length","digest",t);const n=e.sign(r,{canonical:!0});return O({recoveryParam:n.recoveryParam,r:F("0x"+n.r.toString(16),32),s:F("0x"+n.s.toString(16),32)})}computeSharedSecret(t){const e=Yi().keyFromPrivate(k(this.privateKey)),r=Yi().keyFromPublic(k(to(t)));return F("0x"+e.derive(r.getPublic()).toString(16),32)}static isSigningKey(t){return!(!t||!t._isSigningKey)}}function Zi(t,e){const r=O(e),n={r:k(r.r),s:k(r.s)};return"0x"+Yi().recoverPubKey(k(t),n,r.recoveryParam).encode("hex",!1)}function to(t,e){const r=k(t);if(32===r.length){const t=new Xi(r);return e?"0x"+Yi().keyFromPrivate(r).getPublic(!0,"hex"):t.publicKey}return 33===r.length?e?P(r):"0x"+Yi().keyFromPublic(r).getPublic(!1,"hex"):65===r.length?e?"0x"+Yi().keyFromPublic(r).getPublic(!0,"hex"):P(r):Ji.throwArgumentError("invalid public or private key","key","[REDACTED]")}const eo=new g("transactions/5.8.0");var ro;function no(t){return"0x"===t?null:ge(t)}function io(t){return"0x"===t?Ne:j.from(t)}!function(t){t[t.legacy=0]="legacy",t[t.eip2930=1]="eip2930",t[t.eip1559=2]="eip1559"}(ro||(ro={}));const oo=[{name:"nonce",maxLength:32,numeric:!0},{name:"gasPrice",maxLength:32,numeric:!0},{name:"gasLimit",maxLength:32,numeric:!0},{name:"to",length:20},{name:"value",maxLength:32,numeric:!0},{name:"data"}],so={chainId:!0,data:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,type:!0,value:!0};function ao(t){return ge(N(te(N(to(t),1)),12))}function lo(t,e){return ao(Zi(k(t),e))}function co(t,e){const r=C(j.from(t).toHexString());return r.length>32&&eo.throwArgumentError("invalid length for "+e,"transaction:"+e,t),r}function uo(t,e){return{address:ge(t),storageKeys:(e||[]).map((e,r)=>(32!==I(e)&&eo.throwArgumentError("invalid access list storageKey",`accessList[${t}:${r}]`,e),e.toLowerCase()))}}function ho(t){if(Array.isArray(t))return t.map((t,e)=>Array.isArray(t)?(t.length>2&&eo.throwArgumentError("access list expected to be [ address, storageKeys[] ]",`value[${e}]`,t),uo(t[0],t[1])):uo(t.address,t.storageKeys));const e=Object.keys(t).map(e=>{const r=t[e].reduce((t,e)=>(t[e]=!0,t),{});return uo(e,Object.keys(r).sort())});return e.sort((t,e)=>t.address.localeCompare(e.address)),e}function fo(t){return ho(t).map(t=>[t.address,t.storageKeys])}function po(t,e){if(null!=t.gasPrice){const e=j.from(t.gasPrice),r=j.from(t.maxFeePerGas||0);e.eq(r)||eo.throwArgumentError("mismatch EIP-1559 gasPrice != maxFeePerGas","tx",{gasPrice:e,maxFeePerGas:r})}const r=[co(t.chainId||0,"chainId"),co(t.nonce||0,"nonce"),co(t.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),co(t.maxFeePerGas||0,"maxFeePerGas"),co(t.gasLimit||0,"gasLimit"),null!=t.to?ge(t.to):"0x",co(t.value||0,"value"),t.data||"0x",fo(t.accessList||[])];if(e){const t=O(e);r.push(co(t.recoveryParam,"recoveryParam")),r.push(C(t.r)),r.push(C(t.s))}return M(["0x02",oe(r)])}function mo(t,e){const r=[co(t.chainId||0,"chainId"),co(t.nonce||0,"nonce"),co(t.gasPrice||0,"gasPrice"),co(t.gasLimit||0,"gasLimit"),null!=t.to?ge(t.to):"0x",co(t.value||0,"value"),t.data||"0x",fo(t.accessList||[])];if(e){const t=O(e);r.push(co(t.recoveryParam,"recoveryParam")),r.push(C(t.r)),r.push(C(t.s))}return M(["0x01",oe(r)])}function go(t,e){if(null==t.type||0===t.type)return null!=t.accessList&&eo.throwArgumentError("untyped transactions do not support accessList; include type: 1","transaction",t),function(t,e){ft(t,so);const r=[];oo.forEach(function(e){let n=t[e.name]||[];const i={};e.numeric&&(i.hexPad="left"),n=k(P(n,i)),e.length&&n.length!==e.length&&n.length>0&&eo.throwArgumentError("invalid length for "+e.name,"transaction:"+e.name,n),e.maxLength&&(n=C(n),n.length>e.maxLength&&eo.throwArgumentError("invalid length for "+e.name,"transaction:"+e.name,n)),r.push(P(n))});let n=0;if(null!=t.chainId?(n=t.chainId,"number"!=typeof n&&eo.throwArgumentError("invalid transaction.chainId","transaction",t)):e&&!b(e)&&e.v>28&&(n=Math.floor((e.v-35)/2)),0!==n&&(r.push(P(n)),r.push("0x"),r.push("0x")),!e)return oe(r);const i=O(e);let o=27+i.recoveryParam;return 0!==n?(r.pop(),r.pop(),r.pop(),o+=2*n+8,i.v>28&&i.v!==o&&eo.throwArgumentError("transaction.chainId/signature.v mismatch","signature",e)):i.v!==o&&eo.throwArgumentError("transaction.chainId/signature.v mismatch","signature",e),r.push(P(o)),r.push(C(k(i.r))),r.push(C(k(i.s))),oe(r)}(t,e);switch(t.type){case 1:return mo(t,e);case 2:return po(t,e)}return eo.throwError(`unsupported transaction type: ${t.type}`,g.errors.UNSUPPORTED_OPERATION,{operation:"serializeTransaction",transactionType:t.type})}function vo(t,e,r){try{const r=io(e[0]).toNumber();if(0!==r&&1!==r)throw new Error("bad recid");t.v=r}catch(t){eo.throwArgumentError("invalid v for transaction type: 1","v",e[0])}t.r=F(e[1],32),t.s=F(e[2],32);try{const e=te(r(t));t.from=lo(e,{r:t.r,s:t.s,recoveryParam:t.v})}catch(t){}}function wo(t){const e=k(t);if(e[0]>127)return function(t){const e=le(t);9!==e.length&&6!==e.length&&eo.throwArgumentError("invalid raw transaction","rawTransaction",t);const r={nonce:io(e[0]).toNumber(),gasPrice:io(e[1]),gasLimit:io(e[2]),to:no(e[3]),value:io(e[4]),data:e[5],chainId:0};if(6===e.length)return r;try{r.v=j.from(e[6]).toNumber()}catch(t){return r}if(r.r=F(e[7],32),r.s=F(e[8],32),j.from(r.r).isZero()&&j.from(r.s).isZero())r.chainId=r.v,r.v=0;else{r.chainId=Math.floor((r.v-35)/2),r.chainId<0&&(r.chainId=0);let n=r.v-27;const i=e.slice(0,6);0!==r.chainId&&(i.push(P(r.chainId)),i.push("0x"),i.push("0x"),n-=2*r.chainId+8);const o=te(oe(i));try{r.from=lo(o,{r:P(r.r),s:P(r.s),recoveryParam:n})}catch(t){}r.hash=te(t)}return r.type=null,r}(e);switch(e[0]){case 1:return function(t){const e=le(t.slice(1));8!==e.length&&11!==e.length&&eo.throwArgumentError("invalid component count for transaction type: 1","payload",P(t));const r={type:1,chainId:io(e[0]).toNumber(),nonce:io(e[1]).toNumber(),gasPrice:io(e[2]),gasLimit:io(e[3]),to:no(e[4]),value:io(e[5]),data:e[6],accessList:ho(e[7])};return 8===e.length||(r.hash=te(t),vo(r,e.slice(8),mo)),r}(e);case 2:return function(t){const e=le(t.slice(1));9!==e.length&&12!==e.length&&eo.throwArgumentError("invalid component count for transaction type: 2","payload",P(t));const r=io(e[2]),n=io(e[3]),i={type:2,chainId:io(e[0]).toNumber(),nonce:io(e[1]).toNumber(),maxPriorityFeePerGas:r,maxFeePerGas:n,gasPrice:null,gasLimit:io(e[4]),to:no(e[5]),value:io(e[6]),data:e[7],accessList:ho(e[8])};return 9===e.length||(i.hash=te(t),vo(i,e.slice(9),po)),i}(e)}return eo.throwError(`unsupported transaction type: ${e[0]}`,g.errors.UNSUPPORTED_OPERATION,{operation:"parseTransaction",transactionType:e[0]})}var yo=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const bo=new g("contracts/5.8.0"),Eo={chainId:!0,data:!0,from:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,value:!0,type:!0,accessList:!0,maxFeePerGas:!0,maxPriorityFeePerGas:!0,customData:!0,ccipReadEnabled:!0};function Ao(t,e){return yo(this,void 0,void 0,function*(){const r=yield e;"string"!=typeof r&&bo.throwArgumentError("invalid address or ENS name","name",r);try{return ge(r)}catch(t){}t||bo.throwError("a provider or signer is needed to resolve ENS names",g.errors.UNSUPPORTED_OPERATION,{operation:"resolveName"});const n=yield t.resolveName(r);return null==n&&bo.throwArgumentError("resolver or addr is not configured for ENS name","name",r),n})}function ko(t,e,r){return yo(this,void 0,void 0,function*(){return Array.isArray(r)?yield Promise.all(r.map((r,n)=>ko(t,Array.isArray(e)?e[n]:e[r.name],r))):"address"===r.type?yield Ao(t,e):"tuple"===r.type?yield ko(t,e,r.components):"array"===r.baseType?Array.isArray(e)?yield Promise.all(e.map(e=>ko(t,e,r.arrayChildren))):Promise.reject(bo.makeError("invalid value for array",g.errors.INVALID_ARGUMENT,{argument:"value",value:e})):e})}function So(t,e,r){return yo(this,void 0,void 0,function*(){let n={};r.length===e.inputs.length+1&&"object"==typeof r[r.length-1]&&(n=pt(r.pop())),bo.checkArgumentCount(r.length,e.inputs.length,"passed to contract"),t.signer?n.from?n.from=dt({override:Ao(t.signer,n.from),signer:t.signer.getAddress()}).then(t=>yo(this,void 0,void 0,function*(){return ge(t.signer)!==t.override&&bo.throwError("Contract with a Signer cannot override from",g.errors.UNSUPPORTED_OPERATION,{operation:"overrides.from"}),t.override})):n.from=t.signer.getAddress():n.from&&(n.from=Ao(t.provider,n.from));const i=yield dt({args:ko(t.signer||t.provider,r,e.inputs),address:t.resolvedAddress,overrides:dt(n)||{}}),o=t.interface.encodeFunctionData(e,i.args),s={data:o,to:i.address},a=i.overrides;if(null!=a.nonce&&(s.nonce=j.from(a.nonce).toNumber()),null!=a.gasLimit&&(s.gasLimit=j.from(a.gasLimit)),null!=a.gasPrice&&(s.gasPrice=j.from(a.gasPrice)),null!=a.maxFeePerGas&&(s.maxFeePerGas=j.from(a.maxFeePerGas)),null!=a.maxPriorityFeePerGas&&(s.maxPriorityFeePerGas=j.from(a.maxPriorityFeePerGas)),null!=a.from&&(s.from=a.from),null!=a.type&&(s.type=a.type),null!=a.accessList&&(s.accessList=ho(a.accessList)),null==s.gasLimit&&null!=e.gas){let t=21e3;const r=k(o);for(let e=0;e<r.length;e++)t+=4,r[e]&&(t+=64);s.gasLimit=j.from(e.gas).add(t)}if(a.value){const t=j.from(a.value);t.isZero()||e.payable||bo.throwError("non-payable method cannot override value",g.errors.UNSUPPORTED_OPERATION,{operation:"overrides.value",value:n.value}),s.value=t}a.customData&&(s.customData=pt(a.customData)),a.ccipReadEnabled&&(s.ccipReadEnabled=!!a.ccipReadEnabled),delete n.nonce,delete n.gasLimit,delete n.gasPrice,delete n.from,delete n.value,delete n.type,delete n.accessList,delete n.maxFeePerGas,delete n.maxPriorityFeePerGas,delete n.customData,delete n.ccipReadEnabled;const l=Object.keys(n).filter(t=>null!=n[t]);return l.length&&bo.throwError(`cannot override ${l.map(t=>JSON.stringify(t)).join(",")}`,g.errors.UNSUPPORTED_OPERATION,{operation:"overrides",overrides:l}),s})}function Co(t,e){const r=e.wait.bind(e);e.wait=e=>r(e).then(e=>(e.events=e.logs.map(r=>{let n=wt(r),i=null;try{i=t.interface.parseLog(r)}catch(t){}return i&&(n.args=i.args,n.decode=(e,r)=>t.interface.decodeEventLog(i.eventFragment,e,r),n.event=i.name,n.eventSignature=i.signature),n.removeListener=()=>t.provider,n.getBlock=()=>t.provider.getBlock(e.blockHash),n.getTransaction=()=>t.provider.getTransaction(e.transactionHash),n.getTransactionReceipt=()=>Promise.resolve(e),n}),e))}function xo(t,e,r){const n=t.signer||t.provider;return function(...i){return yo(this,void 0,void 0,function*(){let o;if(i.length===e.inputs.length+1&&"object"==typeof i[i.length-1]){const t=pt(i.pop());null!=t.blockTag&&(o=yield t.blockTag),delete t.blockTag,i.push(t)}null!=t.deployTransaction&&(yield t._deployed(o));const s=yield So(t,e,i),a=yield n.call(s,o);try{let n=t.interface.decodeFunctionResult(e,a);return r&&1===e.outputs.length&&(n=n[0]),n}catch(e){throw e.code===g.errors.CALL_EXCEPTION&&(e.address=t.address,e.args=i,e.transaction=s),e}})}}function _o(t,e,r){return e.constant?xo(t,e,r):function(t,e){return function(...r){return yo(this,void 0,void 0,function*(){t.signer||bo.throwError("sending a transaction requires a signer",g.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction"}),null!=t.deployTransaction&&(yield t._deployed());const n=yield So(t,e,r),i=yield t.signer.sendTransaction(n);return Co(t,i),i})}}(t,e)}function To(t){return!t.address||null!=t.topics&&0!==t.topics.length?(t.address||"*")+"@"+(t.topics?t.topics.map(t=>Array.isArray(t)?t.join("|"):t).join(":"):""):"*"}class Po{constructor(t,e){ut(this,"tag",t),ut(this,"filter",e),this._listeners=[]}addListener(t,e){this._listeners.push({listener:t,once:e})}removeListener(t){let e=!1;this._listeners=this._listeners.filter(r=>!(!e&&r.listener===t)||(e=!0,!1))}removeAllListeners(){this._listeners=[]}listeners(){return this._listeners.map(t=>t.listener)}listenerCount(){return this._listeners.length}run(t){const e=this.listenerCount();return this._listeners=this._listeners.filter(e=>{const r=t.slice();return setTimeout(()=>{e.listener.apply(this,r)},0),!e.once}),e}prepareEvent(t){}getEmit(t){return[t]}}class Io extends Po{constructor(){super("error",null)}}class No extends Po{constructor(t,e,r,n){const i={address:t};let o=e.getEventTopic(r);n?(o!==n[0]&&bo.throwArgumentError("topic mismatch","topics",n),i.topics=n.slice()):i.topics=[o],super(To(i),i),ut(this,"address",t),ut(this,"interface",e),ut(this,"fragment",r)}prepareEvent(t){super.prepareEvent(t),t.event=this.fragment.name,t.eventSignature=this.fragment.format(),t.decode=(t,e)=>this.interface.decodeEventLog(this.fragment,t,e);try{t.args=this.interface.decodeEventLog(this.fragment,t.data,t.topics)}catch(e){t.args=null,t.decodeError=e}}getEmit(t){const e=Kt(t.args);if(e.length)throw e[0].error;const r=(t.args||[]).slice();return r.push(t),r}}class Mo extends Po{constructor(t,e){super("*",{address:t}),ut(this,"address",t),ut(this,"interface",e)}prepareEvent(t){super.prepareEvent(t);try{const e=this.interface.parseLog(t);t.event=e.name,t.eventSignature=e.signature,t.decode=(t,r)=>this.interface.decodeEventLog(e.eventFragment,t,r),t.args=e.args}catch(t){}}}class Bo{constructor(t,e,r){ut(this,"interface",ht(new.target,"getInterface")(e)),null==r?(ut(this,"provider",null),ut(this,"signer",null)):Cn.isSigner(r)?(ut(this,"provider",r.provider||null),ut(this,"signer",r)):bn.isProvider(r)?(ut(this,"provider",r),ut(this,"signer",null)):bo.throwArgumentError("invalid signer or provider","signerOrProvider",r),ut(this,"callStatic",{}),ut(this,"estimateGas",{}),ut(this,"functions",{}),ut(this,"populateTransaction",{}),ut(this,"filters",{});{const t={};Object.keys(this.interface.events).forEach(e=>{const r=this.interface.events[e];ut(this.filters,e,(...t)=>({address:this.address,topics:this.interface.encodeFilterTopics(r,t)})),t[r.name]||(t[r.name]=[]),t[r.name].push(e)}),Object.keys(t).forEach(e=>{const r=t[e];1===r.length?ut(this.filters,e,this.filters[r[0]]):bo.warn(`Duplicate definition of ${e} (${r.join(", ")})`)})}if(ut(this,"_runningEvents",{}),ut(this,"_wrappedEmits",{}),null==t&&bo.throwArgumentError("invalid contract address or ENS name","addressOrName",t),ut(this,"address",t),this.provider)ut(this,"resolvedAddress",Ao(this.provider,t));else try{ut(this,"resolvedAddress",Promise.resolve(ge(t)))}catch(t){bo.throwError("provider is required to use ENS name as contract address",g.errors.UNSUPPORTED_OPERATION,{operation:"new Contract"})}this.resolvedAddress.catch(t=>{});const n={},i={};Object.keys(this.interface.functions).forEach(t=>{const e=this.interface.functions[t];if(i[t])bo.warn(`Duplicate ABI entry for ${JSON.stringify(t)}`);else{i[t]=!0;{const r=e.name;n[`%${r}`]||(n[`%${r}`]=[]),n[`%${r}`].push(t)}null==this[t]&&ut(this,t,_o(this,e,!0)),null==this.functions[t]&&ut(this.functions,t,_o(this,e,!1)),null==this.callStatic[t]&&ut(this.callStatic,t,xo(this,e,!0)),null==this.populateTransaction[t]&&ut(this.populateTransaction,t,function(t,e){return function(...r){return So(t,e,r)}}(this,e)),null==this.estimateGas[t]&&ut(this.estimateGas,t,function(t,e){const r=t.signer||t.provider;return function(...n){return yo(this,void 0,void 0,function*(){r||bo.throwError("estimate require a provider or signer",g.errors.UNSUPPORTED_OPERATION,{operation:"estimateGas"});const i=yield So(t,e,n);return yield r.estimateGas(i)})}}(this,e))}}),Object.keys(n).forEach(t=>{const e=n[t];if(e.length>1)return;t=t.substring(1);const r=e[0];try{null==this[t]&&ut(this,t,this[r])}catch(t){}null==this.functions[t]&&ut(this.functions,t,this.functions[r]),null==this.callStatic[t]&&ut(this.callStatic,t,this.callStatic[r]),null==this.populateTransaction[t]&&ut(this.populateTransaction,t,this.populateTransaction[r]),null==this.estimateGas[t]&&ut(this.estimateGas,t,this.estimateGas[r])})}static getContractAddress(t){return ve(t)}static getInterface(t){return gn.isInterface(t)?t:new gn(t)}deployed(){return this._deployed()}_deployed(t){return this._deployedPromise||(this.deployTransaction?this._deployedPromise=this.deployTransaction.wait().then(()=>this):this._deployedPromise=this.provider.getCode(this.address,t).then(t=>("0x"===t&&bo.throwError("contract not deployed",g.errors.UNSUPPORTED_OPERATION,{contractAddress:this.address,operation:"getDeployed"}),this))),this._deployedPromise}fallback(t){this.signer||bo.throwError("sending a transactions require a signer",g.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction(fallback)"});const e=pt(t||{});return["from","to"].forEach(function(t){null!=e[t]&&bo.throwError("cannot override "+t,g.errors.UNSUPPORTED_OPERATION,{operation:t})}),e.to=this.resolvedAddress,this.deployed().then(()=>this.signer.sendTransaction(e))}connect(t){"string"==typeof t&&(t=new xn(t,this.provider));const e=new this.constructor(this.address,this.interface,t);return this.deployTransaction&&ut(e,"deployTransaction",this.deployTransaction),e}attach(t){return new this.constructor(t,this.interface,this.signer||this.provider)}static isIndexed(t){return fn.isIndexed(t)}_normalizeRunningEvent(t){return this._runningEvents[t.tag]?this._runningEvents[t.tag]:t}_getRunningEvent(t){if("string"==typeof t){if("error"===t)return this._normalizeRunningEvent(new Io);if("event"===t)return this._normalizeRunningEvent(new Po("event",null));if("*"===t)return this._normalizeRunningEvent(new Mo(this.address,this.interface));const e=this.interface.getEvent(t);return this._normalizeRunningEvent(new No(this.address,this.interface,e))}if(t.topics&&t.topics.length>0){try{const e=t.topics[0];if("string"!=typeof e)throw new Error("invalid topic");const r=this.interface.getEvent(e);return this._normalizeRunningEvent(new No(this.address,this.interface,r,t.topics))}catch(t){}const e={address:this.address,topics:t.topics};return this._normalizeRunningEvent(new Po(To(e),e))}return this._normalizeRunningEvent(new Mo(this.address,this.interface))}_checkRunningEvents(t){if(0===t.listenerCount()){delete this._runningEvents[t.tag];const e=this._wrappedEmits[t.tag];e&&t.filter&&(this.provider.off(t.filter,e),delete this._wrappedEmits[t.tag])}}_wrapEvent(t,e,r){const n=wt(e);return n.removeListener=()=>{r&&(t.removeListener(r),this._checkRunningEvents(t))},n.getBlock=()=>this.provider.getBlock(e.blockHash),n.getTransaction=()=>this.provider.getTransaction(e.transactionHash),n.getTransactionReceipt=()=>this.provider.getTransactionReceipt(e.transactionHash),t.prepareEvent(n),n}_addEventListener(t,e,r){if(this.provider||bo.throwError("events require a provider or a signer with a provider",g.errors.UNSUPPORTED_OPERATION,{operation:"once"}),t.addListener(e,r),this._runningEvents[t.tag]=t,!this._wrappedEmits[t.tag]){const r=r=>{let n=this._wrapEvent(t,r,e);if(null==n.decodeError)try{const e=t.getEmit(n);this.emit(t.filter,...e)}catch(t){n.decodeError=t.error}null!=t.filter&&this.emit("event",n),null!=n.decodeError&&this.emit("error",n.decodeError,n)};this._wrappedEmits[t.tag]=r,null!=t.filter&&this.provider.on(t.filter,r)}}queryFilter(t,e,r){const n=this._getRunningEvent(t),i=pt(n.filter);return"string"==typeof e&&_(e,32)?(null!=r&&bo.throwArgumentError("cannot specify toBlock with blockhash","toBlock",r),i.blockHash=e):(i.fromBlock=null!=e?e:0,i.toBlock=null!=r?r:"latest"),this.provider.getLogs(i).then(t=>t.map(t=>this._wrapEvent(n,t,null)))}on(t,e){return this._addEventListener(this._getRunningEvent(t),e,!1),this}once(t,e){return this._addEventListener(this._getRunningEvent(t),e,!0),this}emit(t,...e){if(!this.provider)return!1;const r=this._getRunningEvent(t),n=r.run(e)>0;return this._checkRunningEvents(r),n}listenerCount(t){return this.provider?null==t?Object.keys(this._runningEvents).reduce((t,e)=>t+this._runningEvents[e].listenerCount(),0):this._getRunningEvent(t).listenerCount():0}listeners(t){if(!this.provider)return[];if(null==t){const t=[];for(let e in this._runningEvents)this._runningEvents[e].listeners().forEach(e=>{t.push(e)});return t}return this._getRunningEvent(t).listeners()}removeAllListeners(t){if(!this.provider)return this;if(null==t){for(const t in this._runningEvents){const e=this._runningEvents[t];e.removeAllListeners(),this._checkRunningEvents(e)}return this}const e=this._getRunningEvent(t);return e.removeAllListeners(),this._checkRunningEvents(e),this}off(t,e){if(!this.provider)return this;const r=this._getRunningEvent(t);return r.removeListener(e),this._checkRunningEvents(r),this}removeListener(t,e){return this.off(t,e)}}class Ro extends Bo{}class Fo{constructor(t){ut(this,"alphabet",t),ut(this,"base",t.length),ut(this,"_alphabetMap",{}),ut(this,"_leader",t.charAt(0));for(let e=0;e<t.length;e++)this._alphabetMap[t.charAt(e)]=e}encode(t){let e=k(t);if(0===e.length)return"";let r=[0];for(let t=0;t<e.length;++t){let n=e[t];for(let t=0;t<r.length;++t)n+=r[t]<<8,r[t]=n%this.base,n=n/this.base|0;for(;n>0;)r.push(n%this.base),n=n/this.base|0}let n="";for(let t=0;0===e[t]&&t<e.length-1;++t)n+=this._leader;for(let t=r.length-1;t>=0;--t)n+=this.alphabet[r[t]];return n}decode(t){if("string"!=typeof t)throw new TypeError("Expected String");let e=[];if(0===t.length)return new Uint8Array(e);e.push(0);for(let r=0;r<t.length;r++){let n=this._alphabetMap[t[r]];if(void 0===n)throw new Error("Non-base"+this.base+" character");let i=n;for(let t=0;t<e.length;++t)i+=e[t]*this.base,e[t]=255&i,i>>=8;for(;i>0;)e.push(255&i),i>>=8}for(let r=0;t[r]===this._leader&&r<t.length-1;++r)e.push(0);return k(new Uint8Array(e.reverse()))}}new Fo("abcdefghijklmnopqrstuvwxyz234567");const Oo=new Fo("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");var Do;!function(t){t.sha256="sha256",t.sha512="sha512"}(Do||(Do={}));const Uo=new g("sha2/5.8.0");function Lo(t){return"0x"+di.ripemd160().update(k(t)).digest("hex")}function qo(t){return"0x"+di.sha256().update(k(t)).digest("hex")}function zo(t,e,r){return Do[t]||Uo.throwError("unsupported algorithm "+t,g.errors.UNSUPPORTED_OPERATION,{operation:"hmac",algorithm:t}),"0x"+di.hmac(di[t],k(e)).update(k(r)).digest("hex")}function Go(t,e,r,n,i){let o;t=k(t),e=k(e);let s=1;const a=new Uint8Array(n),l=new Uint8Array(e.length+4);let c,u;l.set(e);for(let h=1;h<=s;h++){l[e.length]=h>>24&255,l[e.length+1]=h>>16&255,l[e.length+2]=h>>8&255,l[e.length+3]=255&h;let d=k(zo(i,t,l));o||(o=d.length,u=new Uint8Array(o),s=Math.ceil(n/o),c=n-(s-1)*o),u.set(d);for(let e=1;e<r;e++){d=k(zo(i,t,d));for(let t=0;t<o;t++)u[t]^=d[t]}const f=(h-1)*o,p=h===s?c:o;a.set(k(u).slice(0,p),f)}return P(a)}const Ho=new g("wordlists/5.8.0");class jo{constructor(t){Ho.checkAbstract(new.target,jo),ut(this,"locale",t)}split(t){return t.toLowerCase().split(/ +/g)}join(t){return t.join(" ")}static check(t){const e=[];for(let r=0;r<2048;r++){const n=t.getWord(r);if(r!==t.getWordIndex(n))return"0x";e.push(n)}return mr(e.join("\n")+"\n")}static register(t,e){e||(e=t.locale)}}let Ko=null;function Wo(t){if(null==Ko&&(Ko="AbandonAbilityAbleAboutAboveAbsentAbsorbAbstractAbsurdAbuseAccessAccidentAccountAccuseAchieveAcidAcousticAcquireAcrossActActionActorActressActualAdaptAddAddictAddressAdjustAdmitAdultAdvanceAdviceAerobicAffairAffordAfraidAgainAgeAgentAgreeAheadAimAirAirportAisleAlarmAlbumAlcoholAlertAlienAllAlleyAllowAlmostAloneAlphaAlreadyAlsoAlterAlwaysAmateurAmazingAmongAmountAmusedAnalystAnchorAncientAngerAngleAngryAnimalAnkleAnnounceAnnualAnotherAnswerAntennaAntiqueAnxietyAnyApartApologyAppearAppleApproveAprilArchArcticAreaArenaArgueArmArmedArmorArmyAroundArrangeArrestArriveArrowArtArtefactArtistArtworkAskAspectAssaultAssetAssistAssumeAsthmaAthleteAtomAttackAttendAttitudeAttractAuctionAuditAugustAuntAuthorAutoAutumnAverageAvocadoAvoidAwakeAwareAwayAwesomeAwfulAwkwardAxisBabyBachelorBaconBadgeBagBalanceBalconyBallBambooBananaBannerBarBarelyBargainBarrelBaseBasicBasketBattleBeachBeanBeautyBecauseBecomeBeefBeforeBeginBehaveBehindBelieveBelowBeltBenchBenefitBestBetrayBetterBetweenBeyondBicycleBidBikeBindBiologyBirdBirthBitterBlackBladeBlameBlanketBlastBleakBlessBlindBloodBlossomBlouseBlueBlurBlushBoardBoatBodyBoilBombBoneBonusBookBoostBorderBoringBorrowBossBottomBounceBoxBoyBracketBrainBrandBrassBraveBreadBreezeBrickBridgeBriefBrightBringBriskBroccoliBrokenBronzeBroomBrotherBrownBrushBubbleBuddyBudgetBuffaloBuildBulbBulkBulletBundleBunkerBurdenBurgerBurstBusBusinessBusyButterBuyerBuzzCabbageCabinCableCactusCageCakeCallCalmCameraCampCanCanalCancelCandyCannonCanoeCanvasCanyonCapableCapitalCaptainCarCarbonCardCargoCarpetCarryCartCaseCashCasinoCastleCasualCatCatalogCatchCategoryCattleCaughtCauseCautionCaveCeilingCeleryCementCensusCenturyCerealCertainChairChalkChampionChangeChaosChapterChargeChaseChatCheapCheckCheeseChefCherryChestChickenChiefChildChimneyChoiceChooseChronicChuckleChunkChurnCigarCinnamonCircleCitizenCityCivilClaimClapClarifyClawClayCleanClerkCleverClickClientCliffClimbClinicClipClockClogCloseClothCloudClownClubClumpClusterClutchCoachCoastCoconutCodeCoffeeCoilCoinCollectColorColumnCombineComeComfortComicCommonCompanyConcertConductConfirmCongressConnectConsiderControlConvinceCookCoolCopperCopyCoralCoreCornCorrectCostCottonCouchCountryCoupleCourseCousinCoverCoyoteCrackCradleCraftCramCraneCrashCraterCrawlCrazyCreamCreditCreekCrewCricketCrimeCrispCriticCropCrossCrouchCrowdCrucialCruelCruiseCrumbleCrunchCrushCryCrystalCubeCultureCupCupboardCuriousCurrentCurtainCurveCushionCustomCuteCycleDadDamageDampDanceDangerDaringDashDaughterDawnDayDealDebateDebrisDecadeDecemberDecideDeclineDecorateDecreaseDeerDefenseDefineDefyDegreeDelayDeliverDemandDemiseDenialDentistDenyDepartDependDepositDepthDeputyDeriveDescribeDesertDesignDeskDespairDestroyDetailDetectDevelopDeviceDevoteDiagramDialDiamondDiaryDiceDieselDietDifferDigitalDignityDilemmaDinnerDinosaurDirectDirtDisagreeDiscoverDiseaseDishDismissDisorderDisplayDistanceDivertDivideDivorceDizzyDoctorDocumentDogDollDolphinDomainDonateDonkeyDonorDoorDoseDoubleDoveDraftDragonDramaDrasticDrawDreamDressDriftDrillDrinkDripDriveDropDrumDryDuckDumbDuneDuringDustDutchDutyDwarfDynamicEagerEagleEarlyEarnEarthEasilyEastEasyEchoEcologyEconomyEdgeEditEducateEffortEggEightEitherElbowElderElectricElegantElementElephantElevatorEliteElseEmbarkEmbodyEmbraceEmergeEmotionEmployEmpowerEmptyEnableEnactEndEndlessEndorseEnemyEnergyEnforceEngageEngineEnhanceEnjoyEnlistEnoughEnrichEnrollEnsureEnterEntireEntryEnvelopeEpisodeEqualEquipEraEraseErodeErosionErrorEruptEscapeEssayEssenceEstateEternalEthicsEvidenceEvilEvokeEvolveExactExampleExcessExchangeExciteExcludeExcuseExecuteExerciseExhaustExhibitExileExistExitExoticExpandExpectExpireExplainExposeExpressExtendExtraEyeEyebrowFabricFaceFacultyFadeFaintFaithFallFalseFameFamilyFamousFanFancyFantasyFarmFashionFatFatalFatherFatigueFaultFavoriteFeatureFebruaryFederalFeeFeedFeelFemaleFenceFestivalFetchFeverFewFiberFictionFieldFigureFileFilmFilterFinalFindFineFingerFinishFireFirmFirstFiscalFishFitFitnessFixFlagFlameFlashFlatFlavorFleeFlightFlipFloatFlockFloorFlowerFluidFlushFlyFoamFocusFogFoilFoldFollowFoodFootForceForestForgetForkFortuneForumForwardFossilFosterFoundFoxFragileFrameFrequentFreshFriendFringeFrogFrontFrostFrownFrozenFruitFuelFunFunnyFurnaceFuryFutureGadgetGainGalaxyGalleryGameGapGarageGarbageGardenGarlicGarmentGasGaspGateGatherGaugeGazeGeneralGeniusGenreGentleGenuineGestureGhostGiantGiftGiggleGingerGiraffeGirlGiveGladGlanceGlareGlassGlideGlimpseGlobeGloomGloryGloveGlowGlueGoatGoddessGoldGoodGooseGorillaGospelGossipGovernGownGrabGraceGrainGrantGrapeGrassGravityGreatGreenGridGriefGritGroceryGroupGrowGruntGuardGuessGuideGuiltGuitarGunGymHabitHairHalfHammerHamsterHandHappyHarborHardHarshHarvestHatHaveHawkHazardHeadHealthHeartHeavyHedgehogHeightHelloHelmetHelpHenHeroHiddenHighHillHintHipHireHistoryHobbyHockeyHoldHoleHolidayHollowHomeHoneyHoodHopeHornHorrorHorseHospitalHostHotelHourHoverHubHugeHumanHumbleHumorHundredHungryHuntHurdleHurryHurtHusbandHybridIceIconIdeaIdentifyIdleIgnoreIllIllegalIllnessImageImitateImmenseImmuneImpactImposeImproveImpulseInchIncludeIncomeIncreaseIndexIndicateIndoorIndustryInfantInflictInformInhaleInheritInitialInjectInjuryInmateInnerInnocentInputInquiryInsaneInsectInsideInspireInstallIntactInterestIntoInvestInviteInvolveIronIslandIsolateIssueItemIvoryJacketJaguarJarJazzJealousJeansJellyJewelJobJoinJokeJourneyJoyJudgeJuiceJumpJungleJuniorJunkJustKangarooKeenKeepKetchupKeyKickKidKidneyKindKingdomKissKitKitchenKiteKittenKiwiKneeKnifeKnockKnowLabLabelLaborLadderLadyLakeLampLanguageLaptopLargeLaterLatinLaughLaundryLavaLawLawnLawsuitLayerLazyLeaderLeafLearnLeaveLectureLeftLegLegalLegendLeisureLemonLendLengthLensLeopardLessonLetterLevelLiarLibertyLibraryLicenseLifeLiftLightLikeLimbLimitLinkLionLiquidListLittleLiveLizardLoadLoanLobsterLocalLockLogicLonelyLongLoopLotteryLoudLoungeLoveLoyalLuckyLuggageLumberLunarLunchLuxuryLyricsMachineMadMagicMagnetMaidMailMainMajorMakeMammalManManageMandateMangoMansionManualMapleMarbleMarchMarginMarineMarketMarriageMaskMassMasterMatchMaterialMathMatrixMatterMaximumMazeMeadowMeanMeasureMeatMechanicMedalMediaMelodyMeltMemberMemoryMentionMenuMercyMergeMeritMerryMeshMessageMetalMethodMiddleMidnightMilkMillionMimicMindMinimumMinorMinuteMiracleMirrorMiseryMissMistakeMixMixedMixtureMobileModelModifyMomMomentMonitorMonkeyMonsterMonthMoonMoralMoreMorningMosquitoMotherMotionMotorMountainMouseMoveMovieMuchMuffinMuleMultiplyMuscleMuseumMushroomMusicMustMutualMyselfMysteryMythNaiveNameNapkinNarrowNastyNationNatureNearNeckNeedNegativeNeglectNeitherNephewNerveNestNetNetworkNeutralNeverNewsNextNiceNightNobleNoiseNomineeNoodleNormalNorthNoseNotableNoteNothingNoticeNovelNowNuclearNumberNurseNutOakObeyObjectObligeObscureObserveObtainObviousOccurOceanOctoberOdorOffOfferOfficeOftenOilOkayOldOliveOlympicOmitOnceOneOnionOnlineOnlyOpenOperaOpinionOpposeOptionOrangeOrbitOrchardOrderOrdinaryOrganOrientOriginalOrphanOstrichOtherOutdoorOuterOutputOutsideOvalOvenOverOwnOwnerOxygenOysterOzonePactPaddlePagePairPalacePalmPandaPanelPanicPantherPaperParadeParentParkParrotPartyPassPatchPathPatientPatrolPatternPausePavePaymentPeacePeanutPearPeasantPelicanPenPenaltyPencilPeoplePepperPerfectPermitPersonPetPhonePhotoPhrasePhysicalPianoPicnicPicturePiecePigPigeonPillPilotPinkPioneerPipePistolPitchPizzaPlacePlanetPlasticPlatePlayPleasePledgePluckPlugPlungePoemPoetPointPolarPolePolicePondPonyPoolPopularPortionPositionPossiblePostPotatoPotteryPovertyPowderPowerPracticePraisePredictPreferPreparePresentPrettyPreventPricePridePrimaryPrintPriorityPrisonPrivatePrizeProblemProcessProduceProfitProgramProjectPromoteProofPropertyProsperProtectProudProvidePublicPuddingPullPulpPulsePumpkinPunchPupilPuppyPurchasePurityPurposePursePushPutPuzzlePyramidQualityQuantumQuarterQuestionQuickQuitQuizQuoteRabbitRaccoonRaceRackRadarRadioRailRainRaiseRallyRampRanchRandomRangeRapidRareRateRatherRavenRawRazorReadyRealReasonRebelRebuildRecallReceiveRecipeRecordRecycleReduceReflectReformRefuseRegionRegretRegularRejectRelaxReleaseReliefRelyRemainRememberRemindRemoveRenderRenewRentReopenRepairRepeatReplaceReportRequireRescueResembleResistResourceResponseResultRetireRetreatReturnReunionRevealReviewRewardRhythmRibRibbonRiceRichRideRidgeRifleRightRigidRingRiotRippleRiskRitualRivalRiverRoadRoastRobotRobustRocketRomanceRoofRookieRoomRoseRotateRoughRoundRouteRoyalRubberRudeRugRuleRunRunwayRuralSadSaddleSadnessSafeSailSaladSalmonSalonSaltSaluteSameSampleSandSatisfySatoshiSauceSausageSaveSayScaleScanScareScatterSceneSchemeSchoolScienceScissorsScorpionScoutScrapScreenScriptScrubSeaSearchSeasonSeatSecondSecretSectionSecuritySeedSeekSegmentSelectSellSeminarSeniorSenseSentenceSeriesServiceSessionSettleSetupSevenShadowShaftShallowShareShedShellSheriffShieldShiftShineShipShiverShockShoeShootShopShortShoulderShoveShrimpShrugShuffleShySiblingSickSideSiegeSightSignSilentSilkSillySilverSimilarSimpleSinceSingSirenSisterSituateSixSizeSkateSketchSkiSkillSkinSkirtSkullSlabSlamSleepSlenderSliceSlideSlightSlimSloganSlotSlowSlushSmallSmartSmileSmokeSmoothSnackSnakeSnapSniffSnowSoapSoccerSocialSockSodaSoftSolarSoldierSolidSolutionSolveSomeoneSongSoonSorrySortSoulSoundSoupSourceSouthSpaceSpareSpatialSpawnSpeakSpecialSpeedSpellSpendSphereSpiceSpiderSpikeSpinSpiritSplitSpoilSponsorSpoonSportSpotSpraySpreadSpringSpySquareSqueezeSquirrelStableStadiumStaffStageStairsStampStandStartStateStaySteakSteelStemStepStereoStickStillStingStockStomachStoneStoolStoryStoveStrategyStreetStrikeStrongStruggleStudentStuffStumbleStyleSubjectSubmitSubwaySuccessSuchSuddenSufferSugarSuggestSuitSummerSunSunnySunsetSuperSupplySupremeSureSurfaceSurgeSurpriseSurroundSurveySuspectSustainSwallowSwampSwapSwarmSwearSweetSwiftSwimSwingSwitchSwordSymbolSymptomSyrupSystemTableTackleTagTailTalentTalkTankTapeTargetTaskTasteTattooTaxiTeachTeamTellTenTenantTennisTentTermTestTextThankThatThemeThenTheoryThereTheyThingThisThoughtThreeThriveThrowThumbThunderTicketTideTigerTiltTimberTimeTinyTipTiredTissueTitleToastTobaccoTodayToddlerToeTogetherToiletTokenTomatoTomorrowToneTongueTonightToolToothTopTopicToppleTorchTornadoTortoiseTossTotalTouristTowardTowerTownToyTrackTradeTrafficTragicTrainTransferTrapTrashTravelTrayTreatTreeTrendTrialTribeTrickTriggerTrimTripTrophyTroubleTruckTrueTrulyTrumpetTrustTruthTryTubeTuitionTumbleTunaTunnelTurkeyTurnTurtleTwelveTwentyTwiceTwinTwistTwoTypeTypicalUglyUmbrellaUnableUnawareUncleUncoverUnderUndoUnfairUnfoldUnhappyUniformUniqueUnitUniverseUnknownUnlockUntilUnusualUnveilUpdateUpgradeUpholdUponUpperUpsetUrbanUrgeUsageUseUsedUsefulUselessUsualUtilityVacantVacuumVagueValidValleyValveVanVanishVaporVariousVastVaultVehicleVelvetVendorVentureVenueVerbVerifyVersionVeryVesselVeteranViableVibrantViciousVictoryVideoViewVillageVintageViolinVirtualVirusVisaVisitVisualVitalVividVocalVoiceVoidVolcanoVolumeVoteVoyageWageWagonWaitWalkWallWalnutWantWarfareWarmWarriorWashWaspWasteWaterWaveWayWealthWeaponWearWeaselWeatherWebWeddingWeekendWeirdWelcomeWestWetWhaleWhatWheatWheelWhenWhereWhipWhisperWideWidthWifeWildWillWinWindowWineWingWinkWinnerWinterWireWisdomWiseWishWitnessWolfWomanWonderWoodWoolWordWorkWorldWorryWorthWrapWreckWrestleWristWriteWrongYardYearYellowYouYoungYouthZebraZeroZoneZoo".replace(/([A-Z])/g," $1").toLowerCase().substring(1).split(" "),"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60"!==jo.check(t)))throw Ko=null,new Error("BIP39 Wordlist for en (English) FAILED")}const Vo=new class extends jo{constructor(){super("en")}getWord(t){return Wo(this),Ko[t]}getWordIndex(t){return Wo(this),Ko.indexOf(t)}};jo.register(Vo);const $o={en:Vo},Jo=new g("hdnode/5.8.0"),Qo=j.from("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),Yo=Ve("Bitcoin seed"),Xo=2147483648;function Zo(t){return(1<<t)-1<<8-t}function ts(t){return(1<<t)-1}function es(t){return F(P(t),32)}function rs(t){return Oo.encode(S([t,N(qo(qo(t)),0,4)]))}function ns(t){if(null==t)return $o.en;if("string"==typeof t){const e=$o[t];return null==e&&Jo.throwArgumentError("unknown locale","wordlist",t),e}return t}const is={},os="m/44'/60'/0'/0/0";class ss{constructor(t,e,r,n,i,o,s,a){if(t!==is)throw new Error("HDNode constructor cannot be called directly");if(e){const t=new Xi(e);ut(this,"privateKey",t.privateKey),ut(this,"publicKey",t.compressedPublicKey)}else ut(this,"privateKey",null),ut(this,"publicKey",P(r));ut(this,"parentFingerprint",n),ut(this,"fingerprint",N(Lo(qo(this.publicKey)),0,4)),ut(this,"address",ao(this.publicKey)),ut(this,"chainCode",i),ut(this,"index",o),ut(this,"depth",s),null==a?(ut(this,"mnemonic",null),ut(this,"path",null)):"string"==typeof a?(ut(this,"mnemonic",null),ut(this,"path",a)):(ut(this,"mnemonic",a),ut(this,"path",a.path))}get extendedKey(){if(this.depth>=256)throw new Error("Depth too large!");return rs(S([null!=this.privateKey?"0x0488ADE4":"0x0488B21E",P(this.depth),this.parentFingerprint,F(P(this.index),4),this.chainCode,null!=this.privateKey?S(["0x00",this.privateKey]):this.publicKey]))}neuter(){return new ss(is,null,this.publicKey,this.parentFingerprint,this.chainCode,this.index,this.depth,this.path)}_derive(t){if(t>4294967295)throw new Error("invalid index - "+String(t));let e=this.path;e&&(e+="/"+(2147483647&t));const r=new Uint8Array(37);if(t&Xo){if(!this.privateKey)throw new Error("cannot derive child of neutered node");r.set(k(this.privateKey),1),e&&(e+="'")}else r.set(k(this.publicKey));for(let e=24;e>=0;e-=8)r[33+(e>>3)]=t>>24-e&255;const n=k(zo(Do.sha512,this.chainCode,r)),i=n.slice(0,32),o=n.slice(32);let s=null,a=null;if(this.privateKey)s=es(j.from(i).add(this.privateKey).mod(Qo));else{a=new Xi(P(i))._addPoint(this.publicKey)}let l=e;const c=this.mnemonic;return c&&(l=Object.freeze({phrase:c.phrase,path:e,locale:c.locale||"en"})),new ss(is,s,a,this.fingerprint,es(o),t,this.depth+1,l)}derivePath(t){const e=t.split("/");if(0===e.length||"m"===e[0]&&0!==this.depth)throw new Error("invalid path - "+t);"m"===e[0]&&e.shift();let r=this;for(let t=0;t<e.length;t++){const n=e[t];if(n.match(/^[0-9]+'$/)){const t=parseInt(n.substring(0,n.length-1));if(t>=Xo)throw new Error("invalid path index - "+n);r=r._derive(Xo+t)}else{if(!n.match(/^[0-9]+$/))throw new Error("invalid path component - "+n);{const t=parseInt(n);if(t>=Xo)throw new Error("invalid path index - "+n);r=r._derive(t)}}}return r}static _fromSeed(t,e){const r=k(t);if(r.length<16||r.length>64)throw new Error("invalid seed");const n=k(zo(Do.sha512,Yo,r));return new ss(is,es(n.slice(0,32)),null,"0x00000000",es(n.slice(32)),0,0,e)}static fromMnemonic(t,e,r){return t=cs(ls(t,r=ns(r)),r),ss._fromSeed(as(t,e),{phrase:t,path:"m",locale:r.locale})}static fromSeed(t){return ss._fromSeed(t,null)}static fromExtendedKey(t){const e=Oo.decode(t);82===e.length&&rs(e.slice(0,78))===t||Jo.throwArgumentError("invalid extended key","extendedKey","[REDACTED]");const r=e[4],n=P(e.slice(5,9)),i=parseInt(P(e.slice(9,13)).substring(2),16),o=P(e.slice(13,45)),s=e.slice(45,78);switch(P(e.slice(0,4))){case"0x0488b21e":case"0x043587cf":return new ss(is,null,P(s),n,o,i,r,null);case"0x0488ade4":case"0x04358394 ":if(0!==s[0])break;return new ss(is,P(s.slice(1)),null,n,o,i,r,null)}return Jo.throwArgumentError("invalid extended key","extendedKey","[REDACTED]")}}function as(t,e){e||(e="");const r=Ve("mnemonic"+e,Ge.NFKD);return Go(Ve(t,Ge.NFKD),r,2048,64,"sha512")}function ls(t,e){e=ns(e),Jo.checkNormalize();const r=e.split(t);if(r.length%3!=0)throw new Error("invalid mnemonic");const n=k(new Uint8Array(Math.ceil(11*r.length/8)));let i=0;for(let t=0;t<r.length;t++){let o=e.getWordIndex(r[t].normalize("NFKD"));if(-1===o)throw new Error("invalid mnemonic");for(let t=0;t<11;t++)o&1<<10-t&&(n[i>>3]|=1<<7-i%8),i++}const o=32*r.length/3,s=Zo(r.length/3);if((k(qo(n.slice(0,o/8)))[0]&s)!==(n[n.length-1]&s))throw new Error("invalid checksum");return P(n.slice(0,o/8))}function cs(t,e){if(e=ns(e),(t=k(t)).length%4!=0||t.length<16||t.length>32)throw new Error("invalid entropy");const r=[0];let n=11;for(let e=0;e<t.length;e++)n>8?(r[r.length-1]<<=8,r[r.length-1]|=t[e],n-=8):(r[r.length-1]<<=n,r[r.length-1]|=t[e]>>8-n,r.push(t[e]&ts(8-n)),n+=3);const i=t.length/4,o=k(qo(t))[0]&Zo(i);return r[r.length-1]<<=i,r[r.length-1]|=o>>8-i,e.join(r.map(t=>e.getWord(t)))}const us=new g("random/5.8.0");const hs=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("unable to locate global object")}();let ds=hs.crypto||hs.msCrypto;function fs(t){(t<=0||t>1024||t%1||t!=t)&&us.throwArgumentError("invalid length","length",t);const e=new Uint8Array(t);return ds.getRandomValues(e),k(e)}function ps(t){for(let e=(t=t.slice()).length-1;e>0;e--){const r=Math.floor(Math.random()*(e+1)),n=t[e];t[e]=t[r],t[r]=n}return t}ds&&ds.getRandomValues||(us.warn("WARNING: Missing strong random number source"),ds={getRandomValues:function(t){return us.throwError("no secure random source avaialble",g.errors.UNSUPPORTED_OPERATION,{operation:"crypto.getRandomValues"})}});var ms,gs={exports:{}};var vs=(ms||(ms=1,function(t){!function(){function e(t){return parseInt(t)===t}function r(t){if(!e(t.length))return!1;for(var r=0;r<t.length;r++)if(!e(t[r])||t[r]<0||t[r]>255)return!1;return!0}function n(t,n){if(t.buffer&&ArrayBuffer.isView(t)&&"Uint8Array"===t.name)return n&&(t=t.slice?t.slice():Array.prototype.slice.call(t)),t;if(Array.isArray(t)){if(!r(t))throw new Error("Array contains invalid value: "+t);return new Uint8Array(t)}if(e(t.length)&&r(t))return new Uint8Array(t);throw new Error("unsupported array-like object")}function i(t){return new Uint8Array(t)}function o(t,e,r,n,i){null==n&&null==i||(t=t.slice?t.slice(n,i):Array.prototype.slice.call(t,n,i)),e.set(t,r)}var s,a={toBytes:function(t){var e=[],r=0;for(t=encodeURI(t);r<t.length;){var i=t.charCodeAt(r++);37===i?(e.push(parseInt(t.substr(r,2),16)),r+=2):e.push(i)}return n(e)},fromBytes:function(t){for(var e=[],r=0;r<t.length;){var n=t[r];n<128?(e.push(String.fromCharCode(n)),r++):n>191&&n<224?(e.push(String.fromCharCode((31&n)<<6|63&t[r+1])),r+=2):(e.push(String.fromCharCode((15&n)<<12|(63&t[r+1])<<6|63&t[r+2])),r+=3)}return e.join("")}},l=(s="0123456789abcdef",{toBytes:function(t){for(var e=[],r=0;r<t.length;r+=2)e.push(parseInt(t.substr(r,2),16));return e},fromBytes:function(t){for(var e=[],r=0;r<t.length;r++){var n=t[r];e.push(s[(240&n)>>4]+s[15&n])}return e.join("")}}),c={16:10,24:12,32:14},u=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],h=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],d=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],f=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],p=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],m=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],g=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],v=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],w=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],y=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],b=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],E=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],A=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],k=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],S=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function C(t){for(var e=[],r=0;r<t.length;r+=4)e.push(t[r]<<24|t[r+1]<<16|t[r+2]<<8|t[r+3]);return e}var x=function(t){if(!(this instanceof x))throw Error("AES must be instanitated with `new`");Object.defineProperty(this,"key",{value:n(t,!0)}),this._prepare()};x.prototype._prepare=function(){var t=c[this.key.length];if(null==t)throw new Error("invalid key size (must be 16, 24 or 32 bytes)");this._Ke=[],this._Kd=[];for(var e=0;e<=t;e++)this._Ke.push([0,0,0,0]),this._Kd.push([0,0,0,0]);var r,n=4*(t+1),i=this.key.length/4,o=C(this.key);for(e=0;e<i;e++)r=e>>2,this._Ke[r][e%4]=o[e],this._Kd[t-r][e%4]=o[e];for(var s,a=0,l=i;l<n;){if(s=o[i-1],o[0]^=h[s>>16&255]<<24^h[s>>8&255]<<16^h[255&s]<<8^h[s>>24&255]^u[a]<<24,a+=1,8!=i)for(e=1;e<i;e++)o[e]^=o[e-1];else{for(e=1;e<i/2;e++)o[e]^=o[e-1];for(s=o[i/2-1],o[i/2]^=h[255&s]^h[s>>8&255]<<8^h[s>>16&255]<<16^h[s>>24&255]<<24,e=i/2+1;e<i;e++)o[e]^=o[e-1]}for(e=0;e<i&&l<n;)d=l>>2,f=l%4,this._Ke[d][f]=o[e],this._Kd[t-d][f]=o[e++],l++}for(var d=1;d<t;d++)for(var f=0;f<4;f++)s=this._Kd[d][f],this._Kd[d][f]=E[s>>24&255]^A[s>>16&255]^k[s>>8&255]^S[255&s]},x.prototype.encrypt=function(t){if(16!=t.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var e=this._Ke.length-1,r=[0,0,0,0],n=C(t),o=0;o<4;o++)n[o]^=this._Ke[0][o];for(var s=1;s<e;s++){for(o=0;o<4;o++)r[o]=f[n[o]>>24&255]^p[n[(o+1)%4]>>16&255]^m[n[(o+2)%4]>>8&255]^g[255&n[(o+3)%4]]^this._Ke[s][o];n=r.slice()}var a,l=i(16);for(o=0;o<4;o++)a=this._Ke[e][o],l[4*o]=255&(h[n[o]>>24&255]^a>>24),l[4*o+1]=255&(h[n[(o+1)%4]>>16&255]^a>>16),l[4*o+2]=255&(h[n[(o+2)%4]>>8&255]^a>>8),l[4*o+3]=255&(h[255&n[(o+3)%4]]^a);return l},x.prototype.decrypt=function(t){if(16!=t.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var e=this._Kd.length-1,r=[0,0,0,0],n=C(t),o=0;o<4;o++)n[o]^=this._Kd[0][o];for(var s=1;s<e;s++){for(o=0;o<4;o++)r[o]=v[n[o]>>24&255]^w[n[(o+3)%4]>>16&255]^y[n[(o+2)%4]>>8&255]^b[255&n[(o+1)%4]]^this._Kd[s][o];n=r.slice()}var a,l=i(16);for(o=0;o<4;o++)a=this._Kd[e][o],l[4*o]=255&(d[n[o]>>24&255]^a>>24),l[4*o+1]=255&(d[n[(o+3)%4]>>16&255]^a>>16),l[4*o+2]=255&(d[n[(o+2)%4]>>8&255]^a>>8),l[4*o+3]=255&(d[255&n[(o+1)%4]]^a);return l};var _=function(t){if(!(this instanceof _))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new x(t)};_.prototype.encrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),s=0;s<t.length;s+=16)o(t,r,0,s,s+16),o(r=this._aes.encrypt(r),e,s);return e},_.prototype.decrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),s=0;s<t.length;s+=16)o(t,r,0,s,s+16),o(r=this._aes.decrypt(r),e,s);return e};var T=function(t,e){if(!(this instanceof T))throw Error("AES must be instanitated with `new`");if(this.description="Cipher Block Chaining",this.name="cbc",e){if(16!=e.length)throw new Error("invalid initialation vector size (must be 16 bytes)")}else e=i(16);this._lastCipherblock=n(e,!0),this._aes=new x(t)};T.prototype.encrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),s=0;s<t.length;s+=16){o(t,r,0,s,s+16);for(var a=0;a<16;a++)r[a]^=this._lastCipherblock[a];this._lastCipherblock=this._aes.encrypt(r),o(this._lastCipherblock,e,s)}return e},T.prototype.decrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),s=0;s<t.length;s+=16){o(t,r,0,s,s+16),r=this._aes.decrypt(r);for(var a=0;a<16;a++)e[s+a]=r[a]^this._lastCipherblock[a];o(t,this._lastCipherblock,0,s,s+16)}return e};var P=function(t,e,r){if(!(this instanceof P))throw Error("AES must be instanitated with `new`");if(this.description="Cipher Feedback",this.name="cfb",e){if(16!=e.length)throw new Error("invalid initialation vector size (must be 16 size)")}else e=i(16);r||(r=1),this.segmentSize=r,this._shiftRegister=n(e,!0),this._aes=new x(t)};P.prototype.encrypt=function(t){if(t.length%this.segmentSize!=0)throw new Error("invalid plaintext size (must be segmentSize bytes)");for(var e,r=n(t,!0),i=0;i<r.length;i+=this.segmentSize){e=this._aes.encrypt(this._shiftRegister);for(var s=0;s<this.segmentSize;s++)r[i+s]^=e[s];o(this._shiftRegister,this._shiftRegister,0,this.segmentSize),o(r,this._shiftRegister,16-this.segmentSize,i,i+this.segmentSize)}return r},P.prototype.decrypt=function(t){if(t.length%this.segmentSize!=0)throw new Error("invalid ciphertext size (must be segmentSize bytes)");for(var e,r=n(t,!0),i=0;i<r.length;i+=this.segmentSize){e=this._aes.encrypt(this._shiftRegister);for(var s=0;s<this.segmentSize;s++)r[i+s]^=e[s];o(this._shiftRegister,this._shiftRegister,0,this.segmentSize),o(t,this._shiftRegister,16-this.segmentSize,i,i+this.segmentSize)}return r};var I=function(t,e){if(!(this instanceof I))throw Error("AES must be instanitated with `new`");if(this.description="Output Feedback",this.name="ofb",e){if(16!=e.length)throw new Error("invalid initialation vector size (must be 16 bytes)")}else e=i(16);this._lastPrecipher=n(e,!0),this._lastPrecipherIndex=16,this._aes=new x(t)};I.prototype.encrypt=function(t){for(var e=n(t,!0),r=0;r<e.length;r++)16===this._lastPrecipherIndex&&(this._lastPrecipher=this._aes.encrypt(this._lastPrecipher),this._lastPrecipherIndex=0),e[r]^=this._lastPrecipher[this._lastPrecipherIndex++];return e},I.prototype.decrypt=I.prototype.encrypt;var N=function(t){if(!(this instanceof N))throw Error("Counter must be instanitated with `new`");0===t||t||(t=1),"number"==typeof t?(this._counter=i(16),this.setValue(t)):this.setBytes(t)};N.prototype.setValue=function(t){if("number"!=typeof t||parseInt(t)!=t)throw new Error("invalid counter value (must be an integer)");for(var e=15;e>=0;--e)this._counter[e]=t%256,t>>=8},N.prototype.setBytes=function(t){if(16!=(t=n(t,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=t},N.prototype.increment=function(){for(var t=15;t>=0;t--){if(255!==this._counter[t]){this._counter[t]++;break}this._counter[t]=0}};var M=function(t,e){if(!(this instanceof M))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",e instanceof N||(e=new N(e)),this._counter=e,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new x(t)};M.prototype.encrypt=function(t){for(var e=n(t,!0),r=0;r<e.length;r++)16===this._remainingCounterIndex&&(this._remainingCounter=this._aes.encrypt(this._counter._counter),this._remainingCounterIndex=0,this._counter.increment()),e[r]^=this._remainingCounter[this._remainingCounterIndex++];return e},M.prototype.decrypt=M.prototype.encrypt;var B={AES:x,Counter:N,ModeOfOperation:{ecb:_,cbc:T,cfb:P,ofb:I,ctr:M},utils:{hex:l,utf8:a},padding:{pkcs7:{pad:function(t){var e=16-(t=n(t,!0)).length%16,r=i(t.length+e);o(t,r);for(var s=t.length;s<r.length;s++)r[s]=e;return r},strip:function(t){if((t=n(t,!0)).length<16)throw new Error("PKCS#7 invalid length");var e=t[t.length-1];if(e>16)throw new Error("PKCS#7 padding byte out of range");for(var r=t.length-e,s=0;s<e;s++)if(t[r+s]!==e)throw new Error("PKCS#7 invalid padding byte");var a=i(r);return o(t,a,0,0,r),a}}},_arrayTest:{coerceArray:n,createArray:i,copyArray:o}};t.exports=B}()}(gs)),gs.exports),ws=r(vs);const ys="json-wallets/5.8.0";function bs(t){return"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),k(t)}function Es(t,e){for(t=String(t);t.length<e;)t="0"+t;return t}function As(t){return"string"==typeof t?Ve(t,Ge.NFKC):k(t)}function ks(t,e){let r=t;const n=e.toLowerCase().split("/");for(let t=0;t<n.length;t++){let e=null;for(const i in r)if(i.toLowerCase()===n[t]){e=r[i];break}if(null===e)return null;r=e}return r}function Ss(t){const e=k(t);e[6]=15&e[6]|64,e[8]=63&e[8]|128;const r=P(e);return[r.substring(2,10),r.substring(10,14),r.substring(14,18),r.substring(18,22),r.substring(22,34)].join("-")}const Cs=new g(ys);class xs extends yt{isCrowdsaleAccount(t){return!(!t||!t._isCrowdsaleAccount)}}function _s(t,e){const r=JSON.parse(t);e=As(e);const n=ge(ks(r,"ethaddr")),i=bs(ks(r,"encseed"));i&&i.length%16==0||Cs.throwArgumentError("invalid encseed","json",t);const o=k(Go(e,e,2e3,32,"sha256")).slice(0,16),s=i.slice(0,16),a=i.slice(16),l=new ws.ModeOfOperation.cbc(o,s),c=ws.padding.pkcs7.strip(k(l.decrypt(a)));let u="";for(let t=0;t<c.length;t++)u+=String.fromCharCode(c[t]);const h=te(Ve(u));return new xs({_isCrowdsaleAccount:!0,address:n,privateKey:h})}function Ts(t){let e=null;try{e=JSON.parse(t)}catch(t){return!1}return e.encseed&&e.ethaddr}function Ps(t){let e=null;try{e=JSON.parse(t)}catch(t){return!1}return!(!e.version||parseInt(e.version)!==e.version||3!==parseInt(e.version))}var Is,Ns={exports:{}};var Ms=(Is||(Is=1,function(t){!function(){const e=2147483647;function r(t){const e=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]);let r=1779033703,n=3144134277,i=1013904242,o=2773480762,s=1359893119,a=2600822924,l=528734635,c=1541459225;const u=new Uint32Array(64);function h(t){let h=0,d=t.length;for(;d>=64;){let f,p,m,g,v,w=r,y=n,b=i,E=o,A=s,k=a,S=l,C=c;for(p=0;p<16;p++)m=h+4*p,u[p]=(255&t[m])<<24|(255&t[m+1])<<16|(255&t[m+2])<<8|255&t[m+3];for(p=16;p<64;p++)f=u[p-2],g=(f>>>17|f<<15)^(f>>>19|f<<13)^f>>>10,f=u[p-15],v=(f>>>7|f<<25)^(f>>>18|f<<14)^f>>>3,u[p]=(g+u[p-7]|0)+(v+u[p-16]|0)|0;for(p=0;p<64;p++)g=(((A>>>6|A<<26)^(A>>>11|A<<21)^(A>>>25|A<<7))+(A&k^~A&S)|0)+(C+(e[p]+u[p]|0)|0)|0,v=((w>>>2|w<<30)^(w>>>13|w<<19)^(w>>>22|w<<10))+(w&y^w&b^y&b)|0,C=S,S=k,k=A,A=E+g|0,E=b,b=y,y=w,w=g+v|0;r=r+w|0,n=n+y|0,i=i+b|0,o=o+E|0,s=s+A|0,a=a+k|0,l=l+S|0,c=c+C|0,h+=64,d-=64}}h(t);let d,f=t.length%64,p=t.length/536870912|0,m=t.length<<3,g=f<56?56:120,v=t.slice(t.length-f,t.length);for(v.push(128),d=f+1;d<g;d++)v.push(0);return v.push(p>>>24&255),v.push(p>>>16&255),v.push(p>>>8&255),v.push(p>>>0&255),v.push(m>>>24&255),v.push(m>>>16&255),v.push(m>>>8&255),v.push(m>>>0&255),h(v),[r>>>24&255,r>>>16&255,r>>>8&255,r>>>0&255,n>>>24&255,n>>>16&255,n>>>8&255,n>>>0&255,i>>>24&255,i>>>16&255,i>>>8&255,i>>>0&255,o>>>24&255,o>>>16&255,o>>>8&255,o>>>0&255,s>>>24&255,s>>>16&255,s>>>8&255,s>>>0&255,a>>>24&255,a>>>16&255,a>>>8&255,a>>>0&255,l>>>24&255,l>>>16&255,l>>>8&255,l>>>0&255,c>>>24&255,c>>>16&255,c>>>8&255,c>>>0&255]}function n(t,e,n){t=t.length<=64?t:r(t);const i=64+e.length+4,o=new Array(i),s=new Array(64);let a,l=[];for(a=0;a<64;a++)o[a]=54;for(a=0;a<t.length;a++)o[a]^=t[a];for(a=0;a<e.length;a++)o[64+a]=e[a];for(a=i-4;a<i;a++)o[a]=0;for(a=0;a<64;a++)s[a]=92;for(a=0;a<t.length;a++)s[a]^=t[a];function c(){for(let t=i-1;t>=i-4;t--){if(o[t]++,o[t]<=255)return;o[t]=0}}for(;n>=32;)c(),l=l.concat(r(s.concat(r(o)))),n-=32;return n>0&&(c(),l=l.concat(r(s.concat(r(o))).slice(0,n))),l}function i(t,e,r,n,i){let o;for(l(t,16*(2*r-1),i,0,16),o=0;o<2*r;o++)a(t,16*o,i,16),s(i,n),l(i,0,t,e+16*o,16);for(o=0;o<r;o++)l(t,e+2*o*16,t,16*o,16);for(o=0;o<r;o++)l(t,e+16*(2*o+1),t,16*(o+r),16)}function o(t,e){return t<<e|t>>>32-e}function s(t,e){l(t,0,e,0,16);for(let t=8;t>0;t-=2)e[4]^=o(e[0]+e[12],7),e[8]^=o(e[4]+e[0],9),e[12]^=o(e[8]+e[4],13),e[0]^=o(e[12]+e[8],18),e[9]^=o(e[5]+e[1],7),e[13]^=o(e[9]+e[5],9),e[1]^=o(e[13]+e[9],13),e[5]^=o(e[1]+e[13],18),e[14]^=o(e[10]+e[6],7),e[2]^=o(e[14]+e[10],9),e[6]^=o(e[2]+e[14],13),e[10]^=o(e[6]+e[2],18),e[3]^=o(e[15]+e[11],7),e[7]^=o(e[3]+e[15],9),e[11]^=o(e[7]+e[3],13),e[15]^=o(e[11]+e[7],18),e[1]^=o(e[0]+e[3],7),e[2]^=o(e[1]+e[0],9),e[3]^=o(e[2]+e[1],13),e[0]^=o(e[3]+e[2],18),e[6]^=o(e[5]+e[4],7),e[7]^=o(e[6]+e[5],9),e[4]^=o(e[7]+e[6],13),e[5]^=o(e[4]+e[7],18),e[11]^=o(e[10]+e[9],7),e[8]^=o(e[11]+e[10],9),e[9]^=o(e[8]+e[11],13),e[10]^=o(e[9]+e[8],18),e[12]^=o(e[15]+e[14],7),e[13]^=o(e[12]+e[15],9),e[14]^=o(e[13]+e[12],13),e[15]^=o(e[14]+e[13],18);for(let r=0;r<16;++r)t[r]+=e[r]}function a(t,e,r,n){for(let i=0;i<n;i++)r[i]^=t[e+i]}function l(t,e,r,n,i){for(;i--;)r[n++]=t[e++]}function c(t){if(!t||"number"!=typeof t.length)return!1;for(let e=0;e<t.length;e++){const r=t[e];if("number"!=typeof r||r%1||r<0||r>=256)return!1}return!0}function u(t,e){if("number"!=typeof t||t%1)throw new Error("invalid "+e);return t}function h(t,r,o,s,h,d,f){if(o=u(o,"N"),s=u(s,"r"),h=u(h,"p"),d=u(d,"dkLen"),0===o||o&o-1)throw new Error("N must be power of 2");if(o>e/128/s)throw new Error("N too large");if(s>e/128/h)throw new Error("r too large");if(!c(t))throw new Error("password must be an array or buffer");if(t=Array.prototype.slice.call(t),!c(r))throw new Error("salt must be an array or buffer");r=Array.prototype.slice.call(r);let p=n(t,r,128*h*s);const m=new Uint32Array(32*h*s);for(let t=0;t<m.length;t++){const e=4*t;m[t]=(255&p[e+3])<<24|(255&p[e+2])<<16|(255&p[e+1])<<8|255&p[e+0]}const g=new Uint32Array(64*s),v=new Uint32Array(32*s*o),w=32*s,y=new Uint32Array(16),b=new Uint32Array(16),E=h*o*2;let A,k,S=0,C=null,x=!1,_=0,T=0;const P=f?parseInt(1e3/s):4294967295,I="undefined"!=typeof setImmediate?setImmediate:setTimeout,N=function(){if(x)return f(new Error("cancelled"),S/E);let e;switch(_){case 0:k=32*T*s,l(m,k,g,0,w),_=1,A=0;case 1:e=o-A,e>P&&(e=P);for(let t=0;t<e;t++)l(g,0,v,(A+t)*w,w),i(g,w,s,y,b);if(A+=e,S+=e,f){const t=parseInt(1e3*S/E);if(t!==C){if(x=f(null,S/E),x)break;C=t}}if(A<o)break;A=0,_=2;case 2:e=o-A,e>P&&(e=P);for(let t=0;t<e;t++){const t=g[16*(2*s-1)]&o-1;a(v,t*w,g,w),i(g,w,s,y,b)}if(A+=e,S+=e,f){const t=parseInt(1e3*S/E);if(t!==C){if(x=f(null,S/E),x)break;C=t}}if(A<o)break;if(l(g,0,m,k,w),T++,T<h){_=0;break}p=[];for(let t=0;t<m.length;t++)p.push(255&m[t]),p.push(m[t]>>8&255),p.push(m[t]>>16&255),p.push(m[t]>>24&255);const r=n(t,p,d);return f&&f(null,1,r),r}f&&I(N)};if(!f)for(;;){const t=N();if(null!=t)return t}N()}const d={scrypt:function(t,e,r,n,i,o,s){return new Promise(function(a,l){let c=0;s&&s(0),h(t,e,r,n,i,o,function(t,e,r){if(t)l(t);else if(r)s&&1!==c&&s(1),a(new Uint8Array(r));else if(s&&e!==c)return c=e,s(e)})})},syncScrypt:function(t,e,r,n,i,o){return new Uint8Array(h(t,e,r,n,i,o))}};t.exports=d}()}(Ns)),Ns.exports),Bs=r(Ms),Rs=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const Fs=new g(ys);function Os(t){return null!=t&&t.mnemonic&&t.mnemonic.phrase}class Ds extends yt{isKeystoreAccount(t){return!(!t||!t._isKeystoreAccount)}}function Us(t,e){const r=bs(ks(t,"crypto/ciphertext"));if(P(te(S([e.slice(16,32),r]))).substring(2)!==ks(t,"crypto/mac").toLowerCase())throw new Error("invalid password");const n=function(t,e,r){if("aes-128-ctr"===ks(t,"crypto/cipher")){const n=bs(ks(t,"crypto/cipherparams/iv")),i=new ws.Counter(n);return k(new ws.ModeOfOperation.ctr(e,i).decrypt(r))}return null}(t,e.slice(0,16),r);n||Fs.throwError("unsupported cipher",g.errors.UNSUPPORTED_OPERATION,{operation:"decrypt"});const i=e.slice(32,64),o=ao(n);if(t.address){let e=t.address.toLowerCase();if("0x"!==e.substring(0,2)&&(e="0x"+e),ge(e)!==o)throw new Error("address mismatch")}const s={_isKeystoreAccount:!0,address:o,privateKey:P(n)};if("0.1"===ks(t,"x-ethers/version")){const e=bs(ks(t,"x-ethers/mnemonicCiphertext")),r=bs(ks(t,"x-ethers/mnemonicCounter")),n=new ws.Counter(r),o=new ws.ModeOfOperation.ctr(i,n),a=ks(t,"x-ethers/path")||os,l=ks(t,"x-ethers/locale")||"en",c=k(o.decrypt(e));try{const t=cs(c,l),e=ss.fromMnemonic(t,null,l).derivePath(a);if(e.privateKey!=s.privateKey)throw new Error("mnemonic mismatch");s.mnemonic=e.mnemonic}catch(t){if(t.code!==g.errors.INVALID_ARGUMENT||"wordlist"!==t.argument)throw t}}return new Ds(s)}function Ls(t,e,r,n,i){return k(Go(t,e,r,n,i))}function qs(t,e,r,n,i){return Promise.resolve(Ls(t,e,r,n,i))}function zs(t,e,r,n,i){const o=As(e),s=ks(t,"crypto/kdf");if(s&&"string"==typeof s){const e=function(t,e){return Fs.throwArgumentError("invalid key-derivation function parameters",t,e)};if("scrypt"===s.toLowerCase()){const r=bs(ks(t,"crypto/kdfparams/salt")),a=parseInt(ks(t,"crypto/kdfparams/n")),l=parseInt(ks(t,"crypto/kdfparams/r")),c=parseInt(ks(t,"crypto/kdfparams/p"));a&&l&&c||e("kdf",s),a&a-1&&e("N",a);const u=parseInt(ks(t,"crypto/kdfparams/dklen"));return 32!==u&&e("dklen",u),n(o,r,a,l,c,64,i)}if("pbkdf2"===s.toLowerCase()){const n=bs(ks(t,"crypto/kdfparams/salt"));let i=null;const s=ks(t,"crypto/kdfparams/prf");"hmac-sha256"===s?i="sha256":"hmac-sha512"===s?i="sha512":e("prf",s);const a=parseInt(ks(t,"crypto/kdfparams/c")),l=parseInt(ks(t,"crypto/kdfparams/dklen"));return 32!==l&&e("dklen",l),r(o,n,a,l,i)}}return Fs.throwArgumentError("unsupported key-derivation function","kdf",s)}function Gs(t,e,r){if(Ts(t)){r&&r(0);const n=_s(t,e);return r&&r(1),Promise.resolve(n)}return Ps(t)?function(t,e,r){return Rs(this,void 0,void 0,function*(){const n=JSON.parse(t);return Us(n,yield zs(n,e,qs,Bs.scrypt,r))})}(t,e,r):Promise.reject(new Error("invalid JSON wallet"))}function Hs(t,e){if(Ts(t))return _s(t,e);if(Ps(t))return function(t,e){const r=JSON.parse(t);return Us(r,zs(r,e,Ls,Bs.syncScrypt))}(t,e);throw new Error("invalid JSON wallet")}var js=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const Ks=new g("wallet/5.8.0");class Ws extends Cn{constructor(t,e){if(super(),null!=(r=t)&&_(r.privateKey,32)&&null!=r.address){const e=new Xi(t.privateKey);if(ut(this,"_signingKey",()=>e),ut(this,"address",ao(this.publicKey)),this.address!==ge(t.address)&&Ks.throwArgumentError("privateKey/address mismatch","privateKey","[REDACTED]"),function(t){const e=t.mnemonic;return e&&e.phrase}(t)){const e=t.mnemonic;ut(this,"_mnemonic",()=>({phrase:e.phrase,path:e.path||os,locale:e.locale||"en"}));const r=this.mnemonic;ao(ss.fromMnemonic(r.phrase,null,r.locale).derivePath(r.path).privateKey)!==this.address&&Ks.throwArgumentError("mnemonic/address mismatch","privateKey","[REDACTED]")}else ut(this,"_mnemonic",()=>null)}else{if(Xi.isSigningKey(t))"secp256k1"!==t.curve&&Ks.throwArgumentError("unsupported curve; must be secp256k1","privateKey","[REDACTED]"),ut(this,"_signingKey",()=>t);else{"string"==typeof t&&t.match(/^[0-9a-f]*$/i)&&64===t.length&&(t="0x"+t);const e=new Xi(t);ut(this,"_signingKey",()=>e)}ut(this,"_mnemonic",()=>null),ut(this,"address",ao(this.publicKey))}var r;e&&!bn.isProvider(e)&&Ks.throwArgumentError("invalid provider","provider",e),ut(this,"provider",e||null)}get mnemonic(){return this._mnemonic()}get privateKey(){return this._signingKey().privateKey}get publicKey(){return this._signingKey().publicKey}getAddress(){return Promise.resolve(this.address)}connect(t){return new Ws(this,t)}signTransaction(t){return dt(t).then(e=>{null!=e.from&&(ge(e.from)!==this.address&&Ks.throwArgumentError("transaction from address mismatch","transaction.from",t.from),delete e.from);const r=this._signingKey().signDigest(te(go(e)));return go(e,r)})}signMessage(t){return js(this,void 0,void 0,function*(){return D(this._signingKey().signDigest(Kr(t)))})}_signTypedData(t,e,r){return js(this,void 0,void 0,function*(){const n=yield ln.resolveNames(t,e,r,t=>(null==this.provider&&Ks.throwError("cannot resolve ENS names without a provider",g.errors.UNSUPPORTED_OPERATION,{operation:"resolveName",value:t}),this.provider.resolveName(t)));return D(this._signingKey().signDigest(ln.hash(n.domain,e,n.value)))})}encrypt(t,e,r){if("function"!=typeof e||r||(r=e,e={}),r&&"function"!=typeof r)throw new Error("invalid callback");return e||(e={}),function(t,e,r,n){try{if(ge(t.address)!==ao(t.privateKey))throw new Error("address/privateKey mismatch");if(Os(t)){const e=t.mnemonic;if(ss.fromMnemonic(e.phrase,null,e.locale).derivePath(e.path||os).privateKey!=t.privateKey)throw new Error("mnemonic mismatch")}}catch(t){return Promise.reject(t)}"function"!=typeof r||n||(n=r,r={}),r||(r={});const i=k(t.privateKey),o=As(e);let s=null,a=null,l=null;if(Os(t)){const e=t.mnemonic;s=k(ls(e.phrase,e.locale||"en")),a=e.path||os,l=e.locale||"en"}let c=r.client;c||(c="ethers.js");let u=null;u=r.salt?k(r.salt):fs(32);let h=null;if(r.iv){if(h=k(r.iv),16!==h.length)throw new Error("invalid iv")}else h=fs(16);let d=null;if(r.uuid){if(d=k(r.uuid),16!==d.length)throw new Error("invalid uuid")}else d=fs(16);let f=1<<17,p=8,m=1;return r.scrypt&&(r.scrypt.N&&(f=r.scrypt.N),r.scrypt.r&&(p=r.scrypt.r),r.scrypt.p&&(m=r.scrypt.p)),Bs.scrypt(o,u,f,p,m,64,n).then(e=>{const r=(e=k(e)).slice(0,16),n=e.slice(16,32),o=e.slice(32,64),g=new ws.Counter(h),v=k(new ws.ModeOfOperation.ctr(r,g).encrypt(i)),w=te(S([n,v])),y={address:t.address.substring(2).toLowerCase(),id:Ss(d),version:3,crypto:{cipher:"aes-128-ctr",cipherparams:{iv:P(h).substring(2)},ciphertext:P(v).substring(2),kdf:"scrypt",kdfparams:{salt:P(u).substring(2),n:f,dklen:32,p:m,r:p},mac:w.substring(2)}};if(s){const t=fs(16),e=new ws.Counter(t),r=k(new ws.ModeOfOperation.ctr(o,e).encrypt(s)),n=new Date,i=n.getUTCFullYear()+"-"+Es(n.getUTCMonth()+1,2)+"-"+Es(n.getUTCDate(),2)+"T"+Es(n.getUTCHours(),2)+"-"+Es(n.getUTCMinutes(),2)+"-"+Es(n.getUTCSeconds(),2)+".0Z";y["x-ethers"]={client:c,gethFilename:"UTC--"+i+"--"+y.address,mnemonicCounter:P(t).substring(2),mnemonicCiphertext:P(r).substring(2),path:a,locale:l,version:"0.1"}}return JSON.stringify(y)})}(this,t,e,r)}static createRandom(t){let e=fs(16);t||(t={}),t.extraEntropy&&(e=k(N(te(S([e,t.extraEntropy])),0,16)));const r=cs(e,t.locale);return Ws.fromMnemonic(r,t.path,t.locale)}static fromEncryptedJson(t,e,r){return Gs(t,e,r).then(t=>new Ws(t))}static fromEncryptedJsonSync(t,e){return new Ws(Hs(t,e))}static fromMnemonic(t,e,r){return e||(e=os),new Ws(ss.fromMnemonic(t,null,r).derivePath(e))}}const Vs=new g("networks/5.8.0");function $s(t){const e=function(e,r){null==r&&(r={});const n=[];if(e.InfuraProvider&&"-"!==r.infura)try{n.push(new e.InfuraProvider(t,r.infura))}catch(t){}if(e.EtherscanProvider&&"-"!==r.etherscan)try{n.push(new e.EtherscanProvider(t,r.etherscan))}catch(t){}if(e.AlchemyProvider&&"-"!==r.alchemy)try{n.push(new e.AlchemyProvider(t,r.alchemy))}catch(t){}if(e.PocketProvider&&"-"!==r.pocket){const i=["goerli","ropsten","rinkeby","sepolia"];try{const o=new e.PocketProvider(t,r.pocket);o.network&&-1===i.indexOf(o.network.name)&&n.push(o)}catch(t){}}if(e.CloudflareProvider&&"-"!==r.cloudflare)try{n.push(new e.CloudflareProvider(t))}catch(t){}if(e.AnkrProvider&&"-"!==r.ankr)try{const i=["ropsten"],o=new e.AnkrProvider(t,r.ankr);o.network&&-1===i.indexOf(o.network.name)&&n.push(o)}catch(t){}if(e.QuickNodeProvider&&"-"!==r.quicknode)try{n.push(new e.QuickNodeProvider(t,r.quicknode))}catch(t){}if(0===n.length)return null;if(e.FallbackProvider){let i=1;return null!=r.quorum?i=r.quorum:"homestead"===t&&(i=2),new e.FallbackProvider(n,i)}return n[0]};return e.renetwork=function(t){return $s(t)},e}function Js(t,e){const r=function(r,n){return r.JsonRpcProvider?new r.JsonRpcProvider(t,e):null};return r.renetwork=function(e){return Js(t,e)},r}const Qs={chainId:1,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"homestead",_defaultProvider:$s("homestead")},Ys={chainId:3,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"ropsten",_defaultProvider:$s("ropsten")},Xs={chainId:63,name:"classicMordor",_defaultProvider:Js("https://www.ethercluster.com/mordor","classicMordor")},Zs={unspecified:{chainId:0,name:"unspecified"},homestead:Qs,mainnet:Qs,morden:{chainId:2,name:"morden"},ropsten:Ys,testnet:Ys,rinkeby:{chainId:4,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"rinkeby",_defaultProvider:$s("rinkeby")},kovan:{chainId:42,name:"kovan",_defaultProvider:$s("kovan")},goerli:{chainId:5,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"goerli",_defaultProvider:$s("goerli")},kintsugi:{chainId:1337702,name:"kintsugi"},sepolia:{chainId:11155111,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"sepolia",_defaultProvider:$s("sepolia")},holesky:{chainId:17e3,name:"holesky",_defaultProvider:$s("holesky")},classic:{chainId:61,name:"classic",_defaultProvider:Js("https://www.ethercluster.com/etc","classic")},classicMorden:{chainId:62,name:"classicMorden"},classicMordor:Xs,classicTestnet:Xs,classicKotti:{chainId:6,name:"classicKotti",_defaultProvider:Js("https://www.ethercluster.com/kotti","classicKotti")},xdai:{chainId:100,name:"xdai"},matic:{chainId:137,name:"matic",_defaultProvider:$s("matic")},maticmum:{chainId:80001,name:"maticmum",_defaultProvider:$s("maticmum")},optimism:{chainId:10,name:"optimism",_defaultProvider:$s("optimism")},"optimism-kovan":{chainId:69,name:"optimism-kovan"},"optimism-goerli":{chainId:420,name:"optimism-goerli"},"optimism-sepolia":{chainId:11155420,name:"optimism-sepolia"},arbitrum:{chainId:42161,name:"arbitrum"},"arbitrum-rinkeby":{chainId:421611,name:"arbitrum-rinkeby"},"arbitrum-goerli":{chainId:421613,name:"arbitrum-goerli"},"arbitrum-sepolia":{chainId:421614,name:"arbitrum-sepolia"},bnb:{chainId:56,name:"bnb"},bnbt:{chainId:97,name:"bnbt"}};function ta(t){if(null==t)return null;if("number"==typeof t){for(const e in Zs){const r=Zs[e];if(r.chainId===t)return{name:r.name,chainId:r.chainId,ensAddress:r.ensAddress||null,_defaultProvider:r._defaultProvider||null}}return{chainId:t,name:"unknown"}}if("string"==typeof t){const e=Zs[t];return null==e?null:{name:e.name,chainId:e.chainId,ensAddress:e.ensAddress,_defaultProvider:e._defaultProvider||null}}const e=Zs[t.name];if(!e)return"number"!=typeof t.chainId&&Vs.throwArgumentError("invalid network chainId","network",t),t;0!==t.chainId&&t.chainId!==e.chainId&&Vs.throwArgumentError("network chainId mismatch","network",t);let r=t._defaultProvider||null;var n;return null==r&&e._defaultProvider&&(r=(n=e._defaultProvider)&&"function"==typeof n.renetwork?e._defaultProvider.renetwork(t):e._defaultProvider),{name:t.name,chainId:e.chainId,ensAddress:t.ensAddress||e.ensAddress||null,_defaultProvider:r}}var ea=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};function ra(t,e){return ea(this,void 0,void 0,function*(){null==e&&(e={});const r={method:e.method||"GET",headers:e.headers||{},body:e.body||void 0};if(!0!==e.skipFetchSetup&&(r.mode="cors",r.cache="no-cache",r.credentials="same-origin",r.redirect="follow",r.referrer="client"),null!=e.fetchOptions){const t=e.fetchOptions;t.mode&&(r.mode=t.mode),t.cache&&(r.cache=t.cache),t.credentials&&(r.credentials=t.credentials),t.redirect&&(r.redirect=t.redirect),t.referrer&&(r.referrer=t.referrer)}const n=yield fetch(t,r),i=yield n.arrayBuffer(),o={};return n.headers.forEach?n.headers.forEach((t,e)=>{o[e.toLowerCase()]=t}):n.headers.keys().forEach(t=>{o[t.toLowerCase()]=n.headers.get(t)}),{headers:o,statusCode:n.status,statusMessage:n.statusText,body:k(new Uint8Array(i))}})}var na=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const ia=new g("web/5.8.0");function oa(t){return new Promise(e=>{setTimeout(e,t)})}function sa(t,e){if(null==t)return null;if("string"==typeof t)return t;if(b(t)){if(e&&("text"===e.split("/")[0]||"application/json"===e.split(";")[0].trim()))try{return Qe(t)}catch(t){}return P(t)}return t}function aa(t,e,r){const n="object"==typeof t&&null!=t.throttleLimit?t.throttleLimit:12;ia.assertArgument(n>0&&n%1==0,"invalid connection throttle limit","connection.throttleLimit",n);const i="object"==typeof t?t.throttleCallback:null,o="object"==typeof t&&"number"==typeof t.throttleSlotInterval?t.throttleSlotInterval:100;ia.assertArgument(o>0&&o%1==0,"invalid connection throttle slot interval","connection.throttleSlotInterval",o);const s="object"==typeof t&&!!t.errorPassThrough,a={};let l=null;const c={method:"GET"};let u=!1,h=12e4;if("string"==typeof t)l=t;else if("object"==typeof t){if(null!=t&&null!=t.url||ia.throwArgumentError("missing URL","connection.url",t),l=t.url,"number"==typeof t.timeout&&t.timeout>0&&(h=t.timeout),t.headers)for(const e in t.headers)a[e.toLowerCase()]={key:e,value:String(t.headers[e])},["if-none-match","if-modified-since"].indexOf(e.toLowerCase())>=0&&(u=!0);if(c.allowGzip=!!t.allowGzip,null!=t.user&&null!=t.password){"https:"!==l.substring(0,6)&&!0!==t.allowInsecureAuthentication&&ia.throwError("basic authentication requires a secure https url",g.errors.INVALID_ARGUMENT,{argument:"url",url:l,user:t.user,password:"[REDACTED]"});const e=t.user+":"+t.password;a.authorization={key:"Authorization",value:"Basic "+wr(Ve(e))}}null!=t.skipFetchSetup&&(c.skipFetchSetup=!!t.skipFetchSetup),null!=t.fetchOptions&&(c.fetchOptions=pt(t.fetchOptions))}const d=new RegExp("^data:([^;:]*)?(;base64)?,(.*)$","i"),f=l?l.match(d):null;if(f)try{const t={statusCode:200,statusMessage:"OK",headers:{"content-type":f[1]||"text/plain"},body:f[2]?vr(f[3]):(p=f[3],Ve(p.replace(/%([0-9a-f][0-9a-f])/gi,(t,e)=>String.fromCharCode(parseInt(e,16)))))};let e=t.body;return r&&(e=r(t.body,t)),Promise.resolve(e)}catch(t){ia.throwError("processing response error",g.errors.SERVER_ERROR,{body:sa(f[1],f[2]),error:t,requestBody:null,requestMethod:"GET",url:l})}var p;e&&(c.method="POST",c.body=e,null==a["content-type"]&&(a["content-type"]={key:"Content-Type",value:"application/octet-stream"}),null==a["content-length"]&&(a["content-length"]={key:"Content-Length",value:String(e.length)}));const m={};Object.keys(a).forEach(t=>{const e=a[t];m[e.key]=e.value}),c.headers=m;const v=function(){let t=null;return{promise:new Promise(function(e,r){h&&(t=setTimeout(()=>{null!=t&&(t=null,r(ia.makeError("timeout",g.errors.TIMEOUT,{requestBody:sa(c.body,m["content-type"]),requestMethod:c.method,timeout:h,url:l})))},h))}),cancel:function(){null!=t&&(clearTimeout(t),t=null)}}}(),w=function(){return na(this,void 0,void 0,function*(){for(let t=0;t<n;t++){let e=null;try{if(e=yield ra(l,c),t<n)if(301===e.statusCode||302===e.statusCode){const t=e.headers.location||"";if("GET"===c.method&&t.match(/^https:/)){l=e.headers.location;continue}}else if(429===e.statusCode){let r=!0;if(i&&(r=yield i(t,l)),r){let r=0;const n=e.headers["retry-after"];r="string"==typeof n&&n.match(/^[1-9][0-9]*$/)?1e3*parseInt(n):o*parseInt(String(Math.random()*Math.pow(2,t))),yield oa(r);continue}}}catch(t){e=t.response,null==e&&(v.cancel(),ia.throwError("missing response",g.errors.SERVER_ERROR,{requestBody:sa(c.body,m["content-type"]),requestMethod:c.method,serverError:t,url:l}))}let a=e.body;if(u&&304===e.statusCode?a=null:!s&&(e.statusCode<200||e.statusCode>=300)&&(v.cancel(),ia.throwError("bad response",g.errors.SERVER_ERROR,{status:e.statusCode,headers:e.headers,body:sa(a,e.headers?e.headers["content-type"]:null),requestBody:sa(c.body,m["content-type"]),requestMethod:c.method,url:l})),r)try{const t=yield r(a,e);return v.cancel(),t}catch(r){if(r.throttleRetry&&t<n){let e=!0;if(i&&(e=yield i(t,l)),e){const e=o*parseInt(String(Math.random()*Math.pow(2,t)));yield oa(e);continue}}v.cancel(),ia.throwError("processing response error",g.errors.SERVER_ERROR,{body:sa(a,e.headers?e.headers["content-type"]:null),error:r,requestBody:sa(c.body,m["content-type"]),requestMethod:c.method,url:l})}return v.cancel(),a}return ia.throwError("failed response",g.errors.SERVER_ERROR,{requestBody:sa(c.body,m["content-type"]),requestMethod:c.method,url:l})})}();return Promise.race([v.promise,w])}function la(t,e,r){let n=null;if(null!=e){n=Ve(e);const r="string"==typeof t?{url:t}:pt(t);if(r.headers){0!==Object.keys(r.headers).filter(t=>"content-type"===t.toLowerCase()).length||(r.headers=pt(r.headers),r.headers["content-type"]="application/json")}else r.headers={"content-type":"application/json"};t=r}return aa(t,n,(t,e)=>{let n=null;if(null!=t)try{n=JSON.parse(Qe(t))}catch(e){ia.throwError("invalid JSON",g.errors.SERVER_ERROR,{body:t,error:e})}return r&&(n=r(n,e)),n})}function ca(t,e){return e||(e={}),null==(e=pt(e)).floor&&(e.floor=0),null==e.ceiling&&(e.ceiling=1e4),null==e.interval&&(e.interval=250),new Promise(function(r,n){let i=null,o=!1;const s=()=>!o&&(o=!0,i&&clearTimeout(i),!0);e.timeout&&(i=setTimeout(()=>{s()&&n(new Error("timeout"))},e.timeout));const a=e.retryLimit;let l=0;!function i(){return t().then(function(t){if(void 0!==t)s()&&r(t);else if(e.oncePoll)e.oncePoll.once("poll",i);else if(e.onceBlock)e.onceBlock.once("block",i);else if(!o){if(l++,l>a)return void(s()&&n(new Error("retry limit reached")));let t=e.interval*parseInt(String(Math.random()*Math.pow(2,l)));t<e.floor&&(t=e.floor),t>e.ceiling&&(t=e.ceiling),setTimeout(i,t)}return null},function(t){s()&&n(t)})}()})}var ua,ha;var da=function(){if(ha)return ua;ha=1;for(var t="qpzry9x8gf2tvdw0s3jn54khce6mua7l",e={},r=0;r<32;r++){var n=t.charAt(r);if(void 0!==e[n])throw new TypeError(n+" is ambiguous");e[n]=r}function i(t){var e=t>>25;return(33554431&t)<<5^996825010&-(1&e)^642813549&-(e>>1&1)^513874426&-(e>>2&1)^1027748829&-(e>>3&1)^705979059&-(e>>4&1)}function o(t){for(var e=1,r=0;r<t.length;++r){var n=t.charCodeAt(r);if(n<33||n>126)return"Invalid prefix ("+t+")";e=i(e)^n>>5}for(e=i(e),r=0;r<t.length;++r){var o=t.charCodeAt(r);e=i(e)^31&o}return e}function s(t,r){if(r=r||90,t.length<8)return t+" too short";if(t.length>r)return"Exceeds length limit";var n=t.toLowerCase(),s=t.toUpperCase();if(t!==n&&t!==s)return"Mixed-case string "+t;var a=(t=n).lastIndexOf("1");if(-1===a)return"No separator character for "+t;if(0===a)return"Missing prefix for "+t;var l=t.slice(0,a),c=t.slice(a+1);if(c.length<6)return"Data too short";var u=o(l);if("string"==typeof u)return u;for(var h=[],d=0;d<c.length;++d){var f=c.charAt(d),p=e[f];if(void 0===p)return"Unknown character "+f;u=i(u)^p,d+6>=c.length||h.push(p)}return 1!==u?"Invalid checksum for "+t:{prefix:l,words:h}}function a(t,e,r,n){for(var i=0,o=0,s=(1<<r)-1,a=[],l=0;l<t.length;++l)for(i=i<<e|t[l],o+=e;o>=r;)o-=r,a.push(i>>o&s);if(n)o>0&&a.push(i<<r-o&s);else{if(o>=e)return"Excess padding";if(i<<r-o&s)return"Non-zero padding"}return a}return ua={decodeUnsafe:function(){var t=s.apply(null,arguments);if("object"==typeof t)return t},decode:function(t){var e=s.apply(null,arguments);if("object"==typeof e)return e;throw new Error(e)},encode:function(e,r,n){if(n=n||90,e.length+7+r.length>n)throw new TypeError("Exceeds length limit");var s=o(e=e.toLowerCase());if("string"==typeof s)throw new Error(s);for(var a=e+"1",l=0;l<r.length;++l){var c=r[l];if(c>>5)throw new Error("Non 5-bit word");s=i(s)^c,a+=t.charAt(c)}for(l=0;l<6;++l)s=i(s);for(s^=1,l=0;l<6;++l){a+=t.charAt(s>>5*(5-l)&31)}return a},toWordsUnsafe:function(t){var e=a(t,8,5,!0);if(Array.isArray(e))return e},toWords:function(t){var e=a(t,8,5,!0);if(Array.isArray(e))return e;throw new Error(e)},fromWordsUnsafe:function(t){var e=a(t,5,8,!1);if(Array.isArray(e))return e},fromWords:function(t){var e=a(t,5,8,!1);if(Array.isArray(e))return e;throw new Error(e)}},ua}(),fa=r(da);const pa="providers/5.8.0",ma=new g(pa);class ga{constructor(){this.formats=this.getDefaultFormats()}getDefaultFormats(){const t={},e=this.address.bind(this),r=this.bigNumber.bind(this),n=this.blockTag.bind(this),i=this.data.bind(this),o=this.hash.bind(this),s=this.hex.bind(this),a=this.number.bind(this),l=this.type.bind(this);return t.transaction={hash:o,type:l,accessList:ga.allowNull(this.accessList.bind(this),null),blockHash:ga.allowNull(o,null),blockNumber:ga.allowNull(a,null),transactionIndex:ga.allowNull(a,null),confirmations:ga.allowNull(a,null),from:e,gasPrice:ga.allowNull(r),maxPriorityFeePerGas:ga.allowNull(r),maxFeePerGas:ga.allowNull(r),gasLimit:r,to:ga.allowNull(e,null),value:r,nonce:a,data:i,r:ga.allowNull(this.uint256),s:ga.allowNull(this.uint256),v:ga.allowNull(a),creates:ga.allowNull(e,null),raw:ga.allowNull(i)},t.transactionRequest={from:ga.allowNull(e),nonce:ga.allowNull(a),gasLimit:ga.allowNull(r),gasPrice:ga.allowNull(r),maxPriorityFeePerGas:ga.allowNull(r),maxFeePerGas:ga.allowNull(r),to:ga.allowNull(e),value:ga.allowNull(r),data:ga.allowNull(t=>this.data(t,!0)),type:ga.allowNull(a),accessList:ga.allowNull(this.accessList.bind(this),null)},t.receiptLog={transactionIndex:a,blockNumber:a,transactionHash:o,address:e,topics:ga.arrayOf(o),data:i,logIndex:a,blockHash:o},t.receipt={to:ga.allowNull(this.address,null),from:ga.allowNull(this.address,null),contractAddress:ga.allowNull(e,null),transactionIndex:a,root:ga.allowNull(s),gasUsed:r,logsBloom:ga.allowNull(i),blockHash:o,transactionHash:o,logs:ga.arrayOf(this.receiptLog.bind(this)),blockNumber:a,confirmations:ga.allowNull(a,null),cumulativeGasUsed:r,effectiveGasPrice:ga.allowNull(r),status:ga.allowNull(a),type:l},t.block={hash:ga.allowNull(o),parentHash:o,number:a,timestamp:a,nonce:ga.allowNull(s),difficulty:this.difficulty.bind(this),gasLimit:r,gasUsed:r,miner:ga.allowNull(e),extraData:i,transactions:ga.allowNull(ga.arrayOf(o)),baseFeePerGas:ga.allowNull(r)},t.blockWithTransactions=pt(t.block),t.blockWithTransactions.transactions=ga.allowNull(ga.arrayOf(this.transactionResponse.bind(this))),t.filter={fromBlock:ga.allowNull(n,void 0),toBlock:ga.allowNull(n,void 0),blockHash:ga.allowNull(o,void 0),address:ga.allowNull(e,void 0),topics:ga.allowNull(this.topics.bind(this),void 0)},t.filterLog={blockNumber:ga.allowNull(a),blockHash:ga.allowNull(o),transactionIndex:a,removed:ga.allowNull(this.boolean.bind(this)),address:e,data:ga.allowFalsish(i,"0x"),topics:ga.arrayOf(o),transactionHash:o,logIndex:a},t}accessList(t){return ho(t||[])}number(t){return"0x"===t?0:j.from(t).toNumber()}type(t){return"0x"===t||null==t?0:j.from(t).toNumber()}bigNumber(t){return j.from(t)}boolean(t){if("boolean"==typeof t)return t;if("string"==typeof t){if("true"===(t=t.toLowerCase()))return!0;if("false"===t)return!1}throw new Error("invalid boolean - "+t)}hex(t,e){return"string"==typeof t&&(e||"0x"===t.substring(0,2)||(t="0x"+t),_(t))?t.toLowerCase():ma.throwArgumentError("invalid hash","value",t)}data(t,e){const r=this.hex(t,e);if(r.length%2!=0)throw new Error("invalid data; odd-length - "+t);return r}address(t){return ge(t)}callAddress(t){if(!_(t,32))return null;const e=ge(N(t,12));return e===Pe?null:e}contractAddress(t){return ve(t)}blockTag(t){if(null==t)return"latest";if("earliest"===t)return"0x0";switch(t){case"earliest":return"0x0";case"latest":case"pending":case"safe":case"finalized":return t}if("number"==typeof t||_(t))return B(t);throw new Error("invalid blockTag")}hash(t,e){const r=this.hex(t,e);return 32!==I(r)?ma.throwArgumentError("invalid hash","value",t):r}difficulty(t){if(null==t)return null;const e=j.from(t);try{return e.toNumber()}catch(t){}return null}uint256(t){if(!_(t))throw new Error("invalid uint256");return F(t,32)}_block(t,e){null!=t.author&&null==t.miner&&(t.miner=t.author);const r=null!=t._difficulty?t._difficulty:t.difficulty,n=ga.check(e,t);return n._difficulty=null==r?null:j.from(r),n}block(t){return this._block(t,this.formats.block)}blockWithTransactions(t){return this._block(t,this.formats.blockWithTransactions)}transactionRequest(t){return ga.check(this.formats.transactionRequest,t)}transactionResponse(t){null!=t.gas&&null==t.gasLimit&&(t.gasLimit=t.gas),t.to&&j.from(t.to).isZero()&&(t.to="0x0000000000000000000000000000000000000000"),null!=t.input&&null==t.data&&(t.data=t.input),null==t.to&&null==t.creates&&(t.creates=this.contractAddress(t)),1!==t.type&&2!==t.type||null!=t.accessList||(t.accessList=[]);const e=ga.check(this.formats.transaction,t);if(null!=t.chainId){let r=t.chainId;_(r)&&(r=j.from(r).toNumber()),e.chainId=r}else{let r=t.networkId;null==r&&null==e.v&&(r=t.chainId),_(r)&&(r=j.from(r).toNumber()),"number"!=typeof r&&null!=e.v&&(r=(e.v-35)/2,r<0&&(r=0),r=parseInt(r)),"number"!=typeof r&&(r=0),e.chainId=r}return e.blockHash&&"x"===e.blockHash.replace(/0/g,"")&&(e.blockHash=null),e}transaction(t){return wo(t)}receiptLog(t){return ga.check(this.formats.receiptLog,t)}receipt(t){const e=ga.check(this.formats.receipt,t);if(null!=e.root)if(e.root.length<=4){const t=j.from(e.root).toNumber();0===t||1===t?(null!=e.status&&e.status!==t&&ma.throwArgumentError("alt-root-status/status mismatch","value",{root:e.root,status:e.status}),e.status=t,delete e.root):ma.throwArgumentError("invalid alt-root-status","value.root",e.root)}else 66!==e.root.length&&ma.throwArgumentError("invalid root hash","value.root",e.root);return null!=e.status&&(e.byzantium=!0),e}topics(t){return Array.isArray(t)?t.map(t=>this.topics(t)):null!=t?this.hash(t,!0):null}filter(t){return ga.check(this.formats.filter,t)}filterLog(t){return ga.check(this.formats.filterLog,t)}static check(t,e){const r={};for(const n in t)try{const i=t[n](e[n]);void 0!==i&&(r[n]=i)}catch(t){throw t.checkKey=n,t.checkValue=e[n],t}return r}static allowNull(t,e){return function(r){return null==r?e:t(r)}}static allowFalsish(t,e){return function(r){return r?t(r):e}}static arrayOf(t){return function(e){if(!Array.isArray(e))throw new Error("not an array");const r=[];return e.forEach(function(e){r.push(t(e))}),r}}}function va(t){return t&&"function"==typeof t.isCommunityResource}function wa(t){return va(t)&&t.isCommunityResource()}let ya=!1;function ba(){ya||(ya=!0,console.log("========= NOTICE ========="),console.log("Request-Rate Exceeded (this message will not be repeated)"),console.log(""),console.log("The default API keys for each service are provided as a highly-throttled,"),console.log("community resource for low-traffic projects and early prototyping."),console.log(""),console.log("While your application will continue to function, we highly recommended"),console.log("signing up for your own API keys to improve performance, increase your"),console.log("request rate/limit and enable other perks, such as metrics and advanced APIs."),console.log(""),console.log("For more details: https://docs.ethers.io/api-keys/"),console.log("=========================="))}var Ea=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const Aa=new g(pa);function ka(t){return null==t?"null":(32!==I(t)&&Aa.throwArgumentError("invalid topic","topic",t),t.toLowerCase())}function Sa(t){for(t=t.slice();t.length>0&&null==t[t.length-1];)t.pop();return t.map(t=>{if(Array.isArray(t)){const e={};t.forEach(t=>{e[ka(t)]=!0});const r=Object.keys(e);return r.sort(),r.join("|")}return ka(t)}).join("&")}function Ca(t){if("string"==typeof t){if(32===I(t=t.toLowerCase()))return"tx:"+t;if(-1===t.indexOf(":"))return t}else{if(Array.isArray(t))return"filter:*:"+Sa(t);if(yn.isForkEvent(t))throw Aa.warn("not implemented"),new Error("not implemented");if(t&&"object"==typeof t)return"filter:"+(t.address||"*")+":"+Sa(t.topics||[])}throw new Error("invalid event - "+t)}function xa(){return(new Date).getTime()}function _a(t){return new Promise(e=>{setTimeout(e,t)})}const Ta=["block","network","pending","poll"];class Pa{constructor(t,e,r){ut(this,"tag",t),ut(this,"listener",e),ut(this,"once",r),this._lastBlockNumber=-2,this._inflight=!1}get event(){switch(this.type){case"tx":return this.hash;case"filter":return this.filter}return this.tag}get type(){return this.tag.split(":")[0]}get hash(){const t=this.tag.split(":");return"tx"!==t[0]?null:t[1]}get filter(){const t=this.tag.split(":");if("filter"!==t[0])return null;const e=t[1],r=""===(n=t[2])?[]:n.split(/&/g).map(t=>{if(""===t)return[];const e=t.split("|").map(t=>"null"===t?null:t);return 1===e.length?e[0]:e});var n;const i={};return r.length>0&&(i.topics=r),e&&"*"!==e&&(i.address=e),i}pollable(){return this.tag.indexOf(":")>=0||Ta.indexOf(this.tag)>=0}}const Ia={0:{symbol:"btc",p2pkh:0,p2sh:5,prefix:"bc"},2:{symbol:"ltc",p2pkh:48,p2sh:50,prefix:"ltc"},3:{symbol:"doge",p2pkh:30,p2sh:22},60:{symbol:"eth",ilk:"eth"},61:{symbol:"etc",ilk:"eth"},700:{symbol:"xdai",ilk:"eth"}};function Na(t){return F(j.from(t).toHexString(),32)}function Ma(t){return Oo.encode(S([t,N(qo(qo(t)),0,4)]))}const Ba=new RegExp("^(ipfs)://(.*)$","i"),Ra=[new RegExp("^(https)://(.*)$","i"),new RegExp("^(data):(.*)$","i"),Ba,new RegExp("^eip155:[0-9]+/(erc[0-9]+):(.*)$","i")];function Fa(t,e){try{return Qe(Oa(t,e))}catch(t){}return null}function Oa(t,e){if("0x"===t)return null;const r=j.from(N(t,e,e+32)).toNumber(),n=j.from(N(t,r,r+32)).toNumber();return N(t,r+32,r+32+n)}function Da(t){return t.match(/^ipfs:\/\/ipfs\//i)?t=t.substring(12):t.match(/^ipfs:\/\//i)?t=t.substring(7):Aa.throwArgumentError("unsupported IPFS format","link",t),`https://gateway.ipfs.io/ipfs/${t}`}function Ua(t){const e=k(t);if(e.length>32)throw new Error("internal; should not happen");const r=new Uint8Array(32);return r.set(e,32-e.length),r}function La(t){if(t.length%32==0)return t;const e=new Uint8Array(32*Math.ceil(t.length/32));return e.set(t),e}function qa(t){const e=[];let r=0;for(let n=0;n<t.length;n++)e.push(null),r+=32;for(let n=0;n<t.length;n++){const i=k(t[n]);e[n]=Ua(r),e.push(Ua(i.length)),e.push(La(i)),r+=32+32*Math.ceil(i.length/32)}return M(e)}class za{constructor(t,e,r,n){ut(this,"provider",t),ut(this,"name",r),ut(this,"address",t.formatter.address(e)),ut(this,"_resolvedAddress",n)}supportsWildcard(){return this._supportsEip2544||(this._supportsEip2544=this.provider.call({to:this.address,data:"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000"}).then(t=>j.from(t).eq(1)).catch(t=>{if(t.code===g.errors.CALL_EXCEPTION)return!1;throw this._supportsEip2544=null,t})),this._supportsEip2544}_fetch(t,e){return Ea(this,void 0,void 0,function*(){const r={to:this.address,ccipReadEnabled:!0,data:M([t,Hr(this.name),e||"0x"])};let n=!1;(yield this.supportsWildcard())&&(n=!0,r.data=M(["0x9061b923",qa([jr(this.name),r.data])]));try{let t=yield this.provider.call(r);return k(t).length%32==4&&Aa.throwError("resolver threw error",g.errors.CALL_EXCEPTION,{transaction:r,data:t}),n&&(t=Oa(t,0)),t}catch(t){if(t.code===g.errors.CALL_EXCEPTION)return null;throw t}})}_fetchBytes(t,e){return Ea(this,void 0,void 0,function*(){const r=yield this._fetch(t,e);return null!=r?Oa(r,0):null})}_getAddress(t,e){const r=Ia[String(t)];if(null==r&&Aa.throwError(`unsupported coin type: ${t}`,g.errors.UNSUPPORTED_OPERATION,{operation:`getAddress(${t})`}),"eth"===r.ilk)return this.provider.formatter.address(e);const n=k(e);if(null!=r.p2pkh){const t=e.match(/^0x76a9([0-9a-f][0-9a-f])([0-9a-f]*)88ac$/);if(t){const e=parseInt(t[1],16);if(t[2].length===2*e&&e>=1&&e<=75)return Ma(S([[r.p2pkh],"0x"+t[2]]))}}if(null!=r.p2sh){const t=e.match(/^0xa9([0-9a-f][0-9a-f])([0-9a-f]*)87$/);if(t){const e=parseInt(t[1],16);if(t[2].length===2*e&&e>=1&&e<=75)return Ma(S([[r.p2sh],"0x"+t[2]]))}}if(null!=r.prefix){const t=n[1];let e=n[0];if(0===e?20!==t&&32!==t&&(e=-1):e=-1,e>=0&&n.length===2+t&&t>=1&&t<=75){const t=fa.toWords(n.slice(2));return t.unshift(e),fa.encode(r.prefix,t)}}return null}getAddress(t){return Ea(this,void 0,void 0,function*(){if(null==t&&(t=60),60===t)try{const t=yield this._fetch("0x3b3b57de");return"0x"===t||t===Ue?null:this.provider.formatter.callAddress(t)}catch(t){if(t.code===g.errors.CALL_EXCEPTION)return null;throw t}const e=yield this._fetchBytes("0xf1cb7e06",Na(t));if(null==e||"0x"===e)return null;const r=this._getAddress(t,e);return null==r&&Aa.throwError("invalid or unsupported coin data",g.errors.UNSUPPORTED_OPERATION,{operation:`getAddress(${t})`,coinType:t,data:e}),r})}getAvatar(){return Ea(this,void 0,void 0,function*(){const t=[{type:"name",content:this.name}];try{const e=yield this.getText("avatar");if(null==e)return null;for(let r=0;r<Ra.length;r++){const n=e.match(Ra[r]);if(null==n)continue;const i=n[1].toLowerCase();switch(i){case"https":return t.push({type:"url",content:e}),{linkage:t,url:e};case"data":return t.push({type:"data",content:e}),{linkage:t,url:e};case"ipfs":return t.push({type:"ipfs",content:e}),{linkage:t,url:Da(e)};case"erc721":case"erc1155":{const r="erc721"===i?"0xc87b56dd":"0x0e89341c";t.push({type:i,content:e});const o=this._resolvedAddress||(yield this.getAddress()),s=(n[2]||"").split("/");if(2!==s.length)return null;const a=yield this.provider.formatter.address(s[0]),l=F(j.from(s[1]).toHexString(),32);if("erc721"===i){const e=this.provider.formatter.callAddress(yield this.provider.call({to:a,data:M(["0x6352211e",l])}));if(o!==e)return null;t.push({type:"owner",content:e})}else if("erc1155"===i){const e=j.from(yield this.provider.call({to:a,data:M(["0x00fdd58e",F(o,32),l])}));if(e.isZero())return null;t.push({type:"balance",content:e.toString()})}const c={to:this.provider.formatter.address(s[0]),data:M([r,l])};let u=Fa(yield this.provider.call(c),0);if(null==u)return null;t.push({type:"metadata-url-base",content:u}),"erc1155"===i&&(u=u.replace("{id}",l.substring(2)),t.push({type:"metadata-url-expanded",content:u})),u.match(/^ipfs:/i)&&(u=Da(u)),t.push({type:"metadata-url",content:u});const h=yield la(u);if(!h)return null;t.push({type:"metadata",content:JSON.stringify(h)});let d=h.image;if("string"!=typeof d)return null;if(d.match(/^(https:\/\/|data:)/i));else{if(null==d.match(Ba))return null;t.push({type:"url-ipfs",content:d}),d=Da(d)}return t.push({type:"url",content:d}),{linkage:t,url:d}}}}}catch(t){}return null})}getContentHash(){return Ea(this,void 0,void 0,function*(){const t=yield this._fetchBytes("0xbc1c58d1");if(null==t||"0x"===t)return null;const e=t.match(/^0xe3010170(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(e){const t=parseInt(e[3],16);if(e[4].length===2*t)return"ipfs://"+Oo.encode("0x"+e[1])}const r=t.match(/^0xe5010172(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(r){const t=parseInt(r[3],16);if(r[4].length===2*t)return"ipns://"+Oo.encode("0x"+r[1])}const n=t.match(/^0xe40101fa011b20([0-9a-f]*)$/);if(n&&64===n[1].length)return"bzz://"+n[1];const i=t.match(/^0x90b2c605([0-9a-f]*)$/);if(i&&68===i[1].length){const t={"=":"","+":"-","/":"_"};return"sia://"+wr("0x"+i[1]).replace(/[=+\/]/g,e=>t[e])}return Aa.throwError("invalid or unsupported content hash data",g.errors.UNSUPPORTED_OPERATION,{operation:"getContentHash()",data:t})})}getText(t){return Ea(this,void 0,void 0,function*(){let e=Ve(t);e=S([Na(64),Na(e.length),e]),e.length%32!=0&&(e=S([e,F("0x",32-t.length%32)]));const r=yield this._fetchBytes("0x59d1d43c",P(e));return null==r||"0x"===r?null:Qe(r)})}}let Ga=null,Ha=1;class ja extends bn{constructor(t){if(super(),this._events=[],this._emitted={block:-2},this.disableCcipRead=!1,this.formatter=new.target.getFormatter(),ut(this,"anyNetwork","any"===t),this.anyNetwork&&(t=this.detectNetwork()),t instanceof Promise)this._networkPromise=t,t.catch(t=>{}),this._ready().catch(t=>{});else{const e=ht(new.target,"getNetwork")(t);e?(ut(this,"_network",e),this.emit("network",e,null)):Aa.throwArgumentError("invalid network","network",t)}this._maxInternalBlockNumber=-1024,this._lastBlockNumber=-2,this._maxFilterBlockRange=10,this._pollingInterval=4e3,this._fastQueryDate=0}_ready(){return Ea(this,void 0,void 0,function*(){if(null==this._network){let t=null;if(this._networkPromise)try{t=yield this._networkPromise}catch(t){}null==t&&(t=yield this.detectNetwork()),t||Aa.throwError("no network detected",g.errors.UNKNOWN_ERROR,{}),null==this._network&&(this.anyNetwork?this._network=t:ut(this,"_network",t),this.emit("network",t,null))}return this._network})}get ready(){return ca(()=>this._ready().then(t=>t,t=>{if(t.code!==g.errors.NETWORK_ERROR||"noNetwork"!==t.event)throw t}))}static getFormatter(){return null==Ga&&(Ga=new ga),Ga}static getNetwork(t){return ta(null==t?"homestead":t)}ccipReadFetch(t,e,r){return Ea(this,void 0,void 0,function*(){if(this.disableCcipRead||0===r.length)return null;const n=t.to.toLowerCase(),i=e.toLowerCase(),o=[];for(let t=0;t<r.length;t++){const e=r[t],s=e.replace("{sender}",n).replace("{data}",i),a=e.indexOf("{data}")>=0?null:JSON.stringify({data:i,sender:n}),l=yield la({url:s,errorPassThrough:!0},a,(t,e)=>(t.status=e.statusCode,t));if(l.data)return l.data;const c=l.message||"unknown error";if(l.status>=400&&l.status<500)return Aa.throwError(`response not found during CCIP fetch: ${c}`,g.errors.SERVER_ERROR,{url:e,errorMessage:c});o.push(c)}return Aa.throwError(`error encountered during CCIP fetch: ${o.map(t=>JSON.stringify(t)).join(", ")}`,g.errors.SERVER_ERROR,{urls:r,errorMessages:o})})}_getInternalBlockNumber(t){return Ea(this,void 0,void 0,function*(){if(yield this._ready(),t>0)for(;this._internalBlockNumber;){const e=this._internalBlockNumber;try{const r=yield e;if(xa()-r.respTime<=t)return r.blockNumber;break}catch(t){if(this._internalBlockNumber===e)break}}const e=xa(),r=dt({blockNumber:this.perform("getBlockNumber",{}),networkError:this.getNetwork().then(t=>null,t=>t)}).then(({blockNumber:t,networkError:n})=>{if(n)throw this._internalBlockNumber===r&&(this._internalBlockNumber=null),n;const i=xa();return(t=j.from(t).toNumber())<this._maxInternalBlockNumber&&(t=this._maxInternalBlockNumber),this._maxInternalBlockNumber=t,this._setFastBlockNumber(t),{blockNumber:t,reqTime:e,respTime:i}});return this._internalBlockNumber=r,r.catch(t=>{this._internalBlockNumber===r&&(this._internalBlockNumber=null)}),(yield r).blockNumber})}poll(){return Ea(this,void 0,void 0,function*(){const t=Ha++,e=[];let r=null;try{r=yield this._getInternalBlockNumber(100+this.pollingInterval/2)}catch(t){return void this.emit("error",t)}if(this._setFastBlockNumber(r),this.emit("poll",t,r),r!==this._lastBlockNumber){if(-2===this._emitted.block&&(this._emitted.block=r-1),Math.abs(this._emitted.block-r)>1e3)Aa.warn(`network block skew detected; skipping block events (emitted=${this._emitted.block} blockNumber${r})`),this.emit("error",Aa.makeError("network block skew detected",g.errors.NETWORK_ERROR,{blockNumber:r,event:"blockSkew",previousBlockNumber:this._emitted.block})),this.emit("block",r);else for(let t=this._emitted.block+1;t<=r;t++)this.emit("block",t);this._emitted.block!==r&&(this._emitted.block=r,Object.keys(this._emitted).forEach(t=>{if("block"===t)return;const e=this._emitted[t];"pending"!==e&&r-e>12&&delete this._emitted[t]})),-2===this._lastBlockNumber&&(this._lastBlockNumber=r-1),this._events.forEach(t=>{switch(t.type){case"tx":{const r=t.hash;let n=this.getTransactionReceipt(r).then(t=>t&&null!=t.blockNumber?(this._emitted["t:"+r]=t.blockNumber,this.emit(r,t),null):null).catch(t=>{this.emit("error",t)});e.push(n);break}case"filter":if(!t._inflight){t._inflight=!0,-2===t._lastBlockNumber&&(t._lastBlockNumber=r-1);const n=t.filter;n.fromBlock=t._lastBlockNumber+1,n.toBlock=r;const i=n.toBlock-this._maxFilterBlockRange;i>n.fromBlock&&(n.fromBlock=i),n.fromBlock<0&&(n.fromBlock=0);const o=this.getLogs(n).then(e=>{t._inflight=!1,0!==e.length&&e.forEach(e=>{e.blockNumber>t._lastBlockNumber&&(t._lastBlockNumber=e.blockNumber),this._emitted["b:"+e.blockHash]=e.blockNumber,this._emitted["t:"+e.transactionHash]=e.blockNumber,this.emit(n,e)})}).catch(e=>{this.emit("error",e),t._inflight=!1});e.push(o)}}}),this._lastBlockNumber=r,Promise.all(e).then(()=>{this.emit("didPoll",t)}).catch(t=>{this.emit("error",t)})}else this.emit("didPoll",t)})}resetEventsBlock(t){this._lastBlockNumber=t-1,this.polling&&this.poll()}get network(){return this._network}detectNetwork(){return Ea(this,void 0,void 0,function*(){return Aa.throwError("provider does not support network detection",g.errors.UNSUPPORTED_OPERATION,{operation:"provider.detectNetwork"})})}getNetwork(){return Ea(this,void 0,void 0,function*(){const t=yield this._ready(),e=yield this.detectNetwork();if(t.chainId!==e.chainId){if(this.anyNetwork)return this._network=e,this._lastBlockNumber=-2,this._fastBlockNumber=null,this._fastBlockNumberPromise=null,this._fastQueryDate=0,this._emitted.block=-2,this._maxInternalBlockNumber=-1024,this._internalBlockNumber=null,this.emit("network",e,t),yield _a(0),this._network;const r=Aa.makeError("underlying network changed",g.errors.NETWORK_ERROR,{event:"changed",network:t,detectedNetwork:e});throw this.emit("error",r),r}return t})}get blockNumber(){return this._getInternalBlockNumber(100+this.pollingInterval/2).then(t=>{this._setFastBlockNumber(t)},t=>{}),null!=this._fastBlockNumber?this._fastBlockNumber:-1}get polling(){return null!=this._poller}set polling(t){t&&!this._poller?(this._poller=setInterval(()=>{this.poll()},this.pollingInterval),this._bootstrapPoll||(this._bootstrapPoll=setTimeout(()=>{this.poll(),this._bootstrapPoll=setTimeout(()=>{this._poller||this.poll(),this._bootstrapPoll=null},this.pollingInterval)},0))):!t&&this._poller&&(clearInterval(this._poller),this._poller=null)}get pollingInterval(){return this._pollingInterval}set pollingInterval(t){if("number"!=typeof t||t<=0||parseInt(String(t))!=t)throw new Error("invalid polling interval");this._pollingInterval=t,this._poller&&(clearInterval(this._poller),this._poller=setInterval(()=>{this.poll()},this._pollingInterval))}_getFastBlockNumber(){const t=xa();return t-this._fastQueryDate>2*this._pollingInterval&&(this._fastQueryDate=t,this._fastBlockNumberPromise=this.getBlockNumber().then(t=>((null==this._fastBlockNumber||t>this._fastBlockNumber)&&(this._fastBlockNumber=t),this._fastBlockNumber))),this._fastBlockNumberPromise}_setFastBlockNumber(t){null!=this._fastBlockNumber&&t<this._fastBlockNumber||(this._fastQueryDate=xa(),(null==this._fastBlockNumber||t>this._fastBlockNumber)&&(this._fastBlockNumber=t,this._fastBlockNumberPromise=Promise.resolve(t)))}waitForTransaction(t,e,r){return Ea(this,void 0,void 0,function*(){return this._waitForTransaction(t,null==e?1:e,r||0,null)})}_waitForTransaction(t,e,r,n){return Ea(this,void 0,void 0,function*(){const i=yield this.getTransactionReceipt(t);return(i?i.confirmations:0)>=e?i:new Promise((i,o)=>{const s=[];let a=!1;const l=function(){return!!a||(a=!0,s.forEach(t=>{t()}),!1)},c=t=>{t.confirmations<e||l()||i(t)};if(this.on(t,c),s.push(()=>{this.removeListener(t,c)}),n){let r=n.startBlock,i=null;const c=s=>Ea(this,void 0,void 0,function*(){a||(yield _a(1e3),this.getTransactionCount(n.from).then(u=>Ea(this,void 0,void 0,function*(){if(!a){if(u<=n.nonce)r=s;else{{const e=yield this.getTransaction(t);if(e&&null!=e.blockNumber)return}for(null==i&&(i=r-3,i<n.startBlock&&(i=n.startBlock));i<=s;){if(a)return;const r=yield this.getBlockWithTransactions(i);for(let i=0;i<r.transactions.length;i++){const s=r.transactions[i];if(s.hash===t)return;if(s.from===n.from&&s.nonce===n.nonce){if(a)return;const r=yield this.waitForTransaction(s.hash,e);if(l())return;let i="replaced";return s.data===n.data&&s.to===n.to&&s.value.eq(n.value)?i="repriced":"0x"===s.data&&s.from===s.to&&s.value.isZero()&&(i="cancelled"),void o(Aa.makeError("transaction was replaced",g.errors.TRANSACTION_REPLACED,{cancelled:"replaced"===i||"cancelled"===i,reason:i,replacement:this._wrapTransaction(s),hash:t,receipt:r}))}}i++}}a||this.once("block",c)}}),t=>{a||this.once("block",c)}))});if(a)return;this.once("block",c),s.push(()=>{this.removeListener("block",c)})}if("number"==typeof r&&r>0){const t=setTimeout(()=>{l()||o(Aa.makeError("timeout exceeded",g.errors.TIMEOUT,{timeout:r}))},r);t.unref&&t.unref(),s.push(()=>{clearTimeout(t)})}})})}getBlockNumber(){return Ea(this,void 0,void 0,function*(){return this._getInternalBlockNumber(0)})}getGasPrice(){return Ea(this,void 0,void 0,function*(){yield this.getNetwork();const t=yield this.perform("getGasPrice",{});try{return j.from(t)}catch(e){return Aa.throwError("bad result from backend",g.errors.SERVER_ERROR,{method:"getGasPrice",result:t,error:e})}})}getBalance(t,e){return Ea(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield dt({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getBalance",r);try{return j.from(n)}catch(t){return Aa.throwError("bad result from backend",g.errors.SERVER_ERROR,{method:"getBalance",params:r,result:n,error:t})}})}getTransactionCount(t,e){return Ea(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield dt({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getTransactionCount",r);try{return j.from(n).toNumber()}catch(t){return Aa.throwError("bad result from backend",g.errors.SERVER_ERROR,{method:"getTransactionCount",params:r,result:n,error:t})}})}getCode(t,e){return Ea(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield dt({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getCode",r);try{return P(n)}catch(t){return Aa.throwError("bad result from backend",g.errors.SERVER_ERROR,{method:"getCode",params:r,result:n,error:t})}})}getStorageAt(t,e,r){return Ea(this,void 0,void 0,function*(){yield this.getNetwork();const n=yield dt({address:this._getAddress(t),blockTag:this._getBlockTag(r),position:Promise.resolve(e).then(t=>B(t))}),i=yield this.perform("getStorageAt",n);try{return P(i)}catch(t){return Aa.throwError("bad result from backend",g.errors.SERVER_ERROR,{method:"getStorageAt",params:n,result:i,error:t})}})}_wrapTransaction(t,e,r){if(null!=e&&32!==I(e))throw new Error("invalid response - sendTransaction");const n=t;return null!=e&&t.hash!==e&&Aa.throwError("Transaction hash mismatch from Provider.sendTransaction.",g.errors.UNKNOWN_ERROR,{expectedHash:t.hash,returnedHash:e}),n.wait=(e,n)=>Ea(this,void 0,void 0,function*(){let i;null==e&&(e=1),null==n&&(n=0),0!==e&&null!=r&&(i={data:t.data,from:t.from,nonce:t.nonce,to:t.to,value:t.value,startBlock:r});const o=yield this._waitForTransaction(t.hash,e,n,i);return null==o&&0===e?null:(this._emitted["t:"+t.hash]=o.blockNumber,0===o.status&&Aa.throwError("transaction failed",g.errors.CALL_EXCEPTION,{transactionHash:t.hash,transaction:t,receipt:o}),o)}),n}sendTransaction(t){return Ea(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield Promise.resolve(t).then(t=>P(t)),r=this.formatter.transaction(t);null==r.confirmations&&(r.confirmations=0);const n=yield this._getInternalBlockNumber(100+2*this.pollingInterval);try{const t=yield this.perform("sendTransaction",{signedTransaction:e});return this._wrapTransaction(r,t,n)}catch(t){throw t.transaction=r,t.transactionHash=r.hash,t}})}_getTransactionRequest(t){return Ea(this,void 0,void 0,function*(){const e=yield t,r={};return["from","to"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>t?this._getAddress(t):null))}),["gasLimit","gasPrice","maxFeePerGas","maxPriorityFeePerGas","value"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>t?j.from(t):null))}),["type"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>null!=t?t:null))}),e.accessList&&(r.accessList=this.formatter.accessList(e.accessList)),["data"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>t?P(t):null))}),this.formatter.transactionRequest(yield dt(r))})}_getFilter(t){return Ea(this,void 0,void 0,function*(){t=yield t;const e={};return null!=t.address&&(e.address=this._getAddress(t.address)),["blockHash","topics"].forEach(r=>{null!=t[r]&&(e[r]=t[r])}),["fromBlock","toBlock"].forEach(r=>{null!=t[r]&&(e[r]=this._getBlockTag(t[r]))}),this.formatter.filter(yield dt(e))})}_call(t,e,r){return Ea(this,void 0,void 0,function*(){r>=10&&Aa.throwError("CCIP read exceeded maximum redirections",g.errors.SERVER_ERROR,{redirects:r,transaction:t});const n=t.to,i=yield this.perform("call",{transaction:t,blockTag:e});if(r>=0&&"latest"===e&&null!=n&&"0x556f1830"===i.substring(0,10)&&I(i)%32==4)try{const o=N(i,4),s=N(o,0,32);j.from(s).eq(n)||Aa.throwError("CCIP Read sender did not match",g.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const a=[],l=j.from(N(o,32,64)).toNumber(),c=j.from(N(o,l,l+32)).toNumber(),u=N(o,l+32);for(let e=0;e<c;e++){const r=Fa(u,32*e);null==r&&Aa.throwError("CCIP Read contained corrupt URL string",g.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i}),a.push(r)}const h=Oa(o,64);j.from(N(o,100,128)).isZero()||Aa.throwError("CCIP Read callback selector included junk",g.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const d=N(o,96,100),f=Oa(o,128),p=yield this.ccipReadFetch(t,h,a);null==p&&Aa.throwError("CCIP Read disabled or provided no URLs",g.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const m={to:n,data:M([d,qa([p,f])])};return this._call(m,e,r+1)}catch(t){if(t.code===g.errors.SERVER_ERROR)throw t}try{return P(i)}catch(r){return Aa.throwError("bad result from backend",g.errors.SERVER_ERROR,{method:"call",params:{transaction:t,blockTag:e},result:i,error:r})}})}call(t,e){return Ea(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield dt({transaction:this._getTransactionRequest(t),blockTag:this._getBlockTag(e),ccipReadEnabled:Promise.resolve(t.ccipReadEnabled)});return this._call(r.transaction,r.blockTag,r.ccipReadEnabled?0:-1)})}estimateGas(t){return Ea(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield dt({transaction:this._getTransactionRequest(t)}),r=yield this.perform("estimateGas",e);try{return j.from(r)}catch(t){return Aa.throwError("bad result from backend",g.errors.SERVER_ERROR,{method:"estimateGas",params:e,result:r,error:t})}})}_getAddress(t){return Ea(this,void 0,void 0,function*(){"string"!=typeof(t=yield t)&&Aa.throwArgumentError("invalid address or ENS name","name",t);const e=yield this.resolveName(t);return null==e&&Aa.throwError("ENS name not configured",g.errors.UNSUPPORTED_OPERATION,{operation:`resolveName(${JSON.stringify(t)})`}),e})}_getBlock(t,e){return Ea(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;let r=-128;const n={includeTransactions:!!e};if(_(t,32))n.blockHash=t;else try{n.blockTag=yield this._getBlockTag(t),_(n.blockTag)&&(r=parseInt(n.blockTag.substring(2),16))}catch(e){Aa.throwArgumentError("invalid block hash or block tag","blockHashOrBlockTag",t)}return ca(()=>Ea(this,void 0,void 0,function*(){const t=yield this.perform("getBlock",n);if(null==t)return null!=n.blockHash&&null==this._emitted["b:"+n.blockHash]||null!=n.blockTag&&r>this._emitted.block?null:void 0;if(e){let e=null;for(let r=0;r<t.transactions.length;r++){const n=t.transactions[r];if(null==n.blockNumber)n.confirmations=0;else if(null==n.confirmations){null==e&&(e=yield this._getInternalBlockNumber(100+2*this.pollingInterval));let t=e-n.blockNumber+1;t<=0&&(t=1),n.confirmations=t}}const r=this.formatter.blockWithTransactions(t);return r.transactions=r.transactions.map(t=>this._wrapTransaction(t)),r}return this.formatter.block(t)}),{oncePoll:this})})}getBlock(t){return this._getBlock(t,!1)}getBlockWithTransactions(t){return this._getBlock(t,!0)}getTransaction(t){return Ea(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;const e={transactionHash:this.formatter.hash(t,!0)};return ca(()=>Ea(this,void 0,void 0,function*(){const r=yield this.perform("getTransaction",e);if(null==r)return null==this._emitted["t:"+t]?null:void 0;const n=this.formatter.transactionResponse(r);if(null==n.blockNumber)n.confirmations=0;else if(null==n.confirmations){let t=(yield this._getInternalBlockNumber(100+2*this.pollingInterval))-n.blockNumber+1;t<=0&&(t=1),n.confirmations=t}return this._wrapTransaction(n)}),{oncePoll:this})})}getTransactionReceipt(t){return Ea(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;const e={transactionHash:this.formatter.hash(t,!0)};return ca(()=>Ea(this,void 0,void 0,function*(){const r=yield this.perform("getTransactionReceipt",e);if(null==r)return null==this._emitted["t:"+t]?null:void 0;if(null==r.blockHash)return;const n=this.formatter.receipt(r);if(null==n.blockNumber)n.confirmations=0;else if(null==n.confirmations){let t=(yield this._getInternalBlockNumber(100+2*this.pollingInterval))-n.blockNumber+1;t<=0&&(t=1),n.confirmations=t}return n}),{oncePoll:this})})}getLogs(t){return Ea(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield dt({filter:this._getFilter(t)}),r=yield this.perform("getLogs",e);return r.forEach(t=>{null==t.removed&&(t.removed=!1)}),ga.arrayOf(this.formatter.filterLog.bind(this.formatter))(r)})}getEtherPrice(){return Ea(this,void 0,void 0,function*(){return yield this.getNetwork(),this.perform("getEtherPrice",{})})}_getBlockTag(t){return Ea(this,void 0,void 0,function*(){if("number"==typeof(t=yield t)&&t<0){t%1&&Aa.throwArgumentError("invalid BlockTag","blockTag",t);let e=yield this._getInternalBlockNumber(100+2*this.pollingInterval);return e+=t,e<0&&(e=0),this.formatter.blockTag(e)}return this.formatter.blockTag(t)})}getResolver(t){return Ea(this,void 0,void 0,function*(){let e=t;for(;;){if(""===e||"."===e)return null;if("eth"!==t&&"eth"===e)return null;const r=yield this._getResolver(e,"getResolver");if(null!=r){const n=new za(this,r,t);return e===t||(yield n.supportsWildcard())?n:null}e=e.split(".").slice(1).join(".")}})}_getResolver(t,e){return Ea(this,void 0,void 0,function*(){null==e&&(e="ENS");const r=yield this.getNetwork();r.ensAddress||Aa.throwError("network does not support ENS",g.errors.UNSUPPORTED_OPERATION,{operation:e,network:r.name});try{const e=yield this.call({to:r.ensAddress,data:"0x0178b8bf"+Hr(t).substring(2)});return this.formatter.callAddress(e)}catch(t){}return null})}resolveName(t){return Ea(this,void 0,void 0,function*(){t=yield t;try{return Promise.resolve(this.formatter.address(t))}catch(e){if(_(t))throw e}"string"!=typeof t&&Aa.throwArgumentError("invalid ENS name","name",t);const e=yield this.getResolver(t);return e?yield e.getAddress():null})}lookupAddress(t){return Ea(this,void 0,void 0,function*(){t=yield t;const e=(t=this.formatter.address(t)).substring(2).toLowerCase()+".addr.reverse",r=yield this._getResolver(e,"lookupAddress");if(null==r)return null;const n=Fa(yield this.call({to:r,data:"0x691f3431"+Hr(e).substring(2)}),0);return(yield this.resolveName(n))!=t?null:n})}getAvatar(t){return Ea(this,void 0,void 0,function*(){let e=null;if(_(t)){const r=this.formatter.address(t).substring(2).toLowerCase()+".addr.reverse",n=yield this._getResolver(r,"getAvatar");if(!n)return null;e=new za(this,n,r);try{const t=yield e.getAvatar();if(t)return t.url}catch(t){if(t.code!==g.errors.CALL_EXCEPTION)throw t}try{const t=Fa(yield this.call({to:n,data:"0x691f3431"+Hr(r).substring(2)}),0);e=yield this.getResolver(t)}catch(t){if(t.code!==g.errors.CALL_EXCEPTION)throw t;return null}}else if(e=yield this.getResolver(t),!e)return null;const r=yield e.getAvatar();return null==r?null:r.url})}perform(t,e){return Aa.throwError(t+" not implemented",g.errors.NOT_IMPLEMENTED,{operation:t})}_startEvent(t){this.polling=this._events.filter(t=>t.pollable()).length>0}_stopEvent(t){this.polling=this._events.filter(t=>t.pollable()).length>0}_addEventListener(t,e,r){const n=new Pa(Ca(t),e,r);return this._events.push(n),this._startEvent(n),this}on(t,e){return this._addEventListener(t,e,!1)}once(t,e){return this._addEventListener(t,e,!0)}emit(t,...e){let r=!1,n=[],i=Ca(t);return this._events=this._events.filter(t=>t.tag!==i||(setTimeout(()=>{t.listener.apply(this,e)},0),r=!0,!t.once||(n.push(t),!1))),n.forEach(t=>{this._stopEvent(t)}),r}listenerCount(t){if(!t)return this._events.length;let e=Ca(t);return this._events.filter(t=>t.tag===e).length}listeners(t){if(null==t)return this._events.map(t=>t.listener);let e=Ca(t);return this._events.filter(t=>t.tag===e).map(t=>t.listener)}off(t,e){if(null==e)return this.removeAllListeners(t);const r=[];let n=!1,i=Ca(t);return this._events=this._events.filter(t=>t.tag!==i||t.listener!=e||(!!n||(n=!0,r.push(t),!1))),r.forEach(t=>{this._stopEvent(t)}),this}removeAllListeners(t){let e=[];if(null==t)e=this._events,this._events=[];else{const r=Ca(t);this._events=this._events.filter(t=>t.tag!==r||(e.push(t),!1))}return e.forEach(t=>{this._stopEvent(t)}),this}}var Ka=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const Wa=new g(pa),Va=["call","estimateGas"];function $a(t,e){if(null==t)return null;if("string"==typeof t.message&&t.message.match("reverted")){const r=_(t.data)?t.data:null;if(!e||r)return{message:t.message,data:r}}if("object"==typeof t){for(const r in t){const n=$a(t[r],e);if(n)return n}return null}if("string"==typeof t)try{return $a(JSON.parse(t),e)}catch(t){}return null}function Ja(t,e,r){const n=r.transaction||r.signedTransaction;if("call"===t){const t=$a(e,!0);if(t)return t.data;Wa.throwError("missing revert data in call exception; Transaction reverted without a reason string",g.errors.CALL_EXCEPTION,{data:"0x",transaction:n,error:e})}if("estimateGas"===t){let r=$a(e.body,!1);null==r&&(r=$a(e,!1)),r&&Wa.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",g.errors.UNPREDICTABLE_GAS_LIMIT,{reason:r.message,method:t,transaction:n,error:e})}let i=e.message;throw e.code===g.errors.SERVER_ERROR&&e.error&&"string"==typeof e.error.message?i=e.error.message:"string"==typeof e.body?i=e.body:"string"==typeof e.responseText&&(i=e.responseText),i=(i||"").toLowerCase(),i.match(/insufficient funds|base fee exceeds gas limit|InsufficientFunds/i)&&Wa.throwError("insufficient funds for intrinsic transaction cost",g.errors.INSUFFICIENT_FUNDS,{error:e,method:t,transaction:n}),i.match(/nonce (is )?too low/i)&&Wa.throwError("nonce has already been used",g.errors.NONCE_EXPIRED,{error:e,method:t,transaction:n}),i.match(/replacement transaction underpriced|transaction gas price.*too low/i)&&Wa.throwError("replacement fee too low",g.errors.REPLACEMENT_UNDERPRICED,{error:e,method:t,transaction:n}),i.match(/only replay-protected/i)&&Wa.throwError("legacy pre-eip-155 transactions not supported",g.errors.UNSUPPORTED_OPERATION,{error:e,method:t,transaction:n}),Va.indexOf(t)>=0&&i.match(/gas required exceeds allowance|always failing transaction|execution reverted|revert/)&&Wa.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",g.errors.UNPREDICTABLE_GAS_LIMIT,{error:e,method:t,transaction:n}),e}function Qa(t){return new Promise(function(e){setTimeout(e,t)})}function Ya(t){if(t.error){const e=new Error(t.error.message);throw e.code=t.error.code,e.data=t.error.data,e}return t.result}function Xa(t){return t?t.toLowerCase():t}const Za={};class tl extends Cn{constructor(t,e,r){if(super(),t!==Za)throw new Error("do not call the JsonRpcSigner constructor directly; use provider.getSigner");ut(this,"provider",e),null==r&&(r=0),"string"==typeof r?(ut(this,"_address",this.provider.formatter.address(r)),ut(this,"_index",null)):"number"==typeof r?(ut(this,"_index",r),ut(this,"_address",null)):Wa.throwArgumentError("invalid address or index","addressOrIndex",r)}connect(t){return Wa.throwError("cannot alter JSON-RPC Signer connection",g.errors.UNSUPPORTED_OPERATION,{operation:"connect"})}connectUnchecked(){return new el(Za,this.provider,this._address||this._index)}getAddress(){return this._address?Promise.resolve(this._address):this.provider.send("eth_accounts",[]).then(t=>(t.length<=this._index&&Wa.throwError("unknown account #"+this._index,g.errors.UNSUPPORTED_OPERATION,{operation:"getAddress"}),this.provider.formatter.address(t[this._index])))}sendUncheckedTransaction(t){t=pt(t);const e=this.getAddress().then(t=>(t&&(t=t.toLowerCase()),t));if(null==t.gasLimit){const r=pt(t);r.from=e,t.gasLimit=this.provider.estimateGas(r)}return null!=t.to&&(t.to=Promise.resolve(t.to).then(t=>Ka(this,void 0,void 0,function*(){if(null==t)return null;const e=yield this.provider.resolveName(t);return null==e&&Wa.throwArgumentError("provided ENS name resolves to null","tx.to",t),e}))),dt({tx:dt(t),sender:e}).then(({tx:e,sender:r})=>{null!=e.from?e.from.toLowerCase()!==r&&Wa.throwArgumentError("from address mismatch","transaction",t):e.from=r;const n=this.provider.constructor.hexlifyTransaction(e,{from:!0});return this.provider.send("eth_sendTransaction",[n]).then(t=>t,t=>("string"==typeof t.message&&t.message.match(/user denied/i)&&Wa.throwError("user rejected transaction",g.errors.ACTION_REJECTED,{action:"sendTransaction",transaction:e}),Ja("sendTransaction",t,n)))})}signTransaction(t){return Wa.throwError("signing transactions is unsupported",g.errors.UNSUPPORTED_OPERATION,{operation:"signTransaction"})}sendTransaction(t){return Ka(this,void 0,void 0,function*(){const e=yield this.provider._getInternalBlockNumber(100+2*this.provider.pollingInterval),r=yield this.sendUncheckedTransaction(t);try{return yield ca(()=>Ka(this,void 0,void 0,function*(){const t=yield this.provider.getTransaction(r);if(null!==t)return this.provider._wrapTransaction(t,r,e)}),{oncePoll:this.provider})}catch(t){throw t.transactionHash=r,t}})}signMessage(t){return Ka(this,void 0,void 0,function*(){const e="string"==typeof t?Ve(t):t,r=yield this.getAddress();try{return yield this.provider.send("personal_sign",[P(e),r.toLowerCase()])}catch(e){throw"string"==typeof e.message&&e.message.match(/user denied/i)&&Wa.throwError("user rejected signing",g.errors.ACTION_REJECTED,{action:"signMessage",from:r,messageData:t}),e}})}_legacySignMessage(t){return Ka(this,void 0,void 0,function*(){const e="string"==typeof t?Ve(t):t,r=yield this.getAddress();try{return yield this.provider.send("eth_sign",[r.toLowerCase(),P(e)])}catch(e){throw"string"==typeof e.message&&e.message.match(/user denied/i)&&Wa.throwError("user rejected signing",g.errors.ACTION_REJECTED,{action:"_legacySignMessage",from:r,messageData:t}),e}})}_signTypedData(t,e,r){return Ka(this,void 0,void 0,function*(){const n=yield ln.resolveNames(t,e,r,t=>this.provider.resolveName(t)),i=yield this.getAddress();try{return yield this.provider.send("eth_signTypedData_v4",[i.toLowerCase(),JSON.stringify(ln.getPayload(n.domain,e,n.value))])}catch(t){throw"string"==typeof t.message&&t.message.match(/user denied/i)&&Wa.throwError("user rejected signing",g.errors.ACTION_REJECTED,{action:"_signTypedData",from:i,messageData:{domain:n.domain,types:e,value:n.value}}),t}})}unlock(t){return Ka(this,void 0,void 0,function*(){const e=this.provider,r=yield this.getAddress();return e.send("personal_unlockAccount",[r.toLowerCase(),t,null])})}}class el extends tl{sendTransaction(t){return this.sendUncheckedTransaction(t).then(t=>({hash:t,nonce:null,gasLimit:null,gasPrice:null,data:null,value:null,chainId:null,confirmations:0,from:null,wait:e=>this.provider.waitForTransaction(t,e)}))}}const rl={chainId:!0,data:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,value:!0,type:!0,accessList:!0,maxFeePerGas:!0,maxPriorityFeePerGas:!0};class nl extends ja{constructor(t,e){let r=e;null==r&&(r=new Promise((t,e)=>{setTimeout(()=>{this.detectNetwork().then(e=>{t(e)},t=>{e(t)})},0)})),super(r),t||(t=ht(this.constructor,"defaultUrl")()),ut(this,"connection","string"==typeof t?Object.freeze({url:t}):Object.freeze(pt(t))),this._nextId=42}get _cache(){return null==this._eventLoopCache&&(this._eventLoopCache={}),this._eventLoopCache}static defaultUrl(){return"http://localhost:8545"}detectNetwork(){return this._cache.detectNetwork||(this._cache.detectNetwork=this._uncachedDetectNetwork(),setTimeout(()=>{this._cache.detectNetwork=null},0)),this._cache.detectNetwork}_uncachedDetectNetwork(){return Ka(this,void 0,void 0,function*(){yield Qa(0);let t=null;try{t=yield this.send("eth_chainId",[])}catch(e){try{t=yield this.send("net_version",[])}catch(t){}}if(null!=t){const e=ht(this.constructor,"getNetwork");try{return e(j.from(t).toNumber())}catch(e){return Wa.throwError("could not detect network",g.errors.NETWORK_ERROR,{chainId:t,event:"invalidNetwork",serverError:e})}}return Wa.throwError("could not detect network",g.errors.NETWORK_ERROR,{event:"noNetwork"})})}getSigner(t){return new tl(Za,this,t)}getUncheckedSigner(t){return this.getSigner(t).connectUnchecked()}listAccounts(){return this.send("eth_accounts",[]).then(t=>t.map(t=>this.formatter.address(t)))}send(t,e){const r={method:t,params:e,id:this._nextId++,jsonrpc:"2.0"};this.emit("debug",{action:"request",request:wt(r),provider:this});const n=["eth_chainId","eth_blockNumber"].indexOf(t)>=0;if(n&&this._cache[t])return this._cache[t];const i=la(this.connection,JSON.stringify(r),Ya).then(t=>(this.emit("debug",{action:"response",request:r,response:t,provider:this}),t),t=>{throw this.emit("debug",{action:"response",error:t,request:r,provider:this}),t});return n&&(this._cache[t]=i,setTimeout(()=>{this._cache[t]=null},0)),i}prepareRequest(t,e){switch(t){case"getBlockNumber":return["eth_blockNumber",[]];case"getGasPrice":return["eth_gasPrice",[]];case"getBalance":return["eth_getBalance",[Xa(e.address),e.blockTag]];case"getTransactionCount":return["eth_getTransactionCount",[Xa(e.address),e.blockTag]];case"getCode":return["eth_getCode",[Xa(e.address),e.blockTag]];case"getStorageAt":return["eth_getStorageAt",[Xa(e.address),F(e.position,32),e.blockTag]];case"sendTransaction":return["eth_sendRawTransaction",[e.signedTransaction]];case"getBlock":return e.blockTag?["eth_getBlockByNumber",[e.blockTag,!!e.includeTransactions]]:e.blockHash?["eth_getBlockByHash",[e.blockHash,!!e.includeTransactions]]:null;case"getTransaction":return["eth_getTransactionByHash",[e.transactionHash]];case"getTransactionReceipt":return["eth_getTransactionReceipt",[e.transactionHash]];case"call":return["eth_call",[ht(this.constructor,"hexlifyTransaction")(e.transaction,{from:!0}),e.blockTag]];case"estimateGas":return["eth_estimateGas",[ht(this.constructor,"hexlifyTransaction")(e.transaction,{from:!0})]];case"getLogs":return e.filter&&null!=e.filter.address&&(e.filter.address=Xa(e.filter.address)),["eth_getLogs",[e.filter]]}return null}perform(t,e){return Ka(this,void 0,void 0,function*(){if("call"===t||"estimateGas"===t){const t=e.transaction;if(t&&null!=t.type&&j.from(t.type).isZero()&&null==t.maxFeePerGas&&null==t.maxPriorityFeePerGas){const r=yield this.getFeeData();null==r.maxFeePerGas&&null==r.maxPriorityFeePerGas&&((e=pt(e)).transaction=pt(t),delete e.transaction.type)}}const r=this.prepareRequest(t,e);null==r&&Wa.throwError(t+" not implemented",g.errors.NOT_IMPLEMENTED,{operation:t});try{return yield this.send(r[0],r[1])}catch(r){return Ja(t,r,e)}})}_startEvent(t){"pending"===t.tag&&this._startPending(),super._startEvent(t)}_startPending(){if(null!=this._pendingFilter)return;const t=this,e=this.send("eth_newPendingTransactionFilter",[]);this._pendingFilter=e,e.then(function(r){return function n(){t.send("eth_getFilterChanges",[r]).then(function(r){if(t._pendingFilter!=e)return null;let n=Promise.resolve();return r.forEach(function(e){t._emitted["t:"+e.toLowerCase()]="pending",n=n.then(function(){return t.getTransaction(e).then(function(e){return t.emit("pending",e),null})})}),n.then(function(){return Qa(1e3)})}).then(function(){if(t._pendingFilter==e)return setTimeout(function(){n()},0),null;t.send("eth_uninstallFilter",[r])}).catch(t=>{})}(),r}).catch(t=>{})}_stopEvent(t){"pending"===t.tag&&0===this.listenerCount("pending")&&(this._pendingFilter=null),super._stopEvent(t)}static hexlifyTransaction(t,e){const r=pt(rl);if(e)for(const t in e)e[t]&&(r[t]=!0);ft(t,r);const n={};return["chainId","gasLimit","gasPrice","type","maxFeePerGas","maxPriorityFeePerGas","nonce","value"].forEach(function(e){if(null==t[e])return;const r=B(j.from(t[e]));"gasLimit"===e&&(e="gas"),n[e]=r}),["from","to","data"].forEach(function(e){null!=t[e]&&(n[e]=P(t[e]))}),t.accessList&&(n.accessList=ho(t.accessList)),n}}let il=null;try{if(il=WebSocket,null==il)throw new Error("inject please")}catch(t){const e=new g(pa);il=function(){e.throwError("WebSockets not supported in this environment",g.errors.UNSUPPORTED_OPERATION,{operation:"new WebSocket()"})}}var ol=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const sl=new g(pa);let al=1;class ll extends nl{constructor(t,e){"any"===e&&sl.throwError("WebSocketProvider does not support 'any' network yet",g.errors.UNSUPPORTED_OPERATION,{operation:"network:any"}),super("string"==typeof t?t:"_websocket",e),this._pollingInterval=-1,this._wsReady=!1,ut(this,"_websocket","string"==typeof t?new il(this.connection.url):t),ut(this,"_requests",{}),ut(this,"_subs",{}),ut(this,"_subIds",{}),ut(this,"_detectNetwork",super.detectNetwork()),this.websocket.onopen=()=>{this._wsReady=!0,Object.keys(this._requests).forEach(t=>{this.websocket.send(this._requests[t].payload)})},this.websocket.onmessage=t=>{const e=t.data,r=JSON.parse(e);if(null!=r.id){const t=String(r.id),n=this._requests[t];if(delete this._requests[t],void 0!==r.result)n.callback(null,r.result),this.emit("debug",{action:"response",request:JSON.parse(n.payload),response:r.result,provider:this});else{let t=null;r.error?(t=new Error(r.error.message||"unknown error"),ut(t,"code",r.error.code||null),ut(t,"response",e)):t=new Error("unknown error"),n.callback(t,void 0),this.emit("debug",{action:"response",error:t,request:JSON.parse(n.payload),provider:this})}}else if("eth_subscription"===r.method){const t=this._subs[r.params.subscription];t&&t.processFunc(r.params.result)}else console.warn("this should not happen")};const r=setInterval(()=>{this.emit("poll")},1e3);r.unref&&r.unref()}get websocket(){return this._websocket}detectNetwork(){return this._detectNetwork}get pollingInterval(){return 0}resetEventsBlock(t){sl.throwError("cannot reset events block on WebSocketProvider",g.errors.UNSUPPORTED_OPERATION,{operation:"resetEventBlock"})}set pollingInterval(t){sl.throwError("cannot set polling interval on WebSocketProvider",g.errors.UNSUPPORTED_OPERATION,{operation:"setPollingInterval"})}poll(){return ol(this,void 0,void 0,function*(){return null})}set polling(t){t&&sl.throwError("cannot set polling on WebSocketProvider",g.errors.UNSUPPORTED_OPERATION,{operation:"setPolling"})}send(t,e){const r=al++;return new Promise((n,i)=>{const o=JSON.stringify({method:t,params:e,id:r,jsonrpc:"2.0"});this.emit("debug",{action:"request",request:JSON.parse(o),provider:this}),this._requests[String(r)]={callback:function(t,e){return t?i(t):n(e)},payload:o},this._wsReady&&this.websocket.send(o)})}static defaultUrl(){return"ws://localhost:8546"}_subscribe(t,e,r){return ol(this,void 0,void 0,function*(){let n=this._subIds[t];null==n&&(n=Promise.all(e).then(t=>this.send("eth_subscribe",t)),this._subIds[t]=n);const i=yield n;this._subs[i]={tag:t,processFunc:r}})}_startEvent(t){switch(t.type){case"block":this._subscribe("block",["newHeads"],t=>{const e=j.from(t.number).toNumber();this._emitted.block=e,this.emit("block",e)});break;case"pending":this._subscribe("pending",["newPendingTransactions"],t=>{this.emit("pending",t)});break;case"filter":this._subscribe(t.tag,["logs",this._getFilter(t.filter)],e=>{null==e.removed&&(e.removed=!1),this.emit(t.filter,this.formatter.filterLog(e))});break;case"tx":{const e=t=>{const e=t.hash;this.getTransactionReceipt(e).then(t=>{t&&this.emit(e,t)})};e(t),this._subscribe("tx",["newHeads"],t=>{this._events.filter(t=>"tx"===t.type).forEach(e)});break}case"debug":case"poll":case"willPoll":case"didPoll":case"error":break;default:console.log("unhandled:",t)}}_stopEvent(t){let e=t.tag;if("tx"===t.type){if(this._events.filter(t=>"tx"===t.type).length)return;e="tx"}else if(this.listenerCount(t.event))return;const r=this._subIds[e];r&&(delete this._subIds[e],r.then(t=>{this._subs[t]&&(delete this._subs[t],this.send("eth_unsubscribe",[t]))}))}destroy(){return ol(this,void 0,void 0,function*(){this.websocket.readyState===il.CONNECTING&&(yield new Promise(t=>{this.websocket.onopen=function(){t(!0)},this.websocket.onerror=function(){t(!1)}})),this.websocket.close(1e3)})}}var cl=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const ul=new g(pa);class hl extends nl{detectNetwork(){const t=Object.create(null,{detectNetwork:{get:()=>super.detectNetwork}});return cl(this,void 0,void 0,function*(){let e=this.network;return null==e&&(e=yield t.detectNetwork.call(this),e||ul.throwError("no network detected",g.errors.UNKNOWN_ERROR,{}),null==this._network&&(ut(this,"_network",e),this.emit("network",e,null))),e})}}class dl extends hl{constructor(t,e){ul.checkAbstract(new.target,dl),t=ht(new.target,"getNetwork")(t),e=ht(new.target,"getApiKey")(e);super(ht(new.target,"getUrl")(t,e),t),"string"==typeof e?ut(this,"apiKey",e):null!=e&&Object.keys(e).forEach(t=>{ut(this,t,e[t])})}_startPending(){ul.warn("WARNING: API provider does not support pending filters")}isCommunityResource(){return!1}getSigner(t){return ul.throwError("API provider does not support signing",g.errors.UNSUPPORTED_OPERATION,{operation:"getSigner"})}listAccounts(){return Promise.resolve([])}static getApiKey(t){return t}static getUrl(t,e){return ul.throwError("not implemented; sub-classes must override getUrl",g.errors.NOT_IMPLEMENTED,{operation:"getUrl"})}}const fl=new g(pa),pl="_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC";class ml extends ll{constructor(t,e){const r=new gl(t,e);super(r.connection.url.replace(/^http/i,"ws").replace(".alchemyapi.",".ws.alchemyapi."),r.network),ut(this,"apiKey",r.apiKey)}isCommunityResource(){return this.apiKey===pl}}class gl extends dl{static getWebSocketProvider(t,e){return new ml(t,e)}static getApiKey(t){return null==t?pl:(t&&"string"!=typeof t&&fl.throwArgumentError("invalid apiKey","apiKey",t),t)}static getUrl(t,e){let r=null;switch(t.name){case"homestead":r="eth-mainnet.alchemyapi.io/v2/";break;case"goerli":r="eth-goerli.g.alchemy.com/v2/";break;case"sepolia":r="eth-sepolia.g.alchemy.com/v2/";break;case"matic":r="polygon-mainnet.g.alchemy.com/v2/";break;case"maticmum":r="polygon-mumbai.g.alchemy.com/v2/";break;case"arbitrum":r="arb-mainnet.g.alchemy.com/v2/";break;case"arbitrum-goerli":r="arb-goerli.g.alchemy.com/v2/";break;case"arbitrum-sepolia":r="arb-sepolia.g.alchemy.com/v2/";break;case"optimism":r="opt-mainnet.g.alchemy.com/v2/";break;case"optimism-goerli":r="opt-goerli.g.alchemy.com/v2/";break;case"optimism-sepolia":r="opt-sepolia.g.alchemy.com/v2/";break;default:fl.throwArgumentError("unsupported network","network",arguments[0])}return{allowGzip:!0,url:"https://"+r+e,throttleCallback:(t,r)=>(e===pl&&ba(),Promise.resolve(!0))}}isCommunityResource(){return this.apiKey===pl}}const vl=new g(pa),wl="9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972";function yl(t){switch(t){case"homestead":return"rpc.ankr.com/eth/";case"ropsten":return"rpc.ankr.com/eth_ropsten/";case"rinkeby":return"rpc.ankr.com/eth_rinkeby/";case"goerli":return"rpc.ankr.com/eth_goerli/";case"sepolia":return"rpc.ankr.com/eth_sepolia/";case"matic":return"rpc.ankr.com/polygon/";case"maticmum":return"rpc.ankr.com/polygon_mumbai/";case"optimism":return"rpc.ankr.com/optimism/";case"optimism-goerli":return"rpc.ankr.com/optimism_testnet/";case"optimism-sepolia":return"rpc.ankr.com/optimism_sepolia/";case"arbitrum":return"rpc.ankr.com/arbitrum/"}return vl.throwArgumentError("unsupported network","name",t)}class bl extends dl{isCommunityResource(){return this.apiKey===wl}static getApiKey(t){return null==t?wl:t}static getUrl(t,e){null==e&&(e=wl);const r={allowGzip:!0,url:"https://"+yl(t.name)+e,throttleCallback:(t,r)=>(e.apiKey===wl&&ba(),Promise.resolve(!0))};return null!=e.projectSecret&&(r.user="",r.password=e.projectSecret),r}}var El=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const Al=new g(pa);class kl extends dl{static getApiKey(t){return null!=t&&Al.throwArgumentError("apiKey not supported for cloudflare","apiKey",t),null}static getUrl(t,e){let r=null;if("homestead"===t.name)r="https://cloudflare-eth.com/";else Al.throwArgumentError("unsupported network","network",arguments[0]);return r}perform(t,e){const r=Object.create(null,{perform:{get:()=>super.perform}});return El(this,void 0,void 0,function*(){if("getBlockNumber"===t){return(yield r.perform.call(this,"getBlock",{blockTag:"latest"})).number}return r.perform.call(this,t,e)})}}var Sl=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const Cl=new g(pa);function xl(t){const e={};for(let r in t){if(null==t[r])continue;let n=t[r];"type"===r&&0===n||(n={type:!0,gasLimit:!0,gasPrice:!0,maxFeePerGs:!0,maxPriorityFeePerGas:!0,nonce:!0,value:!0}[r]?B(P(n)):"accessList"===r?"["+ho(n).map(t=>`{address:"${t.address}",storageKeys:["${t.storageKeys.join('","')}"]}`).join(",")+"]":P(n),e[r]=n)}return e}function _l(t){if(0==t.status&&("No records found"===t.message||"No transactions found"===t.message))return t.result;if(1!=t.status||"string"!=typeof t.message||!t.message.match(/^OK/)){const e=new Error("invalid response");throw e.result=JSON.stringify(t),(t.result||"").toLowerCase().indexOf("rate limit")>=0&&(e.throttleRetry=!0),e}return t.result}function Tl(t){if(t&&0==t.status&&"NOTOK"==t.message&&(t.result||"").toLowerCase().indexOf("rate limit")>=0){const e=new Error("throttled response");throw e.result=JSON.stringify(t),e.throttleRetry=!0,e}if("2.0"!=t.jsonrpc){const e=new Error("invalid response");throw e.result=JSON.stringify(t),e}if(t.error){const e=new Error(t.error.message||"unknown error");throw t.error.code&&(e.code=t.error.code),t.error.data&&(e.data=t.error.data),e}return t.result}function Pl(t){if("pending"===t)throw new Error("pending not supported");return"latest"===t?t:parseInt(t.substring(2),16)}function Il(t,e,r){if("call"===t&&e.code===g.errors.SERVER_ERROR){const t=e.error;if(t&&(t.message.match(/reverted/i)||t.message.match(/VM execution error/i))){let r=t.data;if(r&&(r="0x"+r.replace(/^.*0x/i,"")),_(r))return r;Cl.throwError("missing revert data in call exception",g.errors.CALL_EXCEPTION,{error:e,data:"0x"})}}let n=e.message;throw e.code===g.errors.SERVER_ERROR&&(e.error&&"string"==typeof e.error.message?n=e.error.message:"string"==typeof e.body?n=e.body:"string"==typeof e.responseText&&(n=e.responseText)),n=(n||"").toLowerCase(),n.match(/insufficient funds/)&&Cl.throwError("insufficient funds for intrinsic transaction cost",g.errors.INSUFFICIENT_FUNDS,{error:e,method:t,transaction:r}),n.match(/same hash was already imported|transaction nonce is too low|nonce too low/)&&Cl.throwError("nonce has already been used",g.errors.NONCE_EXPIRED,{error:e,method:t,transaction:r}),n.match(/another transaction with same nonce/)&&Cl.throwError("replacement fee too low",g.errors.REPLACEMENT_UNDERPRICED,{error:e,method:t,transaction:r}),n.match(/execution failed due to an exception|execution reverted/)&&Cl.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",g.errors.UNPREDICTABLE_GAS_LIMIT,{error:e,method:t,transaction:r}),e}class Nl extends ja{constructor(t,e){super(t),ut(this,"baseUrl",this.getBaseUrl()),ut(this,"apiKey",e||null)}getBaseUrl(){switch(this.network?this.network.name:"invalid"){case"homestead":return"https://api.etherscan.io";case"goerli":return"https://api-goerli.etherscan.io";case"sepolia":return"https://api-sepolia.etherscan.io";case"matic":return"https://api.polygonscan.com";case"maticmum":return"https://api-testnet.polygonscan.com";case"arbitrum":return"https://api.arbiscan.io";case"arbitrum-goerli":return"https://api-goerli.arbiscan.io";case"optimism":return"https://api-optimistic.etherscan.io";case"optimism-goerli":return"https://api-goerli-optimistic.etherscan.io"}return Cl.throwArgumentError("unsupported network","network",this.network.name)}getUrl(t,e){const r=Object.keys(e).reduce((t,r)=>{const n=e[r];return null!=n&&(t+=`&${r}=${n}`),t},""),n=this.apiKey?`&apikey=${this.apiKey}`:"";return`${this.baseUrl}/api?module=${t}${r}${n}`}getPostUrl(){return`${this.baseUrl}/api`}getPostData(t,e){return e.module=t,e.apikey=this.apiKey,e}fetch(t,e,r){return Sl(this,void 0,void 0,function*(){const n=r?this.getPostUrl():this.getUrl(t,e),i=r?this.getPostData(t,e):null,o="proxy"===t?Tl:_l;this.emit("debug",{action:"request",request:n,provider:this});const s={url:n,throttleSlotInterval:1e3,throttleCallback:(t,e)=>(this.isCommunityResource()&&ba(),Promise.resolve(!0))};let a=null;i&&(s.headers={"content-type":"application/x-www-form-urlencoded; charset=UTF-8"},a=Object.keys(i).map(t=>`${t}=${i[t]}`).join("&"));const l=yield la(s,a,o||Tl);return this.emit("debug",{action:"response",request:n,response:wt(l),provider:this}),l})}detectNetwork(){return Sl(this,void 0,void 0,function*(){return this.network})}perform(t,e){const r=Object.create(null,{perform:{get:()=>super.perform}});return Sl(this,void 0,void 0,function*(){switch(t){case"getBlockNumber":return this.fetch("proxy",{action:"eth_blockNumber"});case"getGasPrice":return this.fetch("proxy",{action:"eth_gasPrice"});case"getBalance":return this.fetch("account",{action:"balance",address:e.address,tag:e.blockTag});case"getTransactionCount":return this.fetch("proxy",{action:"eth_getTransactionCount",address:e.address,tag:e.blockTag});case"getCode":return this.fetch("proxy",{action:"eth_getCode",address:e.address,tag:e.blockTag});case"getStorageAt":return this.fetch("proxy",{action:"eth_getStorageAt",address:e.address,position:e.position,tag:e.blockTag});case"sendTransaction":return this.fetch("proxy",{action:"eth_sendRawTransaction",hex:e.signedTransaction},!0).catch(t=>Il("sendTransaction",t,e.signedTransaction));case"getBlock":if(e.blockTag)return this.fetch("proxy",{action:"eth_getBlockByNumber",tag:e.blockTag,boolean:e.includeTransactions?"true":"false"});throw new Error("getBlock by blockHash not implemented");case"getTransaction":return this.fetch("proxy",{action:"eth_getTransactionByHash",txhash:e.transactionHash});case"getTransactionReceipt":return this.fetch("proxy",{action:"eth_getTransactionReceipt",txhash:e.transactionHash});case"call":{if("latest"!==e.blockTag)throw new Error("EtherscanProvider does not support blockTag for call");const t=xl(e.transaction);t.module="proxy",t.action="eth_call";try{return yield this.fetch("proxy",t,!0)}catch(t){return Il("call",t,e.transaction)}}case"estimateGas":{const t=xl(e.transaction);t.module="proxy",t.action="eth_estimateGas";try{return yield this.fetch("proxy",t,!0)}catch(t){return Il("estimateGas",t,e.transaction)}}case"getLogs":{const t={action:"getLogs"};if(e.filter.fromBlock&&(t.fromBlock=Pl(e.filter.fromBlock)),e.filter.toBlock&&(t.toBlock=Pl(e.filter.toBlock)),e.filter.address&&(t.address=e.filter.address),e.filter.topics&&e.filter.topics.length>0&&(e.filter.topics.length>1&&Cl.throwError("unsupported topic count",g.errors.UNSUPPORTED_OPERATION,{topics:e.filter.topics}),1===e.filter.topics.length)){const r=e.filter.topics[0];"string"==typeof r&&66===r.length||Cl.throwError("unsupported topic format",g.errors.UNSUPPORTED_OPERATION,{topic0:r}),t.topic0=r}const r=yield this.fetch("logs",t);let n={};for(let t=0;t<r.length;t++){const e=r[t];if(null==e.blockHash){if(null==n[e.blockNumber]){const t=yield this.getBlock(e.blockNumber);t&&(n[e.blockNumber]=t.hash)}e.blockHash=n[e.blockNumber]}}return r}case"getEtherPrice":return"homestead"!==this.network.name?0:parseFloat((yield this.fetch("stats",{action:"ethprice"})).ethusd)}return r.perform.call(this,t,e)})}getHistory(t,e,r){return Sl(this,void 0,void 0,function*(){const n={action:"txlist",address:yield this.resolveName(t),startblock:null==e?0:e,endblock:null==r?99999999:r,sort:"asc"};return(yield this.fetch("account",n)).map(t=>{["contractAddress","to"].forEach(function(e){""==t[e]&&delete t[e]}),null==t.creates&&null!=t.contractAddress&&(t.creates=t.contractAddress);const e=this.formatter.transactionResponse(t);return t.timeStamp&&(e.timestamp=parseInt(t.timeStamp)),e})})}isCommunityResource(){return null==this.apiKey}}var Ml=function(t,e,r,n){return new(r||(r=Promise))(function(i,o){function s(t){try{l(n.next(t))}catch(t){o(t)}}function a(t){try{l(n.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(s,a)}l((n=n.apply(t,e||[])).next())})};const Bl=new g(pa);function Rl(){return(new Date).getTime()}function Fl(t){let e=null;for(let r=0;r<t.length;r++){const n=t[r];if(null==n)return null;e?e.name===n.name&&e.chainId===n.chainId&&(e.ensAddress===n.ensAddress||null==e.ensAddress&&null==n.ensAddress)||Bl.throwArgumentError("provider mismatch","networks",t):e=n}return e}function Ol(t,e){t=t.slice().sort();const r=Math.floor(t.length/2);if(t.length%2)return t[r];const n=t[r-1],i=t[r];return null!=e&&Math.abs(n-i)>e?null:(n+i)/2}function Dl(t){if(null===t)return"null";if("number"==typeof t||"boolean"==typeof t)return JSON.stringify(t);if("string"==typeof t)return t;if(j.isBigNumber(t))return t.toString();if(Array.isArray(t))return JSON.stringify(t.map(t=>Dl(t)));if("object"==typeof t){const e=Object.keys(t);return e.sort(),"{"+e.map(e=>{let r=t[e];return r="function"==typeof r?"[function]":Dl(r),JSON.stringify(e)+":"+r}).join(",")+"}"}throw new Error("unknown value type: "+typeof t)}let Ul=1;function Ll(t){let e=null,r=null,n=new Promise(n=>{e=function(){r&&(clearTimeout(r),r=null),n()},r=setTimeout(e,t)});return{cancel:e,getPromise:function(){return n},wait:t=>(n=n.then(t),n)}}const ql=[g.errors.CALL_EXCEPTION,g.errors.INSUFFICIENT_FUNDS,g.errors.NONCE_EXPIRED,g.errors.REPLACEMENT_UNDERPRICED,g.errors.UNPREDICTABLE_GAS_LIMIT],zl=["address","args","errorArgs","errorSignature","method","transaction"];function Gl(t,e){const r={weight:t.weight};return Object.defineProperty(r,"provider",{get:()=>t.provider}),t.start&&(r.start=t.start),e&&(r.duration=e-t.start),t.done&&(t.error?r.error=t.error:r.result=t.result||null),r}function Hl(t,e,r){let n=Dl;switch(e){case"getBlockNumber":return function(e){const r=e.map(t=>t.result);let n=Ol(e.map(t=>t.result),2);if(null!=n)return n=Math.ceil(n),r.indexOf(n+1)>=0&&n++,n>=t._highestBlockNumber&&(t._highestBlockNumber=n),t._highestBlockNumber};case"getGasPrice":return function(t){const e=t.map(t=>t.result);return e.sort(),e[Math.floor(e.length/2)]};case"getEtherPrice":return function(t){return Ol(t.map(t=>t.result))};case"getBalance":case"getTransactionCount":case"getCode":case"getStorageAt":case"call":case"estimateGas":case"getLogs":break;case"getTransaction":case"getTransactionReceipt":n=function(t){return null==t?null:((t=pt(t)).confirmations=-1,Dl(t))};break;case"getBlock":n=r.includeTransactions?function(t){return null==t?null:((t=pt(t)).transactions=t.transactions.map(t=>((t=pt(t)).confirmations=-1,t)),Dl(t))}:function(t){return null==t?null:Dl(t)};break;default:throw new Error("unknown method: "+e)}return function(t,e){return function(r){const n={};r.forEach(e=>{const r=t(e.result);n[r]||(n[r]={count:0,result:e.result}),n[r].count++});const i=Object.keys(n);for(let t=0;t<i.length;t++){const r=n[i[t]];if(r.count>=e)return r.result}}}(n,t.quorum)}function jl(t,e){return Ml(this,void 0,void 0,function*(){const r=t.provider;return null!=r.blockNumber&&r.blockNumber>=e||-1===e?r:ca(()=>new Promise((n,i)=>{setTimeout(function(){return r.blockNumber>=e?n(r):t.cancelled?n(null):n(void 0)},0)}),{oncePoll:r})})}function Kl(t,e,r,n){return Ml(this,void 0,void 0,function*(){let i=t.provider;switch(r){case"getBlockNumber":case"getGasPrice":return i[r]();case"getEtherPrice":if(i.getEtherPrice)return i.getEtherPrice();break;case"getBalance":case"getTransactionCount":case"getCode":return n.blockTag&&_(n.blockTag)&&(i=yield jl(t,e)),i[r](n.address,n.blockTag||"latest");case"getStorageAt":return n.blockTag&&_(n.blockTag)&&(i=yield jl(t,e)),i.getStorageAt(n.address,n.position,n.blockTag||"latest");case"getBlock":return n.blockTag&&_(n.blockTag)&&(i=yield jl(t,e)),i[n.includeTransactions?"getBlockWithTransactions":"getBlock"](n.blockTag||n.blockHash);case"call":case"estimateGas":return n.blockTag&&_(n.blockTag)&&(i=yield jl(t,e)),"call"===r&&n.blockTag?i[r](n.transaction,n.blockTag):i[r](n.transaction);case"getTransaction":case"getTransactionReceipt":return i[r](n.transactionHash);case"getLogs":{let r=n.filter;return(r.fromBlock&&_(r.fromBlock)||r.toBlock&&_(r.toBlock))&&(i=yield jl(t,e)),i.getLogs(r)}}return Bl.throwError("unknown method error",g.errors.UNKNOWN_ERROR,{method:r,params:n})})}class Wl extends ja{constructor(t,e){0===t.length&&Bl.throwArgumentError("missing providers","providers",t);const r=t.map((t,e)=>{if(bn.isProvider(t)){const e=wa(t)?2e3:750,r=1;return Object.freeze({provider:t,weight:1,stallTimeout:e,priority:r})}const r=pt(t);null==r.priority&&(r.priority=1),null==r.stallTimeout&&(r.stallTimeout=wa(t)?2e3:750),null==r.weight&&(r.weight=1);const n=r.weight;return(n%1||n>512||n<1)&&Bl.throwArgumentError("invalid weight; must be integer in [1, 512]",`providers[${e}].weight`,n),Object.freeze(r)}),n=r.reduce((t,e)=>t+e.weight,0);null==e?e=n/2:e>n&&Bl.throwArgumentError("quorum will always fail; larger than total weight","quorum",e);let i=Fl(r.map(t=>t.provider.network));null==i&&(i=new Promise((t,e)=>{setTimeout(()=>{this.detectNetwork().then(t,e)},0)})),super(i),ut(this,"providerConfigs",Object.freeze(r)),ut(this,"quorum",e),this._highestBlockNumber=-1}detectNetwork(){return Ml(this,void 0,void 0,function*(){return Fl(yield Promise.all(this.providerConfigs.map(t=>t.provider.getNetwork())))})}perform(t,e){return Ml(this,void 0,void 0,function*(){if("sendTransaction"===t){const t=yield Promise.all(this.providerConfigs.map(t=>t.provider.sendTransaction(e.signedTransaction).then(t=>t.hash,t=>t)));for(let e=0;e<t.length;e++){const r=t[e];if("string"==typeof r)return r}throw t[0]}-1===this._highestBlockNumber&&"getBlockNumber"!==t&&(yield this.getBlockNumber());const r=Hl(this,t,e),n=ps(this.providerConfigs.map(pt));n.sort((t,e)=>t.priority-e.priority);const i=this._highestBlockNumber;let o=0,s=!0;for(;;){const a=Rl();let l=n.filter(t=>t.runner&&a-t.start<t.stallTimeout).reduce((t,e)=>t+e.weight,0);for(;l<this.quorum&&o<n.length;){const r=n[o++],s=Ul++;r.start=Rl(),r.staller=Ll(r.stallTimeout),r.staller.wait(()=>{r.staller=null}),r.runner=Kl(r,i,t,e).then(n=>{r.done=!0,r.result=n,this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:s,backend:Gl(r,Rl()),request:{method:t,params:wt(e)},provider:this})},n=>{r.done=!0,r.error=n,this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:s,backend:Gl(r,Rl()),request:{method:t,params:wt(e)},provider:this})}),this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:s,backend:Gl(r,null),request:{method:t,params:wt(e)},provider:this}),l+=r.weight}const c=[];n.forEach(t=>{!t.done&&t.runner&&(c.push(t.runner),t.staller&&c.push(t.staller.getPromise()))}),c.length&&(yield Promise.race(c));const u=n.filter(t=>t.done&&null==t.error);if(u.length>=this.quorum){const t=r(u);if(void 0!==t)return n.forEach(t=>{t.staller&&t.staller.cancel(),t.cancelled=!0}),t;s||(yield Ll(100).getPromise()),s=!1}const h=n.reduce((t,e)=>{if(!e.done||null==e.error)return t;const r=e.error.code;return ql.indexOf(r)>=0&&(t[r]||(t[r]={error:e.error,weight:0}),t[r].weight+=e.weight),t},{});if(Object.keys(h).forEach(t=>{const e=h[t];if(e.weight<this.quorum)return;n.forEach(t=>{t.staller&&t.staller.cancel(),t.cancelled=!0});const r=e.error,i={};zl.forEach(t=>{null!=r[t]&&(i[t]=r[t])}),Bl.throwError(r.reason||r.message,t,i)}),0===n.filter(t=>!t.done).length)break}return n.forEach(t=>{t.staller&&t.staller.cancel(),t.cancelled=!0}),Bl.throwError("failed to meet quorum",g.errors.SERVER_ERROR,{method:t,params:e,results:n.map(t=>Gl(t)),provider:this})})}}const Vl=new g(pa),$l="84842078b09946638c03157f83405213";class Jl extends ll{constructor(t,e){const r=new Ql(t,e),n=r.connection;n.password&&Vl.throwError("INFURA WebSocket project secrets unsupported",g.errors.UNSUPPORTED_OPERATION,{operation:"InfuraProvider.getWebSocketProvider()"});super(n.url.replace(/^http/i,"ws").replace("/v3/","/ws/v3/"),t),ut(this,"apiKey",r.projectId),ut(this,"projectId",r.projectId),ut(this,"projectSecret",r.projectSecret)}isCommunityResource(){return this.projectId===$l}}class Ql extends dl{static getWebSocketProvider(t,e){return new Jl(t,e)}static getApiKey(t){const e={apiKey:$l,projectId:$l,projectSecret:null};return null==t||("string"==typeof t?e.projectId=t:null!=t.projectSecret?(Vl.assertArgument("string"==typeof t.projectId,"projectSecret requires a projectId","projectId",t.projectId),Vl.assertArgument("string"==typeof t.projectSecret,"invalid projectSecret","projectSecret","[REDACTED]"),e.projectId=t.projectId,e.projectSecret=t.projectSecret):t.projectId&&(e.projectId=t.projectId),e.apiKey=e.projectId),e}static getUrl(t,e){let r=null;switch(t?t.name:"unknown"){case"homestead":r="mainnet.infura.io";break;case"goerli":r="goerli.infura.io";break;case"sepolia":r="sepolia.infura.io";break;case"matic":r="polygon-mainnet.infura.io";break;case"maticmum":r="polygon-mumbai.infura.io";break;case"optimism":r="optimism-mainnet.infura.io";break;case"optimism-goerli":r="optimism-goerli.infura.io";break;case"optimism-sepolia":r="optimism-sepolia.infura.io";break;case"arbitrum":r="arbitrum-mainnet.infura.io";break;case"arbitrum-goerli":r="arbitrum-goerli.infura.io";break;case"arbitrum-sepolia":r="arbitrum-sepolia.infura.io";break;default:Vl.throwError("unsupported network",g.errors.INVALID_ARGUMENT,{argument:"network",value:t})}const n={allowGzip:!0,url:"https://"+r+"/v3/"+e.projectId,throttleCallback:(t,r)=>(e.projectId===$l&&ba(),Promise.resolve(!0))};return null!=e.projectSecret&&(n.user="",n.password=e.projectSecret),n}isCommunityResource(){return this.projectId===$l}}const Yl=new g(pa);class Xl extends dl{static getApiKey(t){return t&&"string"!=typeof t&&Yl.throwArgumentError("invalid apiKey","apiKey",t),t||"ETHERS_JS_SHARED"}static getUrl(t,e){Yl.warn("NodeSmith will be discontinued on 2019-12-20; please migrate to another platform.");let r=null;switch(t.name){case"homestead":r="https://ethereum.api.nodesmith.io/v1/mainnet/jsonrpc";break;case"ropsten":r="https://ethereum.api.nodesmith.io/v1/ropsten/jsonrpc";break;case"rinkeby":r="https://ethereum.api.nodesmith.io/v1/rinkeby/jsonrpc";break;case"goerli":r="https://ethereum.api.nodesmith.io/v1/goerli/jsonrpc";break;case"kovan":r="https://ethereum.api.nodesmith.io/v1/kovan/jsonrpc";break;default:Yl.throwArgumentError("unsupported network","network",arguments[0])}return r+"?apiKey="+e}}const Zl=new g(pa),tc="62e1ad51b37b8e00394bda3b";class ec extends dl{static getApiKey(t){const e={applicationId:null,loadBalancer:!0,applicationSecretKey:null};return null==t?e.applicationId=tc:"string"==typeof t?e.applicationId=t:null!=t.applicationSecretKey?(e.applicationId=t.applicationId,e.applicationSecretKey=t.applicationSecretKey):t.applicationId?e.applicationId=t.applicationId:Zl.throwArgumentError("unsupported PocketProvider apiKey","apiKey",t),e}static getUrl(t,e){let r=null;switch(t?t.name:"unknown"){case"goerli":r="eth-goerli.gateway.pokt.network";break;case"homestead":r="eth-mainnet.gateway.pokt.network";break;case"kovan":r="poa-kovan.gateway.pokt.network";break;case"matic":r="poly-mainnet.gateway.pokt.network";break;case"maticmum":r="polygon-mumbai-rpc.gateway.pokt.network";break;case"rinkeby":r="eth-rinkeby.gateway.pokt.network";break;case"ropsten":r="eth-ropsten.gateway.pokt.network";break;default:Zl.throwError("unsupported network",g.errors.INVALID_ARGUMENT,{argument:"network",value:t})}const n={headers:{},url:`https://${r}/v1/lb/${e.applicationId}`};return null!=e.applicationSecretKey&&(n.user="",n.password=e.applicationSecretKey),n}isCommunityResource(){return this.applicationId===tc}}const rc=new g(pa);class nc extends dl{static getApiKey(t){return t&&"string"!=typeof t&&rc.throwArgumentError("invalid apiKey","apiKey",t),t||"919b412a057b5e9c9b6dce193c5a60242d6efadb"}static getUrl(t,e){let r=null;switch(t.name){case"homestead":r="ethers.quiknode.pro";break;case"goerli":r="ethers.ethereum-goerli.quiknode.pro";break;case"sepolia":r="ethers.ethereum-sepolia.quiknode.pro";break;case"holesky":r="ethers.ethereum-holesky.quiknode.pro";break;case"arbitrum":r="ethers.arbitrum-mainnet.quiknode.pro";break;case"arbitrum-goerli":r="ethers.arbitrum-goerli.quiknode.pro";break;case"arbitrum-sepolia":r="ethers.arbitrum-sepolia.quiknode.pro";break;case"base":r="ethers.base-mainnet.quiknode.pro";break;case"base-goerli":r="ethers.base-goerli.quiknode.pro";break;case"base-spolia":r="ethers.base-sepolia.quiknode.pro";break;case"bnb":r="ethers.bsc.quiknode.pro";break;case"bnbt":r="ethers.bsc-testnet.quiknode.pro";break;case"matic":r="ethers.matic.quiknode.pro";break;case"maticmum":r="ethers.matic-testnet.quiknode.pro";break;case"optimism":r="ethers.optimism.quiknode.pro";break;case"optimism-goerli":r="ethers.optimism-goerli.quiknode.pro";break;case"optimism-sepolia":r="ethers.optimism-sepolia.quiknode.pro";break;case"xdai":r="ethers.xdai.quiknode.pro";break;default:rc.throwArgumentError("unsupported network","network",arguments[0])}return"https://"+r+"/"+e}}const ic=new g(pa);let oc=1;function sc(t,e){const r="Web3LegacyFetcher";return function(t,n){const i={method:t,params:n,id:oc++,jsonrpc:"2.0"};return new Promise((t,n)=>{this.emit("debug",{action:"request",fetcher:r,request:wt(i),provider:this}),e(i,(e,o)=>{if(e)return this.emit("debug",{action:"response",fetcher:r,error:e,request:i,provider:this}),n(e);if(this.emit("debug",{action:"response",fetcher:r,request:i,response:o,provider:this}),o.error){const t=new Error(o.error.message);return t.code=o.error.code,t.data=o.error.data,n(t)}t(o.result)})})}}class ac extends nl{constructor(t,e){null==t&&ic.throwArgumentError("missing provider","provider",t);let r=null,n=null,i=null;"function"==typeof t?(r="unknown:",n=t):(r=t.host||t.path||"",!r&&t.isMetaMask&&(r="metamask"),i=t,t.request?(""===r&&(r="eip-1193:"),n=function(t){return function(e,r){null==r&&(r=[]);const n={method:e,params:r};return this.emit("debug",{action:"request",fetcher:"Eip1193Fetcher",request:wt(n),provider:this}),t.request(n).then(t=>(this.emit("debug",{action:"response",fetcher:"Eip1193Fetcher",request:n,response:t,provider:this}),t),t=>{throw this.emit("debug",{action:"response",fetcher:"Eip1193Fetcher",request:n,error:t,provider:this}),t})}}(t)):t.sendAsync?n=sc(0,t.sendAsync.bind(t)):t.send?n=sc(0,t.send.bind(t)):ic.throwArgumentError("unsupported provider","provider",t),r||(r="unknown:")),super(r,e),ut(this,"jsonRpcFetchFunc",n),ut(this,"provider",i)}send(t,e){return this.jsonRpcFetchFunc(t,e)}}const lc=new g(pa);function cc(t,e){if(null==t&&(t="homestead"),"string"==typeof t){const e=t.match(/^(ws|http)s?:/i);if(e)switch(e[1].toLowerCase()){case"http":case"https":return new nl(t);case"ws":case"wss":return new ll(t);default:lc.throwArgumentError("unsupported URL scheme","network",t)}}const r=ta(t);return r&&r._defaultProvider||lc.throwError("unsupported getDefaultProvider network",g.errors.NETWORK_ERROR,{operation:"getDefaultProvider",network:t}),r._defaultProvider({FallbackProvider:Wl,AlchemyProvider:gl,AnkrProvider:bl,CloudflareProvider:kl,EtherscanProvider:Nl,InfuraProvider:Ql,JsonRpcProvider:nl,NodesmithProvider:Xl,PocketProvider:ec,QuickNodeProvider:nc,Web3Provider:ac,IpcProvider:null},e)}var uc=Object.freeze({__proto__:null,AlchemyProvider:gl,AlchemyWebSocketProvider:ml,AnkrProvider:bl,BaseProvider:ja,CloudflareProvider:kl,EtherscanProvider:Nl,FallbackProvider:Wl,Formatter:ga,InfuraProvider:Ql,InfuraWebSocketProvider:Jl,IpcProvider:null,JsonRpcBatchProvider:class extends nl{send(t,e){const r={method:t,params:e,id:this._nextId++,jsonrpc:"2.0"};null==this._pendingBatch&&(this._pendingBatch=[]);const n={request:r,resolve:null,reject:null},i=new Promise((t,e)=>{n.resolve=t,n.reject=e});return this._pendingBatch.push(n),this._pendingBatchAggregator||(this._pendingBatchAggregator=setTimeout(()=>{const t=this._pendingBatch;this._pendingBatch=null,this._pendingBatchAggregator=null;const e=t.map(t=>t.request);return this.emit("debug",{action:"requestBatch",request:wt(e),provider:this}),la(this.connection,JSON.stringify(e)).then(r=>{this.emit("debug",{action:"response",request:e,response:r,provider:this}),t.forEach((t,e)=>{const n=r[e];if(n.error){const e=new Error(n.error.message);e.code=n.error.code,e.data=n.error.data,t.reject(e)}else t.resolve(n.result)})},r=>{this.emit("debug",{action:"response",error:r,request:e,provider:this}),t.forEach(t=>{t.reject(r)})})},10)),i}},JsonRpcProvider:nl,JsonRpcSigner:tl,NodesmithProvider:Xl,PocketProvider:ec,Provider:bn,QuickNodeProvider:nc,Resolver:za,StaticJsonRpcProvider:hl,UrlJsonRpcProvider:dl,Web3Provider:ac,WebSocketProvider:ll,getDefaultProvider:cc,getNetwork:ta,isCommunityResourcable:va,isCommunityResource:wa,showThrottleMessage:ba});const hc=new RegExp("^bytes([0-9]+)$"),dc=new RegExp("^(u?int)([0-9]*)$"),fc=new RegExp("^(.*)\\[([0-9]*)\\]$"),pc=new g("solidity/5.8.0");function mc(t,e,r){switch(t){case"address":return r?x(e,32):k(e);case"string":return Ve(e);case"bytes":return k(e);case"bool":return e=e?"0x01":"0x00",r?x(e,32):k(e)}let n=t.match(dc);if(n){let i=parseInt(n[2]||"256");return(n[2]&&String(i)!==n[2]||i%8!=0||0===i||i>256)&&pc.throwArgumentError("invalid number type","type",t),r&&(i=256),x(e=j.from(e).toTwos(i),i/8)}if(n=t.match(hc),n){const i=parseInt(n[1]);return(String(i)!==n[1]||0===i||i>32)&&pc.throwArgumentError("invalid bytes type","type",t),k(e).byteLength!==i&&pc.throwArgumentError(`invalid value for ${t}`,"value",e),r?k((e+"0000000000000000000000000000000000000000000000000000000000000000").substring(0,66)):e}if(n=t.match(fc),n&&Array.isArray(e)){const r=n[1];parseInt(n[2]||String(e.length))!=e.length&&pc.throwArgumentError(`invalid array length for ${t}`,"value",e);const i=[];return e.forEach(function(t){i.push(mc(r,t,!0))}),S(i)}return pc.throwArgumentError("invalid type","type",t)}function gc(t,e){t.length!=e.length&&pc.throwArgumentError("wrong number of values; expected ${ types.length }","values",e);const r=[];return t.forEach(function(t,n){r.push(mc(t,e[n]))}),P(S(r))}const vc=new g("units/5.8.0"),wc=["wei","kwei","mwei","gwei","szabo","finney","ether"];function yc(t,e){if("string"==typeof e){const t=wc.indexOf(e);-1!==t&&(e=3*t)}return rt(t,null!=e?e:18)}function bc(t,e){if("string"!=typeof t&&vc.throwArgumentError("value must be a string","value",t),"string"==typeof e){const t=wc.indexOf(e);-1!==t&&(e=3*t)}return nt(t,null!=e?e:18)}function Ec(t){return yc(t,18)}function Ac(t){return bc(t,18)}var kc=Object.freeze({__proto__:null,AbiCoder:fr,ConstructorFragment:Ot,ErrorFragment:Lt,EventFragment:Mt,FormatTypes:_t,Fragment:Nt,FunctionFragment:Dt,HDNode:ss,Indexed:fn,Interface:gn,LogDescription:un,Logger:g,ParamType:Pt,RLP:ce,SigningKey:Xi,get SupportedAlgorithm(){return Do},TransactionDescription:hn,get TransactionTypes(){return ro},get UnicodeNormalizationForm(){return Ge},Utf8ErrorFuncs:Ke,get Utf8ErrorReason(){return He},_TypedDataEncoder:ln,_fetchData:aa,_toEscapedUtf8String:function(t,e){return'"'+We(t,e).map(t=>{if(t<256){switch(t){case 8:return"\\b";case 9:return"\\t";case 10:return"\\n";case 13:return"\\r";case 34:return'\\"';case 92:return"\\\\"}if(t>=32&&t<127)return String.fromCharCode(t)}return t<=65535?$e(t):$e(55296+((t-=65536)>>10&1023))+$e(56320+(1023&t))}).join("")+'"'},accessListify:ho,arrayify:k,base58:Oo,base64:yr,checkProperties:ft,checkResultErrors:Kt,commify:function(t){const e=String(t).split(".");(e.length>2||!e[0].match(/^-?[0-9]*$/)||e[1]&&!e[1].match(/^[0-9]*$/)||"."===t||"-."===t)&&vc.throwArgumentError("invalid value","value",t);let r=e[0],n="";for("-"===r.substring(0,1)&&(n="-",r=r.substring(1));"0"===r.substring(0,1);)r=r.substring(1);""===r&&(r="0");let i="";for(2===e.length&&(i="."+(e[1]||"0"));i.length>2&&"0"===i[i.length-1];)i=i.substring(0,i.length-1);const o=[];for(;r.length;){if(r.length<=3){o.unshift(r);break}{const t=r.length-3;o.unshift(r.substring(t)),r=r.substring(0,t)}}return n+o.join(",")+i},computeAddress:ao,computeHmac:zo,computePublicKey:to,concat:S,deepCopy:wt,defaultAbiCoder:pr,defaultPath:os,defineReadOnly:ut,dnsEncode:jr,entropyToMnemonic:cs,fetchJson:la,formatBytes32String:function(t){const e=Ve(t);if(e.length>31)throw new Error("bytes32 string must be less than 32 bytes");return P(S([e,Ue]).slice(0,32))},formatEther:Ec,formatUnits:yc,getAccountPath:function(t){return("number"!=typeof t||t<0||t>=Xo||t%1)&&Jo.throwArgumentError("invalid account index","index",t),`m/44'/60'/${t}'/0/0`},getAddress:ge,getContractAddress:ve,getCreate2Address:function(t,e,r){return 32!==I(e)&&ue.throwArgumentError("salt must be 32 bytes","salt",e),32!==I(r)&&ue.throwArgumentError("initCodeHash must be 32 bytes","initCodeHash",r),ge(N(te(S(["0xff",ge(t),e,r])),12))},getIcapAddress:function(t){let e=(r=ge(t).substring(2),new L(r,16).toString(36)).toUpperCase();for(var r;e.length<30;)e="0"+e;return"XE"+me("XE00"+e)+e},getJsonWalletAddress:function(t){if(Ts(t))try{return ge(JSON.parse(t).ethaddr)}catch(t){return null}if(Ps(t))try{return ge(JSON.parse(t).address)}catch(t){return null}return null},getStatic:ht,hashMessage:Kr,hexConcat:M,hexDataLength:I,hexDataSlice:N,hexStripZeros:R,hexValue:B,hexZeroPad:F,hexlify:P,id:mr,isAddress:function(t){try{return ge(t),!0}catch(t){}return!1},isBytes:A,isBytesLike:b,isHexString:_,isValidMnemonic:function(t,e){try{return ls(t,e),!0}catch(t){}return!1},isValidName:function(t){try{return 0!==Gr(t).length}catch(t){}return!1},joinSignature:D,keccak256:te,mnemonicToEntropy:ls,mnemonicToSeed:as,namehash:Hr,nameprep:function(t){if(t.match(/^[a-z0-9-]*$/i)&&t.length<=59)return t.toLowerCase();let e=Ye(t);var r;r=e.map(t=>{if(rr.indexOf(t)>=0)return[];if(t>=65024&&t<=65039)return[];let e=function(t){let e=tr(t,nr);if(e)return[t+e.s];let r=ir[t];if(r)return r;let n=or[t];return n?[t+n[0]]:sr[t]||null}(t);return e||[t]}),e=r.reduce((t,e)=>(e.forEach(e=>{t.push(e)}),t),[]),e=Ye(Je(e),Ge.NFKC),e.forEach(t=>{if(tr(t,ar))throw new Error("STRINGPREP_CONTAINS_PROHIBITED")}),e.forEach(t=>{if(tr(t,er))throw new Error("STRINGPREP_CONTAINS_UNASSIGNED")});let n=Je(e);if("-"===n.substring(0,1)||"--"===n.substring(2,4)||"-"===n.substring(n.length-1))throw new Error("invalid hyphen");return n},parseBytes32String:function(t){const e=k(t);if(32!==e.length)throw new Error("invalid bytes32 - not 32 bytes long");if(0!==e[31])throw new Error("invalid bytes32 string - no null terminator");let r=31;for(;0===e[r-1];)r--;return Qe(e.slice(0,r))},parseEther:Ac,parseTransaction:wo,parseUnits:bc,poll:ca,randomBytes:fs,recoverAddress:lo,recoverPublicKey:Zi,resolveProperties:dt,ripemd160:Lo,serializeTransaction:go,sha256:qo,sha512:function(t){return"0x"+di.sha512().update(k(t)).digest("hex")},shallowCopy:pt,shuffled:ps,solidityKeccak256:function(t,e){return te(gc(t,e))},solidityPack:gc,soliditySha256:function(t,e){return qo(gc(t,e))},splitSignature:O,stripZeros:C,toUtf8Bytes:Ve,toUtf8CodePoints:Ye,toUtf8String:Qe,verifyMessage:function(t,e){return lo(Kr(t),e)},verifyTypedData:function(t,e,r,n){return lo(ln.hash(t,e,r),n)},zeroPad:x});const Sc="ethers/5.8.0",Cc=new g(Sc);var xc=Object.freeze({__proto__:null,BaseContract:Bo,BigNumber:j,Contract:Ro,ContractFactory:class{constructor(t,e,r){let n=null;n="string"==typeof e?e:A(e)?P(e):e&&"string"==typeof e.object?e.object:"!","0x"!==n.substring(0,2)&&(n="0x"+n),(!_(n)||n.length%2)&&bo.throwArgumentError("invalid bytecode","bytecode",e),r&&!Cn.isSigner(r)&&bo.throwArgumentError("invalid signer","signer",r),ut(this,"bytecode",n),ut(this,"interface",ht(new.target,"getInterface")(t)),ut(this,"signer",r||null)}getDeployTransaction(...t){let e={};if(t.length===this.interface.deploy.inputs.length+1&&"object"==typeof t[t.length-1]){e=pt(t.pop());for(const t in e)if(!Eo[t])throw new Error("unknown transaction override "+t)}if(["data","from","to"].forEach(t=>{null!=e[t]&&bo.throwError("cannot override "+t,g.errors.UNSUPPORTED_OPERATION,{operation:t})}),e.value){j.from(e.value).isZero()||this.interface.deploy.payable||bo.throwError("non-payable constructor cannot override value",g.errors.UNSUPPORTED_OPERATION,{operation:"overrides.value",value:e.value})}return bo.checkArgumentCount(t.length,this.interface.deploy.inputs.length," in Contract constructor"),e.data=P(S([this.bytecode,this.interface.encodeDeploy(t)])),e}deploy(...t){return yo(this,void 0,void 0,function*(){let e={};t.length===this.interface.deploy.inputs.length+1&&(e=t.pop()),bo.checkArgumentCount(t.length,this.interface.deploy.inputs.length," in Contract constructor");const r=yield ko(this.signer,t,this.interface.deploy.inputs);r.push(e);const n=this.getDeployTransaction(...r),i=yield this.signer.sendTransaction(n),o=ht(this.constructor,"getContractAddress")(i),s=ht(this.constructor,"getContract")(o,this.interface,this.signer);return Co(s,i),ut(s,"deployTransaction",i),s})}attach(t){return this.constructor.getContract(t,this.interface,this.signer)}connect(t){return new this.constructor(this.interface,this.bytecode,t)}static fromSolidity(t,e){null==t&&bo.throwError("missing compiler output",g.errors.MISSING_ARGUMENT,{argument:"compilerOutput"}),"string"==typeof t&&(t=JSON.parse(t));const r=t.abi;let n=null;return t.bytecode?n=t.bytecode:t.evm&&t.evm.bytecode&&(n=t.evm.bytecode),new this(r,n,e)}static getInterface(t){return Ro.getInterface(t)}static getContractAddress(t){return ve(t)}static getContract(t,e,r){return new Ro(t,e,r)}},FixedNumber:ot,Signer:Cn,VoidSigner:xn,Wallet:Ws,Wordlist:jo,constants:Le,get errors(){return p},getDefaultProvider:cc,logger:Cc,providers:uc,utils:kc,version:Sc,wordlists:$o});try{const t=window;null==t._ethers&&(t._ethers=xc)}catch(t){}const _c=["https://w3s.link/ipfs/","https://cloudflare-ipfs.com/ipfs/","https://ipfs.io/ipfs/","https://gateway.pinata.cloud/ipfs/","https://dweb.link/ipfs/"];function Tc(){const t=function(){try{const t=localStorage.getItem("customIpfsGatewayBaseUrl");if(t&&"string"==typeof t&&t.trim()){const e=t.trim();return e.endsWith("/ipfs/")?e:e.endsWith("/")?e+"ipfs/":e+"/ipfs/"}}catch(t){console.warn("[IpfsService] Failed to read custom gateway from localStorage:",t)}return null}();return t?[t,..._c]:_c}function Pc(t){return!(!t||"string"!=typeof t)&&t.toLowerCase().startsWith("ipfs://")}function Ic(t){if(!Pc(t))return t;const e=t.substring(7);return e.startsWith("/")?e.substring(1):e}function Nc(t,e=0){if(!Pc(t))return t;const r=Tc();if(e<0||e>=r.length)return null;const n=Ic(t);return r[e]+n}function Mc(){return Tc()}var Bc=Object.freeze({__proto__:null,fetchJsonWithIpfsSupport:async function(t,e={}){const{timeout:r=1e4,...n}=e;if(!Pc(t)){const e=new AbortController,i=setTimeout(()=>e.abort(),r);try{const r=await fetch(t,{...n,signal:e.signal});if(!r.ok)throw new Error(`HTTP ${r.status}: ${r.statusText}`);const o=await r.json();return clearTimeout(i),o}catch(t){if(clearTimeout(i),"AbortError"===t.name)throw new Error(`Request timeout after ${r}ms`);throw t}}const i=Tc(),o=Ic(t),s=[];for(let t=0;t<i.length;t++){const e=i[t],a=e+o,l=new AbortController,c=setTimeout(()=>l.abort(),r);try{const r=await fetch(a,{...n,signal:l.signal});if(clearTimeout(c),!r.ok)throw new Error(`HTTP ${r.status}: ${r.statusText}`);const o=await r.json();return t>0&&console.log(`[IpfsService] Resolved IPFS via gateway ${t+1}/${i.length}: ${e}`),o}catch(n){clearTimeout(c);const i="AbortError"===n.name?`Timeout after ${r}ms`:n.message||"Unknown error";s.push(`Gateway ${t+1} (${e}): ${i}`);continue}}throw new Error(`Failed to fetch IPFS content after trying ${i.length} gateways:\n`+s.join("\n"))},getAvailableGateways:Mc,isIpfsUri:Pc,normalizeIpfsPath:Ic,resolveIpfsToHttp:Nc,setCustomGateway:function(t){try{t?localStorage.setItem("customIpfsGatewayBaseUrl",t):localStorage.removeItem("customIpfsGatewayBaseUrl")}catch(t){console.warn("[IpfsService] Failed to save custom gateway to localStorage:",t)}},testImageLoad:function(t,e=5e3){return new Promise(r=>{const n=new Image,i=setTimeout(()=>{n.onload=null,n.onerror=null,r(!1)},e);n.onload=()=>{clearTimeout(i),r(!0)},n.onerror=()=>{clearTimeout(i),r(!1)},n.src=t})}});class Rc extends t.Component{constructor(t){super(t),this.providerMap=t.providerMap,this.walletIcons=t.walletIcons,this.onWalletSelected=t.onWalletSelected,this.state={isVisible:!1}}events(){return{"click .wallet-modal-close":this.hide,"click .wallet-modal-overlay":t=>{t.target===t.currentTarget&&this.hide()},"click .wallet-option":async t=>{const e=t.currentTarget.dataset.wallet;this.onWalletSelected&&await this.onWalletSelected(e),this.hide()}}}show(){this.setState({isVisible:!0})}hide(){this.setState({isVisible:!1})}render(){if(!this.state.isVisible)return'<div class="wallet-modal-container" style="display: none;"></div>';return`\n <div class="wallet-modal-container">\n <div class="wallet-modal-overlay">\n <div class="wallet-modal">\n <div class="wallet-modal-header">\n <h3>Select Your Wallet</h3>\n <button class="wallet-modal-close">&times;</button>\n </div>\n <div class="wallet-options">\n ${Object.keys(this.providerMap).map(t=>`\n <button class="wallet-option" data-wallet="${t}">\n <img src="${this.walletIcons[t]}" alt="${t}">\n <span>${t.charAt(0).toUpperCase()+t.slice(1)}</span>\n </button>\n `).join("")}\n </div>\n </div>\n </div>\n </div>\n `}}class Fc extends t.Component{constructor(t){super(),this.walletService=t.walletService,this.walletModal=null,this.state={walletConnected:!1,address:null,balance:"0.00",loading:!0,menuOpen:!1,hasExecTokens:!1,isVaultBenefactor:!1}}onMount(){console.log("[FloatingWalletButton] onMount called"),this.initialize(),this.setupDOMEventListeners()}async initialize(){await this.checkWalletConnection(),this.setupEventListeners()}async checkWalletConnection(){console.log("[FloatingWalletButton] checkWalletConnection called");try{this.walletService.isInitialized||await this.walletService.initialize();let t=this.walletService.isConnected(),e=this.walletService.getAddress();if(!t&&void 0!==window.ethereum)try{const r=localStorage.getItem("ms2fun_lastWallet");if(r){const n=await window.ethereum.request({method:"eth_accounts"});if(n&&n.length>0)try{await this.walletService.selectWallet(r),await this.walletService.connect(),t=this.walletService.isConnected(),e=this.walletService.getAddress(),t&&console.log("[FloatingWalletButton] Auto-reconnected to",r)}catch(t){console.log("[FloatingWalletButton] Auto-reconnect not possible")}}}catch(t){console.log("[FloatingWalletButton] Could not check existing accounts:",t)}t&&e?await this.loadWalletInfo(e):this.setState({loading:!1,walletConnected:!1})}catch(t){console.error("[FloatingWalletButton] Error checking wallet connection:",t),this.setState({loading:!1,walletConnected:!1})}}async loadWalletInfo(t){try{let e=this.walletService.ethersProvider;e||void 0===window.ethereum||(e=new ac(window.ethereum));let r="0.00";if(e&&t){const n=await e.getBalance(t);r=parseFloat(Ec(n)).toFixed(4)}const n=!1,i=!1;this.setState({walletConnected:!0,address:t,balance:r,loading:!1,hasExecTokens:n,isVaultBenefactor:i})}catch(e){console.error("[FloatingWalletButton] Failed to load wallet info:",e),this.setState({walletConnected:!0,address:t,loading:!1})}}async checkExecTokens(t){return!1}async checkVaultBenefactor(t){return!1}setupEventListeners(){const e=t.eventBus.on("wallet:connected",async t=>{await this.loadWalletInfo(t.address)}),r=t.eventBus.on("wallet:disconnected",()=>{this.setState({walletConnected:!1,address:null,balance:"0.00",menuOpen:!1,hasExecTokens:!1,isVaultBenefactor:!1})}),n=t.eventBus.on("wallet:changed",async t=>{await this.loadWalletInfo(t.address)});this.registerCleanup(()=>{e(),r(),n()})}setupClickOutsideHandler(){const t=t=>{this.element&&!this.element.contains(t.target)&&this.state.menuOpen&&this.setState({menuOpen:!1})};document.addEventListener("click",t),this.registerCleanup(()=>{document.removeEventListener("click",t)})}async handleButtonClick(t){t.preventDefault(),t.stopPropagation(),this.state.walletConnected?this.setState({menuOpen:!this.state.menuOpen}):await this.showWalletModal()}async showWalletModal(){const t={rabby:()=>window.ethereum?.isRabby?window.ethereum:null,rainbow:()=>window.ethereum?.isRainbow?window.ethereum:null,phantom:()=>window.phantom?.ethereum||null,metamask:()=>window.ethereum||null},e={rabby:"/public/wallets/rabby.webp",rainbow:"/public/wallets/rainbow.webp",phantom:"/public/wallets/phantom.webp",metamask:"/public/wallets/MetaMask.webp"};this.walletModal||(this.walletModal=new Rc({providerMap:t,walletIcons:e,onWalletSelected:async t=>{await this.handleWalletSelection(t)}}),this.modalRoot||(this.modalRoot=document.createElement("div"),document.body.appendChild(this.modalRoot)),this.walletModal.mount(this.modalRoot)),this.walletModal.show()}async handleWalletSelection(t){try{await this.walletService.selectWallet(t),localStorage.setItem("ms2fun_lastWallet",t),await this.walletService.connect()}catch(t){console.error("[FloatingWalletButton] Error connecting wallet:",t)}}handleMenuItemClick(t){this.setState({menuOpen:!1}),window.router?window.router.navigate(t):window.location.href=t}async handleDisconnect(t){t.preventDefault(),t.stopPropagation();try{await this.walletService.disconnect(),this.setState({menuOpen:!1})}catch(t){console.error("[FloatingWalletButton] Failed to disconnect:",t)}}static get styles(){return"\n /* FloatingWalletButton - Bottom-right floating wallet connection button with power user dropdown */\n\n .floating-wallet-button {\n position: fixed;\n bottom: 2rem;\n right: 2rem;\n z-index: 9999; /* Above all content */\n }\n\n .floating-wallet-button .wallet-btn {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.75rem 1.25rem;\n background: linear-gradient(135deg, rgba(139, 69, 19, 0.9), rgba(101, 67, 33, 0.9));\n border: 2px solid rgba(218, 165, 32, 0.6);\n border-radius: 50px;\n color: #fff;\n font-family: 'Cinzel', serif;\n font-size: 0.9rem;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s ease;\n box-shadow: 0 4px 15px rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(10px);\n }\n\n .floating-wallet-button .wallet-btn:hover {\n transform: translateY(-2px);\n box-shadow: 0 6px 20px rgba(218, 165, 32, 0.4);\n border-color: rgba(218, 165, 32, 0.8);\n background: linear-gradient(135deg, rgba(160, 82, 45, 0.95), rgba(120, 80, 50, 0.95));\n }\n\n .floating-wallet-button .wallet-btn:active {\n transform: translateY(0);\n }\n\n /* Wallet icon */\n .floating-wallet-button .wallet-icon {\n font-size: 1.2rem;\n line-height: 1;\n }\n\n /* Wallet text/address */\n .floating-wallet-button .wallet-text,\n .floating-wallet-button .wallet-address {\n font-size: 0.875rem;\n white-space: nowrap;\n }\n\n /* Loading state */\n .floating-wallet-button.loading {\n pointer-events: none;\n }\n\n .floating-wallet-button .wallet-spinner {\n width: 40px;\n height: 40px;\n border: 3px solid rgba(218, 165, 32, 0.3);\n border-top-color: rgba(218, 165, 32, 0.9);\n border-radius: 50%;\n animation: wallet-spin 0.8s linear infinite;\n }\n\n @keyframes wallet-spin {\n to { transform: rotate(360deg); }\n }\n\n /* Dropdown menu */\n .wallet-dropdown-menu {\n position: absolute;\n bottom: calc(100% + 0.5rem);\n right: 0;\n min-width: 240px;\n background: linear-gradient(135deg, rgba(139, 69, 19, 0.98), rgba(101, 67, 33, 0.98));\n border: 2px solid rgba(218, 165, 32, 0.6);\n border-radius: 12px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.6);\n backdrop-filter: blur(15px);\n overflow: hidden;\n animation: dropdown-slide-up 0.2s ease-out;\n }\n\n @keyframes dropdown-slide-up {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n /* Dropdown header */\n .wallet-dropdown-menu .dropdown-header {\n padding: 1rem;\n background: rgba(0, 0, 0, 0.3);\n border-bottom: 1px solid rgba(218, 165, 32, 0.3);\n }\n\n .wallet-dropdown-menu .dropdown-address {\n font-family: 'Cinzel', serif;\n font-size: 0.875rem;\n font-weight: 600;\n color: rgba(218, 165, 32, 0.95);\n margin-bottom: 0.25rem;\n }\n\n .wallet-dropdown-menu .dropdown-balance {\n font-family: 'Lato', sans-serif;\n font-size: 0.75rem;\n color: rgba(255, 255, 255, 0.7);\n }\n\n /* Dropdown divider */\n .wallet-dropdown-menu .dropdown-divider {\n height: 1px;\n background: linear-gradient(90deg,\n transparent,\n rgba(218, 165, 32, 0.3) 50%,\n transparent\n );\n margin: 0;\n }\n\n /* Dropdown items */\n .wallet-dropdown-menu .dropdown-items {\n padding: 0.5rem;\n }\n\n .wallet-dropdown-menu .dropdown-item {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n width: 100%;\n padding: 0.75rem 1rem;\n background: transparent;\n border: none;\n border-radius: 8px;\n color: rgba(255, 255, 255, 0.9);\n font-family: 'Lato', sans-serif;\n font-size: 0.875rem;\n text-align: left;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .wallet-dropdown-menu .dropdown-item:hover {\n background: rgba(218, 165, 32, 0.15);\n color: #fff;\n }\n\n .wallet-dropdown-menu .dropdown-item:active {\n background: rgba(218, 165, 32, 0.25);\n }\n\n .wallet-dropdown-menu .dropdown-item .item-icon {\n font-size: 1.125rem;\n line-height: 1;\n opacity: 0.9;\n }\n\n .wallet-dropdown-menu .dropdown-item .item-label {\n flex: 1;\n }\n\n /* Disconnect button special styling */\n .wallet-dropdown-menu .dropdown-item.disconnect {\n color: rgba(255, 99, 71, 0.9);\n }\n\n .wallet-dropdown-menu .dropdown-item.disconnect:hover {\n background: rgba(255, 99, 71, 0.15);\n color: rgba(255, 99, 71, 1);\n }\n\n /* Responsive adjustments */\n @media (max-width: 768px) {\n .floating-wallet-button {\n bottom: 1rem;\n right: 1rem;\n }\n\n .floating-wallet-button .wallet-btn {\n padding: 0.625rem 1rem;\n font-size: 0.8rem;\n }\n\n .wallet-dropdown-menu {\n min-width: 200px;\n right: 0;\n }\n\n .wallet-dropdown-menu .dropdown-item {\n padding: 0.625rem 0.875rem;\n font-size: 0.8rem;\n }\n }\n\n /* Small screens - even more compact */\n @media (max-width: 480px) {\n .floating-wallet-button {\n bottom: 0.75rem;\n right: 0.75rem;\n }\n\n .floating-wallet-button .wallet-btn {\n padding: 0.5rem 0.875rem;\n font-size: 0.75rem;\n }\n\n .floating-wallet-button .wallet-icon {\n font-size: 1rem;\n }\n\n .wallet-dropdown-menu {\n min-width: 180px;\n }\n }\n\n /* Ensure menu appears above button when open */\n .floating-wallet-button.menu-open .wallet-btn {\n border-color: rgba(218, 165, 32, 0.9);\n background: linear-gradient(135deg, rgba(160, 82, 45, 0.95), rgba(120, 80, 50, 0.95));\n }\n "}render(){if(console.log("[FloatingWalletButton] render called, loading:",this.state.loading,"walletConnected:",this.state.walletConnected),this.state.loading)return'\n <div class="floating-wallet-button loading">\n <div class="wallet-spinner"></div>\n </div>\n ';const{walletConnected:t,address:e,balance:r,menuOpen:n,hasExecTokens:i,isVaultBenefactor:o}=this.state;if(!t)return'\n <div class="floating-wallet-button disconnected" data-ref="wallet-button">\n <button class="wallet-btn" data-ref="connect-btn">\n <span class="wallet-icon">🦊</span>\n <span class="wallet-text">Connect</span>\n </button>\n </div>\n ';const s=`${e.slice(0,6)}...${e.slice(-4)}`;return`\n <div class="floating-wallet-button connected ${n?"menu-open":""}" data-ref="wallet-button">\n <button class="wallet-btn" data-ref="wallet-btn" title="${this.escapeHtml(e)}\nBalance: ${r} ETH">\n <span class="wallet-icon">🦊</span>\n <span class="wallet-address">${this.escapeHtml(s)}</span>\n </button>\n\n ${n?this.renderDropdownMenu(e,r,i,o):""}\n </div>\n `}renderDropdownMenu(t,e,r,n){const i=`${t.slice(0,6)}...${t.slice(-4)}`;return`\n <div class="wallet-dropdown-menu" data-ref="dropdown-menu">\n <div class="dropdown-header">\n <div class="dropdown-address">${this.escapeHtml(i)}</div>\n <div class="dropdown-balance">${e} ETH</div>\n </div>\n\n <div class="dropdown-divider"></div>\n\n <div class="dropdown-items">\n <button class="dropdown-item" data-route="/portfolio" data-ref="menu-item">\n <span class="item-icon">📊</span>\n <span class="item-label">Portfolio</span>\n </button>\n\n ${r?'\n <button class="dropdown-item" data-route="/governance" data-ref="menu-item">\n <span class="item-icon">🗳️</span>\n <span class="item-label">Governance</span>\n </button>\n ':""}\n\n <button class="dropdown-item" data-route="/staking" data-ref="menu-item">\n <span class="item-icon">🎯</span>\n <span class="item-label">Staking</span>\n </button>\n\n ${n?'\n <button class="dropdown-item" data-route="/portfolio?filter=vaults" data-ref="menu-item">\n <span class="item-icon">💰</span>\n <span class="item-label">Vault Positions</span>\n </button>\n ':""}\n </div>\n\n <div class="dropdown-divider"></div>\n\n <div class="dropdown-items">\n <button class="dropdown-item" data-action="settings" data-ref="menu-item">\n <span class="item-icon">⚙️</span>\n <span class="item-label">Settings</span>\n </button>\n\n <button class="dropdown-item disconnect" data-ref="disconnect-btn">\n <span class="item-icon">🔌</span>\n <span class="item-label">Disconnect</span>\n </button>\n </div>\n </div>\n `}setupDOMEventListeners(){if(console.log("[FloatingWalletButton] setupDOMEventListeners called, element:",this.element),!this.element)return;const t=this.element.querySelector(".wallet-btn");console.log("[FloatingWalletButton] mainBtn found:",t),t&&t.addEventListener("click",t=>this.handleButtonClick(t));Array.from(this.element.querySelectorAll(".dropdown-item[data-route], .dropdown-item[data-action]")).forEach(t=>{t.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation();const r=t.getAttribute("data-route"),n=t.getAttribute("data-action");r?this.handleMenuItemClick(r):"settings"===n&&this.setState({menuOpen:!1})})});const e=this.element.querySelector(".dropdown-item.disconnect");e&&e.addEventListener("click",t=>this.handleDisconnect(t))}onStateUpdate(t,e){t.menuOpen!==e.menuOpen&&this.setTimeout(()=>{this.setupDOMEventListeners()},0)}onUnmount(){this.walletModal&&(this.walletModal.hide(),this.walletModal=null)}escapeHtml(t){if(!t)return"";const e=document.createElement("div");return e.textContent=t,e.innerHTML}}class Oc extends Rc{events(){return{..."function"==typeof super.events?super.events():{},"click .wallet-option":async t=>{const e=t?.target?.closest?.(".wallet-option"),r=e?.dataset?.wallet;r&&(this.onWalletSelected&&await this.onWalletSelected(r),this.hide())}}}}class Dc extends t.Component{constructor(t={}){super(),this.props=t,this.setState({gatewayIndex:0,isLoading:!0,hasError:!1,currentSrc:null}),this.handleImageLoad=this.handleImageLoad.bind(this),this.handleImageError=this.handleImageError.bind(this)}getCurrentUrl(){const{src:t}=this.props;return t?Pc(t)?Nc(t,this.state.gatewayIndex):t:null}handleImageLoad(t){this.setState({isLoading:!1,hasError:!1}),this.props.onLoad&&this.props.onLoad(t)}handleImageError(t){const e=Mc(),{src:r}=this.props;if(!Pc(r)||this.state.gatewayIndex>=e.length-1)return this.setState({isLoading:!1,hasError:!0}),console.error("[IpfsImage] Failed to load image:",r,{triedGateways:this.state.gatewayIndex+1,totalGateways:e.length}),void(this.props.onError&&this.props.onError(t));const n=this.state.gatewayIndex+1;this.setState({gatewayIndex:n});const i=this.element?.querySelector("img");if(i){const t=Nc(r,n);t&&(i.src=t)}}render(){const{src:t,alt:e="",className:r="",style:n={},loading:i="lazy",placeholder:o,errorPlaceholder:s}=this.props,{isLoading:a,hasError:l}=this.state;if(!t)return'<div class="ipfs-image-empty"></div>';const c=this.getCurrentUrl();return l?s||`\n <div class="ipfs-image-error ${r}" style="${this.styleToString(n)}">\n <div class="ipfs-image-error-icon">⚠️</div>\n <div class="ipfs-image-error-text">IPFS image unavailable</div>\n </div>\n `:`\n <div class="ipfs-image-container ${r}" style="${this.styleToString(n)}">\n ${a&&o?o:""}\n <img \n src="${this.escapeHtml(c||"")}" \n alt="${this.escapeHtml(e)}" \n loading="${i}"\n class="ipfs-image ${a?"ipfs-image-loading":"ipfs-image-loaded"}"\n style="${a?"opacity: 0;":"opacity: 1; transition: opacity 0.3s;"}"\n />\n </div>\n `}mount(t){super.mount(t);const e=this.element?.querySelector("img");e&&(e.addEventListener("load",this.handleImageLoad),e.addEventListener("error",this.handleImageError),this.registerCleanup(()=>{e.removeEventListener("load",this.handleImageLoad),e.removeEventListener("error",this.handleImageError)}))}styleToString(t){return t&&"object"==typeof t?Object.entries(t).map(([t,e])=>`${t.replace(/([A-Z])/g,"-$1").toLowerCase()}: ${e};`).join(" "):""}}Dc.styles="\n .ipfs-image-container {\n position: relative;\n display: inline-block;\n width: 100%;\n height: 100%;\n }\n \n .ipfs-image {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n \n .ipfs-image-loading {\n opacity: 0;\n }\n \n .ipfs-image-loaded {\n opacity: 1;\n transition: opacity 0.3s ease-in;\n }\n \n .ipfs-image-error {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n background-color: #f5f5f5;\n color: #666;\n padding: 1rem;\n text-align: center;\n }\n \n .ipfs-image-error-icon {\n font-size: 2rem;\n margin-bottom: 0.5rem;\n }\n \n .ipfs-image-error-text {\n font-size: 0.875rem;\n }\n \n .ipfs-image-empty {\n display: block;\n width: 100%;\n height: 100%;\n background-color: transparent;\n }\n \n /* Dark mode support */\n html[data-theme='dark'] .ipfs-image-error {\n background-color: #2a2a2a;\n color: #aaa;\n }\n";class Uc extends t.Component{constructor(t){super(t),this.eventBus=t.eventBus,this.state={nftMintingEnabled:t.nftMintingEnabled||!1,message:t.message||"",isValid:void 0===t.isValid||t.isValid,nftBalance:t.nftBalance||0,swapDirection:t.swapDirection||"buy",lastValidationState:!0,isPhase2:null===t.isPhase2?null:t.isPhase2},this.handleMessageInput=this.handleMessageInput.bind(this),this.handleNFTToggle=this.handleNFTToggle.bind(this),this.handleStoreUpdate=this.handleStoreUpdate.bind(this),this.updateTimer=null}onMount(){this.contractDataUnsubscribe=this.eventBus.on("contractData:updated",t=>{this.updateProps({isPhase2:t.liquidityPool&&"0x0000000000000000000000000000000000000000"!==t.liquidityPool})}),this.addEventListeners(),this.updateElements()}onUnmount(){this.contractDataUnsubscribe&&this.contractDataUnsubscribe(),this.removeEventListeners()}updateProps(t){const e={...this.state,...t},r=this.state.isPhase2!==e.isPhase2||this.state.swapDirection!==e.swapDirection||this.state.nftBalance!==e.nftBalance;this.setState(e),r?(this.validateTransaction(),this.update()):this.updateElements()}addEventListeners(){const t=this.element.querySelector("#messageInput"),e=this.element.querySelector("#nftToggle");t&&(this._messageInput=t,t.addEventListener("input",this.handleMessageInput)),e&&(this._nftToggle=e,e.addEventListener("change",this.handleNFTToggle))}removeEventListeners(){this._messageInput&&this._messageInput.removeEventListener("input",this.handleMessageInput),this._nftToggle&&this._nftToggle.removeEventListener("change",this.handleNFTToggle)}validateTransaction(){const t=this.state.message.length<=140,e=!this.state.nftMintingEnabled||this.state.nftBalance<10,r=t&&e;this.state.lastValidationState!==r&&(this.state.lastValidationState=r,this.state.isValid=r,this.eventBus.emit("transactionValidation",{isValid:r,errors:this.getValidationErrors()}))}getValidationErrors(){const t=[];return this.state.message.length>140&&t.push("Message must be 140 characters or less"),this.state.nftMintingEnabled&&this.state.nftBalance>=10&&t.push("Cannot mint more than 10 NFTs"),t}updateElements(){const t=this.element.querySelector("#messageInput"),e=this.element.querySelector("#nftToggle");t&&!t.matches(":focus")&&(t.value=this.state.message),e&&(e.checked=this.state.nftMintingEnabled),this.removeEventListeners(),this.addEventListeners();const r=this.element.querySelector(".character-count");r&&(r.textContent=`${this.state.message.length}/140`,r.className="character-count "+(this.state.message.length>140?"error":""));const n=this.element.querySelector(".validation-status");n&&(n.className="validation-status "+(this.state.isValid?"valid":"invalid"),n.innerHTML=this.getValidationErrors().map(t=>`<p class="error">${t}</p>`).join(""))}handleMessageInput(t){const e=t.target.value||"";this.state={...this.state,message:e},this.updateElements(),this.emitStateUpdate()}handleNFTToggle(t){const e=t.target.checked;this.state={...this.state,nftMintingEnabled:e},this.updateElements(),this.emitStateUpdate()}emitStateUpdate(){const t={message:this.state.message,nftMintingEnabled:this.state.nftMintingEnabled};this.eventBus.emit("transactionOptions:update",t)}checkPhase2Status(){const{isPhase2:t}=this.state;null!==t&&this.state.isPhase2!==t&&this.setState({isPhase2:t})}template(){const{nftMintingEnabled:t,message:e,isValid:r,isPhase2:n,swapDirection:i}=this.state;return null===n||n?"":`\n <div class="transaction-options">\n <div class="option-group ${"sell"===i?"hidden":""}">\n <label class="nft-toggle">\n <input type="checkbox" \n ${t?"checked":""} \n id="nftToggle">\n Mint NFT with transaction\n </label>\n </div>\n \n <div class="option-group">\n <label for="messageInput">Transaction Message</label>\n <textarea id="messageInput" \n maxlength="140" \n placeholder="Enter optional message..."\n >${e}</textarea>\n <span class="character-count ${e.length>140?"error":""}">\n ${e.length}/140\n </span>\n </div>\n\n <div class="validation-status ${r?"valid":"invalid"}">\n ${this.getValidationErrors().map(t=>`<p class="error">${t}</p>`).join("")}\n </div>\n </div>\n `}render(){return this.template()}}class Lc extends t.Component{constructor(t){super(t),this.state={messages:[]}}show(t){const{title:e="",message:r="",type:n="info",duration:i=5e3}=t,o=Date.now()+Math.random(),s={id:o,title:e,message:r,type:n};this.setState({messages:[...this.state.messages,s]}),i>0&&setTimeout(()=>this.close(o),i)}close(t){const e=this.state.messages.filter(e=>e.id!==t);this.setState({messages:e})}error(t,e="Error"){this.show({title:e,message:t,type:"error"})}success(t,e="Success"){this.show({title:e,message:t,type:"success"})}warning(t,e="Warning"){this.show({title:e,message:t,type:"warning"})}info(t,e="Info"){this.show({title:e,message:t,type:"info"})}render(){return`\n <div id="message-popup-container">\n ${this.state.messages.map(t=>`\n <div class="message-popup ${t.type}" data-id="${t.id}">\n <div class="message-content">\n ${t.title?`<div class="message-title">${t.title}</div>`:""}\n <div class="message-text">${t.message}</div>\n </div>\n <button class="close-button" data-id="${t.id}">&times;</button>\n </div>\n `).join("")}\n </div>\n `}events(){return{"click .close-button":t=>{const e=parseFloat(t.target.dataset.id);this.close(e)}}}static get styles(){return"\n #message-popup-container {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 10000;\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n\n .message-popup {\n background: #ffffff;\n border-radius: 8px;\n padding: 15px 20px;\n min-width: 300px;\n max-width: 400px;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n animation: slideIn 0.3s ease;\n border-left: 4px solid #2196F3;\n }\n\n .message-popup.error {\n border-left-color: #f44336;\n }\n\n .message-popup.success {\n border-left-color: #4CAF50;\n }\n\n .message-popup.warning {\n border-left-color: #ff9800;\n }\n\n .message-content {\n flex-grow: 1;\n margin-right: 10px;\n }\n\n .message-title {\n font-weight: bold;\n margin-bottom: 5px;\n }\n\n .message-text {\n font-size: 14px;\n color: #666;\n }\n\n .close-button {\n background: none;\n border: none;\n color: #999;\n cursor: pointer;\n font-size: 20px;\n padding: 0;\n line-height: 1;\n }\n\n .close-button:hover {\n color: #666;\n }\n\n @keyframes slideIn {\n from {\n transform: translateX(100%);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n }\n\n @keyframes fadeOut {\n from {\n transform: translateX(0);\n opacity: 1;\n }\n to {\n transform: translateX(100%);\n opacity: 0;\n }\n }\n "}}const qc={PRICE:"price:updated",STATUS:"price:status"};class zc extends t.Component{constructor(t){super(t),this.eventBus=t.eventBus,this.state={price:t.price||0,lastUpdated:t.lastUpdated||null,loading:void 0===t.loading||t.loading,error:t.error||null},this.handlePriceUpdate=this.handlePriceUpdate.bind(this),this.handleStatusUpdate=this.handleStatusUpdate.bind(this)}onMount(){this.eventBus&&(this.eventBus.on(qc.PRICE,this.handlePriceUpdate),this.eventBus.on(qc.STATUS,this.handleStatusUpdate))}onUnmount(){this.eventBus&&(this.eventBus.off(qc.PRICE,this.handlePriceUpdate),this.eventBus.off(qc.STATUS,this.handleStatusUpdate))}updateProps(t){this.setState({price:void 0!==t.price?t.price:this.state.price,lastUpdated:void 0!==t.lastUpdated?t.lastUpdated:this.state.lastUpdated,loading:void 0!==t.loading?t.loading:this.state.loading,error:void 0!==t.error?t.error:this.state.error})}setState(t){super.setState(t)}handlePriceUpdate({price:t}){this.setState({price:t||0,loading:!1})}handleStatusUpdate({loading:t,error:e}){this.setState({loading:t,error:e})}template(){const{price:t,lastUpdated:e,loading:r,error:n}=this.state;return r?'\n <div class="price-display loading marble-bg">\n <div class="price-header">\n <h3>Cult Exec </h3>\n <h3>Bonding Curve Presale</h3>\n </div>\n <div class="price-content">\n <div class="loading-indicator">Loading...</div>\n </div>\n </div>':n?`\n <div class="price-display error marble-bg">\n <div class="price-header">\n <h3>Cult Exec </h3>\n <h3>Bonding Curve Presale</h3>\n </div>\n <div class="price-content">\n <div class="error-message">Error: ${n}</div>\n </div>\n </div>`:`\n <div class="price-display marble-bg">\n <div class="price-header">\n <h3>Cult Exec </h3>\n <h3>Bonding Curve Presale</h3>\n </div>\n \n <div class="price-content">\n <div class="price-value">\n <span class="amount">${Number(t).toFixed(8)}</span>\n <span class="currency">ETH / Cult Exec</span>\n </div>\n </div>\n </div>\n `}render(){return this.template()}static get styles(){return"\n .price-display {\n background: #1a1a1a;\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 16px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n }\n\n .price-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n }\n\n .price-header h3 {\n margin: 0;\n color: var(--price-display-header-color, var(--color-text-primary, #333));\n font-size: 16px;\n }\n\n .last-updated {\n color: #666;\n font-size: 12px;\n }\n\n .price-content {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 48px;\n }\n\n .price-value {\n font-size: 24px;\n font-weight: bold;\n color: #fff;\n }\n\n .amount {\n margin-right: 8px;\n }\n\n .currency {\n color: var(--price-display-currency-color, var(--color-accent, #764ba2));\n }\n\n .loading-indicator {\n color: #666;\n font-style: italic;\n }\n\n .error-message {\n color: #ff4444;\n font-size: 14px;\n }\n\n /* Loading state animation */\n .price-display.loading .price-content {\n opacity: 0.7;\n }\n\n .price-display.loading .loading-indicator:after {\n content: '';\n animation: loading-dots 1.5s infinite;\n }\n\n @keyframes loading-dots {\n 0% { content: '.'; }\n 33% { content: '..'; }\n 66% { content: '...'; }\n }\n\n /* Error state styles */\n .price-display.error {\n border: 1px solid #ff4444;\n }\n\n /* Mobile responsive styles */\n @media (max-width: 768px) {\n .price-display {\n margin: 8px;\n padding: 12px;\n }\n\n .price-header {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .last-updated {\n margin-top: 4px;\n }\n\n .price-value {\n font-size: 20px;\n }\n }\n "}}class Gc extends t.Component{constructor(t){super(t),console.log("[DEBUG] ApproveModal constructor called with amount:",t.amount,"and address:",t.userAddress),this.blockchainService=t.blockchainService,this.eventBus=t.eventBus,this.amount=t.amount,this.userAddress=t.userAddress,this.messagePopup=new Lc("approve-status"),this.handleApprove=this.handleApprove.bind(this),this.handleClose=this.handleClose.bind(this),this.isClosing=!1,this.modalId=Math.random().toString(36).substring(2,9),console.log(`[DEBUG] ApproveModal instance created with ID: ${this.modalId}`)}onMount(){console.log(`[DEBUG-${this.modalId}] ApproveModal mounted to DOM`),super.onMount(),this.setupEventListeners()}setupEventListeners(){const t=this.element.querySelector(".approve-button"),e=this.element.querySelector(".approve-modal-close"),r=this.element.querySelector(".approve-modal-overlay");t?.addEventListener("click",this.handleApprove),e?.addEventListener("click",this.handleClose),r?.addEventListener("click",t=>{t.target===r&&this.handleClose()})}async handleApprove(){console.log(`[DEBUG-${this.modalId}] Approve button clicked`);try{const t=this.element.querySelector(".approve-button");if(!t)return void console.error(`[DEBUG-${this.modalId}] Approve button not found in the modal`);console.log(`[DEBUG-${this.modalId}] Approve button found, disabling and updating text`);const e=this.element.querySelector(".status-message")||document.createElement("div");if(!e.classList.contains("status-message")){e.className="status-message";const t=this.element.querySelector(".approve-modal-content");t?(console.log(`[DEBUG-${this.modalId}] Adding status message to modal content`),t.appendChild(e)):console.error(`[DEBUG-${this.modalId}] Modal content not found`)}if(e.textContent="Waiting for wallet confirmation...",e.className="status-message pending",t.disabled=!0,t.textContent="Approving...",this.userAddress)console.log(`[DEBUG-${this.modalId}] Using provided user address: ${this.userAddress}`);else{if(console.log(`[DEBUG-${this.modalId}] No user address provided, attempting to get from signer`),!this.blockchainService||!this.blockchainService.signer)throw console.error(`[DEBUG-${this.modalId}] No blockchain service or signer available`),new Error("No wallet connected. Please connect your wallet first.");try{this.userAddress=await this.blockchainService.signer.getAddress(),console.log(`[DEBUG-${this.modalId}] Retrieved user address for approval: ${this.userAddress}`)}catch(t){throw console.error(`[DEBUG-${this.modalId}] Failed to get user address for approval:`,t),new Error("Could not get wallet address for approval. Please reconnect your wallet.")}}console.log(`[DEBUG-${this.modalId}] Parsing amount: ${this.amount}`);const r=this.blockchainService.parseExec(this.amount);console.log(`[DEBUG-${this.modalId}] Parsed amount: ${r}`);const n=this.blockchainService.swapRouter?.address||this.blockchainService.swapRouter;console.log(`[DEBUG-${this.modalId}] Router address for approval: ${n}`),console.log(`[DEBUG-${this.modalId}] Approving ${this.amount} EXEC tokens from ${this.userAddress} to ${n}`),e.textContent="Transaction submitted, waiting for confirmation...",console.log(`[DEBUG-${this.modalId}] Calling blockchainService.setApproval`);try{const t=await this.blockchainService.setApproval(n,r);console.log(`[DEBUG-${this.modalId}] Approval transaction result:`,t)}catch(t){throw console.error(`[DEBUG-${this.modalId}] Transaction error:`,t),t}e.textContent="Approval successful!",e.className="status-message success",console.log(`[DEBUG-${this.modalId}] Approval successful, waiting before emitting event`),await new Promise(t=>setTimeout(t,1500)),console.log(`[DEBUG-${this.modalId}] Emitting approve:complete event`),this.eventBus.emit("approve:complete"),console.log(`[DEBUG-${this.modalId}] Calling handleClose after successful approval`),this.handleClose()}catch(t){console.error(`[DEBUG-${this.modalId}] Approval failed:`,t);let e=t.message;if(e.includes("Contract call")){const t=e.split(": ");e=t[t.length-1]}const r=this.element.querySelector(".status-message")||document.createElement("div");if(!r.classList.contains("status-message")){r.className="status-message";const t=this.element.querySelector(".approve-modal-content");t&&t.appendChild(r)}r.textContent=`Error: ${e}`,r.className="status-message error",this.messagePopup.error(`Approval Failed: ${e}`,"Transaction Failed");const n=this.element.querySelector(".approve-button");n&&(n.disabled=!1,n.textContent="Approve")}}handleClose(){if(console.log(`[DEBUG-${this.modalId}] handleClose called`),this.isClosing)console.log(`[DEBUG-${this.modalId}] Already closing, skipping`);else{this.isClosing=!0,console.log(`[DEBUG-${this.modalId}] Closing approval modal`);try{this.element&&this.element.parentNode?(console.log(`[DEBUG-${this.modalId}] Removing modal from DOM`),this.element.parentNode.removeChild(this.element)):console.warn(`[DEBUG-${this.modalId}] Modal element or parent not found during close`),console.log(`[DEBUG-${this.modalId}] Emitting approveModal:closed event`),this.eventBus.emit("approveModal:closed"),console.log(`[DEBUG-${this.modalId}] Calling dispose method`),this.dispose()}catch(t){console.error(`[DEBUG-${this.modalId}] Error closing approval modal:`,t)}}}dispose(){console.log(`[DEBUG-${this.modalId}] Disposing component resources`);const t=this.element?.querySelector(".approve-button"),e=this.element?.querySelector(".approve-modal-close");this.element?.querySelector(".approve-modal-overlay"),t?.removeEventListener("click",this.handleApprove),e?.removeEventListener("click",this.handleClose),this.isClosing=!0,this.blockchainService=null,this.userAddress=null,console.log(`[DEBUG-${this.modalId}] Component disposed`)}show(){console.log(`[DEBUG-${this.modalId}] Show method called`),this.isClosing=!1,this.element.style.display="block",console.log(`[DEBUG-${this.modalId}] Modal set to display:block`)}hide(){console.log(`[DEBUG-${this.modalId}] Hide method called`),this.element.style.display="none"}events(){return console.log(`[DEBUG-${this.modalId}] Setting up event handlers`),{"click .approve-button":t=>{console.log(`[DEBUG-${this.modalId}] Approve button clicked, calling handleApprove`),this.handleApprove()},"click .approve-modal-close":t=>{console.log(`[DEBUG-${this.modalId}] Close button clicked, calling handleClose`),this.handleClose()},"click .approve-modal-overlay":t=>{console.log(`[DEBUG-${this.modalId}] Overlay clicked`,t.target,t.currentTarget),t.target===t.currentTarget&&(console.log(`[DEBUG-${this.modalId}] Overlay direct click detected, calling handleClose`),this.handleClose())}}}render(){const t=this.blockchainService.swapRouter?.address||this.blockchainService.swapRouter;return`\n <div class="approve-modal-overlay">\n <div class="approve-modal">\n <button class="approve-modal-close">&times;</button>\n <div class="approve-modal-content">\n <h2>Approve Router</h2>\n <p>Before selling your $EXEC tokens, you need to approve the router contract to spend them.</p>\n \n <div class="approve-details">\n <div class="approve-info">\n <span class="label">Amount to Approve:</span>\n <span class="value">${parseInt(this.amount).toLocaleString()} $EXEC</span>\n </div>\n <div class="approve-info">\n <span class="label">Router Address:</span>\n <span class="value">${t}</span>\n </div>\n </div>\n\n <button class="approve-button">\n Approve\n </button>\n </div>\n </div>\n </div>\n `}static get styles(){return"\n .approve-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.75);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1000;\n }\n\n .approve-modal {\n background-color: #111;\n border-radius: 8px;\n padding: 24px;\n position: relative;\n width: 90%;\n max-width: 500px;\n }\n\n .approve-modal-close {\n position: absolute;\n top: 16px;\n right: 16px;\n background: none;\n border: none;\n font-size: 24px;\n cursor: pointer;\n color: #fff;\n }\n\n .approve-modal h2 {\n margin: 0 0 16px 0;\n color: #fff;\n }\n\n .approve-details {\n background-color: #1a1a1a;\n border-radius: 8px;\n padding: 16px;\n margin: 16px 0;\n }\n\n .approve-info {\n display: flex;\n justify-content: space-between;\n margin-bottom: 8px;\n word-break: break-all;\n }\n\n .approve-info:last-child {\n margin-bottom: 0;\n }\n\n .approve-info .label {\n color: #888;\n margin-right: 16px;\n }\n\n .approve-info .value {\n color: #fff;\n text-align: right;\n }\n\n .approve-button {\n width: 100%;\n padding: 12px;\n background-color: #007bff;\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 16px;\n margin-top: 16px;\n }\n\n .approve-button:disabled {\n background-color: #555;\n cursor: not-allowed;\n }\n\n .approve-button:hover:not(:disabled) {\n background-color: #0056b3;\n }\n \n .status-message {\n margin-top: 12px;\n padding: 10px;\n border-radius: 4px;\n text-align: center;\n font-size: 14px;\n }\n \n .status-message.pending {\n background-color: #2c3e50;\n color: #f1c40f;\n }\n \n .status-message.success {\n background-color: #27ae60;\n color: white;\n }\n \n .status-message.error {\n background-color: #c0392b;\n color: white;\n }\n "}}class Hc extends t.Component{constructor(t={}){super(t),this.props={balances:{eth:"0",exec:"0"},...t}}updateProps(t){this.props={...this.props,...t},this.updateSelectively(t)}updateSelectively(t){if(!this.element)return;if(void 0!==t.direction||void 0!==t.freeMint||void 0!==t.balances){const{balances:t,direction:e,freeMint:r}=this.props,n=parseFloat(t.eth||0).toFixed(6),i=parseInt(t.exec||0).toLocaleString(),o="sell"===e&&r?`Available: ${(parseInt(t.exec||0)-1e6).toLocaleString()}`:`Balance: ${i}`;this.element.querySelectorAll(".token-balance").forEach((t,r)=>{const s=0===r;t.textContent="buy"===e?s?`Balance: ${n}`:`Balance: ${i}`:s?o:`Balance: ${n}`});this.element.querySelectorAll(".token-symbol").forEach((t,r)=>{const n=0===r;t.textContent="buy"===e?n?"ETH":"$EXEC":n?"$EXEC":"ETH"})}const e=this.element.querySelector(".top-input"),r=this.element.querySelector(".bottom-input");if(void 0!==t.calculatingAmount||void 0!==t.execAmount||void 0!==t.ethAmount){const{direction:t,ethAmount:n,execAmount:i,calculatingAmount:o}=this.props;e&&!e.matches(":focus")&&(e.value="buy"===t?n:i),r&&!r.matches(":focus")&&(r.value="buy"===t?o?"Loading...":i:o?"Loading...":n)}}handleInput(t,e){const r=t.target.value;this.props.onInput&&this.props.onInput(e,r)}events(){return{"input .top-input":t=>this.handleInput(t,"top"),"input .bottom-input":t=>this.handleInput(t,"bottom")}}render(){const{direction:t,ethAmount:e,execAmount:r,calculatingAmount:n,freeMint:i,balances:o}=this.props,s=parseFloat(o.eth||0).toFixed(6),a=parseInt(o.exec||0).toLocaleString(),l="sell"===t&&i?`Available: ${(parseInt(o.exec||0)-1e6).toLocaleString()}`:`Balance: ${a}`;return`\n <div class="swap-inputs">\n <div class="input-container">\n <input type="text" \n class="top-input" \n value="${"buy"===t?e:r}" \n placeholder="0.0"\n pattern="^[0-9]*[.]?[0-9]*$">\n <div class="token-info">\n <span class="token-symbol">${"buy"===t?"ETH":"$EXEC"}</span>\n <span class="token-balance">Balance: ${"buy"===t?s:l}</span>\n </div>\n </div>\n <div class="direction-switch-slot"></div>\n <div class="input-container">\n <input type="text" \n class="bottom-input" \n value="${"buy"===t?n?"Loading...":r:n?"Loading...":e}" \n placeholder="0.0"\n pattern="^[0-9]*[.]?[0-9]*$">\n <div class="token-info">\n <span class="token-symbol">${"buy"===t?"$EXEC":"ETH"}</span>\n <span class="token-balance">Balance: ${"buy"===t?a:s}</span>\n </div>\n </div>\n </div>\n `}}class jc extends t.Component{constructor(t={}){super(),this.props=t}updateProps(t){const e={...this.props};this.props={...this.props,...t};const r="buy"===e.direction?"Buy $EXEC":"Sell $EXEC",n="buy"===this.props.direction?"Buy $EXEC":"Sell $EXEC";if((r!==n||e.disabled!==this.props.disabled)&&this.element){const t=this.element.querySelector(".swap-button");t&&(t.textContent=n,this.props.disabled?t.disabled=!0:t.disabled=!1)}}handleClick(t){t.preventDefault(),!this.props.disabled&&this.props.onClick&&this.props.onClick(t)}events(){return{"click .swap-button":t=>this.handleClick(t)}}render(){const{direction:t,disabled:e}=this.props;return`\n <button class="swap-button" ${e?"disabled":""}>\n ${"buy"===t?"Buy $EXEC":"Sell $EXEC"}\n </button>\n `}}class Kc extends t.Component{constructor(t){super(t),this.blockchainService=t.blockchainService,this.eventBus=t.eventBus,this.state={direction:t.direction||"buy",ethAmount:"",execAmount:"",activeInput:null,freeMint:t.freeMint||!1,freeSupply:t.freeSupply||0,calculatingAmount:!1,isPhase2:null===t.isPhase2?null:t.isPhase2,dataReady:t.dataReady||!1,balances:t.balances||{eth:"0",exec:"0"},price:t.price||{current:0},contractData:t.contractData||{}},this._address=t.address||null,this.transactionOptions=new Uc,this.messagePopup=new Lc("status-message"),this.priceDisplay=new zc({price:this.state.price,contractData:this.state.contractData}),this.messagePopup.initialize(),this.swapInputs=null,this.swapButton=new jc({direction:this.state.direction,disabled:!1,onClick:this.handleSwap.bind(this)}),this.calculateTimer=null,this.onDirectionChange=t.onDirectionChange,this.handleTransactionEvents=this.handleTransactionEvents.bind(this),this.handleBalanceUpdate=this.handleBalanceUpdate.bind(this),this.handleTransactionOptionsUpdate=this.handleTransactionOptionsUpdate.bind(this),this.transactionOptionsState={message:"",nftMintingEnabled:!1},this.approveModal=null,this.eventListeners=[],this.instanceId=Math.random().toString(36).substring(2,9),console.log(`🔵 SwapInterface instance created: ${this.instanceId}`)}handleBalanceUpdate(t){const e=t.balances||this.props.balances,r=void 0!==t.freeMint?t.freeMint:this.props.freeMint,n=void 0!==t.freeSupply?t.freeSupply:this.props.freeSupply;this.setState({balances:e,freeMint:r,freeSupply:n}),this.swapInputs&&this.swapInputs.updateProps({freeMint:r})}updateElements(){requestAnimationFrame(()=>{this.swapInputs&&this.swapInputs.updateProps({direction:this.state.direction,ethAmount:this.state.ethAmount,execAmount:this.state.execAmount,calculatingAmount:this.state.calculatingAmount,freeMint:this.state.freeMint,isPhase2:this.state.isPhase2}),this.swapButton&&this.swapButton.updateProps({direction:this.state.direction})})}async calculateSwapAmount(t,e){if(!t||isNaN(parseFloat(t)))return"";try{if(this.isLiquidityDeployed()){const r=this.state.price.current;if(console.log("calculateSwapAmount price",r),"eth"===e){const e=parseFloat(t)/r*1e6*.95;return console.log("calculateSwapAmount execAmount",e),e.toFixed(0)}{const e=parseFloat(t)/1e6*r*1.055;return console.log("calculateSwapAmount ethAmount",e),e.toFixed(6)}}if("eth"===e){const e=await this.blockchainService.getExecForEth(t),{freeSupply:r,freeMint:n}=this.state;console.log("calculateSwapAmount freeMint",n);const i=r>0&&!n?1e6:0;return Math.floor(e+i).toString()}return(await this.blockchainService.getEthForExec(t)).toString()}catch(t){return console.error("Error calculating swap amount:",t),""}}onMount(){console.log(`[${this.instanceId}] SwapInterface onMount called`),this.bindEvents();const t=[["contractData:updated",this.handleContractDataUpdate.bind(this),"high"],["transaction:pending",this.handleTransactionEvents,"normal"],["transaction:confirmed",this.handleTransactionEvents,"normal"],["transaction:success",this.handleTransactionEvents,"normal"],["transaction:error",this.handleTransactionEvents,"normal"],["balances:updated",this.handleBalanceUpdate,"high"],["transactionOptions:update",this.handleTransactionOptionsUpdate,"low"]];this.eventListeners=t.map(([t,e,r])=>(console.log(`[${this.instanceId}] Subscribing to ${t} with priority ${r}`),this.eventBus.on(t,e)));const{contractData:e}=this.state;if(e&&void 0!==e.liquidityPool){const t=this.isLiquidityDeployed();this.setState({isPhase2:t,dataReady:!0}),this.initializeChildComponents()}this.update(),requestAnimationFrame(()=>{this.mountChildComponents()})}updateProps(t){const e={...this.state},r={...this.state,...t};this.shouldUpdate(e,r)&&this.setState(r)}initializeChildComponents(){null!==this.state.isPhase2?this.swapInputs||(console.log(`[${this.instanceId}] Initializing SwapInputs with phase ${this.state.isPhase2?"2":"1"}`),this.swapInputs=new Hc({direction:this.state.direction,ethAmount:this.state.ethAmount,execAmount:this.state.execAmount,calculatingAmount:this.state.calculatingAmount,freeMint:this.state.freeMint,isPhase2:this.state.isPhase2,onInput:this.handleInput.bind(this)})):console.log(`[${this.instanceId}] Phase not yet determined, skipping SwapInputs initialization`)}mountChildComponents(){const t=this.element.querySelector(".price-display-container");!t||this.priceDisplay.element&&t.contains(this.priceDisplay.element)||(console.log(`[${this.instanceId}] Mounting PriceDisplay component`),this.priceDisplay.mount(t));const e=this.element.querySelector(".transaction-options-container");!e||!this.transactionOptions||this.transactionOptions.element&&e.contains(this.transactionOptions.element)||(console.log(`[${this.instanceId}] Mounting TransactionOptions component`),this.transactionOptions.mount(e));const r=this.element.querySelector(".swap-inputs-container");r&&this.swapInputs&&this.swapInputs.mount(r);const n=this.element.querySelector(".quick-fill-buttons-container");if(n){n.innerHTML='<div class="quick-fill-buttons"></div>';const t=n.querySelector(".quick-fill-buttons");if(t){const{direction:e}=this.state;t.innerHTML="buy"===e?'<button data-amount="0.0025">0.0025</button>\n <button data-amount="0.01">0.01</button>\n <button data-amount="0.05">0.05</button>\n <button data-amount="0.1">0.1</button>':'<button data-percentage="25">25%</button>\n <button data-percentage="50">50%</button>\n <button data-percentage="75">75%</button>\n <button data-percentage="100">100%</button>',t.addEventListener("click",t=>{(t.target.dataset.amount||t.target.dataset.percentage)&&this.handleQuickFill(t)})}}const i=this.element.querySelector(".direction-switch-slot");i&&(i.innerHTML='<button class="direction-switch">↑↓</button>',i.querySelector(".direction-switch").addEventListener("click",t=>{this.handleDirectionSwitch(t)}));const o=this.element.querySelector(".swap-button-container");o&&this.swapButton&&this.swapButton.mount(o)}onUnmount(){if(console.log(`[${this.instanceId}] SwapInterface onUnmount called`),this.eventListeners.forEach(t=>{"function"==typeof t&&t()}),this.eventListeners=[],this.transactionOptions&&this.transactionOptions.element&&this.transactionOptions.element.remove(),this.priceDisplay){try{this.priceDisplay.unmount()}catch(t){console.warn("Error unmounting price display:",t)}this.priceDisplay=null}if(this.swapInputs){try{this.swapInputs.unmount()}catch(t){console.warn("Error unmounting swap inputs:",t)}this.swapInputs=null}if(this.swapButton){try{this.swapButton.unmount()}catch(t){console.warn("Error unmounting swap button:",t)}this.swapButton=null}if(this.approveModal){try{this.approveModal.handleClose()}catch(t){console.warn("Error closing approval modal during unmount:",t)}this.approveModal=null}this.calculateTimer&&(clearTimeout(this.calculateTimer),this.calculateTimer=null)}handleTransactionEvents(t){if(console.log(`[${this.instanceId}] handleTransactionEvents called with:`,{type:t?.type,hasError:!!t?.error,hasHash:!!t?.hash,eventId:t?.id||"none",handled:t?.handled||!1}),t?.handledBy?.includes(this.instanceId))return void console.log(`[${this.instanceId}] Event already handled by this instance, skipping`);t.handledBy||(t.handledBy=[]),t.handledBy.push(this.instanceId);const e="buy"===this.state.direction?"Buy":"Sell";if(t&&t.type){if("buy"!==t.type&&"sell"!==t.type&&"swap"!==t.type||t.error||(console.log(`[${this.instanceId}] Showing transaction pending message for type:`,t.type),this.messagePopup.info(`${e} transaction. Simulating...`,"Transaction Pending")),t.hash&&this.messagePopup.info("Transaction confirmed, waiting for completion...","Transaction Confirmed"),t.receipt&&("buy"===t.type||"sell"===t.type||"swap"===t.type)){const t="buy"===this.state.direction?this.state.execAmount+" EXEC":this.state.ethAmount+" ETH";this.messagePopup.success(`Successfully ${"buy"===e.toLowerCase()?"bought":"sold"} ${t}`,"Transaction Complete"),this.state.ethAmount="",this.state.execAmount="",this.state.calculatingAmount=!1,this.swapInputs&&this.swapInputs.updateProps({ethAmount:"",execAmount:"",calculatingAmount:!1}),this.mountChildComponents()}if(t.error&&!t.handled){console.log(`[${this.instanceId}] Handling error in handleTransactionEvents:`,t.error);let e=t.error?.message||"Transaction failed";if(e.includes("Contract call")){const t=e.split(": ");e=t[t.length-1]}const r="buy"===this.state.direction?"Buy Failed":"Sell Failed";this.messagePopup.error(`${r}: ${e}`,"Transaction Failed"),t.handled=!0}}else console.warn("Invalid transaction event:",t)}handleTransactionOptionsUpdate(t){this.transactionOptionsState={message:t.message,nftMintingEnabled:t.nftMintingEnabled}}handleInput(t,e){this.calculateTimer&&clearTimeout(this.calculateTimer),this.state.activeInput=t,this.state.calculatingAmount=!0,"buy"===this.state.direction?"top"===t?this.state.ethAmount=e:this.state.execAmount=e:"top"===t?this.state.execAmount=e:this.state.ethAmount=e,this.swapInputs&&this.swapInputs.updateProps({direction:this.state.direction,ethAmount:this.state.ethAmount,execAmount:this.state.execAmount,calculatingAmount:this.state.calculatingAmount,freeMint:this.state.freeMint,isPhase2:this.state.isPhase2}),this.calculateTimer=setTimeout(async()=>{try{const r="buy"===this.state.direction==("top"===t),n=await this.calculateSwapAmount(e,r?"eth":"exec");r?(this.state.execAmount=n,this.state.calculatingAmount=!1,this.swapInputs&&this.swapInputs.updateProps({execAmount:n,calculatingAmount:!1})):(this.state.ethAmount=n,this.state.calculatingAmount=!1,this.swapInputs&&this.swapInputs.updateProps({ethAmount:n,calculatingAmount:!1}))}catch(t){console.error("Error calculating swap amount:",t),this.state.calculatingAmount=!1,this.swapInputs&&this.swapInputs.updateProps({calculatingAmount:!1})}},750)}events(){return{}}shouldUpdate(t,e){if(!t||!e)return!0;if(t===e)return!1;return!(t.ethAmount!==e.ethAmount||t.execAmount!==e.execAmount||t.activeInput!==e.activeInput||t.calculatingAmount!==e.calculatingAmount)||t.direction!==e.direction||t.freeMint!==e.freeMint||t.freeSupply!==e.freeSupply||t.isPhase2!==e.isPhase2||t.dataReady!==e.dataReady}handleDirectionSwitch(t){t&&(t.preventDefault(),t.stopPropagation()),this.calculateTimer&&clearTimeout(this.calculateTimer);const e="buy"===this.state.direction?"sell":"buy";console.log("Direction Switch - Current State:",{direction:this.state.direction,newDirection:e,freeMint:this.state.freeMint,freeSupply:this.state.freeSupply}),this.setState({direction:e,calculatingAmount:!1,activeInput:null}),this.onDirectionChange&&this.onDirectionChange(e),requestAnimationFrame(()=>{this.mountChildComponents()})}isLiquidityDeployed(){const{contractData:t}=this.state;if(!t||!t.liquidityPool)return!1;const e="0x0000000000000000000000000000000000000000"!==t.liquidityPool;return console.log("isLiquidityDeployed check:",{liquidityPool:t.liquidityPool,result:e}),e}async handleSwap(){try{if(this.state.calculatingAmount)return void this.messagePopup.info("Please wait for the calculation to complete","Loading");const{ethAmount:t,execAmount:e,direction:r,balances:n,freeMint:i}=this.state;if(!t||!e||parseFloat(t)<=0||parseFloat(e)<=0)return void this.messagePopup.info("Please enter valid amounts","Invalid Input");if("buy"===r){let e=parseFloat(this.blockchainService.formatEther(n.eth||"0"));const r=parseFloat(t);if(isNaN(r)||isNaN(e)||r>e)return void this.messagePopup.info(`Not enough ETH balance. You have ${e.toFixed(6)} ETH, need ${r} ETH`,"Insufficient Balance")}else{const t=e.replace(/,/g,""),r=BigInt(n.exec||0);if(BigInt(parseInt(t)||0)>r){const e=parseInt(n.exec||0).toLocaleString(),r=parseInt(t).toLocaleString();return void this.messagePopup.info(`Not enough EXEC balance. You have ${e} EXEC, need ${r} EXEC`,"Insufficient Balance")}}if("sell"===r&&parseInt(e.replace(/,/g,""))<=1e6&&i)return void this.messagePopup.info("Free minted tokens cannot be sold directly.","Free Mint Restriction");const o=this.isLiquidityDeployed(),s=this.state.execAmount.replace(/,/g,"");if(o){const t=this.blockchainService.parseEther(this.state.ethAmount),e=this.blockchainService.parseExec(s),r=await this.getAddress();if(!r)return void this.messagePopup.error("No wallet address available. Please reconnect your wallet.","Wallet Error");if("buy"===this.state.direction)await this.blockchainService.swapExactEthForTokenSupportingFeeOnTransfer(r,{amount:e},t);else{const t=this.blockchainService.swapRouter?.address||this.blockchainService.swapRouterAddress,n=await this.blockchainService.getApproval(r,t);if(BigInt(n)<BigInt(e)){if(this.approveModal){try{this.eventBus.off("approve:complete"),this.approveModal.handleClose()}catch(t){console.warn("Error closing existing approval modal:",t)}this.approveModal=null}return this.approveModal=new ApproveModal(s,this.blockchainService,r),this.approveModal.mount(document.body),this.eventBus.once("approve:complete",async()=>{try{await this.blockchainService.swapExactTokenForEthSupportingFeeOnTransferV2(r,{amount:e})}catch(t){this.messagePopup.error(`Swap Failed: ${t.message}`,"Transaction Failed")}}),this.eventBus.once("approveModal:closed",()=>{this.approveModal=null}),void this.approveModal.show()}await this.blockchainService.swapExactTokenForEthSupportingFeeOnTransferV2(r,{amount:e})}}else{let t;try{const e=await this.blockchainService.getCurrentTier();if(t=await this.blockchainService.getMerkleProof(this.address,e),!t)return void this.messagePopup.error(`You are not whitelisted for Tier ${e+1}.`,"Not Whitelisted")}catch(t){return void this.messagePopup.error("Failed to verify whitelist status.","Whitelist Check Failed")}let e=s;if("buy"===this.state.direction&&this.state.freeSupply>0&&!this.state.freeMint){const t=parseInt(s);e=Math.max(0,t-1e6).toString()}const r=this.blockchainService.parseEther(this.state.ethAmount),n=this.blockchainService.parseExec(e);if("buy"===this.state.direction)await this.blockchainService.buyBonding({amount:n,maxCost:r,mintNFT:this.transactionOptionsState.nftMintingEnabled,proof:t.proof,message:this.transactionOptionsState.message},r);else{const e=BigInt(r)*BigInt(999)/BigInt(1e3);await this.blockchainService.sellBonding({amount:n,minReturn:e,proof:t.proof,message:this.transactionOptionsState.message})}}}catch(t){console.error("Swap failed:",t);let e=t.message;if(e.includes("Contract call")){const t=e.split(": ");e=t[t.length-1]}const r="buy"===this.state.direction?"Buy Failed":"Sell Failed";this.messagePopup.error(`${r}: ${e}`,"Transaction Failed")}}handleQuickFill(t){t.preventDefault();const e=t.target.dataset.amount,r=t.target.dataset.percentage;let n;if(e)n=e;else if(r){const{balances:t}=this.state,e=t.exec;if(!e||"0"===e)return void console.warn("No EXEC balance available for quick fill");let i=BigInt(e)/BigInt(1e18);if(this.state.freeMint&&(i-=BigInt(1e6),i<=0))return void this.messagePopup.info("You only have free mint tokens which cannot be sold.","Cannot Quick Fill");n=(i*BigInt(r)/BigInt(100)).toString()}this.handleInput("top",n)}handleContractDataUpdate(){try{const t=this.state.isPhase2,e=this.state.dataReady,r=null===t,{contractData:n}=this.state,i=this.isLiquidityDeployed();if(this.state.isPhase2=i,this.state.dataReady=!0,r&&null!==this.state.isPhase2)return console.log(`[${this.instanceId}] Phase determined: ${i?"Phase 2":"Phase 1"}`),this.initializeChildComponents(),this.setState({dataReady:!0,isPhase2:i}),void requestAnimationFrame(()=>this.mountChildComponents());if(!e&&this.state.dataReady)return console.log(`[${this.instanceId}] Data ready, mounting child components`),this.setState({dataReady:!0,isPhase2:i}),void requestAnimationFrame(()=>this.mountChildComponents());if(t!==this.state.isPhase2){console.log("Phase changed"),this.swapInputs&&this.swapInputs.updateProps({isPhase2:this.state.isPhase2});const t=this.element.querySelector(".price-display-container");return void(t&&this.priceDisplay&&this.priceDisplay.mount(t))}const o=this.element.querySelector(".price-display-container");if(o&&this.priceDisplay){!this.priceDisplay.element||!o.contains(this.priceDisplay.element)?this.priceDisplay.mount(o):this.priceDisplay.update()}}catch(t){console.error("Error in handleContractDataUpdate:",t),this.state.dataReady||(this.state.dataReady=!0,this.state.isPhase2=this.isLiquidityDeployed(),this.element&&this.element.innerHTML||this.update())}}render(){console.log("🎨 SwapInterface.render - Starting render");const{direction:t,isPhase2:e,dataReady:r,balances:n,freeMint:i,freeSupply:o}=this.state;if(!r||null===e)return'\n <div class="price-display-container"></div>\n <div class="quick-fill-buttons-container"></div>\n <div class="swap-inputs-container">\n <div style="padding: 20px; text-align: center;">Loading swap interface...</div>\n </div>\n <div class="transaction-options-container"></div>\n <div class="swap-button-container"></div>\n ';console.log("Render - Current State:",{direction:t,freeMint:i,freeSupply:o,isPhase2:e}),parseFloat(n.eth).toFixed(6);parseInt(n.exec).toLocaleString();"sell"===t&&i&&(parseInt(n.exec)-1e6).toLocaleString();const s=`\n <div class="price-display-container"></div>\n ${"sell"===t&&i&&!e?'<div class="free-mint-notice">You have 1,000,000 $EXEC you received for free that cannot be sold here.</div>':"buy"===t&&o>0&&!i&&!e?'<div class="free-mint-notice free-mint-bonus">1,000,000 $EXEC will be added to your purchase. Thank you.</div>':""}\n <div class="quick-fill-buttons-container"></div>\n <div class="swap-inputs-container"></div>\n <div class="transaction-options-container"></div>\n <div class="swap-button-container"></div>\n `;return console.log("🎨 SwapInterface.render - Completed render"),s}async getAddress(){try{const t=await Promise.resolve(this._address);return console.log(`[${this.instanceId}] Resolved address: ${t}`),t}catch(t){return console.error(`[${this.instanceId}] Error resolving address:`,t),null}}setAddress(t){this._address=t}get address(){return this._address}set address(t){this._address=t}}class Wc extends t.Component{constructor(t){super(t),this.eventBus=t.eventBus,this.state={currentPrice:t.price||0,totalBondingSupply:t.contractData?.totalBondingSupply||0,totalMessages:t.contractData?.totalMessages||0,totalNFTs:t.contractData?.totalNFTs||0,dataReady:t.dataReady||!1,contractEthBalance:t.contractData?.contractEthBalance||0,liquidityPool:t.contractData?.liquidityPool||null,chainId:t.chainId||null}}onMount(){this.unsubscribeEvents=[this.eventBus.on("contractData:updated",t=>this.updateProps({contractData:t})),this.eventBus.on("price:updated",t=>this.updateProps({price:t.price}))],this.resizeHandler=()=>requestAnimationFrame(()=>this.drawCurve()),window.addEventListener("resize",this.resizeHandler),this.isLiquidityDeployed()?this.renderDexToolsChart():this.drawCurve()}updateProps(t){const e={...this.state};let r=!1;if(t.contractData){const{contractData:n}=t;e.totalBondingSupply=n.totalBondingSupply,e.totalMessages=n.totalMessages,e.totalNFTs=n.totalNFTs,e.contractEthBalance=n.contractEthBalance,e.liquidityPool!==n.liquidityPool&&(e.liquidityPool=n.liquidityPool,r=!0),e.dataReady=!0,r=!0}void 0!==t.price&&(e.currentPrice=t.price,r=!0),void 0!==t.chainId&&(e.chainId=t.chainId,r=!0),this.setState(e),r&&(this.isLiquidityDeployed()?this.renderDexToolsChart():this.drawCurve())}isLiquidityDeployed(){const{liquidityPool:t}=this.state;return t&&"0x0000000000000000000000000000000000000000"!==t}renderDexToolsChart(){try{const t=this.element.querySelector(".bonding-curve");if(!t)return;t.innerHTML="";const e=`https://www.dextools.io/widget-chart/en/${this.getNetworkName(this.state.chainId)}/pe-light/${this.state.liquidityPool}?theme=dark&chartType=2&chartResolution=30&drawingToolbars=false`;t.innerHTML=`\n <iframe \n id="dextools-widget"\n title="$EXEC DEXTools Trading Chart"\n width="100%"\n height="100%"\n src="${e}"\n style="border: none;"\n onerror="console.warn('DEXTools chart failed to load (expected on localhost)')"\n ></iframe>\n `;const r=t.querySelector("#dextools-widget");r&&(r.onerror=()=>{console.warn("DEXTools chart iframe failed to load (expected on localhost due to X-Frame-Options)"),t.innerHTML='\n <div style="display: flex; align-items: center; justify-content: center; height: 100%; color: #888;">\n <div>Chart will be available in production</div>\n </div>\n '})}catch(t){console.error("Error rendering DEXTools chart:",t);const e=this.element.querySelector(".bonding-curve");e&&(e.innerHTML='\n <div style="display: flex; align-items: center; justify-content: center; height: 100%; color: #888;">\n <div>Chart unavailable (expected on localhost)</div>\n </div>\n ')}}getNetworkName(t){return{1:"ether",5:"goerli"}[t]||"ether"}drawCurve(){const t=this.element.querySelector("#curveChart");if(!t)return;const e=t.getContext("2d");t.width=t.offsetWidth,t.height=t.offsetHeight,e.clearRect(0,0,t.width,t.height),this.drawBaseCurve(e,t),this.state.dataReady?this.drawDataElements(e):this.drawPlaceholderLabels(e)}drawBaseCurve(t,e){const r=getComputedStyle(document.documentElement).getPropertyValue("--bonding-curve-color").trim()||"#764ba2";t.strokeStyle=r,t.lineWidth=2;const n=this.calculateCurvePoints(e,t=>Math.pow(.1+.8*t,3.5));this.drawCurvePath(t,n)}drawDataElements(t){const e=Math.max(.1,Math.min(.9,Math.pow(this.state.currentPrice/.08,1/3.5))),r=this.calculateCurvePoints(this.element.querySelector("#curveChart"),t=>Math.pow(.1+.8*t,3.5));this.drawCurrentPosition(t,r,e),this.drawLabels(t)}drawPlaceholderLabels(t){t.fillStyle="#666666",t.font="12px Courier New",t.fillText("Loading price data...",10,20),t.fillText("Loading supply data...",10,40),t.fillText("Loading NFT data...",10,60)}calculateCurvePoints(t,e){const r=[];for(let n=0;n<=100;n++){const i=n/100,o=e(i),s=i*t.width*.8+.1*t.width,a=.9*t.height-o*t.height*.8;r.push({x:s,y:a})}return r}drawCurvePath(t,e){t.beginPath(),t.moveTo(e[0].x,e[0].y);for(let r=1;r<e.length;r++)t.lineTo(e[r].x,e[r].y);t.stroke()}drawCurrentPosition(t,e,r){const n=Math.floor((r-.025)*e.length),i=Math.floor((r+.025)*e.length);if(n>=0&&i<e.length){const r=getComputedStyle(document.documentElement).getPropertyValue("--bonding-curve-color").trim()||"#764ba2";t.beginPath(),t.strokeStyle=r,t.lineWidth=4,t.moveTo(e[n].x,e[n].y);for(let r=n;r<=i;r++)t.lineTo(e[r].x,e[r].y);t.stroke();const o=e[Math.floor((n+i)/2)];t.beginPath(),t.arc(o.x,o.y,4,0,2*Math.PI),t.fillStyle="#FF0000",t.fill()}}drawLabels(t){t.fillStyle="#666666",t.font="12px Courier New",t.fillText(`${this.state.currentPrice.toFixed(4)} ETH / EXEC`,10,20),t.fillText(`Total Supply: ${this.state.totalBondingSupply.toLocaleString()} EXEC`,10,40),t.fillText(`Total Messages: ${this.state.totalMessages.toLocaleString()}`,10,60),t.fillText(`Total NFTs: ${this.state.totalNFTs.toLocaleString()}`,10,80),t.fillText(`Contract ETH Balance: ${this.state.contractEthBalance}`,10,100)}unmount(){this.unsubscribeEvents&&this.unsubscribeEvents.forEach(t=>t()),this.resizeHandler&&window.removeEventListener("resize",this.resizeHandler),super.unmount()}render(){return`\n <div class="bonding-curve marble-bg">\n ${this.isLiquidityDeployed()?"":'<canvas id="curveChart"></canvas>'}\n </div>\n `}static get styles(){return"\n .bonding-curve {\n width: 100%;\n height: 90%;\n min-height: 400px;\n background: #1a1a1a;\n border-radius: 8px;\n padding: 0px;\n overflow: hidden;\n position: relative;\n }\n\n #curveChart {\n width: 100%;\n height: 100%;\n }\n\n #dextools-widget {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n border: none;\n }\n "}}class Vc extends t.Component{constructor(t){super(t),this.eventBus=t.eventBus,this.state={balances:t.balances||{eth:"0",exec:"0",lastUpdated:null},loading:void 0===t.loading||t.loading,error:t.error||null},this.handleBalanceUpdate=this.handleBalanceUpdate.bind(this)}template(){const{balances:t,loading:e,error:r}=this.state;return`\n <div class="balance-display marble-bg ${e?"loading":""} ${r?"error":""}">\n <div class="balance-header">\n <h3>Your Balances</h3>\n ${t.lastUpdated?`\n <span class="last-updated">\n Last updated: ${new Date(t.lastUpdated).toLocaleTimeString()}\n </span>\n `:""}\n </div>\n \n <div class="balance-content">\n ${e?'\n <div class="loading-indicator">Loading balances...</div>\n ':r?`\n <div class="error-message">${r}</div>\n `:`\n <div class="balance-grid">\n <div class="balance-item eth">\n <span class="label">ETH Balance</span>\n <span class="amount">${t.eth}</span>\n </div>\n <div class="balance-item exec">\n <span class="label">EXEC Balance</span>\n <span class="amount">${t.exec}</span>\n </div>\n </div>\n `}\n </div>\n </div>\n `}render(){return this.template()}onMount(){this.eventBus&&(this.unsubscribeEvents=[this.eventBus.on("balances:updated",this.handleBalanceUpdate)])}onUnmount(){this.unsubscribeEvents&&this.unsubscribeEvents.forEach(t=>t())}updateProps(t){this.setState({balances:void 0!==t.balances?t.balances:this.state.balances,loading:void 0!==t.loading?t.loading:this.state.loading,error:void 0!==t.error?t.error:this.state.error})}handleBalanceUpdate(t){this.setState({balances:t,loading:!1,error:null})}}exports.ApprovalModal=Gc,exports.BalanceDisplay=Vc,exports.BlockchainService=class{constructor(t,e){if(!t||!e)throw new Error("BlockchainService requires eventBus and contractCache instances.");this.provider=null,this.signer=null,this.contract=null,this.mirrorContract=null,this.connectionState="disconnected",this.networkConfig=null,this.ethers=xc,this.eventBus=t,this.contractCache=e,this.swapRouterAddress="0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D",this.swapRouter=null,this.isInternalNetworkChange=!1,this.transactionCounter=0,this.activeTransactions=new Map,this.networkChangeState="idle",this.networkChangeTimeout=null,this.networkChangeTimeoutDuration=3e4,this.pendingNetworkChange=null,this.previousNetworkId=null,this.isInitializing=!1,this.chainChangedHandler=()=>this.handleNetworkChange(),this.accountsChangedHandler=()=>this.handleAccountChange()}async initialize(t){this.isInitializing=!0;try{if(!t)throw new Error("Network configuration is required for initialization.");return this.networkConfig=t,await this.initializeProvider(),this.connectionState="connected",this.setupNetworkListeners(),this.eventBus.emit("blockchain:initialized"),this.isInitializing=!1,!0}catch(t){throw this.connectionState="error",this.isInitializing=!1,this.eventBus.emit("blockchain:error",t),this.wrapError(t,"Blockchain initialization failed")}}setupNetworkListeners(){if(window.ethereum&&this.chainChangedHandler&&this.accountsChangedHandler){try{window.ethereum.removeListener("chainChanged",this.chainChangedHandler),window.ethereum.removeListener("accountsChanged",this.accountsChangedHandler)}catch(t){}window.ethereum.on("chainChanged",this.chainChangedHandler),window.ethereum.on("accountsChanged",this.accountsChangedHandler)}}async initializeProvider(){try{if(window.ethereum){const t=parseInt(this.networkConfig?.network||"1");await this.waitForCorrectNetwork(t);const e=new ac(window.ethereum,"any");this.provider=e,this.signer=e.getSigner();const r=await this.provider.getNetwork();if(r.chainId!==t){this.eventBus.emit("network:switching",{from:r.chainId,to:t,automatic:!0});try{this.isInternalNetworkChange=!0,await window.ethereum.request({method:"wallet_switchEthereumChain",params:[{chainId:`0x${t.toString(16)}`}]}),this.provider=new ac(window.ethereum),this.signer=this.provider.getSigner(),this.eventBus.emit("network:switched",{from:r.chainId,to:t,success:!0})}catch(e){if(this.isInternalNetworkChange=!1,this.eventBus.emit("network:switched",{from:r.chainId,to:t,success:!1,error:e.message}),4902!==e.code)throw e;await window.ethereum.request({method:"wallet_addEthereumChain",params:[{chainId:`0x${t.toString(16)}`,rpcUrls:[this.networkConfig.rpcUrl],chainName:this.networkConfig.chainName,nativeCurrency:this.networkConfig.nativeCurrency}]}),this.provider=new ac(window.ethereum),this.signer=this.provider.getSigner()}finally{this.isInternalNetworkChange=!1}}}else this.provider=new nl(this.networkConfig.rpcUrl)}catch(t){throw this.isInternalNetworkChange=!1,this.wrapError(t,"Provider initialization failed")}}async initializeContract(t,e,r,n){try{if(!(t&&e&&r&&n))throw new Error("Contract address and all ABIs are required.");this.contract=new Ro(t,e,this.provider);const i=await this.contract.mirrorERC721();this.mirrorContract=new Ro(i,r,this.provider),this.swapRouter=new Ro(this.swapRouterAddress,n,this.provider);const o=await this.getLiquidityPool();if(o&&"0x0000000000000000000000000000000000000000"!==o){const t=["function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast)","function token0() external view returns (address)","function token1() external view returns (address)"];this.v2PoolContract=new Ro(o,t,this.provider)}else console.warn("Liquidity pool address is zero, skipping V2 pool contract initialization.");this.eventBus.emit("contract:updated")}catch(t){throw this.wrapError(t,"Contract initialization failed")}}async getMerkleProof(t,e=null){return null}async executeContractCall(t,e=[],r={}){try{if(!this.contract)throw new Error("Contract not initialized");let n="mirror"===r.useContract?this.mirrorContract:this.contract;if("router"===r.useContract&&(n=this.swapRouter),"v2pool"===r.useContract&&(n=this.v2PoolContract),r.requiresSigner){if(!this.signer)throw new Error("No wallet connected");n=n.connect(this.signer)}if("function"!=typeof n[t])throw new Error(`Method ${t} not found on contract`);const i=await n[t](...e||[],r.txOptions||{});if(i.wait){const r=await i.wait();return this.eventBus.emit("transaction:confirmed",{hash:r.transactionHash,method:t,args:e}),r}return i}catch(e){throw this.handleContractError(e,t)}}handleContractError(t,e){let r=t.message;if("INSUFFICIENT_FUNDS"===t.code)return new Error("Insufficient funds to complete transaction");if("UNPREDICTABLE_GAS_LIMIT"===t.code){const e=t.message.match(/execution reverted: (.*?)(?:\"|$)/);return r=e?`Tx Reverted: ${e[1]}`:"Transaction would fail - check your inputs",new Error(r)}if(4001===t.code||"ACTION_REJECTED"===t.code)return new Error("Transaction rejected by user");if(t.message.includes("execution reverted")){const e=t.message.match(/execution reverted: (.*?)(?:\"|$)/);r=e?`Tx Reverted: ${e[1]}`:t.message}return console.error(`Contract error in ${e}:`,t),new Error(r)}wrapError(t,e){const r=new Error(`${e}: ${t.message}`);return r.originalError=t,r.code=t.code,r}async handleNetworkChange(){try{if(this.isInitializing)return void console.log("BlockchainService: Ignoring network change during initialization");if(this.isInternalNetworkChange)return;let t=null;try{const e=await window.ethereum.request({method:"eth_chainId"});t=parseInt(e,16)}catch(e){console.warn("Could not get current network from window.ethereum:",e);try{if(this.provider){t=(await this.provider.getNetwork()).chainId}}catch(t){console.warn("Could not get current network from provider:",t)}}this.previousNetworkId=t;const e=parseInt(this.networkConfig?.network||"1");t&&t!==e&&console.log(`User switched to network ${t}, but we need ${e}. Switching back...`),this.networkChangeState="switching",this.pendingNetworkChange={from:t,to:null,startTime:Date.now()},this.eventBus.emit("network:switching",{from:t,to:null,automatic:!0}),this.networkChangeTimeout=setTimeout(()=>{"switching"===this.networkChangeState&&this.handleNetworkChangeTimeout()},this.networkChangeTimeoutDuration),await this.initializeProvider();let r=null;try{const t=await window.ethereum.request({method:"eth_chainId"});r=parseInt(t,16)}catch(t){console.warn("Could not get new network from window.ethereum:",t);try{if(this.provider){r=(await this.provider.getNetwork()).chainId}}catch(t){console.warn("Could not get new network from provider:",t)}}const n=this.pendingNetworkChange?Date.now()-this.pendingNetworkChange.startTime:0;this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),this.networkChangeState="switched";this.pendingNetworkChange;this.pendingNetworkChange=null,this.eventBus.emit("network:switched",{from:t,to:r,success:!0,duration:n}),this.eventBus.emit("network:changed",{automatic:!0}),this.eventBus.emit("contract:updated"),setTimeout(()=>{"switched"===this.networkChangeState&&(this.networkChangeState="idle")},1e3)}catch(t){this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),this.networkChangeState="error",this.eventBus.emit("network:switch:error",{from:this.previousNetworkId,to:null,error:t.message||"Network switch failed",originalError:t}),this.eventBus.emit("blockchain:error",t),setTimeout(()=>{"error"===this.networkChangeState&&(this.networkChangeState="idle",this.pendingNetworkChange=null)},2e3)}}handleNetworkChangeTimeout(){console.warn("Network change timed out after",this.networkChangeTimeoutDuration,"ms"),this.networkChangeState="error",this.eventBus.emit("network:switch:timeout",{from:this.previousNetworkId,to:null,timeout:this.networkChangeTimeoutDuration}),this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),setTimeout(()=>{"error"===this.networkChangeState&&(this.networkChangeState="idle",this.pendingNetworkChange=null)},2e3)}cancelNetworkChange(){return"switching"===this.networkChangeState&&(this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),this.networkChangeState="idle",this.pendingNetworkChange=null,this.eventBus.emit("network:switch:cancelled",{from:this.previousNetworkId}),!0)}getNetworkChangeState(){return this.networkChangeState}async waitForCorrectNetwork(t,e=5e3){const r=Date.now();for(;Date.now()-r<e;){try{const e=await window.ethereum.request({method:"eth_chainId"});if(parseInt(e,16)===t)return void await new Promise(t=>setTimeout(t,200))}catch(t){}await new Promise(t=>setTimeout(t,100))}console.warn(`Network check timeout: Expected ${t}, will verify in initializeProvider`)}async handleAccountChange(){try{if(window.ethereum){const t=new ac(window.ethereum);this.signer=t.getSigner(),this.eventBus.emit("account:changed"),this.eventBus.emit("contract:updated")}}catch(t){this.eventBus.emit("blockchain:error",t)}}getConnectionState(){return this.connectionState}isConnected(){return"connected"===this.connectionState}async getCurrentTier(){try{const t=this.contractCache.get("getCurrentTier",[]);if(null!==t)return t;const e=await this.executeContractCall("getCurrentTier"),r=parseInt(e.toString());return this.contractCache.set("getCurrentTier",[],r),r}catch(t){throw this.wrapError(t,"Failed to get current tier")}}async getCurrentRoot(){try{return(await this.executeContractCall("getCurrentRoot")).toString()}catch(t){throw this.wrapError(t,"Failed to get current root")}}async getLiquidityPool(){try{const t=this.contractCache.get("getLiquidityPool",[]);if(null!==t)return t;const e=(await this.executeContractCall("liquidityPair")).toString();return this.contractCache.set("getLiquidityPool",[],e),e}catch(t){throw this.wrapError(t,"Failed to get liquidity pool address")}}async getTotalBondingSupply(){try{const t=this.contractCache.get("getTotalBondingSupply",[]);if(null!==t)return t;const e=await this.executeContractCall("totalBondingSupply"),r=parseFloat(this.ethers.utils.formatUnits(e,0));return this.contractCache.set("getTotalBondingSupply",[],r),r}catch(t){throw this.wrapError(t,"Failed to get total bonding supply")}}async getTotalMessages(){try{const t=this.contractCache.get("getTotalMessages",[]);if(null!==t)return t;const e=await this.executeContractCall("totalMessages"),r=parseFloat(this.ethers.utils.formatUnits(e,0));return this.contractCache.set("getTotalMessages",[],r),r}catch(t){throw this.wrapError(t,"Failed to get total messages")}}async getMessagesBatch(t,e){return(await this.executeContractCall("getMessagesBatch",[t,e])).map(t=>t.toString())}async getTokenBalance(t){if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getTokenBalance");const e=this.contractCache.get("getTokenBalance",[t]);if(null!==e)return e;const r=await this.executeContractCall("balanceOf",[t]);return this.contractCache.set("getTokenBalance",[t],r),r}async getNFTBalance(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getNFTBalance");const e=this.contractCache.get("getNFTBalance",[t]);if(null!==e)return e;const r=await this.executeContractCall("balanceOf",[t],{useContract:"mirror"}),n=parseInt(r.toString());return this.contractCache.set("getNFTBalance",[t],n),n}catch(t){throw this.wrapError(t,"Failed to get NFT balance")}}async getNFTSupply(){try{return this.executeContractCall("totalSupply",[],{useContract:"mirror"})}catch(t){throw this.wrapError(t,"Failed to get NFT supply")}}async getEthBalance(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getEthBalance");const e=this.contractCache.get("getEthBalance",[t]);if(null!==e)return e;const r=(await this.provider.getBalance(t)).toString();return this.contractCache.set("getEthBalance",[t],r),r}catch(t){throw this.wrapError(t,"Failed to get ETH balance")}}async buyBonding(t,e){try{this.eventBus.emit("transaction:pending",{type:"buy"}),console.log("Buy bonding called with params:",t);const r=await this.executeContractCall("buyBonding",[t.amount,t.maxCost,t.mintNFT,t.proof,t.message],{requiresSigner:!0,txOptions:{value:e}});return this.eventBus.emit("transaction:success",{type:"buy",receipt:r,amount:t.amount}),r}catch(t){throw this.eventBus.emit("transaction:error",{type:"buy",error:this.wrapError(t,"Buy bonding failed")}),t}}async sellBonding(t){try{this.eventBus.emit("transaction:pending",{type:"sell"});const e=await this.executeContractCall("sellBonding",[t.amount,t.minReturn,t.proof,t.message],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"sell",receipt:e,amount:t.amount}),e}catch(t){throw this.eventBus.emit("transaction:error",{type:"sell",error:this.wrapError(t,"Sell bonding failed")}),t}}async getTokenPrice(){try{if(!this.contract)throw new Error("Contract not initialized");const t=Ac("1000000"),e=await this.executeContractCall("calculateCost",[t]);if(!e||!j.isBigNumber(e))throw new Error("Invalid price format from contract");return parseFloat(this.ethers.utils.formatEther(e))}catch(t){throw this.wrapError(t,"Failed to get token price")}}async getCurrentPrice(){try{const t=this.contractCache.get("getCurrentPrice",[]);if(null!==t)return t;const e=await this.getTokenPrice();return this.contractCache.set("getCurrentPrice",[],e),e}catch(t){throw this.wrapError(t,"Failed to get current price")}}async calculateCost(t){try{return await this.executeContractCall("calculateCost",[t])}catch(t){throw this.wrapError(t,"Failed to calculate cost")}}async getExecForEth(t){try{const e=Ac(t.toString()),r=await this.executeContractCall("getExecForEth",[e]);return this.formatExec(r)}catch(t){throw this.wrapError(t,"Failed to calculate EXEC for ETH amount")}}async getEthForExec(t){try{const e=bc(t.toString(),18),r=await this.executeContractCall("getEthForExec",[e]);return this.formatEther(r)}catch(t){throw this.wrapError(t,"Failed to calculate ETH for EXEC amount")}}async getFreeSupply(){try{const t=this.contractCache.get("getFreeSupply",[]);if(null!==t)return t;const e=await this.executeContractCall("freeSupply"),r=this.formatExec(e);return this.contractCache.set("getFreeSupply",[],r),r}catch(t){throw this.wrapError(t,"Failed to get free supply")}}async getFreeMint(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getFreeMint");const e=this.contractCache.get("getFreeMint",[t]);if(null!==e)return e;const r=await this.executeContractCall("freeMint",[t]);return console.log("FREE MINT",r),this.contractCache.set("getFreeMint",[t],r),r}catch(t){throw this.wrapError(t,"Failed to get free mint")}}async getFreeSituation(t){try{const e=await this.getFreeMint(t),r=await this.getFreeSupply();return{freeMint:e,freeSupply:r}}catch(t){throw this.wrapError(t,"Failed to get free situation")}}async getUserNFTIds(t){try{return await this.executeContractCall("getOwnerTokens",[t])}catch(t){throw this.wrapError(t,"Failed to get user NFT IDs")}}async getTokenUri(t){try{return await this.executeContractCall("tokenURI",[t])}catch(t){throw this.wrapError(t,"Failed to get token URI")}}async getContractEthBalance(){try{const t=this.contractCache.get("getContractEthBalance",[]);if(null!==t)return t;const e=await this.provider.getBalance(this.contract.address),r=this.formatEther(e);return console.log("CONTRACT ETH BALANCE",r),this.contractCache.set("getContractEthBalance",[],r),r}catch(t){throw this.wrapError(t,"Failed to get contract ETH balance")}}async getUserNFTs(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getUserNFTs");return await this.executeContractCall("getOwnerTokens",[t])}catch(t){throw this.wrapError(t,"Failed to get user NFT IDs")}}async getNFTMetadata(t){try{const e=await this.executeContractCall("tokenURI",[t]);return console.log("NFT METADATA",e),e}catch(t){throw this.wrapError(t,"Failed to get NFT metadata")}}async getNFTMetadataBatch(t){try{const e=t.map(t=>this.executeContractCall("tokenURI",[t])),r=await Promise.all(e);return console.log("Batch NFT Metadata:",r),r}catch(t){throw this.wrapError(t,"Failed to get NFT metadata batch")}}async getUserNFTsWithMetadata(t,e=5){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getUserNFTsWithMetadata");const r=await this.getUserNFTs(t);if(!r||0===r.length)return[];const n=r.slice(0,e),i=await this.getNFTMetadataBatch(n),o=n.map((t,e)=>({tokenId:t,metadata:i[e]}));return console.log("NFTs with metadata:",o),o}catch(t){throw this.wrapError(t,"Failed to get user NFTs with metadata")}}async balanceMint(t){try{this.eventBus.emit("transaction:pending",{type:"mint"});const e=await this.executeContractCall("balanceMint",[t],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"mint",receipt:e,amount:t}),e}catch(t){throw this.eventBus.emit("transaction:error",{type:"mint",error:this.wrapError(t,"Failed to mint NFTs")}),t}}async transferNFT(t,e,r){try{this.eventBus.emit("transaction:pending",{type:"send"});const n=await this.executeContractCall("transferFrom",[t,e,r],{requiresSigner:!0,useContract:"mirror"});return this.eventBus.emit("transaction:success",{type:"send",receipt:n,tokenId:r,recipient:e}),n}catch(t){throw this.eventBus.emit("transaction:error",{type:"send",error:this.wrapError(t,"Failed to send NFT")}),t}}async getSkipNFT(t){try{return await this.executeContractCall("getSkipNFT",[t])}catch(t){throw this.wrapError(t,"Failed to get skipNFT status")}}async setSkipNFT(t){try{if(!this.signer)throw new Error("No wallet connected");this.eventBus.emit("transaction:pending",{type:"setSkipNFT",skipNFT:t});const e=await this.executeContractCall("setSkipNFT",[t],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"setSkipNFT",receipt:e,skipNFT:t}),e}catch(t){throw this.eventBus.emit("transaction:error",{type:"setSkipNFT",error:this.wrapError(t,"Failed to set skipNFT")}),t}}async transferTokensToSelf(t){try{if(!this.signer)throw new Error("No wallet connected");const e=await this.signer.getAddress();this.eventBus.emit("transaction:pending",{type:"reroll"});const r=await this.executeContractCall("transfer",[e,t],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"reroll",receipt:r,amount:t}),r}catch(t){throw this.eventBus.emit("transaction:error",{type:"reroll",error:this.wrapError(t,"Failed to re-roll NFTs")}),t}}parseEther(t){return Ac(t).toString()}formatEther(t){return parseFloat(Ec(t))}parseExec(t){return bc(t,18).toString()}formatExec(t){return parseFloat(yc(t,18))}async getToken0PriceInToken1(t){try{const e=new this.ethers.Contract(t,["function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast)"],this.provider,{useContract:"v2pool"}),[r,n]=await e.getReserves();return n/r}catch(t){throw this.wrapError(t,"Failed to get token0 price in terms of token1")}}async isToken0(t,e){try{const r=new this.ethers.Contract(t,["function token0() external view returns (address)","function token1() external view returns (address)"],this.provider,{useContract:"v2pool"});return(await r.token0()).toLowerCase()===e.toLowerCase()}catch(t){throw this.wrapError(t,"Failed to check if token is token0")}}async getApproval(t,e=null){try{if(!t)throw new Error("User address is required for approval check");let r;if(null===e)r=this.swapRouter.address||this.swapRouter;else if("string"==typeof e)r=e;else{if(!e||"object"!=typeof e||!e.address)throw new Error("Invalid target for approval check");r=e.address}console.log(`Checking allowance for ${t} to spend tokens at ${r}`);return(await this.executeContractCall("allowance",[t,r])).toString()}catch(t){throw this.wrapError(t,"Failed to get approval")}}async setApproval(t=null,e){try{let r;if(null===t)r=this.swapRouter.address;else if("string"==typeof t)r=t;else{if(!t||"object"!=typeof t||!t.address)throw new Error("Invalid target for approval");r=t.address}console.log(`Setting approval for ${r} to spend ${e} tokens`);const n=`tx_approve_${++this.transactionCounter}_${Date.now()}`,i={type:"approve",id:n,pending:!0};this.activeTransactions.set(n,i),console.log(`[BlockchainService] Emitting transaction:pending for approve ${n}`),this.eventBus.emit("transaction:pending",i);const o=await this.executeContractCall("approve",[r,e],{requiresSigner:!0}),s={type:"approve",id:n,receipt:o,amount:e};return this.activeTransactions.set(n,s),console.log(`[BlockchainService] Emitting transaction:success for ${n}`),this.eventBus.emit("transaction:success",s),o}catch(t){const e={type:"approve",id:`error_approve_${++this.transactionCounter}_${Date.now()}`,error:this.wrapError(t,"Failed to set approval")};throw console.log("[BlockchainService] Emitting transaction:error for approval error"),this.eventBus.emit("transaction:error",e),t}}async swapExactTokenForEthSupportingFeeOnTransferV2(t,e){try{const r=`tx_${++this.transactionCounter}_${Date.now()}`,n={type:"swap",id:r,pending:!0};this.activeTransactions.set(r,n),console.log(`[BlockchainService] Emitting transaction:pending for ${r}`),this.eventBus.emit("transaction:pending",n);const i=["0x185485bF2e26e0Da48149aee0A8032c8c2060Db2","0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"],o=t,s=Math.floor(Date.now()/1e3)+1200,a=(await this.executeContractCall("getAmountsOut",[e.amount,i],{useContract:"router"}))[1],l=BigInt(a)*BigInt(940)/BigInt(1e3);console.log("Sell transaction parameters:",{amountIn:e.amount.toString(),amountOutMin:l.toString(),path:i,txId:r});const c=await this.executeContractCall("swapExactTokensForETHSupportingFeeOnTransferTokens",[e.amount,l,i,o,s],{useContract:"router",requiresSigner:!0}),u={type:"swap",id:r,receipt:c,amount:e.amount};return this.activeTransactions.set(r,u),console.log(`[BlockchainService] Emitting transaction:success for ${r}`),this.eventBus.emit("transaction:success",u),setTimeout(()=>{this.activeTransactions.delete(r)},1e3),c}catch(t){const e={type:"swap",id:`error_${++this.transactionCounter}_${Date.now()}`,error:this.wrapError(t,"Failed to swap tokens for ETH")};throw console.log("[BlockchainService] Emitting transaction:error for error transaction"),this.eventBus.emit("transaction:error",e),t}}async swapExactEthForTokenSupportingFeeOnTransfer(t,e,r){try{const n=`tx_${++this.transactionCounter}_${Date.now()}`,i={type:"swap",id:n,pending:!0};this.activeTransactions.set(n,i),console.log(`[BlockchainService] Emitting transaction:pending for ${n}`),this.eventBus.emit("transaction:pending",i);const o=["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","0x185485bF2e26e0Da48149aee0A8032c8c2060Db2"],s=t,a=Math.floor(Date.now()/1e3)+1200,l=BigInt(e.amount)*BigInt(940)/BigInt(1e3);console.log("Buy transaction parameters:",{amountOutMin:l.toString(),ethValue:r.toString(),path:o,txId:n});const c=await this.executeContractCall("swapExactETHForTokensSupportingFeeOnTransferTokens",[l,o,s,a],{useContract:"router",requiresSigner:!0,txOptions:{value:r}}),u={type:"swap",id:n,receipt:c,amount:e.amount};return this.activeTransactions.set(n,u),console.log(`[BlockchainService] Emitting transaction:success for ${n}`),this.eventBus.emit("transaction:success",u),setTimeout(()=>{this.activeTransactions.delete(n)},1e3),c}catch(t){const e={type:"swap",id:`error_${++this.transactionCounter}_${Date.now()}`,error:this.wrapError(t,"Failed to swap ETH for tokens")};throw console.log("[BlockchainService] Emitting transaction:error for error transaction"),this.eventBus.emit("transaction:error",e),t}}async getCurrentBlockInfo(){try{const t=await this.provider.getBlockNumber(),e=await this.provider.getBlock(t);return{number:t,timestamp:e.timestamp,hash:e.hash,date:new Date(1e3*e.timestamp)}}catch(t){throw this.wrapError(t,"Failed to get current block info")}}},exports.BondingCurve=Wc,exports.ContractCache=class{constructor(t){if(!t)throw new Error("ContractCache requires an eventBus instance.");this.eventBus=t,this.cache=new Map,this.stats={hits:0,misses:0,invalidations:0,sets:0},this.defaultTTLs={price:5e3,balance:3e3,contractData:1e4,supply:1e4,metadata:6e4,tier:3e4,default:5e3},this.noCacheMethods=new Set(["executeContractCall","swapExactETHForTokens","swapExactTokensForETH","buy","sell","mint"]),this.setupEventListeners(),this.debug=!1}setupEventListeners(){this.eventBus.on("transaction:confirmed",()=>{this.invalidateByPattern("balance","price","contractData"),this.debug&&console.log("[ContractCache] Invalidated cache due to transaction confirmation")}),this.eventBus.on("account:changed",()=>{this.invalidateByPattern("balance"),this.debug&&console.log("[ContractCache] Invalidated cache due to account change")}),this.eventBus.on("network:changed",()=>{this.clear(),this.debug&&console.log("[ContractCache] Cleared cache due to network change")}),this.eventBus.on("contractData:updated",()=>{this.invalidateByPattern("contractData","price","supply"),this.debug&&console.log("[ContractCache] Invalidated cache due to contract data update")})}generateKey(t,e=[]){return`${t}:${e.length>0?JSON.stringify(e.map(t=>t&&"object"==typeof t&&t.toString?t.toString():t)):""}`}get(t,e=[]){if(this.noCacheMethods.has(t))return null;const r=this.generateKey(t,e),n=this.cache.get(r);return n?Date.now()>n.expiresAt?(this.cache.delete(r),this.stats.misses++,null):(n.accessCount++,this.stats.hits++,this.debug&&console.log(`[ContractCache] Cache HIT for ${t}`,e),n.value):(this.stats.misses++,null)}set(t,e=[],r,n=null){if(this.noCacheMethods.has(t))return;null===n&&(n=this.getTTLForMethod(t));const i=this.generateKey(t,e),o=Date.now()+n;this.cache.set(i,{value:r,expiresAt:o,accessCount:0,method:t,args:e,cachedAt:Date.now()}),this.stats.sets++,this.debug&&console.log(`[ContractCache] Cached ${t}`,e,`TTL: ${n}ms`)}getTTLForMethod(t){const e=t.toLowerCase();return e.includes("price")||e.includes("cost")?this.defaultTTLs.price:e.includes("balance")?this.defaultTTLs.balance:e.includes("supply")||e.includes("total")?this.defaultTTLs.supply:e.includes("metadata")||e.includes("uri")?this.defaultTTLs.metadata:e.includes("tier")||e.includes("merkle")||e.includes("proof")?this.defaultTTLs.tier:e.includes("contract")||e.includes("pool")||e.includes("liquidity")?this.defaultTTLs.contractData:this.defaultTTLs.default}invalidateByPattern(...t){let e=0;for(const[r,n]of this.cache.entries()){const i=n.method.toLowerCase();t.some(t=>i.includes(t.toLowerCase()))&&(this.cache.delete(r),e++)}this.stats.invalidations+=e,this.debug&&e>0&&console.log(`[ContractCache] Invalidated ${e} entries matching patterns:`,t)}invalidate(t,e=[]){const r=this.generateKey(t,e);this.cache.delete(r)&&(this.stats.invalidations++,this.debug&&console.log(`[ContractCache] Invalidated ${t}`,e))}clear(){const t=this.cache.size;this.cache.clear(),this.stats.invalidations+=t,this.debug&&console.log("[ContractCache] Cleared all cache")}getStats(){const t=this.stats.hits+this.stats.misses,e=t>0?(this.stats.hits/t*100).toFixed(2):0;return{...this.stats,hitRate:`${e}%`,cacheSize:this.cache.size,totalRequests:t}}async warmCache(t,e=[]){this.debug&&console.log("[ContractCache] Warming cache for methods:",e);const r=e.map(async e=>{try{return await t(e)}catch(t){return console.warn(`[ContractCache] Failed to warm cache for ${e}:`,t),null}});await Promise.all(r)}setDebug(t){this.debug=t}cleanup(){const t=Date.now();let e=0;for(const[r,n]of this.cache.entries())t>n.expiresAt&&(this.cache.delete(r),e++);return this.debug&&e>0&&console.log(`[ContractCache] Cleaned up ${e} expired entries`),e}},exports.FloatingWalletButton=Fc,exports.IpfsImage=Dc,exports.IpfsService=Bc,exports.MessagePopup=Lc,exports.PriceDisplay=zc,exports.PriceService=class{constructor(t,e,r=6e4){if(!t||!e)throw new Error("PriceService requires blockchainService and eventBus instances.");this._blockchainService=t,this.eventBus=e,this._cache=new Map,this._contractUpdateInterval=null,this._updateIntervalTime=r,this._cacheExpirationTime=3e5,this._updateDebounceTimeout=null,this._updateDebounceDelay=2e3,this._lastEmittedData=null,this.getCurrentPrice=this.getCurrentPrice.bind(this),this.startContractUpdates=this.startContractUpdates.bind(this),this.stopContractUpdates=this.stopContractUpdates.bind(this),this.debouncedUpdateContractData=this.debouncedUpdateContractData.bind(this)}initialize(t=null){console.log("PriceService: Fetching initial data immediately",t?`for address: ${t}`:"(no address yet)"),this.updateContractData(t).catch(t=>{console.error("Failed to fetch initial contract data:",t)}),this.startContractUpdates(t)}async getCurrentPrice(){try{if(!this._blockchainService)throw new Error("PriceService not initialized");const t=this._getCacheValue("currentPrice");if(null!==t)return t;const e=await this._blockchainService.getTokenPrice();if("number"!=typeof e||isNaN(e)||e<=0)throw console.error("Invalid price value:",e),new Error("Invalid price value received");return this._setCacheValue("currentPrice",e),this.eventBus.emit("price:updated",{price:e}),e}catch(t){throw console.error("Error fetching price:",t),t}}async calculateCost(t){try{if(!this._blockchainService)throw new Error("PriceService not initialized");return await this._blockchainService.calculateCost(t)}catch(t){throw console.error("Error calculating cost:",t),t}}async updateContractData(t=null){try{const e=[this._blockchainService.getCurrentPrice(),this._blockchainService.getTotalBondingSupply(),this._blockchainService.getTotalMessages(),this._blockchainService.getNFTSupply(),this._blockchainService.getFreeSupply(),this._blockchainService.getContractEthBalance(),this._blockchainService.getCurrentTier(),this._blockchainService.getLiquidityPool()];t&&e.push(this._blockchainService.getEthBalance(t),this._blockchainService.getTokenBalance(t),this._blockchainService.getNFTBalance(t),this._blockchainService.getFreeMint(t));const[r,n,i,o,s,a,l,c,u,h,d,f]=await Promise.all(e),p={totalBondingSupply:n,currentPrice:r,totalMessages:i,totalNFTs:o,freeSupply:s,freeMint:void 0!==f&&f,contractEthBalance:a,currentTier:l,liquidityPool:c},m={eth:u||"0",exec:h||"0",nfts:d||0},g=!this._lastEmittedData||JSON.stringify(this._lastEmittedData.contractData)!==JSON.stringify(p),v=!this._lastEmittedData||JSON.stringify(this._lastEmittedData.balances)!==JSON.stringify(m);g&&this.eventBus.emit("contractData:updated",p),v&&this.eventBus.emit("balances:updated",m),this._lastEmittedData&&this._lastEmittedData.contractData.currentPrice===r||this.eventBus.emit("price:updated",{price:r}),this._lastEmittedData={contractData:p,balances:m}}catch(t){console.error("Error updating contract data:",t),this.eventBus.emit("price:error",{error:t.message})}}startContractUpdates(){this.stopContractUpdates(),this.debouncedUpdateContractData(),this._contractUpdateInterval=setInterval(()=>{this.debouncedUpdateContractData()},this._updateIntervalTime)}stopContractUpdates(){this._contractUpdateInterval&&(clearInterval(this._contractUpdateInterval),this._contractUpdateInterval=null)}_setCacheValue(t,e){this._cache.set(t,{value:e,timestamp:Date.now()})}debouncedUpdateContractData(t=null){this._updateDebounceTimeout&&clearTimeout(this._updateDebounceTimeout),this._updateDebounceTimeout=setTimeout(()=>{this.updateContractData(t).catch(t=>{console.error("Failed to update contract data:",t)})},this._updateDebounceDelay)}},exports.SwapButton=jc,exports.SwapInputs=Hc,exports.SwapInterface=Kc,exports.TransactionOptions=Uc,exports.WalletButton=class extends Fc{constructor(t){super(t),this.modalRoot=null}async showWalletModal(){const t=this.walletService?.providerMap||{rabby:()=>window.ethereum?.isRabby?window.ethereum:null,rainbow:()=>window.ethereum?.isRainbow?window.ethereum:null,phantom:()=>window.phantom?.ethereum||null,metamask:()=>window.ethereum||null},e=this.walletService?.walletIcons||{rabby:"/public/wallets/rabby.webp",rainbow:"/public/wallets/rainbow.webp",phantom:"/public/wallets/phantom.webp",metamask:"/public/wallets/MetaMask.webp"};this.walletModal||(this.walletModal=new Oc({providerMap:t,walletIcons:e,onWalletSelected:async t=>{await this.handleWalletSelection(t)}}),this.modalRoot||(this.modalRoot=document.createElement("div"),document.body.appendChild(this.modalRoot)),this.walletModal.mount(this.modalRoot)),this.walletModal.show()}onUnmount(){this.modalRoot?.parentNode&&(this.modalRoot.parentNode.removeChild(this.modalRoot),this.modalRoot=null),super.onUnmount()}render(){if(this.state.loading)return'\n <div class="floating-wallet-button loading">\n <div class="wallet-spinner"></div>\n </div>\n ';const{walletConnected:t,address:e,balance:r,menuOpen:n}=this.state;if(!t)return'\n <div class="floating-wallet-button disconnected" data-ref="wallet-button">\n <button class="wallet-btn" data-ref="connect-btn">\n <span class="wallet-mark"></span>\n <span class="wallet-text">Connect Wallet</span>\n </button>\n </div>\n ';const i=`${e.slice(0,6)}...${e.slice(-4)}`,o=["floating-wallet-button","connected"];n&&o.push("menu-open");const s=`\n <div class="${o.join(" ")}" data-ref="wallet-button">\n <button class="wallet-btn" data-ref="wallet-btn" title="${this.escapeHtml(e)}\nBalance: ${r} ETH">\n <span class="wallet-mark wallet-mark--connected"></span>\n <span class="wallet-address">${this.escapeHtml(i)}</span>\n <span class="wallet-disconnect" data-ref="inline-disconnect" title="Disconnect">⏏︎</span>\n </button>\n ${this.renderWalletPanel(e,r,n)}\n </div>\n `;return this.minifyHtml(s)}events(){return{...super.events?.()||{},'click [data-ref="inline-disconnect"]':t=>this.handleInlineDisconnect(t),'click [data-ref="wallet-btn"]':t=>this.handleWalletToggle(t),'click [data-ref="connect-btn"]':t=>this.handleWalletToggle(t)}}renderWalletPanel(t,e,r){const n=`${t.slice(0,6)}...${t.slice(-4)}`,i=`\n <div class="wallet-info-panel" data-ref="wallet-panel" aria-hidden="${r?"false":"true"}">\n <div class="wallet-info-row">\n <span class="wallet-info-label">Address</span>\n <span class="wallet-info-value">${this.escapeHtml(n)}</span>\n </div>\n <div class="wallet-info-row">\n <span class="wallet-info-label">ETH Balance</span>\n <span class="wallet-info-value">${e} ETH</span>\n </div>\n </div>\n `;return this.minifyHtml(i)}onStateUpdate(t,e){"function"==typeof super.onStateUpdate&&super.onStateUpdate(t,e),t&&t.menuOpen===e.menuOpen||(e.menuOpen?this.attachOutsideClickListener():this.detachOutsideClickListener())}attachOutsideClickListener(){this.outsideClickHandler||this.outsideClickTimeout||(this.outsideClickHandler=t=>{if(!this.element)return;const e="function"==typeof t.composedPath?t.composedPath():[];e.length&&e.includes(this.element)||t.target&&this.element.contains(t.target)||this.setState({menuOpen:!1})},this.outsideClickTimeout=window.setTimeout(()=>{document.addEventListener("click",this.outsideClickHandler),this.outsideClickTimeout=null},0))}detachOutsideClickListener(){this.outsideClickTimeout&&(window.clearTimeout(this.outsideClickTimeout),this.outsideClickTimeout=null),this.outsideClickHandler&&(document.removeEventListener("click",this.outsideClickHandler),this.outsideClickHandler=null)}setupDOMEventListeners(){}handleWalletToggle(t){this.handleButtonClick(t)}handleInlineDisconnect(t){t&&(t.preventDefault(),t.stopPropagation()),super.handleDisconnect(t)}minifyHtml(t){return"string"==typeof t?t.replace(/>\s+</g,"><").trim():t}},exports.WalletModal=Rc,exports.WalletService=class{constructor(t){if(!t)throw new Error("WalletService requires an eventBus instance.");this.eventBus=t,this.provider=null,this.signer=null,this.connectedAddress=null,this.selectedWallet=null,this.connected=!1,this.ethers=xc,this.isInitialized=!1,this.providerMap={rabby:()=>window.ethereum&&window.ethereum.isRabby?window.ethereum:null,rainbow:()=>window.ethereum&&window.ethereum.isRainbow?window.ethereum:window.rainbow||null,phantom:()=>window.phantom&&window.phantom.ethereum?window.phantom.ethereum:null,metamask:()=>(console.log("Checking for MetaMask with direct window.ethereum access"),window.ethereum||null)},this.walletIcons={rabby:"/public/wallets/rabby.webp",rainbow:"/public/wallets/rainbow.webp",phantom:"/public/wallets/phantom.webp",metamask:"/public/wallets/MetaMask.webp"}}async initialize(){try{return console.log("Initializing WalletService..."),void 0!==window.ethereum?(console.log("Found Ethereum provider"),this.eventBus.emit("wallet:detected"),this.isMetaMask=window.ethereum.isMetaMask,this.setupEventListeners()):(console.log("No Ethereum provider found"),this.eventBus.emit("wallet:notdetected")),this.isInitialized=!0,!0}catch(t){throw console.error("Error initializing WalletService:",t),t}}formatError(t,e=""){if("string"==typeof t)return new Error(`${e}: ${t}`);if(t&&t.message){const r=this.getUserFriendlyErrorMessage(t,e),n=new Error(r);return n.code=t.code,n.originalError=t,n}return new Error(`${e}: Unknown error`)}getUserFriendlyErrorMessage(t,e){const r=t.message||"Unknown error";return 4001===t.code?"Connection request rejected by user":4902===t.code?"Network needs to be added to your wallet":r.includes("redefine property")||r.includes("which has only a getter")?"Wallet conflict detected. Please disable all wallet extensions except the one you want to use, then refresh.":r.includes("user rejected")?"Connection rejected by user":r.includes("already pending")?"A wallet request is already pending, please check your wallet":e?`${e}: ${r}`:r}getAvailableWallets(){const t={};console.log("Checking for available wallets..."),window.ethereum?console.log("window.ethereum is available"):console.log("window.ethereum is not available");for(const[e,r]of Object.entries(this.providerMap))try{console.log(`Checking for ${e} wallet...`);const n=r();n?(console.log(`Found ${e} wallet`),t[e]={name:e,icon:this.walletIcons[e],provider:n}):console.log(`${e} wallet not detected`)}catch(t){console.warn(`Error detecting ${e} wallet:`,t)}return 0===Object.keys(t).length&&window.ethereum?(console.log("No specific wallets detected, but window.ethereum exists. Adding MetaMask as fallback."),t.metamask={name:"metamask",icon:this.walletIcons.metamask,provider:window.ethereum}):!t.metamask&&window.ethereum&&(console.log("window.ethereum exists. Adding MetaMask option regardless of detection."),t.metamask={name:"metamask",icon:this.walletIcons.metamask,provider:window.ethereum}),console.log("Available wallets:",Object.keys(t)),t}async selectWallet(t){try{if(this.cleanup(),!this.providerMap[t])throw new Error(`Unsupported wallet: ${t}`);const e=this.providerMap[t]();if(!e)throw new Error(`${t} not detected. Please install it first.`);return this.selectedWallet=t,this.provider=e,this.setupEventListeners(),this.eventBus.emit("wallet:selected",{type:t,provider:e}),t}catch(t){const e=this.formatError(t,"Wallet selection failed");throw this.eventBus.emit("wallet:error",e),e}}setupEventListeners(){if(this.provider){try{this.provider.removeListener("chainChanged",this.handleNetworkChange),this.provider.removeListener("accountsChanged",this.handleAccountChange)}catch(t){}this.provider.on("chainChanged",()=>this.handleNetworkChange()),this.provider.on("accountsChanged",t=>this.handleAccountChange(t))}}cleanup(){if(this.provider)try{this.provider.removeListener("chainChanged",this.handleNetworkChange),this.provider.removeListener("accountsChanged",this.handleAccountChange)}catch(t){}this.provider=null,this.signer=null,this.connectedAddress=null,this.connected=!1,this.ethersProvider=null}async connect(){try{if(!this.selectedWallet||!this.provider)throw new Error("Please select a wallet first");let t;this.eventBus.emit("wallet:connecting"),console.log(`Attempting to connect to ${this.selectedWallet}...`);try{if(await new Promise(t=>setTimeout(t,500)),"phantom"===this.selectedWallet&&window.phantom&&window.phantom.ethereum)console.log("Using phantom-specific connection method"),t=await window.phantom.ethereum.request({method:"eth_requestAccounts"});else{console.log(`Using standard connection method for ${this.selectedWallet}`);try{const t=await this.provider.request({method:"eth_accounts"});console.log("Existing accounts:",t),t&&0!==t.length||console.log("No existing accounts found, requesting user approval...")}catch(t){console.warn("Error checking existing accounts:",t)}t=await this.provider.request({method:"eth_requestAccounts",params:[]})}}catch(t){throw console.error("Error requesting accounts:",t),t&&4001===t.code?this.formatError(t,"Wallet connection rejected"):t&&t.message&&t.message.includes("wallet must has at least one account")?new Error("Your wallet has no accounts. Please create at least one account in your wallet and try again."):t}if(console.log("Accounts received:",t),!t||!t[0])throw new Error("No accounts found. Please unlock your wallet and make sure you have at least one account set up.");return this.connectedAddress=t[0],this.connected=!0,console.log(`Successfully connected to account: ${this.connectedAddress}`),this.selectedWallet&&localStorage.setItem("ms2fun_lastWallet",this.selectedWallet),this.ethersProvider=new ac(this.provider,"any"),this.signer=this.ethersProvider.getSigner(),this.eventBus.emit("wallet:connected",{address:this.connectedAddress,walletType:this.selectedWallet,provider:this.provider,ethersProvider:this.ethersProvider,signer:this.signer}),this.connectedAddress}catch(t){if(console.error("Wallet connection error:",t),t.message&&(t.message.includes("at least one account")||t.message.includes("wallet must has")||t.message.includes("no accounts"))){const e=new Error("Your wallet has no accounts. Please create at least one account in your wallet and try again.");throw e.code=t.code,e.originalError=t,this.eventBus.emit("wallet:error",e),e}const e=this.formatError(t,"Wallet connection failed");throw this.eventBus.emit("wallet:error",e),e}}async switchNetwork(t){try{if(!this.provider)throw new Error("No wallet connected");const e=`0x${Number(t).toString(16)}`;this.eventBus.emit("network:switching",{to:t,automatic:!1});try{return await this.provider.request({method:"wallet_switchEthereumChain",params:[{chainId:e}]}),this.ethersProvider=new ac(this.provider,"any"),this.signer=this.ethersProvider.getSigner(),this.eventBus.emit("network:switched",{to:t,success:!0}),!0}catch(t){throw 4902===t.code?new Error("Network needs to be added first"):t}}catch(e){const r=this.formatError(e,"Network switch failed");throw this.eventBus.emit("network:switch:error",{from:null,to:t,error:r.message,originalError:e}),this.eventBus.emit("network:switched",{to:t,success:!1,error:r.message}),r}}getAddress(){return this.connectedAddress}isConnected(){return this.connected&&!!this.connectedAddress}getProviderAndSigner(){return{provider:this.ethersProvider,signer:this.signer}}handleNetworkChange(){this.provider&&(this.ethersProvider=new ac(this.provider,"any"),this.signer=this.ethersProvider.getSigner())}handleAccountChange(t){t&&Array.isArray(t)&&(0===t.length?(this.connected=!1,this.connectedAddress=null,this.eventBus.emit("wallet:disconnected")):t[0]!==this.connectedAddress&&(this.connectedAddress=t[0],this.eventBus.emit("wallet:changed",{address:t[0]})))}async disconnect(){this.cleanup(),this.eventBus.emit("wallet:disconnected")}};
10
10
  //# sourceMappingURL=micro-web3.cjs.js.map