>>=v,p-=v),p<15&&(d+=S[r++]<>>=v=w>>>24,p-=v,!(16&(v=w>>>16&255))){if(0==(64&v)){w=g[(65535&w)+(d&(1<c){e.msg="invalid distance too far back",n.mode=30;break e}if(d>>>=v,p-=v,x>(v=i-s)){if((v=x-v)>l&&n.sane){e.msg="invalid distance too far back",n.mode=30;break e}if(E=0,k=f,0===h){if(E+=u-v,v<_){_-=v;do{O[i++]=f[E++]}while(--v);E=i-x,k=O}}else if(h2;)O[i++]=k[E++],O[i++]=k[E++],O[i++]=k[E++],_-=3;_&&(O[i++]=k[E++],_>1&&(O[i++]=k[E++]))}else{E=i-x;do{O[i++]=O[E++],O[i++]=O[E++],O[i++]=O[E++],_-=3}while(_>2);_&&(O[i++]=O[E++],_>1&&(O[i++]=O[E++]))}break}}break}}while(r>3,d&=(1<<(p-=_<<3))-1,e.next_in=r,e.next_out=i,e.avail_in=r=1&&0===T[_];_--);if(x>_&&(x=_),0===_)return o[i++]=20971520,o[i++]=20971520,a.bits=1,0;for(v=1;v<_&&0===T[v];v++);for(x0&&(0===e||1!==_))return-1;for(L[1]=0,m=1;m852||2===e&&O>592)return 1;for(;;){p=m-k,s[w]d?(y=I[P+s[w]],g=C[R+s[w]]):(y=96,g=0),c=1<>k)+(u-=c)]=p<<24|y<<16|g|0}while(0!==u);for(c=1<>=1;if(0!==c?(A&=c-1,A+=c):A=0,w++,0==--T[m]){if(m===_)break;m=t[n+s[w]]}if(m>x&&(A&h)!==l){for(0===k&&(k=x),f+=v,S=1<<(E=m-k);E+k<_&&!((S-=T[E+k])<=0);)E++,S<<=1;if(O+=1<852||2===e&&O>592)return 1;o[l=A&h]=x<<24|E<<16|f-i|0}}return 0!==A&&(o[f+A]=m-k<<24|64<<16|0),a.bits=x,0}var Fh=-2,Dh=12,Hh=30;function qh(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function Wh(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new _l(320),this.work=new _l(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function Kh(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,function(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new xl(852),t.distcode=t.distdyn=new xl(592),t.sane=1,t.back=-1,0):Fh}(e)):Fh}function Gh(e,t){var n,r;return e?(r=new Wh,e.state=r,r.window=null,n=function(e,t){var n,r;return e&&e.state?(r=e.state,t<0?(n=0,t=-t):(n=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?Fh:(null!==r.window&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,Kh(e))):Fh}(e,t),0!==n&&(e.state=null),n):Fh}var Zh,Vh,Yh=!0;function Xh(e){if(Yh){var t;for(Zh=new xl(512),Vh=new xl(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(zh(1,e.lens,0,288,Zh,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;zh(2,e.lens,0,32,Vh,0,e.work,{bits:5}),Yh=!1}e.lencode=Zh,e.lenbits=9,e.distcode=Vh,e.distbits=5}function Jh(e,t){var n,r,o,i,s,a,c,u,l,h,f,d,p,y,g,b,m,w,v,_,x,E,k,S,O=0,A=new vl(4),C=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return Fh;(n=e.state).mode===Dh&&(n.mode=13),s=e.next_out,o=e.output,c=e.avail_out,i=e.next_in,r=e.input,a=e.avail_in,u=n.hold,l=n.bits,h=a,f=c,E=0;e:for(;;)switch(n.mode){case 1:if(0===n.wrap){n.mode=13;break}for(;l<16;){if(0===a)break e;a--,u+=r[i++]<>>8&255,n.check=hh(n.check,A,2,0),u=0,l=0,n.mode=2;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg="incorrect header check",n.mode=Hh;break}if(8!=(15&u)){e.msg="unknown compression method",n.mode=Hh;break}if(l-=4,x=8+(15&(u>>>=4)),0===n.wbits)n.wbits=x;else if(x>n.wbits){e.msg="invalid window size",n.mode=Hh;break}n.dmax=1<>8&1),512&n.flags&&(A[0]=255&u,A[1]=u>>>8&255,n.check=hh(n.check,A,2,0)),u=0,l=0,n.mode=3;case 3:for(;l<32;){if(0===a)break e;a--,u+=r[i++]<>>8&255,A[2]=u>>>16&255,A[3]=u>>>24&255,n.check=hh(n.check,A,4,0)),u=0,l=0,n.mode=4;case 4:for(;l<16;){if(0===a)break e;a--,u+=r[i++]<>8),512&n.flags&&(A[0]=255&u,A[1]=u>>>8&255,n.check=hh(n.check,A,2,0)),u=0,l=0,n.mode=5;case 5:if(1024&n.flags){for(;l<16;){if(0===a)break e;a--,u+=r[i++]<>>8&255,n.check=hh(n.check,A,2,0)),u=0,l=0}else n.head&&(n.head.extra=null);n.mode=6;case 6:if(1024&n.flags&&((d=n.length)>a&&(d=a),d&&(n.head&&(x=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),wl(n.head.extra,r,i,d,x)),512&n.flags&&(n.check=hh(n.check,r,d,i)),a-=d,i+=d,n.length-=d),n.length))break e;n.length=0,n.mode=7;case 7:if(2048&n.flags){if(0===a)break e;d=0;do{x=r[i+d++],n.head&&x&&n.length<65536&&(n.head.name+=String.fromCharCode(x))}while(x&&d>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=Dh;break;case 10:for(;l<32;){if(0===a)break e;a--,u+=r[i++]<>>=7&l,l-=7&l,n.mode=27;break}for(;l<3;){if(0===a)break e;a--,u+=r[i++]<>>=1)){case 0:n.mode=14;break;case 1:if(Xh(n),n.mode=20,6===t){u>>>=2,l-=2;break e}break;case 2:n.mode=17;break;case 3:e.msg="invalid block type",n.mode=Hh}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===a)break e;a--,u+=r[i++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=Hh;break}if(n.length=65535&u,u=0,l=0,n.mode=15,6===t)break e;case 15:n.mode=16;case 16:if(d=n.length){if(d>a&&(d=a),d>c&&(d=c),0===d)break e;wl(o,r,i,d,s),a-=d,i+=d,c-=d,s+=d,n.length-=d;break}n.mode=Dh;break;case 17:for(;l<14;){if(0===a)break e;a--,u+=r[i++]<>>=5,l-=5,n.ndist=1+(31&u),u>>>=5,l-=5,n.ncode=4+(15&u),u>>>=4,l-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=Hh;break}n.have=0,n.mode=18;case 18:for(;n.have>>=3,l-=3}for(;n.have<19;)n.lens[C[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,k={bits:n.lenbits},E=zh(0,n.lens,0,19,n.lencode,0,n.work,k),n.lenbits=k.bits,E){e.msg="invalid code lengths set",n.mode=Hh;break}n.have=0,n.mode=19;case 19:for(;n.have>>16&255,m=65535&O,!((g=O>>>24)<=l);){if(0===a)break e;a--,u+=r[i++]<>>=g,l-=g,n.lens[n.have++]=m;else{if(16===m){for(S=g+2;l>>=g,l-=g,0===n.have){e.msg="invalid bit length repeat",n.mode=Hh;break}x=n.lens[n.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===m){for(S=g+3;l>>=g)),u>>>=3,l-=3}else{for(S=g+7;l>>=g)),u>>>=7,l-=7}if(n.have+d>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=Hh;break}for(;d--;)n.lens[n.have++]=x}}if(n.mode===Hh)break;if(0===n.lens[256]){e.msg="invalid code -- missing end-of-block",n.mode=Hh;break}if(n.lenbits=9,k={bits:n.lenbits},E=zh(1,n.lens,0,n.nlen,n.lencode,0,n.work,k),n.lenbits=k.bits,E){e.msg="invalid literal/lengths set",n.mode=Hh;break}if(n.distbits=6,n.distcode=n.distdyn,k={bits:n.distbits},E=zh(2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,k),n.distbits=k.bits,E){e.msg="invalid distances set",n.mode=Hh;break}if(n.mode=20,6===t)break e;case 20:n.mode=21;case 21:if(a>=6&&c>=258){e.next_out=s,e.avail_out=c,e.next_in=i,e.avail_in=a,n.hold=u,n.bits=l,jh(e,f),s=e.next_out,o=e.output,c=e.avail_out,i=e.next_in,r=e.input,a=e.avail_in,u=n.hold,l=n.bits,n.mode===Dh&&(n.back=-1);break}for(n.back=0;b=(O=n.lencode[u&(1<>>16&255,m=65535&O,!((g=O>>>24)<=l);){if(0===a)break e;a--,u+=r[i++]<>w)])>>>16&255,m=65535&O,!(w+(g=O>>>24)<=l);){if(0===a)break e;a--,u+=r[i++]<>>=w,l-=w,n.back+=w}if(u>>>=g,l-=g,n.back+=g,n.length=m,0===b){n.mode=26;break}if(32&b){n.back=-1,n.mode=Dh;break}if(64&b){e.msg="invalid literal/length code",n.mode=Hh;break}n.extra=15&b,n.mode=22;case 22:if(n.extra){for(S=n.extra;l>>=n.extra,l-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=23;case 23:for(;b=(O=n.distcode[u&(1<>>16&255,m=65535&O,!((g=O>>>24)<=l);){if(0===a)break e;a--,u+=r[i++]<>w)])>>>16&255,m=65535&O,!(w+(g=O>>>24)<=l);){if(0===a)break e;a--,u+=r[i++]<>>=w,l-=w,n.back+=w}if(u>>>=g,l-=g,n.back+=g,64&b){e.msg="invalid distance code",n.mode=Hh;break}n.offset=m,n.extra=15&b,n.mode=24;case 24:if(n.extra){for(S=n.extra;l>>=n.extra,l-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=Hh;break}n.mode=25;case 25:if(0===c)break e;if(d=f-c,n.offset>d){if((d=n.offset-d)>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=Hh;break}d>n.wnext?(d-=n.wnext,p=n.wsize-d):p=n.wnext-d,d>n.length&&(d=n.length),y=n.window}else y=o,p=s-n.offset,d=n.length;d>c&&(d=c),c-=d,n.length-=d;do{o[s++]=y[p++]}while(--d);0===n.length&&(n.mode=21);break;case 26:if(0===c)break e;o[s++]=n.length,c--,n.mode=21;break;case 27:if(n.wrap){for(;l<32;){if(0===a)break e;a--,u|=r[i++]<=i.wsize?(wl(i.window,t,n-i.wsize,i.wsize,0),i.wnext=0,i.whave=i.wsize):((o=i.wsize-i.wnext)>r&&(o=r),wl(i.window,t,n-r,o,i.wnext),(r-=o)?(wl(i.window,t,n-r,r,0),i.wnext=r,i.whave=i.wsize):(i.wnext+=o,i.wnext===i.wsize&&(i.wnext=0),i.whave7)throw new TypeError("Bad argument");this.mode=e,this.init_done=!1,this.write_in_progress=!1,this.pending_close=!1,this.windowBits=0,this.level=0,this.memLevel=0,this.strategy=0,this.dictionary=null}function tf(e,t){for(var n=0;n15&&(s=2,r-=16),o<1||o>9||8!==n||r<8||r>15||t<0||t>9||i<0||i>4)return wh(e,dh);8===r&&(r=9);var a=new Lh;return e.state=a,a.strm=e,a.wrap=s,a.gzhead=null,a.w_bits=r,a.w_size=1<rf.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+e.chunkSize);if(e.windowBits&&(e.windowBitsrf.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+e.windowBits);if(e.level&&(e.levelrf.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+e.level);if(e.memLevel&&(e.memLevelrf.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+e.memLevel);if(e.strategy&&e.strategy!=rf.Z_FILTERED&&e.strategy!=rf.Z_HUFFMAN_ONLY&&e.strategy!=rf.Z_RLE&&e.strategy!=rf.Z_FIXED&&e.strategy!=rf.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+e.strategy);if(e.dictionary&&!us.isBuffer(e.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._binding=new rf.Zlib(t);var n=this;this._hadError=!1,this._binding.onerror=function(e,t){n._binding=null,n._hadError=!0;var r=new Error(e);r.errno=t,r.code=rf.codes[t],n.emit("error",r)};var r=rf.Z_DEFAULT_COMPRESSION;"number"==typeof e.level&&(r=e.level);var o=rf.Z_DEFAULT_STRATEGY;"number"==typeof e.strategy&&(o=e.strategy),this._binding.init(e.windowBits||rf.Z_DEFAULT_WINDOWBITS,r,e.memLevel||rf.Z_DEFAULT_MEMLEVEL,o,e.dictionary),this._buffer=new us(this._chunkSize),this._offset=0,this._closed=!1,this._level=r,this._strategy=o,this.once("end",this.close)}Object.keys(of).forEach((function(e){of[of[e]]=e})),Wa(Bf,tu),Bf.prototype.params=function(e,t,n){if(erf.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+e);if(t!=rf.Z_FILTERED&&t!=rf.Z_HUFFMAN_ONLY&&t!=rf.Z_RLE&&t!=rf.Z_FIXED&&t!=rf.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+t);if(this._level!==e||this._strategy!==t){var r=this;this.flush(rf.Z_SYNC_FLUSH,(function(){r._binding.params(e,t),r._hadError||(r._level=e,r._strategy=t,n&&n())}))}else wa.nextTick(n)},Bf.prototype.reset=function(){return this._binding.reset()},Bf.prototype._flush=function(e){this._transform(new us(0),"",e)},Bf.prototype.flush=function(e,t){var n=this._writableState;if(("function"==typeof e||void 0===e&&!t)&&(t=e,e=rf.Z_FULL_FLUSH),n.ended)t&&wa.nextTick(t);else if(n.ending)t&&this.once("end",t);else if(n.needDrain){var r=this;this.once("drain",(function(){r.flush(t)}))}else this._flushFlag=e,this.write(new us(0),"",t)},Bf.prototype.close=function(e){if(e&&wa.nextTick(e),!this._closed){this._closed=!0,this._binding.close();var t=this;wa.nextTick((function(){t.emit("close")}))}},Bf.prototype._transform=function(e,t,n){var r,o=this._writableState,i=(o.ending||o.ended)&&(!e||o.length===e.length);if(null===!e&&!us.isBuffer(e))return n(new Error("invalid input"));i?r=rf.Z_FINISH:(r=this._flushFlag,e.length>=o.length&&(this._flushFlag=this._opts.flush||rf.Z_NO_FLUSH)),this._processChunk(e,r,n)},Bf.prototype._processChunk=function(e,t,n){var r=e&&e.length,o=this._chunkSize-this._offset,i=0,s=this,a="function"==typeof n;if(!a){var c,u=[],l=0;this.on("error",(function(e){c=e}));do{var h=this._binding.writeSync(t,e,i,r,this._buffer,this._offset,o)}while(!this._hadError&&p(h[0],h[1]));if(this._hadError)throw c;var f=us.concat(u,l);return this.close(),f}var d=this._binding.write(t,e,i,r,this._buffer,this._offset,o);function p(c,h){if(!s._hadError){var f=o-h;if(function(e,t){if(!e)throw new Error(t)}(f>=0,"have should not go down"),f>0){var d=s._buffer.slice(s._offset,s._offset+f);s._offset+=f,a?s.push(d):(u.push(d),l+=d.length)}if((0===h||s._offset>=s._chunkSize)&&(o=s._chunkSize,s._offset=0,s._buffer=new us(s._chunkSize)),0===h){if(i+=r-c,r=c,!a)return!0;var y=s._binding.write(t,e,i,r,s._buffer,s._offset,s._chunkSize);return y.callback=p,void(y.buffer=e)}if(!a)return!1;n()}}d.buffer=e,d.callback=p},Wa(Rf,Bf),Wa(Tf,Bf),Wa(Lf,Bf),Wa(If,Bf),Wa(Pf,Bf),Wa(jf,Bf),Wa(Uf,Bf);var Nf,Mf,$f={codes:of,createDeflate:sf,createInflate:af,createDeflateRaw:cf,createInflateRaw:uf,createGzip:lf,createGunzip:hf,createUnzip:ff,deflate:df,deflateSync:pf,gzip:yf,gzipSync:gf,deflateRaw:bf,deflateRawSync:mf,unzip:wf,unzipSync:vf,inflate:_f,inflateSync:xf,gunzip:Ef,gunzipSync:kf,inflateRaw:Sf,inflateRawSync:Of,Deflate:Rf,Inflate:Tf,Gzip:Lf,Gunzip:If,DeflateRaw:Pf,InflateRaw:jf,Unzip:Uf,Zlib:Bf},zf=In(Object.freeze({__proto__:null,Deflate:Rf,DeflateRaw:Pf,Gunzip:If,Gzip:Lf,Inflate:Tf,InflateRaw:jf,Unzip:Uf,Zlib:Bf,codes:of,createDeflate:sf,createDeflateRaw:cf,createGunzip:hf,createGzip:lf,createInflate:af,createInflateRaw:uf,createUnzip:ff,default:$f,deflate:df,deflateRaw:bf,deflateRawSync:mf,deflateSync:pf,gunzip:Ef,gunzipSync:kf,gzip:yf,gzipSync:gf,inflate:_f,inflateRaw:Sf,inflateRawSync:Of,inflateSync:xf,unzip:wf,unzipSync:vf})),Ff={},Df={get exports(){return Ff},set exports(e){Ff=e}};function Hf(){return Mf?Nf:(Mf=1,Nf={BINARY_TYPES:["nodebuffer","arraybuffer","fragments"],EMPTY_BUFFER:us.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}})}var qf={},Wf={get exports(){return qf},set exports(e){qf=e}},Kf={},Gf={get exports(){return Kf},set exports(e){Kf=e}};function Zf(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var Vf=In(Object.freeze({__proto__:null,default:{}}));function Yf(e,t){for(var n=0,r=e.length-1;r>=0;r--){var o=e[r];"."===o?e.splice(r,1):".."===o?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}var Xf=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,Jf=function(e){return Xf.exec(e).slice(1)};function Qf(){for(var e="",t=!1,n=arguments.length-1;n>=-1&&!t;n--){var r=n>=0?arguments[n]:"/";if("string"!=typeof r)throw new TypeError("Arguments to path.resolve must be strings");r&&(e=r+"/"+e,t="/"===r.charAt(0))}return(t?"/":"")+(e=Yf(cd(e.split("/"),(function(e){return!!e})),!t).join("/"))||"."}function ed(e){var t=td(e),n="/"===ld(e,-1);return(e=Yf(cd(e.split("/"),(function(e){return!!e})),!t).join("/"))||t||(e="."),e&&n&&(e+="/"),(t?"/":"")+e}function td(e){return"/"===e.charAt(0)}function nd(){var e=Array.prototype.slice.call(arguments,0);return ed(cd(e,(function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e})).join("/"))}function rd(e,t){function n(e){for(var t=0;t=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=Qf(e).substr(1),t=Qf(t).substr(1);for(var r=n(e.split("/")),o=n(t.split("/")),i=Math.min(r.length,o.length),s=i,a=0;an.specificity?-1:1:0}}return Cd=d,d.resolve=d.path=function(e){e=t.resolve(e||".");try{var n=r(t.join(e,"package.json")).name.toUpperCase().replace(/-/g,"_");wa.env[n+"_PREBUILD"]&&(e=wa.env[n+"_PREBUILD"])}catch(e){}if(!i){var o=y(t.join(e,"build/Release"),g);if(o)return o;var d=y(t.join(e,"build/Debug"),g);if(d)return d}var E=O(e);if(E)return E;var k=O(t.dirname(wa.execPath));if(k)return k;var S=["platform="+u,"arch="+c,"runtime="+a,"abi="+s,"uv="+f,h?"armv="+h:"","libc="+l,"node="+wa.versions.node,wa.versions.electron?"electron="+wa.versions.electron:"","function"==typeof __webpack_require__?"webpack=true":""].filter(Boolean).join(" ");throw new Error("No native build was found for "+S+"\n loaded from: "+e+"\n");function O(e){var n=p(t.join(e,"prebuilds")).map(b).filter(m(u,c)).sort(w)[0];if(n){var r=t.join(e,"prebuilds",n.name),o=p(r).map(v).filter(_(a,s)).sort(x(a))[0];return o?t.join(r,o.file):void 0}}},d.parseTags=v,d.matchTags=_,d.compareTags=x,d.parseTuple=b,d.matchTuple=m,d.compareTuples=w,Cd}()),Kf;var e}function Dd(){return Pd||(Pd=1,function(e){try{e.exports=Fd()("/Users/pablofernandez/src/pablo/nostri.chat/node_modules/bufferutil")}catch(t){e.exports=(Id||(Id=1,Ld={mask:(e,t,n,r,o)=>{for(var i=0;i{const n=e.length;for(var r=0;r{this.pending--,this[t]()},this.concurrency=n||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[t]()}[t](){if(this.pending!==this.concurrency&&this.jobs.length){const t=this.jobs.shift();this.pending++,t(this[e])}}}}(),{kStatusCode:r}=Hf(),o=us[Symbol.species],i=us.from([0,0,255,255]),s=Symbol("permessage-deflate"),a=Symbol("total-length"),c=Symbol("callback"),u=Symbol("buffers"),l=Symbol("error");let h;function f(e){this[u].push(e),this[a]+=e.length}function d(e){this[a]+=e.length,this[s]._maxPayload<1||this[a]<=this[s]._maxPayload?this[u].push(e):(this[l]=new RangeError("Max payload size exceeded"),this[l].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[l][r]=1009,this.removeListener("data",d),this.reset())}function p(e){this[s]._inflate=null,e[r]=1007,this[c](e)}return Nd=class{constructor(e,t,r){if(this._maxPayload=0|r,this._options=e||{},this._threshold=void 0!==this._options.threshold?this._options.threshold:1024,this._isServer=!!t,this._deflate=null,this._inflate=null,this.params=null,!h){const e=void 0!==this._options.concurrencyLimit?this._options.concurrencyLimit:10;h=new n(e)}}static get extensionName(){return"permessage-deflate"}offer(){const e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:null==this._options.clientMaxWindowBits&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){const e=this._deflate[c];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){const t=this._options,n=e.find((e=>!(!1===t.serverNoContextTakeover&&e.server_no_context_takeover||e.server_max_window_bits&&(!1===t.serverMaxWindowBits||"number"==typeof t.serverMaxWindowBits&&t.serverMaxWindowBits>e.server_max_window_bits)||"number"==typeof t.clientMaxWindowBits&&!e.client_max_window_bits)));if(!n)throw new Error("None of the extension offers can be accepted");return t.serverNoContextTakeover&&(n.server_no_context_takeover=!0),t.clientNoContextTakeover&&(n.client_no_context_takeover=!0),"number"==typeof t.serverMaxWindowBits&&(n.server_max_window_bits=t.serverMaxWindowBits),"number"==typeof t.clientMaxWindowBits?n.client_max_window_bits=t.clientMaxWindowBits:!0!==n.client_max_window_bits&&!1!==t.clientMaxWindowBits||delete n.client_max_window_bits,n}acceptAsClient(e){const t=e[0];if(!1===this._options.clientNoContextTakeover&&t.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(t.client_max_window_bits){if(!1===this._options.clientMaxWindowBits||"number"==typeof this._options.clientMaxWindowBits&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"')}else"number"==typeof this._options.clientMaxWindowBits&&(t.client_max_window_bits=this._options.clientMaxWindowBits);return t}normalizeParams(e){return e.forEach((e=>{Object.keys(e).forEach((t=>{let n=e[t];if(n.length>1)throw new Error(`Parameter "${t}" must have only a single value`);if(n=n[0],"client_max_window_bits"===t){if(!0!==n){const e=+n;if(!Number.isInteger(e)||e<8||e>15)throw new TypeError(`Invalid value for parameter "${t}": ${n}`);n=e}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${t}": ${n}`)}else if("server_max_window_bits"===t){const e=+n;if(!Number.isInteger(e)||e<8||e>15)throw new TypeError(`Invalid value for parameter "${t}": ${n}`);n=e}else{if("client_no_context_takeover"!==t&&"server_no_context_takeover"!==t)throw new Error(`Unknown parameter "${t}"`);if(!0!==n)throw new TypeError(`Invalid value for parameter "${t}": ${n}`)}e[t]=n}))})),e}decompress(e,t,n){h.add((r=>{this._decompress(e,t,((e,t)=>{r(),n(e,t)}))}))}compress(e,t,n){h.add((r=>{this._compress(e,t,((e,t)=>{r(),n(e,t)}))}))}_decompress(n,r,o){const h=this._isServer?"client":"server";if(!this._inflate){const t=`${h}_max_window_bits`,n="number"!=typeof this.params[t]?e.Z_DEFAULT_WINDOWBITS:this.params[t];this._inflate=e.createInflateRaw({...this._options.zlibInflateOptions,windowBits:n}),this._inflate[s]=this,this._inflate[a]=0,this._inflate[u]=[],this._inflate.on("error",p),this._inflate.on("data",d)}this._inflate[c]=o,this._inflate.write(n),r&&this._inflate.write(i),this._inflate.flush((()=>{const e=this._inflate[l];if(e)return this._inflate.close(),this._inflate=null,void o(e);const n=t.concat(this._inflate[u],this._inflate[a]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[a]=0,this._inflate[u]=[],r&&this.params[`${h}_no_context_takeover`]&&this._inflate.reset()),o(null,n)}))}_compress(n,r,i){const s=this._isServer?"server":"client";if(!this._deflate){const t=`${s}_max_window_bits`,n="number"!=typeof this.params[t]?e.Z_DEFAULT_WINDOWBITS:this.params[t];this._deflate=e.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:n}),this._deflate[a]=0,this._deflate[u]=[],this._deflate.on("data",f)}this._deflate[c]=i,this._deflate.write(n),this._deflate.flush(e.Z_SYNC_FLUSH,(()=>{if(!this._deflate)return;let e=t.concat(this._deflate[u],this._deflate[a]);r&&(e=new o(e.buffer,e.byteOffset,e.length-4)),this._deflate[c]=null,this._deflate[a]=0,this._deflate[u]=[],r&&this.params[`${s}_no_context_takeover`]&&this._deflate.reset(),i(null,e)}))}},Nd}var Wd,Kd,Gd,Zd,Vd,Yd,Xd,Jd,Qd,ep,tp,np,rp,op,ip,sp,ap,cp,up,lp,hp,fp,dp={},pp={get exports(){return dp},set exports(e){dp=e}},yp=In(Zs),gp={},bp={get exports(){return gp},set exports(e){gp=e}};function mp(){return Gd||(Gd=1,function(e){try{e.exports=Fd()("/Users/pablofernandez/src/pablo/nostri.chat/node_modules/utf-8-validate")}catch(t){e.exports=Kd?Wd:(Kd=1,Wd=function(e){const t=e.length;let n=0;for(;n=t||128!=(192&e[n+1])||128!=(192&e[n+2])||224===e[n]&&128==(224&e[n+1])||237===e[n]&&160==(224&e[n+1]))return!1;n+=3}else{if(240!=(248&e[n]))return!1;if(n+3>=t||128!=(192&e[n+1])||128!=(192&e[n+2])||128!=(192&e[n+3])||240===e[n]&&128==(240&e[n+1])||244===e[n]&&e[n+1]>143||e[n]>244)return!1;n+=4}return!0})}}(bp)),gp}function wp(){if(Zd)return dp;Zd=1;const{isUtf8:e}=yp;function t(e){const t=e.length;let n=0;for(;n=t||128!=(192&e[n+1])||128!=(192&e[n+2])||224===e[n]&&128==(224&e[n+1])||237===e[n]&&160==(224&e[n+1]))return!1;n+=3}else{if(240!=(248&e[n]))return!1;if(n+3>=t||128!=(192&e[n+1])||128!=(192&e[n+2])||128!=(192&e[n+3])||240===e[n]&&128==(240&e[n+1])||244===e[n]&&e[n+1]>143||e[n]>244)return!1;n+=4}return!0}if(pp.exports={isValidStatusCode:function(e){return e>=1e3&&e<=1014&&1004!==e&&1005!==e&&1006!==e||e>=3e3&&e<=4999},isValidUTF8:t,tokenChars:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0]},e)dp.isValidUTF8=function(n){return n.length<24?t(n):e(n)};else if(!wa.env.WS_NO_UTF_8_VALIDATE)try{const e=mp();dp.isValidUTF8=function(n){return n.length<32?t(n):e(n)}}catch(e){}return dp}function vp(){if(Yd)return Vd;Yd=1;const{Writable:e}=yl,t=qd(),{BINARY_TYPES:n,EMPTY_BUFFER:r,kStatusCode:o,kWebSocket:i}=Hf(),{concat:s,toArrayBuffer:a,unmask:c}=Hd(),{isValidStatusCode:u,isValidUTF8:l}=wp(),h=us[Symbol.species];function f(e,t,n,r,i){const s=new e(n?`Invalid WebSocket frame: ${t}`:t);return Error.captureStackTrace(s,f),s.code=i,s[o]=r,s}return Vd=class extends e{constructor(e={}){super(),this._binaryType=e.binaryType||n[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=0|e.maxPayload,this._skipUTF8Validation=!!e.skipUTF8Validation,this[i]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._state=0,this._loop=!1}_write(e,t,n){if(8===this._opcode&&0==this._state)return n();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(n)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e=n.length?t.set(this._buffers.shift(),r):(t.set(new Uint8Array(n.buffer,n.byteOffset,e),r),this._buffers[0]=new h(n.buffer,n.byteOffset+e,n.length-e)),e-=n.length}while(e>0);return t}startLoop(e){let t;this._loop=!0;do{switch(this._state){case 0:t=this.getInfo();break;case 1:t=this.getPayloadLength16();break;case 2:t=this.getPayloadLength64();break;case 3:this.getMask();break;case 4:t=this.getData(e);break;default:return void(this._loop=!1)}}while(this._loop);e(t)}getInfo(){if(this._bufferedBytes<2)return void(this._loop=!1);const e=this.consume(2);if(0!=(48&e[0]))return this._loop=!1,f(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");const n=64==(64&e[0]);if(n&&!this._extensions[t.extensionName])return this._loop=!1,f(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(this._fin=128==(128&e[0]),this._opcode=15&e[0],this._payloadLength=127&e[1],0===this._opcode){if(n)return this._loop=!1,f(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(!this._fragmented)return this._loop=!1,f(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");this._opcode=this._fragmented}else if(1===this._opcode||2===this._opcode){if(this._fragmented)return this._loop=!1,f(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");this._compressed=n}else{if(!(this._opcode>7&&this._opcode<11))return this._loop=!1,f(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");if(!this._fin)return this._loop=!1,f(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");if(n)return this._loop=!1,f(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(this._payloadLength>125||8===this._opcode&&1===this._payloadLength)return this._loop=!1,f(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH")}if(this._fin||this._fragmented||(this._fragmented=this._opcode),this._masked=128==(128&e[1]),this._isServer){if(!this._masked)return this._loop=!1,f(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK")}else if(this._masked)return this._loop=!1,f(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");if(126===this._payloadLength)this._state=1;else{if(127!==this._payloadLength)return this.haveLength();this._state=2}}getPayloadLength16(){if(!(this._bufferedBytes<2))return this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength();this._loop=!1}getPayloadLength64(){if(this._bufferedBytes<8)return void(this._loop=!1);const e=this.consume(8),t=e.readUInt32BE(0);return t>Math.pow(2,21)-1?(this._loop=!1,f(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH")):(this._payloadLength=t*Math.pow(2,32)+e.readUInt32BE(4),this.haveLength())}haveLength(){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0))return this._loop=!1,f(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");this._masked?this._state=3:this._state=4}getMask(){this._bufferedBytes<4?this._loop=!1:(this._mask=this.consume(4),this._state=4)}getData(e){let t=r;if(this._payloadLength){if(this._bufferedBytes7?this.controlMessage(t):this._compressed?(this._state=5,void this.decompress(t,e)):(t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage())}decompress(e,n){this._extensions[t.extensionName].decompress(e,this._fin,((e,t)=>{if(e)return n(e);if(t.length){if(this._messageLength+=t.length,this._messageLength>this._maxPayload&&this._maxPayload>0)return n(f(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"));this._fragments.push(t)}const r=this.dataMessage();if(r)return n(r);this.startLoop(n)}))}dataMessage(){if(this._fin){const e=this._messageLength,t=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],2===this._opcode){let n;n="nodebuffer"===this._binaryType?s(t,e):"arraybuffer"===this._binaryType?a(s(t,e)):t,this.emit("message",n,!0)}else{const n=s(t,e);if(!this._skipUTF8Validation&&!l(n))return this._loop=!1,f(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");this.emit("message",n,!1)}}this._state=0}controlMessage(e){if(8===this._opcode)if(this._loop=!1,0===e.length)this.emit("conclude",1005,r),this.end();else{const t=e.readUInt16BE(0);if(!u(t))return f(RangeError,`invalid status code ${t}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");const n=new h(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!l(n))return f(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");this.emit("conclude",t,n),this.end()}else 9===this._opcode?this.emit("ping",e):this.emit("pong",e);this._state=0}},Vd}function _p(){if(Jd)return Xd;Jd=1;const{randomFillSync:e}=pl,t=qd(),{EMPTY_BUFFER:n}=Hf(),{isValidStatusCode:r}=wp(),{mask:o,toBuffer:i}=Hd(),s=Symbol("kByteLength"),a=us.alloc(4);class c{constructor(e,t,n){this._extensions=t||{},n&&(this._generateMask=n,this._maskBuffer=us.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._deflating=!1,this._queue=[]}static frame(t,n){let r,i,c=!1,u=2,l=!1;n.mask&&(r=n.maskBuffer||a,n.generateMask?n.generateMask(r):e(r,0,4),l=0==(r[0]|r[1]|r[2]|r[3]),u=6),"string"==typeof t?i=n.mask&&!l||void 0===n[s]?(t=us.from(t)).length:n[s]:(i=t.length,c=n.mask&&n.readOnly&&!l);let h=i;i>=65536?(u+=8,h=127):i>125&&(u+=2,h=126);const f=us.allocUnsafe(c?i+u:u);return f[0]=n.fin?128|n.opcode:n.opcode,n.rsv1&&(f[0]|=64),f[1]=h,126===h?f.writeUInt16BE(i,2):127===h&&(f[2]=f[3]=0,f.writeUIntBE(i,4,6)),n.mask?(f[1]|=128,f[u-4]=r[0],f[u-3]=r[1],f[u-2]=r[2],f[u-1]=r[3],l?[f,t]:c?(o(t,r,f,u,i),[f]):(o(t,r,t,0,i),[f,t])):[f,t]}close(e,t,o,i){let a;if(void 0===e)a=n;else{if("number"!=typeof e||!r(e))throw new TypeError("First argument must be a valid error code number");if(void 0!==t&&t.length){const n=us.byteLength(t);if(n>123)throw new RangeError("The message must not be greater than 123 bytes");a=us.allocUnsafe(2+n),a.writeUInt16BE(e,0),"string"==typeof t?a.write(t,2):a.set(t,2)}else a=us.allocUnsafe(2),a.writeUInt16BE(e,0)}const u={[s]:a.length,fin:!0,generateMask:this._generateMask,mask:o,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._deflating?this.enqueue([this.dispatch,a,!1,u,i]):this.sendFrame(c.frame(a,u),i)}ping(e,t,n){let r,o;if("string"==typeof e?(r=us.byteLength(e),o=!1):(r=(e=i(e)).length,o=i.readOnly),r>125)throw new RangeError("The data size must not be greater than 125 bytes");const a={[s]:r,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:9,readOnly:o,rsv1:!1};this._deflating?this.enqueue([this.dispatch,e,!1,a,n]):this.sendFrame(c.frame(e,a),n)}pong(e,t,n){let r,o;if("string"==typeof e?(r=us.byteLength(e),o=!1):(r=(e=i(e)).length,o=i.readOnly),r>125)throw new RangeError("The data size must not be greater than 125 bytes");const a={[s]:r,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:10,readOnly:o,rsv1:!1};this._deflating?this.enqueue([this.dispatch,e,!1,a,n]):this.sendFrame(c.frame(e,a),n)}send(e,n,r){const o=this._extensions[t.extensionName];let a,u,l=n.binary?2:1,h=n.compress;if("string"==typeof e?(a=us.byteLength(e),u=!1):(a=(e=i(e)).length,u=i.readOnly),this._firstFragment?(this._firstFragment=!1,h&&o&&o.params[o._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(h=a>=o._threshold),this._compress=h):(h=!1,l=0),n.fin&&(this._firstFragment=!0),o){const t={[s]:a,fin:n.fin,generateMask:this._generateMask,mask:n.mask,maskBuffer:this._maskBuffer,opcode:l,readOnly:u,rsv1:h};this._deflating?this.enqueue([this.dispatch,e,this._compress,t,r]):this.dispatch(e,this._compress,t,r)}else this.sendFrame(c.frame(e,{[s]:a,fin:n.fin,generateMask:this._generateMask,mask:n.mask,maskBuffer:this._maskBuffer,opcode:l,readOnly:u,rsv1:!1}),r)}dispatch(e,n,r,o){if(!n)return void this.sendFrame(c.frame(e,r),o);const i=this._extensions[t.extensionName];this._bufferedBytes+=r[s],this._deflating=!0,i.compress(e,r.fin,((e,t)=>{if(this._socket.destroyed){const e=new Error("The socket was closed while data was being compressed");"function"==typeof o&&o(e);for(let t=0;t{let n=e[t];return Array.isArray(n)||(n=[n]),n.map((e=>[t].concat(Object.keys(e).map((t=>{let n=e[t];return Array.isArray(n)||(n=[n]),n.map((e=>!0===e?t:`${t}=${e}`)).join("; ")}))).join("; "))).join(", ")})).join(", ")},parse:function(n){const r=Object.create(null);let o,i,s=Object.create(null),a=!1,c=!1,u=!1,l=-1,h=-1,f=-1,d=0;for(;d0&&e.unshift(t),e.on("close",H),e.on("data",q),e.on("end",W),e.on("error",K),this._readyState=C.OPEN,this.emit("open")}emitClose(){if(!this._socket)return this._readyState=C.CLOSED,void this.emit("close",this._closeCode,this._closeMessage);this._extensions[c.extensionName]&&this._extensions[c.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=C.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,t){if(this.readyState!==C.CLOSED)if(this.readyState!==C.CONNECTING)this.readyState!==C.CLOSING?(this._readyState=C.CLOSING,this._sender.close(e,t,!this._isServer,(e=>{e||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())})),this._closeTimer=setTimeout(this._socket.destroy.bind(this._socket),3e4)):this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();else{const e="WebSocket was closed before the connection was established";P(this,this._req,e)}}pause(){this.readyState!==C.CONNECTING&&this.readyState!==C.CLOSED&&(this._paused=!0,this._socket.pause())}ping(e,t,n){if(this.readyState===C.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");"function"==typeof e?(n=e,e=t=void 0):"function"==typeof t&&(n=t,t=void 0),"number"==typeof e&&(e=e.toString()),this.readyState===C.OPEN?(void 0===t&&(t=!this._isServer),this._sender.ping(e||f,t,n)):j(this,e,n)}pong(e,t,n){if(this.readyState===C.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");"function"==typeof e?(n=e,e=t=void 0):"function"==typeof t&&(n=t,t=void 0),"number"==typeof e&&(e=e.toString()),this.readyState===C.OPEN?(void 0===t&&(t=!this._isServer),this._sender.pong(e||f,t,n)):j(this,e,n)}resume(){this.readyState!==C.CONNECTING&&this.readyState!==C.CLOSED&&(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,t,n){if(this.readyState===C.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if("function"==typeof t&&(n=t,t={}),"number"==typeof e&&(e=e.toString()),this.readyState!==C.OPEN)return void j(this,e,n);const r={binary:"string"!=typeof e,mask:!this._isServer,compress:!0,fin:!0,...t};this._extensions[c.extensionName]||(r.compress=!1),this._sender.send(e||f,r,n)}terminate(){if(this.readyState!==C.CLOSED)if(this.readyState!==C.CONNECTING)this._socket&&(this._readyState=C.CLOSING,this._socket.destroy());else{const e="WebSocket was closed before the connection was established";P(this,this._req,e)}}}function R(e,r,o,u){const l={protocolVersion:S[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...u,createConnection:void 0,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(!S.includes(l.protocolVersion))throw new RangeError(`Unsupported protocol version: ${l.protocolVersion} (supported versions: ${S.join(", ")})`);let h;if(r instanceof a)h=r,e._url=r.href;else{try{h=new a(r)}catch(e){throw new SyntaxError(`Invalid URL: ${r}`)}e._url=r}const f="wss:"===h.protocol,p="ws+unix:"===h.protocol;let y;if("ws:"===h.protocol||f||p?p&&!h.pathname?y="The URL's pathname is empty":h.hash&&(y="The URL contains a fragment identifier"):y='The URL\'s protocol must be one of "ws:", "wss:", or "ws+unix:"',y){const t=new SyntaxError(y);if(0===e._redirects)throw t;return void T(e,t)}const g=f?443:80,b=i(16).toString("base64"),m=f?t.request:n.request,w=new Set;let v,E;if(l.createConnection=f?I:L,l.defaultPort=l.defaultPort||g,l.port=h.port||g,l.host=h.hostname.startsWith("[")?h.hostname.slice(1,-1):h.hostname,l.headers={...l.headers,"Sec-WebSocket-Version":l.protocolVersion,"Sec-WebSocket-Key":b,Connection:"Upgrade",Upgrade:"websocket"},l.path=h.pathname+h.search,l.timeout=l.handshakeTimeout,l.perMessageDeflate&&(v=new c(!0!==l.perMessageDeflate?l.perMessageDeflate:{},!1,l.maxPayload),l.headers["Sec-WebSocket-Extensions"]=_({[c.extensionName]:v.offer()})),o.length){for(const e of o){if("string"!=typeof e||!A.test(e)||w.has(e))throw new SyntaxError("An invalid or duplicated subprotocol was specified");w.add(e)}l.headers["Sec-WebSocket-Protocol"]=o.join(",")}if(l.origin&&(l.protocolVersion<13?l.headers["Sec-WebSocket-Origin"]=l.origin:l.headers.Origin=l.origin),(h.username||h.password)&&(l.auth=`${h.username}:${h.password}`),p){const e=l.path.split(":");l.socketPath=e[0],l.path=e[1]}if(l.followRedirects){if(0===e._redirects){e._originalIpc=p,e._originalSecure=f,e._originalHostOrSocketPath=p?l.socketPath:h.host;const t=u&&u.headers;if(u={...u,headers:{}},t)for(const[e,n]of Object.entries(t))u.headers[e.toLowerCase()]=n}else if(0===e.listenerCount("redirect")){const t=p?!!e._originalIpc&&l.socketPath===e._originalHostOrSocketPath:!e._originalIpc&&h.host===e._originalHostOrSocketPath;(!t||e._originalSecure&&!f)&&(delete l.headers.authorization,delete l.headers.cookie,t||delete l.headers.host,l.auth=void 0)}l.auth&&!u.headers.authorization&&(u.headers.authorization="Basic "+us.from(l.auth).toString("base64")),E=e._req=m(l),e._redirects&&e.emit("redirect",e.url,E)}else E=e._req=m(l);l.timeout&&E.on("timeout",(()=>{P(e,E,"Opening handshake has timed out")})),E.on("error",(t=>{null===E||E[k]||(E=e._req=null,T(e,t))})),E.on("response",(t=>{const n=t.headers.location,i=t.statusCode;if(n&&l.followRedirects&&i>=300&&i<400){if(++e._redirects>l.maxRedirects)return void P(e,E,"Maximum redirects exceeded");let t;E.abort();try{t=new a(n,r)}catch(t){const r=new SyntaxError(`Invalid URL: ${n}`);return void T(e,r)}R(e,t,o,u)}else e.emit("unexpected-response",E,t)||P(e,E,`Unexpected server response: ${t.statusCode}`)})),E.on("upgrade",((t,n,r)=>{if(e.emit("upgrade",t),e.readyState!==C.CONNECTING)return;if(E=e._req=null,"websocket"!==t.headers.upgrade.toLowerCase())return void P(e,n,"Invalid Upgrade header");const o=s("sha1").update(b+d).digest("base64");if(t.headers["sec-websocket-accept"]!==o)return void P(e,n,"Invalid Sec-WebSocket-Accept header");const i=t.headers["sec-websocket-protocol"];let a;if(void 0!==i?w.size?w.has(i)||(a="Server sent an invalid subprotocol"):a="Server sent a subprotocol but none was requested":w.size&&(a="Server sent no subprotocol"),a)return void P(e,n,a);i&&(e._protocol=i);const u=t.headers["sec-websocket-extensions"];if(void 0!==u){if(!v){return void P(e,n,"Server sent a Sec-WebSocket-Extensions header but no extension was requested")}let t;try{t=x(u)}catch(t){return void P(e,n,"Invalid Sec-WebSocket-Extensions header")}const r=Object.keys(t);if(1!==r.length||r[0]!==c.extensionName){return void P(e,n,"Server indicated an extension that was not requested")}try{v.accept(t[c.extensionName])}catch(t){return void P(e,n,"Invalid Sec-WebSocket-Extensions header")}e._extensions[c.extensionName]=v}e.setSocket(n,r,{generateMask:l.generateMask,maxPayload:l.maxPayload,skipUTF8Validation:l.skipUTF8Validation})})),E.end()}function T(e,t){e._readyState=C.CLOSING,e.emit("error",t),e.emitClose()}function L(e){return e.path=e.socketPath,r.connect(e)}function I(e){return e.path=void 0,e.servername||""===e.servername||(e.servername=r.isIP(e.host)?"":e.host),o.connect(e)}function P(e,t,n){e._readyState=C.CLOSING;const r=new Error(n);Error.captureStackTrace(r,P),t.setHeader?(t[k]=!0,t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),wa.nextTick(T,e,r)):(t.destroy(r),t.once("error",e.emit.bind(e,"error")),t.once("close",e.emitClose.bind(e)))}function j(e,t,n){if(t){const n=E(t).length;e._socket?e._sender._bufferedBytes+=n:e._bufferedAmount+=n}if(n){const t=new Error(`WebSocket is not open: readyState ${e.readyState} (${O[e.readyState]})`);wa.nextTick(n,t)}}function U(e,t){const n=this[b];n._closeFrameReceived=!0,n._closeMessage=t,n._closeCode=e,void 0!==n._socket[b]&&(n._socket.removeListener("data",q),wa.nextTick(D,n._socket),1005===e?n.close():n.close(e,t))}function B(){const e=this[b];e.isPaused||e._socket.resume()}function N(e){const t=this[b];void 0!==t._socket[b]&&(t._socket.removeListener("data",q),wa.nextTick(D,t._socket),t.close(e[g])),t.emit("error",e)}function M(){this[b].emitClose()}function $(e,t){this[b].emit("message",e,t)}function z(e){const t=this[b];t.pong(e,!t._isServer,m),t.emit("ping",e)}function F(e){this[b].emit("pong",e)}function D(e){e.resume()}function H(){const e=this[b];let t;this.removeListener("close",H),this.removeListener("data",q),this.removeListener("end",W),e._readyState=C.CLOSING,this._readableState.endEmitted||e._closeFrameReceived||e._receiver._writableState.errorEmitted||null===(t=e._socket.read())||e._receiver.write(t),e._receiver.end(),this[b]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on("error",M),e._receiver.on("finish",M))}function q(e){this[b]._receiver.write(e)||this.pause()}function W(){const e=this[b];e._readyState=C.CLOSING,e._receiver.end(),this.end()}function K(){const e=this[b];this.removeListener("error",K),this.on("error",m),e&&(e._readyState=C.CLOSING,this.destroy())}return Object.defineProperty(C,"CONNECTING",{enumerable:!0,value:O.indexOf("CONNECTING")}),Object.defineProperty(C.prototype,"CONNECTING",{enumerable:!0,value:O.indexOf("CONNECTING")}),Object.defineProperty(C,"OPEN",{enumerable:!0,value:O.indexOf("OPEN")}),Object.defineProperty(C.prototype,"OPEN",{enumerable:!0,value:O.indexOf("OPEN")}),Object.defineProperty(C,"CLOSING",{enumerable:!0,value:O.indexOf("CLOSING")}),Object.defineProperty(C.prototype,"CLOSING",{enumerable:!0,value:O.indexOf("CLOSING")}),Object.defineProperty(C,"CLOSED",{enumerable:!0,value:O.indexOf("CLOSED")}),Object.defineProperty(C.prototype,"CLOSED",{enumerable:!0,value:O.indexOf("CLOSED")}),["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach((e=>{Object.defineProperty(C.prototype,e,{enumerable:!0})})),["open","error","close","message"].forEach((e=>{Object.defineProperty(C.prototype,`on${e}`,{enumerable:!0,get(){for(const t of this.listeners(e))if(t[p])return t[y];return null},set(t){for(const t of this.listeners(e))if(t[p]){this.removeListener(e,t);break}"function"==typeof t&&this.addEventListener(e,t,{[p]:!0})}})})),C.prototype.addEventListener=w,C.prototype.removeEventListener=v,rp=C}function kp(){if(cp)return ap;cp=1;const{tokenChars:e}=wp();return ap={parse:function(t){const n=new Set;let r=-1,o=-1,i=0;for(;i`${e}: ${o[e]}`)).join("\r\n")+"\r\n\r\n"+r)}function d(e,t,n,r,o){if(e.listenerCount("wsClientError")){const r=new Error(o);Error.captureStackTrace(r,d),e.emit("wsClientError",r,n,t)}else f(n,r,o)}return up=class extends e{constructor(e,n){if(super(),null==(e={maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:s,...e}).port&&!e.server&&!e.noServer||null!=e.port&&(e.server||e.noServer)||e.server&&e.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(null!=e.port?(this._server=t.createServer(((e,n)=>{const r=t.STATUS_CODES[426];n.writeHead(426,{"Content-Length":r.length,"Content-Type":"text/plain"}),n.end(r)})),this._server.listen(e.port,e.host,e.backlog,n)):e.server&&(this._server=e.server),this._server){const e=this.emit.bind(this,"connection");this._removeListeners=function(e,t){for(const n of Object.keys(t))e.on(n,t[n]);return function(){for(const n of Object.keys(t))e.removeListener(n,t[n])}}(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(t,n,r)=>{this.handleUpgrade(t,n,r,e)}})}!0===e.perMessageDeflate&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=0}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(2===this._state)return e&&this.once("close",(()=>{e(new Error("The server is not running"))})),void wa.nextTick(l,this);if(e&&this.once("close",e),1!==this._state)if(this._state=1,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients&&this.clients.size?this._shouldEmitClose=!0:wa.nextTick(l,this);else{const e=this._server;this._removeListeners(),this._removeListeners=this._server=null,e.close((()=>{l(this)}))}}shouldHandle(e){if(this.options.path){const t=e.url.indexOf("?");if((-1!==t?e.url.slice(0,t):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,t,n,s){t.on("error",h);const a=e.headers["sec-websocket-key"],c=+e.headers["sec-websocket-version"];if("GET"!==e.method){return void d(this,e,t,405,"Invalid HTTP method")}if("websocket"!==e.headers.upgrade.toLowerCase()){return void d(this,e,t,400,"Invalid Upgrade header")}if(!a||!u.test(a)){return void d(this,e,t,400,"Missing or invalid Sec-WebSocket-Key header")}if(8!==c&&13!==c){return void d(this,e,t,400,"Missing or invalid Sec-WebSocket-Version header")}if(!this.shouldHandle(e))return void f(t,400);const l=e.headers["sec-websocket-protocol"];let p=new Set;if(void 0!==l)try{p=i.parse(l)}catch(n){return void d(this,e,t,400,"Invalid Sec-WebSocket-Protocol header")}const y=e.headers["sec-websocket-extensions"],g={};if(this.options.perMessageDeflate&&void 0!==y){const n=new o(this.options.perMessageDeflate,!0,this.options.maxPayload);try{const e=r.parse(y);e[o.extensionName]&&(n.accept(e[o.extensionName]),g[o.extensionName]=n)}catch(n){return void d(this,e,t,400,"Invalid or unacceptable Sec-WebSocket-Extensions header")}}if(this.options.verifyClient){const r={origin:e.headers[""+(8===c?"sec-websocket-origin":"origin")],secure:!(!e.socket.authorized&&!e.socket.encrypted),req:e};if(2===this.options.verifyClient.length)return void this.options.verifyClient(r,((r,o,i,c)=>{if(!r)return f(t,o||401,i,c);this.completeUpgrade(g,a,p,e,t,n,s)}));if(!this.options.verifyClient(r))return f(t,401)}this.completeUpgrade(g,a,p,e,t,n,s)}completeUpgrade(e,t,i,s,u,d,p){if(!u.readable||!u.writable)return u.destroy();if(u[c])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>0)return f(u,503);const y=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${n("sha1").update(t+a).digest("base64")}`],g=new this.options.WebSocket(null);if(i.size){const e=this.options.handleProtocols?this.options.handleProtocols(i,s):i.values().next().value;e&&(y.push(`Sec-WebSocket-Protocol: ${e}`),g._protocol=e)}if(e[o.extensionName]){const t=e[o.extensionName].params,n=r.format({[o.extensionName]:[t]});y.push(`Sec-WebSocket-Extensions: ${n}`),g._extensions=e}this.emit("headers",y,s),u.write(y.concat("\r\n").join("\r\n")),u.removeListener("error",h),g.setSocket(u,d,{maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(g),g.on("close",(()=>{this.clients.delete(g),this._shouldEmitClose&&!this.clients.size&&wa.nextTick(l,this)}))),p(g,s)}},up}const Op="undefined"!=typeof WebSocket?WebSocket:function(){if(fp)return hp;fp=1;const e=Ep();return e.createWebSocketStream=function(){if(sp)return ip;sp=1;const{Duplex:e}=yl;function t(e){e.emit("close")}function n(){!this.destroyed&&this._writableState.finished&&this.destroy()}function r(e){this.removeListener("error",r),this.destroy(),0===this.listenerCount("error")&&this.emit("error",e)}return ip=function(o,i){let s=!0;const a=new e({...i,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return o.on("message",(function(e,t){const n=!t&&a._readableState.objectMode?e.toString():e;a.push(n)||o.pause()})),o.once("error",(function(e){a.destroyed||(s=!1,a.destroy(e))})),o.once("close",(function(){a.destroyed||a.push(null)})),a._destroy=function(e,n){if(o.readyState===o.CLOSED)return n(e),void wa.nextTick(t,a);let r=!1;o.once("error",(function(e){r=!0,n(e)})),o.once("close",(function(){r||n(e),wa.nextTick(t,a)})),s&&o.terminate()},a._final=function(e){o.readyState!==o.CONNECTING?null!==o._socket&&(o._socket._writableState.finished?(e(),a._readableState.endEmitted&&a.destroy()):(o._socket.once("finish",(function(){e()})),o.close())):o.once("open",(function(){a._final(e)}))},a._read=function(){o.isPaused&&o.resume()},a._write=function(e,t,n){o.readyState!==o.CONNECTING?o.send(e,n):o.once("open",(function(){a._write(e,t,n)}))},a.on("end",n),a.on("error",r),a},ip}(),e.Server=Sp(),e.Receiver=vp(),e.Sender=_p(),e.WebSocket=e,e.WebSocketServer=e.Server,hp=e}();function Ap(e,t={}){if(!(this instanceof Ap))return new Ap(e,t);this.url=e,this.opts=t,null==t.reconnect&&(t.reconnect=!0);const n=this;return n.onfn={},Cp(n).catch((e=>{n.onfn.error&&n.onfn.error(e)})),this}function Cp(e){return new Promise(((t,n)=>{const r=e.ws=new Op(e.url);let o=!1;r.onmessage=t=>{!function(e,t){let n;try{n=JSON.parse(t.data)}catch(e){return void console.error("handle_nostr_message",e)}if(n.length>=2)switch(n[0]){case"EVENT":if(n.length<3)return;return e.onfn.event&&e.onfn.event(n[1],n[2]);case"EOSE":return e.onfn.eose&&e.onfn.eose(n[1]);case"NOTICE":return e.onfn.notice&&e.onfn.notice(...n.slice(1));case"OK":e.onfn.ok&&e.onfn.ok(...n.slice(1))}}(e,t),e.onfn.message&&e.onfn.message(t)},r.onclose=t=>{if(e.onfn.close&&e.onfn.close(t),e.reconnecting)return n(new Error("close during reconnect"));!e.manualClose&&e.opts.reconnect&&Tp(e)},r.onerror=t=>{if(e.onfn.error&&e.onfn.error(t),e.reconnecting)return n(new Error("error during reconnect"));e.opts.reconnect&&Tp(e)},r.onopen=n=>{e.onfn.open&&e.onfn.open(n),o||(o=!0,t(e))}}))}function Rp(e){return new Promise((t=>setTimeout(t,e)))}async function Tp(e){let t=100;try{e.reconnecting=!0,await Cp(e),e.reconnecting=!1}catch{await Rp(t),t*=1.5}}Ap.prototype.wait_connected=async function(e){let t=1e3;for(;;){if(1===this.ws.readyState)return;await Rp(t),t*=1.5}},Ap.prototype.on=function(e,t){return this.onfn[e]=t,this},Ap.prototype.close=function(){this.ws&&(this.manualClose=!0,this.ws.close())},Ap.prototype.subscribe=function(e,t){Array.isArray(t)?this.send(["REQ",e,...t]):this.send(["REQ",e,t])},Ap.prototype.unsubscribe=function(e){this.send(["CLOSE",e])},Ap.prototype.send=async function(e){await this.wait_connected(),this.ws.send(JSON.stringify(e))};const Lp=Ap;function Ip(e,t){if(!(this instanceof Ip))return new Ip(e,t);this.onfn={},this.relays=[],this.opts=t;for(const t of e)this.add(t);return this}Ip.prototype.close=function(){for(const e of this.relays)e.close()},Ip.prototype.on=function(e,t){for(const n of this.relays)this.onfn[e]=t,n.onfn[e]=t.bind(null,n);return this},Ip.prototype.has=function(e){for(const t of this.relays)if(t.url===e)return!0;return!1},Ip.prototype.send=function(e,t){const n=t?this.find_relays(t):this.relays;for(const t of n)t.send(e)},Ip.prototype.setupHandlers=function(){const e=Object.keys(this.onfn);for(const t of e)for(const e of this.relays)e.onfn[t]=this.onfn[t].bind(null,e)},Ip.prototype.remove=function(e){let t=0;for(const n of this.relays){if(n.url===e)return n.ws&&n.ws.close(),this.relays=this.replays.splice(t,1),!0;t+=1}return!1},Ip.prototype.subscribe=function(e,t,n){const r=n?this.find_relays(n):this.relays;for(const n of r)n.subscribe(e,t)},Ip.prototype.unsubscribe=function(e,t){const n=t?this.find_relays(t):this.relays;for(const t of n)t.unsubscribe(e)},Ip.prototype.add=function(e){if(e instanceof Lp)return!this.has(e.url)&&(this.relays.push(e),this.setupHandlers(),!0);if(this.has(e))return!1;const t=Lp(e,this.opts);return this.relays.push(t),this.setupHandlers(),!0},Ip.prototype.find_relays=function(e){if(e instanceof Lp)return[e];if(0===e.length)return[];if(!e[0])throw new Error("what!?");return e[0]instanceof Lp?e:this.relays.reduce(((t,n)=>(e.some((e=>n.url===e))&&t.push(n),t)),[])};var Pp=Ip;let jp;const Up=new Uint8Array(16);function Bp(){if(!jp&&(jp="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!jp))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return jp(Up)}const Np=[];for(let e=0;e<256;++e)Np.push((e+256).toString(16).slice(1));var Mp={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function $p(e,t,n){if(Mp.randomUUID&&!t&&!e)return Mp.randomUUID();const r=(e=e||{}).random||(e.rng||Bp)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=r[e];return t}return function(e,t=0){return(Np[e[t+0]]+Np[e[t+1]]+Np[e[t+2]]+Np[e[t+3]]+"-"+Np[e[t+4]]+Np[e[t+5]]+"-"+Np[e[t+6]]+Np[e[t+7]]+"-"+Np[e[t+8]]+Np[e[t+9]]+"-"+Np[e[t+10]]+Np[e[t+11]]+Np[e[t+12]]+Np[e[t+13]]+Np[e[t+14]]+Np[e[t+15]]).toLowerCase()}(r)}var zp,Fp,Dp={},Hp={get exports(){return Dp},set exports(e){Dp=e}};function qp(){if(Fp)return zp;Fp=1;var e=1e3,t=60*e,n=60*t,r=24*n,o=7*r,i=365.25*r;function s(e,t,n,r){var o=t>=1.5*n;return Math.round(e/n)+" "+r+(o?"s":"")}return zp=function(a,c){c=c||{};var u=typeof a;if("string"===u&&a.length>0)return function(s){if((s=String(s)).length>100)return;var a=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(s);if(!a)return;var c=parseFloat(a[1]);switch((a[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return c*i;case"weeks":case"week":case"w":return c*o;case"days":case"day":case"d":return c*r;case"hours":case"hour":case"hrs":case"hr":case"h":return c*n;case"minutes":case"minute":case"mins":case"min":case"m":return c*t;case"seconds":case"second":case"secs":case"sec":case"s":return c*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return c;default:return}}(a);if("number"===u&&isFinite(a))return c.long?function(o){var i=Math.abs(o);if(i>=r)return s(o,i,r,"day");if(i>=n)return s(o,i,n,"hour");if(i>=t)return s(o,i,t,"minute");if(i>=e)return s(o,i,e,"second");return o+" ms"}(a):function(o){var i=Math.abs(o);if(i>=r)return Math.round(o/r)+"d";if(i>=n)return Math.round(o/n)+"h";if(i>=t)return Math.round(o/t)+"m";if(i>=e)return Math.round(o/e)+"s";return o+"ms"}(a);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(a))},zp}var Wp=function(e){function t(e){let r,o,i,s=null;function a(...e){if(!a.enabled)return;const n=a,o=Number(new Date),i=o-(r||o);n.diff=i,n.prev=r,n.curr=o,r=o,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let s=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((r,o)=>{if("%%"===r)return"%";s++;const i=t.formatters[o];if("function"==typeof i){const t=e[s];r=i.call(n,t),e.splice(s,1),s--}return r})),t.formatArgs.call(n,e);(n.log||t.log).apply(n,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=n,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==s?s:(o!==t.namespaces&&(o=t.namespaces,i=t.enabled(e)),i),set:e=>{s=e}}),"function"==typeof t.init&&t.init(a),a}function n(e,n){const r=t(this.namespace+(void 0===n?":":n)+e);return r.log=this.log,r}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let n;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const r=("string"==typeof e?e:"").split(/[\s,]+/),o=r.length;for(n=0;n{t[n]=e[n]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let n=0;for(let t=0;t{"%%"!==e&&(r++,"%c"===e&&(o=r))})),t.splice(o,0,n)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}!e&&void 0!==wa&&"env"in wa&&(e=wa.env.DEBUG);return e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=Wp(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(Hp,Dp);var Kp={},Gp={get exports(){return Kp},set exports(e){Kp=e}};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function r(){}function o(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function i(e,t,r,i,s){if("function"!=typeof r)throw new TypeError("The listener must be a function");var a=new o(r,i||e,s),c=n?n+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],a]:e._events[c].push(a):(e._events[c]=a,e._eventsCount++),e}function s(e,t){0==--e._eventsCount?e._events=new r:delete e._events[t]}function a(){this._events=new r,this._eventsCount=0}Object.create&&(r.prototype=Object.create(null),(new r).__proto__||(n=!1)),a.prototype.eventNames=function(){var e,r,o=[];if(0===this._eventsCount)return o;for(r in e=this._events)t.call(e,r)&&o.push(n?r.slice(1):r);return Object.getOwnPropertySymbols?o.concat(Object.getOwnPropertySymbols(e)):o},a.prototype.listeners=function(e){var t=n?n+e:e,r=this._events[t];if(!r)return[];if(r.fn)return[r.fn];for(var o=0,i=r.length,s=new Array(i);o=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(hy,"__esModule",{value:!0}),hy.Container=void 0;var t=function(){if(iy)return fy;iy=1,Object.defineProperty(fy,"__esModule",{value:!0}),fy.ForOfAdaptor=void 0;var e=function(){function e(e,t){this.it_=e,this.last_=t}return e.prototype.next=function(){if(this.it_.equals(this.last_))return{done:!0,value:void 0};var e=this.it_;return this.it_=this.it_.next(),{done:!1,value:e.value}},e.prototype[Symbol.iterator]=function(){return this},e}();return fy.ForOfAdaptor=e,fy}(),n=function(){function n(){}return n.prototype.empty=function(){return 0===this.size()},n.prototype.rbegin=function(){return this.end().reverse()},n.prototype.rend=function(){return this.begin().reverse()},n.prototype[Symbol.iterator]=function(){return new t.ForOfAdaptor(this.begin(),this.end())},n.prototype.toJSON=function(){var t,n,r=[];try{for(var o=e(this),i=o.next();!i.done;i=o.next()){var s=i.value;r.push(s)}}catch(e){t={error:e}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}return r},n}();return hy.Container=n,hy}var py,yy,gy={};function by(){if(py)return gy;py=1;var e=Ln&&Ln.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)s.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return s};Object.defineProperty(gy,"__esModule",{value:!0}),gy.NativeArrayIterator=void 0;var t=function(){function t(e,t){this.data_=e,this.index_=t}return t.prototype.index=function(){return this.index_},Object.defineProperty(t.prototype,"value",{get:function(){return this.data_[this.index_]},enumerable:!1,configurable:!0}),t.prototype.prev=function(){return--this.index_,this},t.prototype.next=function(){return++this.index_,this},t.prototype.advance=function(e){return this.index_+=e,this},t.prototype.equals=function(e){return this.data_===e.data_&&this.index_===e.index_},t.prototype.swap=function(t){var n,r;n=e([t.data_,this.data_],2),this.data_=n[0],t.data_=n[1],r=e([t.index_,this.index_],2),this.index_=r[0],t.index_=r[1]},t}();return gy.NativeArrayIterator=t,gy}var my,wy,vy,_y={},xy={},Ey={},ky={};function Sy(){if(wy)return Ey;wy=1;var e,t=Ln&&Ln.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)});Object.defineProperty(Ey,"__esModule",{value:!0}),Ey.LogicError=void 0;var n=function(){if(my)return ky;my=1;var e,t=Ln&&Ln.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)});Object.defineProperty(ky,"__esModule",{value:!0}),ky.Exception=void 0;var n=function(e){function n(t){var n=this.constructor,r=e.call(this,t)||this,o=n.prototype;return Object.setPrototypeOf?Object.setPrototypeOf(r,o):r.__proto__=o,r}return t(n,e),Object.defineProperty(n.prototype,"name",{get:function(){return this.constructor.name},enumerable:!1,configurable:!0}),n.prototype.what=function(){return this.message},n.prototype.toJSON=function(){return{name:this.name,message:this.message,stack:this.stack}},n}(Error);return ky.Exception=n,ky}(),r=function(e){function n(t){return e.call(this,t)||this}return t(n,e),n}(n.Exception);return Ey.LogicError=r,Ey}function Oy(){if(vy)return xy;vy=1;var e,t=Ln&&Ln.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)});Object.defineProperty(xy,"__esModule",{value:!0}),xy.InvalidArgument=void 0;var n=function(e){function n(t){return e.call(this,t)||this}return t(n,e),n}(Sy().LogicError);return xy.InvalidArgument=n,xy}var Ay,Cy,Ry,Ty={};function Ly(){return Cy||(Cy=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ErrorGenerator=void 0;var t=Oy(),n=function(){if(Ay)return Ty;Ay=1;var e,t=Ln&&Ln.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)});Object.defineProperty(Ty,"__esModule",{value:!0}),Ty.OutOfRange=void 0;var n=function(e){function n(t){return e.call(this,t)||this}return t(n,e),n}(Sy().LogicError);return Ty.OutOfRange=n,Ty}();!function(e){function r(e){if("string"==typeof e)return e;var t=e.constructor.name;return e.constructor.__MODULE&&(t="".concat(e.constructor.__MODULE,".").concat(t)),"std.".concat(t)}e.get_class_name=r,e.empty=function(e,t){return new n.OutOfRange("Error on ".concat(r(e),".").concat(t,"(): it's empty container."))},e.negative_index=function(e,t,o){return new n.OutOfRange("Error on ".concat(r(e),".").concat(t,"(): parametric index is negative -> (index = ").concat(o,")."))},e.excessive_index=function(e,t,o,i){return new n.OutOfRange("Error on ".concat(r(e),".").concat(t,"(): parametric index is equal or greater than size -> (index = ").concat(o,", size: ").concat(i,")."))},e.not_my_iterator=function(e,n){return new t.InvalidArgument("Error on ".concat(r(e),".").concat(n,"(): parametric iterator is not this container's own."))},e.erased_iterator=function(e,n){return new t.InvalidArgument("Error on ".concat(r(e),".").concat(n,"(): parametric iterator, it already has been erased."))},e.negative_iterator=function(e,t,o){return new n.OutOfRange("Error on ".concat(r(e),".").concat(t,"(): parametric iterator is directing negative position -> (index = ").concat(o,")."))},e.iterator_end_value=function(e,t){void 0===t&&(t="end");var o=r(e);return new n.OutOfRange("Error on ".concat(o,".Iterator.value: cannot access to the ").concat(o,".").concat(t,"().value."))},e.key_nout_found=function(e,t,o){throw new n.OutOfRange("Error on ".concat(r(e),".").concat(t,"(): unable to find the matched key -> ").concat(o))}}(e.ErrorGenerator||(e.ErrorGenerator={}))}(_y)),_y}function Iy(){if(Ry)return uy;Ry=1;var e,t=Ln&&Ln.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),n=Ln&&Ln.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)s.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return s},r=Ln&&Ln.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty($y,"__esModule",{value:!0}),$y.hash=void 0;var t=Dy();function n(e,t){return t^=e?1:0,t*=s}function r(e,t){return o(e.toString(),t)}function o(e,t){for(var n=0;n0)&&!(r=i.next()).done;)s.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return s},n=Ln&&Ln.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o0)&&!(r=i.next()).done;)s.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return s},n=Ln&&Ln.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o=1&&i[0]instanceof Array?(r=function(){var r=i[0];e.push.apply(e,n([],t(r),!1))},o=i.slice(1)):i.length>=2&&i[0].next instanceof Function&&i[1].next instanceof Function?(r=function(){var t=i[0],n=i[1];e.assign(t,n)},o=i.slice(2)):(r=null,o=i),{ramda:r,tail:o}}}(e.IAssociativeContainer||(e.IAssociativeContainer={}))),Uy;var e,t,n}(),o=Hy(),i=Gy();!function(e){e.construct=function(e,s,a){for(var c=[],u=3;u=1&&(h=p.tail[0]),p.tail.length>=2&&(f=p.tail[1])}a(h,f),null!==l&&l()}}(e.IHashContainer||(e.IHashContainer={}))}(jy)),jy}var Vy,Yy={},Xy={},Jy={};function Qy(){if(Vy)return Jy;Vy=1,Object.defineProperty(Jy,"__esModule",{value:!0}),Jy.ListIterator=void 0;var e=Ly(),t=function(){function t(e,t,n){this.prev_=e,this.next_=t,this.value_=n}return t._Set_prev=function(e,t){e.prev_=t},t._Set_next=function(e,t){e.next_=t},t.prototype.prev=function(){return this.prev_},t.prototype.next=function(){return this.next_},Object.defineProperty(t.prototype,"value",{get:function(){return this._Try_value(),this.value_},enumerable:!1,configurable:!0}),t.prototype._Try_value=function(){if(void 0===this.value_&&!0===this.equals(this.source().end()))throw e.ErrorGenerator.iterator_end_value(this.source())},t.prototype.equals=function(e){return this===e},t}();return Jy.ListIterator=t,Jy}var eg,tg={};var ng,rg,og={};function ig(){if(ng)return og;ng=1,Object.defineProperty(og,"__esModule",{value:!0}),og.next=og.prev=og.advance=og.distance=og.size=og.empty=void 0;var e=Oy();function t(t,n){if(0===n)return t;if(t.advance instanceof Function)return t.advance(n);var r;if(n<0){if(!(t.prev instanceof Function))throw new e.InvalidArgument("Error on std.advance(): parametric iterator is not a bi-directional iterator, thus advancing to negative direction is not possible.");r=function(e){return e.prev()},n=-n}else r=function(e){return e.next()};for(;n-- >0;)t=r(t);return t}return og.empty=function(e){return e instanceof Array?0!==e.length:e.empty()},og.size=function(e){return e instanceof Array?e.length:e.size()},og.distance=function(e,t){if(e.index instanceof Function)return function(e,t){var n=e.index(),r=t.index();return e.base instanceof Function?n-r:r-n}(e,t);for(var n=0;!e.equals(t);e=e.next())++n;return n},og.advance=t,og.prev=function(e,n){return void 0===n&&(n=1),1===n?e.prev():t(e,-n)},og.next=function(e,n){return void 0===n&&(n=1),1===n?e.next():t(e,n)},og}function sg(){if(rg)return Xy;rg=1;var e,t=Ln&&Ln.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),n=Ln&&Ln.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)s.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return s};Object.defineProperty(Xy,"__esModule",{value:!0}),Xy.ListContainer=void 0;var r=dy(),o=Qy(),i=function(){if(eg)return tg;eg=1,Object.defineProperty(tg,"__esModule",{value:!0}),tg.Repeater=void 0;var e=function(){function e(e,t){this.index_=e,this.value_=t}return e.prototype.index=function(){return this.index_},Object.defineProperty(e.prototype,"value",{get:function(){return this.value_},enumerable:!1,configurable:!0}),e.prototype.next=function(){return++this.index_,this},e.prototype.equals=function(e){return this.index_===e.index_},e}();return tg.Repeater=e,tg}(),s=by(),a=ig(),c=Ly(),u=function(e){function r(){var t=e.call(this)||this;return t.end_=t._Create_iterator(null,null),t.clear(),t}return t(r,e),r.prototype.assign=function(e,t){this.clear(),this.insert(this.end(),e,t)},r.prototype.clear=function(){o.ListIterator._Set_prev(this.end_,this.end_),o.ListIterator._Set_next(this.end_,this.end_),this.begin_=this.end_,this.size_=0},r.prototype.resize=function(e){var t=e-this.size();t>0?this.insert(this.end(),t,void 0):t<0&&this.erase((0,a.advance)(this.end(),-t),this.end())},r.prototype.begin=function(){return this.begin_},r.prototype.end=function(){return this.end_},r.prototype.size=function(){return this.size_},r.prototype.push_front=function(e){this.insert(this.begin_,e)},r.prototype.push_back=function(e){this.insert(this.end_,e)},r.prototype.pop_front=function(){if(!0===this.empty())throw c.ErrorGenerator.empty(this.end_.source().constructor.name,"pop_front");this.erase(this.begin_)},r.prototype.pop_back=function(){if(!0===this.empty())throw c.ErrorGenerator.empty(this.end_.source().constructor.name,"pop_back");this.erase(this.end_.prev())},r.prototype.push=function(){for(var e=[],t=0;t=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(pg,"__esModule",{value:!0}),pg.HashBuckets=void 0;var t=function(){function t(e,t){this.fetcher_=e,this.hasher_=t,this.max_load_factor_=r,this.data_=[],this.size_=0,this.initialize()}return t.prototype.clear=function(){this.data_=[],this.size_=0,this.initialize()},t.prototype.rehash=function(t){var r,o,i,s;t=Math.max(t,n);for(var a=[],c=0;cthis.capacity()&&(e=Math.floor(e/this.max_load_factor_),this.rehash(e))},t.prototype.initialize=function(){for(var e=0;et&&this.reserve(2*t);var n=this.index(e);this.data_[n].push(e)},t.prototype.erase=function(e){for(var t=this.index(e),n=this.data_[t],r=0;r0)&&!(r=i.next()).done;)s.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return s},o=Ln&&Ln.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o0)&&!(r=i.next()).done;)s.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return s};Object.defineProperty(e,"__esModule",{value:!0}),e.SetElementList=void 0;var o=sg(),i=Qy(),s=lg(),a=function(e){function t(t){var n=e.call(this)||this;return n.associative_=t,n}return n(t,e),t.prototype._Create_iterator=function(e,n,r){return t.Iterator.create(this,e,n,r)},t._Swap_associative=function(e,t){var n;n=r([t.associative_,e.associative_],2),e.associative_=n[0],t.associative_=n[1]},t.prototype.associative=function(){return this.associative_},t}(o.ListContainer);e.SetElementList=a,function(e){var t=function(e){function t(t,n,r,o){var i=e.call(this,n,r,o)||this;return i.source_=t,i}return n(t,e),t.create=function(e,n,r,o){return new t(e,n,r,o)},t.prototype.reverse=function(){return new r(this)},t.prototype.source=function(){return this.source_.associative()},t}(i.ListIterator);e.Iterator=t;var r=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype._Create_neighbor=function(e){return new t(e)},t}(s.ReverseIterator);e.ReverseIterator=r}(a=e.SetElementList||(e.SetElementList={})),e.SetElementList=a}(Yy)),Yy),c=function(){if(fg)return dg;fg=1;var e,t=Ln&&Ln.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),n=Ln&&Ln.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)s.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return s},r=Ln&&Ln.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(dg,"__esModule",{value:!0}),dg.SetHashBuckets=void 0;var o=function(e){function o(t,n,r){var o=e.call(this,i,n)||this;return o.source_=t,o.key_eq_=r,o}return t(o,e),o._Swap_source=function(e,t){var r;r=n([t.source_,e.source_],2),e.source_=r[0],t.source_=r[1]},o.prototype.key_eq=function(){return this.key_eq_},o.prototype.find=function(e){var t,n,o=this.hash_function()(e)%this.length(),i=this.at(o);try{for(var s=r(i),a=s.next();!a.done;a=s.next()){var c=a.value;if(this.key_eq_(c.value,e))return c}}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=s.return)&&n.call(s)}finally{if(t)throw t.error}}return this.source_.end()},o}(yg().HashBuckets);function i(e){return e.value}return dg.SetHashBuckets=o,dg}(),u=wg(),l=function(e){function t(){for(var n=[],i=0;i0)&&!(r=i.next()).done;)s.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return s},r=Ln&&Ln.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o0)&&!(r=i.next()).done;)s.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return s},o=Ln&&Ln.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o0)&&!(r=i.next()).done;)s.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return s};Object.defineProperty(e,"__esModule",{value:!0}),e.MapElementList=void 0;var o=sg(),i=Qy(),s=lg(),a=function(e){function t(t){var n=e.call(this)||this;return n.associative_=t,n}return n(t,e),t.prototype._Create_iterator=function(e,n,r){return t.Iterator.create(this,e,n,r)},t._Swap_associative=function(e,t){var n;n=r([t.associative_,e.associative_],2),e.associative_=n[0],t.associative_=n[1]},t.prototype.associative=function(){return this.associative_},t}(o.ListContainer);e.MapElementList=a,function(e){var t=function(e){function t(t,n,r,o){var i=e.call(this,n,r,o)||this;return i.list_=t,i}return n(t,e),t.create=function(e,n,r,o){return new t(e,n,r,o)},t.prototype.reverse=function(){return new r(this)},t.prototype.source=function(){return this.list_.associative()},Object.defineProperty(t.prototype,"first",{get:function(){return this.value.first},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"second",{get:function(){return this.value.second},set:function(e){this.value.second=e},enumerable:!1,configurable:!0}),t}(i.ListIterator);e.Iterator=t;var r=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype._Create_neighbor=function(e){return new t(e)},Object.defineProperty(t.prototype,"first",{get:function(){return this.base_.first},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"second",{get:function(){return this.base_.second},set:function(e){this.base_.second=e},enumerable:!1,configurable:!0}),t}(s.ReverseIterator);e.ReverseIterator=r}(a=e.MapElementList||(e.MapElementList={})),e.MapElementList=a}(Cg)),Cg),c=function(){if(Rg)return Tg;Rg=1;var e,t=Ln&&Ln.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),n=Ln&&Ln.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)s.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return s},r=Ln&&Ln.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(Tg,"__esModule",{value:!0}),Tg.MapHashBuckets=void 0;var o=function(e){function o(t,n,r){var o=e.call(this,i,n)||this;return o.source_=t,o.key_eq_=r,o}return t(o,e),o._Swap_source=function(e,t){var r;r=n([t.source_,e.source_],2),e.source_=r[0],t.source_=r[1]},o.prototype.key_eq=function(){return this.key_eq_},o.prototype.find=function(e){var t,n,o=this.hash_function()(e)%this.length(),i=this.at(o);try{for(var s=r(i),a=s.next();!a.done;a=s.next()){var c=a.value;if(this.key_eq_(c.first,e))return c}}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=s.return)&&n.call(s)}finally{if(t)throw t.error}}return this.source_.end()},o}(yg().HashBuckets);function i(e){return e.first}return Tg.MapHashBuckets=o,Tg}(),u=function(){if(Lg)return jg;Lg=1,Object.defineProperty(jg,"__esModule",{value:!0}),jg.Entry=void 0;var e=Hy(),t=Gy(),n=function(){function n(e,t){this.first=e,this.second=t}return n.prototype.equals=function(e){return(0,t.equal_to)(this.first,e.first)},n.prototype.less=function(e){return(0,t.less)(this.first,e.first)},n.prototype.hashCode=function(){return(0,e.hash)(this.first)},n}();return jg.Entry=n,jg}(),l=wg(),h=function(e){function t(){for(var n=[],i=0;i=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}};Object.defineProperty(ay,"__esModule",{value:!0});var t=vg(),n=Ug(),r=function(){function r(){this.listeners_=new n.HashMap,this.created_at_=new Date}return r.prototype.dispatchEvent=function(t){var n,r,o=this.listeners_.find(t.type);if(!o.equals(this.listeners_.end())){t.target=this,t.timeStamp=(new Date).getTime()-this.created_at_.getTime();try{for(var i=e(o.second),s=i.next();!s.done;s=i.next())(0,s.value)(t)}catch(e){n={error:e}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}}},r.prototype.addEventListener=function(e,n){var r=this.listeners_.find(e);r.equals(this.listeners_.end())&&(r=this.listeners_.emplace(e,new t.HashSet).first),r.second.insert(n)},r.prototype.removeEventListener=function(e,t){var n=this.listeners_.find(e);n.equals(this.listeners_.end())||(n.second.erase(t),n.second.empty()&&this.listeners_.erase(n))},r}();return ay.EventTarget=r,ay}(),s=Mg(),a=function(){if($g)return zg;$g=1;var e,t=Ln&&Ln.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)},function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)});Object.defineProperty(zg,"__esModule",{value:!0});var n=function(e){function n(t,n){return e.call(this,t,n)||this}return t(n,e),n}(Mg().Event);return zg.CloseEvent=n,zg}(),c=function(){if(Fg)return Dg;Fg=1;var e,t=Ln&&Ln.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)},function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)});Object.defineProperty(Dg,"__esModule",{value:!0});var n=function(e){function n(t,n){return e.call(this,t,n)||this}return t(n,e),n}(Mg().Event);return Dg.MessageEvent=n,Dg}(),u=function(){if(Hg)return Wg;Hg=1;var e,t=Ln&&Ln.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)},function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)});Object.defineProperty(Wg,"__esModule",{value:!0});var n=function(e){function n(t,n){return e.call(this,t,n)||this}return t(n,e),n}(Mg().Event);return Wg.ErrorEvent=n,Wg}(),l=function(e){function t(n,r){var i=e.call(this)||this;return i.on_={},i.state_=t.CONNECTING,i.client_=new o.client,i.client_.on("connect",i._Handle_connect.bind(i)),i.client_.on("connectFailed",i._Handle_error.bind(i)),"string"==typeof r&&(r=[r]),i.client_.connect(n,r),i}return n(t,e),t.prototype.close=function(e,n){this.state_=t.CLOSING,void 0===e?this.connection_.sendCloseFrame():this.connection_.sendCloseFrame(e,n,!0)},t.prototype.send=function(e){if("string"==typeof e.valueOf())this.connection_.sendUTF(e);else{var t=void 0;t=e instanceof us?e:e instanceof Blob?new us(e,"blob"):e.buffer?new us(e.buffer):new us(e),this.connection_.sendBytes(t)}},Object.defineProperty(t.prototype,"url",{get:function(){return this.client_.url.href},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"protocol",{get:function(){return this.client_.protocols?this.client_.protocols[0]:""},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"extensions",{get:function(){return this.connection_&&this.connection_.extensions?this.connection_.extensions[0].name:""},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"readyState",{get:function(){return this.state_},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bufferedAmount",{get:function(){return this.connection_.bytesWaitingToFlush},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"binaryType",{get:function(){return"arraybuffer"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"onopen",{get:function(){return this.on_.open},set:function(e){this._Set_on("open",e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"onclose",{get:function(){return this.on_.close},set:function(e){this._Set_on("close",e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"onmessage",{get:function(){return this.on_.message},set:function(e){this._Set_on("message",e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"onerror",{get:function(){return this.on_.error},set:function(e){this._Set_on("error",e)},enumerable:!0,configurable:!0}),t.prototype._Set_on=function(e,t){this.on_[e]&&this.removeEventListener(e,this.on_[e]),this.addEventListener(e,t),this.on_[e]=t},t.prototype._Handle_connect=function(e){this.connection_=e,this.state_=t.OPEN,this.connection_.on("message",this._Handle_message.bind(this)),this.connection_.on("error",this._Handle_error.bind(this)),this.connection_.on("close",this._Handle_close.bind(this));var n=new s.Event("open",h);this.dispatchEvent(n)},t.prototype._Handle_close=function(e,n){var o=new a.CloseEvent("close",r({},h,{code:e,reason:n}));this.state_=t.CLOSED,this.dispatchEvent(o)},t.prototype._Handle_message=function(e){var t=new c.MessageEvent("message",r({},h,{data:e.binaryData?e.binaryData:e.utf8Data}));this.dispatchEvent(t)},t.prototype._Handle_error=function(e){var n=new u.ErrorEvent("error",r({},h,{error:e,message:e.message}));this.state_===t.CONNECTING&&(this.state_=t.CLOSED),this.dispatchEvent(n)},t}(i.EventTarget);e.WebSocket=l,function(e){e.CONNECTING=0,e.OPEN=1,e.CLOSING=2,e.CLOSED=3}(l=e.WebSocket||(e.WebSocket={})),e.WebSocket=l;var h={bubbles:!1,cancelable:!1}}(Jp)),Jp).WebSocket);const{bech32:Kg,hex:Gg,utf8:Zg}=kr,Vg={bech32:"bc",pubKeyHash:0,scriptHash:5,validWitnessVersions:[0]},Yg={bech32:"tb",pubKeyHash:111,scriptHash:196,validWitnessVersions:[0]},Xg={bech32:"bcrt",pubKeyHash:111,scriptHash:196,validWitnessVersions:[0]},Jg={bech32:"sb",pubKeyHash:63,scriptHash:123,validWitnessVersions:[0]},Qg=["option_data_loss_protect","initial_routing_sync","option_upfront_shutdown_script","gossip_queries","var_onion_optin","gossip_queries_ex","option_static_remotekey","payment_secret","basic_mpp","option_support_large_channel"],eb={m:BigInt(1e3),u:BigInt(1e6),n:BigInt(1e9),p:BigInt(1e12)},tb=BigInt("2100000000000000000"),nb=BigInt(1e11),rb={payment_hash:1,payment_secret:16,description:13,payee:19,description_hash:23,expiry:6,min_final_cltv_expiry:24,fallback_address:9,route_hint:3,feature_bits:5,metadata:27},ob={};for(let e=0,t=Object.keys(rb);eGg.encode(Kg.fromWordsUnsafe(e)),16:e=>Gg.encode(Kg.fromWordsUnsafe(e)),13:e=>Zg.encode(Kg.fromWordsUnsafe(e)),19:e=>Gg.encode(Kg.fromWordsUnsafe(e)),23:e=>Gg.encode(Kg.fromWordsUnsafe(e)),27:e=>Gg.encode(Kg.fromWordsUnsafe(e)),6:ab,24:ab,3:function(e){const t=[];let n,r,o,i,s,a=Kg.fromWordsUnsafe(e);for(;a.length>0;)n=Gg.encode(a.slice(0,33)),r=Gg.encode(a.slice(33,41)),o=parseInt(Gg.encode(a.slice(41,45)),16),i=parseInt(Gg.encode(a.slice(45,49)),16),s=parseInt(Gg.encode(a.slice(49,51)),16),a=a.slice(51),t.push({pubkey:n,short_channel_id:r,fee_base_msat:o,fee_proportional_millionths:i,cltv_expiry_delta:s});return t},5:function(e){const t=e.slice().reverse().map((e=>[!!(1&e),!!(2&e),!!(4&e),!!(8&e),!!(16&e)])).reduce(((e,t)=>e.concat(t)),[]);for(;t.length<2*Qg.length;)t.push(!1);const n={};Qg.forEach(((e,r)=>{let o;o=t[2*r]?"required":t[2*r+1]?"supported":"unsupported",n[e]=o}));const r=t.slice(2*Qg.length);return n.extra_bits={start_bit:2*Qg.length,bits:r,has_required:r.reduce(((e,t,n)=>n%2!=0?e||!1:e||t),!1)},n}};function sb(e){return t=>({tagCode:parseInt(e),words:Kg.encode("unknown",t,Number.MAX_SAFE_INTEGER)})}function ab(e){return e.reverse().reduce(((e,t,n)=>e+t*Math.pow(32,n)),0)}function cb(e,t){let n,r;if(e.slice(-1).match(/^[munp]$/))n=e.slice(-1),r=e.slice(0,-1);else{if(e.slice(-1).match(/^[^munp0-9]$/))throw new Error("Not a valid multiplier for the amount");r=e}if(!r.match(/^\d+$/))throw new Error("Not a valid human readable amount");const o=BigInt(r),i=n?o*nb/eb[n]:o*nb;if("p"===n&&o%BigInt(10)!==BigInt(0)||i>tb)throw new Error("Amount is outside of valid range");return t?i.toString():i}var ub={decode:function(e,t){if("string"!=typeof e)throw new Error("Lightning Payment Request must be string");if("ln"!==e.slice(0,2).toLowerCase())throw new Error("Not a proper lightning payment request");const n=[],r=Kg.decode(e,Number.MAX_SAFE_INTEGER);e=e.toLowerCase();const o=r.prefix;let i=r.words,s=e.slice(o.length+1),a=i.slice(-104);i=i.slice(0,-104);let c=o.match(/^ln(\S+?)(\d*)([a-zA-Z]?)$/);if(c&&!c[2]&&(c=o.match(/^ln(\S+)$/)),!c)throw new Error("Not a proper lightning payment request");n.push({name:"lightning_network",letters:"ln"});const u=c[1];let l;if(t){if(void 0===t.bech32||void 0===t.pubKeyHash||void 0===t.scriptHash||!Array.isArray(t.validWitnessVersions))throw new Error("Invalid network");l=t}else switch(u){case Vg.bech32:l=Vg;break;case Yg.bech32:l=Yg;break;case Xg.bech32:l=Xg;break;case Jg.bech32:l=Jg}if(!l||l.bech32!==u)throw new Error("Unknown coin bech32 prefix");n.push({name:"coin_network",letters:u,value:l});const h=c[2];let f;if(h){f=cb(h+c[3],!0),n.push({name:"amount",letters:c[2]+c[3],value:f})}else f=null;n.push({name:"separator",letters:"1"});const d=ab(i.slice(0,7));let p,y,g,b;for(i=i.slice(7),n.push({name:"timestamp",letters:s.slice(0,7),value:d}),s=s.slice(7);i.length>0;){const e=i[0].toString();p=ob[e]||"unknown_tag",y=ib[e]||sb(e),i=i.slice(1),g=ab(i.slice(0,2)),i=i.slice(2),b=i.slice(0,g),i=i.slice(g),n.push({name:p,tag:s[0],letters:s.slice(0,3+g),value:y(b)}),s=s.slice(3+g)}n.push({name:"signature",letters:s.slice(0,104),value:Gg.encode(Kg.fromWordsUnsafe(a))}),s=s.slice(104),n.push({name:"checksum",letters:s});let m={paymentRequest:e,sections:n,get expiry(){let e=n.find((e=>"expiry"===e.name));if(e)return w("timestamp")+e.value},get route_hints(){return n.filter((e=>"route_hint"===e.name)).map((e=>e.value))}};for(let e in rb)"route_hint"!==e&&Object.defineProperty(m,e,{get:()=>w(e)});return m;function w(e){let t=n.find((t=>t.name===e));return t?t.value:void 0}},hrpToMillisat:cb};var lb=class extends Kp{ndk;zappedEvent;zappedUser;constructor(e){super(),this.ndk=e.ndk,this.zappedEvent=e.zappedEvent,this.zappedUser=e.zappedUser||this.ndk.getUser({hexpubkey:this.zappedEvent.pubkey})}async getZapEndpoint(){let e,t,n,r;if(this.zappedEvent){const n=(await this.zappedEvent.getMatchingTags("zap"))[0];if(n)switch(n[2]){case"lud06":e=n[1];break;case"lud16":t=n[1];break;default:throw new Error(`Unknown zap tag ${n}`)}}if(!this.zappedUser||e||t||(this.zappedUser.profile||await this.zappedUser.fetchProfile(),e=(this.zappedUser.profile||{}).lud06,t=(this.zappedUser.profile||{}).lud16),t){const[e,r]=t.split("@");n=`https://${r}/.well-known/lnurlp/${e}`}else if(e){const{words:t}=Rn.decode(e,1e3),r=Rn.fromWords(t);n=new TextDecoder("utf-8").decode(r)}if(!n)throw new Error("No zap endpoint found");const o=await fetch(n),i=await o.json();return i?.allowsNostr&&(i?.nostrPubkey||i?.nostrPubKey)&&(r=i.callback),r}async createZapRequest(e,t,n){const r=await this.getZapEndpoint();if(!r)throw new Error("No zap endpoint found");if(!this.zappedEvent)throw new Error("No zapped event found");const o=Di.makeZapRequest({profile:this.zappedUser.hexpubkey(),event:null,amount:e,comment:t||"",relays:["wss://nos.lol","wss://relay.nostr.band","wss://relay.f7z.io","wss://relay.damus.io","wss://nostr.mom","wss://no.str.cr"]});if(this.zappedEvent){const e=this.zappedEvent.tagReference();e&&o.tags.push(e)}o.tags.push(["lnurl",r]);const i=new mb(this.ndk,o);n&&(i.tags=i.tags.concat(n)),await i.sign();const s=await i.toNostrEvent(),a=await fetch(`${r}?`+new URLSearchParams({amount:e.toString(),nostr:JSON.stringify(s)}));return(await a.json()).pr}};function hb(){if(void 0===this.kind)throw new Error("Kind not set");return this.kind>=1e4&&this.kind<2e4}function fb(){if(void 0===this.kind)throw new Error("Kind not set");return this.kind>=3e4&&this.kind<4e4}async function db(){if(!this.ndk)throw new Error("NDK not set");const e=await this.ndk.fetchEvents({kinds:[3],authors:[this.hexpubkey()]});if(e){const t=new Set;return e.forEach((e=>{e.tags.forEach((e=>{if("p"===e[0])try{const n=Zo.npubEncode(e[1]);t.add(n)}catch(e){}}))})),[...t].reduce(((e,t)=>{const n=new pb({npub:t});return n.ndk=this.ndk,e.add(n),e}),new Set)}return new Set}var pb=class{ndk;profile;npub="";relayUrls=[];constructor(e){e.npub&&(this.npub=e.npub),e.hexpubkey&&(this.npub=Zo.npubEncode(e.hexpubkey)),e.relayUrls&&(this.relayUrls=e.relayUrls)}static async fromNip05(e){const t=await fi.queryProfile(e);if(t)return new pb({hexpubkey:t.pubkey,relayUrls:t.relays})}hexpubkey(){return Zo.decode(this.npub).data}async fetchProfile(e){if(!this.ndk)throw new Error("NDK not set");this.profile||(this.profile={});const t=await this.ndk.fetchEvents({kinds:[0],authors:[this.hexpubkey()]},e);if(t){Array.from(t).sort(((e,t)=>e.created_at-t.created_at)).forEach((e=>{try{this.profile=function(e,t){const n=JSON.parse(e.content);return n.name&&(t.name=n.name),n.display_name&&(t.displayName=n.display_name),n.displayName&&(t.displayName=n.displayName),n.image&&(t.image=n.image),n.picture&&(t.image=n.picture),n.banner&&(t.banner=n.banner),n.bio&&(t.bio=n.bio),n.nip05&&(t.nip05=n.nip05),n.lud06&&(t.lud06=n.lud06),n.lud16&&(t.lud16=n.lud16),n.about&&(t.about=n.about),n.zapService&&(t.zapService=n.zapService),t}(e,this.profile)}catch(e){}}))}return t}follows=db.bind(this);async relayList(){if(!this.ndk)throw new Error("NDK not set");const e=await this.ndk.fetchEvents({kinds:[10002],authors:[this.hexpubkey()]});return e||new Set}};async function yb(e,t){if(!t){if(!this.ndk)throw new Error("No signer available");await this.ndk.assertSigner(),t=this.ndk.signer}if(!e){const t=this.getMatchingTags("p");if(1!==t.length)throw new Error("No recipient could be determined and no explicit recipient was provided");(e=new pb({hexpubkey:t[0][1]})).ndk=this.ndk}this.content=await t.encrypt(e,this.content)}async function gb(e,t){if(!t){if(!this.ndk)throw new Error("No signer available");await this.ndk.assertSigner(),t=this.ndk.signer}e||(e=this.author()),this.content=await t.decrypt(e,this.content)}function bb(){return this.isParamReplaceable()?Zo.naddrEncode({kind:this.kind,pubkey:this.pubkey,identifier:this.replaceableDTag()}):Zo.noteEncode(this.tagId())}var mb=class extends Kp{ndk;created_at;content="";tags=[];kind;id="";sig;pubkey="";constructor(e,t){super(),this.ndk=e,this.created_at=t?.created_at,this.content=t?.content||"",this.tags=t?.tags||[],this.id=t?.id||"",this.sig=t?.sig,this.pubkey=t?.pubkey||"",this.kind=t?.kind}rawEvent(){return{created_at:this.created_at,content:this.content,tags:this.tags,kind:this.kind,pubkey:this.pubkey,id:this.id,sig:this.sig}}author(){const e=new pb({hexpubkey:this.pubkey});return e.ndk=this.ndk,e}async toNostrEvent(e){if(!e&&""===this.pubkey){const e=await(this.ndk?.signer?.user());this.pubkey=e?.hexpubkey()||""}this.created_at||(this.created_at=Math.floor(Date.now()/1e3));const t=this.rawEvent(),{content:n,tags:r}=this.generateTags();t.content=n||"",t.tags=r;try{this.id=Uo(t)}catch(e){}return this.id&&(t.id=this.id),this.sig&&(t.sig=this.sig),t}isReplaceable=hb.bind(this);isParamReplaceable=fb.bind(this);encode=bb.bind(this);encrypt=yb.bind(this);decrypt=gb.bind(this);getMatchingTags(e){return this.tags.filter((t=>t[0]===e))}async toString(){return await this.toNostrEvent()}async sign(e){e||this.ndk?.assertSigner(),await this.generateTags(),this.isReplaceable()&&(this.created_at=Math.floor(Date.now()/1e3));const t=await this.toNostrEvent(),n=e||this.ndk?.signer;this.sig=await n.sign(t)}async publish(e){return this.sig||await this.sign(),this.ndk?.publish(this,e)}generateTags(){let e=[];const t=function(e,t=[]){return e=e.replace(/(@|nostr:)(npub|nprofile|note|nevent)[a-zA-Z0-9]+/g,(e=>{try{const n=e.split(/(@|nostr:)/)[2],{type:r,data:o}=Zo.decode(n);let i;switch(r){case"npub":i=["p",o];break;case"nprofile":i=["p",o.pubkey];break;case"nevent":i=["e",o.id];break;case"note":i=["e",o];break;default:return e}return t.find((e=>e[0]==e[0]&&e[1]==e[1]))||t.push(i),`nostr:${n}`}catch(t){return e}})),{content:e,tags:t}}(this.content,this.tags),n=t.content;if(e=t.tags,this.kind&&this.kind>=3e4&&this.kind<=4e4){if(!this.getMatchingTags("d")[0]){const t=[...Array(16)].map((()=>Math.random().toString(36)[2])).join("");e.push(["d",t])}}return{content:n||"",tags:e}}replaceableDTag(){if(this.kind&&this.kind>=3e4&&this.kind<=4e4){const e=this.getMatchingTags("d")[0];return e?e[1]:""}throw new Error("Event is not a parameterized replaceable event")}tagId(){if(this.kind&&this.kind>=3e4&&this.kind<=4e4){const e=this.replaceableDTag();return`${this.kind}:${this.pubkey}:${e}`}return this.id}tagReference(){return this.kind&&this.kind>=3e4&&this.kind<=4e4?["a",this.tagId()]:["e",this.tagId()]}async zap(e,t,n){if(!this.ndk)throw new Error("No NDK instance found");this.ndk.assertSigner();const r=new lb({ndk:this.ndk,zappedEvent:this});return await r.createZapRequest(e,t,n)}},wb=class extends Kp{url;scores;relay;_status;connectedAt;_connectionStats={attempts:0,success:0,durations:[]};complaining=!1;debug;activeSubscriptions=new Set;constructor(e){super(),this.url=e,this.relay=Go(e),this.scores=new Map,this._status=3,this.debug=Dp(`ndk:relay:${e}`),this.relay.on("connect",(()=>{this.updateConnectionStats.connected(),this.emit("connect"),this._status=1})),this.relay.on("disconnect",(()=>{this.updateConnectionStats.disconnected(),this.emit("disconnect"),1===this._status&&(this._status=3,this.handleReconnection())})),this.relay.on("notice",(e=>this.handleNotice(e)))}isFlapping(){const e=this._connectionStats.durations;if(e.length<10)return!1;const t=e.reduce(((e,t)=>e+t),0)/e.length,n=e.map((e=>Math.pow(e-t,2))).reduce(((e,t)=>e+t),0)/e.length;return Math.sqrt(n)<1e3}handleReconnection(){this.isFlapping()&&this.emit("flapping",this,this._connectionStats),this.connectedAt&&Date.now()-this.connectedAt<5e3?setTimeout((()=>this.connect()),6e4):this.connect()}get status(){return this._status}async connect(){try{this.updateConnectionStats.attempt(),this._status=0,await this.relay.connect()}catch(e){throw this.debug("Failed to connect",e),this._status=3,e}}disconnect(){this._status=2,this.relay.close()}async handleNotice(e){(e.includes("oo many")||e.includes("aximum"))&&(this.disconnect(),setTimeout((()=>this.connect()),2e3),console.log(this.relay.url,"Relay complaining?",e)),this.emit("notice",this,e)}subscribe(e){const{filter:t}=e,n=this.relay.sub([t],{id:e.subId});return this.debug(`Subscribed to ${JSON.stringify(t)}`),n.on("event",(t=>{const n=new mb(void 0,t);e.eventReceived(n,this)})),n.on("eose",(()=>{e.eoseReceived(this)})),this.activeSubscriptions.add(e),e.on("close",(()=>{this.activeSubscriptions.delete(e)})),n}async publish(e){const t=await e.toNostrEvent(),n=this.relay.publish(t);n.on("failed",(t=>{this.debug("Publish failed",t,e.rawEvent())})),n.on("ok",(()=>{this.debug("Publish ok",e.rawEvent())})),this.debug(`Published event ${e.id}`,e.rawEvent())}scoreSlowerEvent(e){}updateConnectionStats={connected:()=>{this._connectionStats.success++,this._connectionStats.connectedAt=Date.now()},disconnected:()=>{this._connectionStats.connectedAt&&(this._connectionStats.durations.push(Date.now()-this._connectionStats.connectedAt),this._connectionStats.durations.length>100&&this._connectionStats.durations.shift()),this._connectionStats.connectedAt=void 0},attempt:()=>{this._connectionStats.attempts++}};get connectionStats(){return this._connectionStats}},vb=class extends Kp{relays=new Map;debug;constructor(e=[],t){super(),this.debug=t.debug.extend("pool");for(const t of e){const e=new wb(t);e.on("notice",((e,t)=>this.emit("notice",e,t))),e.on("connect",(()=>this.handleRelayConnect(t))),e.on("disconnect",(()=>this.emit("relay:disconnect",e))),e.on("flapping",(()=>this.handleFlapping(e))),this.relays.set(t,e)}}handleRelayConnect(e){this.debug(`Relay ${e} connected`),this.emit("relay:connect",this.relays.get(e)),this.stats().connected===this.relays.size&&this.emit("connect")}async connect(e){const t=[];this.debug(`Connecting to ${this.relays.size} relays${e?`, timeout ${e}...`:""}`);for(const n of this.relays.values())if(e){const r=new Promise(((t,n)=>{setTimeout((()=>n(`Timed out after ${e}ms`)),e)}));t.push(Promise.race([n.connect(),r]).catch((e=>{this.debug(`Failed to connect to relay ${n.url}: ${e}`)})))}else t.push(n.connect());await Promise.all(t)}handleFlapping(e){this.debug(`Relay ${e.url} is flapping`),this.relays.delete(e.url),this.emit("flapping",e)}size(){return this.relays.size}stats(){const e={total:0,connected:0,disconnected:0,connecting:0};for(const t of this.relays.values())e.total++,1===t.status?e.connected++:3===t.status?e.disconnected++:0===t.status&&e.connecting++;return e}},_b={closeOnEose:!0,cacheUsage:"CACHE_FIRST",groupable:!0,groupableDelay:100},xb=class extends Kp{subId;filter;opts;relaySet;ndk;relaySubscriptions;debug;constructor(e,t,n,r,o){if(super(),this.ndk=e,this.subId=o||Math.floor(9999991e3*Math.random()).toString(),this.filter=t,this.relaySet=r,this.opts={..._b,...n||{}},this.relaySubscriptions=new Map,this.debug=e.debug.extend("subscription"),"ONLY_CACHE"===this.opts.cacheUsage&&!this.opts.closeOnEose)throw new Error("Cannot use cache-only options with a persistent subscription")}groupableId(){if(!this.opts?.groupable)return null;const e=(this.filter.kinds?.length||0)>0,t=!this.filter.since&&!this.filter.until,n=!this.filter.limit;if(e&&t&&n){let e=this.filter.kinds.join(",");return e+=`-${Object.keys(this.filter||{}).sort().join("-")}`,e}return null}shouldQueryCache(){return"ONLY_RELAY"!==this.opts?.cacheUsage}shouldQueryRelays(){return"ONLY_CACHE"!==this.opts?.cacheUsage}async start(){let e;if(this.shouldQueryCache()){e=this.startWithCache();if(this.ndk.cacheAdapter?.locking&&this.shouldQueryRelays()&&"PARALLEL"!==this.opts?.cacheUsage&&(this.debug("waiting for cache to finish"),await e,this.eventFirstSeen.size>0))return this.debug("cache hit, skipping relay query"),void this.emit("eose",this)}this.shouldQueryRelays()&&this.startWithRelaySet()}stop(){this.relaySubscriptions.forEach((e=>e.unsub())),this.relaySubscriptions.clear(),this.emit("close",this)}async startWithCache(){if(this.ndk.cacheAdapter?.query){this.debug("querying cache");const e=this.ndk.cacheAdapter.query(this);this.ndk.cacheAdapter.locking&&await e}}startWithRelaySet(){this.relaySet||(this.relaySet=function(e,t){const n=new Set;return e.pool?.relays.forEach((t=>{t.complaining?e.debug(`Relay ${t.url} is complaining, not adding to set`):n.add(t)})),new kb(n,e)}(this.ndk,this.filter)),this.relaySet&&(this.debug("querying relays"),this.relaySet.subscribe(this))}eventFirstSeen=new Map;eventReceived(e,t,n=!1){if(!n&&t){if(this.eventFirstSeen.has(e.id)){const n=Date.now()-(this.eventFirstSeen.get(e.id)||0);return t.scoreSlowerEvent(n),void this.emit("event:dup",e,t,n,this)}this.ndk.cacheAdapter&&this.ndk.cacheAdapter.setEvent(e,this.filter),this.eventFirstSeen.set(`${e.id}`,Date.now())}else this.eventFirstSeen.set(`${e.id}`,0);this.emit("event",e,t,this)}eosesSeen=new Set;eoseTimeout;eoseReceived(e){this.opts?.closeOnEose&&(this.relaySubscriptions.get(e)?.unsub(),this.relaySubscriptions.delete(e),0===this.relaySubscriptions.size&&this.emit("close",this)),this.eosesSeen.add(e);this.eosesSeen.size===this.relaySet?.size()?this.emit("eose"):(this.eoseTimeout&&clearTimeout(this.eoseTimeout),this.eoseTimeout=setTimeout((()=>{this.emit("eose")}),500))}},Eb=class extends xb{subscriptions;constructor(e,t){const n=e.debug.extend("subscription-group"),r=function(e){const t={};return e.forEach((e=>{Object.entries(e).forEach((([e,n])=>{Array.isArray(n)?void 0===t[e]?t[e]=[...n]:t[e]=Array.from(new Set([...t[e],...n])):t[e]=n}))})),t}(t.map((e=>e.filter)));super(e,r,t[0].opts,t[0].relaySet),this.subscriptions=t,n("merged filters",{count:t.length,mergedFilters:this.filter}),this.on("event",this.forwardEvent),this.on("event:dup",this.forwardEventDup),this.on("eose",this.forwardEose),this.on("close",this.forwardClose)}isEventForSubscription(e,t){const{filter:n}=t;return!!n&&zo(n,e.rawEvent())}forwardEvent(e,t){for(const n of this.subscriptions)this.isEventForSubscription(e,n)&&n.emit("event",e,t,n)}forwardEventDup(e,t,n){for(const r of this.subscriptions)this.isEventForSubscription(e,r)&&r.emit("event:dup",e,t,n,r)}forwardEose(){for(const e of this.subscriptions)e.emit("eose",e)}forwardClose(){for(const e of this.subscriptions)e.emit("close",e)}};var kb=class{relays;debug;ndk;constructor(e,t){this.relays=e,this.ndk=t,this.debug=t.debug.extend("relayset")}static fromRelayUrls(e,t){const n=new Set;for(const r of e){const e=t.pool.relays.get(r);e&&n.add(e)}return new kb(new Set(n),t)}subscribeOnRelay(e,t){const n=e.subscribe(t);t.relaySubscriptions.set(e,n)}getId(){const e=Array.from(this.relays).map((e=>e.url)).sort().join(",");return be(Ie(e))}subscribe(e){const t=e.groupableId(),n=`${this.getId()}:${t}`;if(!n)return this.executeSubscription(e),e;const r=this.ndk.delayedSubscriptions.get(n);return r?r.push(e):(setTimeout((()=>{this.executeDelayedSubscription(n)}),e.opts.groupableDelay),this.ndk.delayedSubscriptions.set(n,[e])),e}executeDelayedSubscription(e){const t=this.ndk.delayedSubscriptions.get(e);this.ndk.delayedSubscriptions.delete(e),t&&(t.length>1?this.executeSubscriptions(t):this.executeSubscription(t[0]))}executeSubscriptions(e){const t=e[0].ndk,n=new Eb(t,e);this.executeSubscription(n)}executeSubscription(e){this.debug("subscribing",{filter:e.filter});for(const t of this.relays)if(1===t.status)this.subscribeOnRelay(t,e);else{const n=()=>{this.debug("new relay coming online for active subscription",{relay:t.url,filter:e.filter}),this.subscribeOnRelay(t,e)};t.once("connect",n),e.once("close",(()=>{t.removeListener("connect",n)}))}return e}async publish(e){this.relays.forEach((async t=>{try{await t.publish(e)}catch(e){}}))}size(){return this.relays.size}};var Sb=class extends Kp{pool;signer;cacheAdapter;debug;devWriteRelaySet;delayedSubscriptions;constructor(e={}){super(),this.debug=e.debug||Dp("ndk"),this.pool=new vb(e.explicitRelayUrls||[],this),this.signer=e.signer,this.cacheAdapter=e.cacheAdapter,this.delayedSubscriptions=new Map,e.devWriteRelayUrls&&(this.devWriteRelaySet=kb.fromRelayUrls(e.devWriteRelayUrls,this))}async connect(e){return this.debug("Connecting to relays",{timeoutMs:e}),this.pool.connect(e)}getUser(e){const t=new pb(e);return t.ndk=this,t}subscribe(e,t,n){const r=new xb(this,e,t,n);return r.start(),r}async publish(e,t){return t||(t=this.devWriteRelaySet||function(e,t){const n=new Set;return e.pool?.relays.forEach((e=>n.add(e))),new kb(n,e)}(this)),t.publish(e)}async fetchEvent(e,t={}){return new Promise((n=>{const r=this.subscribe(e,{...t,closeOnEose:!0});r.on("event",(e=>{e.ndk=this,n(e)})),r.on("eose",(()=>{n(null)}))}))}async fetchEvents(e,t={}){return new Promise((n=>{const r=new Map,o=this.subscribe(e,{...t,closeOnEose:!0});o.on("event",(e=>{const t=r.get(e.tagId());var n,o;t&&(o=e,e=(n=t).created_at>o.created_at?n:o),e.ndk=this,r.set(e.tagId(),e)})),o.on("eose",(()=>{n(new Set(r.values()))}))}))}async assertSigner(){if(!this.signer)throw this.emit("signerRequired"),new Error("Signer required")}};new Dp("nostr:adapter");const Ob=new Dp("nostr:adapter:profiles"),Ab=new Dp("nostr:adapter:write");class Cb{relayStatus={};#e=null;#t={};#n=new _a;#r={};tags;referenceTags;type;#o;chatId;relayUrls=[];#i=[];#s=[];#a;#c={};#u={};constructor(e,{tags:t,referenceTags:n,type:r="DM",chatId:o,websiteOwnerPubkey:i,relays:s}={}){this.pubkey=e,this.#o=i,this.relayUrls=s,r&&this.setChatConfiguration(r,t,n,o)}setChatConfiguration(e,t,n,r){this.type=e,this.tags=t,this.chatId=r,this.referenceTags=n,this.#e&&this.#l();let o=[];switch(this.type){case"DM":o.push({kinds:[4],"#p":[this.pubkey,this.#o],authors:[this.pubkey,this.#o]});break;case"GROUP":this.chatId&&o.push({kinds:[41,42],"#e":[this.chatId],limit:200});case"GLOBAL":this.tags&&this.tags.length>0&&o.push({kinds:[1],"#t":this.tags,limit:20}),this.referenceTags&&this.referenceTags.length>0&&o.push({kinds:[1],"#r":this.referenceTags,limit:20})}o&&o.length>0&&(this.#h(),this.subscribe(o,(e=>{this.#f(e)})))}async getPubKey(){return this.pubkey}on(e,t){this.#n.on(e,t)}async send(e,{tagPubKeys:t,tags:n}={}){let r;n||(n=[]),r="DM"===this.type?await this.sendKind4(e,{tagPubKeys:t,tags:n}):"GROUP"===this.type?await this.sendKind42(e,{tagPubKeys:t,tags:n,chatId:this.chatId}):await this.sendKind1(e,{tagPubKeys:t,tags:n}),r.id=Uo(r);const o=await this.signEvent(r);return this.#d(o),r.id}async sendKind4(e,{tagPubKeys:t,tags:n}={}){let r=await this.encrypt(this.#o,e);return{kind:4,pubkey:this.pubkey,created_at:Math.floor(Date.now()/1e3),content:r,tags:[["p",this.#o],...n]}}async sendKind42(e,{tagPubKeys:t,tags:n,chatId:r}={}){n||(n=[]),this.tags&&this.tags.forEach((e=>n.push(["t",e])));const o=!!n.find((e=>"e"===e[0]));o||n.push(["e",r,"wss://nos.lol",o?"reply":"root"]),this.referenceTags&&this.referenceTags.forEach((e=>n.push(["r",e])));let i={kind:42,created_at:Math.floor(Date.now()/1e3),tags:n,content:e,pubkey:this.pubkey};if(t)for(let e of t)e&&i.tags.push(["p",e]);return i.id=Uo(i),this.subscribeToEventAndResponses(i.id),i}async sendKind1(e,{tagPubKeys:t,tags:n}={}){n||(n=[]),this.tags&&this.tags.forEach((e=>n.push(["t",e]))),this.referenceTags&&this.referenceTags.forEach((e=>n.push(["r",e])));let r={kind:1,created_at:Math.floor(Date.now()/1e3),tags:n,content:e,pubkey:this.pubkey};if(t)for(let e of t)e&&r.tags.push(["p",e]);return r.id=Uo(r),this.subscribeToEventAndResponses(r.id),r}async#d(e){Ab("publish",e),this.#e.send(["EVENT",e])}async onEvent(e,t){this.#p(e.pubkey),t(e)}async delayedSubscribe(e,t,n){this.#c[t]=this.#c[t]||[],this.#c[t].push(e),this.#u[t]||(this.#u[t]=setTimeout((()=>{delete this.#u[t];let e=this.#c[t];delete this.#c[t];let n=[];n=e.reduce(((e,t,n)=>(n%10==0&&e.push([]),e[e.length-1].push(t),e)),n),n.forEach((e=>{this.subscribe(e,(e=>{this.#f(e)}))}))}),n))}async subscribe(e,t=null){return t||(t=e=>{this.#f(e)}),this.#y(e,t)}async#y(e,t){const n=$p();return this.#r[n]=t,Array.isArray(e)||(e=[e]),this.#e.subscribe(n,e),this.#e.on("event",((e,t,n)=>{this.onEvent(n,this.#r[t])})),n}async#f(e){if(this.#t[e.id])return;this.#t[e.id]=!0,4===e.kind&&(e.content=await this.decrypt(this.#o,e.content));let t,n=[];if(5===e.kind&&(n=e.tags.filter((e=>"e"===e[0])).map((e=>e[1]))),9735===e.kind){t=function(e){const t=e.getMatchingTags("description")[0],n=e.getMatchingTags("bolt11")[0];let r,o;if(!t||!n||!n[1])return null;try{let e=t[1];if(e.startsWith("%")&&(e=decodeURIComponent(e)),""===e)return null;o=JSON.parse(e),r=ub.decode(n[1])}catch(e){return null}const i=r.sections.find((e=>"amount"===e.name));if(!i)return null;const s=parseInt(i.value);if(!s)return null;const a=o.content,c=o.pubkey,u=e.getMatchingTags("p")[0][1];let l=e.getMatchingTags("e")[0];l||(l=e.getMatchingTags("a")[0]);const h=l?l[1]:void 0;return{id:e.id,zapper:e.pubkey,zappee:c,zapped:u,zappedEvent:h,amount:s,comment:a}}(new mb(null,e)),console.log(`received a zap invoice: ${t}`,e)}switch(e.kind){case 1:case 42:case 4:this.#n.emit("message",e);break;case 41:this.#n.emit("channelMetadata",e);break;case 5:this.#n.emit("deleted",n);break;case 7:this.#n.emit("reaction",e);break;case 9735:this.#n.emit("zap",t);break;default:console.log("unknown event kind",e.kind,e)}}subscribeToEventAndResponses(e){this.subscribe([{ids:[e]},{"#e":[e]}],(e=>{this.#f(e)}))}subscribeToResponses(e){this.subscribe([{"#e":[e.id]}],(e=>{this.#f(e),this.subscribeToResponses(e)}))}#h(){this.relayUrls.forEach((e=>{this.relayStatus[e]="disconnected"})),this.#n.emit("connectivity",this.relayStatus),this.#e=new Pp(this.relayUrls),this.#e.on("open",(e=>{this.relayStatus[e.url]="connected",this.#n.emit("connectivity",this.relayStatus)})),this.#e.on("error",((e,t,n)=>{this.relayStatus[e.url]="error",this.#n.emit("connectivity",this.relayStatus),console.log("error from relay",e.url,t,n)})),this.#e.on("close",((e,t)=>{this.relayStatus[e.url]="closed",this.#n.emit("connectivity",this.relayStatus),console.log("error from relay",e.url,t)})),this.#e.on("notice",((e,t)=>{console.log("notice",e.url,t)}))}#l(){this.relayUrls.forEach((e=>{this.relayStatus[e]="disconnected"})),this.#n.emit("connectivity",this.relayStatus),this.#e.close(),this.#e=null}reqProfile(e){this.#p(e)}#p(e,t=null){this.#i.includes(e)||this.#s.includes(e)||(this.#i.push(e),this.#s.push(e),this.#a||(this.#a=setTimeout((()=>{this.#a=null,this.#g()}),500)))}async#g(){if(this.#i.length>0){Ob("requesting profiles",this.#i);const e=await this.subscribe({kinds:[0],authors:this.#i},(e=>{this.#b(e)}));Ob("subscribed to request",{subId:e}),this.#i=[],setTimeout((()=>{Ob("unsubscribing from request",{subId:e}),this.#e.unsubscribe(e)}),5e3)}}#b(e){let t;Ob("received profile",e);try{t=JSON.parse(e.content)}catch(t){return void Ob("failed to parse profile",e)}this.#n.emit("profile",{pubkey:e.pubkey,profile:t})}}class Rb extends Cb{constructor(e,t={}){super(e,t)}async signEvent(e){return await window.nostr.signEvent(e)}async encrypt(e,t){return await window.nostr.nip04.encrypt(e,t)}async decrypt(e,t){return await window.nostr.nip04.decrypt(e,t)}}function Tb(){Tb=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",s=o.asyncIterator||"@@asyncIterator",a=o.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,n){return e[t]=n}}function u(e,t,n,o){var i=t&&t.prototype instanceof f?t:f,s=Object.create(i.prototype),a=new S(o||[]);return r(s,"_invoke",{value:_(e,n,a)}),s}function l(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=u;var h={};function f(){}function d(){}function p(){}var y={};c(y,i,(function(){return this}));var g=Object.getPrototypeOf,b=g&&g(g(O([])));b&&b!==t&&n.call(b,i)&&(y=b);var m=p.prototype=f.prototype=Object.create(y);function w(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function v(e,t){function o(r,i,s,a){var c=l(e[r],e,i);if("throw"!==c.type){var u=c.arg,h=u.value;return h&&"object"==typeof h&&n.call(h,"__await")?t.resolve(h.__await).then((function(e){o("next",e,s,a)}),(function(e){o("throw",e,s,a)})):t.resolve(h).then((function(e){u.value=e,s(u)}),(function(e){return o("throw",e,s,a)}))}a(c.arg)}var i;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){o(e,n,t,r)}))}return i=i?i.then(r,r):r()}})}function _(e,t,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return A()}for(n.method=o,n.arg=i;;){var s=n.delegate;if(s){var a=x(s,n);if(a){if(a===h)continue;return a}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var c=l(e,t,n);if("normal"===c.type){if(r=n.done?"completed":"suspendedYield",c.arg===h)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r="completed",n.method="throw",n.arg=c.arg)}}}function x(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,x(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),h;var o=l(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,h;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,h):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,h)}function E(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function k(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(E,this),this.reset(!0)}function O(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r=0;--o){var i=this.tryEntries[o],s=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var a=n.call(i,"catchLoc"),c=n.call(i,"finallyLoc");if(a&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),k(n),h}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;k(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:O(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),h}},e}function Lb(e,t,n,r,o,i,s){try{var a=e[i](s),c=a.value}catch(e){return void n(e)}a.done?t(c):Promise.resolve(c).then(r,o)}function Ib(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function s(e){Lb(i,r,o,s,a,"next",e)}function a(e){Lb(i,r,o,s,a,"throw",e)}s(void 0)}))}}function Pb(){return Pb=Object.assign?Object.assign.bind():function(e){for(var t=1;t(Ephemeral Keys)',S(i,"class","bg-purple-900 hover:bg-purple-700 w-full p-4 rounded-xl text-center font-regular text-gray-200 svelte-f7jodf"),S(a,"class","bg-purple-900 hover:bg-purple-700 w-full p-4 rounded-xl text-center font-regular text-gray-200 svelte-f7jodf"),S(n,"class","flex flex-col gap-1 svelte-f7jodf")},m(e,r){g(e,n,r),l&&l.m(n,null),y(n,o),y(n,i),y(n,s),y(n,a),c||(u=[E(i,"click",k(t[3])),E(a,"click",k(t[2]))],c=!0)},p(e,t){},d(e){e&&b(n),l&&l.d(),c=!1,r(u)}}}function Jb(t){let n,o,i,s,a,c,u;return{c(){n=w("p"),n.textContent="Scan this with your Nostr Connect (click to copy to clipboard)",o=_(),i=w("div"),s=_(),a=w("button"),a.textContent="Cancel",S(n,"class","text-gray-600 mb-3 svelte-f7jodf"),S(i,"class","bg-white w-full p-3 svelte-f7jodf"),S(a,"class","bg-purple-900 hover:bg-purple-700 w-full p-2 rounded-xl text-center font-regular text-white svelte-f7jodf")},m(e,r){g(e,n,r),g(e,o,r),g(e,i,r),g(e,s,r),g(e,a,r),c||(u=[E(i,"click",k(t[4])),E(a,"click",k(t[8]))],c=!0)},p:e,d(e){e&&b(n),e&&b(o),e&&b(i),e&&b(s),e&&b(a),c=!1,r(u)}}}function Qb(t){let n,r,o,i;function s(e,t){return e[0]?Jb:Xb}let a=s(t),c=a&&a(t);return{c(){n=w("h1"),n.textContent="How would you like to connect?",r=_(),o=_(),c&&c.c(),i=x(),S(n,"class","font-bold text-xl mb-3 svelte-f7jodf")},m(e,t){g(e,n,t),g(e,r,t),g(e,o,t),c&&c.m(e,t),g(e,i,t)},p(e,[t]){a===(a=s(e))&&c?c.p(e,t):(c&&c.d(1),c=a&&a(e),c&&(c.c(),c.m(i.parentNode,i)))},i:e,o:e,d(e){e&&b(n),e&&b(r),e&&b(o),c&&c.d(e),e&&b(i)}}}function em(e,t,n){let r,o,{websiteOwnerPubkey:i}=t,{chatConfiguration:s}=t,{relays:a}=t;function c(){window.nostr.getPublicKey().then((e=>{localStorage.setItem("nostrichat-type","nip07"),ie.set(new Rb(e,o))}))}async function u(){let e=localStorage.getItem("nostrichat-nostr-connect-key"),t=localStorage.getItem("nostrichat-nostr-connect-public-key");if(e)return void ie.set(new Vb(t,e,o));e=Ao();const i=new Zb({secretKey:e,relay:"wss://nostr.vulpem.com"});let s,a,c;i.events.on("connect",(o=>{localStorage.setItem("nostrichat-nostr-connect-key",e),localStorage.setItem("nostrichat-nostr-connect-public-key",o),localStorage.setItem("nostrichat-type","nip-46"),console.log("connected to nostr connect relay"),t=o,ie.set(new Vb(t,e)),n(0,r=null)})),i.events.on("disconnect",(()=>{console.log("disconnected from nostr connect relay")})),await i.init();try{s=window.document.title||"Nostrichat",a=new URL(window.location.href),c=a.hostname}catch(e){a=window.location.href,c=a}const u=new Gb({target:Co(e),relay:"wss://nostr.vulpem.com",metadata:{name:s,description:"🔉🔉🔉",url:a}});n(0,r=u.toString())}L((()=>{const e=localStorage.getItem("nostrichat-type");"nip07"===e?c():"nip-46"===e&&u(),o={type:s.chatType,tags:s.chatTags,referenceTags:s.chatReferenceTags,websiteOwnerPubkey:i,relays:a}}));return e.$$set=e=>{"websiteOwnerPubkey"in e&&n(5,i=e.websiteOwnerPubkey),"chatConfiguration"in e&&n(6,s=e.chatConfiguration),"relays"in e&&n(7,a=e.relays)},[r,c,async function(){ie.set(new Yb(o))},u,function(){navigator.clipboard.writeText(r)},i,s,a,()=>{n(0,r=null)}]}class tm extends ne{constructor(e){super(),te(this,e,em,Qb,i,{websiteOwnerPubkey:5,chatConfiguration:6,relays:7})}}var nm,rm={},om={},im={},sm=Ln&&Ln.__extends||(nm=function(e,t){return nm=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},nm(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}nm(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});function am(e,t,n){if(Object.setPrototypeOf(e,n.prototype),t===n)if(e.name=t.name,Error.captureStackTrace)Error.captureStackTrace(e,n);else{var r=new Error(e.message).stack;r&&(e.stack=function(e,t){if(!e)return e;if(!t)return e;var n=new RegExp("\\s+at\\s".concat(t,"\\s")),r=e.split("\n");return r.filter((function(e){return!e.match(n)})).join("\n")}(r,"new ".concat(t.name)))}}Object.defineProperty(im,"__esModule",{value:!0}),im.InternalError=im.InvalidDataError=im.RoutingError=im.UnsupportedMethodError=im.ConnectionError=im.RejectionError=im.MissingProviderError=void 0;var cm=function(e){function t(n){var r=this.constructor,o=e.call(this,n)||this;return am(o,r,t),o}return sm(t,e),t}(Error);im.MissingProviderError=cm;var um=function(e){function t(n){var r=this.constructor,o=e.call(this,n)||this;return am(o,r,t),o}return sm(t,e),t}(Error);im.RejectionError=um;var lm=function(e){function t(n){var r=this.constructor,o=e.call(this,n)||this;return am(o,r,t),o}return sm(t,e),t}(Error);im.ConnectionError=lm;var hm=function(e){function t(n){var r=this.constructor,o=e.call(this,n)||this;return am(o,r,t),o}return sm(t,e),t}(Error);im.UnsupportedMethodError=hm;var fm=function(e){function t(n){var r=this.constructor,o=e.call(this,n)||this;return am(o,r,t),o}return sm(t,e),t}(Error);im.RoutingError=fm;var dm=function(e){function t(n){var r=this.constructor,o=e.call(this,n)||this;return am(o,r,t),o}return sm(t,e),t}(Error);im.InvalidDataError=dm;var pm=function(e){function t(n){var r=this.constructor,o=e.call(this,n)||this;return am(o,r,t),o}return sm(t,e),t}(Error);im.InternalError=pm,Object.defineProperty(om,"__esModule",{value:!0}),om.requestProvider=void 0;var ym=im;om.requestProvider=function(e){return new Promise((function(e,t){if("undefined"==typeof window)return t(new Error("Must be called in a browser context"));var n=window.webln;if(!n)return t(new ym.MissingProviderError("Your browser has no WebLN provider"));n.enable().then((function(){return e(n)})).catch((function(e){return t(e)}))}))};var gm,bm,mm,wm={};function vm(e){let t,n,r=(e[2]||e[1])+"";return{c(){t=w("span"),n=v(r),S(t,"class","text-base text-white flex flex-col items-center")},m(e,r){g(e,t,r),y(t,n)},p(e,t){6&t&&r!==(r=(e[2]||e[1])+"")&&O(n,r)},d(e){e&&b(t)}}}function _m(e){let t,n;return{c(){t=w("span"),n=v(e[0]),S(t,"class","text-xl")},m(e,r){g(e,t,r),y(t,n)},p(e,t){1&t&&O(n,e[0])},d(e){e&&b(t)}}}function xm(t){let n,o,i;function s(e,t){return e[3]?vm:_m}let a=s(t),c=a(t);return{c(){n=w("div"),c.c()},m(e,r){g(e,n,r),c.m(n,null),o||(i=[E(n,"mouseenter",t[7]),E(n,"mouseleave",t[8]),E(n,"click",k(t[4]))],o=!0)},p(e,[t]){a===(a=s(e))&&c?c.p(e,t):(c.d(1),c=a(e),c&&(c.c(),c.m(n,null)))},i:e,o:e,d(e){e&&b(n),c.d(),o=!1,r(i)}}}function Em(e,t,n){let r;c(e,ce,(e=>n(9,r=e)));let{icon:o,amount:i,amountDisplay:s,event:a,mobilePR:l}=t,h=!1;return e.$$set=e=>{"icon"in e&&n(0,o=e.icon),"amount"in e&&n(1,i=e.amount),"amountDisplay"in e&&n(2,s=e.amountDisplay),"event"in e&&n(6,a=e.event),"mobilePR"in e&&n(5,l=e.mobilePR)},[o,i,s,h,async function(){const e=new class{_userPromise;constructor(){if(!window.nostr)throw new Error("NIP-07 extension not available")}async blockUntilReady(){const e=await(window.nostr?.getPublicKey());if(!e)throw new Error("User rejected access");return new pb({hexpubkey:e})}async user(){return this._userPromise||(this._userPromise=this.blockUntilReady()),this._userPromise}async sign(e){if(!window.nostr)throw new Error("NIP-07 extension not available");return(await window.nostr.signEvent(e)).sig}async encrypt(e,t){if(!window.nostr)throw new Error("NIP-07 extension not available");const n=e.hexpubkey();return window.nostr.nip04.encrypt(n,t)}async decrypt(e,t){if(!window.nostr)throw new Error("NIP-07 extension not available");const n=e.hexpubkey();return window.nostr.nip04.decrypt(n,t)}},t=new Sb({explicitRelayUrls:["wss://nos.lol","wss://relay.nostr.band","wss://relay.damus.io","wss://nostr.mom","wss://no.str.cr"]});let o,s;t.signer=e,await t.connect();try{const e=new mb(t,a);o=await e.zap(1e3*i)}catch(e){return void alert(e)}try{s=await rm.requestProvider()}catch(e){return void n(5,l=o)}try{await s.sendPayment(o),u(ce,r=null,r)}catch(e){n(5,l=o)}},l,a,()=>n(3,h=!0),()=>n(3,h=!1)]}Object.defineProperty(wm,"__esModule",{value:!0}),gm=rm,bm=Ln&&Ln.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),mm=Ln&&Ln.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||bm(t,e,n)},Object.defineProperty(gm,"__esModule",{value:!0}),mm(om,gm),mm(wm,gm),mm(im,gm);class km extends ne{constructor(e){super(),te(this,e,Em,xm,i,{icon:0,amount:1,amountDisplay:2,event:6,mobilePR:5})}}function Sm(e,t,n){const r=e.slice();return r[32]=t[n],r}function Om(t){let n;return{c(){n=v("⚡️")},m(e,t){g(e,n,t)},p:e,d(e){e&&b(n)}}}function Am(e){let t,n,r,o,i=e[9]/1e3+"";return{c(){t=w("p"),n=v("⚡️\n "),r=w("span"),o=v(i),S(r,"class","text-orange-500 font-semibold svelte-f7jodf"),S(t,"class","flex flex-col items-center my-4 svelte-f7jodf")},m(e,i){g(e,t,i),y(t,n),y(t,r),y(r,o)},p(e,t){512&t[0]&&i!==(i=e[9]/1e3+"")&&O(o,i)},d(e){e&&b(t)}}}function Cm(e){let t,n,r,o;const i=[Tm,Rm],s=[];function a(e,t){return e[8]?0:1}return t=a(e),n=s[t]=i[t](e),{c(){n.c(),r=x()},m(e,n){s[t].m(e,n),g(e,r,n),o=!0},p(e,o){let c=t;t=a(e),t===c?s[t].p(e,o):(K(),V(s[c],1,1,(()=>{s[c]=null})),G(),n=s[t],n?n.p(e,o):(n=s[t]=i[t](e),n.c()),Z(n,1),n.m(r.parentNode,r))},i(e){o||(Z(n),o=!0)},o(e){V(n),o=!1},d(e){s[t].d(e),e&&b(r)}}}function Rm(e){let t,n,r,o,i,s,a,c,u,l,h,f,d,p,m,v,x,E,k,O,A,C,R,T,L;function I(t){e[20](t)}let j={icon:"👍",amount:500,event:e[0]};function U(t){e[21](t)}void 0!==e[8]&&(j.mobilePR=e[8]),r=new km({props:j}),P.push((()=>Y(r,"mobilePR",I)));let B={icon:"🤙",amount:2500,amountDisplay:"2.5k",event:e[0]};function N(t){e[22](t)}void 0!==e[8]&&(B.mobilePR=e[8]),a=new km({props:B}),P.push((()=>Y(a,"mobilePR",U)));let M={icon:"🙌",amount:5e3,amountDisplay:"5k",event:e[0]};function z(t){e[23](t)}void 0!==e[8]&&(M.mobilePR=e[8]),h=new km({props:M}),P.push((()=>Y(h,"mobilePR",N)));let F={icon:"🧡",amount:1e4,amountDisplay:"10k",event:e[0]};function D(t){e[24](t)}void 0!==e[8]&&(F.mobilePR=e[8]),m=new km({props:F}),P.push((()=>Y(m,"mobilePR",z)));let H={icon:"🤯",amount:1e5,amountDisplay:"100k",event:e[0]};function q(t){e[25](t)}void 0!==e[8]&&(H.mobilePR=e[8]),k=new km({props:H}),P.push((()=>Y(k,"mobilePR",D)));let W={icon:"😎",amount:1e6,amountDisplay:"1M",event:e[0]};return void 0!==e[8]&&(W.mobilePR=e[8]),R=new km({props:W}),P.push((()=>Y(R,"mobilePR",q))),{c(){t=w("div"),n=w("div"),X(r.$$.fragment),i=_(),s=w("div"),X(a.$$.fragment),u=_(),l=w("div"),X(h.$$.fragment),d=_(),p=w("div"),X(m.$$.fragment),x=_(),E=w("div"),X(k.$$.fragment),A=_(),C=w("div"),X(R.$$.fragment),S(n,"class","flex flex-col hover:bg-orange-500 text-white rounded-full w-12 h-12 items-center justify-center cursor-pointer svelte-f7jodf"),S(s,"class","flex flex-col hover:bg-orange-500 text-white rounded-full w-12 h-12 items-center justify-center cursor-pointer svelte-f7jodf"),S(l,"class","flex flex-col hover:bg-orange-500 text-white rounded-full w-12 h-12 items-center justify-center cursor-pointer svelte-f7jodf"),S(p,"class","flex flex-col hover:bg-orange-500 text-white rounded-full w-12 h-12 items-center justify-center cursor-pointer svelte-f7jodf"),S(E,"class","flex flex-col hover:bg-orange-500 text-white rounded-full w-12 h-12 items-center justify-center cursor-pointer svelte-f7jodf"),S(C,"class","flex flex-col hover:bg-orange-500 text-white rounded-full w-12 h-12 items-center justify-center cursor-pointer svelte-f7jodf"),S(t,"class","flex flex-row items-stretch justify-between w-full svelte-f7jodf")},m(e,o){g(e,t,o),y(t,n),J(r,n,null),y(t,i),y(t,s),J(a,s,null),y(t,u),y(t,l),J(h,l,null),y(t,d),y(t,p),J(m,p,null),y(t,x),y(t,E),J(k,E,null),y(t,A),y(t,C),J(R,C,null),L=!0},p(e,t){const n={};1&t[0]&&(n.event=e[0]),!o&&256&t[0]&&(o=!0,n.mobilePR=e[8],$((()=>o=!1))),r.$set(n);const i={};1&t[0]&&(i.event=e[0]),!c&&256&t[0]&&(c=!0,i.mobilePR=e[8],$((()=>c=!1))),a.$set(i);const s={};1&t[0]&&(s.event=e[0]),!f&&256&t[0]&&(f=!0,s.mobilePR=e[8],$((()=>f=!1))),h.$set(s);const u={};1&t[0]&&(u.event=e[0]),!v&&256&t[0]&&(v=!0,u.mobilePR=e[8],$((()=>v=!1))),m.$set(u);const l={};1&t[0]&&(l.event=e[0]),!O&&256&t[0]&&(O=!0,l.mobilePR=e[8],$((()=>O=!1))),k.$set(l);const d={};1&t[0]&&(d.event=e[0]),!T&&256&t[0]&&(T=!0,d.mobilePR=e[8],$((()=>T=!1))),R.$set(d)},i(e){L||(Z(r.$$.fragment,e),Z(a.$$.fragment,e),Z(h.$$.fragment,e),Z(m.$$.fragment,e),Z(k.$$.fragment,e),Z(R.$$.fragment,e),L=!0)},o(e){V(r.$$.fragment,e),V(a.$$.fragment,e),V(h.$$.fragment,e),V(m.$$.fragment,e),V(k.$$.fragment,e),V(R.$$.fragment,e),L=!1},d(e){e&&b(t),Q(r),Q(a),Q(h),Q(m),Q(k),Q(R)}}}function Tm(t){let n,r,o,i,s,a,c,u;return{c(){n=w("div"),r=w("a"),o=v("Open in wallet"),s=_(),a=w("button"),a.textContent="Cancel",S(r,"href",i=`lightning:${t[8]}`),S(r,"class","text-center w-full p-3 bg-black text-white rounded-t-xl svelte-f7jodf"),S(a,"class","bg-white rounder-b-xl p-3 svelte-f7jodf"),S(n,"class","flex flex-col gap-3 w-full svelte-f7jodf")},m(e,i){g(e,n,i),y(n,r),y(r,o),y(n,s),y(n,a),c||(u=E(a,"click",t[19]),c=!0)},p(e,t){256&t[0]&&i!==(i=`lightning:${e[8]}`)&&S(r,"href",i)},i:e,o:e,d(e){e&&b(n),c=!1,u()}}}function Lm(e){let t,n;return{c(){t=w("div"),n=v(e[10]),S(t,"class","text-xs text-gray-400 svelte-f7jodf")},m(e,r){g(e,t,r),y(t,n)},p(e,t){1024&t[0]&&O(n,e[10])},d(e){e&&b(t)}}}function Im(t){let n;return{c(){n=w("div"),n.textContent="Website owner",S(n,"class","text-purple-500 text-xs svelte-f7jodf")},m(e,t){g(e,n,t)},p:e,d(e){e&&b(n)}}}function Pm(e){let t,n,r=e[1][e[0].id],o=[];for(let t=0;tV(o[e],1,1,(()=>{o[e]=null}));return{c(){t=w("div");for(let e=0;e0?Am:Om}let Y=W(e),X=Y(e),J=e[6]&&Cm(e);let Q=function(e,t){return e[13]?Im:Lm}(e),ee=Q(e),te=e[1][e[0].id].length>0&&Pm(e);return{c(){t=w("div"),n=w("div"),o=w("div"),i=w("a"),s=w("img"),l=_(),h=w("button"),X.c(),d=_(),p=w("div"),J&&J.c(),A=_(),C=w("div"),R=w("div"),T=_(),L=w("div"),I=v(q),j=_(),U=w("div"),B=w("div"),N=w("span"),N.textContent=`${e[14].toLocaleString()}`,M=_(),ee.c(),$=_(),te&&te.c(),z=x(),a(s.src,c=e[4])||S(s,"src",c),S(s,"class","block w-8 h-8 rounded-full "+(e[13]?"ring-purple-700 ring-4":"")+" svelte-f7jodf"),S(s,"alt",""),S(i,"href",u=`nostr:${e[5]}`),S(i,"class","svelte-f7jodf"),S(h,"class",f="rounded-full "+(e[9]>0?"opacity-100 text-base":"bg-orange-500 opacity-10 text-xl")+" w-8 h-8 flex items-center justify-center hover:opacity-100 svelte-f7jodf"),S(p,"class",m=(e[6]?"w-full rounded-full bg-white drop-shadow-xl justify-between border-2 border-gray-200":" rounded-full w-8 h-8 justify-center")+" flex items-center absolute ml-5 mt-10 z-10 svelte-f7jodf"),S(o,"class","min-w-fit flex flex-col gap-2 svelte-f7jodf"),S(R,"class","flex flex-row justify-between text-center overflow-clip text-clip w-full svelte-f7jodf"),S(L,"class",P="max-h-64 text-base cursor-pointer border border-slate-200 "+(e[11]===e[0].id?"bg-purple-700 text-white":"bg-white text-gray-900 hover:bg-slate-100")+" p-4 py-2 overflow-auto rounded-2xl shadow-sm svelte-f7jodf"),S(N,"class","py-2 svelte-f7jodf"),S(B,"class","text-xs text-gray-400 text-ellipsis overflow-clip whitespace-nowrap svelte-f7jodf"),S(U,"class","flex flex-row-reverse justify-between mt-1 overflow-clip items-center relative svelte-f7jodf"),S(C,"class","w-full overflow-hidden svelte-f7jodf"),S(n,"class","flex flex-row gap-3 svelte-f7jodf"),S(t,"class","flex flex-col gap-4 p-2-lg mb-3 text-wrap relative svelte-f7jodf")},m(r,a){g(r,t,a),y(t,n),y(n,o),y(o,i),y(i,s),y(o,l),y(o,h),X.m(h,null),y(o,d),y(o,p),J&&J.m(p,null),y(n,A),y(n,C),y(C,R),y(C,T),y(C,L),y(L,I),y(C,j),y(C,U),y(U,B),y(B,N),y(U,M),ee.m(U,null),g(r,$,a),te&&te.m(r,a),g(r,z,a),F=!0,D||(H=[E(h,"click",k(e[18])),E(L,"click",k(e[26])),E(L,"keydown",k(e[27])),E(L,"keyup",k(e[28])),E(t,"mouseenter",e[29]),E(t,"mouseleave",e[30])],D=!0)},p(e,t){(!F||16&t[0]&&!a(s.src,c=e[4]))&&S(s,"src",c),(!F||32&t[0]&&u!==(u=`nostr:${e[5]}`))&&S(i,"href",u),Y===(Y=W(e))&&X?X.p(e,t):(X.d(1),X=Y(e),X&&(X.c(),X.m(h,null))),(!F||512&t[0]&&f!==(f="rounded-full "+(e[9]>0?"opacity-100 text-base":"bg-orange-500 opacity-10 text-xl")+" w-8 h-8 flex items-center justify-center hover:opacity-100 svelte-f7jodf"))&&S(h,"class",f),e[6]?J?(J.p(e,t),64&t[0]&&Z(J,1)):(J=Cm(e),J.c(),Z(J,1),J.m(p,null)):J&&(K(),V(J,1,1,(()=>{J=null})),G()),(!F||64&t[0]&&m!==(m=(e[6]?"w-full rounded-full bg-white drop-shadow-xl justify-between border-2 border-gray-200":" rounded-full w-8 h-8 justify-center")+" flex items-center absolute ml-5 mt-10 z-10 svelte-f7jodf"))&&S(p,"class",m),(!F||1&t[0])&&q!==(q=e[0].content+"")&&O(I,q),(!F||2049&t[0]&&P!==(P="max-h-64 text-base cursor-pointer border border-slate-200 "+(e[11]===e[0].id?"bg-purple-700 text-white":"bg-white text-gray-900 hover:bg-slate-100")+" p-4 py-2 overflow-auto rounded-2xl shadow-sm svelte-f7jodf"))&&S(L,"class",P),ee.p(e,t),e[1][e[0].id].length>0?te?(te.p(e,t),3&t[0]&&Z(te,1)):(te=Pm(e),te.c(),Z(te,1),te.m(z.parentNode,z)):te&&(K(),V(te,1,1,(()=>{te=null})),G())},i(e){F||(Z(J),Z(te),F=!0)},o(e){V(J),V(te),F=!1},d(e){e&&b(t),X.d(),J&&J.d(),ee.d(),e&&b($),te&&te.d(e),e&&b(z),D=!1,r(H)}}}function Bm(e,t,n){let r,o,i,s,a,l;c(e,ue,(e=>n(16,o=e))),c(e,ie,(e=>n(31,i=e))),c(e,ce,(e=>n(3,s=e))),c(e,se,(e=>n(17,a=e))),c(e,ae,(e=>n(11,l=e)));let h,f,d,p,y,{event:g}=t,{responses:b}=t,{websiteOwnerPubkey:m}=t,w={},v=0;function _(){l===g.id?u(ae,l=null,l):u(ae,l=g.id,l)}L((()=>{i.delayedSubscribe({kinds:[1,42,9735],"#e":[g.id]},"responses",500)}));const x=!!m===g.pubkey;var E;i.on("zap",(()=>{n(9,v=o[g.id]?.reduce(((e,t)=>e+t.amount),0)||0)})),E=()=>{n(9,v=o[g.id]?.reduce(((e,t)=>e+t.amount),0)||0)},T().$$.after_update.push(E);let k=new Date(1e3*g.created_at);return e.$$set=e=>{"event"in e&&n(0,g=e.event),"responses"in e&&n(1,b=e.responses),"websiteOwnerPubkey"in e&&n(2,m=e.websiteOwnerPubkey)},e.$$.update=()=>{if(131072&e.$$.dirty[0]&&n(15,w=a.profiles),32769&e.$$.dirty[0]&&n(10,r=w[g.pubkey]&&w[g.pubkey].display_name||`[${g.pubkey.slice(0,6)}]`),9&e.$$.dirty[0]&&n(6,d=s===g.id),1&e.$$.dirty[0])try{n(5,f=Zo.npubEncode(g.pubkey))}catch(e){n(5,f=g.pubkey)}65537&e.$$.dirty[0]&&n(9,v=o[g.id]?.reduce(((e,t)=>e+t.amount),0)||0),32769&e.$$.dirty[0]&&n(4,h=w[g.pubkey]&&w[g.pubkey].picture||`https://robohash.org/${g.pubkey.slice(0,1)}.png?set=set1`)},[g,b,m,s,h,f,d,p,y,v,r,l,_,x,k,w,o,a,()=>u(ce,s=s===g.id?null:g.id,s),()=>{u(ce,s=null,s)},function(e){y=e,n(8,y)},function(e){y=e,n(8,y)},function(e){y=e,n(8,y)},function(e){y=e,n(8,y)},function(e){y=e,n(8,y)},function(e){y=e,n(8,y)},()=>{_(g.id)},()=>{_(g.id)},()=>{_(g.id)},()=>n(7,p=!0),()=>n(7,p=!1)]}class Nm extends ne{constructor(e){super(),te(this,e,Bm,Um,i,{event:0,responses:1,websiteOwnerPubkey:2},null,[-1,-1])}}var Mm={$:e=>"string"==typeof e?document.querySelector(e):e,extend:(...e)=>Object.assign(...e),cumulativeOffset(e){let t=0,n=0;do{t+=e.offsetTop||0,n+=e.offsetLeft||0,e=e.offsetParent}while(e);return{top:t,left:n}},directScroll:e=>e&&e!==document&&e!==document.body,scrollTop(e,t){let n=void 0!==t;return this.directScroll(e)?n?e.scrollTop=t:e.scrollTop:n?document.documentElement.scrollTop=document.body.scrollTop=t:window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0},scrollLeft(e,t){let n=void 0!==t;return this.directScroll(e)?n?e.scrollLeft=t:e.scrollLeft:n?document.documentElement.scrollLeft=document.body.scrollLeft=t:window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0}};const $m={container:"body",duration:500,delay:0,offset:0,easing:function(e){return e<.5?4*e*e*e:.5*Math.pow(2*e-2,3)+1},onStart:e,onDone:e,onAborting:e,scrollX:!1,scrollY:!0},zm=e=>{let{offset:t,duration:n,delay:r,easing:o,x:i=0,y:s=0,scrollX:a,scrollY:c,onStart:u,onDone:l,container:y,onAborting:g,element:b}=e;"function"==typeof t&&(t=t());var m=Mm.cumulativeOffset(y),w=b?Mm.cumulativeOffset(b):{top:s,left:i},v=Mm.scrollLeft(y),_=Mm.scrollTop(y),x=w.left-m.left+t,E=w.top-m.top+t,k=x-v,S=E-_;let O=!0,A=!1,C=h()+r,R=C+n;function T(e){e||(A=!0,u(b,{x:i,y:s}))}function L(e){!function(e,t,n){a&&Mm.scrollLeft(e,n),c&&Mm.scrollTop(e,t)}(y,_+S*e,v+k*e)}function I(){O=!1}return function(e){let t;0===d.size&&f(p),new Promise((n=>{d.add(t={c:e,f:n})}))}((e=>{if(!A&&e>=C&&T(!1),A&&e>=R&&(L(1),I(),l(b,{x:i,y:s})),!O)return g(b,{x:i,y:s}),!1;if(A){L(0+1*o((e-C)/n))}return!0})),T(r),L(0),I},Fm=e=>{if(e&&e!==document&&e!==document.body)return e.scrollHeight-e.offsetHeight;{let e=document.body,t=document.documentElement;return Math.max(e.scrollHeight,e.offsetHeight,t.clientHeight,t.scrollHeight,t.offsetHeight)}},Dm=e=>(e=(e=>{let t=Mm.extend({},$m,e);return t.container=Mm.$(t.container),t.element=Mm.$(t.element),t})(e),zm(Mm.extend(e,{element:null,y:Fm(e.container)})));function Hm(e,t,n){const r=e.slice();return r[27]=t[n],r}function qm(e,t,n){const r=e.slice();return r[30]=t[n],r[32]=n,r}function Wm(e){let t;return{c(){t=v(e[8])},m(e,n){g(e,t,n)},p(e,n){256&n[0]&&O(t,e[8])},d(e){e&&b(t)}}}function Km(e){let t,n;return{c(){t=w("span"),S(t,"class",n="inline-block rounded-full "+(e[6]>e[32]?"bg-green-500":"bg-gray-300")+" w-2 h-2 svelte-f7jodf")},m(e,n){g(e,t,n)},p(e,r){64&r[0]&&n!==(n="inline-block rounded-full "+(e[6]>e[32]?"bg-green-500":"bg-gray-300")+" w-2 h-2 svelte-f7jodf")&&S(t,"class",n)},d(e){e&&b(t)}}}function Gm(e){let t,n,r,o,i,s,a=e[5].name+"",c=e[5].picture&&Zm(e),u=e[5].about&&Vm(e);return{c(){t=w("div"),c&&c.c(),n=_(),r=w("div"),o=w("div"),i=v(a),s=_(),u&&u.c(),S(o,"class","font-extrabold text-xl svelte-f7jodf"),S(r,"class","flex flex-col svelte-f7jodf"),S(t,"class","flex flex-row gap-2 mb-3 bg-zinc-300 text-zinc-800 px-4 py-2 -mx-4 -mt-3 svelte-f7jodf")},m(e,a){g(e,t,a),c&&c.m(t,null),y(t,n),y(t,r),y(r,o),y(o,i),y(r,s),u&&u.m(r,null)},p(e,o){e[5].picture?c?c.p(e,o):(c=Zm(e),c.c(),c.m(t,n)):c&&(c.d(1),c=null),32&o[0]&&a!==(a=e[5].name+"")&&O(i,a),e[5].about?u?u.p(e,o):(u=Vm(e),u.c(),u.m(r,null)):u&&(u.d(1),u=null)},d(e){e&&b(t),c&&c.d(),u&&u.d()}}}function Zm(e){let t,n;return{c(){t=w("img"),a(t.src,n=e[5].picture)||S(t,"src",n),S(t,"class","w-12 h-12 rounded-full svelte-f7jodf")},m(e,n){g(e,t,n)},p(e,r){32&r[0]&&!a(t.src,n=e[5].picture)&&S(t,"src",n)},d(e){e&&b(t)}}}function Vm(e){let t,n,r=e[5].about+"";return{c(){t=w("div"),n=v(r),S(t,"class","text-sm truncate font-regular svelte-f7jodf")},m(e,r){g(e,t,r),y(t,n)},p(e,t){32&t[0]&&r!==(r=e[5].about+"")&&O(n,r)},d(e){e&&b(t)}}}function Ym(e){let t,n;function r(e,n){return 512&n[0]&&(t=null),null==t&&(t=!e[10](e[9])),t?Jm:Xm}let o=r(e,[-1,-1]),i=o(e);return{c(){i.c(),n=x()},m(e,t){i.m(e,t),g(e,n,t)},p(e,t){o===(o=r(e,t))&&i?i.p(e,t):(i.d(1),i=o(e),i&&(i.c(),i.m(n.parentNode,n)))},d(e){i.d(e),e&&b(n)}}}function Xm(e){let t,n,r,o,i,s,a,c,u=e[10](e[9]).content+"";return{c(){t=w("div"),n=w("a"),n.innerHTML=' ',r=_(),o=w("div"),i=w("span"),s=v(u),S(n,"href","#"),S(n,"class","svelte-f7jodf"),S(i,"class","text-lg text-black overflow-hidden whitespace-nowrap text-ellipsis svelte-f7jodf"),S(o,"class","flex flex-col ml-2 svelte-f7jodf"),S(t,"class","flex flex-row mb-3 svelte-f7jodf")},m(u,l){g(u,t,l),y(t,n),y(t,r),y(t,o),y(o,i),y(i,s),a||(c=E(n,"click",k(e[13])),a=!0)},p(e,t){512&t[0]&&u!==(u=e[10](e[9]).content+"")&&O(s,u)},d(e){e&&b(t),a=!1,c()}}}function Jm(e){let t,n,r;return{c(){t=w("h1"),n=v("Couldn't find event with ID "),r=v(e[9]),S(t,"class","svelte-f7jodf")},m(e,o){g(e,t,o),y(t,n),y(t,r)},p(e,t){512&t[0]&&O(r,e[9])},d(e){e&&b(t)}}}function Qm(e){let t,n,r=e[3],o=[];for(let t=0;tV(o[e],1,1,(()=>{o[e]=null}));return{c(){for(let e=0;e ',S(n,"class","text-lg font-semibold svelte-f7jodf"),S(s,"class","flex flex-row gap-1 overflow-clip svelte-f7jodf"),S(i,"class","text-xs flex flex-col items-end mt-2 text-gray-200 gap-1 svelte-f7jodf"),S(t,"class","bg-purple-700 text-white -mx-4 -mt-5 mb-3 px-4 py-3 overflow-clip flex flex-row justify-between items-center svelte-f7jodf"),S(C,"id","messages-container-inner"),S(C,"class","flex flex-col gap-4 svelte-f7jodf"),S(x,"id","messages-container"),S(x,"class","overflow-auto -mx-4 px-4 svelte-f7jodf"),A(x,"height","50vh"),A(x,"min-height","300px"),S(P,"class","border-y border-y-slate-200 -mx-4 my-2 bg-slate-100 text-black text-sm px-4 py-2 svelte-f7jodf"),S(B,"type","text"),S(B,"id","message-input"),S(B,"class","-mb-2 p-2 w-full resize-none rounded-xl text-gray-600 border svelte-f7jodf"),S(B,"placeholder","Say hello!"),S(B,"rows","1"),S(M,"type","button"),S(M,"class","inline-flex items-center rounded-full border border-transparent bg-purple-700 p-3 text-white shadow-sm hover:bg-purple-600 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:ring-offset-2 svelte-f7jodf"),S(U,"class","flex flex-row gap-2 -mx-1 svelte-f7jodf"),S(I,"class","flex flex-col svelte-f7jodf")},m(r,b){g(r,t,b),y(t,n),D&&D.m(n,null),y(t,o),y(t,i),y(i,s);for(let e=0;e{J[r]=null})),G(),T=J[R],T?T.p(e,t):(T=J[R]=X[R](e),T.c()),Z(T,1),T.m(C,null)),te!==(te=ee(e))&&(ne.d(1),ne=te(e),ne&&(ne.c(),ne.m(P,null)))},i(e){$||(Z(T),$=!0)},o(e){V(T),$=!1},d(e){e&&b(t),D&&D.d(),m(q,e),e&&b(f),W&&W.d(e),e&&b(d),Y&&Y.d(e),e&&b(p),e&&b(x),J[R].d(),e&&b(L),e&&b(I),ne.d(),z=!1,r(F)}}}function aw(e,t,n){let r,o,i,s;c(e,ie,(e=>n(2,r=e))),c(e,ae,(e=>n(9,o=e))),c(e,se,(e=>n(18,i=e))),c(e,ue,(e=>n(21,s=e)));let a,l,h=[],f=[],d={},p={},{websiteOwnerPubkey:y}=t,{chatConfiguration:g}=t;function b(e){let t=h.find((t=>t.id===e));return t=t||f.find((t=>t.id===e)),t}async function m(){const e=document.getElementById("message-input"),t=e.value;e.value="";let n={tags:[],tagPubKeys:[]};!l&&y&&(n.tagPubKeys=[y]),o&&(n.tags.push(["e",o,"wss://nos.lol","root"]),n.tagPubKeys.push(b(o).pubkey));const i=await r.send(t,n);l||(l=i,localStorage.setItem("rootNoteId",l))}function w(e){let t;if(e.tags.filter((e=>"e"===e[0])).pop(),"GLOBAL"===g.chatType)t=e.tags.filter((e=>"e"===e[0])).length>=1;else if("GROUP"===g.chatType)t=e.tags.filter((e=>"e"===e[0]&&e[1]!==g.chatId)).length>=1;else{const n=e.tags.filter((e=>"p"===e[0])).map((e=>e[1]));t=new Set(n).size>=2}if(d[e.id]||n(4,d[e.id]=[],d),t){const t=e.tags.filter((e=>"e"===e[0])).pop();t&&t[1]&&(d[t[1]]||n(4,d[t[1]]=[],d),d[t[1]].push(e)),f.push(e)}else{let t=0;for(;tt.id===e.zappedEvent));t&&(s[t.id]||u(ue,s[t.id]=[],s),s[t.id].push(e))}function x(e){const t=h.find((t=>t.id===e.id));t&&(t.reactions=t.reactions||[],t.reactions.push(e),n(3,h),n(1,g),n(15,a),n(2,r))}let E={};L((()=>{r.on("message",w),r.on("connectivity",(e=>{n(16,O=e)})),r.on("reaction",x),r.on("zap",_),r.on("deleted",(e=>{e.forEach((e=>{const t=h.findIndex((t=>t.id===e));-1!==t&&(n(3,h[t].deleted=!0,h),n(3,h),n(1,g),n(15,a),n(2,r))}))})),r.on("profile",(({pubkey:e,profile:t})=>{let n=i.profiles;n[e]=t,se.set({profiles:n,...i})})),r.on("channelMetadata",(e=>{n(5,E=JSON.parse(e.content))}))}));let k,S,O={},A=0,C=0;return e.$$set=e=>{"websiteOwnerPubkey"in e&&n(0,y=e.websiteOwnerPubkey),"chatConfiguration"in e&&n(1,g=e.chatConfiguration)},e.$$.update=()=>{32774&e.$$.dirty[0]&&(g!==a&&r&&(r.setChatConfiguration(g.chatType,g.chatTags,g.chatReferenceTags,g.chatId),n(3,h=[]),n(4,d={}),l=null,localStorage.removeItem("rootNoteId")),n(15,a=g)),262144&e.$$.dirty[0]&&n(14,p=i.profiles),81924&e.$$.dirty[0]&&(n(6,A=Object.values(O).filter((e=>"connected"===e)).length),n(7,C=Object.values(O).length),r?.pubkey&&!p[r.pubkey]&&r.reqProfile(r.pubkey)),131076&e.$$.dirty[0]&&k!==r?.chatId&&(n(17,k=r?.chatId),n(5,E={})),4&e.$$.dirty[0]&&n(8,S=r?.pubkey?function(e){let t;if(p[r.pubkey]){let e=p[r.pubkey];t=e.display_name||e.displayName||e.name||e.nip05}return t||(t=`[${e.slice(0,6)}]`),t}(r.pubkey):"")},[y,g,r,h,d,E,A,C,S,o,b,m,async function(e){"Enter"===e.key&&(m(),e.preventDefault())},function(){if("GROUP"===g.chatType)u(ae,o=null,o);else{const e=b(o).tags.filter((e=>"e"===e[0])).pop(),t=e&&e[1];u(ae,o=t,o)}v()},p,a,O,k,i]}class cw extends ne{constructor(e){super(),te(this,e,aw,sw,i,{websiteOwnerPubkey:0,chatConfiguration:1},null,[-1,-1])}}function uw(e){let t,n;return t=new cw({props:{websiteOwnerPubkey:e[1],chatConfiguration:e[2],relays:e[3]}}),{c(){X(t.$$.fragment)},m(e,r){J(t,e,r),n=!0},p(e,n){const r={};2&n&&(r.websiteOwnerPubkey=e[1]),4&n&&(r.chatConfiguration=e[2]),8&n&&(r.relays=e[3]),t.$set(r)},i(e){n||(Z(t.$$.fragment,e),n=!0)},o(e){V(t.$$.fragment,e),n=!1},d(e){Q(t,e)}}}function lw(e){let t,n;return t=new tm({props:{websiteOwnerPubkey:e[1],chatConfiguration:e[2],relays:e[3]}}),{c(){X(t.$$.fragment)},m(e,r){J(t,e,r),n=!0},p(e,n){const r={};2&n&&(r.websiteOwnerPubkey=e[1]),4&n&&(r.chatConfiguration=e[2]),8&n&&(r.relays=e[3]),t.$set(r)},i(e){n||(Z(t.$$.fragment,e),n=!0)},o(e){V(t.$$.fragment,e),n=!1},d(e){Q(t,e)}}}function hw(e){let t,n,r,o;const i=[lw,uw],s=[];function a(e,t){return e[0]?1:0}return t=a(e),n=s[t]=i[t](e),{c(){n.c(),r=x()},m(e,n){s[t].m(e,n),g(e,r,n),o=!0},p(e,[o]){let c=t;t=a(e),t===c?s[t].p(e,o):(K(),V(s[c],1,1,(()=>{s[c]=null})),G(),n=s[t],n?n.p(e,o):(n=s[t]=i[t](e),n.c()),Z(n,1),n.m(r.parentNode,r))},i(e){o||(Z(n),o=!0)},o(e){V(n),o=!1},d(e){s[t].d(e),e&&b(r)}}}function fw(e,t,n){let r;c(e,ie,(e=>n(4,r=e)));let{websiteOwnerPubkey:o}=t,{chatStarted:i}=t,{chatConfiguration:s}=t,{relays:a}=t;return e.$$set=e=>{"websiteOwnerPubkey"in e&&n(1,o=e.websiteOwnerPubkey),"chatStarted"in e&&n(0,i=e.chatStarted),"chatConfiguration"in e&&n(2,s=e.chatConfiguration),"relays"in e&&n(3,a=e.relays)},e.$$.update=()=>{16&e.$$.dirty&&n(0,i=!!r)},[i,o,s,a,r]}class dw extends ne{constructor(e){super(),te(this,e,fw,hw,i,{websiteOwnerPubkey:1,chatStarted:0,chatConfiguration:2,relays:3})}}function pw(e){let t,n,r,o;return n=new dw({props:{websiteOwnerPubkey:e[0],chatConfiguration:{chatType:e[1],chatTags:e[2],chatId:e[5],chatReferenceTags:e[3]},relays:e[4]}}),{c(){t=w("div"),X(n.$$.fragment),S(t,"class",r="shadow-2xl bg-white/90 backdrop-brightness-150 backdrop-blur-md mb-5 w-96 max-w-screen-sm text-black rounded-3xl p-5 overflow-auto flex flex-col justify-end "+(e[7]?"hidden":"")+" svelte-f7jodf"),A(t,"max-height","80vh")},m(e,r){g(e,t,r),J(n,t,null),o=!0},p(e,i){const s={};1&i&&(s.websiteOwnerPubkey=e[0]),46&i&&(s.chatConfiguration={chatType:e[1],chatTags:e[2],chatId:e[5],chatReferenceTags:e[3]}),16&i&&(s.relays=e[4]),n.$set(s),(!o||128&i&&r!==(r="shadow-2xl bg-white/90 backdrop-brightness-150 backdrop-blur-md mb-5 w-96 max-w-screen-sm text-black rounded-3xl p-5 overflow-auto flex flex-col justify-end "+(e[7]?"hidden":"")+" svelte-f7jodf"))&&S(t,"class",r)},i(e){o||(Z(n.$$.fragment,e),o=!0)},o(e){V(n.$$.fragment,e),o=!1},d(e){e&&b(t),Q(n)}}}function yw(e){let t,n,r,o,i,s,a,c=e[6]&&pw(e);return{c(){t=w("div"),c&&c.c(),n=_(),r=w("div"),o=w("a"),o.innerHTML='Nostri Chat \n ',S(o,"href","#"),S(o,"class","text-white bg-purple-900 hover:bg-purple-700 w-full p-5 rounded-full flex-shrink-1 text-center font-semibold flex flex-row items-center gap-4 svelte-f7jodf"),S(r,"class","self-end svelte-f7jodf"),S(t,"class","fixed bottom-5 right-5 mb-5 flex flex-col item-end font-sans svelte-f7jodf")},m(u,l){g(u,t,l),c&&c.m(t,null),y(t,n),y(t,r),y(r,o),i=!0,s||(a=E(o,"click",k(e[8])),s=!0)},p(e,[r]){e[6]?c?(c.p(e,r),64&r&&Z(c,1)):(c=pw(e),c.c(),Z(c,1),c.m(t,n)):c&&(K(),V(c,1,1,(()=>{c=null})),G())},i(e){i||(Z(c),i=!0)},o(e){V(c),i=!1},d(e){e&&b(t),c&&c.d(),s=!1,a()}}}function gw(e,t,n){let{websiteOwnerPubkey:r}=t,{chatType:o}=t,{chatTags:i}=t,{chatReferenceTags:s}=t,{relays:a}=t,{chatId:c}=t,u=!1,l=!1;return e.$$set=e=>{"websiteOwnerPubkey"in e&&n(0,r=e.websiteOwnerPubkey),"chatType"in e&&n(1,o=e.chatType),"chatTags"in e&&n(2,i=e.chatTags),"chatReferenceTags"in e&&n(3,s=e.chatReferenceTags),"relays"in e&&n(4,a=e.relays),"chatId"in e&&n(5,c=e.chatId)},[r,o,i,s,a,c,u,l,function(){u?n(7,l=!l):n(6,u=!u)}]}var bw=document.createElement("DIV"),mw=document.currentScript;const ww=mw.getAttribute("data-website-owner-pubkey"),vw=mw.getAttribute("data-chat-type");let _w=mw.getAttribute("data-chat-tags");mw.getAttribute("data-chat-id");let xw=mw.getAttribute("data-chat-reference-tags"),Ew=mw.getAttribute("data-relays");mw.parentNode.insertBefore(bw,mw),Ew||(Ew="wss://relay.f7z.io,wss://nos.lol,wss://relay.nostr.info,wss://nostr-pub.wellorder.net,wss://relay.current.fyi,wss://relay.nostr.band"),Ew=Ew.split(","),_w=_w?_w.split(","):[],xw=xw?xw.split(","):[],new class extends ne{constructor(e){super(),te(this,e,gw,yw,i,{websiteOwnerPubkey:0,chatType:1,chatTags:2,chatReferenceTags:3,relays:4,chatId:5})}}({target:bw,props:{websiteOwnerPubkey:ww,chatType:vw,chatTags:_w,chatReferenceTags:xw,relays:Ew}})}();
//# sourceMappingURL=bundle.js.map
diff --git a/static/public/bundle.js.map b/static/public/bundle.js.map
index d6c5c5a..3a2ce4c 100644
--- a/static/public/bundle.js.map
+++ b/static/public/bundle.js.map
@@ -1 +1 @@
-{"version":3,"file":"bundle.js","sources":["../../node_modules/svelte/internal/index.mjs","../../node_modules/svelte/store/index.mjs","../../src/lib/store.js","../../node_modules/svelte-qr/src/mode.ts","../../node_modules/svelte-qr/src/8BitByte.ts","../../node_modules/svelte-qr/src/ErrorCorrectLevel.ts","../../node_modules/svelte-qr/src/RSBlock.ts","../../node_modules/svelte-qr/src/BitBuffer.ts","../../node_modules/svelte-qr/src/math.ts","../../node_modules/svelte-qr/src/Polynomial.ts","../../node_modules/svelte-qr/src/util.ts","../../node_modules/svelte-qr/src/QRCode.ts","../../node_modules/svelte-qr/src/QR.svelte","../../node_modules/@noble/secp256k1/lib/esm/index.js","../../node_modules/@noble/hashes/esm/_assert.js","../../node_modules/@noble/hashes/esm/cryptoBrowser.js","../../node_modules/@noble/hashes/esm/utils.js","../../node_modules/@noble/hashes/esm/_sha2.js","../../node_modules/@noble/hashes/esm/sha256.js","../../node_modules/@scure/base/lib/esm/index.js","../../node_modules/@scure/bip39/wordlists/english.js","../../node_modules/@noble/hashes/_assert.js","../../node_modules/@noble/hashes/cryptoBrowser.js","../../node_modules/@noble/hashes/utils.js","../../node_modules/@noble/hashes/hmac.js","../../node_modules/@noble/hashes/pbkdf2.js","../../node_modules/@noble/hashes/_sha2.js","../../node_modules/@noble/hashes/sha256.js","../../node_modules/@noble/hashes/_u64.js","../../node_modules/@noble/hashes/sha512.js","../../node_modules/@scure/base/lib/index.js","../../node_modules/@scure/bip39/index.js","../../node_modules/@noble/hashes/esm/hmac.js","../../node_modules/@noble/hashes/esm/ripemd160.js","../../node_modules/@noble/hashes/esm/_u64.js","../../node_modules/@noble/hashes/esm/sha512.js","../../node_modules/@scure/bip32/lib/esm/index.js","../../node_modules/nostr-tools/lib/esm/nostr.mjs","../../node_modules/nostr/lib/relay.js","../../node_modules/nostr/lib/relay-pool.js","../../node_modules/events/events.js","../../node_modules/uuid/dist/esm-browser/rng.js","../../node_modules/uuid/dist/esm-browser/stringify.js","../../node_modules/uuid/dist/esm-browser/native.js","../../node_modules/uuid/dist/esm-browser/v4.js","../../node_modules/ms/index.js","../../node_modules/debug/src/common.js","../../node_modules/debug/src/browser.js","../../node_modules/eventemitter3/index.js","../../node_modules/tstl/utility/node.js","../../node_modules/es5-ext/global.js","../../node_modules/websocket/lib/version.js","../../node_modules/websocket/lib/browser.js","../../node_modules/tstl/internal/iterator/disposable/ForOfAdaptor.js","../../node_modules/tstl/base/container/Container.js","../../node_modules/tstl/internal/iterator/disposable/NativeArrayIterator.js","../../node_modules/tstl/base/container/SetContainer.js","../../node_modules/tstl/exception/Exception.js","../../node_modules/tstl/exception/LogicError.js","../../node_modules/tstl/exception/InvalidArgument.js","../../node_modules/tstl/exception/OutOfRange.js","../../node_modules/tstl/internal/exception/ErrorGenerator.js","../../node_modules/tstl/base/container/UniqueSet.js","../../node_modules/tstl/internal/container/associative/IAssociativeContainer.js","../../node_modules/tstl/internal/Global.js","../../node_modules/tstl/functional/uid.js","../../node_modules/tstl/functional/hash.js","../../node_modules/tstl/functional/comparators.js","../../node_modules/tstl/internal/container/associative/IHashContainer.js","../../node_modules/tstl/internal/iterator/ListIterator.js","../../node_modules/tstl/internal/iterator/disposable/Repeater.js","../../node_modules/tstl/iterator/global.js","../../node_modules/tstl/internal/container/linear/ListContainer.js","../../node_modules/tstl/internal/iterator/ReverseIterator.js","../../node_modules/tstl/internal/container/associative/SetElementList.js","../../node_modules/tstl/internal/hash/HashBuckets.js","../../node_modules/tstl/internal/hash/SetHashBuckets.js","../../node_modules/tstl/utility/Pair.js","../../node_modules/tstl/container/HashSet.js","../../node_modules/tstl/base/container/MapContainer.js","../../node_modules/tstl/base/container/UniqueMap.js","../../node_modules/tstl/internal/container/associative/MapElementList.js","../../node_modules/tstl/internal/hash/MapHashBuckets.js","../../node_modules/tstl/utility/Entry.js","../../node_modules/tstl/container/HashMap.js","../../node_modules/websocket-polyfill/lib/events/EventTarget.js","../../node_modules/websocket-polyfill/lib/events/Event.js","../../node_modules/websocket-polyfill/lib/events/CloseEvent.js","../../node_modules/websocket-polyfill/lib/events/MessageEvent.js","../../node_modules/websocket-polyfill/lib/events/ErrorEvent.js","../../node_modules/websocket-polyfill/lib/WebSocket.js","../../node_modules/websocket-polyfill/lib/index.js","../../node_modules/light-bolt11-decoder/bolt11.js","../../node_modules/@nostr-dev-kit/ndk/lib/esm/ndk.mjs","../../src/lib/adapters/index.js","../../src/lib/adapters/nip07.js","../../node_modules/@nostr-connect/connect/dist/connect.esm.js","../../src/lib/adapters/nip46.js","../../src/lib/adapters/discardable-keys.js","../../src/KeyPrompt.svelte","../../node_modules/webln/lib/errors.js","../../node_modules/webln/lib/client.js","../../node_modules/webln/lib/provider.js","../../node_modules/webln/lib/index.js","../../src/ZapAmountButton.svelte","../../src/NostrNote.svelte","../../node_modules/svelte/easing/index.mjs","../../node_modules/svelte-scrollto/src/helper.js","../../node_modules/svelte-scrollto/src/index.js","../../src/ConnectedWidget.svelte","../../src/Container.svelte","../../src/Widget.svelte","../../src/widget.js"],"sourcesContent":["function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n // @ts-ignore\n for (const k in src)\n tar[k] = src[k];\n return tar;\n}\n// Adapted from https://github.com/then/is-promise/blob/master/index.js\n// Distributed under MIT License https://github.com/then/is-promise/blob/master/LICENSE\nfunction is_promise(value) {\n return !!value && (typeof value === 'object' || typeof value === 'function') && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n element.__svelte_meta = {\n loc: { file, line, column, char }\n };\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nlet src_url_equal_anchor;\nfunction src_url_equal(element_src, url) {\n if (!src_url_equal_anchor) {\n src_url_equal_anchor = document.createElement('a');\n }\n src_url_equal_anchor.href = url;\n return element_src === src_url_equal_anchor.href;\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction is_empty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction validate_store(store, name) {\n if (store != null && typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(store, ...callbacks) {\n if (store == null) {\n return noop;\n }\n const unsub = store.subscribe(...callbacks);\n return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\nfunction get_store_value(store) {\n let value;\n subscribe(store, _ => value = _)();\n return value;\n}\nfunction component_subscribe(component, store, callback) {\n component.$$.on_destroy.push(subscribe(store, callback));\n}\nfunction create_slot(definition, ctx, $$scope, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, $$scope, fn) {\n return definition[1] && fn\n ? assign($$scope.ctx.slice(), definition[1](fn(ctx)))\n : $$scope.ctx;\n}\nfunction get_slot_changes(definition, $$scope, dirty, fn) {\n if (definition[2] && fn) {\n const lets = definition[2](fn(dirty));\n if ($$scope.dirty === undefined) {\n return lets;\n }\n if (typeof lets === 'object') {\n const merged = [];\n const len = Math.max($$scope.dirty.length, lets.length);\n for (let i = 0; i < len; i += 1) {\n merged[i] = $$scope.dirty[i] | lets[i];\n }\n return merged;\n }\n return $$scope.dirty | lets;\n }\n return $$scope.dirty;\n}\nfunction update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn) {\n if (slot_changes) {\n const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n slot.p(slot_context, slot_changes);\n }\n}\nfunction update_slot(slot, slot_definition, ctx, $$scope, dirty, get_slot_changes_fn, get_slot_context_fn) {\n const slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn);\n}\nfunction get_all_dirty_from_scope($$scope) {\n if ($$scope.ctx.length > 32) {\n const dirty = [];\n const length = $$scope.ctx.length / 32;\n for (let i = 0; i < length; i++) {\n dirty[i] = -1;\n }\n return dirty;\n }\n return -1;\n}\nfunction exclude_internal_props(props) {\n const result = {};\n for (const k in props)\n if (k[0] !== '$')\n result[k] = props[k];\n return result;\n}\nfunction compute_rest_props(props, keys) {\n const rest = {};\n keys = new Set(keys);\n for (const k in props)\n if (!keys.has(k) && k[0] !== '$')\n rest[k] = props[k];\n return rest;\n}\nfunction compute_slots(slots) {\n const result = {};\n for (const key in slots) {\n result[key] = true;\n }\n return result;\n}\nfunction once(fn) {\n let ran = false;\n return function (...args) {\n if (ran)\n return;\n ran = true;\n fn.call(this, ...args);\n };\n}\nfunction null_to_empty(value) {\n return value == null ? '' : value;\n}\nfunction set_store_value(store, ret, value) {\n store.set(value);\n return ret;\n}\nconst has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nfunction action_destroyer(action_result) {\n return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n ? () => window.performance.now()\n : () => Date.now();\nlet raf = is_client ? cb => requestAnimationFrame(cb) : noop;\n// used internally for testing\nfunction set_now(fn) {\n now = fn;\n}\nfunction set_raf(fn) {\n raf = fn;\n}\n\nconst tasks = new Set();\nfunction run_tasks(now) {\n tasks.forEach(task => {\n if (!task.c(now)) {\n tasks.delete(task);\n task.f();\n }\n });\n if (tasks.size !== 0)\n raf(run_tasks);\n}\n/**\n * For testing purposes only!\n */\nfunction clear_loops() {\n tasks.clear();\n}\n/**\n * Creates a new task that runs on each raf frame\n * until it returns a falsy value or is aborted\n */\nfunction loop(callback) {\n let task;\n if (tasks.size === 0)\n raf(run_tasks);\n return {\n promise: new Promise(fulfill => {\n tasks.add(task = { c: callback, f: fulfill });\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\n// Track which nodes are claimed during hydration. Unclaimed nodes can then be removed from the DOM\n// at the end of hydration without touching the remaining nodes.\nlet is_hydrating = false;\nfunction start_hydrating() {\n is_hydrating = true;\n}\nfunction end_hydrating() {\n is_hydrating = false;\n}\nfunction upper_bound(low, high, key, value) {\n // Return first index of value larger than input value in the range [low, high)\n while (low < high) {\n const mid = low + ((high - low) >> 1);\n if (key(mid) <= value) {\n low = mid + 1;\n }\n else {\n high = mid;\n }\n }\n return low;\n}\nfunction init_hydrate(target) {\n if (target.hydrate_init)\n return;\n target.hydrate_init = true;\n // We know that all children have claim_order values since the unclaimed have been detached if target is not \n let children = target.childNodes;\n // If target is , there may be children without claim_order\n if (target.nodeName === 'HEAD') {\n const myChildren = [];\n for (let i = 0; i < children.length; i++) {\n const node = children[i];\n if (node.claim_order !== undefined) {\n myChildren.push(node);\n }\n }\n children = myChildren;\n }\n /*\n * Reorder claimed children optimally.\n * We can reorder claimed children optimally by finding the longest subsequence of\n * nodes that are already claimed in order and only moving the rest. The longest\n * subsequence of nodes that are claimed in order can be found by\n * computing the longest increasing subsequence of .claim_order values.\n *\n * This algorithm is optimal in generating the least amount of reorder operations\n * possible.\n *\n * Proof:\n * We know that, given a set of reordering operations, the nodes that do not move\n * always form an increasing subsequence, since they do not move among each other\n * meaning that they must be already ordered among each other. Thus, the maximal\n * set of nodes that do not move form a longest increasing subsequence.\n */\n // Compute longest increasing subsequence\n // m: subsequence length j => index k of smallest value that ends an increasing subsequence of length j\n const m = new Int32Array(children.length + 1);\n // Predecessor indices + 1\n const p = new Int32Array(children.length);\n m[0] = -1;\n let longest = 0;\n for (let i = 0; i < children.length; i++) {\n const current = children[i].claim_order;\n // Find the largest subsequence length such that it ends in a value less than our current value\n // upper_bound returns first greater value, so we subtract one\n // with fast path for when we are on the current longest subsequence\n const seqLen = ((longest > 0 && children[m[longest]].claim_order <= current) ? longest + 1 : upper_bound(1, longest, idx => children[m[idx]].claim_order, current)) - 1;\n p[i] = m[seqLen] + 1;\n const newLen = seqLen + 1;\n // We can guarantee that current is the smallest value. Otherwise, we would have generated a longer sequence.\n m[newLen] = i;\n longest = Math.max(newLen, longest);\n }\n // The longest increasing subsequence of nodes (initially reversed)\n const lis = [];\n // The rest of the nodes, nodes that will be moved\n const toMove = [];\n let last = children.length - 1;\n for (let cur = m[longest] + 1; cur != 0; cur = p[cur - 1]) {\n lis.push(children[cur - 1]);\n for (; last >= cur; last--) {\n toMove.push(children[last]);\n }\n last--;\n }\n for (; last >= 0; last--) {\n toMove.push(children[last]);\n }\n lis.reverse();\n // We sort the nodes being moved to guarantee that their insertion order matches the claim order\n toMove.sort((a, b) => a.claim_order - b.claim_order);\n // Finally, we move the nodes\n for (let i = 0, j = 0; i < toMove.length; i++) {\n while (j < lis.length && toMove[i].claim_order >= lis[j].claim_order) {\n j++;\n }\n const anchor = j < lis.length ? lis[j] : null;\n target.insertBefore(toMove[i], anchor);\n }\n}\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction append_styles(target, style_sheet_id, styles) {\n const append_styles_to = get_root_for_style(target);\n if (!append_styles_to.getElementById(style_sheet_id)) {\n const style = element('style');\n style.id = style_sheet_id;\n style.textContent = styles;\n append_stylesheet(append_styles_to, style);\n }\n}\nfunction get_root_for_style(node) {\n if (!node)\n return document;\n const root = node.getRootNode ? node.getRootNode() : node.ownerDocument;\n if (root && root.host) {\n return root;\n }\n return node.ownerDocument;\n}\nfunction append_empty_stylesheet(node) {\n const style_element = element('style');\n append_stylesheet(get_root_for_style(node), style_element);\n return style_element.sheet;\n}\nfunction append_stylesheet(node, style) {\n append(node.head || node, style);\n return style.sheet;\n}\nfunction append_hydration(target, node) {\n if (is_hydrating) {\n init_hydrate(target);\n if ((target.actual_end_child === undefined) || ((target.actual_end_child !== null) && (target.actual_end_child.parentNode !== target))) {\n target.actual_end_child = target.firstChild;\n }\n // Skip nodes of undefined ordering\n while ((target.actual_end_child !== null) && (target.actual_end_child.claim_order === undefined)) {\n target.actual_end_child = target.actual_end_child.nextSibling;\n }\n if (node !== target.actual_end_child) {\n // We only insert if the ordering of this node should be modified or the parent node is not target\n if (node.claim_order !== undefined || node.parentNode !== target) {\n target.insertBefore(node, target.actual_end_child);\n }\n }\n else {\n target.actual_end_child = node.nextSibling;\n }\n }\n else if (node.parentNode !== target || node.nextSibling !== null) {\n target.appendChild(node);\n }\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction insert_hydration(target, node, anchor) {\n if (is_hydrating && !anchor) {\n append_hydration(target, node);\n }\n else if (node.parentNode !== target || node.nextSibling != anchor) {\n target.insertBefore(node, anchor || null);\n }\n}\nfunction detach(node) {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction element_is(name, is) {\n return document.createElement(name, { is });\n}\nfunction object_without_properties(obj, exclude) {\n const target = {};\n for (const k in obj) {\n if (has_prop(obj, k)\n // @ts-ignore\n && exclude.indexOf(k) === -1) {\n // @ts-ignore\n target[k] = obj[k];\n }\n }\n return target;\n}\nfunction svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction space() {\n return text(' ');\n}\nfunction empty() {\n return text('');\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n return function (event) {\n event.preventDefault();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_propagation(fn) {\n return function (event) {\n event.stopPropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction self(fn) {\n return function (event) {\n // @ts-ignore\n if (event.target === this)\n fn.call(this, event);\n };\n}\nfunction trusted(fn) {\n return function (event) {\n // @ts-ignore\n if (event.isTrusted)\n fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else if (node.getAttribute(attribute) !== value)\n node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n // @ts-ignore\n const descriptors = Object.getOwnPropertyDescriptors(node.__proto__);\n for (const key in attributes) {\n if (attributes[key] == null) {\n node.removeAttribute(key);\n }\n else if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key === '__value') {\n node.value = node[key] = attributes[key];\n }\n else if (descriptors[key] && descriptors[key].set) {\n node[key] = attributes[key];\n }\n else {\n attr(node, key, attributes[key]);\n }\n }\n}\nfunction set_svg_attributes(node, attributes) {\n for (const key in attributes) {\n attr(node, key, attributes[key]);\n }\n}\nfunction set_custom_element_data_map(node, data_map) {\n Object.keys(data_map).forEach((key) => {\n set_custom_element_data(node, key, data_map[key]);\n });\n}\nfunction set_custom_element_data(node, prop, value) {\n if (prop in node) {\n node[prop] = typeof node[prop] === 'boolean' && value === '' ? true : value;\n }\n else {\n attr(node, prop, value);\n }\n}\nfunction xlink_attr(node, attribute, value) {\n node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group, __value, checked) {\n const value = new Set();\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.add(group[i].__value);\n }\n if (!checked) {\n value.delete(__value);\n }\n return Array.from(value);\n}\nfunction to_number(value) {\n return value === '' ? null : +value;\n}\nfunction time_ranges_to_array(ranges) {\n const array = [];\n for (let i = 0; i < ranges.length; i += 1) {\n array.push({ start: ranges.start(i), end: ranges.end(i) });\n }\n return array;\n}\nfunction children(element) {\n return Array.from(element.childNodes);\n}\nfunction init_claim_info(nodes) {\n if (nodes.claim_info === undefined) {\n nodes.claim_info = { last_index: 0, total_claimed: 0 };\n }\n}\nfunction claim_node(nodes, predicate, processNode, createNode, dontUpdateLastIndex = false) {\n // Try to find nodes in an order such that we lengthen the longest increasing subsequence\n init_claim_info(nodes);\n const resultNode = (() => {\n // We first try to find an element after the previous one\n for (let i = nodes.claim_info.last_index; i < nodes.length; i++) {\n const node = nodes[i];\n if (predicate(node)) {\n const replacement = processNode(node);\n if (replacement === undefined) {\n nodes.splice(i, 1);\n }\n else {\n nodes[i] = replacement;\n }\n if (!dontUpdateLastIndex) {\n nodes.claim_info.last_index = i;\n }\n return node;\n }\n }\n // Otherwise, we try to find one before\n // We iterate in reverse so that we don't go too far back\n for (let i = nodes.claim_info.last_index - 1; i >= 0; i--) {\n const node = nodes[i];\n if (predicate(node)) {\n const replacement = processNode(node);\n if (replacement === undefined) {\n nodes.splice(i, 1);\n }\n else {\n nodes[i] = replacement;\n }\n if (!dontUpdateLastIndex) {\n nodes.claim_info.last_index = i;\n }\n else if (replacement === undefined) {\n // Since we spliced before the last_index, we decrease it\n nodes.claim_info.last_index--;\n }\n return node;\n }\n }\n // If we can't find any matching node, we create a new one\n return createNode();\n })();\n resultNode.claim_order = nodes.claim_info.total_claimed;\n nodes.claim_info.total_claimed += 1;\n return resultNode;\n}\nfunction claim_element_base(nodes, name, attributes, create_element) {\n return claim_node(nodes, (node) => node.nodeName === name, (node) => {\n const remove = [];\n for (let j = 0; j < node.attributes.length; j++) {\n const attribute = node.attributes[j];\n if (!attributes[attribute.name]) {\n remove.push(attribute.name);\n }\n }\n remove.forEach(v => node.removeAttribute(v));\n return undefined;\n }, () => create_element(name));\n}\nfunction claim_element(nodes, name, attributes) {\n return claim_element_base(nodes, name, attributes, element);\n}\nfunction claim_svg_element(nodes, name, attributes) {\n return claim_element_base(nodes, name, attributes, svg_element);\n}\nfunction claim_text(nodes, data) {\n return claim_node(nodes, (node) => node.nodeType === 3, (node) => {\n const dataStr = '' + data;\n if (node.data.startsWith(dataStr)) {\n if (node.data.length !== dataStr.length) {\n return node.splitText(dataStr.length);\n }\n }\n else {\n node.data = dataStr;\n }\n }, () => text(data), true // Text nodes should not update last index since it is likely not worth it to eliminate an increasing subsequence of actual elements\n );\n}\nfunction claim_space(nodes) {\n return claim_text(nodes, ' ');\n}\nfunction find_comment(nodes, text, start) {\n for (let i = start; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 8 /* comment node */ && node.textContent.trim() === text) {\n return i;\n }\n }\n return nodes.length;\n}\nfunction claim_html_tag(nodes, is_svg) {\n // find html opening tag\n const start_index = find_comment(nodes, 'HTML_TAG_START', 0);\n const end_index = find_comment(nodes, 'HTML_TAG_END', start_index);\n if (start_index === end_index) {\n return new HtmlTagHydration(undefined, is_svg);\n }\n init_claim_info(nodes);\n const html_tag_nodes = nodes.splice(start_index, end_index - start_index + 1);\n detach(html_tag_nodes[0]);\n detach(html_tag_nodes[html_tag_nodes.length - 1]);\n const claimed_nodes = html_tag_nodes.slice(1, html_tag_nodes.length - 1);\n for (const n of claimed_nodes) {\n n.claim_order = nodes.claim_info.total_claimed;\n nodes.claim_info.total_claimed += 1;\n }\n return new HtmlTagHydration(claimed_nodes, is_svg);\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.wholeText !== data)\n text.data = data;\n}\nfunction set_input_value(input, value) {\n input.value = value == null ? '' : value;\n}\nfunction set_input_type(input, type) {\n try {\n input.type = type;\n }\n catch (e) {\n // do nothing\n }\n}\nfunction set_style(node, key, value, important) {\n if (value === null) {\n node.style.removeProperty(key);\n }\n else {\n node.style.setProperty(key, value, important ? 'important' : '');\n }\n}\nfunction select_option(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n if (option.__value === value) {\n option.selected = true;\n return;\n }\n }\n select.selectedIndex = -1; // no option should be selected\n}\nfunction select_options(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n option.selected = ~value.indexOf(option.__value);\n }\n}\nfunction select_value(select) {\n const selected_option = select.querySelector(':checked') || select.options[0];\n return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\n// unfortunately this can't be a constant as that wouldn't be tree-shakeable\n// so we cache the result instead\nlet crossorigin;\nfunction is_crossorigin() {\n if (crossorigin === undefined) {\n crossorigin = false;\n try {\n if (typeof window !== 'undefined' && window.parent) {\n void window.parent.document;\n }\n }\n catch (error) {\n crossorigin = true;\n }\n }\n return crossorigin;\n}\nfunction add_resize_listener(node, fn) {\n const computed_style = getComputedStyle(node);\n if (computed_style.position === 'static') {\n node.style.position = 'relative';\n }\n const iframe = element('iframe');\n iframe.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ' +\n 'overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;');\n iframe.setAttribute('aria-hidden', 'true');\n iframe.tabIndex = -1;\n const crossorigin = is_crossorigin();\n let unsubscribe;\n if (crossorigin) {\n iframe.src = \"data:text/html,\";\n unsubscribe = listen(window, 'message', (event) => {\n if (event.source === iframe.contentWindow)\n fn();\n });\n }\n else {\n iframe.src = 'about:blank';\n iframe.onload = () => {\n unsubscribe = listen(iframe.contentWindow, 'resize', fn);\n };\n }\n append(node, iframe);\n return () => {\n if (crossorigin) {\n unsubscribe();\n }\n else if (unsubscribe && iframe.contentWindow) {\n unsubscribe();\n }\n detach(iframe);\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, bubbles, cancelable, detail);\n return e;\n}\nfunction query_selector_all(selector, parent = document.body) {\n return Array.from(parent.querySelectorAll(selector));\n}\nfunction head_selector(nodeId, head) {\n const result = [];\n let started = 0;\n for (const node of head.childNodes) {\n if (node.nodeType === 8 /* comment node */) {\n const comment = node.textContent.trim();\n if (comment === `HEAD_${nodeId}_END`) {\n started -= 1;\n result.push(node);\n }\n else if (comment === `HEAD_${nodeId}_START`) {\n started += 1;\n result.push(node);\n }\n }\n else if (started > 0) {\n result.push(node);\n }\n }\n return result;\n}\nclass HtmlTag {\n constructor(is_svg = false) {\n this.is_svg = false;\n this.is_svg = is_svg;\n this.e = this.n = null;\n }\n c(html) {\n this.h(html);\n }\n m(html, target, anchor = null) {\n if (!this.e) {\n if (this.is_svg)\n this.e = svg_element(target.nodeName);\n else\n this.e = element(target.nodeName);\n this.t = target;\n this.c(html);\n }\n this.i(anchor);\n }\n h(html) {\n this.e.innerHTML = html;\n this.n = Array.from(this.e.childNodes);\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert(this.t, this.n[i], anchor);\n }\n }\n p(html) {\n this.d();\n this.h(html);\n this.i(this.a);\n }\n d() {\n this.n.forEach(detach);\n }\n}\nclass HtmlTagHydration extends HtmlTag {\n constructor(claimed_nodes, is_svg = false) {\n super(is_svg);\n this.e = this.n = null;\n this.l = claimed_nodes;\n }\n c(html) {\n if (this.l) {\n this.n = this.l;\n }\n else {\n super.c(html);\n }\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert_hydration(this.t, this.n[i], anchor);\n }\n }\n}\nfunction attribute_to_object(attributes) {\n const result = {};\n for (const attribute of attributes) {\n result[attribute.name] = attribute.value;\n }\n return result;\n}\nfunction get_custom_elements_slots(element) {\n const result = {};\n element.childNodes.forEach((node) => {\n result[node.slot || 'default'] = true;\n });\n return result;\n}\nfunction construct_svelte_component(component, props) {\n return new component(props);\n}\n\n// we need to store the information for multiple documents because a Svelte application could also contain iframes\n// https://github.com/sveltejs/svelte/issues/3624\nconst managed_styles = new Map();\nlet active = 0;\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_style_information(doc, node) {\n const info = { stylesheet: append_empty_stylesheet(node), rules: {} };\n managed_styles.set(doc, info);\n return info;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n const doc = get_root_for_style(node);\n const { stylesheet, rules } = managed_styles.get(doc) || create_style_information(doc, node);\n if (!rules[name]) {\n rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ''}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n const previous = (node.style.animation || '').split(', ');\n const next = previous.filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n );\n const deleted = previous.length - next.length;\n if (deleted) {\n node.style.animation = next.join(', ');\n active -= deleted;\n if (!active)\n clear_rules();\n }\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n managed_styles.forEach(info => {\n const { ownerNode } = info.stylesheet;\n // there is no ownerNode if it runs on jsdom.\n if (ownerNode)\n detach(ownerNode);\n });\n managed_styles.clear();\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now => {\n if (!started && now >= start_time) {\n started = true;\n }\n if (started && now >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error('Function called outside component initialization');\n return current_component;\n}\n/**\n * Schedules a callback to run immediately before the component is updated after any state change.\n *\n * The first time the callback runs will be before the initial `onMount`\n *\n * https://svelte.dev/docs#run-time-svelte-beforeupdate\n */\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_update.push(fn);\n}\n/**\n * The `onMount` function schedules a callback to run as soon as the component has been mounted to the DOM.\n * It must be called during the component's initialisation (but doesn't need to live *inside* the component;\n * it can be called from an external module).\n *\n * `onMount` does not run inside a [server-side component](/docs#run-time-server-side-component-api).\n *\n * https://svelte.dev/docs#run-time-svelte-onmount\n */\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\n/**\n * Schedules a callback to run immediately after the component has been updated.\n *\n * The first time the callback runs will be after the initial `onMount`\n */\nfunction afterUpdate(fn) {\n get_current_component().$$.after_update.push(fn);\n}\n/**\n * Schedules a callback to run immediately before the component is unmounted.\n *\n * Out of `onMount`, `beforeUpdate`, `afterUpdate` and `onDestroy`, this is the\n * only one that runs inside a server-side component.\n *\n * https://svelte.dev/docs#run-time-svelte-ondestroy\n */\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\n/**\n * Creates an event dispatcher that can be used to dispatch [component events](/docs#template-syntax-component-directives-on-eventname).\n * Event dispatchers are functions that can take two arguments: `name` and `detail`.\n *\n * Component events created with `createEventDispatcher` create a\n * [CustomEvent](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent).\n * These events do not [bubble](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#Event_bubbling_and_capture).\n * The `detail` argument corresponds to the [CustomEvent.detail](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/detail)\n * property and can contain any type of data.\n *\n * https://svelte.dev/docs#run-time-svelte-createeventdispatcher\n */\nfunction createEventDispatcher() {\n const component = get_current_component();\n return (type, detail, { cancelable = false } = {}) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail, { cancelable });\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n return !event.defaultPrevented;\n }\n return true;\n };\n}\n/**\n * Associates an arbitrary `context` object with the current component and the specified `key`\n * and returns that object. The context is then available to children of the component\n * (including slotted content) with `getContext`.\n *\n * Like lifecycle functions, this must be called during component initialisation.\n *\n * https://svelte.dev/docs#run-time-svelte-setcontext\n */\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n return context;\n}\n/**\n * Retrieves the context that belongs to the closest parent component with the specified `key`.\n * Must be called during component initialisation.\n *\n * https://svelte.dev/docs#run-time-svelte-getcontext\n */\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\n/**\n * Retrieves the whole context map that belongs to the closest parent component.\n * Must be called during component initialisation. Useful, for example, if you\n * programmatically create a component and want to pass the existing context to it.\n *\n * https://svelte.dev/docs#run-time-svelte-getallcontexts\n */\nfunction getAllContexts() {\n return get_current_component().$$.context;\n}\n/**\n * Checks whether a given `key` has been set in the context of a parent component.\n * Must be called during component initialisation.\n *\n * https://svelte.dev/docs#run-time-svelte-hascontext\n */\nfunction hasContext(key) {\n return get_current_component().$$.context.has(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n // @ts-ignore\n callbacks.slice().forEach(fn => fn.call(this, event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\n// flush() calls callbacks in this order:\n// 1. All beforeUpdate callbacks, in order: parents before children\n// 2. All bind:this callbacks, in reverse order: children before parents.\n// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT\n// for afterUpdates called during the initial onMount, which are called in\n// reverse order: children before parents.\n// Since callbacks might update component values, which could trigger another\n// call to flush(), the following steps guard against this:\n// 1. During beforeUpdate, any updated components will be added to the\n// dirty_components array and will cause a reentrant call to flush(). Because\n// the flush index is kept outside the function, the reentrant call will pick\n// up where the earlier call left off and go through all dirty components. The\n// current_component value is saved and restored so that the reentrant call will\n// not interfere with the \"parent\" flush() call.\n// 2. bind:this callbacks cannot trigger new flush() calls.\n// 3. During afterUpdate, any updated components will NOT have their afterUpdate\n// callback called a second time; the seen_callbacks set, outside the flush()\n// function, guarantees this behavior.\nconst seen_callbacks = new Set();\nlet flushidx = 0; // Do *not* move this inside the flush() function\nfunction flush() {\n // Do not reenter flush while dirty components are updated, as this can\n // result in an infinite loop. Instead, let the inner flush handle it.\n // Reentrancy is ok afterwards for bindings etc.\n if (flushidx !== 0) {\n return;\n }\n const saved_component = current_component;\n do {\n // first, call beforeUpdate functions\n // and update components\n try {\n while (flushidx < dirty_components.length) {\n const component = dirty_components[flushidx];\n flushidx++;\n set_current_component(component);\n update(component.$$);\n }\n }\n catch (e) {\n // reset dirty state to not end up in a deadlocked state and then rethrow\n dirty_components.length = 0;\n flushidx = 0;\n throw e;\n }\n set_current_component(null);\n dirty_components.length = 0;\n flushidx = 0;\n while (binding_callbacks.length)\n binding_callbacks.pop()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n for (let i = 0; i < render_callbacks.length; i += 1) {\n const callback = render_callbacks[i];\n if (!seen_callbacks.has(callback)) {\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n callback();\n }\n }\n render_callbacks.length = 0;\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n seen_callbacks.clear();\n set_current_component(saved_component);\n}\nfunction update($$) {\n if ($$.fragment !== null) {\n $$.update();\n run_all($$.before_update);\n const dirty = $$.dirty;\n $$.dirty = [-1];\n $$.fragment && $$.fragment.p($$.ctx, dirty);\n $$.after_update.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n r: 0,\n c: [],\n p: outros // parent group\n };\n}\nfunction check_outros() {\n if (!outros.r) {\n run_all(outros.c);\n }\n outros = outros.p;\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, detach, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.c.push(() => {\n outroing.delete(block);\n if (callback) {\n if (detach)\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n else if (callback) {\n callback();\n }\n}\nconst null_transition = { duration: 0 };\nfunction create_in_transition(node, fn, params) {\n const options = { direction: 'in' };\n let config = fn(node, params, options);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n started = true;\n delete_rule(node);\n if (is_function(config)) {\n config = config(options);\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n const options = { direction: 'out' };\n let config = fn(node, params, options);\n let running = true;\n let animation_name;\n const group = outros;\n group.r += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(0, 1);\n dispatch(node, false, 'end');\n if (!--group.r) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.c);\n }\n return false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config(options);\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n const options = { direction: 'both' };\n let config = fn(node, params, options);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = (program.b - t);\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.r += 1;\n }\n if (running_program || pending_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now => {\n if (pending_program && now > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now >= running_program.end) {\n tick(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.r)\n run_all(running_program.group.c);\n }\n }\n running_program = null;\n }\n else if (now >= running_program.start) {\n const p = now - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config(options);\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = value;\n let child_ctx = info.ctx;\n if (key !== undefined) {\n child_ctx = child_ctx.slice();\n child_ctx[key] = value;\n }\n const block = type && (info.current = type)(child_ctx);\n let needs_flush = false;\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, 1, () => {\n if (info.blocks[i] === block) {\n info.blocks[i] = null;\n }\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n needs_flush = true;\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n if (needs_flush) {\n flush();\n }\n }\n if (is_promise(promise)) {\n const current_component = get_current_component();\n promise.then(value => {\n set_current_component(current_component);\n update(info.then, 1, info.value, value);\n set_current_component(null);\n }, error => {\n set_current_component(current_component);\n update(info.catch, 2, info.error, error);\n set_current_component(null);\n if (!info.hasCatch) {\n throw error;\n }\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = promise;\n }\n}\nfunction update_await_block_branch(info, ctx, dirty) {\n const child_ctx = ctx.slice();\n const { resolved } = info;\n if (info.current === info.then) {\n child_ctx[info.value] = resolved;\n }\n if (info.current === info.catch) {\n child_ctx[info.error] = resolved;\n }\n info.block.p(child_ctx, dirty);\n}\n\nconst globals = (typeof window !== 'undefined'\n ? window\n : typeof globalThis !== 'undefined'\n ? globalThis\n : global);\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(child_ctx, dirty);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction validate_each_keys(ctx, list, get_context, get_key) {\n const keys = new Set();\n for (let i = 0; i < list.length; i++) {\n const key = get_key(get_context(ctx, list, i));\n if (keys.has(key)) {\n throw new Error('Cannot have duplicate keys in a keyed each');\n }\n keys.add(key);\n }\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\nfunction get_spread_object(spread_props) {\n return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n\n// source: https://html.spec.whatwg.org/multipage/indices.html\nconst boolean_attributes = new Set([\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'async',\n 'autofocus',\n 'autoplay',\n 'checked',\n 'controls',\n 'default',\n 'defer',\n 'disabled',\n 'formnovalidate',\n 'hidden',\n 'inert',\n 'ismap',\n 'itemscope',\n 'loop',\n 'multiple',\n 'muted',\n 'nomodule',\n 'novalidate',\n 'open',\n 'playsinline',\n 'readonly',\n 'required',\n 'reversed',\n 'selected'\n]);\n\n/** regex of all html void element names */\nconst void_element_names = /^(?:area|base|br|col|command|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/;\nfunction is_void(name) {\n return void_element_names.test(name) || name.toLowerCase() === '!doctype';\n}\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args, attrs_to_add) {\n const attributes = Object.assign({}, ...args);\n if (attrs_to_add) {\n const classes_to_add = attrs_to_add.classes;\n const styles_to_add = attrs_to_add.styles;\n if (classes_to_add) {\n if (attributes.class == null) {\n attributes.class = classes_to_add;\n }\n else {\n attributes.class += ' ' + classes_to_add;\n }\n }\n if (styles_to_add) {\n if (attributes.style == null) {\n attributes.style = style_object_to_string(styles_to_add);\n }\n else {\n attributes.style = style_object_to_string(merge_ssr_styles(attributes.style, styles_to_add));\n }\n }\n }\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === true)\n str += ' ' + name;\n else if (boolean_attributes.has(name.toLowerCase())) {\n if (value)\n str += ' ' + name;\n }\n else if (value != null) {\n str += ` ${name}=\"${value}\"`;\n }\n });\n return str;\n}\nfunction merge_ssr_styles(style_attribute, style_directive) {\n const style_object = {};\n for (const individual_style of style_attribute.split(';')) {\n const colon_index = individual_style.indexOf(':');\n const name = individual_style.slice(0, colon_index).trim();\n const value = individual_style.slice(colon_index + 1).trim();\n if (!name)\n continue;\n style_object[name] = value;\n }\n for (const name in style_directive) {\n const value = style_directive[name];\n if (value) {\n style_object[name] = value;\n }\n else {\n delete style_object[name];\n }\n }\n return style_object;\n}\nconst ATTR_REGEX = /[&\"]/g;\nconst CONTENT_REGEX = /[&<]/g;\n/**\n * Note: this method is performance sensitive and has been optimized\n * https://github.com/sveltejs/svelte/pull/5701\n */\nfunction escape(value, is_attr = false) {\n const str = String(value);\n const pattern = is_attr ? ATTR_REGEX : CONTENT_REGEX;\n pattern.lastIndex = 0;\n let escaped = '';\n let last = 0;\n while (pattern.test(str)) {\n const i = pattern.lastIndex - 1;\n const ch = str[i];\n escaped += str.substring(last, i) + (ch === '&' ? '&' : (ch === '\"' ? '"' : '<'));\n last = i + 1;\n }\n return escaped + str.substring(last);\n}\nfunction escape_attribute_value(value) {\n // keep booleans, null, and undefined for the sake of `spread`\n const should_escape = typeof value === 'string' || (value && typeof value === 'object');\n return should_escape ? escape(value, true) : value;\n}\nfunction escape_object(obj) {\n const result = {};\n for (const key in obj) {\n result[key] = escape_attribute_value(obj[key]);\n }\n return result;\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules. Otherwise you may need to fix a <${name}>.`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots, context) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(context || (parent_component ? parent_component.$$.context : [])),\n // these will be immediately discarded\n on_mount: [],\n before_update: [],\n after_update: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, { $$slots = {}, context = new Map() } = {}) => {\n on_destroy = [];\n const result = { title: '', head: '', css: new Set() };\n const html = $$render(result, props, {}, $$slots, context);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.title + result.head\n };\n },\n $$render\n };\n}\nfunction add_attribute(name, value, boolean) {\n if (value == null || (boolean && !value))\n return '';\n const assignment = (boolean && value === true) ? '' : `=\"${escape(value, true)}\"`;\n return ` ${name}${assignment}`;\n}\nfunction add_classes(classes) {\n return classes ? ` class=\"${classes}\"` : '';\n}\nfunction style_object_to_string(style_object) {\n return Object.keys(style_object)\n .filter(key => style_object[key])\n .map(key => `${key}: ${escape_attribute_value(style_object[key])};`)\n .join(' ');\n}\nfunction add_styles(style_object) {\n const styles = style_object_to_string(style_object);\n return styles ? ` style=\"${styles}\"` : '';\n}\n\nfunction bind(component, name, callback) {\n const index = component.$$.props[name];\n if (index !== undefined) {\n component.$$.bound[index] = callback;\n callback(component.$$.ctx[index]);\n }\n}\nfunction create_component(block) {\n block && block.c();\n}\nfunction claim_component(block, parent_nodes) {\n block && block.l(parent_nodes);\n}\nfunction mount_component(component, target, anchor, customElement) {\n const { fragment, after_update } = component.$$;\n fragment && fragment.m(target, anchor);\n if (!customElement) {\n // onMount happens before the initial afterUpdate\n add_render_callback(() => {\n const new_on_destroy = component.$$.on_mount.map(run).filter(is_function);\n // if the component was destroyed immediately\n // it will update the `$$.on_destroy` reference to `null`.\n // the destructured on_destroy may still reference to the old array\n if (component.$$.on_destroy) {\n component.$$.on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n }\n after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n const $$ = component.$$;\n if ($$.fragment !== null) {\n run_all($$.on_destroy);\n $$.fragment && $$.fragment.d(detaching);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n $$.on_destroy = $$.fragment = null;\n $$.ctx = [];\n }\n}\nfunction make_dirty(component, i) {\n if (component.$$.dirty[0] === -1) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty.fill(0);\n }\n component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31));\n}\nfunction init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) {\n const parent_component = current_component;\n set_current_component(component);\n const $$ = component.$$ = {\n fragment: null,\n ctx: [],\n // state\n props,\n update: noop,\n not_equal,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n on_disconnect: [],\n before_update: [],\n after_update: [],\n context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),\n // everything else\n callbacks: blank_object(),\n dirty,\n skip_bound: false,\n root: options.target || parent_component.$$.root\n };\n append_styles && append_styles($$.root);\n let ready = false;\n $$.ctx = instance\n ? instance(component, options.props || {}, (i, ret, ...rest) => {\n const value = rest.length ? rest[0] : ret;\n if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {\n if (!$$.skip_bound && $$.bound[i])\n $$.bound[i](value);\n if (ready)\n make_dirty(component, i);\n }\n return ret;\n })\n : [];\n $$.update();\n ready = true;\n run_all($$.before_update);\n // `false` as a special case of no DOM component\n $$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n if (options.target) {\n if (options.hydrate) {\n start_hydrating();\n const nodes = children(options.target);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.l(nodes);\n nodes.forEach(detach);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor, options.customElement);\n end_hydrating();\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement === 'function') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n const { on_mount } = this.$$;\n this.$$.on_disconnect = on_mount.map(run).filter(is_function);\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr, _oldValue, newValue) {\n this[attr] = newValue;\n }\n disconnectedCallback() {\n run_all(this.$$.on_disconnect);\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n if (!is_function(callback)) {\n return noop;\n }\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n };\n}\n/**\n * Base class for Svelte components. Used when dev=false.\n */\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n if (!is_function(callback)) {\n return noop;\n }\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n}\n\nfunction dispatch_dev(type, detail) {\n document.dispatchEvent(custom_event(type, Object.assign({ version: '3.55.1' }, detail), { bubbles: true }));\n}\nfunction append_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append(target, node);\n}\nfunction append_hydration_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append_hydration(target, node);\n}\nfunction insert_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert(target, node, anchor);\n}\nfunction insert_hydration_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert_hydration(target, node, anchor);\n}\nfunction detach_dev(node) {\n dispatch_dev('SvelteDOMRemove', { node });\n detach(node);\n}\nfunction detach_between_dev(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n detach_dev(before.nextSibling);\n }\n}\nfunction detach_before_dev(after) {\n while (after.previousSibling) {\n detach_dev(after.previousSibling);\n }\n}\nfunction detach_after_dev(before) {\n while (before.nextSibling) {\n detach_dev(before.nextSibling);\n }\n}\nfunction listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) {\n const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : [];\n if (has_prevent_default)\n modifiers.push('preventDefault');\n if (has_stop_propagation)\n modifiers.push('stopPropagation');\n dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers });\n const dispose = listen(node, event, handler, options);\n return () => {\n dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers });\n dispose();\n };\n}\nfunction attr_dev(node, attribute, value) {\n attr(node, attribute, value);\n if (value == null)\n dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute });\n else\n dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value });\n}\nfunction prop_dev(node, property, value) {\n node[property] = value;\n dispatch_dev('SvelteDOMSetProperty', { node, property, value });\n}\nfunction dataset_dev(node, property, value) {\n node.dataset[property] = value;\n dispatch_dev('SvelteDOMSetDataset', { node, property, value });\n}\nfunction set_data_dev(text, data) {\n data = '' + data;\n if (text.wholeText === data)\n return;\n dispatch_dev('SvelteDOMSetData', { node: text, data });\n text.data = data;\n}\nfunction validate_each_argument(arg) {\n if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) {\n let msg = '{#each} only iterates over array-like objects.';\n if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) {\n msg += ' You can use a spread to convert this iterable into an array.';\n }\n throw new Error(msg);\n }\n}\nfunction validate_slots(name, slot, keys) {\n for (const slot_key of Object.keys(slot)) {\n if (!~keys.indexOf(slot_key)) {\n console.warn(`<${name}> received an unexpected slot \"${slot_key}\".`);\n }\n }\n}\nfunction validate_dynamic_element(tag) {\n const is_string = typeof tag === 'string';\n if (tag && !is_string) {\n throw new Error(' expects \"this\" attribute to be a string.');\n }\n}\nfunction validate_void_dynamic_element(tag) {\n if (tag && is_void(tag)) {\n console.warn(` is self-closing and cannot have content.`);\n }\n}\nfunction construct_svelte_component_dev(component, props) {\n const error_message = 'this={...} of should specify a Svelte component.';\n try {\n const instance = new component(props);\n if (!instance.$$ || !instance.$set || !instance.$on || !instance.$destroy) {\n throw new Error(error_message);\n }\n return instance;\n }\n catch (err) {\n const { message } = err;\n if (typeof message === 'string' && message.indexOf('is not a constructor') !== -1) {\n throw new Error(error_message);\n }\n else {\n throw err;\n }\n }\n}\n/**\n * Base class for Svelte components with some minor dev-enhancements. Used when dev=true.\n */\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(\"'target' is a required option\");\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn('Component was already destroyed'); // eslint-disable-line no-console\n };\n }\n $capture_state() { }\n $inject_state() { }\n}\n/**\n * Base class to create strongly typed Svelte components.\n * This only exists for typing purposes and should be used in `.d.ts` files.\n *\n * ### Example:\n *\n * You have component library on npm called `component-library`, from which\n * you export a component called `MyComponent`. For Svelte+TypeScript users,\n * you want to provide typings. Therefore you create a `index.d.ts`:\n * ```ts\n * import { SvelteComponentTyped } from \"svelte\";\n * export class MyComponent extends SvelteComponentTyped<{foo: string}> {}\n * ```\n * Typing this makes it possible for IDEs like VS Code with the Svelte extension\n * to provide intellisense and to use the component like this in a Svelte file\n * with TypeScript:\n * ```svelte\n * \n * \n * ```\n *\n * #### Why not make this part of `SvelteComponent(Dev)`?\n * Because\n * ```ts\n * class ASubclassOfSvelteComponent extends SvelteComponent<{foo: string}> {}\n * const component: typeof SvelteComponent = ASubclassOfSvelteComponent;\n * ```\n * will throw a type error, so we need to separate the more strictly typed class.\n */\nclass SvelteComponentTyped extends SvelteComponentDev {\n constructor(options) {\n super(options);\n }\n}\nfunction loop_guard(timeout) {\n const start = Date.now();\n return () => {\n if (Date.now() - start > timeout) {\n throw new Error('Infinite loop detected');\n }\n };\n}\n\nexport { HtmlTag, HtmlTagHydration, SvelteComponent, SvelteComponentDev, SvelteComponentTyped, SvelteElement, action_destroyer, add_attribute, add_classes, add_flush_callback, add_location, add_render_callback, add_resize_listener, add_styles, add_transform, afterUpdate, append, append_dev, append_empty_stylesheet, append_hydration, append_hydration_dev, append_styles, assign, attr, attr_dev, attribute_to_object, beforeUpdate, bind, binding_callbacks, blank_object, bubble, check_outros, children, claim_component, claim_element, claim_html_tag, claim_space, claim_svg_element, claim_text, clear_loops, component_subscribe, compute_rest_props, compute_slots, construct_svelte_component, construct_svelte_component_dev, createEventDispatcher, create_animation, create_bidirectional_transition, create_component, create_in_transition, create_out_transition, create_slot, create_ssr_component, current_component, custom_event, dataset_dev, debug, destroy_block, destroy_component, destroy_each, detach, detach_after_dev, detach_before_dev, detach_between_dev, detach_dev, dirty_components, dispatch_dev, each, element, element_is, empty, end_hydrating, escape, escape_attribute_value, escape_object, exclude_internal_props, fix_and_destroy_block, fix_and_outro_and_destroy_block, fix_position, flush, getAllContexts, getContext, get_all_dirty_from_scope, get_binding_group_value, get_current_component, get_custom_elements_slots, get_root_for_style, get_slot_changes, get_spread_object, get_spread_update, get_store_value, globals, group_outros, handle_promise, hasContext, has_prop, head_selector, identity, init, insert, insert_dev, insert_hydration, insert_hydration_dev, intros, invalid_attribute_name_character, is_client, is_crossorigin, is_empty, is_function, is_promise, is_void, listen, listen_dev, loop, loop_guard, merge_ssr_styles, missing_component, mount_component, noop, not_equal, now, null_to_empty, object_without_properties, onDestroy, onMount, once, outro_and_destroy_block, prevent_default, prop_dev, query_selector_all, raf, run, run_all, safe_not_equal, schedule_update, select_multiple_value, select_option, select_options, select_value, self, setContext, set_attributes, set_current_component, set_custom_element_data, set_custom_element_data_map, set_data, set_data_dev, set_input_type, set_input_value, set_now, set_raf, set_store_value, set_style, set_svg_attributes, space, spread, src_url_equal, start_hydrating, stop_propagation, subscribe, svg_element, text, tick, time_ranges_to_array, to_number, toggle_class, transition_in, transition_out, trusted, update_await_block_branch, update_keyed_each, update_slot, update_slot_base, validate_component, validate_dynamic_element, validate_each_argument, validate_each_keys, validate_slots, validate_store, validate_void_dynamic_element, xlink_attr };\n","import { noop, safe_not_equal, subscribe, run_all, is_function } from '../internal/index.mjs';\nexport { get_store_value as get } from '../internal/index.mjs';\n\nconst subscriber_queue = [];\n/**\n * Creates a `Readable` store that allows reading by subscription.\n * @param value initial value\n * @param {StartStopNotifier}start start and stop notifications for subscriptions\n */\nfunction readable(value, start) {\n return {\n subscribe: writable(value, start).subscribe\n };\n}\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n * @param {*=}value initial value\n * @param {StartStopNotifier=}start start and stop notifications for subscriptions\n */\nfunction writable(value, start = noop) {\n let stop;\n const subscribers = new Set();\n function set(new_value) {\n if (safe_not_equal(value, new_value)) {\n value = new_value;\n if (stop) { // store is ready\n const run_queue = !subscriber_queue.length;\n for (const subscriber of subscribers) {\n subscriber[1]();\n subscriber_queue.push(subscriber, value);\n }\n if (run_queue) {\n for (let i = 0; i < subscriber_queue.length; i += 2) {\n subscriber_queue[i][0](subscriber_queue[i + 1]);\n }\n subscriber_queue.length = 0;\n }\n }\n }\n }\n function update(fn) {\n set(fn(value));\n }\n function subscribe(run, invalidate = noop) {\n const subscriber = [run, invalidate];\n subscribers.add(subscriber);\n if (subscribers.size === 1) {\n stop = start(set) || noop;\n }\n run(value);\n return () => {\n subscribers.delete(subscriber);\n if (subscribers.size === 0) {\n stop();\n stop = null;\n }\n };\n }\n return { set, update, subscribe };\n}\nfunction derived(stores, fn, initial_value) {\n const single = !Array.isArray(stores);\n const stores_array = single\n ? [stores]\n : stores;\n const auto = fn.length < 2;\n return readable(initial_value, (set) => {\n let inited = false;\n const values = [];\n let pending = 0;\n let cleanup = noop;\n const sync = () => {\n if (pending) {\n return;\n }\n cleanup();\n const result = fn(single ? values[0] : values, set);\n if (auto) {\n set(result);\n }\n else {\n cleanup = is_function(result) ? result : noop;\n }\n };\n const unsubscribers = stores_array.map((store, i) => subscribe(store, (value) => {\n values[i] = value;\n pending &= ~(1 << i);\n if (inited) {\n sync();\n }\n }, () => {\n pending |= (1 << i);\n }));\n inited = true;\n sync();\n return function stop() {\n run_all(unsubscribers);\n cleanup();\n };\n });\n}\n\nexport { derived, readable, writable };\n","import { writable } from 'svelte/store';\n\nexport const chatAdapter = writable(null);\nexport const chatData = writable({ events: [], profiles: {}});\nexport const selectedMessage = writable(null);\nexport const zappingMessage = writable(null);\nexport const zapsPerMessage = writable({});","export default {\n MODE_NUMBER: 1 << 0,\n MODE_ALPHA_NUM: 1 << 1,\n MODE_8BIT_BYTE: 1 << 2,\n MODE_KANJI: 1 << 3,\n}\n","import mode from './mode.ts'\n\nexport default function QR8bitByte(data) {\n this.mode = mode.MODE_8BIT_BYTE\n this.data = data\n}\n\nQR8bitByte.prototype = {\n getLength: function () {\n return this.data.length\n },\n\n write: function (buffer) {\n for (var i = 0; i < this.data.length; i++) {\n // not JIS ...\n buffer.put(this.data.charCodeAt(i), 8)\n }\n },\n}\n","export default {\n L: 1,\n M: 0,\n Q: 3,\n H: 2,\n}\n","// ErrorCorrectLevel\nimport ECL from './ErrorCorrectLevel.ts'\n\nexport default function QRRSBlock(totalCount, dataCount) {\n this.totalCount = totalCount\n this.dataCount = dataCount\n}\n\nQRRSBlock.RS_BLOCK_TABLE = [\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12],\n\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16],\n]\n\nQRRSBlock.getRSBlocks = function (typeNumber, errorCorrectLevel) {\n var rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel)\n\n if (rsBlock == undefined) {\n throw new Error(\n 'bad rs block @ typeNumber:' + typeNumber + '/errorCorrectLevel:' + errorCorrectLevel\n )\n }\n\n var length = rsBlock.length / 3\n\n var list = new Array()\n\n for (var i = 0; i < length; i++) {\n var count = rsBlock[i * 3 + 0]\n var totalCount = rsBlock[i * 3 + 1]\n var dataCount = rsBlock[i * 3 + 2]\n\n for (var j = 0; j < count; j++) {\n list.push(new QRRSBlock(totalCount, dataCount))\n }\n }\n\n return list\n}\n\nQRRSBlock.getRsBlockTable = function (typeNumber, errorCorrectLevel) {\n switch (errorCorrectLevel) {\n case ECL.L:\n return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0]\n case ECL.M:\n return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1]\n case ECL.Q:\n return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2]\n case ECL.H:\n return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3]\n default:\n return undefined\n }\n}\n","export default function QRBitBuffer() {\n this.buffer = new Array()\n this.length = 0\n}\n\nQRBitBuffer.prototype = {\n get: function (index) {\n var bufIndex = Math.floor(index / 8)\n return ((this.buffer[bufIndex] >>> (7 - (index % 8))) & 1) == 1\n },\n\n put: function (num, length) {\n for (var i = 0; i < length; i++) {\n this.putBit(((num >>> (length - i - 1)) & 1) == 1)\n }\n },\n\n getLengthInBits: function () {\n return this.length\n },\n\n putBit: function (bit) {\n var bufIndex = Math.floor(this.length / 8)\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0)\n }\n\n if (bit) {\n this.buffer[bufIndex] |= 0x80 >>> this.length % 8\n }\n\n this.length++\n },\n}\n","const QRMath = {\n glog: function (n) {\n if (n < 1) {\n throw new Error('glog(' + n + ')')\n }\n\n return QRMath.LOG_TABLE[n]\n },\n\n gexp: function (n) {\n while (n < 0) {\n n += 255\n }\n\n while (n >= 256) {\n n -= 255\n }\n\n return QRMath.EXP_TABLE[n]\n },\n\n EXP_TABLE: new Array(256),\n\n LOG_TABLE: new Array(256),\n}\n\nfor (var i = 0; i < 8; i++) {\n QRMath.EXP_TABLE[i] = 1 << i\n}\nfor (var i = 8; i < 256; i++) {\n QRMath.EXP_TABLE[i] =\n QRMath.EXP_TABLE[i - 4] ^\n QRMath.EXP_TABLE[i - 5] ^\n QRMath.EXP_TABLE[i - 6] ^\n QRMath.EXP_TABLE[i - 8]\n}\nfor (var i = 0; i < 255; i++) {\n QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]] = i\n}\n\nexport default QRMath\n","import math from './math.ts'\n\nexport default function QRPolynomial(num, shift) {\n if (num.length == undefined) {\n throw new Error(num.length + '/' + shift)\n }\n\n var offset = 0\n\n while (offset < num.length && num[offset] == 0) {\n offset++\n }\n\n this.num = new Array(num.length - offset + shift)\n for (var i = 0; i < num.length - offset; i++) {\n this.num[i] = num[i + offset]\n }\n}\n\nQRPolynomial.prototype = {\n get: function (index) {\n return this.num[index]\n },\n\n getLength: function () {\n return this.num.length\n },\n\n multiply: function (e) {\n var num = new Array(this.getLength() + e.getLength() - 1)\n\n for (var i = 0; i < this.getLength(); i++) {\n for (var j = 0; j < e.getLength(); j++) {\n num[i + j] ^= math.gexp(math.glog(this.get(i)) + math.glog(e.get(j)))\n }\n }\n\n return new QRPolynomial(num, 0)\n },\n\n mod: function (e) {\n if (this.getLength() - e.getLength() < 0) {\n return this\n }\n\n var ratio = math.glog(this.get(0)) - math.glog(e.get(0))\n\n var num = new Array(this.getLength())\n\n for (var i = 0; i < this.getLength(); i++) {\n num[i] = this.get(i)\n }\n\n for (var i = 0; i < e.getLength(); i++) {\n num[i] ^= math.gexp(math.glog(e.get(i)) + ratio)\n }\n\n // recursive call\n return new QRPolynomial(num, 0).mod(e)\n },\n}\n","import Mode from './mode.ts'\nimport Polynomial from './Polynomial.ts'\nimport math from './math.ts'\n\nexport const QRMaskPattern = {\n PATTERN000: 0,\n PATTERN001: 1,\n PATTERN010: 2,\n PATTERN011: 3,\n PATTERN100: 4,\n PATTERN101: 5,\n PATTERN110: 6,\n PATTERN111: 7,\n}\n\nconst QRUtil = {\n PATTERN_POSITION_TABLE: [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170],\n ],\n\n G15: (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0),\n G18: (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0),\n G15_MASK: (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1),\n\n getBCHTypeInfo: function (data) {\n var d = data << 10\n while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {\n d ^= QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15))\n }\n return ((data << 10) | d) ^ QRUtil.G15_MASK\n },\n\n getBCHTypeNumber: function (data) {\n var d = data << 12\n while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {\n d ^= QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18))\n }\n return (data << 12) | d\n },\n\n getBCHDigit: function (data) {\n var digit = 0\n\n while (data != 0) {\n digit++\n data >>>= 1\n }\n\n return digit\n },\n\n getPatternPosition: function (typeNumber) {\n return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1]\n },\n\n getMask: function (maskPattern, i, j) {\n switch (maskPattern) {\n case QRMaskPattern.PATTERN000:\n return (i + j) % 2 == 0\n case QRMaskPattern.PATTERN001:\n return i % 2 == 0\n case QRMaskPattern.PATTERN010:\n return j % 3 == 0\n case QRMaskPattern.PATTERN011:\n return (i + j) % 3 == 0\n case QRMaskPattern.PATTERN100:\n return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 == 0\n case QRMaskPattern.PATTERN101:\n return ((i * j) % 2) + ((i * j) % 3) == 0\n case QRMaskPattern.PATTERN110:\n return (((i * j) % 2) + ((i * j) % 3)) % 2 == 0\n case QRMaskPattern.PATTERN111:\n return (((i * j) % 3) + ((i + j) % 2)) % 2 == 0\n\n default:\n throw new Error('bad maskPattern:' + maskPattern)\n }\n },\n\n getErrorCorrectPolynomial: function (errorCorrectLength) {\n var a = new Polynomial([1], 0)\n\n for (var i = 0; i < errorCorrectLength; i++) {\n a = a.multiply(new Polynomial([1, math.gexp(i)], 0))\n }\n\n return a\n },\n\n getLengthInBits: function (mode, type) {\n if (1 <= type && type < 10) {\n // 1 - 9\n\n switch (mode) {\n case Mode.MODE_NUMBER:\n return 10\n case Mode.MODE_ALPHA_NUM:\n return 9\n case Mode.MODE_8BIT_BYTE:\n return 8\n case Mode.MODE_KANJI:\n return 8\n default:\n throw new Error('mode:' + mode)\n }\n } else if (type < 27) {\n // 10 - 26\n\n switch (mode) {\n case Mode.MODE_NUMBER:\n return 12\n case Mode.MODE_ALPHA_NUM:\n return 11\n case Mode.MODE_8BIT_BYTE:\n return 16\n case Mode.MODE_KANJI:\n return 10\n default:\n throw new Error('mode:' + mode)\n }\n } else if (type < 41) {\n // 27 - 40\n\n switch (mode) {\n case Mode.MODE_NUMBER:\n return 14\n case Mode.MODE_ALPHA_NUM:\n return 13\n case Mode.MODE_8BIT_BYTE:\n return 16\n case Mode.MODE_KANJI:\n return 12\n default:\n throw new Error('mode:' + mode)\n }\n } else {\n throw new Error('type:' + type)\n }\n },\n\n getLostPoint: function (qrCode) {\n var moduleCount = qrCode.getModuleCount()\n\n var lostPoint = 0\n\n // LEVEL1\n\n for (var row = 0; row < moduleCount; row++) {\n for (var col = 0; col < moduleCount; col++) {\n var sameCount = 0\n var dark = qrCode.isDark(row, col)\n\n for (var r = -1; r <= 1; r++) {\n if (row + r < 0 || moduleCount <= row + r) {\n continue\n }\n\n for (var c = -1; c <= 1; c++) {\n if (col + c < 0 || moduleCount <= col + c) {\n continue\n }\n\n if (r == 0 && c == 0) {\n continue\n }\n\n if (dark == qrCode.isDark(row + r, col + c)) {\n sameCount++\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += 3 + sameCount - 5\n }\n }\n }\n\n // LEVEL2\n\n for (var row = 0; row < moduleCount - 1; row++) {\n for (var col = 0; col < moduleCount - 1; col++) {\n var count = 0\n if (qrCode.isDark(row, col)) count++\n if (qrCode.isDark(row + 1, col)) count++\n if (qrCode.isDark(row, col + 1)) count++\n if (qrCode.isDark(row + 1, col + 1)) count++\n if (count == 0 || count == 4) {\n lostPoint += 3\n }\n }\n }\n\n // LEVEL3\n\n for (var row = 0; row < moduleCount; row++) {\n for (var col = 0; col < moduleCount - 6; col++) {\n if (\n qrCode.isDark(row, col) &&\n !qrCode.isDark(row, col + 1) &&\n qrCode.isDark(row, col + 2) &&\n qrCode.isDark(row, col + 3) &&\n qrCode.isDark(row, col + 4) &&\n !qrCode.isDark(row, col + 5) &&\n qrCode.isDark(row, col + 6)\n ) {\n lostPoint += 40\n }\n }\n }\n\n for (var col = 0; col < moduleCount; col++) {\n for (var row = 0; row < moduleCount - 6; row++) {\n if (\n qrCode.isDark(row, col) &&\n !qrCode.isDark(row + 1, col) &&\n qrCode.isDark(row + 2, col) &&\n qrCode.isDark(row + 3, col) &&\n qrCode.isDark(row + 4, col) &&\n !qrCode.isDark(row + 5, col) &&\n qrCode.isDark(row + 6, col)\n ) {\n lostPoint += 40\n }\n }\n }\n\n // LEVEL4\n\n var darkCount = 0\n\n for (var col = 0; col < moduleCount; col++) {\n for (var row = 0; row < moduleCount; row++) {\n if (qrCode.isDark(row, col)) {\n darkCount++\n }\n }\n }\n\n var ratio = Math.abs((100 * darkCount) / moduleCount / moduleCount - 50) / 5\n lostPoint += ratio * 10\n\n return lostPoint\n },\n}\n\nexport default QRUtil\n","import BitByte from './8BitByte.ts'\nimport RSBlock from './RSBlock.ts'\nimport BitBuffer from './BitBuffer.ts'\nimport util from './util.ts'\nimport Polynomial from './Polynomial.ts'\n\nexport default function QRCode(typeNumber, errorCorrectLevel) {\n this.typeNumber = typeNumber\n this.errorCorrectLevel = errorCorrectLevel\n this.modules = null\n this.moduleCount = 0\n this.dataCache = null\n this.dataList = []\n}\n\n// for client side minification\nvar proto = QRCode.prototype\n\nproto.addData = function (data) {\n var newData = new BitByte(data)\n this.dataList.push(newData)\n this.dataCache = null\n}\n\nproto.isDark = function (row, col) {\n if (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) {\n throw new Error(row + ',' + col)\n }\n return this.modules[row][col]\n}\n\nproto.getModuleCount = function () {\n return this.moduleCount\n}\n\nproto.make = function () {\n // Calculate automatically typeNumber if provided is < 1\n if (this.typeNumber < 1) {\n var typeNumber = 1\n for (typeNumber = 1; typeNumber < 40; typeNumber++) {\n var rsBlocks = RSBlock.getRSBlocks(typeNumber, this.errorCorrectLevel)\n\n var buffer = new BitBuffer()\n var totalDataCount = 0\n for (var i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount\n }\n\n for (var i = 0; i < this.dataList.length; i++) {\n var data = this.dataList[i]\n buffer.put(data.mode, 4)\n buffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber))\n data.write(buffer)\n }\n if (buffer.getLengthInBits() <= totalDataCount * 8) break\n }\n this.typeNumber = typeNumber\n }\n this.makeImpl(false, this.getBestMaskPattern())\n}\n\nproto.makeImpl = function (test, maskPattern) {\n this.moduleCount = this.typeNumber * 4 + 17\n this.modules = new Array(this.moduleCount)\n\n for (var row = 0; row < this.moduleCount; row++) {\n this.modules[row] = new Array(this.moduleCount)\n\n for (var col = 0; col < this.moduleCount; col++) {\n this.modules[row][col] = null //(col + row) % 3;\n }\n }\n\n this.setupPositionProbePattern(0, 0)\n this.setupPositionProbePattern(this.moduleCount - 7, 0)\n this.setupPositionProbePattern(0, this.moduleCount - 7)\n this.setupPositionAdjustPattern()\n this.setupTimingPattern()\n this.setupTypeInfo(test, maskPattern)\n\n if (this.typeNumber >= 7) {\n this.setupTypeNumber(test)\n }\n\n if (this.dataCache == null) {\n this.dataCache = QRCode.createData(this.typeNumber, this.errorCorrectLevel, this.dataList)\n }\n\n this.mapData(this.dataCache, maskPattern)\n}\n\nproto.setupPositionProbePattern = function (row, col) {\n for (var r = -1; r <= 7; r++) {\n if (row + r <= -1 || this.moduleCount <= row + r) continue\n\n for (var c = -1; c <= 7; c++) {\n if (col + c <= -1 || this.moduleCount <= col + c) continue\n\n if (\n (0 <= r && r <= 6 && (c == 0 || c == 6)) ||\n (0 <= c && c <= 6 && (r == 0 || r == 6)) ||\n (2 <= r && r <= 4 && 2 <= c && c <= 4)\n ) {\n this.modules[row + r][col + c] = true\n } else {\n this.modules[row + r][col + c] = false\n }\n }\n }\n}\n\nproto.getBestMaskPattern = function () {\n var minLostPoint = 0\n var pattern = 0\n\n for (var i = 0; i < 8; i++) {\n this.makeImpl(true, i)\n\n var lostPoint = util.getLostPoint(this)\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint\n pattern = i\n }\n }\n\n return pattern\n}\n\nproto.setupTimingPattern = function () {\n for (var r = 8; r < this.moduleCount - 8; r++) {\n if (this.modules[r][6] != null) {\n continue\n }\n this.modules[r][6] = r % 2 == 0\n }\n\n for (var c = 8; c < this.moduleCount - 8; c++) {\n if (this.modules[6][c] != null) {\n continue\n }\n this.modules[6][c] = c % 2 == 0\n }\n}\n\nproto.setupPositionAdjustPattern = function () {\n var pos = util.getPatternPosition(this.typeNumber)\n\n for (var i = 0; i < pos.length; i++) {\n for (var j = 0; j < pos.length; j++) {\n var row = pos[i]\n var col = pos[j]\n\n if (this.modules[row][col] != null) {\n continue\n }\n\n for (var r = -2; r <= 2; r++) {\n for (var c = -2; c <= 2; c++) {\n if (r == -2 || r == 2 || c == -2 || c == 2 || (r == 0 && c == 0)) {\n this.modules[row + r][col + c] = true\n } else {\n this.modules[row + r][col + c] = false\n }\n }\n }\n }\n }\n}\n\nproto.setupTypeNumber = function (test) {\n var bits = util.getBCHTypeNumber(this.typeNumber)\n\n for (var i = 0; i < 18; i++) {\n var mod = !test && ((bits >> i) & 1) == 1\n this.modules[Math.floor(i / 3)][(i % 3) + this.moduleCount - 8 - 3] = mod\n }\n\n for (var i = 0; i < 18; i++) {\n var mod = !test && ((bits >> i) & 1) == 1\n this.modules[(i % 3) + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod\n }\n}\n\nproto.setupTypeInfo = function (test, maskPattern) {\n var data = (this.errorCorrectLevel << 3) | maskPattern\n var bits = util.getBCHTypeInfo(data)\n\n // vertical\n for (var i = 0; i < 15; i++) {\n var mod = !test && ((bits >> i) & 1) == 1\n\n if (i < 6) {\n this.modules[i][8] = mod\n } else if (i < 8) {\n this.modules[i + 1][8] = mod\n } else {\n this.modules[this.moduleCount - 15 + i][8] = mod\n }\n }\n\n // horizontal\n for (var i = 0; i < 15; i++) {\n var mod = !test && ((bits >> i) & 1) == 1\n\n if (i < 8) {\n this.modules[8][this.moduleCount - i - 1] = mod\n } else if (i < 9) {\n this.modules[8][15 - i - 1 + 1] = mod\n } else {\n this.modules[8][15 - i - 1] = mod\n }\n }\n\n // fixed module\n this.modules[this.moduleCount - 8][8] = !test\n}\n\nproto.mapData = function (data, maskPattern) {\n var inc = -1\n var row = this.moduleCount - 1\n var bitIndex = 7\n var byteIndex = 0\n\n for (var col = this.moduleCount - 1; col > 0; col -= 2) {\n if (col == 6) col--\n\n while (true) {\n for (var c = 0; c < 2; c++) {\n if (this.modules[row][col - c] == null) {\n var dark = false\n\n if (byteIndex < data.length) {\n dark = ((data[byteIndex] >>> bitIndex) & 1) == 1\n }\n\n var mask = util.getMask(maskPattern, row, col - c)\n\n if (mask) {\n dark = !dark\n }\n\n this.modules[row][col - c] = dark\n bitIndex--\n\n if (bitIndex == -1) {\n byteIndex++\n bitIndex = 7\n }\n }\n }\n\n row += inc\n\n if (row < 0 || this.moduleCount <= row) {\n row -= inc\n inc = -inc\n break\n }\n }\n }\n}\n\nQRCode.PAD0 = 0xec\nQRCode.PAD1 = 0x11\n\nQRCode.createData = function (typeNumber, errorCorrectLevel, dataList) {\n var rsBlocks = RSBlock.getRSBlocks(typeNumber, errorCorrectLevel)\n\n var buffer = new BitBuffer()\n\n for (var i = 0; i < dataList.length; i++) {\n var data = dataList[i]\n buffer.put(data.mode, 4)\n buffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber))\n data.write(buffer)\n }\n\n // calc num max data.\n var totalDataCount = 0\n for (var i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw new Error(\n 'code length overflow. (' + buffer.getLengthInBits() + '>' + totalDataCount * 8 + ')'\n )\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4)\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false)\n }\n\n // padding\n while (true) {\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break\n }\n buffer.put(QRCode.PAD0, 8)\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break\n }\n buffer.put(QRCode.PAD1, 8)\n }\n\n return QRCode.createBytes(buffer, rsBlocks)\n}\n\nQRCode.createBytes = function (buffer, rsBlocks) {\n var offset = 0\n\n var maxDcCount = 0\n var maxEcCount = 0\n\n var dcdata = new Array(rsBlocks.length)\n var ecdata = new Array(rsBlocks.length)\n\n for (var r = 0; r < rsBlocks.length; r++) {\n var dcCount = rsBlocks[r].dataCount\n var ecCount = rsBlocks[r].totalCount - dcCount\n\n maxDcCount = Math.max(maxDcCount, dcCount)\n maxEcCount = Math.max(maxEcCount, ecCount)\n\n dcdata[r] = new Array(dcCount)\n\n for (var i = 0; i < dcdata[r].length; i++) {\n dcdata[r][i] = 0xff & buffer.buffer[i + offset]\n }\n offset += dcCount\n\n var rsPoly = util.getErrorCorrectPolynomial(ecCount)\n var rawPoly = new Polynomial(dcdata[r], rsPoly.getLength() - 1)\n\n var modPoly = rawPoly.mod(rsPoly)\n ecdata[r] = new Array(rsPoly.getLength() - 1)\n for (var i = 0; i < ecdata[r].length; i++) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length\n ecdata[r][i] = modIndex >= 0 ? modPoly.get(modIndex) : 0\n }\n }\n\n var totalCodeCount = 0\n for (var i = 0; i < rsBlocks.length; i++) {\n totalCodeCount += rsBlocks[i].totalCount\n }\n\n var data = new Array(totalCodeCount)\n var index = 0\n\n for (var i = 0; i < maxDcCount; i++) {\n for (var r = 0; r < rsBlocks.length; r++) {\n if (i < dcdata[r].length) {\n data[index++] = dcdata[r][i]\n }\n }\n }\n\n for (var i = 0; i < maxEcCount; i++) {\n for (var r = 0; r < rsBlocks.length; r++) {\n if (i < ecdata[r].length) {\n data[index++] = ecdata[r][i]\n }\n }\n }\n\n return data\n}\n","\n\n\n\n\n {#each rects as rect}\n \n {/each}\n \n","/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nimport * as nodeCrypto from 'crypto';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _3n = BigInt(3);\nconst _8n = BigInt(8);\nconst CURVE = Object.freeze({\n a: _0n,\n b: BigInt(7),\n P: BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f'),\n n: BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141'),\n h: _1n,\n Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n});\nexport { CURVE };\nfunction weistrass(x) {\n const { a, b } = CURVE;\n const x2 = mod(x * x);\n const x3 = mod(x2 * x);\n return mod(x3 + a * x + b);\n}\nconst USE_ENDOMORPHISM = CURVE.a === _0n;\nclass ShaError extends Error {\n constructor(message) {\n super(message);\n }\n}\nclass JacobianPoint {\n constructor(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n static fromAffine(p) {\n if (!(p instanceof Point)) {\n throw new TypeError('JacobianPoint#fromAffine: expected Point');\n }\n return new JacobianPoint(p.x, p.y, _1n);\n }\n static toAffineBatch(points) {\n const toInv = invertBatch(points.map((p) => p.z));\n return points.map((p, i) => p.toAffine(toInv[i]));\n }\n static normalizeZ(points) {\n return JacobianPoint.toAffineBatch(points).map(JacobianPoint.fromAffine);\n }\n equals(other) {\n if (!(other instanceof JacobianPoint))\n throw new TypeError('JacobianPoint expected');\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n const Z1Z1 = mod(Z1 * Z1);\n const Z2Z2 = mod(Z2 * Z2);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n return U1 === U2 && S1 === S2;\n }\n negate() {\n return new JacobianPoint(this.x, mod(-this.y), this.z);\n }\n double() {\n const { x: X1, y: Y1, z: Z1 } = this;\n const A = mod(X1 * X1);\n const B = mod(Y1 * Y1);\n const C = mod(B * B);\n const x1b = X1 + B;\n const D = mod(_2n * (mod(x1b * x1b) - A - C));\n const E = mod(_3n * A);\n const F = mod(E * E);\n const X3 = mod(F - _2n * D);\n const Y3 = mod(E * (D - X3) - _8n * C);\n const Z3 = mod(_2n * Y1 * Z1);\n return new JacobianPoint(X3, Y3, Z3);\n }\n add(other) {\n if (!(other instanceof JacobianPoint))\n throw new TypeError('JacobianPoint expected');\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n if (X2 === _0n || Y2 === _0n)\n return this;\n if (X1 === _0n || Y1 === _0n)\n return other;\n const Z1Z1 = mod(Z1 * Z1);\n const Z2Z2 = mod(Z2 * Z2);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n const H = mod(U2 - U1);\n const r = mod(S2 - S1);\n if (H === _0n) {\n if (r === _0n) {\n return this.double();\n }\n else {\n return JacobianPoint.ZERO;\n }\n }\n const HH = mod(H * H);\n const HHH = mod(H * HH);\n const V = mod(U1 * HH);\n const X3 = mod(r * r - HHH - _2n * V);\n const Y3 = mod(r * (V - X3) - S1 * HHH);\n const Z3 = mod(Z1 * Z2 * H);\n return new JacobianPoint(X3, Y3, Z3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiplyUnsafe(scalar) {\n const P0 = JacobianPoint.ZERO;\n if (typeof scalar === 'bigint' && scalar === _0n)\n return P0;\n let n = normalizeScalar(scalar);\n if (n === _1n)\n return this;\n if (!USE_ENDOMORPHISM) {\n let p = P0;\n let d = this;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n }\n let { k1neg, k1, k2neg, k2 } = splitScalarEndo(n);\n let k1p = P0;\n let k2p = P0;\n let d = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n)\n k1p = k1p.add(d);\n if (k2 & _1n)\n k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new JacobianPoint(mod(k2p.x * CURVE.beta), k2p.y, k2p.z);\n return k1p.add(k2p);\n }\n precomputeWindow(W) {\n const windows = USE_ENDOMORPHISM ? 128 / W + 1 : 256 / W + 1;\n const points = [];\n let p = this;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n for (let i = 1; i < 2 ** (W - 1); i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n }\n wNAF(n, affinePoint) {\n if (!affinePoint && this.equals(JacobianPoint.BASE))\n affinePoint = Point.BASE;\n const W = (affinePoint && affinePoint._WINDOW_SIZE) || 1;\n if (256 % W) {\n throw new Error('Point#wNAF: Invalid precomputation window, must be power of 2');\n }\n let precomputes = affinePoint && pointPrecomputes.get(affinePoint);\n if (!precomputes) {\n precomputes = this.precomputeWindow(W);\n if (affinePoint && W !== 1) {\n precomputes = JacobianPoint.normalizeZ(precomputes);\n pointPrecomputes.set(affinePoint, precomputes);\n }\n }\n let p = JacobianPoint.ZERO;\n let f = JacobianPoint.ZERO;\n const windows = 1 + (USE_ENDOMORPHISM ? 128 / W : 256 / W);\n const windowSize = 2 ** (W - 1);\n const mask = BigInt(2 ** W - 1);\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n let wbits = Number(n & mask);\n n >>= shiftBy;\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n if (wbits === 0) {\n let pr = precomputes[offset];\n if (window % 2)\n pr = pr.negate();\n f = f.add(pr);\n }\n else {\n let cached = precomputes[offset + Math.abs(wbits) - 1];\n if (wbits < 0)\n cached = cached.negate();\n p = p.add(cached);\n }\n }\n return { p, f };\n }\n multiply(scalar, affinePoint) {\n let n = normalizeScalar(scalar);\n let point;\n let fake;\n if (USE_ENDOMORPHISM) {\n const { k1neg, k1, k2neg, k2 } = splitScalarEndo(n);\n let { p: k1p, f: f1p } = this.wNAF(k1, affinePoint);\n let { p: k2p, f: f2p } = this.wNAF(k2, affinePoint);\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new JacobianPoint(mod(k2p.x * CURVE.beta), k2p.y, k2p.z);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n }\n else {\n const { p, f } = this.wNAF(n, affinePoint);\n point = p;\n fake = f;\n }\n return JacobianPoint.normalizeZ([point, fake])[0];\n }\n toAffine(invZ = invert(this.z)) {\n const { x, y, z } = this;\n const iz1 = invZ;\n const iz2 = mod(iz1 * iz1);\n const iz3 = mod(iz2 * iz1);\n const ax = mod(x * iz2);\n const ay = mod(y * iz3);\n const zz = mod(z * iz1);\n if (zz !== _1n)\n throw new Error('invZ was invalid');\n return new Point(ax, ay);\n }\n}\nJacobianPoint.BASE = new JacobianPoint(CURVE.Gx, CURVE.Gy, _1n);\nJacobianPoint.ZERO = new JacobianPoint(_0n, _1n, _0n);\nconst pointPrecomputes = new WeakMap();\nexport class Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n _setWindowSize(windowSize) {\n this._WINDOW_SIZE = windowSize;\n pointPrecomputes.delete(this);\n }\n hasEvenY() {\n return this.y % _2n === _0n;\n }\n static fromCompressedHex(bytes) {\n const isShort = bytes.length === 32;\n const x = bytesToNumber(isShort ? bytes : bytes.subarray(1));\n if (!isValidFieldElement(x))\n throw new Error('Point is not on curve');\n const y2 = weistrass(x);\n let y = sqrtMod(y2);\n const isYOdd = (y & _1n) === _1n;\n if (isShort) {\n if (isYOdd)\n y = mod(-y);\n }\n else {\n const isFirstByteOdd = (bytes[0] & 1) === 1;\n if (isFirstByteOdd !== isYOdd)\n y = mod(-y);\n }\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromUncompressedHex(bytes) {\n const x = bytesToNumber(bytes.subarray(1, 33));\n const y = bytesToNumber(bytes.subarray(33, 65));\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n const len = bytes.length;\n const header = bytes[0];\n if (len === 32 || (len === 33 && (header === 0x02 || header === 0x03))) {\n return this.fromCompressedHex(bytes);\n }\n if (len === 65 && header === 0x04)\n return this.fromUncompressedHex(bytes);\n throw new Error(`Point.fromHex: received invalid point. Expected 32-33 compressed bytes or 65 uncompressed bytes, not ${len}`);\n }\n static fromPrivateKey(privateKey) {\n return Point.BASE.multiply(normalizePrivateKey(privateKey));\n }\n static fromSignature(msgHash, signature, recovery) {\n msgHash = ensureBytes(msgHash);\n const h = truncateHash(msgHash);\n const { r, s } = normalizeSignature(signature);\n if (recovery !== 0 && recovery !== 1) {\n throw new Error('Cannot recover signature: invalid recovery bit');\n }\n const prefix = recovery & 1 ? '03' : '02';\n const R = Point.fromHex(prefix + numTo32bStr(r));\n const { n } = CURVE;\n const rinv = invert(r, n);\n const u1 = mod(-h * rinv, n);\n const u2 = mod(s * rinv, n);\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2);\n if (!Q)\n throw new Error('Cannot recover signature: point at infinify');\n Q.assertValidity();\n return Q;\n }\n toRawBytes(isCompressed = false) {\n return hexToBytes(this.toHex(isCompressed));\n }\n toHex(isCompressed = false) {\n const x = numTo32bStr(this.x);\n if (isCompressed) {\n const prefix = this.hasEvenY() ? '02' : '03';\n return `${prefix}${x}`;\n }\n else {\n return `04${x}${numTo32bStr(this.y)}`;\n }\n }\n toHexX() {\n return this.toHex(true).slice(2);\n }\n toRawX() {\n return this.toRawBytes(true).slice(1);\n }\n assertValidity() {\n const msg = 'Point is not on elliptic curve';\n const { x, y } = this;\n if (!isValidFieldElement(x) || !isValidFieldElement(y))\n throw new Error(msg);\n const left = mod(y * y);\n const right = weistrass(x);\n if (mod(left - right) !== _0n)\n throw new Error(msg);\n }\n equals(other) {\n return this.x === other.x && this.y === other.y;\n }\n negate() {\n return new Point(this.x, mod(-this.y));\n }\n double() {\n return JacobianPoint.fromAffine(this).double().toAffine();\n }\n add(other) {\n return JacobianPoint.fromAffine(this).add(JacobianPoint.fromAffine(other)).toAffine();\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiply(scalar) {\n return JacobianPoint.fromAffine(this).multiply(scalar, this).toAffine();\n }\n multiplyAndAddUnsafe(Q, a, b) {\n const P = JacobianPoint.fromAffine(this);\n const aP = a === _0n || a === _1n || this !== Point.BASE ? P.multiplyUnsafe(a) : P.multiply(a);\n const bQ = JacobianPoint.fromAffine(Q).multiplyUnsafe(b);\n const sum = aP.add(bQ);\n return sum.equals(JacobianPoint.ZERO) ? undefined : sum.toAffine();\n }\n}\nPoint.BASE = new Point(CURVE.Gx, CURVE.Gy);\nPoint.ZERO = new Point(_0n, _0n);\nfunction sliceDER(s) {\n return Number.parseInt(s[0], 16) >= 8 ? '00' + s : s;\n}\nfunction parseDERInt(data) {\n if (data.length < 2 || data[0] !== 0x02) {\n throw new Error(`Invalid signature integer tag: ${bytesToHex(data)}`);\n }\n const len = data[1];\n const res = data.subarray(2, len + 2);\n if (!len || res.length !== len) {\n throw new Error(`Invalid signature integer: wrong length`);\n }\n if (res[0] === 0x00 && res[1] <= 0x7f) {\n throw new Error('Invalid signature integer: trailing length');\n }\n return { data: bytesToNumber(res), left: data.subarray(len + 2) };\n}\nfunction parseDERSignature(data) {\n if (data.length < 2 || data[0] != 0x30) {\n throw new Error(`Invalid signature tag: ${bytesToHex(data)}`);\n }\n if (data[1] !== data.length - 2) {\n throw new Error('Invalid signature: incorrect length');\n }\n const { data: r, left: sBytes } = parseDERInt(data.subarray(2));\n const { data: s, left: rBytesLeft } = parseDERInt(sBytes);\n if (rBytesLeft.length) {\n throw new Error(`Invalid signature: left bytes after parsing: ${bytesToHex(rBytesLeft)}`);\n }\n return { r, s };\n}\nexport class Signature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromCompact(hex) {\n const arr = hex instanceof Uint8Array;\n const name = 'Signature.fromCompact';\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`${name}: Expected string or Uint8Array`);\n const str = arr ? bytesToHex(hex) : hex;\n if (str.length !== 128)\n throw new Error(`${name}: Expected 64-byte hex`);\n return new Signature(hexToNumber(str.slice(0, 64)), hexToNumber(str.slice(64, 128)));\n }\n static fromDER(hex) {\n const arr = hex instanceof Uint8Array;\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`Signature.fromDER: Expected string or Uint8Array`);\n const { r, s } = parseDERSignature(arr ? hex : hexToBytes(hex));\n return new Signature(r, s);\n }\n static fromHex(hex) {\n return this.fromDER(hex);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isWithinCurveOrder(r))\n throw new Error('Invalid Signature: r must be 0 < r < n');\n if (!isWithinCurveOrder(s))\n throw new Error('Invalid Signature: s must be 0 < s < n');\n }\n hasHighS() {\n const HALF = CURVE.n >> _1n;\n return this.s > HALF;\n }\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, CURVE.n - this.s) : this;\n }\n toDERRawBytes(isCompressed = false) {\n return hexToBytes(this.toDERHex(isCompressed));\n }\n toDERHex(isCompressed = false) {\n const sHex = sliceDER(numberToHexUnpadded(this.s));\n if (isCompressed)\n return sHex;\n const rHex = sliceDER(numberToHexUnpadded(this.r));\n const rLen = numberToHexUnpadded(rHex.length / 2);\n const sLen = numberToHexUnpadded(sHex.length / 2);\n const length = numberToHexUnpadded(rHex.length / 2 + sHex.length / 2 + 4);\n return `30${length}02${rLen}${rHex}02${sLen}${sHex}`;\n }\n toRawBytes() {\n return this.toDERRawBytes();\n }\n toHex() {\n return this.toDERHex();\n }\n toCompactRawBytes() {\n return hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n}\nfunction concatBytes(...arrays) {\n if (!arrays.every((b) => b instanceof Uint8Array))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\nfunction bytesToHex(uint8a) {\n if (!(uint8a instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\nconst POW_2_256 = BigInt('0x10000000000000000000000000000000000000000000000000000000000000000');\nfunction numTo32bStr(num) {\n if (typeof num !== 'bigint')\n throw new Error('Expected bigint');\n if (!(_0n <= num && num < POW_2_256))\n throw new Error('Expected number < 2^256');\n return num.toString(16).padStart(64, '0');\n}\nfunction numTo32b(num) {\n const b = hexToBytes(numTo32bStr(num));\n if (b.length !== 32)\n throw new Error('Error: expected 32 bytes');\n return b;\n}\nfunction numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\nfunction hexToNumber(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToNumber: expected string, got ' + typeof hex);\n }\n return BigInt(`0x${hex}`);\n}\nfunction hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex' + hex.length);\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\nfunction bytesToNumber(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nfunction ensureBytes(hex) {\n return hex instanceof Uint8Array ? Uint8Array.from(hex) : hexToBytes(hex);\n}\nfunction normalizeScalar(num) {\n if (typeof num === 'number' && Number.isSafeInteger(num) && num > 0)\n return BigInt(num);\n if (typeof num === 'bigint' && isWithinCurveOrder(num))\n return num;\n throw new TypeError('Expected valid private scalar: 0 < scalar < curve.n');\n}\nfunction mod(a, b = CURVE.P) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\nfunction pow2(x, power) {\n const { P } = CURVE;\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= P;\n }\n return res;\n}\nfunction sqrtMod(x) {\n const { P } = CURVE;\n const _6n = BigInt(6);\n const _11n = BigInt(11);\n const _22n = BigInt(22);\n const _23n = BigInt(23);\n const _44n = BigInt(44);\n const _88n = BigInt(88);\n const b2 = (x * x * x) % P;\n const b3 = (b2 * b2 * x) % P;\n const b6 = (pow2(b3, _3n) * b3) % P;\n const b9 = (pow2(b6, _3n) * b3) % P;\n const b11 = (pow2(b9, _2n) * b2) % P;\n const b22 = (pow2(b11, _11n) * b11) % P;\n const b44 = (pow2(b22, _22n) * b22) % P;\n const b88 = (pow2(b44, _44n) * b44) % P;\n const b176 = (pow2(b88, _88n) * b88) % P;\n const b220 = (pow2(b176, _44n) * b44) % P;\n const b223 = (pow2(b220, _3n) * b3) % P;\n const t1 = (pow2(b223, _23n) * b22) % P;\n const t2 = (pow2(t1, _6n) * b2) % P;\n return pow2(t2, _2n);\n}\nfunction invert(number, modulo = CURVE.P) {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n let a = mod(number, modulo);\n let b = modulo;\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\nfunction invertBatch(nums, p = CURVE.P) {\n const scratch = new Array(nums.length);\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = acc;\n return mod(acc * num, p);\n }, _1n);\n const inverted = invert(lastMultiplied, p);\n nums.reduceRight((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = mod(acc * scratch[i], p);\n return mod(acc * num, p);\n }, inverted);\n return scratch;\n}\nconst divNearest = (a, b) => (a + b / _2n) / b;\nconst ENDO = {\n a1: BigInt('0x3086d221a7d46bcde86c90e49284eb15'),\n b1: -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3'),\n a2: BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8'),\n b2: BigInt('0x3086d221a7d46bcde86c90e49284eb15'),\n POW_2_128: BigInt('0x100000000000000000000000000000000'),\n};\nfunction splitScalarEndo(k) {\n const { n } = CURVE;\n const { a1, b1, a2, b2, POW_2_128 } = ENDO;\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n let k1 = mod(k - c1 * a1 - c2 * a2, n);\n let k2 = mod(-c1 * b1 - c2 * b2, n);\n const k1neg = k1 > POW_2_128;\n const k2neg = k2 > POW_2_128;\n if (k1neg)\n k1 = n - k1;\n if (k2neg)\n k2 = n - k2;\n if (k1 > POW_2_128 || k2 > POW_2_128) {\n throw new Error('splitScalarEndo: Endomorphism failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n}\nfunction truncateHash(hash) {\n const { n } = CURVE;\n const byteLength = hash.length;\n const delta = byteLength * 8 - 256;\n let h = bytesToNumber(hash);\n if (delta > 0)\n h = h >> BigInt(delta);\n if (h >= n)\n h -= n;\n return h;\n}\nlet _sha256Sync;\nlet _hmacSha256Sync;\nclass HmacDrbg {\n constructor() {\n this.v = new Uint8Array(32).fill(1);\n this.k = new Uint8Array(32).fill(0);\n this.counter = 0;\n }\n hmac(...values) {\n return utils.hmacSha256(this.k, ...values);\n }\n hmacSync(...values) {\n return _hmacSha256Sync(this.k, ...values);\n }\n checkSync() {\n if (typeof _hmacSha256Sync !== 'function')\n throw new ShaError('hmacSha256Sync needs to be set');\n }\n incr() {\n if (this.counter >= 1000)\n throw new Error('Tried 1,000 k values for sign(), all were invalid');\n this.counter += 1;\n }\n async reseed(seed = new Uint8Array()) {\n this.k = await this.hmac(this.v, Uint8Array.from([0x00]), seed);\n this.v = await this.hmac(this.v);\n if (seed.length === 0)\n return;\n this.k = await this.hmac(this.v, Uint8Array.from([0x01]), seed);\n this.v = await this.hmac(this.v);\n }\n reseedSync(seed = new Uint8Array()) {\n this.checkSync();\n this.k = this.hmacSync(this.v, Uint8Array.from([0x00]), seed);\n this.v = this.hmacSync(this.v);\n if (seed.length === 0)\n return;\n this.k = this.hmacSync(this.v, Uint8Array.from([0x01]), seed);\n this.v = this.hmacSync(this.v);\n }\n async generate() {\n this.incr();\n this.v = await this.hmac(this.v);\n return this.v;\n }\n generateSync() {\n this.checkSync();\n this.incr();\n this.v = this.hmacSync(this.v);\n return this.v;\n }\n}\nfunction isWithinCurveOrder(num) {\n return _0n < num && num < CURVE.n;\n}\nfunction isValidFieldElement(num) {\n return _0n < num && num < CURVE.P;\n}\nfunction kmdToSig(kBytes, m, d) {\n const k = bytesToNumber(kBytes);\n if (!isWithinCurveOrder(k))\n return;\n const { n } = CURVE;\n const q = Point.BASE.multiply(k);\n const r = mod(q.x, n);\n if (r === _0n)\n return;\n const s = mod(invert(k, n) * mod(m + d * r, n), n);\n if (s === _0n)\n return;\n const sig = new Signature(r, s);\n const recovery = (q.x === sig.r ? 0 : 2) | Number(q.y & _1n);\n return { sig, recovery };\n}\nfunction normalizePrivateKey(key) {\n let num;\n if (typeof key === 'bigint') {\n num = key;\n }\n else if (typeof key === 'number' && Number.isSafeInteger(key) && key > 0) {\n num = BigInt(key);\n }\n else if (typeof key === 'string') {\n if (key.length !== 64)\n throw new Error('Expected 32 bytes of private key');\n num = hexToNumber(key);\n }\n else if (key instanceof Uint8Array) {\n if (key.length !== 32)\n throw new Error('Expected 32 bytes of private key');\n num = bytesToNumber(key);\n }\n else {\n throw new TypeError('Expected valid private key');\n }\n if (!isWithinCurveOrder(num))\n throw new Error('Expected private key: 0 < key < n');\n return num;\n}\nfunction normalizePublicKey(publicKey) {\n if (publicKey instanceof Point) {\n publicKey.assertValidity();\n return publicKey;\n }\n else {\n return Point.fromHex(publicKey);\n }\n}\nfunction normalizeSignature(signature) {\n if (signature instanceof Signature) {\n signature.assertValidity();\n return signature;\n }\n try {\n return Signature.fromDER(signature);\n }\n catch (error) {\n return Signature.fromCompact(signature);\n }\n}\nexport function getPublicKey(privateKey, isCompressed = false) {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n}\nexport function recoverPublicKey(msgHash, signature, recovery, isCompressed = false) {\n return Point.fromSignature(msgHash, signature, recovery).toRawBytes(isCompressed);\n}\nfunction isProbPub(item) {\n const arr = item instanceof Uint8Array;\n const str = typeof item === 'string';\n const len = (arr || str) && item.length;\n if (arr)\n return len === 33 || len === 65;\n if (str)\n return len === 66 || len === 130;\n if (item instanceof Point)\n return true;\n return false;\n}\nexport function getSharedSecret(privateA, publicB, isCompressed = false) {\n if (isProbPub(privateA))\n throw new TypeError('getSharedSecret: first arg must be private key');\n if (!isProbPub(publicB))\n throw new TypeError('getSharedSecret: second arg must be public key');\n const b = normalizePublicKey(publicB);\n b.assertValidity();\n return b.multiply(normalizePrivateKey(privateA)).toRawBytes(isCompressed);\n}\nfunction bits2int(bytes) {\n const slice = bytes.length > 32 ? bytes.slice(0, 32) : bytes;\n return bytesToNumber(slice);\n}\nfunction bits2octets(bytes) {\n const z1 = bits2int(bytes);\n const z2 = mod(z1, CURVE.n);\n return int2octets(z2 < _0n ? z1 : z2);\n}\nfunction int2octets(num) {\n return numTo32b(num);\n}\nfunction initSigArgs(msgHash, privateKey, extraEntropy) {\n if (msgHash == null)\n throw new Error(`sign: expected valid message hash, not \"${msgHash}\"`);\n const h1 = ensureBytes(msgHash);\n const d = normalizePrivateKey(privateKey);\n const seedArgs = [int2octets(d), bits2octets(h1)];\n if (extraEntropy != null) {\n if (extraEntropy === true)\n extraEntropy = utils.randomBytes(32);\n const e = ensureBytes(extraEntropy);\n if (e.length !== 32)\n throw new Error('sign: Expected 32 bytes of extra data');\n seedArgs.push(e);\n }\n const seed = concatBytes(...seedArgs);\n const m = bits2int(h1);\n return { seed, m, d };\n}\nfunction finalizeSig(recSig, opts) {\n let { sig, recovery } = recSig;\n const { canonical, der, recovered } = Object.assign({ canonical: true, der: true }, opts);\n if (canonical && sig.hasHighS()) {\n sig = sig.normalizeS();\n recovery ^= 1;\n }\n const hashed = der ? sig.toDERRawBytes() : sig.toCompactRawBytes();\n return recovered ? [hashed, recovery] : hashed;\n}\nasync function sign(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n let sig;\n const drbg = new HmacDrbg();\n await drbg.reseed(seed);\n while (!(sig = kmdToSig(await drbg.generate(), m, d)))\n await drbg.reseed();\n return finalizeSig(sig, opts);\n}\nfunction signSync(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n let sig;\n const drbg = new HmacDrbg();\n drbg.reseedSync(seed);\n while (!(sig = kmdToSig(drbg.generateSync(), m, d)))\n drbg.reseedSync();\n return finalizeSig(sig, opts);\n}\nexport { sign, signSync };\nconst vopts = { strict: true };\nexport function verify(signature, msgHash, publicKey, opts = vopts) {\n let sig;\n try {\n sig = normalizeSignature(signature);\n msgHash = ensureBytes(msgHash);\n }\n catch (error) {\n return false;\n }\n const { r, s } = sig;\n if (opts.strict && sig.hasHighS())\n return false;\n const h = truncateHash(msgHash);\n let P;\n try {\n P = normalizePublicKey(publicKey);\n }\n catch (error) {\n return false;\n }\n const { n } = CURVE;\n const sinv = invert(s, n);\n const u1 = mod(h * sinv, n);\n const u2 = mod(r * sinv, n);\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2);\n if (!R)\n return false;\n const v = mod(R.x, n);\n return v === r;\n}\nfunction schnorrChallengeFinalize(ch) {\n return mod(bytesToNumber(ch), CURVE.n);\n}\nclass SchnorrSignature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n if (bytes.length !== 64)\n throw new TypeError(`SchnorrSignature.fromHex: expected 64 bytes, not ${bytes.length}`);\n const r = bytesToNumber(bytes.subarray(0, 32));\n const s = bytesToNumber(bytes.subarray(32, 64));\n return new SchnorrSignature(r, s);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isValidFieldElement(r) || !isWithinCurveOrder(s))\n throw new Error('Invalid signature');\n }\n toHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n toRawBytes() {\n return hexToBytes(this.toHex());\n }\n}\nfunction schnorrGetPublicKey(privateKey) {\n return Point.fromPrivateKey(privateKey).toRawX();\n}\nclass InternalSchnorrSignature {\n constructor(message, privateKey, auxRand = utils.randomBytes()) {\n if (message == null)\n throw new TypeError(`sign: Expected valid message, not \"${message}\"`);\n this.m = ensureBytes(message);\n const { x, scalar } = this.getScalar(normalizePrivateKey(privateKey));\n this.px = x;\n this.d = scalar;\n this.rand = ensureBytes(auxRand);\n if (this.rand.length !== 32)\n throw new TypeError('sign: Expected 32 bytes of aux randomness');\n }\n getScalar(priv) {\n const point = Point.fromPrivateKey(priv);\n const scalar = point.hasEvenY() ? priv : CURVE.n - priv;\n return { point, scalar, x: point.toRawX() };\n }\n initNonce(d, t0h) {\n return numTo32b(d ^ bytesToNumber(t0h));\n }\n finalizeNonce(k0h) {\n const k0 = mod(bytesToNumber(k0h), CURVE.n);\n if (k0 === _0n)\n throw new Error('sign: Creation of signature failed. k is zero');\n const { point: R, x: rx, scalar: k } = this.getScalar(k0);\n return { R, rx, k };\n }\n finalizeSig(R, k, e, d) {\n return new SchnorrSignature(R.x, mod(k + e * d, CURVE.n)).toRawBytes();\n }\n error() {\n throw new Error('sign: Invalid signature produced');\n }\n async calc() {\n const { m, d, px, rand } = this;\n const tag = utils.taggedHash;\n const t = this.initNonce(d, await tag(TAGS.aux, rand));\n const { R, rx, k } = this.finalizeNonce(await tag(TAGS.nonce, t, px, m));\n const e = schnorrChallengeFinalize(await tag(TAGS.challenge, rx, px, m));\n const sig = this.finalizeSig(R, k, e, d);\n if (!(await schnorrVerify(sig, m, px)))\n this.error();\n return sig;\n }\n calcSync() {\n const { m, d, px, rand } = this;\n const tag = utils.taggedHashSync;\n const t = this.initNonce(d, tag(TAGS.aux, rand));\n const { R, rx, k } = this.finalizeNonce(tag(TAGS.nonce, t, px, m));\n const e = schnorrChallengeFinalize(tag(TAGS.challenge, rx, px, m));\n const sig = this.finalizeSig(R, k, e, d);\n if (!schnorrVerifySync(sig, m, px))\n this.error();\n return sig;\n }\n}\nasync function schnorrSign(msg, privKey, auxRand) {\n return new InternalSchnorrSignature(msg, privKey, auxRand).calc();\n}\nfunction schnorrSignSync(msg, privKey, auxRand) {\n return new InternalSchnorrSignature(msg, privKey, auxRand).calcSync();\n}\nfunction initSchnorrVerify(signature, message, publicKey) {\n const raw = signature instanceof SchnorrSignature;\n const sig = raw ? signature : SchnorrSignature.fromHex(signature);\n if (raw)\n sig.assertValidity();\n return {\n ...sig,\n m: ensureBytes(message),\n P: normalizePublicKey(publicKey),\n };\n}\nfunction finalizeSchnorrVerify(r, P, s, e) {\n const R = Point.BASE.multiplyAndAddUnsafe(P, normalizePrivateKey(s), mod(-e, CURVE.n));\n if (!R || !R.hasEvenY() || R.x !== r)\n return false;\n return true;\n}\nasync function schnorrVerify(signature, message, publicKey) {\n try {\n const { r, s, m, P } = initSchnorrVerify(signature, message, publicKey);\n const e = schnorrChallengeFinalize(await utils.taggedHash(TAGS.challenge, numTo32b(r), P.toRawX(), m));\n return finalizeSchnorrVerify(r, P, s, e);\n }\n catch (error) {\n return false;\n }\n}\nfunction schnorrVerifySync(signature, message, publicKey) {\n try {\n const { r, s, m, P } = initSchnorrVerify(signature, message, publicKey);\n const e = schnorrChallengeFinalize(utils.taggedHashSync(TAGS.challenge, numTo32b(r), P.toRawX(), m));\n return finalizeSchnorrVerify(r, P, s, e);\n }\n catch (error) {\n if (error instanceof ShaError)\n throw error;\n return false;\n }\n}\nexport const schnorr = {\n Signature: SchnorrSignature,\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n signSync: schnorrSignSync,\n verifySync: schnorrVerifySync,\n};\nPoint.BASE._setWindowSize(8);\nconst crypto = {\n node: nodeCrypto,\n web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\nconst TAGS = {\n challenge: 'BIP0340/challenge',\n aux: 'BIP0340/aux',\n nonce: 'BIP0340/nonce',\n};\nconst TAGGED_HASH_PREFIXES = {};\nexport const utils = {\n bytesToHex,\n hexToBytes,\n concatBytes,\n mod,\n invert,\n isValidPrivateKey(privateKey) {\n try {\n normalizePrivateKey(privateKey);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n _bigintTo32Bytes: numTo32b,\n _normalizePrivateKey: normalizePrivateKey,\n hashToPrivateKey: (hash) => {\n hash = ensureBytes(hash);\n if (hash.length < 40 || hash.length > 1024)\n throw new Error('Expected 40-1024 bytes of private key as per FIPS 186');\n const num = mod(bytesToNumber(hash), CURVE.n - _1n) + _1n;\n return numTo32b(num);\n },\n randomBytes: (bytesLength = 32) => {\n if (crypto.web) {\n return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto.node) {\n const { randomBytes } = crypto.node;\n return Uint8Array.from(randomBytes(bytesLength));\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n },\n randomPrivateKey: () => {\n return utils.hashToPrivateKey(utils.randomBytes(40));\n },\n sha256: async (...messages) => {\n if (crypto.web) {\n const buffer = await crypto.web.subtle.digest('SHA-256', concatBytes(...messages));\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHash } = crypto.node;\n const hash = createHash('sha256');\n messages.forEach((m) => hash.update(m));\n return Uint8Array.from(hash.digest());\n }\n else {\n throw new Error(\"The environment doesn't have sha256 function\");\n }\n },\n hmacSha256: async (key, ...messages) => {\n if (crypto.web) {\n const ckey = await crypto.web.subtle.importKey('raw', key, { name: 'HMAC', hash: { name: 'SHA-256' } }, false, ['sign']);\n const message = concatBytes(...messages);\n const buffer = await crypto.web.subtle.sign('HMAC', ckey, message);\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHmac } = crypto.node;\n const hash = createHmac('sha256', key);\n messages.forEach((m) => hash.update(m));\n return Uint8Array.from(hash.digest());\n }\n else {\n throw new Error(\"The environment doesn't have hmac-sha256 function\");\n }\n },\n sha256Sync: undefined,\n hmacSha256Sync: undefined,\n taggedHash: async (tag, ...messages) => {\n let tagP = TAGGED_HASH_PREFIXES[tag];\n if (tagP === undefined) {\n const tagH = await utils.sha256(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n tagP = concatBytes(tagH, tagH);\n TAGGED_HASH_PREFIXES[tag] = tagP;\n }\n return utils.sha256(tagP, ...messages);\n },\n taggedHashSync: (tag, ...messages) => {\n if (typeof _sha256Sync !== 'function')\n throw new ShaError('sha256Sync is undefined, you need to set it');\n let tagP = TAGGED_HASH_PREFIXES[tag];\n if (tagP === undefined) {\n const tagH = _sha256Sync(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n tagP = concatBytes(tagH, tagH);\n TAGGED_HASH_PREFIXES[tag] = tagP;\n }\n return _sha256Sync(tagP, ...messages);\n },\n precompute(windowSize = 8, point = Point.BASE) {\n const cached = point === Point.BASE ? point : new Point(point.x, point.y);\n cached._setWindowSize(windowSize);\n cached.multiply(_3n);\n return cached;\n },\n};\nObject.defineProperties(utils, {\n sha256Sync: {\n configurable: false,\n get() {\n return _sha256Sync;\n },\n set(val) {\n if (!_sha256Sync)\n _sha256Sync = val;\n },\n },\n hmacSha256Sync: {\n configurable: false,\n get() {\n return _hmacSha256Sync;\n },\n set(val) {\n if (!_hmacSha256Sync)\n _hmacSha256Sync = val;\n },\n },\n});\n","export function number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nexport function bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`Expected boolean, not ${b}`);\n}\nexport function bytes(b, ...lengths) {\n if (!(b instanceof Uint8Array))\n throw new TypeError('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new TypeError(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\nexport function hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nexport function exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nexport function output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nconst assert = {\n number,\n bool,\n bytes,\n hash,\n exists,\n output,\n};\nexport default assert;\n//# sourceMappingURL=_assert.js.map","export const crypto = {\n node: undefined,\n web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\n//# sourceMappingURL=cryptoBrowser.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// The import here is via the package name. This is to ensure\n// that exports mapping/resolution does fall into place.\nimport { crypto } from '@noble/hashes/crypto';\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\n// There is almost no big endian hardware, but js typed arrays uses platform specific endianness.\n// So, just to be sure not to corrupt anything.\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xde, 0xad, 0xbe, 0xef]))\n */\nexport function bytesToHex(uint8a) {\n // pre-caching improves the speed 6x\n if (!(uint8a instanceof Uint8Array))\n throw new Error('Uint8Array expected');\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\n/**\n * @example hexToBytes('deadbeef')\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex');\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow. However, call to async function will return Promise\n// which will be fullfiled only on next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string') {\n throw new TypeError(`utf8ToBytes expected string, got ${typeof str}`);\n }\n return new TextEncoder().encode(str);\n}\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!(data instanceof Uint8Array))\n throw new TypeError(`Expected input type is Uint8Array (got ${typeof data})`);\n return data;\n}\n/**\n * Concats Uint8Array-s into one; like `Buffer.concat([buf1, buf2])`\n * @example concatBytes(buf1, buf2)\n */\nexport function concatBytes(...arrays) {\n if (!arrays.every((a) => a instanceof Uint8Array))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\n// Check if object doens't have custom constructor (like Uint8Array/Array)\nconst isPlainObject = (obj) => Object.prototype.toString.call(obj) === '[object Object]' && obj.constructor === Object;\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && (typeof opts !== 'object' || !isPlainObject(opts)))\n throw new TypeError('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexport function wrapConstructor(hashConstructor) {\n const hashC = (message) => hashConstructor().update(toBytes(message)).digest();\n const tmp = hashConstructor();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashConstructor();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto.web) {\n return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto.node) {\n return new Uint8Array(crypto.node.randomBytes(bytesLength).buffer);\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n}\n//# sourceMappingURL=utils.js.map","import assert from './_assert.js';\nimport { Hash, createView, toBytes } from './utils.js';\n// Polyfill for Safari 14\nfunction setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n// Base SHA2 class (RFC 6234)\nexport class SHA2 extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n assert.exists(this);\n const { view, buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n assert.exists(this);\n assert.output(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4)\n throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length)\n throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++)\n oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\n//# sourceMappingURL=_sha2.js.map","import { SHA2 } from './_sha2.js';\nimport { rotr, wrapConstructor } from './utils.js';\n// Choice: a ? b : c\nconst Chi = (a, b, c) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst IV = new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = new Uint32Array(64);\nclass SHA256 extends SHA2 {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = IV[0] | 0;\n this.B = IV[1] | 0;\n this.C = IV[2] | 0;\n this.D = IV[3] | 0;\n this.E = IV[4] | 0;\n this.F = IV[5] | 0;\n this.G = IV[6] | 0;\n this.H = IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n// Constants from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf\nclass SHA224 extends SHA256 {\n constructor() {\n super();\n this.A = 0xc1059ed8 | 0;\n this.B = 0x367cd507 | 0;\n this.C = 0x3070dd17 | 0;\n this.D = 0xf70e5939 | 0;\n this.E = 0xffc00b31 | 0;\n this.F = 0x68581511 | 0;\n this.G = 0x64f98fa7 | 0;\n this.H = 0xbefa4fa4 | 0;\n this.outputLen = 28;\n }\n}\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = wrapConstructor(() => new SHA256());\nexport const sha224 = wrapConstructor(() => new SHA224());\n//# sourceMappingURL=sha256.js.map","/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nexport function assertNumber(n) {\n if (!Number.isSafeInteger(n))\n throw new Error(`Wrong integer: ${n}`);\n}\nfunction chain(...args) {\n const wrap = (a, b) => (c) => a(b(c));\n const encode = Array.from(args)\n .reverse()\n .reduce((acc, i) => (acc ? wrap(acc, i.encode) : i.encode), undefined);\n const decode = args.reduce((acc, i) => (acc ? wrap(acc, i.decode) : i.decode), undefined);\n return { encode, decode };\n}\nfunction alphabet(alphabet) {\n return {\n encode: (digits) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('alphabet.encode input should be an array of numbers');\n return digits.map((i) => {\n assertNumber(i);\n if (i < 0 || i >= alphabet.length)\n throw new Error(`Digit index outside alphabet: ${i} (alphabet: ${alphabet.length})`);\n return alphabet[i];\n });\n },\n decode: (input) => {\n if (!Array.isArray(input) || (input.length && typeof input[0] !== 'string'))\n throw new Error('alphabet.decode input should be array of strings');\n return input.map((letter) => {\n if (typeof letter !== 'string')\n throw new Error(`alphabet.decode: not string element=${letter}`);\n const index = alphabet.indexOf(letter);\n if (index === -1)\n throw new Error(`Unknown letter: \"${letter}\". Allowed: ${alphabet}`);\n return index;\n });\n },\n };\n}\nfunction join(separator = '') {\n if (typeof separator !== 'string')\n throw new Error('join separator should be string');\n return {\n encode: (from) => {\n if (!Array.isArray(from) || (from.length && typeof from[0] !== 'string'))\n throw new Error('join.encode input should be array of strings');\n for (let i of from)\n if (typeof i !== 'string')\n throw new Error(`join.encode: non-string input=${i}`);\n return from.join(separator);\n },\n decode: (to) => {\n if (typeof to !== 'string')\n throw new Error('join.decode input should be string');\n return to.split(separator);\n },\n };\n}\nfunction padding(bits, chr = '=') {\n assertNumber(bits);\n if (typeof chr !== 'string')\n throw new Error('padding chr should be string');\n return {\n encode(data) {\n if (!Array.isArray(data) || (data.length && typeof data[0] !== 'string'))\n throw new Error('padding.encode input should be array of strings');\n for (let i of data)\n if (typeof i !== 'string')\n throw new Error(`padding.encode: non-string input=${i}`);\n while ((data.length * bits) % 8)\n data.push(chr);\n return data;\n },\n decode(input) {\n if (!Array.isArray(input) || (input.length && typeof input[0] !== 'string'))\n throw new Error('padding.encode input should be array of strings');\n for (let i of input)\n if (typeof i !== 'string')\n throw new Error(`padding.decode: non-string input=${i}`);\n let end = input.length;\n if ((end * bits) % 8)\n throw new Error('Invalid padding: string should have whole number of bytes');\n for (; end > 0 && input[end - 1] === chr; end--) {\n if (!(((end - 1) * bits) % 8))\n throw new Error('Invalid padding: string has too much padding');\n }\n return input.slice(0, end);\n },\n };\n}\nfunction normalize(fn) {\n if (typeof fn !== 'function')\n throw new Error('normalize fn should be function');\n return { encode: (from) => from, decode: (to) => fn(to) };\n}\nfunction convertRadix(data, from, to) {\n if (from < 2)\n throw new Error(`convertRadix: wrong from=${from}, base cannot be less than 2`);\n if (to < 2)\n throw new Error(`convertRadix: wrong to=${to}, base cannot be less than 2`);\n if (!Array.isArray(data))\n throw new Error('convertRadix: data should be array');\n if (!data.length)\n return [];\n let pos = 0;\n const res = [];\n const digits = Array.from(data);\n digits.forEach((d) => {\n assertNumber(d);\n if (d < 0 || d >= from)\n throw new Error(`Wrong integer: ${d}`);\n });\n while (true) {\n let carry = 0;\n let done = true;\n for (let i = pos; i < digits.length; i++) {\n const digit = digits[i];\n const digitBase = from * carry + digit;\n if (!Number.isSafeInteger(digitBase) ||\n (from * carry) / from !== carry ||\n digitBase - digit !== from * carry) {\n throw new Error('convertRadix: carry overflow');\n }\n carry = digitBase % to;\n digits[i] = Math.floor(digitBase / to);\n if (!Number.isSafeInteger(digits[i]) || digits[i] * to + carry !== digitBase)\n throw new Error('convertRadix: carry overflow');\n if (!done)\n continue;\n else if (!digits[i])\n pos = i;\n else\n done = false;\n }\n res.push(carry);\n if (done)\n break;\n }\n for (let i = 0; i < data.length - 1 && data[i] === 0; i++)\n res.push(0);\n return res.reverse();\n}\nconst gcd = (a, b) => (!b ? a : gcd(b, a % b));\nconst radix2carry = (from, to) => from + (to - gcd(from, to));\nfunction convertRadix2(data, from, to, padding) {\n if (!Array.isArray(data))\n throw new Error('convertRadix2: data should be array');\n if (from <= 0 || from > 32)\n throw new Error(`convertRadix2: wrong from=${from}`);\n if (to <= 0 || to > 32)\n throw new Error(`convertRadix2: wrong to=${to}`);\n if (radix2carry(from, to) > 32) {\n throw new Error(`convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`);\n }\n let carry = 0;\n let pos = 0;\n const mask = 2 ** to - 1;\n const res = [];\n for (const n of data) {\n assertNumber(n);\n if (n >= 2 ** from)\n throw new Error(`convertRadix2: invalid data word=${n} from=${from}`);\n carry = (carry << from) | n;\n if (pos + from > 32)\n throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`);\n pos += from;\n for (; pos >= to; pos -= to)\n res.push(((carry >> (pos - to)) & mask) >>> 0);\n carry &= 2 ** pos - 1;\n }\n carry = (carry << (to - pos)) & mask;\n if (!padding && pos >= from)\n throw new Error('Excess padding');\n if (!padding && carry)\n throw new Error(`Non-zero padding: ${carry}`);\n if (padding && pos > 0)\n res.push(carry >>> 0);\n return res;\n}\nfunction radix(num) {\n assertNumber(num);\n return {\n encode: (bytes) => {\n if (!(bytes instanceof Uint8Array))\n throw new Error('radix.encode input should be Uint8Array');\n return convertRadix(Array.from(bytes), 2 ** 8, num);\n },\n decode: (digits) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('radix.decode input should be array of strings');\n return Uint8Array.from(convertRadix(digits, num, 2 ** 8));\n },\n };\n}\nfunction radix2(bits, revPadding = false) {\n assertNumber(bits);\n if (bits <= 0 || bits > 32)\n throw new Error('radix2: bits should be in (0..32]');\n if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)\n throw new Error('radix2: carry overflow');\n return {\n encode: (bytes) => {\n if (!(bytes instanceof Uint8Array))\n throw new Error('radix2.encode input should be Uint8Array');\n return convertRadix2(Array.from(bytes), 8, bits, !revPadding);\n },\n decode: (digits) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('radix2.decode input should be array of strings');\n return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding));\n },\n };\n}\nfunction unsafeWrapper(fn) {\n if (typeof fn !== 'function')\n throw new Error('unsafeWrapper fn should be function');\n return function (...args) {\n try {\n return fn.apply(null, args);\n }\n catch (e) { }\n };\n}\nfunction checksum(len, fn) {\n assertNumber(len);\n if (typeof fn !== 'function')\n throw new Error('checksum fn should be function');\n return {\n encode(data) {\n if (!(data instanceof Uint8Array))\n throw new Error('checksum.encode: input should be Uint8Array');\n const checksum = fn(data).slice(0, len);\n const res = new Uint8Array(data.length + len);\n res.set(data);\n res.set(checksum, data.length);\n return res;\n },\n decode(data) {\n if (!(data instanceof Uint8Array))\n throw new Error('checksum.decode: input should be Uint8Array');\n const payload = data.slice(0, -len);\n const newChecksum = fn(payload).slice(0, len);\n const oldChecksum = data.slice(-len);\n for (let i = 0; i < len; i++)\n if (newChecksum[i] !== oldChecksum[i])\n throw new Error('Invalid checksum');\n return payload;\n },\n };\n}\nexport const utils = { alphabet, chain, checksum, radix, radix2, join, padding };\nexport const base16 = chain(radix2(4), alphabet('0123456789ABCDEF'), join(''));\nexport const base32 = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), padding(5), join(''));\nexport const base32hex = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), padding(5), join(''));\nexport const base32crockford = chain(radix2(5), alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'), join(''), normalize((s) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1')));\nexport const base64 = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), padding(6), join(''));\nexport const base64url = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), padding(6), join(''));\nconst genBase58 = (abc) => chain(radix(58), alphabet(abc), join(''));\nexport const base58 = genBase58('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz');\nexport const base58flickr = genBase58('123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ');\nexport const base58xrp = genBase58('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz');\nconst XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11];\nexport const base58xmr = {\n encode(data) {\n let res = '';\n for (let i = 0; i < data.length; i += 8) {\n const block = data.subarray(i, i + 8);\n res += base58.encode(block).padStart(XMR_BLOCK_LEN[block.length], '1');\n }\n return res;\n },\n decode(str) {\n let res = [];\n for (let i = 0; i < str.length; i += 11) {\n const slice = str.slice(i, i + 11);\n const blockLen = XMR_BLOCK_LEN.indexOf(slice.length);\n const block = base58.decode(slice);\n for (let j = 0; j < block.length - blockLen; j++) {\n if (block[j] !== 0)\n throw new Error('base58xmr: wrong padding');\n }\n res = res.concat(Array.from(block.slice(block.length - blockLen)));\n }\n return Uint8Array.from(res);\n },\n};\nexport const base58check = (sha256) => chain(checksum(4, (data) => sha256(sha256(data))), base58);\nconst BECH_ALPHABET = chain(alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'), join(''));\nconst POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];\nfunction bech32Polymod(pre) {\n const b = pre >> 25;\n let chk = (pre & 0x1ffffff) << 5;\n for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {\n if (((b >> i) & 1) === 1)\n chk ^= POLYMOD_GENERATORS[i];\n }\n return chk;\n}\nfunction bechChecksum(prefix, words, encodingConst = 1) {\n const len = prefix.length;\n let chk = 1;\n for (let i = 0; i < len; i++) {\n const c = prefix.charCodeAt(i);\n if (c < 33 || c > 126)\n throw new Error(`Invalid prefix (${prefix})`);\n chk = bech32Polymod(chk) ^ (c >> 5);\n }\n chk = bech32Polymod(chk);\n for (let i = 0; i < len; i++)\n chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f);\n for (let v of words)\n chk = bech32Polymod(chk) ^ v;\n for (let i = 0; i < 6; i++)\n chk = bech32Polymod(chk);\n chk ^= encodingConst;\n return BECH_ALPHABET.encode(convertRadix2([chk % 2 ** 30], 30, 5, false));\n}\nfunction genBech32(encoding) {\n const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3;\n const _words = radix2(5);\n const fromWords = _words.decode;\n const toWords = _words.encode;\n const fromWordsUnsafe = unsafeWrapper(fromWords);\n function encode(prefix, words, limit = 90) {\n if (typeof prefix !== 'string')\n throw new Error(`bech32.encode prefix should be string, not ${typeof prefix}`);\n if (!Array.isArray(words) || (words.length && typeof words[0] !== 'number'))\n throw new Error(`bech32.encode words should be array of numbers, not ${typeof words}`);\n const actualLength = prefix.length + 7 + words.length;\n if (limit !== false && actualLength > limit)\n throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`);\n prefix = prefix.toLowerCase();\n return `${prefix}1${BECH_ALPHABET.encode(words)}${bechChecksum(prefix, words, ENCODING_CONST)}`;\n }\n function decode(str, limit = 90) {\n if (typeof str !== 'string')\n throw new Error(`bech32.decode input should be string, not ${typeof str}`);\n if (str.length < 8 || (limit !== false && str.length > limit))\n throw new TypeError(`Wrong string length: ${str.length} (${str}). Expected (8..${limit})`);\n const lowered = str.toLowerCase();\n if (str !== lowered && str !== str.toUpperCase())\n throw new Error(`String must be lowercase or uppercase`);\n str = lowered;\n const sepIndex = str.lastIndexOf('1');\n if (sepIndex === 0 || sepIndex === -1)\n throw new Error(`Letter \"1\" must be present between prefix and data only`);\n const prefix = str.slice(0, sepIndex);\n const _words = str.slice(sepIndex + 1);\n if (_words.length < 6)\n throw new Error('Data must be at least 6 characters long');\n const words = BECH_ALPHABET.decode(_words).slice(0, -6);\n const sum = bechChecksum(prefix, words, ENCODING_CONST);\n if (!_words.endsWith(sum))\n throw new Error(`Invalid checksum in ${str}: expected \"${sum}\"`);\n return { prefix, words };\n }\n const decodeUnsafe = unsafeWrapper(decode);\n function decodeToBytes(str) {\n const { prefix, words } = decode(str, false);\n return { prefix, words, bytes: fromWords(words) };\n }\n return { encode, decode, decodeToBytes, decodeUnsafe, fromWords, fromWordsUnsafe, toWords };\n}\nexport const bech32 = genBech32('bech32');\nexport const bech32m = genBech32('bech32m');\nexport const utf8 = {\n encode: (data) => new TextDecoder().decode(data),\n decode: (str) => new TextEncoder().encode(str),\n};\nexport const hex = chain(radix2(4), alphabet('0123456789abcdef'), join(''), normalize((s) => {\n if (typeof s !== 'string' || s.length % 2)\n throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`);\n return s.toLowerCase();\n}));\nconst CODERS = {\n utf8, hex, base16, base32, base64, base64url, base58, base58xmr\n};\nconst coderTypeError = `Invalid encoding type. Available types: ${Object.keys(CODERS).join(', ')}`;\nexport const bytesToString = (type, bytes) => {\n if (typeof type !== 'string' || !CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (!(bytes instanceof Uint8Array))\n throw new TypeError('bytesToString() expects Uint8Array');\n return CODERS[type].encode(bytes);\n};\nexport const str = bytesToString;\nexport const stringToBytes = (type, str) => {\n if (!CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (typeof str !== 'string')\n throw new TypeError('stringToBytes() expects string');\n return CODERS[type].decode(str);\n};\nexport const bytes = stringToBytes;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wordlist = void 0;\nexports.wordlist = `abandon\nability\nable\nabout\nabove\nabsent\nabsorb\nabstract\nabsurd\nabuse\naccess\naccident\naccount\naccuse\nachieve\nacid\nacoustic\nacquire\nacross\nact\naction\nactor\nactress\nactual\nadapt\nadd\naddict\naddress\nadjust\nadmit\nadult\nadvance\nadvice\naerobic\naffair\nafford\nafraid\nagain\nage\nagent\nagree\nahead\naim\nair\nairport\naisle\nalarm\nalbum\nalcohol\nalert\nalien\nall\nalley\nallow\nalmost\nalone\nalpha\nalready\nalso\nalter\nalways\namateur\namazing\namong\namount\namused\nanalyst\nanchor\nancient\nanger\nangle\nangry\nanimal\nankle\nannounce\nannual\nanother\nanswer\nantenna\nantique\nanxiety\nany\napart\napology\nappear\napple\napprove\napril\narch\narctic\narea\narena\nargue\narm\narmed\narmor\narmy\naround\narrange\narrest\narrive\narrow\nart\nartefact\nartist\nartwork\nask\naspect\nassault\nasset\nassist\nassume\nasthma\nathlete\natom\nattack\nattend\nattitude\nattract\nauction\naudit\naugust\naunt\nauthor\nauto\nautumn\naverage\navocado\navoid\nawake\naware\naway\nawesome\nawful\nawkward\naxis\nbaby\nbachelor\nbacon\nbadge\nbag\nbalance\nbalcony\nball\nbamboo\nbanana\nbanner\nbar\nbarely\nbargain\nbarrel\nbase\nbasic\nbasket\nbattle\nbeach\nbean\nbeauty\nbecause\nbecome\nbeef\nbefore\nbegin\nbehave\nbehind\nbelieve\nbelow\nbelt\nbench\nbenefit\nbest\nbetray\nbetter\nbetween\nbeyond\nbicycle\nbid\nbike\nbind\nbiology\nbird\nbirth\nbitter\nblack\nblade\nblame\nblanket\nblast\nbleak\nbless\nblind\nblood\nblossom\nblouse\nblue\nblur\nblush\nboard\nboat\nbody\nboil\nbomb\nbone\nbonus\nbook\nboost\nborder\nboring\nborrow\nboss\nbottom\nbounce\nbox\nboy\nbracket\nbrain\nbrand\nbrass\nbrave\nbread\nbreeze\nbrick\nbridge\nbrief\nbright\nbring\nbrisk\nbroccoli\nbroken\nbronze\nbroom\nbrother\nbrown\nbrush\nbubble\nbuddy\nbudget\nbuffalo\nbuild\nbulb\nbulk\nbullet\nbundle\nbunker\nburden\nburger\nburst\nbus\nbusiness\nbusy\nbutter\nbuyer\nbuzz\ncabbage\ncabin\ncable\ncactus\ncage\ncake\ncall\ncalm\ncamera\ncamp\ncan\ncanal\ncancel\ncandy\ncannon\ncanoe\ncanvas\ncanyon\ncapable\ncapital\ncaptain\ncar\ncarbon\ncard\ncargo\ncarpet\ncarry\ncart\ncase\ncash\ncasino\ncastle\ncasual\ncat\ncatalog\ncatch\ncategory\ncattle\ncaught\ncause\ncaution\ncave\nceiling\ncelery\ncement\ncensus\ncentury\ncereal\ncertain\nchair\nchalk\nchampion\nchange\nchaos\nchapter\ncharge\nchase\nchat\ncheap\ncheck\ncheese\nchef\ncherry\nchest\nchicken\nchief\nchild\nchimney\nchoice\nchoose\nchronic\nchuckle\nchunk\nchurn\ncigar\ncinnamon\ncircle\ncitizen\ncity\ncivil\nclaim\nclap\nclarify\nclaw\nclay\nclean\nclerk\nclever\nclick\nclient\ncliff\nclimb\nclinic\nclip\nclock\nclog\nclose\ncloth\ncloud\nclown\nclub\nclump\ncluster\nclutch\ncoach\ncoast\ncoconut\ncode\ncoffee\ncoil\ncoin\ncollect\ncolor\ncolumn\ncombine\ncome\ncomfort\ncomic\ncommon\ncompany\nconcert\nconduct\nconfirm\ncongress\nconnect\nconsider\ncontrol\nconvince\ncook\ncool\ncopper\ncopy\ncoral\ncore\ncorn\ncorrect\ncost\ncotton\ncouch\ncountry\ncouple\ncourse\ncousin\ncover\ncoyote\ncrack\ncradle\ncraft\ncram\ncrane\ncrash\ncrater\ncrawl\ncrazy\ncream\ncredit\ncreek\ncrew\ncricket\ncrime\ncrisp\ncritic\ncrop\ncross\ncrouch\ncrowd\ncrucial\ncruel\ncruise\ncrumble\ncrunch\ncrush\ncry\ncrystal\ncube\nculture\ncup\ncupboard\ncurious\ncurrent\ncurtain\ncurve\ncushion\ncustom\ncute\ncycle\ndad\ndamage\ndamp\ndance\ndanger\ndaring\ndash\ndaughter\ndawn\nday\ndeal\ndebate\ndebris\ndecade\ndecember\ndecide\ndecline\ndecorate\ndecrease\ndeer\ndefense\ndefine\ndefy\ndegree\ndelay\ndeliver\ndemand\ndemise\ndenial\ndentist\ndeny\ndepart\ndepend\ndeposit\ndepth\ndeputy\nderive\ndescribe\ndesert\ndesign\ndesk\ndespair\ndestroy\ndetail\ndetect\ndevelop\ndevice\ndevote\ndiagram\ndial\ndiamond\ndiary\ndice\ndiesel\ndiet\ndiffer\ndigital\ndignity\ndilemma\ndinner\ndinosaur\ndirect\ndirt\ndisagree\ndiscover\ndisease\ndish\ndismiss\ndisorder\ndisplay\ndistance\ndivert\ndivide\ndivorce\ndizzy\ndoctor\ndocument\ndog\ndoll\ndolphin\ndomain\ndonate\ndonkey\ndonor\ndoor\ndose\ndouble\ndove\ndraft\ndragon\ndrama\ndrastic\ndraw\ndream\ndress\ndrift\ndrill\ndrink\ndrip\ndrive\ndrop\ndrum\ndry\nduck\ndumb\ndune\nduring\ndust\ndutch\nduty\ndwarf\ndynamic\neager\neagle\nearly\nearn\nearth\neasily\neast\neasy\necho\necology\neconomy\nedge\nedit\neducate\neffort\negg\neight\neither\nelbow\nelder\nelectric\nelegant\nelement\nelephant\nelevator\nelite\nelse\nembark\nembody\nembrace\nemerge\nemotion\nemploy\nempower\nempty\nenable\nenact\nend\nendless\nendorse\nenemy\nenergy\nenforce\nengage\nengine\nenhance\nenjoy\nenlist\nenough\nenrich\nenroll\nensure\nenter\nentire\nentry\nenvelope\nepisode\nequal\nequip\nera\nerase\nerode\nerosion\nerror\nerupt\nescape\nessay\nessence\nestate\neternal\nethics\nevidence\nevil\nevoke\nevolve\nexact\nexample\nexcess\nexchange\nexcite\nexclude\nexcuse\nexecute\nexercise\nexhaust\nexhibit\nexile\nexist\nexit\nexotic\nexpand\nexpect\nexpire\nexplain\nexpose\nexpress\nextend\nextra\neye\neyebrow\nfabric\nface\nfaculty\nfade\nfaint\nfaith\nfall\nfalse\nfame\nfamily\nfamous\nfan\nfancy\nfantasy\nfarm\nfashion\nfat\nfatal\nfather\nfatigue\nfault\nfavorite\nfeature\nfebruary\nfederal\nfee\nfeed\nfeel\nfemale\nfence\nfestival\nfetch\nfever\nfew\nfiber\nfiction\nfield\nfigure\nfile\nfilm\nfilter\nfinal\nfind\nfine\nfinger\nfinish\nfire\nfirm\nfirst\nfiscal\nfish\nfit\nfitness\nfix\nflag\nflame\nflash\nflat\nflavor\nflee\nflight\nflip\nfloat\nflock\nfloor\nflower\nfluid\nflush\nfly\nfoam\nfocus\nfog\nfoil\nfold\nfollow\nfood\nfoot\nforce\nforest\nforget\nfork\nfortune\nforum\nforward\nfossil\nfoster\nfound\nfox\nfragile\nframe\nfrequent\nfresh\nfriend\nfringe\nfrog\nfront\nfrost\nfrown\nfrozen\nfruit\nfuel\nfun\nfunny\nfurnace\nfury\nfuture\ngadget\ngain\ngalaxy\ngallery\ngame\ngap\ngarage\ngarbage\ngarden\ngarlic\ngarment\ngas\ngasp\ngate\ngather\ngauge\ngaze\ngeneral\ngenius\ngenre\ngentle\ngenuine\ngesture\nghost\ngiant\ngift\ngiggle\nginger\ngiraffe\ngirl\ngive\nglad\nglance\nglare\nglass\nglide\nglimpse\nglobe\ngloom\nglory\nglove\nglow\nglue\ngoat\ngoddess\ngold\ngood\ngoose\ngorilla\ngospel\ngossip\ngovern\ngown\ngrab\ngrace\ngrain\ngrant\ngrape\ngrass\ngravity\ngreat\ngreen\ngrid\ngrief\ngrit\ngrocery\ngroup\ngrow\ngrunt\nguard\nguess\nguide\nguilt\nguitar\ngun\ngym\nhabit\nhair\nhalf\nhammer\nhamster\nhand\nhappy\nharbor\nhard\nharsh\nharvest\nhat\nhave\nhawk\nhazard\nhead\nhealth\nheart\nheavy\nhedgehog\nheight\nhello\nhelmet\nhelp\nhen\nhero\nhidden\nhigh\nhill\nhint\nhip\nhire\nhistory\nhobby\nhockey\nhold\nhole\nholiday\nhollow\nhome\nhoney\nhood\nhope\nhorn\nhorror\nhorse\nhospital\nhost\nhotel\nhour\nhover\nhub\nhuge\nhuman\nhumble\nhumor\nhundred\nhungry\nhunt\nhurdle\nhurry\nhurt\nhusband\nhybrid\nice\nicon\nidea\nidentify\nidle\nignore\nill\nillegal\nillness\nimage\nimitate\nimmense\nimmune\nimpact\nimpose\nimprove\nimpulse\ninch\ninclude\nincome\nincrease\nindex\nindicate\nindoor\nindustry\ninfant\ninflict\ninform\ninhale\ninherit\ninitial\ninject\ninjury\ninmate\ninner\ninnocent\ninput\ninquiry\ninsane\ninsect\ninside\ninspire\ninstall\nintact\ninterest\ninto\ninvest\ninvite\ninvolve\niron\nisland\nisolate\nissue\nitem\nivory\njacket\njaguar\njar\njazz\njealous\njeans\njelly\njewel\njob\njoin\njoke\njourney\njoy\njudge\njuice\njump\njungle\njunior\njunk\njust\nkangaroo\nkeen\nkeep\nketchup\nkey\nkick\nkid\nkidney\nkind\nkingdom\nkiss\nkit\nkitchen\nkite\nkitten\nkiwi\nknee\nknife\nknock\nknow\nlab\nlabel\nlabor\nladder\nlady\nlake\nlamp\nlanguage\nlaptop\nlarge\nlater\nlatin\nlaugh\nlaundry\nlava\nlaw\nlawn\nlawsuit\nlayer\nlazy\nleader\nleaf\nlearn\nleave\nlecture\nleft\nleg\nlegal\nlegend\nleisure\nlemon\nlend\nlength\nlens\nleopard\nlesson\nletter\nlevel\nliar\nliberty\nlibrary\nlicense\nlife\nlift\nlight\nlike\nlimb\nlimit\nlink\nlion\nliquid\nlist\nlittle\nlive\nlizard\nload\nloan\nlobster\nlocal\nlock\nlogic\nlonely\nlong\nloop\nlottery\nloud\nlounge\nlove\nloyal\nlucky\nluggage\nlumber\nlunar\nlunch\nluxury\nlyrics\nmachine\nmad\nmagic\nmagnet\nmaid\nmail\nmain\nmajor\nmake\nmammal\nman\nmanage\nmandate\nmango\nmansion\nmanual\nmaple\nmarble\nmarch\nmargin\nmarine\nmarket\nmarriage\nmask\nmass\nmaster\nmatch\nmaterial\nmath\nmatrix\nmatter\nmaximum\nmaze\nmeadow\nmean\nmeasure\nmeat\nmechanic\nmedal\nmedia\nmelody\nmelt\nmember\nmemory\nmention\nmenu\nmercy\nmerge\nmerit\nmerry\nmesh\nmessage\nmetal\nmethod\nmiddle\nmidnight\nmilk\nmillion\nmimic\nmind\nminimum\nminor\nminute\nmiracle\nmirror\nmisery\nmiss\nmistake\nmix\nmixed\nmixture\nmobile\nmodel\nmodify\nmom\nmoment\nmonitor\nmonkey\nmonster\nmonth\nmoon\nmoral\nmore\nmorning\nmosquito\nmother\nmotion\nmotor\nmountain\nmouse\nmove\nmovie\nmuch\nmuffin\nmule\nmultiply\nmuscle\nmuseum\nmushroom\nmusic\nmust\nmutual\nmyself\nmystery\nmyth\nnaive\nname\nnapkin\nnarrow\nnasty\nnation\nnature\nnear\nneck\nneed\nnegative\nneglect\nneither\nnephew\nnerve\nnest\nnet\nnetwork\nneutral\nnever\nnews\nnext\nnice\nnight\nnoble\nnoise\nnominee\nnoodle\nnormal\nnorth\nnose\nnotable\nnote\nnothing\nnotice\nnovel\nnow\nnuclear\nnumber\nnurse\nnut\noak\nobey\nobject\noblige\nobscure\nobserve\nobtain\nobvious\noccur\nocean\noctober\nodor\noff\noffer\noffice\noften\noil\nokay\nold\nolive\nolympic\nomit\nonce\none\nonion\nonline\nonly\nopen\nopera\nopinion\noppose\noption\norange\norbit\norchard\norder\nordinary\norgan\norient\noriginal\norphan\nostrich\nother\noutdoor\nouter\noutput\noutside\noval\noven\nover\nown\nowner\noxygen\noyster\nozone\npact\npaddle\npage\npair\npalace\npalm\npanda\npanel\npanic\npanther\npaper\nparade\nparent\npark\nparrot\nparty\npass\npatch\npath\npatient\npatrol\npattern\npause\npave\npayment\npeace\npeanut\npear\npeasant\npelican\npen\npenalty\npencil\npeople\npepper\nperfect\npermit\nperson\npet\nphone\nphoto\nphrase\nphysical\npiano\npicnic\npicture\npiece\npig\npigeon\npill\npilot\npink\npioneer\npipe\npistol\npitch\npizza\nplace\nplanet\nplastic\nplate\nplay\nplease\npledge\npluck\nplug\nplunge\npoem\npoet\npoint\npolar\npole\npolice\npond\npony\npool\npopular\nportion\nposition\npossible\npost\npotato\npottery\npoverty\npowder\npower\npractice\npraise\npredict\nprefer\nprepare\npresent\npretty\nprevent\nprice\npride\nprimary\nprint\npriority\nprison\nprivate\nprize\nproblem\nprocess\nproduce\nprofit\nprogram\nproject\npromote\nproof\nproperty\nprosper\nprotect\nproud\nprovide\npublic\npudding\npull\npulp\npulse\npumpkin\npunch\npupil\npuppy\npurchase\npurity\npurpose\npurse\npush\nput\npuzzle\npyramid\nquality\nquantum\nquarter\nquestion\nquick\nquit\nquiz\nquote\nrabbit\nraccoon\nrace\nrack\nradar\nradio\nrail\nrain\nraise\nrally\nramp\nranch\nrandom\nrange\nrapid\nrare\nrate\nrather\nraven\nraw\nrazor\nready\nreal\nreason\nrebel\nrebuild\nrecall\nreceive\nrecipe\nrecord\nrecycle\nreduce\nreflect\nreform\nrefuse\nregion\nregret\nregular\nreject\nrelax\nrelease\nrelief\nrely\nremain\nremember\nremind\nremove\nrender\nrenew\nrent\nreopen\nrepair\nrepeat\nreplace\nreport\nrequire\nrescue\nresemble\nresist\nresource\nresponse\nresult\nretire\nretreat\nreturn\nreunion\nreveal\nreview\nreward\nrhythm\nrib\nribbon\nrice\nrich\nride\nridge\nrifle\nright\nrigid\nring\nriot\nripple\nrisk\nritual\nrival\nriver\nroad\nroast\nrobot\nrobust\nrocket\nromance\nroof\nrookie\nroom\nrose\nrotate\nrough\nround\nroute\nroyal\nrubber\nrude\nrug\nrule\nrun\nrunway\nrural\nsad\nsaddle\nsadness\nsafe\nsail\nsalad\nsalmon\nsalon\nsalt\nsalute\nsame\nsample\nsand\nsatisfy\nsatoshi\nsauce\nsausage\nsave\nsay\nscale\nscan\nscare\nscatter\nscene\nscheme\nschool\nscience\nscissors\nscorpion\nscout\nscrap\nscreen\nscript\nscrub\nsea\nsearch\nseason\nseat\nsecond\nsecret\nsection\nsecurity\nseed\nseek\nsegment\nselect\nsell\nseminar\nsenior\nsense\nsentence\nseries\nservice\nsession\nsettle\nsetup\nseven\nshadow\nshaft\nshallow\nshare\nshed\nshell\nsheriff\nshield\nshift\nshine\nship\nshiver\nshock\nshoe\nshoot\nshop\nshort\nshoulder\nshove\nshrimp\nshrug\nshuffle\nshy\nsibling\nsick\nside\nsiege\nsight\nsign\nsilent\nsilk\nsilly\nsilver\nsimilar\nsimple\nsince\nsing\nsiren\nsister\nsituate\nsix\nsize\nskate\nsketch\nski\nskill\nskin\nskirt\nskull\nslab\nslam\nsleep\nslender\nslice\nslide\nslight\nslim\nslogan\nslot\nslow\nslush\nsmall\nsmart\nsmile\nsmoke\nsmooth\nsnack\nsnake\nsnap\nsniff\nsnow\nsoap\nsoccer\nsocial\nsock\nsoda\nsoft\nsolar\nsoldier\nsolid\nsolution\nsolve\nsomeone\nsong\nsoon\nsorry\nsort\nsoul\nsound\nsoup\nsource\nsouth\nspace\nspare\nspatial\nspawn\nspeak\nspecial\nspeed\nspell\nspend\nsphere\nspice\nspider\nspike\nspin\nspirit\nsplit\nspoil\nsponsor\nspoon\nsport\nspot\nspray\nspread\nspring\nspy\nsquare\nsqueeze\nsquirrel\nstable\nstadium\nstaff\nstage\nstairs\nstamp\nstand\nstart\nstate\nstay\nsteak\nsteel\nstem\nstep\nstereo\nstick\nstill\nsting\nstock\nstomach\nstone\nstool\nstory\nstove\nstrategy\nstreet\nstrike\nstrong\nstruggle\nstudent\nstuff\nstumble\nstyle\nsubject\nsubmit\nsubway\nsuccess\nsuch\nsudden\nsuffer\nsugar\nsuggest\nsuit\nsummer\nsun\nsunny\nsunset\nsuper\nsupply\nsupreme\nsure\nsurface\nsurge\nsurprise\nsurround\nsurvey\nsuspect\nsustain\nswallow\nswamp\nswap\nswarm\nswear\nsweet\nswift\nswim\nswing\nswitch\nsword\nsymbol\nsymptom\nsyrup\nsystem\ntable\ntackle\ntag\ntail\ntalent\ntalk\ntank\ntape\ntarget\ntask\ntaste\ntattoo\ntaxi\nteach\nteam\ntell\nten\ntenant\ntennis\ntent\nterm\ntest\ntext\nthank\nthat\ntheme\nthen\ntheory\nthere\nthey\nthing\nthis\nthought\nthree\nthrive\nthrow\nthumb\nthunder\nticket\ntide\ntiger\ntilt\ntimber\ntime\ntiny\ntip\ntired\ntissue\ntitle\ntoast\ntobacco\ntoday\ntoddler\ntoe\ntogether\ntoilet\ntoken\ntomato\ntomorrow\ntone\ntongue\ntonight\ntool\ntooth\ntop\ntopic\ntopple\ntorch\ntornado\ntortoise\ntoss\ntotal\ntourist\ntoward\ntower\ntown\ntoy\ntrack\ntrade\ntraffic\ntragic\ntrain\ntransfer\ntrap\ntrash\ntravel\ntray\ntreat\ntree\ntrend\ntrial\ntribe\ntrick\ntrigger\ntrim\ntrip\ntrophy\ntrouble\ntruck\ntrue\ntruly\ntrumpet\ntrust\ntruth\ntry\ntube\ntuition\ntumble\ntuna\ntunnel\nturkey\nturn\nturtle\ntwelve\ntwenty\ntwice\ntwin\ntwist\ntwo\ntype\ntypical\nugly\numbrella\nunable\nunaware\nuncle\nuncover\nunder\nundo\nunfair\nunfold\nunhappy\nuniform\nunique\nunit\nuniverse\nunknown\nunlock\nuntil\nunusual\nunveil\nupdate\nupgrade\nuphold\nupon\nupper\nupset\nurban\nurge\nusage\nuse\nused\nuseful\nuseless\nusual\nutility\nvacant\nvacuum\nvague\nvalid\nvalley\nvalve\nvan\nvanish\nvapor\nvarious\nvast\nvault\nvehicle\nvelvet\nvendor\nventure\nvenue\nverb\nverify\nversion\nvery\nvessel\nveteran\nviable\nvibrant\nvicious\nvictory\nvideo\nview\nvillage\nvintage\nviolin\nvirtual\nvirus\nvisa\nvisit\nvisual\nvital\nvivid\nvocal\nvoice\nvoid\nvolcano\nvolume\nvote\nvoyage\nwage\nwagon\nwait\nwalk\nwall\nwalnut\nwant\nwarfare\nwarm\nwarrior\nwash\nwasp\nwaste\nwater\nwave\nway\nwealth\nweapon\nwear\nweasel\nweather\nweb\nwedding\nweekend\nweird\nwelcome\nwest\nwet\nwhale\nwhat\nwheat\nwheel\nwhen\nwhere\nwhip\nwhisper\nwide\nwidth\nwife\nwild\nwill\nwin\nwindow\nwine\nwing\nwink\nwinner\nwinter\nwire\nwisdom\nwise\nwish\nwitness\nwolf\nwoman\nwonder\nwood\nwool\nword\nwork\nworld\nworry\nworth\nwrap\nwreck\nwrestle\nwrist\nwrite\nwrong\nyard\nyear\nyellow\nyou\nyoung\nyouth\nzebra\nzero\nzone\nzoo`.split('\\n');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.output = exports.exists = exports.hash = exports.bytes = exports.bool = exports.number = void 0;\nfunction number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nexports.number = number;\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`Expected boolean, not ${b}`);\n}\nexports.bool = bool;\nfunction bytes(b, ...lengths) {\n if (!(b instanceof Uint8Array))\n throw new TypeError('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new TypeError(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\nexports.bytes = bytes;\nfunction hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nexports.hash = hash;\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nexports.exists = exists;\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nexports.output = output;\nconst assert = {\n number,\n bool,\n bytes,\n hash,\n exists,\n output,\n};\nexports.default = assert;\n//# sourceMappingURL=_assert.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.crypto = void 0;\nexports.crypto = {\n node: undefined,\n web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\n//# sourceMappingURL=cryptoBrowser.js.map","\"use strict\";\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.randomBytes = exports.wrapConstructorWithOpts = exports.wrapConstructor = exports.checkOpts = exports.Hash = exports.concatBytes = exports.toBytes = exports.utf8ToBytes = exports.asyncLoop = exports.nextTick = exports.hexToBytes = exports.bytesToHex = exports.isLE = exports.rotr = exports.createView = exports.u32 = exports.u8 = void 0;\n// The import here is via the package name. This is to ensure\n// that exports mapping/resolution does fall into place.\nconst crypto_1 = require(\"@noble/hashes/crypto\");\n// Cast array to different type\nconst u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexports.u8 = u8;\nconst u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\nexports.u32 = u32;\n// Cast array to view\nconst createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\nexports.createView = createView;\n// The rotate right (circular right shift) operation for uint32\nconst rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\nexports.rotr = rotr;\nexports.isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\n// There is almost no big endian hardware, but js typed arrays uses platform specific endianness.\n// So, just to be sure not to corrupt anything.\nif (!exports.isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xde, 0xad, 0xbe, 0xef]))\n */\nfunction bytesToHex(uint8a) {\n // pre-caching improves the speed 6x\n if (!(uint8a instanceof Uint8Array))\n throw new Error('Uint8Array expected');\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\nexports.bytesToHex = bytesToHex;\n/**\n * @example hexToBytes('deadbeef')\n */\nfunction hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex');\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\nexports.hexToBytes = hexToBytes;\n// There is no setImmediate in browser and setTimeout is slow. However, call to async function will return Promise\n// which will be fullfiled only on next scheduler queue processing step and this is exactly what we need.\nconst nextTick = async () => { };\nexports.nextTick = nextTick;\n// Returns control to thread each 'tick' ms to avoid blocking\nasync function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await (0, exports.nextTick)();\n ts += diff;\n }\n}\nexports.asyncLoop = asyncLoop;\nfunction utf8ToBytes(str) {\n if (typeof str !== 'string') {\n throw new TypeError(`utf8ToBytes expected string, got ${typeof str}`);\n }\n return new TextEncoder().encode(str);\n}\nexports.utf8ToBytes = utf8ToBytes;\nfunction toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!(data instanceof Uint8Array))\n throw new TypeError(`Expected input type is Uint8Array (got ${typeof data})`);\n return data;\n}\nexports.toBytes = toBytes;\n/**\n * Concats Uint8Array-s into one; like `Buffer.concat([buf1, buf2])`\n * @example concatBytes(buf1, buf2)\n */\nfunction concatBytes(...arrays) {\n if (!arrays.every((a) => a instanceof Uint8Array))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nexports.concatBytes = concatBytes;\n// For runtime check if class implements interface\nclass Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nexports.Hash = Hash;\n// Check if object doens't have custom constructor (like Uint8Array/Array)\nconst isPlainObject = (obj) => Object.prototype.toString.call(obj) === '[object Object]' && obj.constructor === Object;\nfunction checkOpts(defaults, opts) {\n if (opts !== undefined && (typeof opts !== 'object' || !isPlainObject(opts)))\n throw new TypeError('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexports.checkOpts = checkOpts;\nfunction wrapConstructor(hashConstructor) {\n const hashC = (message) => hashConstructor().update(toBytes(message)).digest();\n const tmp = hashConstructor();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashConstructor();\n return hashC;\n}\nexports.wrapConstructor = wrapConstructor;\nfunction wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexports.wrapConstructorWithOpts = wrapConstructorWithOpts;\n/**\n * Secure PRNG\n */\nfunction randomBytes(bytesLength = 32) {\n if (crypto_1.crypto.web) {\n return crypto_1.crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto_1.crypto.node) {\n return new Uint8Array(crypto_1.crypto.node.randomBytes(bytesLength).buffer);\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n}\nexports.randomBytes = randomBytes;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hmac = void 0;\nconst _assert_js_1 = require(\"./_assert.js\");\nconst utils_js_1 = require(\"./utils.js\");\n// HMAC (RFC 2104)\nclass HMAC extends utils_js_1.Hash {\n constructor(hash, _key) {\n super();\n this.finished = false;\n this.destroyed = false;\n _assert_js_1.default.hash(hash);\n const key = (0, utils_js_1.toBytes)(_key);\n this.iHash = hash.create();\n if (typeof this.iHash.update !== 'function')\n throw new TypeError('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create();\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n pad.fill(0);\n }\n update(buf) {\n _assert_js_1.default.exists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out) {\n _assert_js_1.default.exists(this);\n _assert_js_1.default.bytes(out, this.outputLen);\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to) {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to || (to = Object.create(Object.getPrototypeOf(this), {}));\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n */\nconst hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nexports.hmac = hmac;\nexports.hmac.create = (hash, key) => new HMAC(hash, key);\n//# sourceMappingURL=hmac.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pbkdf2Async = exports.pbkdf2 = void 0;\nconst _assert_js_1 = require(\"./_assert.js\");\nconst hmac_js_1 = require(\"./hmac.js\");\nconst utils_js_1 = require(\"./utils.js\");\n// Common prologue and epilogue for sync/async functions\nfunction pbkdf2Init(hash, _password, _salt, _opts) {\n _assert_js_1.default.hash(hash);\n const opts = (0, utils_js_1.checkOpts)({ dkLen: 32, asyncTick: 10 }, _opts);\n const { c, dkLen, asyncTick } = opts;\n _assert_js_1.default.number(c);\n _assert_js_1.default.number(dkLen);\n _assert_js_1.default.number(asyncTick);\n if (c < 1)\n throw new Error('PBKDF2: iterations (c) should be >= 1');\n const password = (0, utils_js_1.toBytes)(_password);\n const salt = (0, utils_js_1.toBytes)(_salt);\n // DK = PBKDF2(PRF, Password, Salt, c, dkLen);\n const DK = new Uint8Array(dkLen);\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n const PRF = hmac_js_1.hmac.create(hash, password);\n const PRFSalt = PRF._cloneInto().update(salt);\n return { c, dkLen, asyncTick, DK, PRF, PRFSalt };\n}\nfunction pbkdf2Output(PRF, PRFSalt, DK, prfW, u) {\n PRF.destroy();\n PRFSalt.destroy();\n if (prfW)\n prfW.destroy();\n u.fill(0);\n return DK;\n}\n/**\n * PBKDF2-HMAC: RFC 2898 key derivation function\n * @param hash - hash function that would be used e.g. sha256\n * @param password - password from which a derived key is generated\n * @param salt - cryptographic salt\n * @param opts - {c, dkLen} where c is work factor and dkLen is output message size\n */\nfunction pbkdf2(hash, password, salt, opts) {\n const { c, dkLen, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW; // Working copy\n const arr = new Uint8Array(4);\n const view = (0, utils_js_1.createView)(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n for (let ui = 1; ui < c; ui++) {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++)\n Ti[i] ^= u[i];\n }\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\nexports.pbkdf2 = pbkdf2;\nasync function pbkdf2Async(hash, password, salt, opts) {\n const { c, dkLen, asyncTick, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW; // Working copy\n const arr = new Uint8Array(4);\n const view = (0, utils_js_1.createView)(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n await (0, utils_js_1.asyncLoop)(c - 1, asyncTick, (i) => {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++)\n Ti[i] ^= u[i];\n });\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\nexports.pbkdf2Async = pbkdf2Async;\n//# sourceMappingURL=pbkdf2.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SHA2 = void 0;\nconst _assert_js_1 = require(\"./_assert.js\");\nconst utils_js_1 = require(\"./utils.js\");\n// Polyfill for Safari 14\nfunction setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n// Base SHA2 class (RFC 6234)\nclass SHA2 extends utils_js_1.Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = (0, utils_js_1.createView)(this.buffer);\n }\n update(data) {\n _assert_js_1.default.exists(this);\n const { view, buffer, blockLen } = this;\n data = (0, utils_js_1.toBytes)(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = (0, utils_js_1.createView)(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n _assert_js_1.default.exists(this);\n _assert_js_1.default.output(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = (0, utils_js_1.createView)(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4)\n throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length)\n throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++)\n oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\nexports.SHA2 = SHA2;\n//# sourceMappingURL=_sha2.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sha224 = exports.sha256 = void 0;\nconst _sha2_js_1 = require(\"./_sha2.js\");\nconst utils_js_1 = require(\"./utils.js\");\n// Choice: a ? b : c\nconst Chi = (a, b, c) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst IV = new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = new Uint32Array(64);\nclass SHA256 extends _sha2_js_1.SHA2 {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = IV[0] | 0;\n this.B = IV[1] | 0;\n this.C = IV[2] | 0;\n this.D = IV[3] | 0;\n this.E = IV[4] | 0;\n this.F = IV[5] | 0;\n this.G = IV[6] | 0;\n this.H = IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = (0, utils_js_1.rotr)(W15, 7) ^ (0, utils_js_1.rotr)(W15, 18) ^ (W15 >>> 3);\n const s1 = (0, utils_js_1.rotr)(W2, 17) ^ (0, utils_js_1.rotr)(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = (0, utils_js_1.rotr)(E, 6) ^ (0, utils_js_1.rotr)(E, 11) ^ (0, utils_js_1.rotr)(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = (0, utils_js_1.rotr)(A, 2) ^ (0, utils_js_1.rotr)(A, 13) ^ (0, utils_js_1.rotr)(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n// Constants from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf\nclass SHA224 extends SHA256 {\n constructor() {\n super();\n this.A = 0xc1059ed8 | 0;\n this.B = 0x367cd507 | 0;\n this.C = 0x3070dd17 | 0;\n this.D = 0xf70e5939 | 0;\n this.E = 0xffc00b31 | 0;\n this.F = 0x68581511 | 0;\n this.G = 0x64f98fa7 | 0;\n this.H = 0xbefa4fa4 | 0;\n this.outputLen = 28;\n }\n}\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexports.sha256 = (0, utils_js_1.wrapConstructor)(() => new SHA256());\nexports.sha224 = (0, utils_js_1.wrapConstructor)(() => new SHA224());\n//# sourceMappingURL=sha256.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.add = exports.toBig = exports.split = exports.fromBig = void 0;\nconst U32_MASK64 = BigInt(2 ** 32 - 1);\nconst _32n = BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nexports.fromBig = fromBig;\nfunction split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nexports.split = split;\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\nexports.toBig = toBig;\n// for Shift in [0, 32)\nconst shrSH = (h, l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (h, l) => l;\nconst rotr32L = (h, l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\n// Removing \"export\" has 5% perf penalty -_-\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\nexports.add = add;\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig: exports.toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexports.default = u64;\n//# sourceMappingURL=_u64.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sha384 = exports.sha512_256 = exports.sha512_224 = exports.sha512 = exports.SHA512 = void 0;\nconst _sha2_js_1 = require(\"./_sha2.js\");\nconst _u64_js_1 = require(\"./_u64.js\");\nconst utils_js_1 = require(\"./utils.js\");\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = _u64_js_1.default.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n)));\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = new Uint32Array(80);\nconst SHA512_W_L = new Uint32Array(80);\nclass SHA512 extends _sha2_js_1.SHA2 {\n constructor() {\n super(128, 64, 16, false);\n // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n // Also looks cleaner and easier to verify with spec.\n // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x6a09e667 | 0;\n this.Al = 0xf3bcc908 | 0;\n this.Bh = 0xbb67ae85 | 0;\n this.Bl = 0x84caa73b | 0;\n this.Ch = 0x3c6ef372 | 0;\n this.Cl = 0xfe94f82b | 0;\n this.Dh = 0xa54ff53a | 0;\n this.Dl = 0x5f1d36f1 | 0;\n this.Eh = 0x510e527f | 0;\n this.El = 0xade682d1 | 0;\n this.Fh = 0x9b05688c | 0;\n this.Fl = 0x2b3e6c1f | 0;\n this.Gh = 0x1f83d9ab | 0;\n this.Gl = 0xfb41bd6b | 0;\n this.Hh = 0x5be0cd19 | 0;\n this.Hl = 0x137e2179 | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = _u64_js_1.default.rotrSH(W15h, W15l, 1) ^ _u64_js_1.default.rotrSH(W15h, W15l, 8) ^ _u64_js_1.default.shrSH(W15h, W15l, 7);\n const s0l = _u64_js_1.default.rotrSL(W15h, W15l, 1) ^ _u64_js_1.default.rotrSL(W15h, W15l, 8) ^ _u64_js_1.default.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = _u64_js_1.default.rotrSH(W2h, W2l, 19) ^ _u64_js_1.default.rotrBH(W2h, W2l, 61) ^ _u64_js_1.default.shrSH(W2h, W2l, 6);\n const s1l = _u64_js_1.default.rotrSL(W2h, W2l, 19) ^ _u64_js_1.default.rotrBL(W2h, W2l, 61) ^ _u64_js_1.default.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = _u64_js_1.default.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = _u64_js_1.default.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = _u64_js_1.default.rotrSH(Eh, El, 14) ^ _u64_js_1.default.rotrSH(Eh, El, 18) ^ _u64_js_1.default.rotrBH(Eh, El, 41);\n const sigma1l = _u64_js_1.default.rotrSL(Eh, El, 14) ^ _u64_js_1.default.rotrSL(Eh, El, 18) ^ _u64_js_1.default.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = _u64_js_1.default.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = _u64_js_1.default.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = _u64_js_1.default.rotrSH(Ah, Al, 28) ^ _u64_js_1.default.rotrBH(Ah, Al, 34) ^ _u64_js_1.default.rotrBH(Ah, Al, 39);\n const sigma0l = _u64_js_1.default.rotrSL(Ah, Al, 28) ^ _u64_js_1.default.rotrBL(Ah, Al, 34) ^ _u64_js_1.default.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = _u64_js_1.default.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = _u64_js_1.default.add3L(T1l, sigma0l, MAJl);\n Ah = _u64_js_1.default.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = _u64_js_1.default.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = _u64_js_1.default.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = _u64_js_1.default.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = _u64_js_1.default.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = _u64_js_1.default.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = _u64_js_1.default.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = _u64_js_1.default.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = _u64_js_1.default.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n SHA512_W_H.fill(0);\n SHA512_W_L.fill(0);\n }\n destroy() {\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nexports.SHA512 = SHA512;\nclass SHA512_224 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x8c3d37c8 | 0;\n this.Al = 0x19544da2 | 0;\n this.Bh = 0x73e19966 | 0;\n this.Bl = 0x89dcd4d6 | 0;\n this.Ch = 0x1dfab7ae | 0;\n this.Cl = 0x32ff9c82 | 0;\n this.Dh = 0x679dd514 | 0;\n this.Dl = 0x582f9fcf | 0;\n this.Eh = 0x0f6d2b69 | 0;\n this.El = 0x7bd44da8 | 0;\n this.Fh = 0x77e36f73 | 0;\n this.Fl = 0x04c48942 | 0;\n this.Gh = 0x3f9d85a8 | 0;\n this.Gl = 0x6a1d36c8 | 0;\n this.Hh = 0x1112e6ad | 0;\n this.Hl = 0x91d692a1 | 0;\n this.outputLen = 28;\n }\n}\nclass SHA512_256 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x22312194 | 0;\n this.Al = 0xfc2bf72c | 0;\n this.Bh = 0x9f555fa3 | 0;\n this.Bl = 0xc84c64c2 | 0;\n this.Ch = 0x2393b86b | 0;\n this.Cl = 0x6f53b151 | 0;\n this.Dh = 0x96387719 | 0;\n this.Dl = 0x5940eabd | 0;\n this.Eh = 0x96283ee2 | 0;\n this.El = 0xa88effe3 | 0;\n this.Fh = 0xbe5e1e25 | 0;\n this.Fl = 0x53863992 | 0;\n this.Gh = 0x2b0199fc | 0;\n this.Gl = 0x2c85b8aa | 0;\n this.Hh = 0x0eb72ddc | 0;\n this.Hl = 0x81c52ca2 | 0;\n this.outputLen = 32;\n }\n}\nclass SHA384 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0xcbbb9d5d | 0;\n this.Al = 0xc1059ed8 | 0;\n this.Bh = 0x629a292a | 0;\n this.Bl = 0x367cd507 | 0;\n this.Ch = 0x9159015a | 0;\n this.Cl = 0x3070dd17 | 0;\n this.Dh = 0x152fecd8 | 0;\n this.Dl = 0xf70e5939 | 0;\n this.Eh = 0x67332667 | 0;\n this.El = 0xffc00b31 | 0;\n this.Fh = 0x8eb44a87 | 0;\n this.Fl = 0x68581511 | 0;\n this.Gh = 0xdb0c2e0d | 0;\n this.Gl = 0x64f98fa7 | 0;\n this.Hh = 0x47b5481d | 0;\n this.Hl = 0xbefa4fa4 | 0;\n this.outputLen = 48;\n }\n}\nexports.sha512 = (0, utils_js_1.wrapConstructor)(() => new SHA512());\nexports.sha512_224 = (0, utils_js_1.wrapConstructor)(() => new SHA512_224());\nexports.sha512_256 = (0, utils_js_1.wrapConstructor)(() => new SHA512_256());\nexports.sha384 = (0, utils_js_1.wrapConstructor)(() => new SHA384());\n//# sourceMappingURL=sha512.js.map","\"use strict\";\n/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bytes = exports.stringToBytes = exports.str = exports.bytesToString = exports.hex = exports.utf8 = exports.bech32m = exports.bech32 = exports.base58check = exports.base58xmr = exports.base58xrp = exports.base58flickr = exports.base58 = exports.base64url = exports.base64 = exports.base32crockford = exports.base32hex = exports.base32 = exports.base16 = exports.utils = exports.assertNumber = void 0;\nfunction assertNumber(n) {\n if (!Number.isSafeInteger(n))\n throw new Error(`Wrong integer: ${n}`);\n}\nexports.assertNumber = assertNumber;\nfunction chain(...args) {\n const wrap = (a, b) => (c) => a(b(c));\n const encode = Array.from(args)\n .reverse()\n .reduce((acc, i) => (acc ? wrap(acc, i.encode) : i.encode), undefined);\n const decode = args.reduce((acc, i) => (acc ? wrap(acc, i.decode) : i.decode), undefined);\n return { encode, decode };\n}\nfunction alphabet(alphabet) {\n return {\n encode: (digits) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('alphabet.encode input should be an array of numbers');\n return digits.map((i) => {\n assertNumber(i);\n if (i < 0 || i >= alphabet.length)\n throw new Error(`Digit index outside alphabet: ${i} (alphabet: ${alphabet.length})`);\n return alphabet[i];\n });\n },\n decode: (input) => {\n if (!Array.isArray(input) || (input.length && typeof input[0] !== 'string'))\n throw new Error('alphabet.decode input should be array of strings');\n return input.map((letter) => {\n if (typeof letter !== 'string')\n throw new Error(`alphabet.decode: not string element=${letter}`);\n const index = alphabet.indexOf(letter);\n if (index === -1)\n throw new Error(`Unknown letter: \"${letter}\". Allowed: ${alphabet}`);\n return index;\n });\n },\n };\n}\nfunction join(separator = '') {\n if (typeof separator !== 'string')\n throw new Error('join separator should be string');\n return {\n encode: (from) => {\n if (!Array.isArray(from) || (from.length && typeof from[0] !== 'string'))\n throw new Error('join.encode input should be array of strings');\n for (let i of from)\n if (typeof i !== 'string')\n throw new Error(`join.encode: non-string input=${i}`);\n return from.join(separator);\n },\n decode: (to) => {\n if (typeof to !== 'string')\n throw new Error('join.decode input should be string');\n return to.split(separator);\n },\n };\n}\nfunction padding(bits, chr = '=') {\n assertNumber(bits);\n if (typeof chr !== 'string')\n throw new Error('padding chr should be string');\n return {\n encode(data) {\n if (!Array.isArray(data) || (data.length && typeof data[0] !== 'string'))\n throw new Error('padding.encode input should be array of strings');\n for (let i of data)\n if (typeof i !== 'string')\n throw new Error(`padding.encode: non-string input=${i}`);\n while ((data.length * bits) % 8)\n data.push(chr);\n return data;\n },\n decode(input) {\n if (!Array.isArray(input) || (input.length && typeof input[0] !== 'string'))\n throw new Error('padding.encode input should be array of strings');\n for (let i of input)\n if (typeof i !== 'string')\n throw new Error(`padding.decode: non-string input=${i}`);\n let end = input.length;\n if ((end * bits) % 8)\n throw new Error('Invalid padding: string should have whole number of bytes');\n for (; end > 0 && input[end - 1] === chr; end--) {\n if (!(((end - 1) * bits) % 8))\n throw new Error('Invalid padding: string has too much padding');\n }\n return input.slice(0, end);\n },\n };\n}\nfunction normalize(fn) {\n if (typeof fn !== 'function')\n throw new Error('normalize fn should be function');\n return { encode: (from) => from, decode: (to) => fn(to) };\n}\nfunction convertRadix(data, from, to) {\n if (from < 2)\n throw new Error(`convertRadix: wrong from=${from}, base cannot be less than 2`);\n if (to < 2)\n throw new Error(`convertRadix: wrong to=${to}, base cannot be less than 2`);\n if (!Array.isArray(data))\n throw new Error('convertRadix: data should be array');\n if (!data.length)\n return [];\n let pos = 0;\n const res = [];\n const digits = Array.from(data);\n digits.forEach((d) => {\n assertNumber(d);\n if (d < 0 || d >= from)\n throw new Error(`Wrong integer: ${d}`);\n });\n while (true) {\n let carry = 0;\n let done = true;\n for (let i = pos; i < digits.length; i++) {\n const digit = digits[i];\n const digitBase = from * carry + digit;\n if (!Number.isSafeInteger(digitBase) ||\n (from * carry) / from !== carry ||\n digitBase - digit !== from * carry) {\n throw new Error('convertRadix: carry overflow');\n }\n carry = digitBase % to;\n digits[i] = Math.floor(digitBase / to);\n if (!Number.isSafeInteger(digits[i]) || digits[i] * to + carry !== digitBase)\n throw new Error('convertRadix: carry overflow');\n if (!done)\n continue;\n else if (!digits[i])\n pos = i;\n else\n done = false;\n }\n res.push(carry);\n if (done)\n break;\n }\n for (let i = 0; i < data.length - 1 && data[i] === 0; i++)\n res.push(0);\n return res.reverse();\n}\nconst gcd = (a, b) => (!b ? a : gcd(b, a % b));\nconst radix2carry = (from, to) => from + (to - gcd(from, to));\nfunction convertRadix2(data, from, to, padding) {\n if (!Array.isArray(data))\n throw new Error('convertRadix2: data should be array');\n if (from <= 0 || from > 32)\n throw new Error(`convertRadix2: wrong from=${from}`);\n if (to <= 0 || to > 32)\n throw new Error(`convertRadix2: wrong to=${to}`);\n if (radix2carry(from, to) > 32) {\n throw new Error(`convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`);\n }\n let carry = 0;\n let pos = 0;\n const mask = 2 ** to - 1;\n const res = [];\n for (const n of data) {\n assertNumber(n);\n if (n >= 2 ** from)\n throw new Error(`convertRadix2: invalid data word=${n} from=${from}`);\n carry = (carry << from) | n;\n if (pos + from > 32)\n throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`);\n pos += from;\n for (; pos >= to; pos -= to)\n res.push(((carry >> (pos - to)) & mask) >>> 0);\n carry &= 2 ** pos - 1;\n }\n carry = (carry << (to - pos)) & mask;\n if (!padding && pos >= from)\n throw new Error('Excess padding');\n if (!padding && carry)\n throw new Error(`Non-zero padding: ${carry}`);\n if (padding && pos > 0)\n res.push(carry >>> 0);\n return res;\n}\nfunction radix(num) {\n assertNumber(num);\n return {\n encode: (bytes) => {\n if (!(bytes instanceof Uint8Array))\n throw new Error('radix.encode input should be Uint8Array');\n return convertRadix(Array.from(bytes), 2 ** 8, num);\n },\n decode: (digits) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('radix.decode input should be array of strings');\n return Uint8Array.from(convertRadix(digits, num, 2 ** 8));\n },\n };\n}\nfunction radix2(bits, revPadding = false) {\n assertNumber(bits);\n if (bits <= 0 || bits > 32)\n throw new Error('radix2: bits should be in (0..32]');\n if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)\n throw new Error('radix2: carry overflow');\n return {\n encode: (bytes) => {\n if (!(bytes instanceof Uint8Array))\n throw new Error('radix2.encode input should be Uint8Array');\n return convertRadix2(Array.from(bytes), 8, bits, !revPadding);\n },\n decode: (digits) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('radix2.decode input should be array of strings');\n return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding));\n },\n };\n}\nfunction unsafeWrapper(fn) {\n if (typeof fn !== 'function')\n throw new Error('unsafeWrapper fn should be function');\n return function (...args) {\n try {\n return fn.apply(null, args);\n }\n catch (e) { }\n };\n}\nfunction checksum(len, fn) {\n assertNumber(len);\n if (typeof fn !== 'function')\n throw new Error('checksum fn should be function');\n return {\n encode(data) {\n if (!(data instanceof Uint8Array))\n throw new Error('checksum.encode: input should be Uint8Array');\n const checksum = fn(data).slice(0, len);\n const res = new Uint8Array(data.length + len);\n res.set(data);\n res.set(checksum, data.length);\n return res;\n },\n decode(data) {\n if (!(data instanceof Uint8Array))\n throw new Error('checksum.decode: input should be Uint8Array');\n const payload = data.slice(0, -len);\n const newChecksum = fn(payload).slice(0, len);\n const oldChecksum = data.slice(-len);\n for (let i = 0; i < len; i++)\n if (newChecksum[i] !== oldChecksum[i])\n throw new Error('Invalid checksum');\n return payload;\n },\n };\n}\nexports.utils = { alphabet, chain, checksum, radix, radix2, join, padding };\nexports.base16 = chain(radix2(4), alphabet('0123456789ABCDEF'), join(''));\nexports.base32 = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), padding(5), join(''));\nexports.base32hex = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), padding(5), join(''));\nexports.base32crockford = chain(radix2(5), alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'), join(''), normalize((s) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1')));\nexports.base64 = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), padding(6), join(''));\nexports.base64url = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), padding(6), join(''));\nconst genBase58 = (abc) => chain(radix(58), alphabet(abc), join(''));\nexports.base58 = genBase58('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz');\nexports.base58flickr = genBase58('123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ');\nexports.base58xrp = genBase58('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz');\nconst XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11];\nexports.base58xmr = {\n encode(data) {\n let res = '';\n for (let i = 0; i < data.length; i += 8) {\n const block = data.subarray(i, i + 8);\n res += exports.base58.encode(block).padStart(XMR_BLOCK_LEN[block.length], '1');\n }\n return res;\n },\n decode(str) {\n let res = [];\n for (let i = 0; i < str.length; i += 11) {\n const slice = str.slice(i, i + 11);\n const blockLen = XMR_BLOCK_LEN.indexOf(slice.length);\n const block = exports.base58.decode(slice);\n for (let j = 0; j < block.length - blockLen; j++) {\n if (block[j] !== 0)\n throw new Error('base58xmr: wrong padding');\n }\n res = res.concat(Array.from(block.slice(block.length - blockLen)));\n }\n return Uint8Array.from(res);\n },\n};\nconst base58check = (sha256) => chain(checksum(4, (data) => sha256(sha256(data))), exports.base58);\nexports.base58check = base58check;\nconst BECH_ALPHABET = chain(alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'), join(''));\nconst POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];\nfunction bech32Polymod(pre) {\n const b = pre >> 25;\n let chk = (pre & 0x1ffffff) << 5;\n for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {\n if (((b >> i) & 1) === 1)\n chk ^= POLYMOD_GENERATORS[i];\n }\n return chk;\n}\nfunction bechChecksum(prefix, words, encodingConst = 1) {\n const len = prefix.length;\n let chk = 1;\n for (let i = 0; i < len; i++) {\n const c = prefix.charCodeAt(i);\n if (c < 33 || c > 126)\n throw new Error(`Invalid prefix (${prefix})`);\n chk = bech32Polymod(chk) ^ (c >> 5);\n }\n chk = bech32Polymod(chk);\n for (let i = 0; i < len; i++)\n chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f);\n for (let v of words)\n chk = bech32Polymod(chk) ^ v;\n for (let i = 0; i < 6; i++)\n chk = bech32Polymod(chk);\n chk ^= encodingConst;\n return BECH_ALPHABET.encode(convertRadix2([chk % 2 ** 30], 30, 5, false));\n}\nfunction genBech32(encoding) {\n const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3;\n const _words = radix2(5);\n const fromWords = _words.decode;\n const toWords = _words.encode;\n const fromWordsUnsafe = unsafeWrapper(fromWords);\n function encode(prefix, words, limit = 90) {\n if (typeof prefix !== 'string')\n throw new Error(`bech32.encode prefix should be string, not ${typeof prefix}`);\n if (!Array.isArray(words) || (words.length && typeof words[0] !== 'number'))\n throw new Error(`bech32.encode words should be array of numbers, not ${typeof words}`);\n const actualLength = prefix.length + 7 + words.length;\n if (limit !== false && actualLength > limit)\n throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`);\n prefix = prefix.toLowerCase();\n return `${prefix}1${BECH_ALPHABET.encode(words)}${bechChecksum(prefix, words, ENCODING_CONST)}`;\n }\n function decode(str, limit = 90) {\n if (typeof str !== 'string')\n throw new Error(`bech32.decode input should be string, not ${typeof str}`);\n if (str.length < 8 || (limit !== false && str.length > limit))\n throw new TypeError(`Wrong string length: ${str.length} (${str}). Expected (8..${limit})`);\n const lowered = str.toLowerCase();\n if (str !== lowered && str !== str.toUpperCase())\n throw new Error(`String must be lowercase or uppercase`);\n str = lowered;\n const sepIndex = str.lastIndexOf('1');\n if (sepIndex === 0 || sepIndex === -1)\n throw new Error(`Letter \"1\" must be present between prefix and data only`);\n const prefix = str.slice(0, sepIndex);\n const _words = str.slice(sepIndex + 1);\n if (_words.length < 6)\n throw new Error('Data must be at least 6 characters long');\n const words = BECH_ALPHABET.decode(_words).slice(0, -6);\n const sum = bechChecksum(prefix, words, ENCODING_CONST);\n if (!_words.endsWith(sum))\n throw new Error(`Invalid checksum in ${str}: expected \"${sum}\"`);\n return { prefix, words };\n }\n const decodeUnsafe = unsafeWrapper(decode);\n function decodeToBytes(str) {\n const { prefix, words } = decode(str, false);\n return { prefix, words, bytes: fromWords(words) };\n }\n return { encode, decode, decodeToBytes, decodeUnsafe, fromWords, fromWordsUnsafe, toWords };\n}\nexports.bech32 = genBech32('bech32');\nexports.bech32m = genBech32('bech32m');\nexports.utf8 = {\n encode: (data) => new TextDecoder().decode(data),\n decode: (str) => new TextEncoder().encode(str),\n};\nexports.hex = chain(radix2(4), alphabet('0123456789abcdef'), join(''), normalize((s) => {\n if (typeof s !== 'string' || s.length % 2)\n throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`);\n return s.toLowerCase();\n}));\nconst CODERS = {\n utf8: exports.utf8, hex: exports.hex, base16: exports.base16, base32: exports.base32, base64: exports.base64, base64url: exports.base64url, base58: exports.base58, base58xmr: exports.base58xmr\n};\nconst coderTypeError = `Invalid encoding type. Available types: ${Object.keys(CODERS).join(', ')}`;\nconst bytesToString = (type, bytes) => {\n if (typeof type !== 'string' || !CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (!(bytes instanceof Uint8Array))\n throw new TypeError('bytesToString() expects Uint8Array');\n return CODERS[type].encode(bytes);\n};\nexports.bytesToString = bytesToString;\nexports.str = exports.bytesToString;\nconst stringToBytes = (type, str) => {\n if (!CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (typeof str !== 'string')\n throw new TypeError('stringToBytes() expects string');\n return CODERS[type].decode(str);\n};\nexports.stringToBytes = stringToBytes;\nexports.bytes = exports.stringToBytes;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mnemonicToSeedSync = exports.mnemonicToSeed = exports.validateMnemonic = exports.entropyToMnemonic = exports.mnemonicToEntropy = exports.generateMnemonic = void 0;\n/*! scure-bip39 - MIT License (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) */\nconst _assert_1 = require(\"@noble/hashes/_assert\");\nconst pbkdf2_1 = require(\"@noble/hashes/pbkdf2\");\nconst sha256_1 = require(\"@noble/hashes/sha256\");\nconst sha512_1 = require(\"@noble/hashes/sha512\");\nconst utils_1 = require(\"@noble/hashes/utils\");\nconst base_1 = require(\"@scure/base\");\n// Japanese wordlist\nconst isJapanese = (wordlist) => wordlist[0] === '\\u3042\\u3044\\u3053\\u304f\\u3057\\u3093';\n// Normalization replaces equivalent sequences of characters\n// so that any two texts that are equivalent will be reduced\n// to the same sequence of code points, called the normal form of the original text.\nfunction nfkd(str) {\n if (typeof str !== 'string')\n throw new TypeError(`Invalid mnemonic type: ${typeof str}`);\n return str.normalize('NFKD');\n}\nfunction normalize(str) {\n const norm = nfkd(str);\n const words = norm.split(' ');\n if (![12, 15, 18, 21, 24].includes(words.length))\n throw new Error('Invalid mnemonic');\n return { nfkd: norm, words };\n}\nfunction assertEntropy(entropy) {\n _assert_1.default.bytes(entropy, 16, 20, 24, 28, 32);\n}\n/**\n * Generate x random words. Uses Cryptographically-Secure Random Number Generator.\n * @param wordlist imported wordlist for specific language\n * @param strength mnemonic strength 128-256 bits\n * @example\n * generateMnemonic(wordlist, 128)\n * // 'legal winner thank year wave sausage worth useful legal winner thank yellow'\n */\nfunction generateMnemonic(wordlist, strength = 128) {\n _assert_1.default.number(strength);\n if (strength % 32 !== 0 || strength > 256)\n throw new TypeError('Invalid entropy');\n return entropyToMnemonic((0, utils_1.randomBytes)(strength / 8), wordlist);\n}\nexports.generateMnemonic = generateMnemonic;\nconst calcChecksum = (entropy) => {\n // Checksum is ent.length/4 bits long\n const bitsLeft = 8 - entropy.length / 4;\n // Zero rightmost \"bitsLeft\" bits in byte\n // For example: bitsLeft=4 val=10111101 -> 10110000\n return new Uint8Array([((0, sha256_1.sha256)(entropy)[0] >> bitsLeft) << bitsLeft]);\n};\nfunction getCoder(wordlist) {\n if (!Array.isArray(wordlist) || wordlist.length !== 2048 || typeof wordlist[0] !== 'string')\n throw new Error('Worlist: expected array of 2048 strings');\n wordlist.forEach((i) => {\n if (typeof i !== 'string')\n throw new Error(`Wordlist: non-string element: ${i}`);\n });\n return base_1.utils.chain(base_1.utils.checksum(1, calcChecksum), base_1.utils.radix2(11, true), base_1.utils.alphabet(wordlist));\n}\n/**\n * Reversible: Converts mnemonic string to raw entropy in form of byte array.\n * @param mnemonic 12-24 words\n * @param wordlist imported wordlist for specific language\n * @example\n * const mnem = 'legal winner thank year wave sausage worth useful legal winner thank yellow';\n * mnemonicToEntropy(mnem, wordlist)\n * // Produces\n * new Uint8Array([\n * 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n * 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f\n * ])\n */\nfunction mnemonicToEntropy(mnemonic, wordlist) {\n const { words } = normalize(mnemonic);\n const entropy = getCoder(wordlist).decode(words);\n assertEntropy(entropy);\n return entropy;\n}\nexports.mnemonicToEntropy = mnemonicToEntropy;\n/**\n * Reversible: Converts raw entropy in form of byte array to mnemonic string.\n * @param entropy byte array\n * @param wordlist imported wordlist for specific language\n * @returns 12-24 words\n * @example\n * const ent = new Uint8Array([\n * 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n * 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f\n * ]);\n * entropyToMnemonic(ent, wordlist);\n * // 'legal winner thank year wave sausage worth useful legal winner thank yellow'\n */\nfunction entropyToMnemonic(entropy, wordlist) {\n assertEntropy(entropy);\n const words = getCoder(wordlist).encode(entropy);\n return words.join(isJapanese(wordlist) ? '\\u3000' : ' ');\n}\nexports.entropyToMnemonic = entropyToMnemonic;\n/**\n * Validates mnemonic for being 12-24 words contained in `wordlist`.\n */\nfunction validateMnemonic(mnemonic, wordlist) {\n try {\n mnemonicToEntropy(mnemonic, wordlist);\n }\n catch (e) {\n return false;\n }\n return true;\n}\nexports.validateMnemonic = validateMnemonic;\nconst salt = (passphrase) => nfkd(`mnemonic${passphrase}`);\n/**\n * Irreversible: Uses KDF to derive 64 bytes of key data from mnemonic + optional password.\n * @param mnemonic 12-24 words\n * @param passphrase string that will additionally protect the key\n * @returns 64 bytes of key data\n * @example\n * const mnem = 'legal winner thank year wave sausage worth useful legal winner thank yellow';\n * await mnemonicToSeed(mnem, 'password');\n * // new Uint8Array([...64 bytes])\n */\nfunction mnemonicToSeed(mnemonic, passphrase = '') {\n return (0, pbkdf2_1.pbkdf2Async)(sha512_1.sha512, normalize(mnemonic).nfkd, salt(passphrase), { c: 2048, dkLen: 64 });\n}\nexports.mnemonicToSeed = mnemonicToSeed;\n/**\n * Irreversible: Uses KDF to derive 64 bytes of key data from mnemonic + optional password.\n * @param mnemonic 12-24 words\n * @param passphrase string that will additionally protect the key\n * @returns 64 bytes of key data\n * @example\n * const mnem = 'legal winner thank year wave sausage worth useful legal winner thank yellow';\n * mnemonicToSeedSync(mnem, 'password');\n * // new Uint8Array([...64 bytes])\n */\nfunction mnemonicToSeedSync(mnemonic, passphrase = '') {\n return (0, pbkdf2_1.pbkdf2)(sha512_1.sha512, normalize(mnemonic).nfkd, salt(passphrase), { c: 2048, dkLen: 64 });\n}\nexports.mnemonicToSeedSync = mnemonicToSeedSync;\n","import assert from './_assert.js';\nimport { Hash, toBytes } from './utils.js';\n// HMAC (RFC 2104)\nclass HMAC extends Hash {\n constructor(hash, _key) {\n super();\n this.finished = false;\n this.destroyed = false;\n assert.hash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create();\n if (typeof this.iHash.update !== 'function')\n throw new TypeError('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create();\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n pad.fill(0);\n }\n update(buf) {\n assert.exists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out) {\n assert.exists(this);\n assert.bytes(out, this.outputLen);\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to) {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to || (to = Object.create(Object.getPrototypeOf(this), {}));\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n */\nexport const hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nhmac.create = (hash, key) => new HMAC(hash, key);\n//# sourceMappingURL=hmac.js.map","import { SHA2 } from './_sha2.js';\nimport { wrapConstructor } from './utils.js';\n// https://homes.esat.kuleuven.be/~bosselae/ripemd160.html\n// https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf\nconst Rho = new Uint8Array([7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8]);\nconst Id = Uint8Array.from({ length: 16 }, (_, i) => i);\nconst Pi = Id.map((i) => (9 * i + 5) % 16);\nlet idxL = [Id];\nlet idxR = [Pi];\nfor (let i = 0; i < 4; i++)\n for (let j of [idxL, idxR])\n j.push(j[i].map((k) => Rho[k]));\nconst shifts = [\n [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8],\n [12, 13, 11, 15, 6, 9, 9, 7, 12, 15, 11, 13, 7, 8, 7, 7],\n [13, 15, 14, 11, 7, 7, 6, 8, 13, 14, 13, 12, 5, 5, 6, 9],\n [14, 11, 12, 14, 8, 6, 5, 5, 15, 12, 15, 14, 9, 9, 8, 6],\n [15, 12, 13, 13, 9, 5, 8, 6, 14, 11, 12, 11, 8, 6, 5, 5],\n].map((i) => new Uint8Array(i));\nconst shiftsL = idxL.map((idx, i) => idx.map((j) => shifts[i][j]));\nconst shiftsR = idxR.map((idx, i) => idx.map((j) => shifts[i][j]));\nconst Kl = new Uint32Array([0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]);\nconst Kr = new Uint32Array([0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]);\n// The rotate left (circular left shift) operation for uint32\nconst rotl = (word, shift) => (word << shift) | (word >>> (32 - shift));\n// It's called f() in spec.\nfunction f(group, x, y, z) {\n if (group === 0)\n return x ^ y ^ z;\n else if (group === 1)\n return (x & y) | (~x & z);\n else if (group === 2)\n return (x | ~y) ^ z;\n else if (group === 3)\n return (x & z) | (y & ~z);\n else\n return x ^ (y | ~z);\n}\n// Temporary buffer, not used to store anything between runs\nconst BUF = new Uint32Array(16);\nexport class RIPEMD160 extends SHA2 {\n constructor() {\n super(64, 20, 8, true);\n this.h0 = 0x67452301 | 0;\n this.h1 = 0xefcdab89 | 0;\n this.h2 = 0x98badcfe | 0;\n this.h3 = 0x10325476 | 0;\n this.h4 = 0xc3d2e1f0 | 0;\n }\n get() {\n const { h0, h1, h2, h3, h4 } = this;\n return [h0, h1, h2, h3, h4];\n }\n set(h0, h1, h2, h3, h4) {\n this.h0 = h0 | 0;\n this.h1 = h1 | 0;\n this.h2 = h2 | 0;\n this.h3 = h3 | 0;\n this.h4 = h4 | 0;\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n BUF[i] = view.getUint32(offset, true);\n // prettier-ignore\n let al = this.h0 | 0, ar = al, bl = this.h1 | 0, br = bl, cl = this.h2 | 0, cr = cl, dl = this.h3 | 0, dr = dl, el = this.h4 | 0, er = el;\n // Instead of iterating 0 to 80, we split it into 5 groups\n // And use the groups in constants, functions, etc. Much simpler\n for (let group = 0; group < 5; group++) {\n const rGroup = 4 - group;\n const hbl = Kl[group], hbr = Kr[group]; // prettier-ignore\n const rl = idxL[group], rr = idxR[group]; // prettier-ignore\n const sl = shiftsL[group], sr = shiftsR[group]; // prettier-ignore\n for (let i = 0; i < 16; i++) {\n const tl = (rotl(al + f(group, bl, cl, dl) + BUF[rl[i]] + hbl, sl[i]) + el) | 0;\n al = el, el = dl, dl = rotl(cl, 10) | 0, cl = bl, bl = tl; // prettier-ignore\n }\n // 2 loops are 10% faster\n for (let i = 0; i < 16; i++) {\n const tr = (rotl(ar + f(rGroup, br, cr, dr) + BUF[rr[i]] + hbr, sr[i]) + er) | 0;\n ar = er, er = dr, dr = rotl(cr, 10) | 0, cr = br, br = tr; // prettier-ignore\n }\n }\n // Add the compressed chunk to the current hash value\n this.set((this.h1 + cl + dr) | 0, (this.h2 + dl + er) | 0, (this.h3 + el + ar) | 0, (this.h4 + al + br) | 0, (this.h0 + bl + cr) | 0);\n }\n roundClean() {\n BUF.fill(0);\n }\n destroy() {\n this.destroyed = true;\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0);\n }\n}\n/**\n * RIPEMD-160 - a hash function from 1990s.\n * @param message - msg that would be hashed\n */\nexport const ripemd160 = wrapConstructor(() => new RIPEMD160());\n//# sourceMappingURL=ripemd160.js.map","const U32_MASK64 = BigInt(2 ** 32 - 1);\nconst _32n = BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nexport function fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nexport function split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nexport const toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (h, l) => l;\nconst rotr32L = (h, l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\n// Removing \"export\" has 5% perf penalty -_-\nexport function add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","import { SHA2 } from './_sha2.js';\nimport u64 from './_u64.js';\nimport { wrapConstructor } from './utils.js';\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n)));\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = new Uint32Array(80);\nconst SHA512_W_L = new Uint32Array(80);\nexport class SHA512 extends SHA2 {\n constructor() {\n super(128, 64, 16, false);\n // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n // Also looks cleaner and easier to verify with spec.\n // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x6a09e667 | 0;\n this.Al = 0xf3bcc908 | 0;\n this.Bh = 0xbb67ae85 | 0;\n this.Bl = 0x84caa73b | 0;\n this.Ch = 0x3c6ef372 | 0;\n this.Cl = 0xfe94f82b | 0;\n this.Dh = 0xa54ff53a | 0;\n this.Dl = 0x5f1d36f1 | 0;\n this.Eh = 0x510e527f | 0;\n this.El = 0xade682d1 | 0;\n this.Fh = 0x9b05688c | 0;\n this.Fl = 0x2b3e6c1f | 0;\n this.Gh = 0x1f83d9ab | 0;\n this.Gl = 0xfb41bd6b | 0;\n this.Hh = 0x5be0cd19 | 0;\n this.Hl = 0x137e2179 | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n SHA512_W_H.fill(0);\n SHA512_W_L.fill(0);\n }\n destroy() {\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nclass SHA512_224 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x8c3d37c8 | 0;\n this.Al = 0x19544da2 | 0;\n this.Bh = 0x73e19966 | 0;\n this.Bl = 0x89dcd4d6 | 0;\n this.Ch = 0x1dfab7ae | 0;\n this.Cl = 0x32ff9c82 | 0;\n this.Dh = 0x679dd514 | 0;\n this.Dl = 0x582f9fcf | 0;\n this.Eh = 0x0f6d2b69 | 0;\n this.El = 0x7bd44da8 | 0;\n this.Fh = 0x77e36f73 | 0;\n this.Fl = 0x04c48942 | 0;\n this.Gh = 0x3f9d85a8 | 0;\n this.Gl = 0x6a1d36c8 | 0;\n this.Hh = 0x1112e6ad | 0;\n this.Hl = 0x91d692a1 | 0;\n this.outputLen = 28;\n }\n}\nclass SHA512_256 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x22312194 | 0;\n this.Al = 0xfc2bf72c | 0;\n this.Bh = 0x9f555fa3 | 0;\n this.Bl = 0xc84c64c2 | 0;\n this.Ch = 0x2393b86b | 0;\n this.Cl = 0x6f53b151 | 0;\n this.Dh = 0x96387719 | 0;\n this.Dl = 0x5940eabd | 0;\n this.Eh = 0x96283ee2 | 0;\n this.El = 0xa88effe3 | 0;\n this.Fh = 0xbe5e1e25 | 0;\n this.Fl = 0x53863992 | 0;\n this.Gh = 0x2b0199fc | 0;\n this.Gl = 0x2c85b8aa | 0;\n this.Hh = 0x0eb72ddc | 0;\n this.Hl = 0x81c52ca2 | 0;\n this.outputLen = 32;\n }\n}\nclass SHA384 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0xcbbb9d5d | 0;\n this.Al = 0xc1059ed8 | 0;\n this.Bh = 0x629a292a | 0;\n this.Bl = 0x367cd507 | 0;\n this.Ch = 0x9159015a | 0;\n this.Cl = 0x3070dd17 | 0;\n this.Dh = 0x152fecd8 | 0;\n this.Dl = 0xf70e5939 | 0;\n this.Eh = 0x67332667 | 0;\n this.El = 0xffc00b31 | 0;\n this.Fh = 0x8eb44a87 | 0;\n this.Fl = 0x68581511 | 0;\n this.Gh = 0xdb0c2e0d | 0;\n this.Gl = 0x64f98fa7 | 0;\n this.Hh = 0x47b5481d | 0;\n this.Hl = 0xbefa4fa4 | 0;\n this.outputLen = 48;\n }\n}\nexport const sha512 = wrapConstructor(() => new SHA512());\nexport const sha512_224 = wrapConstructor(() => new SHA512_224());\nexport const sha512_256 = wrapConstructor(() => new SHA512_256());\nexport const sha384 = wrapConstructor(() => new SHA384());\n//# sourceMappingURL=sha512.js.map","import { hmac } from '@noble/hashes/hmac';\nimport { ripemd160 } from '@noble/hashes/ripemd160';\nimport { sha256 } from '@noble/hashes/sha256';\nimport { sha512 } from '@noble/hashes/sha512';\nimport { bytes as assertBytes } from '@noble/hashes/_assert';\nimport { bytesToHex, concatBytes, createView, hexToBytes, utf8ToBytes } from '@noble/hashes/utils';\nimport * as secp from '@noble/secp256k1';\nimport { base58check as base58checker } from '@scure/base';\nsecp.utils.hmacSha256Sync = (key, ...msgs) => hmac(sha256, key, secp.utils.concatBytes(...msgs));\nconst base58check = base58checker(sha256);\nfunction bytesToNumber(bytes) {\n return BigInt(`0x${bytesToHex(bytes)}`);\n}\nfunction numberToBytes(num) {\n return hexToBytes(num.toString(16).padStart(64, '0'));\n}\nconst MASTER_SECRET = utf8ToBytes('Bitcoin seed');\nconst BITCOIN_VERSIONS = { private: 0x0488ade4, public: 0x0488b21e };\nexport const HARDENED_OFFSET = 0x80000000;\nconst hash160 = (data) => ripemd160(sha256(data));\nconst fromU32 = (data) => createView(data).getUint32(0, false);\nconst toU32 = (n) => {\n if (!Number.isSafeInteger(n) || n < 0 || n > 2 ** 32 - 1) {\n throw new Error(`Invalid number=${n}. Should be from 0 to 2 ** 32 - 1`);\n }\n const buf = new Uint8Array(4);\n createView(buf).setUint32(0, n, false);\n return buf;\n};\nexport class HDKey {\n constructor(opt) {\n this.depth = 0;\n this.index = 0;\n this.chainCode = null;\n this.parentFingerprint = 0;\n if (!opt || typeof opt !== 'object') {\n throw new Error('HDKey.constructor must not be called directly');\n }\n this.versions = opt.versions || BITCOIN_VERSIONS;\n this.depth = opt.depth || 0;\n this.chainCode = opt.chainCode;\n this.index = opt.index || 0;\n this.parentFingerprint = opt.parentFingerprint || 0;\n if (!this.depth) {\n if (this.parentFingerprint || this.index) {\n throw new Error('HDKey: zero depth with non-zero index/parent fingerprint');\n }\n }\n if (opt.publicKey && opt.privateKey) {\n throw new Error('HDKey: publicKey and privateKey at same time.');\n }\n if (opt.privateKey) {\n if (!secp.utils.isValidPrivateKey(opt.privateKey)) {\n throw new Error('Invalid private key');\n }\n this.privKey =\n typeof opt.privateKey === 'bigint' ? opt.privateKey : bytesToNumber(opt.privateKey);\n this.privKeyBytes = numberToBytes(this.privKey);\n this.pubKey = secp.getPublicKey(opt.privateKey, true);\n }\n else if (opt.publicKey) {\n this.pubKey = secp.Point.fromHex(opt.publicKey).toRawBytes(true);\n }\n else {\n throw new Error('HDKey: no public or private key provided');\n }\n this.pubHash = hash160(this.pubKey);\n }\n get fingerprint() {\n if (!this.pubHash) {\n throw new Error('No publicKey set!');\n }\n return fromU32(this.pubHash);\n }\n get identifier() {\n return this.pubHash;\n }\n get pubKeyHash() {\n return this.pubHash;\n }\n get privateKey() {\n return this.privKeyBytes || null;\n }\n get publicKey() {\n return this.pubKey || null;\n }\n get privateExtendedKey() {\n const priv = this.privateKey;\n if (!priv) {\n throw new Error('No private key');\n }\n return base58check.encode(this.serialize(this.versions.private, concatBytes(new Uint8Array([0]), priv)));\n }\n get publicExtendedKey() {\n if (!this.pubKey) {\n throw new Error('No public key');\n }\n return base58check.encode(this.serialize(this.versions.public, this.pubKey));\n }\n static fromMasterSeed(seed, versions = BITCOIN_VERSIONS) {\n assertBytes(seed);\n if (8 * seed.length < 128 || 8 * seed.length > 512) {\n throw new Error(`HDKey: wrong seed length=${seed.length}. Should be between 128 and 512 bits; 256 bits is advised)`);\n }\n const I = hmac(sha512, MASTER_SECRET, seed);\n return new HDKey({\n versions,\n chainCode: I.slice(32),\n privateKey: I.slice(0, 32),\n });\n }\n static fromExtendedKey(base58key, versions = BITCOIN_VERSIONS) {\n const keyBuffer = base58check.decode(base58key);\n const keyView = createView(keyBuffer);\n const version = keyView.getUint32(0, false);\n const opt = {\n versions,\n depth: keyBuffer[4],\n parentFingerprint: keyView.getUint32(5, false),\n index: keyView.getUint32(9, false),\n chainCode: keyBuffer.slice(13, 45),\n };\n const key = keyBuffer.slice(45);\n const isPriv = key[0] === 0;\n if (version !== versions[isPriv ? 'private' : 'public']) {\n throw new Error('Version mismatch');\n }\n if (isPriv) {\n return new HDKey({ ...opt, privateKey: key.slice(1) });\n }\n else {\n return new HDKey({ ...opt, publicKey: key });\n }\n }\n static fromJSON(json) {\n return HDKey.fromExtendedKey(json.xpriv);\n }\n derive(path) {\n if (!/^[mM]'?/.test(path)) {\n throw new Error('Path must start with \"m\" or \"M\"');\n }\n if (/^[mM]'?$/.test(path)) {\n return this;\n }\n const parts = path.replace(/^[mM]'?\\//, '').split('/');\n let child = this;\n for (const c of parts) {\n const m = /^(\\d+)('?)$/.exec(c);\n if (!m || m.length !== 3) {\n throw new Error(`Invalid child index: ${c}`);\n }\n let idx = +m[1];\n if (!Number.isSafeInteger(idx) || idx >= HARDENED_OFFSET) {\n throw new Error('Invalid index');\n }\n if (m[2] === \"'\") {\n idx += HARDENED_OFFSET;\n }\n child = child.deriveChild(idx);\n }\n return child;\n }\n deriveChild(index) {\n if (!this.pubKey || !this.chainCode) {\n throw new Error('No publicKey or chainCode set');\n }\n let data = toU32(index);\n if (index >= HARDENED_OFFSET) {\n const priv = this.privateKey;\n if (!priv) {\n throw new Error('Could not derive hardened child key');\n }\n data = concatBytes(new Uint8Array([0]), priv, data);\n }\n else {\n data = concatBytes(this.pubKey, data);\n }\n const I = hmac(sha512, this.chainCode, data);\n const childTweak = bytesToNumber(I.slice(0, 32));\n const chainCode = I.slice(32);\n if (!secp.utils.isValidPrivateKey(childTweak)) {\n throw new Error('Tweak bigger than curve order');\n }\n const opt = {\n versions: this.versions,\n chainCode,\n depth: this.depth + 1,\n parentFingerprint: this.fingerprint,\n index,\n };\n try {\n if (this.privateKey) {\n const added = secp.utils.mod(this.privKey + childTweak, secp.CURVE.n);\n if (!secp.utils.isValidPrivateKey(added)) {\n throw new Error('The tweak was out of range or the resulted private key is invalid');\n }\n opt.privateKey = added;\n }\n else {\n const added = secp.Point.fromHex(this.pubKey).add(secp.Point.fromPrivateKey(childTweak));\n if (added.equals(secp.Point.ZERO)) {\n throw new Error('The tweak was equal to negative P, which made the result key invalid');\n }\n opt.publicKey = added.toRawBytes(true);\n }\n return new HDKey(opt);\n }\n catch (err) {\n return this.deriveChild(index + 1);\n }\n }\n sign(hash) {\n if (!this.privateKey) {\n throw new Error('No privateKey set!');\n }\n assertBytes(hash, 32);\n return secp.signSync(hash, this.privKey, {\n canonical: true,\n der: false,\n });\n }\n verify(hash, signature) {\n assertBytes(hash, 32);\n assertBytes(signature, 64);\n if (!this.publicKey) {\n throw new Error('No publicKey set!');\n }\n let sig;\n try {\n sig = secp.Signature.fromCompact(signature);\n }\n catch (error) {\n return false;\n }\n return secp.verify(sig, hash, this.publicKey);\n }\n wipePrivateData() {\n this.privKey = undefined;\n if (this.privKeyBytes) {\n this.privKeyBytes.fill(0);\n this.privKeyBytes = undefined;\n }\n return this;\n }\n toJSON() {\n return {\n xpriv: this.privateExtendedKey,\n xpub: this.publicExtendedKey,\n };\n }\n serialize(version, key) {\n if (!this.chainCode) {\n throw new Error('No chainCode set');\n }\n assertBytes(key, 33);\n return concatBytes(toU32(version), new Uint8Array([this.depth]), toU32(this.parentFingerprint), toU32(this.index), this.chainCode, key);\n }\n}\n","var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// keys.ts\nimport * as secp256k1 from \"@noble/secp256k1\";\nfunction generatePrivateKey() {\n return secp256k1.utils.bytesToHex(secp256k1.utils.randomPrivateKey());\n}\nfunction getPublicKey(privateKey) {\n return secp256k1.utils.bytesToHex(secp256k1.schnorr.getPublicKey(privateKey));\n}\n\n// event.ts\nimport * as secp256k12 from \"@noble/secp256k1\";\nimport { sha256 } from \"@noble/hashes/sha256\";\n\n// utils.ts\nvar utils_exports = {};\n__export(utils_exports, {\n insertEventIntoAscendingList: () => insertEventIntoAscendingList,\n insertEventIntoDescendingList: () => insertEventIntoDescendingList,\n normalizeURL: () => normalizeURL,\n utf8Decoder: () => utf8Decoder,\n utf8Encoder: () => utf8Encoder\n});\nvar utf8Decoder = new TextDecoder(\"utf-8\");\nvar utf8Encoder = new TextEncoder();\nfunction normalizeURL(url) {\n let p = new URL(url);\n p.pathname = p.pathname.replace(/\\/+/g, \"/\");\n if (p.pathname.endsWith(\"/\"))\n p.pathname = p.pathname.slice(0, -1);\n if (p.port === \"80\" && p.protocol === \"ws:\" || p.port === \"443\" && p.protocol === \"wss:\")\n p.port = \"\";\n p.searchParams.sort();\n p.hash = \"\";\n return p.toString();\n}\nfunction insertEventIntoDescendingList(sortedArray, event) {\n let start = 0;\n let end = sortedArray.length - 1;\n let midPoint;\n let position = start;\n if (end < 0) {\n position = 0;\n } else if (event.created_at < sortedArray[end].created_at) {\n position = end + 1;\n } else if (event.created_at >= sortedArray[start].created_at) {\n position = start;\n } else\n while (true) {\n if (end <= start + 1) {\n position = end;\n break;\n }\n midPoint = Math.floor(start + (end - start) / 2);\n if (sortedArray[midPoint].created_at > event.created_at) {\n start = midPoint;\n } else if (sortedArray[midPoint].created_at < event.created_at) {\n end = midPoint;\n } else {\n position = midPoint;\n break;\n }\n }\n if (sortedArray[position]?.id !== event.id) {\n return [\n ...sortedArray.slice(0, position),\n event,\n ...sortedArray.slice(position)\n ];\n }\n return sortedArray;\n}\nfunction insertEventIntoAscendingList(sortedArray, event) {\n let start = 0;\n let end = sortedArray.length - 1;\n let midPoint;\n let position = start;\n if (end < 0) {\n position = 0;\n } else if (event.created_at > sortedArray[end].created_at) {\n position = end + 1;\n } else if (event.created_at <= sortedArray[start].created_at) {\n position = start;\n } else\n while (true) {\n if (end <= start + 1) {\n position = end;\n break;\n }\n midPoint = Math.floor(start + (end - start) / 2);\n if (sortedArray[midPoint].created_at < event.created_at) {\n start = midPoint;\n } else if (sortedArray[midPoint].created_at > event.created_at) {\n end = midPoint;\n } else {\n position = midPoint;\n break;\n }\n }\n if (sortedArray[position]?.id !== event.id) {\n return [\n ...sortedArray.slice(0, position),\n event,\n ...sortedArray.slice(position)\n ];\n }\n return sortedArray;\n}\n\n// event.ts\nvar Kind = /* @__PURE__ */ ((Kind2) => {\n Kind2[Kind2[\"Metadata\"] = 0] = \"Metadata\";\n Kind2[Kind2[\"Text\"] = 1] = \"Text\";\n Kind2[Kind2[\"RecommendRelay\"] = 2] = \"RecommendRelay\";\n Kind2[Kind2[\"Contacts\"] = 3] = \"Contacts\";\n Kind2[Kind2[\"EncryptedDirectMessage\"] = 4] = \"EncryptedDirectMessage\";\n Kind2[Kind2[\"EventDeletion\"] = 5] = \"EventDeletion\";\n Kind2[Kind2[\"Reaction\"] = 7] = \"Reaction\";\n Kind2[Kind2[\"ChannelCreation\"] = 40] = \"ChannelCreation\";\n Kind2[Kind2[\"ChannelMetadata\"] = 41] = \"ChannelMetadata\";\n Kind2[Kind2[\"ChannelMessage\"] = 42] = \"ChannelMessage\";\n Kind2[Kind2[\"ChannelHideMessage\"] = 43] = \"ChannelHideMessage\";\n Kind2[Kind2[\"ChannelMuteUser\"] = 44] = \"ChannelMuteUser\";\n Kind2[Kind2[\"Report\"] = 1984] = \"Report\";\n Kind2[Kind2[\"ZapRequest\"] = 9734] = \"ZapRequest\";\n Kind2[Kind2[\"Zap\"] = 9735] = \"Zap\";\n Kind2[Kind2[\"RelayList\"] = 10002] = \"RelayList\";\n Kind2[Kind2[\"ClientAuth\"] = 22242] = \"ClientAuth\";\n Kind2[Kind2[\"Article\"] = 30023] = \"Article\";\n return Kind2;\n})(Kind || {});\nfunction getBlankEvent() {\n return {\n kind: 255,\n content: \"\",\n tags: [],\n created_at: 0\n };\n}\nfunction finishEvent(t, privateKey) {\n let event = t;\n event.pubkey = getPublicKey(privateKey);\n event.id = getEventHash(event);\n event.sig = signEvent(event, privateKey);\n return event;\n}\nfunction serializeEvent(evt) {\n if (!validateEvent(evt))\n throw new Error(\"can't serialize event with wrong or missing properties\");\n return JSON.stringify([\n 0,\n evt.pubkey,\n evt.created_at,\n evt.kind,\n evt.tags,\n evt.content\n ]);\n}\nfunction getEventHash(event) {\n let eventHash = sha256(utf8Encoder.encode(serializeEvent(event)));\n return secp256k12.utils.bytesToHex(eventHash);\n}\nfunction validateEvent(event) {\n if (typeof event !== \"object\")\n return false;\n if (typeof event.kind !== \"number\")\n return false;\n if (typeof event.content !== \"string\")\n return false;\n if (typeof event.created_at !== \"number\")\n return false;\n if (typeof event.pubkey !== \"string\")\n return false;\n if (!event.pubkey.match(/^[a-f0-9]{64}$/))\n return false;\n if (!Array.isArray(event.tags))\n return false;\n for (let i = 0; i < event.tags.length; i++) {\n let tag = event.tags[i];\n if (!Array.isArray(tag))\n return false;\n for (let j = 0; j < tag.length; j++) {\n if (typeof tag[j] === \"object\")\n return false;\n }\n }\n return true;\n}\nfunction verifySignature(event) {\n return secp256k12.schnorr.verifySync(\n event.sig,\n getEventHash(event),\n event.pubkey\n );\n}\nfunction signEvent(event, key) {\n return secp256k12.utils.bytesToHex(\n secp256k12.schnorr.signSync(getEventHash(event), key)\n );\n}\n\n// filter.ts\nfunction matchFilter(filter, event) {\n if (filter.ids && filter.ids.indexOf(event.id) === -1) {\n if (!filter.ids.some((prefix) => event.id.startsWith(prefix))) {\n return false;\n }\n }\n if (filter.kinds && filter.kinds.indexOf(event.kind) === -1)\n return false;\n if (filter.authors && filter.authors.indexOf(event.pubkey) === -1) {\n if (!filter.authors.some((prefix) => event.pubkey.startsWith(prefix))) {\n return false;\n }\n }\n for (let f in filter) {\n if (f[0] === \"#\") {\n let tagName = f.slice(1);\n let values = filter[`#${tagName}`];\n if (values && !event.tags.find(\n ([t, v]) => t === f.slice(1) && values.indexOf(v) !== -1\n ))\n return false;\n }\n }\n if (filter.since && event.created_at < filter.since)\n return false;\n if (filter.until && event.created_at >= filter.until)\n return false;\n return true;\n}\nfunction matchFilters(filters, event) {\n for (let i = 0; i < filters.length; i++) {\n if (matchFilter(filters[i], event))\n return true;\n }\n return false;\n}\n\n// fakejson.ts\nvar fakejson_exports = {};\n__export(fakejson_exports, {\n getHex64: () => getHex64,\n getInt: () => getInt,\n getSubscriptionId: () => getSubscriptionId,\n matchEventId: () => matchEventId,\n matchEventKind: () => matchEventKind,\n matchEventPubkey: () => matchEventPubkey\n});\nfunction getHex64(json, field) {\n let len = field.length + 3;\n let idx = json.indexOf(`\"${field}\":`) + len;\n let s = json.slice(idx).indexOf(`\"`) + idx + 1;\n return json.slice(s, s + 64);\n}\nfunction getInt(json, field) {\n let len = field.length;\n let idx = json.indexOf(`\"${field}\":`) + len + 3;\n let sliced = json.slice(idx);\n let end = Math.min(sliced.indexOf(\",\"), sliced.indexOf(\"}\"));\n return parseInt(sliced.slice(0, end), 10);\n}\nfunction getSubscriptionId(json) {\n let idx = json.slice(0, 22).indexOf(`\"EVENT\"`);\n if (idx === -1)\n return null;\n let pstart = json.slice(idx + 7 + 1).indexOf(`\"`);\n if (pstart === -1)\n return null;\n let start = idx + 7 + 1 + pstart;\n let pend = json.slice(start + 1, 80).indexOf(`\"`);\n if (pend === -1)\n return null;\n let end = start + 1 + pend;\n return json.slice(start + 1, end);\n}\nfunction matchEventId(json, id) {\n return id === getHex64(json, \"id\");\n}\nfunction matchEventPubkey(json, pubkey) {\n return pubkey === getHex64(json, \"pubkey\");\n}\nfunction matchEventKind(json, kind) {\n return kind === getInt(json, \"kind\");\n}\n\n// relay.ts\nfunction relayInit(url, options = {}) {\n let { listTimeout = 3e3, getTimeout = 3e3 } = options;\n var ws;\n var openSubs = {};\n var listeners = {\n connect: [],\n disconnect: [],\n error: [],\n notice: []\n };\n var subListeners = {};\n var pubListeners = {};\n var connectionPromise;\n async function connectRelay() {\n if (connectionPromise)\n return connectionPromise;\n connectionPromise = new Promise((resolve, reject) => {\n try {\n ws = new WebSocket(url);\n } catch (err) {\n reject(err);\n }\n ws.onopen = () => {\n listeners.connect.forEach((cb) => cb());\n resolve();\n };\n ws.onerror = () => {\n connectionPromise = void 0;\n listeners.error.forEach((cb) => cb());\n reject();\n };\n ws.onclose = async () => {\n connectionPromise = void 0;\n listeners.disconnect.forEach((cb) => cb());\n };\n let incomingMessageQueue = [];\n let handleNextInterval;\n ws.onmessage = (e) => {\n incomingMessageQueue.push(e.data);\n if (!handleNextInterval) {\n handleNextInterval = setInterval(handleNext, 0);\n }\n };\n function handleNext() {\n if (incomingMessageQueue.length === 0) {\n clearInterval(handleNextInterval);\n handleNextInterval = null;\n return;\n }\n var json = incomingMessageQueue.shift();\n if (!json)\n return;\n let subid = getSubscriptionId(json);\n if (subid) {\n let so = openSubs[subid];\n if (so && so.alreadyHaveEvent && so.alreadyHaveEvent(getHex64(json, \"id\"), url)) {\n return;\n }\n }\n try {\n let data = JSON.parse(json);\n switch (data[0]) {\n case \"EVENT\":\n let id = data[1];\n let event = data[2];\n if (validateEvent(event) && openSubs[id] && (openSubs[id].skipVerification || verifySignature(event)) && matchFilters(openSubs[id].filters, event)) {\n openSubs[id];\n (subListeners[id]?.event || []).forEach((cb) => cb(event));\n }\n return;\n case \"EOSE\": {\n let id2 = data[1];\n if (id2 in subListeners) {\n subListeners[id2].eose.forEach((cb) => cb());\n subListeners[id2].eose = [];\n }\n return;\n }\n case \"OK\": {\n let id2 = data[1];\n let ok = data[2];\n let reason = data[3] || \"\";\n if (id2 in pubListeners) {\n if (ok)\n pubListeners[id2].ok.forEach((cb) => cb());\n else\n pubListeners[id2].failed.forEach((cb) => cb(reason));\n pubListeners[id2].ok = [];\n pubListeners[id2].failed = [];\n }\n return;\n }\n case \"NOTICE\":\n let notice = data[1];\n listeners.notice.forEach((cb) => cb(notice));\n return;\n }\n } catch (err) {\n return;\n }\n }\n });\n return connectionPromise;\n }\n function connected() {\n return ws?.readyState === 1;\n }\n async function connect() {\n if (connected())\n return;\n await connectRelay();\n }\n async function trySend(params) {\n let msg = JSON.stringify(params);\n if (!connected()) {\n await new Promise((resolve) => setTimeout(resolve, 1e3));\n if (!connected()) {\n return;\n }\n }\n try {\n ws.send(msg);\n } catch (err) {\n console.log(err);\n }\n }\n const sub = (filters, {\n skipVerification = false,\n alreadyHaveEvent = null,\n id = Math.random().toString().slice(2)\n } = {}) => {\n let subid = id;\n openSubs[subid] = {\n id: subid,\n filters,\n skipVerification,\n alreadyHaveEvent\n };\n trySend([\"REQ\", subid, ...filters]);\n return {\n sub: (newFilters, newOpts = {}) => sub(newFilters || filters, {\n skipVerification: newOpts.skipVerification || skipVerification,\n alreadyHaveEvent: newOpts.alreadyHaveEvent || alreadyHaveEvent,\n id: subid\n }),\n unsub: () => {\n delete openSubs[subid];\n delete subListeners[subid];\n trySend([\"CLOSE\", subid]);\n },\n on: (type, cb) => {\n subListeners[subid] = subListeners[subid] || {\n event: [],\n eose: []\n };\n subListeners[subid][type].push(cb);\n },\n off: (type, cb) => {\n let listeners2 = subListeners[subid];\n let idx = listeners2[type].indexOf(cb);\n if (idx >= 0)\n listeners2[type].splice(idx, 1);\n }\n };\n };\n return {\n url,\n sub,\n on: (type, cb) => {\n listeners[type].push(cb);\n if (type === \"connect\" && ws?.readyState === 1) {\n ;\n cb();\n }\n },\n off: (type, cb) => {\n let index = listeners[type].indexOf(cb);\n if (index !== -1)\n listeners[type].splice(index, 1);\n },\n list: (filters, opts) => new Promise((resolve) => {\n let s = sub(filters, opts);\n let events = [];\n let timeout = setTimeout(() => {\n s.unsub();\n resolve(events);\n }, listTimeout);\n s.on(\"eose\", () => {\n s.unsub();\n clearTimeout(timeout);\n resolve(events);\n });\n s.on(\"event\", (event) => {\n events.push(event);\n });\n }),\n get: (filter, opts) => new Promise((resolve) => {\n let s = sub([filter], opts);\n let timeout = setTimeout(() => {\n s.unsub();\n resolve(null);\n }, getTimeout);\n s.on(\"event\", (event) => {\n s.unsub();\n clearTimeout(timeout);\n resolve(event);\n });\n }),\n publish(event) {\n if (!event.id)\n throw new Error(`event ${event} has no id`);\n let id = event.id;\n trySend([\"EVENT\", event]);\n return {\n on: (type, cb) => {\n pubListeners[id] = pubListeners[id] || {\n ok: [],\n failed: []\n };\n pubListeners[id][type].push(cb);\n },\n off: (type, cb) => {\n let listeners2 = pubListeners[id];\n if (!listeners2)\n return;\n let idx = listeners2[type].indexOf(cb);\n if (idx >= 0)\n listeners2[type].splice(idx, 1);\n }\n };\n },\n connect,\n close() {\n listeners = { connect: [], disconnect: [], error: [], notice: [] };\n subListeners = {};\n pubListeners = {};\n if (ws.readyState === WebSocket.OPEN) {\n ws?.close();\n }\n },\n get status() {\n return ws?.readyState ?? 3;\n }\n };\n}\n\n// pool.ts\nvar SimplePool = class {\n _conn;\n _seenOn = {};\n eoseSubTimeout;\n getTimeout;\n constructor(options = {}) {\n this._conn = {};\n this.eoseSubTimeout = options.eoseSubTimeout || 3400;\n this.getTimeout = options.getTimeout || 3400;\n }\n close(relays) {\n relays.forEach((url) => {\n let relay = this._conn[normalizeURL(url)];\n if (relay)\n relay.close();\n });\n }\n async ensureRelay(url) {\n const nm = normalizeURL(url);\n if (!this._conn[nm]) {\n this._conn[nm] = relayInit(nm, {\n getTimeout: this.getTimeout * 0.9,\n listTimeout: this.getTimeout * 0.9\n });\n }\n const relay = this._conn[nm];\n await relay.connect();\n return relay;\n }\n sub(relays, filters, opts) {\n let _knownIds = /* @__PURE__ */ new Set();\n let modifiedOpts = { ...opts || {} };\n modifiedOpts.alreadyHaveEvent = (id, url) => {\n if (opts?.alreadyHaveEvent?.(id, url)) {\n return true;\n }\n let set = this._seenOn[id] || /* @__PURE__ */ new Set();\n set.add(url);\n this._seenOn[id] = set;\n return _knownIds.has(id);\n };\n let subs = [];\n let eventListeners = /* @__PURE__ */ new Set();\n let eoseListeners = /* @__PURE__ */ new Set();\n let eosesMissing = relays.length;\n let eoseSent = false;\n let eoseTimeout = setTimeout(() => {\n eoseSent = true;\n for (let cb of eoseListeners.values())\n cb();\n }, this.eoseSubTimeout);\n relays.forEach(async (relay) => {\n let r;\n try {\n r = await this.ensureRelay(relay);\n } catch (err) {\n handleEose();\n return;\n }\n if (!r)\n return;\n let s = r.sub(filters, modifiedOpts);\n s.on(\"event\", (event) => {\n _knownIds.add(event.id);\n for (let cb of eventListeners.values())\n cb(event);\n });\n s.on(\"eose\", () => {\n if (eoseSent)\n return;\n handleEose();\n });\n subs.push(s);\n function handleEose() {\n eosesMissing--;\n if (eosesMissing === 0) {\n clearTimeout(eoseTimeout);\n for (let cb of eoseListeners.values())\n cb();\n }\n }\n });\n let greaterSub = {\n sub(filters2, opts2) {\n subs.forEach((sub) => sub.sub(filters2, opts2));\n return greaterSub;\n },\n unsub() {\n subs.forEach((sub) => sub.unsub());\n },\n on(type, cb) {\n if (type === \"event\") {\n eventListeners.add(cb);\n } else if (type === \"eose\") {\n eoseListeners.add(cb);\n }\n },\n off(type, cb) {\n if (type === \"event\") {\n eventListeners.delete(cb);\n } else if (type === \"eose\")\n eoseListeners.delete(cb);\n }\n };\n return greaterSub;\n }\n get(relays, filter, opts) {\n return new Promise((resolve) => {\n let sub = this.sub(relays, [filter], opts);\n let timeout = setTimeout(() => {\n sub.unsub();\n resolve(null);\n }, this.getTimeout);\n sub.on(\"event\", (event) => {\n resolve(event);\n clearTimeout(timeout);\n sub.unsub();\n });\n });\n }\n list(relays, filters, opts) {\n return new Promise((resolve) => {\n let events = [];\n let sub = this.sub(relays, filters, opts);\n sub.on(\"event\", (event) => {\n events.push(event);\n });\n sub.on(\"eose\", () => {\n sub.unsub();\n resolve(events);\n });\n });\n }\n publish(relays, event) {\n const pubPromises = relays.map(async (relay) => {\n let r;\n try {\n r = await this.ensureRelay(relay);\n return r.publish(event);\n } catch (_) {\n return { on() {\n }, off() {\n } };\n }\n });\n const callbackMap = /* @__PURE__ */ new Map();\n return {\n on(type, cb) {\n relays.forEach(async (relay, i) => {\n let pub = await pubPromises[i];\n let callback = () => cb(relay);\n callbackMap.set(cb, callback);\n pub.on(type, callback);\n });\n },\n off(type, cb) {\n relays.forEach(async (_, i) => {\n let callback = callbackMap.get(cb);\n if (callback) {\n let pub = await pubPromises[i];\n pub.off(type, callback);\n }\n });\n }\n };\n }\n seenOn(id) {\n return Array.from(this._seenOn[id]?.values?.() || []);\n }\n};\n\n// nip19.ts\nvar nip19_exports = {};\n__export(nip19_exports, {\n decode: () => decode,\n naddrEncode: () => naddrEncode,\n neventEncode: () => neventEncode,\n noteEncode: () => noteEncode,\n nprofileEncode: () => nprofileEncode,\n npubEncode: () => npubEncode,\n nsecEncode: () => nsecEncode\n});\nimport * as secp256k13 from \"@noble/secp256k1\";\nimport { bech32 } from \"@scure/base\";\nvar Bech32MaxSize = 5e3;\nfunction decode(nip19) {\n let { prefix, words } = bech32.decode(nip19, Bech32MaxSize);\n let data = new Uint8Array(bech32.fromWords(words));\n switch (prefix) {\n case \"nprofile\": {\n let tlv = parseTLV(data);\n if (!tlv[0]?.[0])\n throw new Error(\"missing TLV 0 for nprofile\");\n if (tlv[0][0].length !== 32)\n throw new Error(\"TLV 0 should be 32 bytes\");\n return {\n type: \"nprofile\",\n data: {\n pubkey: secp256k13.utils.bytesToHex(tlv[0][0]),\n relays: tlv[1] ? tlv[1].map((d) => utf8Decoder.decode(d)) : []\n }\n };\n }\n case \"nevent\": {\n let tlv = parseTLV(data);\n if (!tlv[0]?.[0])\n throw new Error(\"missing TLV 0 for nevent\");\n if (tlv[0][0].length !== 32)\n throw new Error(\"TLV 0 should be 32 bytes\");\n if (tlv[2] && tlv[2][0].length !== 32)\n throw new Error(\"TLV 2 should be 32 bytes\");\n return {\n type: \"nevent\",\n data: {\n id: secp256k13.utils.bytesToHex(tlv[0][0]),\n relays: tlv[1] ? tlv[1].map((d) => utf8Decoder.decode(d)) : [],\n author: tlv[2]?.[0] ? secp256k13.utils.bytesToHex(tlv[2][0]) : void 0\n }\n };\n }\n case \"naddr\": {\n let tlv = parseTLV(data);\n if (!tlv[0]?.[0])\n throw new Error(\"missing TLV 0 for naddr\");\n if (!tlv[2]?.[0])\n throw new Error(\"missing TLV 2 for naddr\");\n if (tlv[2][0].length !== 32)\n throw new Error(\"TLV 2 should be 32 bytes\");\n if (!tlv[3]?.[0])\n throw new Error(\"missing TLV 3 for naddr\");\n if (tlv[3][0].length !== 4)\n throw new Error(\"TLV 3 should be 4 bytes\");\n return {\n type: \"naddr\",\n data: {\n identifier: utf8Decoder.decode(tlv[0][0]),\n pubkey: secp256k13.utils.bytesToHex(tlv[2][0]),\n kind: parseInt(secp256k13.utils.bytesToHex(tlv[3][0]), 16),\n relays: tlv[1] ? tlv[1].map((d) => utf8Decoder.decode(d)) : []\n }\n };\n }\n case \"nsec\":\n case \"npub\":\n case \"note\":\n return { type: prefix, data: secp256k13.utils.bytesToHex(data) };\n default:\n throw new Error(`unknown prefix ${prefix}`);\n }\n}\nfunction parseTLV(data) {\n let result = {};\n let rest = data;\n while (rest.length > 0) {\n let t = rest[0];\n let l = rest[1];\n let v = rest.slice(2, 2 + l);\n rest = rest.slice(2 + l);\n if (v.length < l)\n continue;\n result[t] = result[t] || [];\n result[t].push(v);\n }\n return result;\n}\nfunction nsecEncode(hex) {\n return encodeBytes(\"nsec\", hex);\n}\nfunction npubEncode(hex) {\n return encodeBytes(\"npub\", hex);\n}\nfunction noteEncode(hex) {\n return encodeBytes(\"note\", hex);\n}\nfunction encodeBytes(prefix, hex) {\n let data = secp256k13.utils.hexToBytes(hex);\n let words = bech32.toWords(data);\n return bech32.encode(prefix, words, Bech32MaxSize);\n}\nfunction nprofileEncode(profile) {\n let data = encodeTLV({\n 0: [secp256k13.utils.hexToBytes(profile.pubkey)],\n 1: (profile.relays || []).map((url) => utf8Encoder.encode(url))\n });\n let words = bech32.toWords(data);\n return bech32.encode(\"nprofile\", words, Bech32MaxSize);\n}\nfunction neventEncode(event) {\n let data = encodeTLV({\n 0: [secp256k13.utils.hexToBytes(event.id)],\n 1: (event.relays || []).map((url) => utf8Encoder.encode(url)),\n 2: event.author ? [secp256k13.utils.hexToBytes(event.author)] : []\n });\n let words = bech32.toWords(data);\n return bech32.encode(\"nevent\", words, Bech32MaxSize);\n}\nfunction naddrEncode(addr) {\n let kind = new ArrayBuffer(4);\n new DataView(kind).setUint32(0, addr.kind, false);\n let data = encodeTLV({\n 0: [utf8Encoder.encode(addr.identifier)],\n 1: (addr.relays || []).map((url) => utf8Encoder.encode(url)),\n 2: [secp256k13.utils.hexToBytes(addr.pubkey)],\n 3: [new Uint8Array(kind)]\n });\n let words = bech32.toWords(data);\n return bech32.encode(\"naddr\", words, Bech32MaxSize);\n}\nfunction encodeTLV(tlv) {\n let entries = [];\n Object.entries(tlv).forEach(([t, vs]) => {\n vs.forEach((v) => {\n let entry = new Uint8Array(v.length + 2);\n entry.set([parseInt(t)], 0);\n entry.set([v.length], 1);\n entry.set(v, 2);\n entries.push(entry);\n });\n });\n return secp256k13.utils.concatBytes(...entries);\n}\n\n// references.ts\nvar mentionRegex = /\\bnostr:((note|npub|naddr|nevent|nprofile)1\\w+)\\b|#\\[(\\d+)\\]/g;\nfunction parseReferences(evt) {\n let references = [];\n for (let ref of evt.content.matchAll(mentionRegex)) {\n if (ref[2]) {\n try {\n let { type, data } = decode(ref[1]);\n switch (type) {\n case \"npub\": {\n references.push({\n text: ref[0],\n profile: { pubkey: data, relays: [] }\n });\n break;\n }\n case \"nprofile\": {\n references.push({\n text: ref[0],\n profile: data\n });\n break;\n }\n case \"note\": {\n references.push({\n text: ref[0],\n event: { id: data, relays: [] }\n });\n break;\n }\n case \"nevent\": {\n references.push({\n text: ref[0],\n event: data\n });\n break;\n }\n case \"naddr\": {\n references.push({\n text: ref[0],\n address: data\n });\n break;\n }\n }\n } catch (err) {\n }\n } else if (ref[3]) {\n let idx = parseInt(ref[3], 10);\n let tag = evt.tags[idx];\n if (!tag)\n continue;\n switch (tag[0]) {\n case \"p\": {\n references.push({\n text: ref[0],\n profile: { pubkey: tag[1], relays: tag[2] ? [tag[2]] : [] }\n });\n break;\n }\n case \"e\": {\n references.push({\n text: ref[0],\n event: { id: tag[1], relays: tag[2] ? [tag[2]] : [] }\n });\n break;\n }\n case \"a\": {\n try {\n let [kind, pubkey, identifier] = tag[1].split(\":\");\n references.push({\n text: ref[0],\n address: {\n identifier,\n pubkey,\n kind: parseInt(kind, 10),\n relays: tag[2] ? [tag[2]] : []\n }\n });\n } catch (err) {\n }\n break;\n }\n }\n }\n }\n return references;\n}\n\n// nip04.ts\nvar nip04_exports = {};\n__export(nip04_exports, {\n decrypt: () => decrypt,\n encrypt: () => encrypt\n});\nimport { randomBytes } from \"@noble/hashes/utils\";\nimport * as secp256k14 from \"@noble/secp256k1\";\nimport { base64 } from \"@scure/base\";\nasync function encrypt(privkey, pubkey, text) {\n const key = secp256k14.getSharedSecret(privkey, \"02\" + pubkey);\n const normalizedKey = getNormalizedX(key);\n let iv = Uint8Array.from(randomBytes(16));\n let plaintext = utf8Encoder.encode(text);\n let cryptoKey = await crypto.subtle.importKey(\n \"raw\",\n normalizedKey,\n { name: \"AES-CBC\" },\n false,\n [\"encrypt\"]\n );\n let ciphertext = await crypto.subtle.encrypt(\n { name: \"AES-CBC\", iv },\n cryptoKey,\n plaintext\n );\n let ctb64 = base64.encode(new Uint8Array(ciphertext));\n let ivb64 = base64.encode(new Uint8Array(iv.buffer));\n return `${ctb64}?iv=${ivb64}`;\n}\nasync function decrypt(privkey, pubkey, data) {\n let [ctb64, ivb64] = data.split(\"?iv=\");\n let key = secp256k14.getSharedSecret(privkey, \"02\" + pubkey);\n let normalizedKey = getNormalizedX(key);\n let cryptoKey = await crypto.subtle.importKey(\n \"raw\",\n normalizedKey,\n { name: \"AES-CBC\" },\n false,\n [\"decrypt\"]\n );\n let ciphertext = base64.decode(ctb64);\n let iv = base64.decode(ivb64);\n let plaintext = await crypto.subtle.decrypt(\n { name: \"AES-CBC\", iv },\n cryptoKey,\n ciphertext\n );\n let text = utf8Decoder.decode(plaintext);\n return text;\n}\nfunction getNormalizedX(key) {\n return key.slice(1, 33);\n}\n\n// nip05.ts\nvar nip05_exports = {};\n__export(nip05_exports, {\n queryProfile: () => queryProfile,\n searchDomain: () => searchDomain,\n useFetchImplementation: () => useFetchImplementation\n});\nvar _fetch;\ntry {\n _fetch = fetch;\n} catch {\n}\nfunction useFetchImplementation(fetchImplementation) {\n _fetch = fetchImplementation;\n}\nasync function searchDomain(domain, query = \"\") {\n try {\n let res = await (await _fetch(`https://${domain}/.well-known/nostr.json?name=${query}`)).json();\n return res.names;\n } catch (_) {\n return {};\n }\n}\nasync function queryProfile(fullname) {\n let [name, domain] = fullname.split(\"@\");\n if (!domain) {\n domain = name;\n name = \"_\";\n }\n if (!name.match(/^[A-Za-z0-9-_]+$/))\n return null;\n if (!domain.includes(\".\"))\n return null;\n let res;\n try {\n res = await (await _fetch(`https://${domain}/.well-known/nostr.json?name=${name}`)).json();\n } catch (err) {\n return null;\n }\n if (!res?.names?.[name])\n return null;\n let pubkey = res.names[name];\n let relays = res.relays?.[pubkey] || [];\n return {\n pubkey,\n relays\n };\n}\n\n// nip06.ts\nvar nip06_exports = {};\n__export(nip06_exports, {\n generateSeedWords: () => generateSeedWords,\n privateKeyFromSeedWords: () => privateKeyFromSeedWords,\n validateWords: () => validateWords\n});\nimport * as secp256k15 from \"@noble/secp256k1\";\nimport { wordlist } from \"@scure/bip39/wordlists/english.js\";\nimport {\n generateMnemonic,\n mnemonicToSeedSync,\n validateMnemonic\n} from \"@scure/bip39\";\nimport { HDKey } from \"@scure/bip32\";\nfunction privateKeyFromSeedWords(mnemonic, passphrase) {\n let root = HDKey.fromMasterSeed(mnemonicToSeedSync(mnemonic, passphrase));\n let privateKey = root.derive(`m/44'/1237'/0'/0/0`).privateKey;\n if (!privateKey)\n throw new Error(\"could not derive private key\");\n return secp256k15.utils.bytesToHex(privateKey);\n}\nfunction generateSeedWords() {\n return generateMnemonic(wordlist);\n}\nfunction validateWords(words) {\n return validateMnemonic(words, wordlist);\n}\n\n// nip10.ts\nvar nip10_exports = {};\n__export(nip10_exports, {\n parse: () => parse\n});\nfunction parse(event) {\n const result = {\n reply: void 0,\n root: void 0,\n mentions: [],\n profiles: []\n };\n const eTags = [];\n for (const tag of event.tags) {\n if (tag[0] === \"e\" && tag[1]) {\n eTags.push(tag);\n }\n if (tag[0] === \"p\" && tag[1]) {\n result.profiles.push({\n pubkey: tag[1],\n relays: tag[2] ? [tag[2]] : []\n });\n }\n }\n for (let eTagIndex = 0; eTagIndex < eTags.length; eTagIndex++) {\n const eTag = eTags[eTagIndex];\n const [_, eTagEventId, eTagRelayUrl, eTagMarker] = eTag;\n const eventPointer = {\n id: eTagEventId,\n relays: eTagRelayUrl ? [eTagRelayUrl] : []\n };\n const isFirstETag = eTagIndex === 0;\n const isLastETag = eTagIndex === eTags.length - 1;\n if (eTagMarker === \"root\") {\n result.root = eventPointer;\n continue;\n }\n if (eTagMarker === \"reply\") {\n result.reply = eventPointer;\n continue;\n }\n if (eTagMarker === \"mention\") {\n result.mentions.push(eventPointer);\n continue;\n }\n if (isFirstETag) {\n result.root = eventPointer;\n continue;\n }\n if (isLastETag) {\n result.reply = eventPointer;\n continue;\n }\n result.mentions.push(eventPointer);\n }\n return result;\n}\n\n// nip26.ts\nvar nip26_exports = {};\n__export(nip26_exports, {\n createDelegation: () => createDelegation,\n getDelegator: () => getDelegator\n});\nimport * as secp256k16 from \"@noble/secp256k1\";\nimport { sha256 as sha2562 } from \"@noble/hashes/sha256\";\nfunction createDelegation(privateKey, parameters) {\n let conditions = [];\n if ((parameters.kind || -1) >= 0)\n conditions.push(`kind=${parameters.kind}`);\n if (parameters.until)\n conditions.push(`created_at<${parameters.until}`);\n if (parameters.since)\n conditions.push(`created_at>${parameters.since}`);\n let cond = conditions.join(\"&\");\n if (cond === \"\")\n throw new Error(\"refusing to create a delegation without any conditions\");\n let sighash = sha2562(\n utf8Encoder.encode(`nostr:delegation:${parameters.pubkey}:${cond}`)\n );\n let sig = secp256k16.utils.bytesToHex(\n secp256k16.schnorr.signSync(sighash, privateKey)\n );\n return {\n from: getPublicKey(privateKey),\n to: parameters.pubkey,\n cond,\n sig\n };\n}\nfunction getDelegator(event) {\n let tag = event.tags.find((tag2) => tag2[0] === \"delegation\" && tag2.length >= 4);\n if (!tag)\n return null;\n let pubkey = tag[1];\n let cond = tag[2];\n let sig = tag[3];\n let conditions = cond.split(\"&\");\n for (let i = 0; i < conditions.length; i++) {\n let [key, operator, value] = conditions[i].split(/\\b/);\n if (key === \"kind\" && operator === \"=\" && event.kind === parseInt(value))\n continue;\n else if (key === \"created_at\" && operator === \"<\" && event.created_at < parseInt(value))\n continue;\n else if (key === \"created_at\" && operator === \">\" && event.created_at > parseInt(value))\n continue;\n else\n return null;\n }\n let sighash = sha2562(\n utf8Encoder.encode(`nostr:delegation:${event.pubkey}:${cond}`)\n );\n if (!secp256k16.schnorr.verifySync(sig, sighash, pubkey))\n return null;\n return pubkey;\n}\n\n// nip39.ts\nvar nip39_exports = {};\n__export(nip39_exports, {\n useFetchImplementation: () => useFetchImplementation2,\n validateGithub: () => validateGithub\n});\nvar _fetch2;\ntry {\n _fetch2 = fetch;\n} catch {\n}\nfunction useFetchImplementation2(fetchImplementation) {\n _fetch2 = fetchImplementation;\n}\nasync function validateGithub(pubkey, username, proof) {\n try {\n let res = await (await _fetch2(`https://gist.github.com/${username}/${proof}/raw`)).text();\n return res === `Verifying that I control the following Nostr public key: ${pubkey}`;\n } catch (_) {\n return false;\n }\n}\n\n// nip57.ts\nvar nip57_exports = {};\n__export(nip57_exports, {\n getZapEndpoint: () => getZapEndpoint,\n makeZapReceipt: () => makeZapReceipt,\n makeZapRequest: () => makeZapRequest,\n useFetchImplementation: () => useFetchImplementation3,\n validateZapRequest: () => validateZapRequest\n});\nimport { bech32 as bech322 } from \"@scure/base\";\nvar _fetch3;\ntry {\n _fetch3 = fetch;\n} catch {\n}\nfunction useFetchImplementation3(fetchImplementation) {\n _fetch3 = fetchImplementation;\n}\nasync function getZapEndpoint(metadata) {\n try {\n let lnurl = \"\";\n let { lud06, lud16 } = JSON.parse(metadata.content);\n if (lud06) {\n let { words } = bech322.decode(lud06, 1e3);\n let data = bech322.fromWords(words);\n lnurl = utf8Decoder.decode(data);\n } else if (lud16) {\n let [name, domain] = lud16.split(\"@\");\n lnurl = `https://${domain}/.well-known/lnurlp/${name}`;\n } else {\n return null;\n }\n let res = await _fetch3(lnurl);\n let body = await res.json();\n if (body.allowsNostr && body.nostrPubkey) {\n return body.callback;\n }\n } catch (err) {\n }\n return null;\n}\nfunction makeZapRequest({\n profile,\n event,\n amount,\n relays,\n comment = \"\"\n}) {\n if (!amount)\n throw new Error(\"amount not given\");\n if (!profile)\n throw new Error(\"profile not given\");\n let zr = {\n kind: 9734,\n created_at: Math.round(Date.now() / 1e3),\n content: comment,\n tags: [\n [\"p\", profile],\n [\"amount\", amount.toString()],\n [\"relays\", ...relays]\n ]\n };\n if (event) {\n zr.tags.push([\"e\", event]);\n }\n return zr;\n}\nfunction validateZapRequest(zapRequestString) {\n let zapRequest;\n try {\n zapRequest = JSON.parse(zapRequestString);\n } catch (err) {\n return \"Invalid zap request JSON.\";\n }\n if (!validateEvent(zapRequest))\n return \"Zap request is not a valid Nostr event.\";\n if (!verifySignature(zapRequest))\n return \"Invalid signature on zap request.\";\n let p = zapRequest.tags.find(([t, v]) => t === \"p\" && v);\n if (!p)\n return \"Zap request doesn't have a 'p' tag.\";\n if (!p[1].match(/^[a-f0-9]{64}$/))\n return \"Zap request 'p' tag is not valid hex.\";\n let e = zapRequest.tags.find(([t, v]) => t === \"e\" && v);\n if (e && !e[1].match(/^[a-f0-9]{64}$/))\n return \"Zap request 'e' tag is not valid hex.\";\n let relays = zapRequest.tags.find(([t, v]) => t === \"relays\" && v);\n if (!relays)\n return \"Zap request doesn't have a 'relays' tag.\";\n return null;\n}\nfunction makeZapReceipt({\n zapRequest,\n preimage,\n bolt11,\n paidAt\n}) {\n let zr = JSON.parse(zapRequest);\n let tagsFromZapRequest = zr.tags.filter(\n ([t]) => t === \"e\" || t === \"p\" || t === \"a\"\n );\n let zap = {\n kind: 9735,\n created_at: Math.round(paidAt.getTime() / 1e3),\n content: \"\",\n tags: [\n ...tagsFromZapRequest,\n [\"bolt11\", bolt11],\n [\"description\", zapRequest]\n ]\n };\n if (preimage) {\n zap.tags.push([\"preimage\", preimage]);\n }\n return zap;\n}\n\n// index.ts\nimport * as secp256k17 from \"@noble/secp256k1\";\nimport { hmac } from \"@noble/hashes/hmac\";\nimport { sha256 as sha2563 } from \"@noble/hashes/sha256\";\nsecp256k17.utils.hmacSha256Sync = (key, ...msgs) => hmac(sha2563, key, secp256k17.utils.concatBytes(...msgs));\nsecp256k17.utils.sha256Sync = (...msgs) => sha2563(secp256k17.utils.concatBytes(...msgs));\nexport {\n Kind,\n SimplePool,\n finishEvent,\n fakejson_exports as fj,\n generatePrivateKey,\n getBlankEvent,\n getEventHash,\n getPublicKey,\n matchFilter,\n matchFilters,\n nip04_exports as nip04,\n nip05_exports as nip05,\n nip06_exports as nip06,\n nip10_exports as nip10,\n nip19_exports as nip19,\n nip26_exports as nip26,\n nip39_exports as nip39,\n nip57_exports as nip57,\n parseReferences,\n relayInit,\n serializeEvent,\n signEvent,\n utils_exports as utils,\n validateEvent,\n verifySignature\n};\n","const WS = WebSocket// typeof WebSocket !== 'undefined' ? WebSocket : require('ws')\n\nRelay.prototype.wait_connected = async function relay_wait_connected(data) {\n\tlet retry = 1000\n\twhile (true) {\n\t\tif (this.ws.readyState !== 1) {\n\t\t\tawait sleep(retry)\n\t\t\tretry *= 1.5\n\t\t}\n\t\telse {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n\nfunction Relay(relay, opts={})\n{\n\tif (!(this instanceof Relay))\n\t\treturn new Relay(relay, opts)\n\n\tthis.url = relay\n\tthis.opts = opts\n\n\tif (opts.reconnect == null)\n\t\topts.reconnect = true\n\n\tconst me = this\n\tme.onfn = {}\n\n\tinit_websocket(me)\n\t\t.catch(e => {\n\t\t\tif (me.onfn.error)\n\t\t\t\tme.onfn.error(e)\n\t\t})\n\n\treturn this\n}\n\nfunction init_websocket(me) {\n\treturn new Promise((resolve, reject) => {\n\t\tconst ws = me.ws = new WS(me.url);\n\n\t\tlet resolved = false\n\t\tws.onmessage = (m) => {\n\t\t\thandle_nostr_message(me, m)\n\t\t\tif (me.onfn.message)\n\t\t\t\tme.onfn.message(m)\n\t\t}\n\t\tws.onclose = (e) => {\n\t\t\tif (me.onfn.close)\n\t\t\t\tme.onfn.close(e)\n\t\t\tif (me.reconnecting)\n\t\t\t\treturn reject(new Error(\"close during reconnect\"))\n\t\t\tif (!me.manualClose && me.opts.reconnect)\n\t\t\t\treconnect(me)\n\t\t}\n\t\tws.onerror = (e) => {\n\t\t\tif (me.onfn.error)\n\t\t\t\tme.onfn.error(e)\n\t\t\tif (me.reconnecting)\n\t\t\t\treturn reject(new Error(\"error during reconnect\"))\n\t\t\tif (me.opts.reconnect)\n\t\t\t\treconnect(me)\n\t\t}\n\t\tws.onopen = (e) => {\n\t\t\tif (me.onfn.open)\n\t\t\t\tme.onfn.open(e)\n\n\t\t\tif (resolved) return\n\n\t\t\tresolved = true\n\t\t\tresolve(me)\n\t\t}\n\t});\n}\n\nfunction sleep(ms) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\nasync function reconnect(me)\n{\n\tconst reconnecting = true\n\tlet n = 100\n\ttry {\n\t\tme.reconnecting = true\n\t\tawait init_websocket(me)\n\t\tme.reconnecting = false\n\t} catch {\n\t\t//console.error(`error thrown during reconnect... trying again in ${n} ms`)\n\t\tawait sleep(n)\n\t\tn *= 1.5\n\t}\n}\n\nRelay.prototype.on = function relayOn(method, fn) {\n\tthis.onfn[method] = fn\n\treturn this\n}\n\nRelay.prototype.close = function relayClose() {\n\tif (this.ws) {\n\t\tthis.manualClose = true\n\t\tthis.ws.close()\n\t}\n}\n\nRelay.prototype.subscribe = function relay_subscribe(sub_id, filters) {\n\tif (Array.isArray(filters))\n\t\tthis.send([\"REQ\", sub_id, ...filters])\n\telse\n\t\tthis.send([\"REQ\", sub_id, filters])\n}\n\nRelay.prototype.unsubscribe = function relay_unsubscribe(sub_id) {\n\tthis.send([\"CLOSE\", sub_id])\n}\n\nRelay.prototype.send = async function relay_send(data) {\n\tawait this.wait_connected()\n\tthis.ws.send(JSON.stringify(data))\n}\n\nfunction handle_nostr_message(relay, msg)\n{\n\tlet data\n\ttry {\n\t\tdata = JSON.parse(msg.data)\n\t} catch (e) {\n\t\tconsole.error(\"handle_nostr_message\", e)\n\t\treturn\n\t}\n\tif (data.length >= 2) {\n\t\tswitch (data[0]) {\n\t\tcase \"EVENT\":\n\t\t\tif (data.length < 3)\n\t\t\t\treturn\n\t\t\treturn relay.onfn.event && relay.onfn.event(data[1], data[2])\n\t\tcase \"EOSE\":\n\t\t\treturn relay.onfn.eose && relay.onfn.eose(data[1])\n\t\tcase \"NOTICE\":\n\t\t\treturn relay.onfn.notice && relay.onfn.notice(...data.slice(1))\n\t\tcase \"OK\":\n\t\t\treturn relay.onfn.ok && relay.onfn.ok(...data.slice(1))\n\t\t}\n\t}\n}\n\nmodule.exports = Relay\n","\nconst Relay = require('./relay')\n\nfunction RelayPool(relays, opts)\n{\n\tif (!(this instanceof RelayPool))\n\t\treturn new RelayPool(relays, opts)\n\n\tthis.onfn = {}\n\tthis.relays = []\n\tthis.opts = opts\n\n\tfor (const relay of relays) {\n\t\tthis.add(relay)\n\t}\n\n\treturn this\n}\n\nRelayPool.prototype.close = function relayPoolClose() {\n\tfor (const relay of this.relays) {\n\t\trelay.close()\n\t}\n}\n\nRelayPool.prototype.on = function relayPoolOn(method, fn) {\n\tfor (const relay of this.relays) {\n\t\tthis.onfn[method] = fn\n\t\trelay.onfn[method] = fn.bind(null, relay)\n\t}\n\treturn this\n}\n\nRelayPool.prototype.has = function relayPoolHas(relayUrl) {\n\tfor (const relay of this.relays) {\n\t\tif (relay.url === relayUrl)\n\t\t\treturn true\n\t}\n\n\treturn false\n}\n\nRelayPool.prototype.send = function relayPoolSend(payload, relay_ids) {\n\tconst relays = relay_ids ? this.find_relays(relay_ids) : this.relays\n\tfor (const relay of relays) {\n\t\trelay.send(payload)\n\t}\n}\n\nRelayPool.prototype.setupHandlers = function relayPoolSetupHandlers()\n{\n\t// setup its message handlers with the ones we have already\n\tconst keys = Object.keys(this.onfn)\n\tfor (const handler of keys) {\n\t\tfor (const relay of this.relays) {\n\t\t\trelay.onfn[handler] = this.onfn[handler].bind(null, relay)\n\t\t}\n\t}\n}\n\nRelayPool.prototype.remove = function relayPoolRemove(url) {\n\tlet i = 0\n\n\tfor (const relay of this.relays) {\n\t\tif (relay.url === url) {\n\t\t\trelay.ws && relay.ws.close()\n\t\t\tthis.relays = this.replays.splice(i, 1)\n\t\t\treturn true\n\t\t}\n\n\t\ti += 1\n\t}\n\n\treturn false\n}\n\nRelayPool.prototype.subscribe = function relayPoolSubscribe(sub_id, filters, relay_ids) {\n\tconst relays = relay_ids ? this.find_relays(relay_ids) : this.relays\n\tfor (const relay of relays) {\n\t\trelay.subscribe(sub_id, filters)\n\t}\n}\n\nRelayPool.prototype.unsubscribe = function relayPoolUnsubscibe(sub_id, relay_ids) {\n\tconst relays = relay_ids ? this.find_relays(relay_ids) : this.relays\n\tfor (const relay of relays) {\n\t\trelay.unsubscribe(sub_id)\n\t}\n}\n\n\nRelayPool.prototype.add = function relayPoolAdd(relay) {\n\tif (relay instanceof Relay) {\n\t\tif (this.has(relay.url))\n\t\t\treturn false\n\n\t\tthis.relays.push(relay)\n\t\tthis.setupHandlers()\n\t\treturn true\n\t}\n\n\tif (this.has(relay))\n\t\treturn false\n\n\tconst r = Relay(relay, this.opts)\n\tthis.relays.push(r)\n\tthis.setupHandlers()\n\treturn true\n}\n\nRelayPool.prototype.find_relays = function relayPoolFindRelays(relay_ids) {\n\tif (relay_ids instanceof Relay)\n\t\treturn [relay_ids]\n\n\tif (relay_ids.length === 0)\n\t\treturn []\n\n\tif (!relay_ids[0])\n\t\tthrow new Error(\"what!?\")\n\n\tif (relay_ids[0] instanceof Relay)\n\t\treturn relay_ids\n\n\treturn this.relays.reduce((acc, relay) => {\n\t\tif (relay_ids.some((rid) => relay.url === rid))\n\t\t\tacc.push(relay)\n\t\treturn acc\n\t}, [])\n}\n\nmodule.exports = RelayPool\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.is_node = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std\r\n */\r\n//================================================================\r\nvar is_node_ = null;\r\n/**\r\n * Test whether the code is running on NodeJS.\r\n *\r\n * @return Whether NodeJS or not.\r\n */\r\nfunction is_node() {\r\n if (is_node_ === null)\r\n is_node_ =\r\n typeof global === \"object\" &&\r\n typeof global.process === \"object\" &&\r\n typeof global.process.versions === \"object\" &&\r\n typeof global.process.versions.node !== \"undefined\";\r\n return is_node_;\r\n}\r\nexports.is_node = is_node;\r\n//# sourceMappingURL=node.js.map","var naiveFallback = function () {\n\tif (typeof self === \"object\" && self) return self;\n\tif (typeof window === \"object\" && window) return window;\n\tthrow new Error(\"Unable to resolve global `this`\");\n};\n\nmodule.exports = (function () {\n\tif (this) return this;\n\n\t// Unexpected strict mode (may happen if e.g. bundled into ESM module)\n\n\t// Fallback to standard globalThis if available\n\tif (typeof globalThis === \"object\" && globalThis) return globalThis;\n\n\t// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis\n\t// In all ES5+ engines global object inherits from Object.prototype\n\t// (if you approached one that doesn't please report)\n\ttry {\n\t\tObject.defineProperty(Object.prototype, \"__global__\", {\n\t\t\tget: function () { return this; },\n\t\t\tconfigurable: true\n\t\t});\n\t} catch (error) {\n\t\t// Unfortunate case of updates to Object.prototype being restricted\n\t\t// via preventExtensions, seal or freeze\n\t\treturn naiveFallback();\n\t}\n\ttry {\n\t\t// Safari case (window.__global__ works, but __global__ does not)\n\t\tif (!__global__) return naiveFallback();\n\t\treturn __global__;\n\t} finally {\n\t\tdelete Object.prototype.__global__;\n\t}\n})();\n","module.exports = require('../package.json').version;\n","var _globalThis;\nif (typeof globalThis === 'object') {\n\t_globalThis = globalThis;\n} else {\n\ttry {\n\t\t_globalThis = require('es5-ext/global');\n\t} catch (error) {\n\t} finally {\n\t\tif (!_globalThis && typeof window !== 'undefined') { _globalThis = window; }\n\t\tif (!_globalThis) { throw new Error('Could not determine global this'); }\n\t}\n}\n\nvar NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;\nvar websocket_version = require('./version');\n\n\n/**\n * Expose a W3C WebSocket class with just one or two arguments.\n */\nfunction W3CWebSocket(uri, protocols) {\n\tvar native_instance;\n\n\tif (protocols) {\n\t\tnative_instance = new NativeWebSocket(uri, protocols);\n\t}\n\telse {\n\t\tnative_instance = new NativeWebSocket(uri);\n\t}\n\n\t/**\n\t * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket\n\t * class). Since it is an Object it will be returned as it is when creating an\n\t * instance of W3CWebSocket via 'new W3CWebSocket()'.\n\t *\n\t * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2\n\t */\n\treturn native_instance;\n}\nif (NativeWebSocket) {\n\t['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) {\n\t\tObject.defineProperty(W3CWebSocket, prop, {\n\t\t\tget: function() { return NativeWebSocket[prop]; }\n\t\t});\n\t});\n}\n\n/**\n * Module exports.\n */\nmodule.exports = {\n 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null,\n 'version' : websocket_version\n};\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ForOfAdaptor = void 0;\r\n/**\r\n * Adaptor for `for ... of` iteration.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar ForOfAdaptor = /** @class */ (function () {\r\n /**\r\n * Initializer Constructor.\r\n *\r\n * @param first Input iteartor of the first position.\r\n * @param last Input iterator of the last position.\r\n */\r\n function ForOfAdaptor(first, last) {\r\n this.it_ = first;\r\n this.last_ = last;\r\n }\r\n /**\r\n * @inheritDoc\r\n */\r\n ForOfAdaptor.prototype.next = function () {\r\n if (this.it_.equals(this.last_))\r\n return {\r\n done: true,\r\n value: undefined,\r\n };\r\n else {\r\n var it = this.it_;\r\n this.it_ = this.it_.next();\r\n return {\r\n done: false,\r\n value: it.value,\r\n };\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ForOfAdaptor.prototype[Symbol.iterator] = function () {\r\n return this;\r\n };\r\n return ForOfAdaptor;\r\n}());\r\nexports.ForOfAdaptor = ForOfAdaptor;\r\n//# sourceMappingURL=ForOfAdaptor.js.map","\"use strict\";\r\nvar __values = (this && this.__values) || function(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Container = void 0;\r\nvar ForOfAdaptor_1 = require(\"../../internal/iterator/disposable/ForOfAdaptor\");\r\n/**\r\n * Basic container.\r\n *\r\n * @template T Stored elements' type\r\n * @template SourceT Derived type extending this {@link Container}\r\n * @template IteratorT Iterator type\r\n * @template ReverseT Reverse iterator type\r\n * @template PElem Parent type of *T*, used for inserting elements through {@link assign} and {@link insert}.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar Container = /** @class */ (function () {\r\n function Container() {\r\n }\r\n /**\r\n * @inheritDoc\r\n */\r\n Container.prototype.empty = function () {\r\n return this.size() === 0;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n Container.prototype.rbegin = function () {\r\n return this.end().reverse();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n Container.prototype.rend = function () {\r\n return this.begin().reverse();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n Container.prototype[Symbol.iterator] = function () {\r\n return new ForOfAdaptor_1.ForOfAdaptor(this.begin(), this.end());\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n Container.prototype.toJSON = function () {\r\n var e_1, _a;\r\n var ret = [];\r\n try {\r\n for (var _b = __values(this), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var elem = _c.value;\r\n ret.push(elem);\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return ret;\r\n };\r\n return Container;\r\n}());\r\nexports.Container = Container;\r\n//# sourceMappingURL=Container.js.map","\"use strict\";\r\nvar __read = (this && this.__read) || function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.NativeArrayIterator = void 0;\r\nvar NativeArrayIterator = /** @class */ (function () {\r\n /* ---------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------- */\r\n function NativeArrayIterator(data, index) {\r\n this.data_ = data;\r\n this.index_ = index;\r\n }\r\n /* ---------------------------------------------------------\r\n ACCESSORS\r\n --------------------------------------------------------- */\r\n NativeArrayIterator.prototype.index = function () {\r\n return this.index_;\r\n };\r\n Object.defineProperty(NativeArrayIterator.prototype, \"value\", {\r\n get: function () {\r\n return this.data_[this.index_];\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /* ---------------------------------------------------------\r\n MOVERS\r\n --------------------------------------------------------- */\r\n NativeArrayIterator.prototype.prev = function () {\r\n --this.index_;\r\n return this;\r\n };\r\n NativeArrayIterator.prototype.next = function () {\r\n ++this.index_;\r\n return this;\r\n };\r\n NativeArrayIterator.prototype.advance = function (n) {\r\n this.index_ += n;\r\n return this;\r\n };\r\n /* ---------------------------------------------------------\r\n COMPARES\r\n --------------------------------------------------------- */\r\n NativeArrayIterator.prototype.equals = function (obj) {\r\n return this.data_ === obj.data_ && this.index_ === obj.index_;\r\n };\r\n NativeArrayIterator.prototype.swap = function (obj) {\r\n var _a, _b;\r\n _a = __read([obj.data_, this.data_], 2), this.data_ = _a[0], obj.data_ = _a[1];\r\n _b = __read([obj.index_, this.index_], 2), this.index_ = _b[0], obj.index_ = _b[1];\r\n };\r\n return NativeArrayIterator;\r\n}());\r\nexports.NativeArrayIterator = NativeArrayIterator;\r\n//# sourceMappingURL=NativeArrayIterator.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SetContainer = void 0;\r\nvar Container_1 = require(\"./Container\");\r\nvar NativeArrayIterator_1 = require(\"../../internal/iterator/disposable/NativeArrayIterator\");\r\n/**\r\n * Basic set container.\r\n *\r\n * @template Key Key type\r\n * @template Unique Whether duplicated key is blocked or not\r\n * @template Source Derived type extending this {@link SetContainer}\r\n * @template IteratorT Iterator type\r\n * @template ReverseT Reverse iterator type\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar SetContainer = /** @class */ (function (_super) {\r\n __extends(SetContainer, _super);\r\n /* ---------------------------------------------------------\r\n CONSTURCTORS\r\n --------------------------------------------------------- */\r\n /**\r\n * Default Constructor.\r\n */\r\n function SetContainer(factory) {\r\n var _this = _super.call(this) || this;\r\n _this.data_ = factory(_this);\r\n return _this;\r\n }\r\n /**\r\n * @inheritDoc\r\n */\r\n SetContainer.prototype.assign = function (first, last) {\r\n // INSERT\r\n this.clear();\r\n this.insert(first, last);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n SetContainer.prototype.clear = function () {\r\n // TO BE ABSTRACT\r\n this.data_.clear();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n SetContainer.prototype.begin = function () {\r\n return this.data_.begin();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n SetContainer.prototype.end = function () {\r\n return this.data_.end();\r\n };\r\n /* ---------------------------------------------------------\r\n ELEMENTS\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n SetContainer.prototype.has = function (key) {\r\n return !this.find(key).equals(this.end());\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n SetContainer.prototype.size = function () {\r\n return this.data_.size();\r\n };\r\n /* =========================================================\r\n ELEMENTS I/O\r\n - INSERT\r\n - ERASE\r\n - UTILITY\r\n - POST-PROCESS\r\n ============================================================\r\n INSERT\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n SetContainer.prototype.push = function () {\r\n var items = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n items[_i] = arguments[_i];\r\n }\r\n if (items.length === 0)\r\n return this.size();\r\n // INSERT BY RANGE\r\n var first = new NativeArrayIterator_1.NativeArrayIterator(items, 0);\r\n var last = new NativeArrayIterator_1.NativeArrayIterator(items, items.length);\r\n this._Insert_by_range(first, last);\r\n // RETURN SIZE\r\n return this.size();\r\n };\r\n SetContainer.prototype.insert = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (args.length === 1)\r\n return this._Insert_by_key(args[0]);\r\n else if (args[0].next instanceof Function &&\r\n args[1].next instanceof Function)\r\n return this._Insert_by_range(args[0], args[1]);\r\n else\r\n return this._Insert_by_hint(args[0], args[1]);\r\n };\r\n SetContainer.prototype.erase = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (args.length === 1 &&\r\n !(args[0] instanceof this.end().constructor &&\r\n args[0].source() === this))\r\n return this._Erase_by_val(args[0]);\r\n else if (args.length === 1)\r\n return this._Erase_by_range(args[0]);\r\n else\r\n return this._Erase_by_range(args[0], args[1]);\r\n };\r\n SetContainer.prototype._Erase_by_range = function (first, last) {\r\n if (last === void 0) { last = first.next(); }\r\n // ERASE\r\n var it = this.data_.erase(first, last);\r\n // POST-PROCESS\r\n this._Handle_erase(first, last);\r\n return it;\r\n };\r\n return SetContainer;\r\n}(Container_1.Container));\r\nexports.SetContainer = SetContainer;\r\n//# sourceMappingURL=SetContainer.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Exception = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std\r\n */\r\n//================================================================\r\n/**\r\n * Base Exception.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar Exception = /** @class */ (function (_super) {\r\n __extends(Exception, _super);\r\n /* ---------------------------------------------------------\r\n CONSTRUCTOR\r\n --------------------------------------------------------- */\r\n /**\r\n * Initializer Constructor.\r\n *\r\n * @param message The error messgae.\r\n */\r\n function Exception(message) {\r\n var _newTarget = this.constructor;\r\n var _this = _super.call(this, message) || this;\r\n // INHERITANCE POLYFILL\r\n var proto = _newTarget.prototype;\r\n if (Object.setPrototypeOf)\r\n Object.setPrototypeOf(_this, proto);\r\n else\r\n _this.__proto__ = proto;\r\n return _this;\r\n }\r\n Object.defineProperty(Exception.prototype, \"name\", {\r\n /* ---------------------------------------------------------\r\n ACCESSORS\r\n --------------------------------------------------------- */\r\n /**\r\n * The error name.\r\n */\r\n get: function () {\r\n return this.constructor.name;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Get error message.\r\n *\r\n * @return The error message.\r\n */\r\n Exception.prototype.what = function () {\r\n return this.message;\r\n };\r\n /**\r\n * Native function for `JSON.stringify()`.\r\n *\r\n * The {@link Exception.toJSON} function returns only three properties; ({@link name}, {@link message} and {@link stack}). If you want to define a new sub-class extending the {@link Exception} and const the class to export additional props (or remove some props), override this {@link Exception.toJSON} method.\r\n *\r\n * @return An object for `JSON.stringify()`.\r\n */\r\n Exception.prototype.toJSON = function () {\r\n return {\r\n name: this.name,\r\n message: this.message,\r\n stack: this.stack,\r\n };\r\n };\r\n return Exception;\r\n}(Error));\r\nexports.Exception = Exception;\r\n//# sourceMappingURL=Exception.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.LogicError = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std\r\n */\r\n//================================================================\r\nvar Exception_1 = require(\"./Exception\");\r\n/**\r\n * Logic Error.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar LogicError = /** @class */ (function (_super) {\r\n __extends(LogicError, _super);\r\n /**\r\n * Initializer Constructor.\r\n *\r\n * @param message The error messgae.\r\n */\r\n function LogicError(message) {\r\n return _super.call(this, message) || this;\r\n }\r\n return LogicError;\r\n}(Exception_1.Exception));\r\nexports.LogicError = LogicError;\r\n//# sourceMappingURL=LogicError.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.InvalidArgument = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std\r\n */\r\n//================================================================\r\nvar LogicError_1 = require(\"./LogicError\");\r\n/**\r\n * Invalid Argument Exception.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar InvalidArgument = /** @class */ (function (_super) {\r\n __extends(InvalidArgument, _super);\r\n /**\r\n * Initializer Constructor.\r\n *\r\n * @param message The error messgae.\r\n */\r\n function InvalidArgument(message) {\r\n return _super.call(this, message) || this;\r\n }\r\n return InvalidArgument;\r\n}(LogicError_1.LogicError));\r\nexports.InvalidArgument = InvalidArgument;\r\n//# sourceMappingURL=InvalidArgument.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.OutOfRange = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std\r\n */\r\n//================================================================\r\nvar LogicError_1 = require(\"./LogicError\");\r\n/**\r\n * Out-of-range Exception.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar OutOfRange = /** @class */ (function (_super) {\r\n __extends(OutOfRange, _super);\r\n /**\r\n * Initializer Constructor.\r\n *\r\n * @param message The error messgae.\r\n */\r\n function OutOfRange(message) {\r\n return _super.call(this, message) || this;\r\n }\r\n return OutOfRange;\r\n}(LogicError_1.LogicError));\r\nexports.OutOfRange = OutOfRange;\r\n//# sourceMappingURL=OutOfRange.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ErrorGenerator = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std.internal\r\n */\r\n//================================================================\r\nvar InvalidArgument_1 = require(\"../../exception/InvalidArgument\");\r\nvar OutOfRange_1 = require(\"../../exception/OutOfRange\");\r\nvar ErrorGenerator;\r\n(function (ErrorGenerator) {\r\n /* ---------------------------------------------------------\r\n COMMON\r\n --------------------------------------------------------- */\r\n function get_class_name(instance) {\r\n if (typeof instance === \"string\")\r\n return instance;\r\n var ret = instance.constructor.name;\r\n if (instance.constructor.__MODULE)\r\n ret = \"\".concat(instance.constructor.__MODULE, \".\").concat(ret);\r\n return \"std.\".concat(ret);\r\n }\r\n ErrorGenerator.get_class_name = get_class_name;\r\n /* ---------------------------------------------------------\r\n CONTAINERS\r\n --------------------------------------------------------- */\r\n function empty(instance, method) {\r\n return new OutOfRange_1.OutOfRange(\"Error on \".concat(get_class_name(instance), \".\").concat(method, \"(): it's empty container.\"));\r\n }\r\n ErrorGenerator.empty = empty;\r\n function negative_index(instance, method, index) {\r\n return new OutOfRange_1.OutOfRange(\"Error on \".concat(get_class_name(instance), \".\").concat(method, \"(): parametric index is negative -> (index = \").concat(index, \").\"));\r\n }\r\n ErrorGenerator.negative_index = negative_index;\r\n function excessive_index(instance, method, index, size) {\r\n return new OutOfRange_1.OutOfRange(\"Error on \".concat(get_class_name(instance), \".\").concat(method, \"(): parametric index is equal or greater than size -> (index = \").concat(index, \", size: \").concat(size, \").\"));\r\n }\r\n ErrorGenerator.excessive_index = excessive_index;\r\n function not_my_iterator(instance, method) {\r\n return new InvalidArgument_1.InvalidArgument(\"Error on \".concat(get_class_name(instance), \".\").concat(method, \"(): parametric iterator is not this container's own.\"));\r\n }\r\n ErrorGenerator.not_my_iterator = not_my_iterator;\r\n function erased_iterator(instance, method) {\r\n return new InvalidArgument_1.InvalidArgument(\"Error on \".concat(get_class_name(instance), \".\").concat(method, \"(): parametric iterator, it already has been erased.\"));\r\n }\r\n ErrorGenerator.erased_iterator = erased_iterator;\r\n function negative_iterator(instance, method, index) {\r\n return new OutOfRange_1.OutOfRange(\"Error on \".concat(get_class_name(instance), \".\").concat(method, \"(): parametric iterator is directing negative position -> (index = \").concat(index, \").\"));\r\n }\r\n ErrorGenerator.negative_iterator = negative_iterator;\r\n function iterator_end_value(instance, method) {\r\n if (method === void 0) { method = \"end\"; }\r\n var className = get_class_name(instance);\r\n return new OutOfRange_1.OutOfRange(\"Error on \".concat(className, \".Iterator.value: cannot access to the \").concat(className, \".\").concat(method, \"().value.\"));\r\n }\r\n ErrorGenerator.iterator_end_value = iterator_end_value;\r\n function key_nout_found(instance, method, key) {\r\n throw new OutOfRange_1.OutOfRange(\"Error on \".concat(get_class_name(instance), \".\").concat(method, \"(): unable to find the matched key -> \").concat(key));\r\n }\r\n ErrorGenerator.key_nout_found = key_nout_found;\r\n})(ErrorGenerator = exports.ErrorGenerator || (exports.ErrorGenerator = {}));\r\n//# sourceMappingURL=ErrorGenerator.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __read = (this && this.__read) || function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n};\r\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.UniqueSet = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std.base\r\n */\r\n//================================================================\r\nvar SetContainer_1 = require(\"./SetContainer\");\r\nvar ErrorGenerator_1 = require(\"../../internal/exception/ErrorGenerator\");\r\n/**\r\n * Basic set container blocking duplicated key.\r\n *\r\n * @template Key Key type\r\n * @template Source Derived type extending this {@link UniqueSet}\r\n * @template IteratorT Iterator type\r\n * @template ReverseT Reverse iterator type\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar UniqueSet = /** @class */ (function (_super) {\r\n __extends(UniqueSet, _super);\r\n function UniqueSet() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /* ---------------------------------------------------------\r\n ACCESSOR\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n UniqueSet.prototype.count = function (key) {\r\n return this.find(key).equals(this.end()) ? 0 : 1;\r\n };\r\n UniqueSet.prototype.insert = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return _super.prototype.insert.apply(this, __spreadArray([], __read(args), false));\r\n };\r\n UniqueSet.prototype._Insert_by_range = function (first, last) {\r\n for (; !first.equals(last); first = first.next())\r\n this._Insert_by_key(first.value);\r\n };\r\n UniqueSet.prototype.extract = function (param) {\r\n if (param instanceof this.end().constructor)\r\n return this._Extract_by_iterator(param);\r\n else\r\n return this._Extract_by_val(param);\r\n };\r\n UniqueSet.prototype._Extract_by_val = function (key) {\r\n var it = this.find(key);\r\n if (it.equals(this.end()) === true)\r\n throw ErrorGenerator_1.ErrorGenerator.key_nout_found(this, \"extract\", key);\r\n this._Erase_by_range(it);\r\n return key;\r\n };\r\n UniqueSet.prototype._Extract_by_iterator = function (it) {\r\n if (it.equals(this.end()) === true || this.has(it.value) === false)\r\n return this.end();\r\n this._Erase_by_range(it);\r\n return it;\r\n };\r\n UniqueSet.prototype._Erase_by_val = function (key) {\r\n var it = this.find(key);\r\n if (it.equals(this.end()) === true)\r\n return 0;\r\n this._Erase_by_range(it);\r\n return 1;\r\n };\r\n /* ---------------------------------------------------------\r\n UTILITY\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n UniqueSet.prototype.merge = function (source) {\r\n for (var it = source.begin(); !it.equals(source.end());) {\r\n if (this.has(it.value) === false) {\r\n this.insert(it.value);\r\n it = source.erase(it);\r\n }\r\n else\r\n it = it.next();\r\n }\r\n };\r\n return UniqueSet;\r\n}(SetContainer_1.SetContainer));\r\nexports.UniqueSet = UniqueSet;\r\n//# sourceMappingURL=UniqueSet.js.map","\"use strict\";\r\nvar __read = (this && this.__read) || function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n};\r\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.IAssociativeContainer = void 0;\r\nvar IAssociativeContainer;\r\n(function (IAssociativeContainer) {\r\n /**\r\n * @internal\r\n */\r\n function construct(source) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n var ramda;\r\n var tail;\r\n if (args.length >= 1 && args[0] instanceof Array) {\r\n // INITIALIZER LIST CONSTRUCTOR\r\n ramda = function () {\r\n var items = args[0];\r\n source.push.apply(source, __spreadArray([], __read(items), false));\r\n };\r\n tail = args.slice(1);\r\n }\r\n else if (args.length >= 2 &&\r\n args[0].next instanceof Function &&\r\n args[1].next instanceof Function) {\r\n // RANGE CONSTRUCTOR\r\n ramda = function () {\r\n var first = args[0];\r\n var last = args[1];\r\n source.assign(first, last);\r\n };\r\n tail = args.slice(2);\r\n }\r\n else {\r\n // DEFAULT CONSTRUCTOR\r\n ramda = null;\r\n tail = args;\r\n }\r\n return { ramda: ramda, tail: tail };\r\n }\r\n IAssociativeContainer.construct = construct;\r\n})(IAssociativeContainer = exports.IAssociativeContainer || (exports.IAssociativeContainer = {}));\r\n//# sourceMappingURL=IAssociativeContainer.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports._Get_root = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std.internal\r\n */\r\n//================================================================\r\nvar node_1 = require(\"../utility/node\");\r\n/**\r\n * @internal\r\n */\r\nfunction _Get_root() {\r\n if (__s_pRoot === null) {\r\n __s_pRoot = ((0, node_1.is_node)() ? global : self);\r\n if (__s_pRoot.__s_iUID === undefined)\r\n __s_pRoot.__s_iUID = 0;\r\n }\r\n return __s_pRoot;\r\n}\r\nexports._Get_root = _Get_root;\r\n/**\r\n * @internal\r\n */\r\nvar __s_pRoot = null;\r\n//# sourceMappingURL=Global.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.get_uid = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std\r\n */\r\n//================================================================\r\nvar Global_1 = require(\"../internal/Global\");\r\n/**\r\n * Get unique identifier.\r\n *\r\n * @param obj Target object.\r\n * @return The identifier number.\r\n */\r\nfunction get_uid(obj) {\r\n // NO UID EXISTS, THEN ISSUE ONE.\r\n if (obj instanceof Object) {\r\n if (obj.hasOwnProperty(\"__get_m_iUID\") === false) {\r\n var uid_1 = ++(0, Global_1._Get_root)().__s_iUID;\r\n Object.defineProperty(obj, \"__get_m_iUID\", {\r\n value: function () {\r\n return uid_1;\r\n },\r\n });\r\n }\r\n // RETURNS\r\n return obj.__get_m_iUID();\r\n }\r\n else if (obj === undefined)\r\n return -1;\r\n // is null\r\n else\r\n return 0;\r\n}\r\nexports.get_uid = get_uid;\r\n//# sourceMappingURL=uid.js.map","\"use strict\";\r\nvar __values = (this && this.__values) || function(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.hash = void 0;\r\nvar uid_1 = require(\"./uid\");\r\n/**\r\n * Hash function.\r\n *\r\n * @param itemList The items to be hashed.\r\n * @return The hash code.\r\n */\r\nfunction hash() {\r\n var e_1, _a;\r\n var itemList = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n itemList[_i] = arguments[_i];\r\n }\r\n var ret = INIT_VALUE;\r\n try {\r\n for (var itemList_1 = __values(itemList), itemList_1_1 = itemList_1.next(); !itemList_1_1.done; itemList_1_1 = itemList_1.next()) {\r\n var item = itemList_1_1.value;\r\n item = item ? item.valueOf() : item;\r\n var type = typeof item;\r\n if (type === \"boolean\")\r\n // BOOLEAN -> 1 BYTE\r\n ret = _Hash_boolean(item, ret);\r\n else if (type === \"number\" || type === \"bigint\")\r\n // NUMBER -> 8 BYTES\r\n ret = _Hash_number(item, ret);\r\n else if (type === \"string\")\r\n // STRING -> {LENGTH} BYTES\r\n ret = _Hash_string(item, ret);\r\n else if (item instanceof Object &&\r\n item.hashCode instanceof Function) {\r\n var hashed = item.hashCode();\r\n if (itemList.length === 1)\r\n return hashed;\r\n else {\r\n ret = ret ^ hashed;\r\n ret *= MULTIPLIER;\r\n }\r\n } // object | null | undefined\r\n else\r\n ret = _Hash_number((0, uid_1.get_uid)(item), ret);\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (itemList_1_1 && !itemList_1_1.done && (_a = itemList_1.return)) _a.call(itemList_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return Math.abs(ret);\r\n}\r\nexports.hash = hash;\r\nfunction _Hash_boolean(val, ret) {\r\n ret ^= val ? 1 : 0;\r\n ret *= MULTIPLIER;\r\n return ret;\r\n}\r\nfunction _Hash_number(val, ret) {\r\n return _Hash_string(val.toString(), ret);\r\n // // ------------------------------------------\r\n // // IN C++\r\n // // CONSIDER A NUMBER AS A STRING\r\n // // HASH((CHAR*)&VAL, 8)\r\n // // ------------------------------------------\r\n // // CONSTRUCT BUFFER AND BYTE_ARRAY\r\n // const buffer: ArrayBuffer = new ArrayBuffer(8);\r\n // const byteArray: Int8Array = new Int8Array(buffer);\r\n // const valueArray: Float64Array = new Float64Array(buffer);\r\n // valueArray[0] = val;\r\n // for (let i: number = 0; i < byteArray.length; ++i)\r\n // {\r\n // const byte = (byteArray[i] < 0) ? byteArray[i] + 256 : byteArray[i];\r\n // ret ^= byte;\r\n // ret *= _HASH_MULTIPLIER;\r\n // }\r\n // return Math.abs(ret);\r\n}\r\nfunction _Hash_string(str, ret) {\r\n for (var i = 0; i < str.length; ++i) {\r\n ret ^= str.charCodeAt(i);\r\n ret *= MULTIPLIER;\r\n }\r\n return Math.abs(ret);\r\n}\r\n/* ---------------------------------------------------------\r\n RESERVED ITEMS\r\n--------------------------------------------------------- */\r\nvar INIT_VALUE = 2166136261;\r\nvar MULTIPLIER = 16777619;\r\n//# sourceMappingURL=hash.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.greater_equal = exports.greater = exports.less_equal = exports.less = exports.not_equal_to = exports.equal_to = void 0;\r\nvar uid_1 = require(\"./uid\");\r\n/**\r\n * Test whether two arguments are equal.\r\n *\r\n * @param x The first argument to compare.\r\n * @param y The second argument to compare.\r\n * @return Whether two arguments are equal or not.\r\n */\r\nfunction equal_to(x, y) {\r\n // CONVERT TO PRIMITIVE TYPE\r\n x = x ? x.valueOf() : x;\r\n y = y ? y.valueOf() : y;\r\n // DO COMPARE\r\n if (x instanceof Object &&\r\n x.equals instanceof Function)\r\n return x.equals(y);\r\n else\r\n return x === y;\r\n}\r\nexports.equal_to = equal_to;\r\n/**\r\n * Test whether two arguments are not equal.\r\n *\r\n * @param x The first argument to compare.\r\n * @param y The second argument to compare.\r\n * @return Returns `true`, if two arguments are not equal, otherwise `false`.\r\n */\r\nfunction not_equal_to(x, y) {\r\n return !equal_to(x, y);\r\n}\r\nexports.not_equal_to = not_equal_to;\r\n/**\r\n * Test whether *x* is less than *y*.\r\n *\r\n * @param x The first argument to compare.\r\n * @param y The second argument to compare.\r\n * @return Whether *x* is less than *y*.\r\n */\r\nfunction less(x, y) {\r\n // CONVERT TO PRIMITIVE TYPE\r\n x = x.valueOf();\r\n y = y.valueOf();\r\n // DO COMPARE\r\n if (x instanceof Object)\r\n if (x.less instanceof Function)\r\n // has less()\r\n return x.less(y);\r\n else\r\n return (0, uid_1.get_uid)(x) < (0, uid_1.get_uid)(y);\r\n else\r\n return x < y;\r\n}\r\nexports.less = less;\r\n/**\r\n * Test whether *x* is less than or equal to *y*.\r\n *\r\n * @param x The first argument to compare.\r\n * @param y The second argument to compare.\r\n * @return Whether *x* is less than or equal to *y*.\r\n */\r\nfunction less_equal(x, y) {\r\n return less(x, y) || equal_to(x, y);\r\n}\r\nexports.less_equal = less_equal;\r\n/**\r\n * Test whether *x* is greater than *y*.\r\n *\r\n * @param x The first argument to compare.\r\n * @param y The second argument to compare.\r\n * @return Whether *x* is greater than *y*.\r\n */\r\nfunction greater(x, y) {\r\n return !less_equal(x, y);\r\n}\r\nexports.greater = greater;\r\n/**\r\n * Test whether *x* is greater than or equal to *y*.\r\n *\r\n * @param x The first argument to compare.\r\n * @param y The second argument to compare.\r\n * @return Whether *x* is greater than or equal to *y*.\r\n */\r\nfunction greater_equal(x, y) {\r\n return !less(x, y);\r\n}\r\nexports.greater_equal = greater_equal;\r\n//# sourceMappingURL=comparators.js.map","\"use strict\";\r\nvar __read = (this && this.__read) || function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n};\r\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.IHashContainer = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std.internal\r\n */\r\n//================================================================\r\nvar IAssociativeContainer_1 = require(\"./IAssociativeContainer\");\r\nvar hash_1 = require(\"../../../functional/hash\");\r\nvar comparators_1 = require(\"../../../functional/comparators\");\r\nvar IHashContainer;\r\n(function (IHashContainer) {\r\n /**\r\n * @internal\r\n */\r\n function construct(source, Source, bucketFactory) {\r\n var args = [];\r\n for (var _i = 3; _i < arguments.length; _i++) {\r\n args[_i - 3] = arguments[_i];\r\n }\r\n // DECLARE MEMBERS\r\n var post_process = null;\r\n var hash_function = hash_1.hash;\r\n var key_eq = comparators_1.equal_to;\r\n //----\r\n // INITIALIZE MEMBERS AND POST-PROCESS\r\n //----\r\n // BRANCH - METHOD OVERLOADINGS\r\n if (args.length === 1 && args[0] instanceof Source) {\r\n // PARAMETERS\r\n var container_1 = args[0];\r\n hash_function = container_1.hash_function();\r\n key_eq = container_1.key_eq();\r\n // COPY CONSTRUCTOR\r\n post_process = function () {\r\n var first = container_1.begin();\r\n var last = container_1.end();\r\n source.assign(first, last);\r\n };\r\n }\r\n else {\r\n var tuple = IAssociativeContainer_1.IAssociativeContainer.construct.apply(IAssociativeContainer_1.IAssociativeContainer, __spreadArray([source], __read(args), false));\r\n post_process = tuple.ramda;\r\n if (tuple.tail.length >= 1)\r\n hash_function = tuple.tail[0];\r\n if (tuple.tail.length >= 2)\r\n key_eq = tuple.tail[1];\r\n }\r\n //----\r\n // DO PROCESS\r\n //----\r\n // CONSTRUCT BUCKET\r\n bucketFactory(hash_function, key_eq);\r\n // ACT POST-PROCESS\r\n if (post_process !== null)\r\n post_process();\r\n }\r\n IHashContainer.construct = construct;\r\n})(IHashContainer = exports.IHashContainer || (exports.IHashContainer = {}));\r\n//# sourceMappingURL=IHashContainer.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ListIterator = void 0;\r\nvar ErrorGenerator_1 = require(\"../exception/ErrorGenerator\");\r\n/**\r\n * Basic List Iterator.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar ListIterator = /** @class */ (function () {\r\n /* ---------------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------------- */\r\n function ListIterator(prev, next, value) {\r\n this.prev_ = prev;\r\n this.next_ = next;\r\n this.value_ = value;\r\n }\r\n /**\r\n * @internal\r\n */\r\n ListIterator._Set_prev = function (it, prev) {\r\n it.prev_ = prev;\r\n };\r\n /**\r\n * @internal\r\n */\r\n ListIterator._Set_next = function (it, next) {\r\n it.next_ = next;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ListIterator.prototype.prev = function () {\r\n return this.prev_;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ListIterator.prototype.next = function () {\r\n return this.next_;\r\n };\r\n Object.defineProperty(ListIterator.prototype, \"value\", {\r\n /**\r\n * @inheritDoc\r\n */\r\n get: function () {\r\n this._Try_value();\r\n return this.value_;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ListIterator.prototype._Try_value = function () {\r\n if (this.value_ === undefined &&\r\n this.equals(this.source().end()) === true)\r\n throw ErrorGenerator_1.ErrorGenerator.iterator_end_value(this.source());\r\n };\r\n /* ---------------------------------------------------------------\r\n COMPARISON\r\n --------------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n ListIterator.prototype.equals = function (obj) {\r\n return this === obj;\r\n };\r\n return ListIterator;\r\n}());\r\nexports.ListIterator = ListIterator;\r\n//# sourceMappingURL=ListIterator.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Repeater = void 0;\r\nvar Repeater = /** @class */ (function () {\r\n /* ---------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------- */\r\n function Repeater(index, value) {\r\n this.index_ = index;\r\n this.value_ = value;\r\n }\r\n /* ---------------------------------------------------------\r\n ACCESSORS\r\n --------------------------------------------------------- */\r\n Repeater.prototype.index = function () {\r\n return this.index_;\r\n };\r\n Object.defineProperty(Repeater.prototype, \"value\", {\r\n get: function () {\r\n return this.value_;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /* ---------------------------------------------------------\r\n MOVERS & COMPARE\r\n --------------------------------------------------------- */\r\n Repeater.prototype.next = function () {\r\n ++this.index_;\r\n return this;\r\n };\r\n Repeater.prototype.equals = function (obj) {\r\n return this.index_ === obj.index_;\r\n };\r\n return Repeater;\r\n}());\r\nexports.Repeater = Repeater;\r\n//# sourceMappingURL=Repeater.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.next = exports.prev = exports.advance = exports.distance = exports.size = exports.empty = void 0;\r\nvar InvalidArgument_1 = require(\"../exception/InvalidArgument\");\r\n/* =========================================================\r\n GLOBAL FUNCTIONS\r\n - ACCESSORS\r\n - MOVERS\r\n - FACTORIES\r\n============================================================\r\n ACCESSORS\r\n--------------------------------------------------------- */\r\n/**\r\n * Test whether a container is empty.\r\n *\r\n * @param source Target container.\r\n * @return Whether empty or not.\r\n */\r\nfunction empty(source) {\r\n if (source instanceof Array)\r\n return source.length !== 0;\r\n else\r\n return source.empty();\r\n}\r\nexports.empty = empty;\r\n/**\r\n * Get number of elements of a container.\r\n *\r\n * @param source Target container.\r\n * @return The number of elements in the container.\r\n */\r\nfunction size(source) {\r\n if (source instanceof Array)\r\n return source.length;\r\n else\r\n return source.size();\r\n}\r\nexports.size = size;\r\nfunction distance(first, last) {\r\n if (first.index instanceof Function)\r\n return _Distance_via_index(first, last);\r\n var ret = 0;\r\n for (; !first.equals(last); first = first.next())\r\n ++ret;\r\n return ret;\r\n}\r\nexports.distance = distance;\r\nfunction _Distance_via_index(first, last) {\r\n var x = first.index();\r\n var y = last.index();\r\n if (first.base instanceof Function)\r\n return x - y;\r\n else\r\n return y - x;\r\n}\r\nfunction advance(it, n) {\r\n if (n === 0)\r\n return it;\r\n else if (it.advance instanceof Function)\r\n return it.advance(n);\r\n var stepper;\r\n if (n < 0) {\r\n if (!(it.prev instanceof Function))\r\n throw new InvalidArgument_1.InvalidArgument(\"Error on std.advance(): parametric iterator is not a bi-directional iterator, thus advancing to negative direction is not possible.\");\r\n stepper = function (it) { return it.prev(); };\r\n n = -n;\r\n }\r\n else\r\n stepper = function (it) { return it.next(); };\r\n while (n-- > 0)\r\n it = stepper(it);\r\n return it;\r\n}\r\nexports.advance = advance;\r\n/**\r\n * Get previous iterator.\r\n *\r\n * @param it Iterator to move.\r\n * @param n Step to move prev.\r\n * @return An iterator moved to prev *n* steps.\r\n */\r\nfunction prev(it, n) {\r\n if (n === void 0) { n = 1; }\r\n if (n === 1)\r\n return it.prev();\r\n else\r\n return advance(it, -n);\r\n}\r\nexports.prev = prev;\r\n/**\r\n * Get next iterator.\r\n *\r\n * @param it Iterator to move.\r\n * @param n Step to move next.\r\n * @return Iterator moved to next *n* steps.\r\n */\r\nfunction next(it, n) {\r\n if (n === void 0) { n = 1; }\r\n if (n === 1)\r\n return it.next();\r\n else\r\n return advance(it, n);\r\n}\r\nexports.next = next;\r\n//# sourceMappingURL=global.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __read = (this && this.__read) || function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ListContainer = void 0;\r\nvar Container_1 = require(\"../../../base/container/Container\");\r\nvar ListIterator_1 = require(\"../../iterator/ListIterator\");\r\nvar Repeater_1 = require(\"../../iterator/disposable/Repeater\");\r\nvar NativeArrayIterator_1 = require(\"../../iterator/disposable/NativeArrayIterator\");\r\nvar global_1 = require(\"../../../iterator/global\");\r\nvar ErrorGenerator_1 = require(\"../../exception/ErrorGenerator\");\r\n/**\r\n * Basic List Container.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar ListContainer = /** @class */ (function (_super) {\r\n __extends(ListContainer, _super);\r\n /* ---------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------- */\r\n /**\r\n * Default Constructor.\r\n */\r\n function ListContainer() {\r\n var _this = _super.call(this) || this;\r\n // INIT MEMBERS\r\n _this.end_ = _this._Create_iterator(null, null);\r\n _this.clear();\r\n return _this;\r\n }\r\n ListContainer.prototype.assign = function (par1, par2) {\r\n this.clear();\r\n this.insert(this.end(), par1, par2);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ListContainer.prototype.clear = function () {\r\n // DISCONNECT NODES\r\n ListIterator_1.ListIterator._Set_prev(this.end_, this.end_);\r\n ListIterator_1.ListIterator._Set_next(this.end_, this.end_);\r\n // RE-SIZE -> 0\r\n this.begin_ = this.end_;\r\n this.size_ = 0;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ListContainer.prototype.resize = function (n) {\r\n var expansion = n - this.size();\r\n if (expansion > 0)\r\n this.insert(this.end(), expansion, undefined);\r\n else if (expansion < 0)\r\n this.erase((0, global_1.advance)(this.end(), -expansion), this.end());\r\n };\r\n /* ---------------------------------------------------------\r\n ACCESSORS\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n ListContainer.prototype.begin = function () {\r\n return this.begin_;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ListContainer.prototype.end = function () {\r\n return this.end_;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ListContainer.prototype.size = function () {\r\n return this.size_;\r\n };\r\n /* =========================================================\r\n ELEMENTS I/O\r\n - PUSH & POP\r\n - INSERT\r\n - ERASE\r\n - POST-PROCESS\r\n ============================================================\r\n PUSH & POP\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n ListContainer.prototype.push_front = function (val) {\r\n this.insert(this.begin_, val);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ListContainer.prototype.push_back = function (val) {\r\n this.insert(this.end_, val);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ListContainer.prototype.pop_front = function () {\r\n if (this.empty() === true)\r\n throw ErrorGenerator_1.ErrorGenerator.empty(this.end_.source().constructor.name, \"pop_front\");\r\n this.erase(this.begin_);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ListContainer.prototype.pop_back = function () {\r\n if (this.empty() === true)\r\n throw ErrorGenerator_1.ErrorGenerator.empty(this.end_.source().constructor.name, \"pop_back\");\r\n this.erase(this.end_.prev());\r\n };\r\n /* ---------------------------------------------------------\r\n INSERT\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n ListContainer.prototype.push = function () {\r\n var items = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n items[_i] = arguments[_i];\r\n }\r\n if (items.length === 0)\r\n return this.size();\r\n // INSERT BY RANGE\r\n var first = new NativeArrayIterator_1.NativeArrayIterator(items, 0);\r\n var last = new NativeArrayIterator_1.NativeArrayIterator(items, items.length);\r\n this._Insert_by_range(this.end(), first, last);\r\n // RETURN SIZE\r\n return this.size();\r\n };\r\n ListContainer.prototype.insert = function (pos) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n // VALIDATION\r\n if (pos.source() !== this.end_.source())\r\n throw ErrorGenerator_1.ErrorGenerator.not_my_iterator(this.end_.source(), \"insert\");\r\n else if (pos.erased_ === true)\r\n throw ErrorGenerator_1.ErrorGenerator.erased_iterator(this.end_.source(), \"insert\");\r\n // BRANCHES\r\n if (args.length === 1)\r\n return this._Insert_by_repeating_val(pos, 1, args[0]);\r\n else if (args.length === 2 && typeof args[0] === \"number\")\r\n return this._Insert_by_repeating_val(pos, args[0], args[1]);\r\n else\r\n return this._Insert_by_range(pos, args[0], args[1]);\r\n };\r\n ListContainer.prototype._Insert_by_repeating_val = function (position, n, val) {\r\n var first = new Repeater_1.Repeater(0, val);\r\n var last = new Repeater_1.Repeater(n);\r\n return this._Insert_by_range(position, first, last);\r\n };\r\n ListContainer.prototype._Insert_by_range = function (position, begin, end) {\r\n var prev = position.prev();\r\n var first = null;\r\n var size = 0;\r\n for (var it = begin; it.equals(end) === false; it = it.next()) {\r\n // CONSTRUCT ITEM, THE NEW ELEMENT\r\n var item = this._Create_iterator(prev, null, it.value);\r\n if (size === 0)\r\n first = item;\r\n // PLACE ITEM ON THE NEXT OF \"PREV\"\r\n ListIterator_1.ListIterator._Set_next(prev, item);\r\n // SHIFT CURRENT ITEM TO PREVIOUS\r\n prev = item;\r\n ++size;\r\n }\r\n // WILL FIRST BE THE BEGIN?\r\n if (position.equals(this.begin()) === true)\r\n this.begin_ = first;\r\n // CONNECT BETWEEN LAST AND POSITION\r\n ListIterator_1.ListIterator._Set_next(prev, position);\r\n ListIterator_1.ListIterator._Set_prev(position, prev);\r\n this.size_ += size;\r\n return first;\r\n };\r\n ListContainer.prototype.erase = function (first, last) {\r\n if (last === void 0) { last = first.next(); }\r\n return this._Erase_by_range(first, last);\r\n };\r\n ListContainer.prototype._Erase_by_range = function (first, last) {\r\n // VALIDATION\r\n if (first.source() !== this.end_.source())\r\n throw ErrorGenerator_1.ErrorGenerator.not_my_iterator(this.end_.source(), \"insert\");\r\n else if (first.erased_ === true)\r\n throw ErrorGenerator_1.ErrorGenerator.erased_iterator(this.end_.source(), \"insert\");\r\n else if (first.equals(this.end_))\r\n return this.end_;\r\n // FIND PREV AND NEXT\r\n var prev = first.prev();\r\n // SHRINK\r\n ListIterator_1.ListIterator._Set_next(prev, last);\r\n ListIterator_1.ListIterator._Set_prev(last, prev);\r\n for (var it = first; !it.equals(last); it = it.next()) {\r\n it.erased_ = true;\r\n --this.size_;\r\n }\r\n if (first.equals(this.begin_))\r\n this.begin_ = last;\r\n return last;\r\n };\r\n /* ---------------------------------------------------------\r\n SWAP\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n ListContainer.prototype.swap = function (obj) {\r\n var _a, _b, _c;\r\n _a = __read([obj.begin_, this.begin_], 2), this.begin_ = _a[0], obj.begin_ = _a[1];\r\n _b = __read([obj.end_, this.end_], 2), this.end_ = _b[0], obj.end_ = _b[1];\r\n _c = __read([obj.size_, this.size_], 2), this.size_ = _c[0], obj.size_ = _c[1];\r\n };\r\n return ListContainer;\r\n}(Container_1.Container));\r\nexports.ListContainer = ListContainer;\r\n//# sourceMappingURL=ListContainer.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ReverseIterator = void 0;\r\n/**\r\n * Basic reverse iterator.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar ReverseIterator = /** @class */ (function () {\r\n /* ---------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------- */\r\n /**\r\n * Initializer Constructor.\r\n *\r\n * @param base The base iterator.\r\n */\r\n function ReverseIterator(base) {\r\n this.base_ = base.prev();\r\n }\r\n /* ---------------------------------------------------------\r\n ACCESSORS\r\n --------------------------------------------------------- */\r\n /**\r\n * Get source container.\r\n *\r\n * @return The source container.\r\n */\r\n ReverseIterator.prototype.source = function () {\r\n return this.base_.source();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ReverseIterator.prototype.base = function () {\r\n return this.base_.next();\r\n };\r\n Object.defineProperty(ReverseIterator.prototype, \"value\", {\r\n /**\r\n * @inheritDoc\r\n */\r\n get: function () {\r\n return this.base_.value;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /* ---------------------------------------------------------\r\n MOVERS\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n ReverseIterator.prototype.prev = function () {\r\n // this.base().next()\r\n return this._Create_neighbor(this.base().next());\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ReverseIterator.prototype.next = function () {\r\n // this.base().prev()\r\n return this._Create_neighbor(this.base_);\r\n };\r\n /* ---------------------------------------------------------\r\n COMPARES\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n ReverseIterator.prototype.equals = function (obj) {\r\n return this.base_.equals(obj.base_);\r\n };\r\n return ReverseIterator;\r\n}());\r\nexports.ReverseIterator = ReverseIterator;\r\n//# sourceMappingURL=ReverseIterator.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __read = (this && this.__read) || function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SetElementList = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std.internal\r\n */\r\n//================================================================\r\nvar ListContainer_1 = require(\"../linear/ListContainer\");\r\nvar ListIterator_1 = require(\"../../iterator/ListIterator\");\r\nvar ReverseIterator_1 = require(\"../../iterator/ReverseIterator\");\r\n/**\r\n * Doubly Linked List storing set elements.\r\n *\r\n * @template Key Key type\r\n * @template Unique Whether duplicated key is blocked or not\r\n * @template Source Source container type\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar SetElementList = /** @class */ (function (_super) {\r\n __extends(SetElementList, _super);\r\n /* ---------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------- */\r\n function SetElementList(associative) {\r\n var _this = _super.call(this) || this;\r\n _this.associative_ = associative;\r\n return _this;\r\n }\r\n SetElementList.prototype._Create_iterator = function (prev, next, val) {\r\n return SetElementList.Iterator.create(this, prev, next, val);\r\n };\r\n /**\r\n * @internal\r\n */\r\n SetElementList._Swap_associative = function (x, y) {\r\n var _a;\r\n _a = __read([y.associative_, x.associative_], 2), x.associative_ = _a[0], y.associative_ = _a[1];\r\n };\r\n /* ---------------------------------------------------------\r\n ACCESSORS\r\n --------------------------------------------------------- */\r\n SetElementList.prototype.associative = function () {\r\n return this.associative_;\r\n };\r\n return SetElementList;\r\n}(ListContainer_1.ListContainer));\r\nexports.SetElementList = SetElementList;\r\n/**\r\n *\r\n */\r\n(function (SetElementList) {\r\n /**\r\n * Iterator of set container storing elements in a list.\r\n *\r\n * @template Key Key type\r\n * @template Unique Whether duplicated key is blocked or not\r\n * @template Source Source container type\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\n var Iterator = /** @class */ (function (_super) {\r\n __extends(Iterator, _super);\r\n /* ---------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------- */\r\n function Iterator(list, prev, next, val) {\r\n var _this = _super.call(this, prev, next, val) || this;\r\n _this.source_ = list;\r\n return _this;\r\n }\r\n /**\r\n * @internal\r\n */\r\n Iterator.create = function (list, prev, next, val) {\r\n return new Iterator(list, prev, next, val);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n Iterator.prototype.reverse = function () {\r\n return new ReverseIterator(this);\r\n };\r\n /* ---------------------------------------------------------\r\n ACCESSORS\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n Iterator.prototype.source = function () {\r\n return this.source_.associative();\r\n };\r\n return Iterator;\r\n }(ListIterator_1.ListIterator));\r\n SetElementList.Iterator = Iterator;\r\n /**\r\n * Reverser iterator of set container storing elements in a list.\r\n *\r\n * @template Key Key type\r\n * @template Unique Whether duplicated key is blocked or not\r\n * @template Source Source container type\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\n var ReverseIterator = /** @class */ (function (_super) {\r\n __extends(ReverseIterator, _super);\r\n function ReverseIterator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ReverseIterator.prototype._Create_neighbor = function (base) {\r\n return new ReverseIterator(base);\r\n };\r\n return ReverseIterator;\r\n }(ReverseIterator_1.ReverseIterator));\r\n SetElementList.ReverseIterator = ReverseIterator;\r\n})(SetElementList = exports.SetElementList || (exports.SetElementList = {}));\r\nexports.SetElementList = SetElementList;\r\n//# sourceMappingURL=SetElementList.js.map","\"use strict\";\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std.internal\r\n */\r\n//================================================================\r\nvar __values = (this && this.__values) || function(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.HashBuckets = void 0;\r\n/**\r\n * Hash buckets\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar HashBuckets = /** @class */ (function () {\r\n /* ---------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------- */\r\n function HashBuckets(fetcher, hasher) {\r\n this.fetcher_ = fetcher;\r\n this.hasher_ = hasher;\r\n this.max_load_factor_ = DEFAULT_MAX_FACTOR;\r\n this.data_ = [];\r\n this.size_ = 0;\r\n this.initialize();\r\n }\r\n HashBuckets.prototype.clear = function () {\r\n this.data_ = [];\r\n this.size_ = 0;\r\n this.initialize();\r\n };\r\n HashBuckets.prototype.rehash = function (length) {\r\n var e_1, _a, e_2, _b;\r\n length = Math.max(length, MIN_BUCKET_COUNT);\r\n var data = [];\r\n for (var i = 0; i < length; ++i)\r\n data.push([]);\r\n try {\r\n for (var _c = __values(this.data_), _d = _c.next(); !_d.done; _d = _c.next()) {\r\n var row = _d.value;\r\n try {\r\n for (var row_1 = (e_2 = void 0, __values(row)), row_1_1 = row_1.next(); !row_1_1.done; row_1_1 = row_1.next()) {\r\n var elem = row_1_1.value;\r\n var index = this.hasher_(this.fetcher_(elem)) % data.length;\r\n data[index].push(elem);\r\n }\r\n }\r\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\r\n finally {\r\n try {\r\n if (row_1_1 && !row_1_1.done && (_b = row_1.return)) _b.call(row_1);\r\n }\r\n finally { if (e_2) throw e_2.error; }\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n this.data_ = data;\r\n };\r\n HashBuckets.prototype.reserve = function (length) {\r\n if (length > this.capacity()) {\r\n length = Math.floor(length / this.max_load_factor_);\r\n this.rehash(length);\r\n }\r\n };\r\n HashBuckets.prototype.initialize = function () {\r\n for (var i = 0; i < MIN_BUCKET_COUNT; ++i)\r\n this.data_.push([]);\r\n };\r\n /* ---------------------------------------------------------\r\n ACCESSORS\r\n --------------------------------------------------------- */\r\n HashBuckets.prototype.length = function () {\r\n return this.data_.length;\r\n };\r\n HashBuckets.prototype.capacity = function () {\r\n return this.data_.length * this.max_load_factor_;\r\n };\r\n HashBuckets.prototype.at = function (index) {\r\n return this.data_[index];\r\n };\r\n HashBuckets.prototype.load_factor = function () {\r\n return this.size_ / this.length();\r\n };\r\n HashBuckets.prototype.max_load_factor = function (z) {\r\n if (z === void 0) { z = null; }\r\n if (z === null)\r\n return this.max_load_factor_;\r\n else\r\n this.max_load_factor_ = z;\r\n };\r\n HashBuckets.prototype.hash_function = function () {\r\n return this.hasher_;\r\n };\r\n /* ---------------------------------------------------------\r\n ELEMENTS I/O\r\n --------------------------------------------------------- */\r\n HashBuckets.prototype.index = function (elem) {\r\n return this.hasher_(this.fetcher_(elem)) % this.length();\r\n };\r\n HashBuckets.prototype.insert = function (val) {\r\n var capacity = this.capacity();\r\n if (++this.size_ > capacity)\r\n this.reserve(capacity * 2);\r\n var index = this.index(val);\r\n this.data_[index].push(val);\r\n };\r\n HashBuckets.prototype.erase = function (val) {\r\n var index = this.index(val);\r\n var bucket = this.data_[index];\r\n for (var i = 0; i < bucket.length; ++i)\r\n if (bucket[i] === val) {\r\n bucket.splice(i, 1);\r\n --this.size_;\r\n break;\r\n }\r\n };\r\n return HashBuckets;\r\n}());\r\nexports.HashBuckets = HashBuckets;\r\nvar MIN_BUCKET_COUNT = 10;\r\nvar DEFAULT_MAX_FACTOR = 1.0;\r\n//# sourceMappingURL=HashBuckets.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __read = (this && this.__read) || function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n};\r\nvar __values = (this && this.__values) || function(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SetHashBuckets = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std.internal\r\n */\r\n//================================================================\r\nvar HashBuckets_1 = require(\"./HashBuckets\");\r\n/**\r\n * Hash buckets for set containers\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar SetHashBuckets = /** @class */ (function (_super) {\r\n __extends(SetHashBuckets, _super);\r\n /* ---------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------- */\r\n /**\r\n * Initializer Constructor\r\n *\r\n * @param source Source set container\r\n * @param hasher Hash function\r\n * @param pred Equality function\r\n */\r\n function SetHashBuckets(source, hasher, pred) {\r\n var _this = _super.call(this, fetcher, hasher) || this;\r\n _this.source_ = source;\r\n _this.key_eq_ = pred;\r\n return _this;\r\n }\r\n /**\r\n * @internal\r\n */\r\n SetHashBuckets._Swap_source = function (x, y) {\r\n var _a;\r\n _a = __read([y.source_, x.source_], 2), x.source_ = _a[0], y.source_ = _a[1];\r\n };\r\n /* ---------------------------------------------------------\r\n FINDERS\r\n --------------------------------------------------------- */\r\n SetHashBuckets.prototype.key_eq = function () {\r\n return this.key_eq_;\r\n };\r\n SetHashBuckets.prototype.find = function (val) {\r\n var e_1, _a;\r\n var index = this.hash_function()(val) % this.length();\r\n var bucket = this.at(index);\r\n try {\r\n for (var bucket_1 = __values(bucket), bucket_1_1 = bucket_1.next(); !bucket_1_1.done; bucket_1_1 = bucket_1.next()) {\r\n var it = bucket_1_1.value;\r\n if (this.key_eq_(it.value, val))\r\n return it;\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (bucket_1_1 && !bucket_1_1.done && (_a = bucket_1.return)) _a.call(bucket_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return this.source_.end();\r\n };\r\n return SetHashBuckets;\r\n}(HashBuckets_1.HashBuckets));\r\nexports.SetHashBuckets = SetHashBuckets;\r\nfunction fetcher(elem) {\r\n return elem.value;\r\n}\r\n//# sourceMappingURL=SetHashBuckets.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.make_pair = exports.Pair = void 0;\r\nvar hash_1 = require(\"../functional/hash\");\r\nvar comparators_1 = require(\"../functional/comparators\");\r\n/**\r\n * Pair of two elements.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar Pair = /** @class */ (function () {\r\n /* ---------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------- */\r\n /**\r\n * Initializer Constructor.\r\n *\r\n * @param first The first element.\r\n * @param second The second element.\r\n */\r\n function Pair(first, second) {\r\n this.first = first;\r\n this.second = second;\r\n }\r\n /* ---------------------------------------------------------\r\n COMPARISON\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n Pair.prototype.equals = function (pair) {\r\n return ((0, comparators_1.equal_to)(this.first, pair.first) &&\r\n (0, comparators_1.equal_to)(this.second, pair.second));\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n Pair.prototype.less = function (pair) {\r\n if ((0, comparators_1.equal_to)(this.first, pair.first) === false)\r\n return (0, comparators_1.less)(this.first, pair.first);\r\n else\r\n return (0, comparators_1.less)(this.second, pair.second);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n Pair.prototype.hashCode = function () {\r\n return (0, hash_1.hash)(this.first, this.second);\r\n };\r\n return Pair;\r\n}());\r\nexports.Pair = Pair;\r\n/**\r\n * Create a {@link Pair}.\r\n *\r\n * @param first The 1st element.\r\n * @param second The 2nd element.\r\n *\r\n * @return A {@link Pair} object.\r\n */\r\nfunction make_pair(first, second) {\r\n return new Pair(first, second);\r\n}\r\nexports.make_pair = make_pair;\r\n//# sourceMappingURL=Pair.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __read = (this && this.__read) || function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n};\r\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.HashSet = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std\r\n */\r\n//================================================================\r\nvar UniqueSet_1 = require(\"../base/container/UniqueSet\");\r\nvar IHashContainer_1 = require(\"../internal/container/associative/IHashContainer\");\r\nvar SetElementList_1 = require(\"../internal/container/associative/SetElementList\");\r\nvar SetHashBuckets_1 = require(\"../internal/hash/SetHashBuckets\");\r\nvar Pair_1 = require(\"../utility/Pair\");\r\n/**\r\n * Unique-key Set based on Hash buckets.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar HashSet = /** @class */ (function (_super) {\r\n __extends(HashSet, _super);\r\n function HashSet() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var _this = _super.call(this, function (thisArg) { return new SetElementList_1.SetElementList(thisArg); }) || this;\r\n IHashContainer_1.IHashContainer.construct.apply(IHashContainer_1.IHashContainer, __spreadArray([_this,\r\n HashSet,\r\n function (hash, pred) {\r\n _this.buckets_ = new SetHashBuckets_1.SetHashBuckets(_this, hash, pred);\r\n }], __read(args), false));\r\n return _this;\r\n }\r\n /* ---------------------------------------------------------\r\n ASSIGN & CLEAR\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n HashSet.prototype.clear = function () {\r\n this.buckets_.clear();\r\n _super.prototype.clear.call(this);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashSet.prototype.swap = function (obj) {\r\n var _a, _b;\r\n // SWAP CONTENTS\r\n _a = __read([obj.data_, this.data_], 2), this.data_ = _a[0], obj.data_ = _a[1];\r\n SetElementList_1.SetElementList._Swap_associative(this.data_, obj.data_);\r\n // SWAP BUCKETS\r\n SetHashBuckets_1.SetHashBuckets._Swap_source(this.buckets_, obj.buckets_);\r\n _b = __read([obj.buckets_, this.buckets_], 2), this.buckets_ = _b[0], obj.buckets_ = _b[1];\r\n };\r\n /* =========================================================\r\n ACCESSORS\r\n - MEMBER\r\n - HASH\r\n ============================================================\r\n MEMBER\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n HashSet.prototype.find = function (key) {\r\n return this.buckets_.find(key);\r\n };\r\n HashSet.prototype.begin = function (index) {\r\n if (index === void 0) { index = null; }\r\n if (index === null)\r\n return _super.prototype.begin.call(this);\r\n else\r\n return this.buckets_.at(index)[0];\r\n };\r\n HashSet.prototype.end = function (index) {\r\n if (index === void 0) { index = null; }\r\n if (index === null)\r\n return _super.prototype.end.call(this);\r\n else {\r\n var bucket = this.buckets_.at(index);\r\n return bucket[bucket.length - 1].next();\r\n }\r\n };\r\n HashSet.prototype.rbegin = function (index) {\r\n if (index === void 0) { index = null; }\r\n return this.end(index).reverse();\r\n };\r\n HashSet.prototype.rend = function (index) {\r\n if (index === void 0) { index = null; }\r\n return this.begin(index).reverse();\r\n };\r\n /* ---------------------------------------------------------\r\n HASH\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n HashSet.prototype.bucket_count = function () {\r\n return this.buckets_.length();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashSet.prototype.bucket_size = function (n) {\r\n return this.buckets_.at(n).length;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashSet.prototype.load_factor = function () {\r\n return this.buckets_.load_factor();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashSet.prototype.hash_function = function () {\r\n return this.buckets_.hash_function();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashSet.prototype.key_eq = function () {\r\n return this.buckets_.key_eq();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashSet.prototype.bucket = function (key) {\r\n return this.hash_function()(key) % this.buckets_.length();\r\n };\r\n HashSet.prototype.max_load_factor = function (z) {\r\n if (z === void 0) { z = null; }\r\n return this.buckets_.max_load_factor(z);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashSet.prototype.reserve = function (n) {\r\n this.buckets_.reserve(n);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashSet.prototype.rehash = function (n) {\r\n this.buckets_.rehash(n);\r\n };\r\n /* =========================================================\r\n ELEMENTS I/O\r\n - INSERT\r\n - POST-PROCESS\r\n - SWAP\r\n ============================================================\r\n INSERT\r\n --------------------------------------------------------- */\r\n HashSet.prototype._Insert_by_key = function (key) {\r\n // TEST WHETHER EXIST\r\n var it = this.find(key);\r\n if (it.equals(this.end()) === false)\r\n return new Pair_1.Pair(it, false);\r\n // INSERT\r\n this.data_.push(key);\r\n it = it.prev();\r\n // POST-PROCESS\r\n this._Handle_insert(it, it.next());\r\n return new Pair_1.Pair(it, true);\r\n };\r\n HashSet.prototype._Insert_by_hint = function (hint, key) {\r\n // FIND DUPLICATED KEY\r\n var it = this.find(key);\r\n if (it.equals(this.end()) === true) {\r\n // INSERT\r\n it = this.data_.insert(hint, key);\r\n // POST-PROCESS\r\n this._Handle_insert(it, it.next());\r\n }\r\n return it;\r\n };\r\n /* ---------------------------------------------------------\r\n POST-PROCESS\r\n --------------------------------------------------------- */\r\n HashSet.prototype._Handle_insert = function (first, last) {\r\n for (; !first.equals(last); first = first.next())\r\n this.buckets_.insert(first);\r\n };\r\n HashSet.prototype._Handle_erase = function (first, last) {\r\n for (; !first.equals(last); first = first.next())\r\n this.buckets_.erase(first);\r\n };\r\n return HashSet;\r\n}(UniqueSet_1.UniqueSet));\r\nexports.HashSet = HashSet;\r\n/**\r\n *\r\n */\r\n(function (HashSet) {\r\n // BODY\r\n HashSet.Iterator = SetElementList_1.SetElementList.Iterator;\r\n HashSet.ReverseIterator = SetElementList_1.SetElementList.ReverseIterator;\r\n})(HashSet = exports.HashSet || (exports.HashSet = {}));\r\nexports.HashSet = HashSet;\r\n//# sourceMappingURL=HashSet.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MapContainer = void 0;\r\nvar Container_1 = require(\"./Container\");\r\nvar NativeArrayIterator_1 = require(\"../../internal/iterator/disposable/NativeArrayIterator\");\r\n/**\r\n * Basic map container.\r\n *\r\n * @template Key Key type\r\n * @template T Mapped type\r\n * @template Unique Whether duplicated key is blocked or not\r\n * @template Source Derived type extending this {@link MapContainer}\r\n * @template IteratorT Iterator type\r\n * @template ReverseT Reverse iterator type\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar MapContainer = /** @class */ (function (_super) {\r\n __extends(MapContainer, _super);\r\n /* ---------------------------------------------------------\r\n CONSTURCTORS\r\n --------------------------------------------------------- */\r\n /**\r\n * Default Constructor.\r\n */\r\n function MapContainer(factory) {\r\n var _this = _super.call(this) || this;\r\n _this.data_ = factory(_this);\r\n return _this;\r\n }\r\n /**\r\n * @inheritDoc\r\n */\r\n MapContainer.prototype.assign = function (first, last) {\r\n // INSERT\r\n this.clear();\r\n this.insert(first, last);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n MapContainer.prototype.clear = function () {\r\n // TO BE ABSTRACT\r\n this.data_.clear();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n MapContainer.prototype.begin = function () {\r\n return this.data_.begin();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n MapContainer.prototype.end = function () {\r\n return this.data_.end();\r\n };\r\n /* ---------------------------------------------------------\r\n ELEMENTS\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n MapContainer.prototype.has = function (key) {\r\n return !this.find(key).equals(this.end());\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n MapContainer.prototype.size = function () {\r\n return this.data_.size();\r\n };\r\n /* =========================================================\r\n ELEMENTS I/O\r\n - INSERT\r\n - ERASE\r\n - UTILITY\r\n - POST-PROCESS\r\n ============================================================\r\n INSERT\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n MapContainer.prototype.push = function () {\r\n var items = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n items[_i] = arguments[_i];\r\n }\r\n // INSERT BY RANGE\r\n var first = new NativeArrayIterator_1.NativeArrayIterator(items, 0);\r\n var last = new NativeArrayIterator_1.NativeArrayIterator(items, items.length);\r\n this.insert(first, last);\r\n // RETURN SIZE\r\n return this.size();\r\n };\r\n MapContainer.prototype.insert = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (args.length === 1)\r\n return this.emplace(args[0].first, args[0].second);\r\n else if (args[0].next instanceof Function &&\r\n args[1].next instanceof Function)\r\n return this._Insert_by_range(args[0], args[1]);\r\n else\r\n return this.emplace_hint(args[0], args[1].first, args[1].second);\r\n };\r\n MapContainer.prototype.erase = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (args.length === 1 &&\r\n (args[0] instanceof this.end().constructor === false ||\r\n args[0].source() !== this))\r\n return this._Erase_by_key(args[0]);\r\n else if (args.length === 1)\r\n return this._Erase_by_range(args[0]);\r\n else\r\n return this._Erase_by_range(args[0], args[1]);\r\n };\r\n MapContainer.prototype._Erase_by_range = function (first, last) {\r\n if (last === void 0) { last = first.next(); }\r\n // ERASE\r\n var it = this.data_.erase(first, last);\r\n // POST-PROCESS\r\n this._Handle_erase(first, last);\r\n return it;\r\n };\r\n return MapContainer;\r\n}(Container_1.Container));\r\nexports.MapContainer = MapContainer;\r\n//# sourceMappingURL=MapContainer.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __read = (this && this.__read) || function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n};\r\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.UniqueMap = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std.base\r\n */\r\n//================================================================\r\nvar MapContainer_1 = require(\"./MapContainer\");\r\nvar ErrorGenerator_1 = require(\"../../internal/exception/ErrorGenerator\");\r\n/**\r\n * Basic map container blocking duplicated key.\r\n *\r\n * @template Key Key type\r\n * @template T Mapped type\r\n * @template Source Derived type extending this {@link UniqueMap}\r\n * @template IteratorT Iterator type\r\n * @template ReverseT Reverse iterator type\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar UniqueMap = /** @class */ (function (_super) {\r\n __extends(UniqueMap, _super);\r\n function UniqueMap() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /* ---------------------------------------------------------\r\n ACCESSORS\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n UniqueMap.prototype.count = function (key) {\r\n return this.find(key).equals(this.end()) ? 0 : 1;\r\n };\r\n /**\r\n * Get a value.\r\n *\r\n * @param key Key to search for.\r\n * @return The value mapped by the key.\r\n */\r\n UniqueMap.prototype.get = function (key) {\r\n var it = this.find(key);\r\n if (it.equals(this.end()) === true)\r\n throw ErrorGenerator_1.ErrorGenerator.key_nout_found(this, \"get\", key);\r\n return it.second;\r\n };\r\n /**\r\n * Take a value.\r\n *\r\n * Get a value, or set the value and returns it.\r\n *\r\n * @param key Key to search for.\r\n * @param generator Value generator when the matched key not found\r\n * @returns Value, anyway\r\n */\r\n UniqueMap.prototype.take = function (key, generator) {\r\n var it = this.find(key);\r\n return it.equals(this.end())\r\n ? this.emplace(key, generator()).first.second\r\n : it.second;\r\n };\r\n /**\r\n * Set a value with key.\r\n *\r\n * @param key Key to be mapped or search for.\r\n * @param val Value to insert or assign.\r\n */\r\n UniqueMap.prototype.set = function (key, val) {\r\n this.insert_or_assign(key, val);\r\n };\r\n UniqueMap.prototype.insert = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return _super.prototype.insert.apply(this, __spreadArray([], __read(args), false));\r\n };\r\n UniqueMap.prototype._Insert_by_range = function (first, last) {\r\n for (var it = first; !it.equals(last); it = it.next())\r\n this.emplace(it.value.first, it.value.second);\r\n };\r\n UniqueMap.prototype.insert_or_assign = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (args.length === 2) {\r\n return this._Insert_or_assign_with_key_value(args[0], args[1]);\r\n }\r\n else if (args.length === 3) {\r\n // INSERT OR ASSIGN AN ELEMENT\r\n return this._Insert_or_assign_with_hint(args[0], args[1], args[2]);\r\n }\r\n };\r\n UniqueMap.prototype._Insert_or_assign_with_key_value = function (key, value) {\r\n var ret = this.emplace(key, value);\r\n if (ret.second === false)\r\n ret.first.second = value;\r\n return ret;\r\n };\r\n UniqueMap.prototype._Insert_or_assign_with_hint = function (hint, key, value) {\r\n var ret = this.emplace_hint(hint, key, value);\r\n if (ret.second !== value)\r\n ret.second = value;\r\n return ret;\r\n };\r\n UniqueMap.prototype.extract = function (param) {\r\n if (param instanceof this.end().constructor)\r\n return this._Extract_by_iterator(param);\r\n else\r\n return this._Extract_by_key(param);\r\n };\r\n UniqueMap.prototype._Extract_by_key = function (key) {\r\n var it = this.find(key);\r\n if (it.equals(this.end()) === true)\r\n throw ErrorGenerator_1.ErrorGenerator.key_nout_found(this, \"extract\", key);\r\n var ret = it.value;\r\n this._Erase_by_range(it);\r\n return ret;\r\n };\r\n UniqueMap.prototype._Extract_by_iterator = function (it) {\r\n if (it.equals(this.end()) === true)\r\n return this.end();\r\n this._Erase_by_range(it);\r\n return it;\r\n };\r\n UniqueMap.prototype._Erase_by_key = function (key) {\r\n var it = this.find(key);\r\n if (it.equals(this.end()) === true)\r\n return 0;\r\n this._Erase_by_range(it);\r\n return 1;\r\n };\r\n /* ---------------------------------------------------------\r\n UTILITY\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n UniqueMap.prototype.merge = function (source) {\r\n for (var it = source.begin(); !it.equals(source.end());)\r\n if (this.has(it.first) === false) {\r\n this.insert(it.value);\r\n it = source.erase(it);\r\n }\r\n else\r\n it = it.next();\r\n };\r\n return UniqueMap;\r\n}(MapContainer_1.MapContainer));\r\nexports.UniqueMap = UniqueMap;\r\n//# sourceMappingURL=UniqueMap.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __read = (this && this.__read) || function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MapElementList = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std.internal\r\n */\r\n//================================================================\r\nvar ListContainer_1 = require(\"../linear/ListContainer\");\r\nvar ListIterator_1 = require(\"../../iterator/ListIterator\");\r\nvar ReverseIterator_1 = require(\"../../iterator/ReverseIterator\");\r\n/**\r\n * Doubly Linked List storing map elements.\r\n *\r\n * @template Key Key type\r\n * @template T Mapped type\r\n * @template Unique Whether duplicated key is blocked or not\r\n * @template Source Source type\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar MapElementList = /** @class */ (function (_super) {\r\n __extends(MapElementList, _super);\r\n /* ---------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------- */\r\n function MapElementList(associative) {\r\n var _this = _super.call(this) || this;\r\n _this.associative_ = associative;\r\n return _this;\r\n }\r\n MapElementList.prototype._Create_iterator = function (prev, next, val) {\r\n return MapElementList.Iterator.create(this, prev, next, val);\r\n };\r\n /**\r\n * @internal\r\n */\r\n MapElementList._Swap_associative = function (x, y) {\r\n var _a;\r\n _a = __read([y.associative_, x.associative_], 2), x.associative_ = _a[0], y.associative_ = _a[1];\r\n };\r\n /* ---------------------------------------------------------\r\n ACCESSORS\r\n --------------------------------------------------------- */\r\n MapElementList.prototype.associative = function () {\r\n return this.associative_;\r\n };\r\n return MapElementList;\r\n}(ListContainer_1.ListContainer));\r\nexports.MapElementList = MapElementList;\r\n/**\r\n *\r\n */\r\n(function (MapElementList) {\r\n /**\r\n * Iterator of map container storing elements in a list.\r\n *\r\n * @template Key Key type\r\n * @template T Mapped type\r\n * @template Unique Whether duplicated key is blocked or not\r\n * @template Source Source container type\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\n var Iterator = /** @class */ (function (_super) {\r\n __extends(Iterator, _super);\r\n /* ---------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------- */\r\n function Iterator(list, prev, next, val) {\r\n var _this = _super.call(this, prev, next, val) || this;\r\n _this.list_ = list;\r\n return _this;\r\n }\r\n /**\r\n * @internal\r\n */\r\n Iterator.create = function (list, prev, next, val) {\r\n return new Iterator(list, prev, next, val);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n Iterator.prototype.reverse = function () {\r\n return new ReverseIterator(this);\r\n };\r\n /* ---------------------------------------------------------\r\n ACCESSORS\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n Iterator.prototype.source = function () {\r\n return this.list_.associative();\r\n };\r\n Object.defineProperty(Iterator.prototype, \"first\", {\r\n /**\r\n * @inheritDoc\r\n */\r\n get: function () {\r\n return this.value.first;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Iterator.prototype, \"second\", {\r\n /**\r\n * @inheritDoc\r\n */\r\n get: function () {\r\n return this.value.second;\r\n },\r\n /**\r\n * @inheritDoc\r\n */\r\n set: function (val) {\r\n this.value.second = val;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return Iterator;\r\n }(ListIterator_1.ListIterator));\r\n MapElementList.Iterator = Iterator;\r\n /**\r\n * Reverse iterator of map container storing elements a list.\r\n *\r\n * @template Key Key type\r\n * @template T Mapped type\r\n * @template Unique Whether duplicated key is blocked or not\r\n * @template Source Source container type\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\n var ReverseIterator = /** @class */ (function (_super) {\r\n __extends(ReverseIterator, _super);\r\n function ReverseIterator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /* ---------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------- */\r\n ReverseIterator.prototype._Create_neighbor = function (base) {\r\n return new ReverseIterator(base);\r\n };\r\n Object.defineProperty(ReverseIterator.prototype, \"first\", {\r\n /* ---------------------------------------------------------\r\n ACCESSORS\r\n --------------------------------------------------------- */\r\n /**\r\n * Get the first, key element.\r\n *\r\n * @return The first element.\r\n */\r\n get: function () {\r\n return this.base_.first;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ReverseIterator.prototype, \"second\", {\r\n /**\r\n * Get the second, stored element.\r\n *\r\n * @return The second element.\r\n */\r\n get: function () {\r\n return this.base_.second;\r\n },\r\n /**\r\n * Set the second, stored element.\r\n *\r\n * @param val The value to set.\r\n */\r\n set: function (val) {\r\n this.base_.second = val;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return ReverseIterator;\r\n }(ReverseIterator_1.ReverseIterator));\r\n MapElementList.ReverseIterator = ReverseIterator;\r\n})(MapElementList = exports.MapElementList || (exports.MapElementList = {}));\r\nexports.MapElementList = MapElementList;\r\n//# sourceMappingURL=MapElementList.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __read = (this && this.__read) || function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n};\r\nvar __values = (this && this.__values) || function(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MapHashBuckets = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std.internal\r\n */\r\n//================================================================\r\nvar HashBuckets_1 = require(\"./HashBuckets\");\r\n/**\r\n * Hash buckets for map containers.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar MapHashBuckets = /** @class */ (function (_super) {\r\n __extends(MapHashBuckets, _super);\r\n /* ---------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------- */\r\n /**\r\n * Initializer Constructor\r\n *\r\n * @param source Source map container\r\n * @param hasher Hash function\r\n * @param pred Equality function\r\n */\r\n function MapHashBuckets(source, hasher, pred) {\r\n var _this = _super.call(this, fetcher, hasher) || this;\r\n _this.source_ = source;\r\n _this.key_eq_ = pred;\r\n return _this;\r\n }\r\n /**\r\n * @internal\r\n */\r\n MapHashBuckets._Swap_source = function (x, y) {\r\n var _a;\r\n _a = __read([y.source_, x.source_], 2), x.source_ = _a[0], y.source_ = _a[1];\r\n };\r\n /* ---------------------------------------------------------\r\n FINDERS\r\n --------------------------------------------------------- */\r\n MapHashBuckets.prototype.key_eq = function () {\r\n return this.key_eq_;\r\n };\r\n MapHashBuckets.prototype.find = function (key) {\r\n var e_1, _a;\r\n var index = this.hash_function()(key) % this.length();\r\n var bucket = this.at(index);\r\n try {\r\n for (var bucket_1 = __values(bucket), bucket_1_1 = bucket_1.next(); !bucket_1_1.done; bucket_1_1 = bucket_1.next()) {\r\n var it = bucket_1_1.value;\r\n if (this.key_eq_(it.first, key))\r\n return it;\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (bucket_1_1 && !bucket_1_1.done && (_a = bucket_1.return)) _a.call(bucket_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return this.source_.end();\r\n };\r\n return MapHashBuckets;\r\n}(HashBuckets_1.HashBuckets));\r\nexports.MapHashBuckets = MapHashBuckets;\r\nfunction fetcher(elem) {\r\n return elem.first;\r\n}\r\n//# sourceMappingURL=MapHashBuckets.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Entry = void 0;\r\nvar hash_1 = require(\"../functional/hash\");\r\nvar comparators_1 = require(\"../functional/comparators\");\r\n/**\r\n * Entry for mapping.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar Entry = /** @class */ (function () {\r\n /**\r\n * Intializer Constructor.\r\n *\r\n * @param first The first, key element.\r\n * @param second The second, mapped element.\r\n */\r\n function Entry(first, second) {\r\n this.first = first;\r\n this.second = second;\r\n }\r\n /**\r\n * @inheritDoc\r\n */\r\n Entry.prototype.equals = function (obj) {\r\n return (0, comparators_1.equal_to)(this.first, obj.first);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n Entry.prototype.less = function (obj) {\r\n return (0, comparators_1.less)(this.first, obj.first);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n Entry.prototype.hashCode = function () {\r\n return (0, hash_1.hash)(this.first);\r\n };\r\n return Entry;\r\n}());\r\nexports.Entry = Entry;\r\n//# sourceMappingURL=Entry.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __read = (this && this.__read) || function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n};\r\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.HashMap = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std\r\n */\r\n//================================================================\r\nvar UniqueMap_1 = require(\"../base/container/UniqueMap\");\r\nvar IHashContainer_1 = require(\"../internal/container/associative/IHashContainer\");\r\nvar MapElementList_1 = require(\"../internal/container/associative/MapElementList\");\r\nvar MapHashBuckets_1 = require(\"../internal/hash/MapHashBuckets\");\r\nvar Entry_1 = require(\"../utility/Entry\");\r\nvar Pair_1 = require(\"../utility/Pair\");\r\n/**\r\n * Unique-key Map based on Hash buckets.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar HashMap = /** @class */ (function (_super) {\r\n __extends(HashMap, _super);\r\n function HashMap() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var _this = _super.call(this, function (thisArg) { return new MapElementList_1.MapElementList(thisArg); }) || this;\r\n IHashContainer_1.IHashContainer.construct.apply(IHashContainer_1.IHashContainer, __spreadArray([_this,\r\n HashMap,\r\n function (hash, pred) {\r\n _this.buckets_ = new MapHashBuckets_1.MapHashBuckets(_this, hash, pred);\r\n }], __read(args), false));\r\n return _this;\r\n }\r\n /* ---------------------------------------------------------\r\n ASSIGN & CLEAR\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n HashMap.prototype.clear = function () {\r\n this.buckets_.clear();\r\n _super.prototype.clear.call(this);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashMap.prototype.swap = function (obj) {\r\n var _a, _b;\r\n // SWAP CONTENTS\r\n _a = __read([obj.data_, this.data_], 2), this.data_ = _a[0], obj.data_ = _a[1];\r\n MapElementList_1.MapElementList._Swap_associative(this.data_, obj.data_);\r\n // SWAP BUCKETS\r\n MapHashBuckets_1.MapHashBuckets._Swap_source(this.buckets_, obj.buckets_);\r\n _b = __read([obj.buckets_, this.buckets_], 2), this.buckets_ = _b[0], obj.buckets_ = _b[1];\r\n };\r\n /* =========================================================\r\n ACCESSORS\r\n - MEMBER\r\n - HASH\r\n ============================================================\r\n MEMBER\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n HashMap.prototype.find = function (key) {\r\n return this.buckets_.find(key);\r\n };\r\n HashMap.prototype.begin = function (index) {\r\n if (index === void 0) { index = null; }\r\n if (index === null)\r\n return _super.prototype.begin.call(this);\r\n else\r\n return this.buckets_.at(index)[0];\r\n };\r\n HashMap.prototype.end = function (index) {\r\n if (index === void 0) { index = null; }\r\n if (index === null)\r\n return _super.prototype.end.call(this);\r\n else {\r\n var bucket = this.buckets_.at(index);\r\n return bucket[bucket.length - 1].next();\r\n }\r\n };\r\n HashMap.prototype.rbegin = function (index) {\r\n if (index === void 0) { index = null; }\r\n return this.end(index).reverse();\r\n };\r\n HashMap.prototype.rend = function (index) {\r\n if (index === void 0) { index = null; }\r\n return this.begin(index).reverse();\r\n };\r\n /* ---------------------------------------------------------\r\n HASH\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n HashMap.prototype.bucket_count = function () {\r\n return this.buckets_.length();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashMap.prototype.bucket_size = function (index) {\r\n return this.buckets_.at(index).length;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashMap.prototype.load_factor = function () {\r\n return this.buckets_.load_factor();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashMap.prototype.hash_function = function () {\r\n return this.buckets_.hash_function();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashMap.prototype.key_eq = function () {\r\n return this.buckets_.key_eq();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashMap.prototype.bucket = function (key) {\r\n return this.hash_function()(key) % this.buckets_.length();\r\n };\r\n HashMap.prototype.max_load_factor = function (z) {\r\n if (z === void 0) { z = null; }\r\n return this.buckets_.max_load_factor(z);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashMap.prototype.reserve = function (n) {\r\n this.buckets_.reserve(n);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashMap.prototype.rehash = function (n) {\r\n this.buckets_.rehash(n);\r\n };\r\n /* =========================================================\r\n ELEMENTS I/O\r\n - INSERT\r\n - POST-PROCESS\r\n ============================================================\r\n INSERT\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n HashMap.prototype.emplace = function (key, val) {\r\n // TEST WHETHER EXIST\r\n var it = this.find(key);\r\n if (it.equals(this.end()) === false)\r\n return new Pair_1.Pair(it, false);\r\n // INSERT\r\n this.data_.push(new Entry_1.Entry(key, val));\r\n it = it.prev();\r\n // POST-PROCESS\r\n this._Handle_insert(it, it.next());\r\n return new Pair_1.Pair(it, true);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashMap.prototype.emplace_hint = function (hint, key, val) {\r\n // FIND DUPLICATED KEY\r\n var it = this.find(key);\r\n if (it.equals(this.end()) === true) {\r\n // INSERT\r\n it = this.data_.insert(hint, new Entry_1.Entry(key, val));\r\n // POST-PROCESS\r\n this._Handle_insert(it, it.next());\r\n }\r\n return it;\r\n };\r\n /* ---------------------------------------------------------\r\n POST-PROCESS\r\n --------------------------------------------------------- */\r\n HashMap.prototype._Handle_insert = function (first, last) {\r\n for (; !first.equals(last); first = first.next())\r\n this.buckets_.insert(first);\r\n };\r\n HashMap.prototype._Handle_erase = function (first, last) {\r\n for (; !first.equals(last); first = first.next())\r\n this.buckets_.erase(first);\r\n };\r\n return HashMap;\r\n}(UniqueMap_1.UniqueMap));\r\nexports.HashMap = HashMap;\r\n/**\r\n *\r\n */\r\n(function (HashMap) {\r\n // BODY\r\n HashMap.Iterator = MapElementList_1.MapElementList.Iterator;\r\n HashMap.ReverseIterator = MapElementList_1.MapElementList.ReverseIterator;\r\n})(HashMap = exports.HashMap || (exports.HashMap = {}));\r\nexports.HashMap = HashMap;\r\n//# sourceMappingURL=HashMap.js.map","\"use strict\";\r\nvar __values = (this && this.__values) || function (o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar HashSet_1 = require(\"tstl/container/HashSet\");\r\nvar HashMap_1 = require(\"tstl/container/HashMap\");\r\nvar EventTarget = /** @class */ (function () {\r\n function EventTarget() {\r\n this.listeners_ = new HashMap_1.HashMap();\r\n this.created_at_ = new Date();\r\n }\r\n EventTarget.prototype.dispatchEvent = function (event) {\r\n var e_1, _a;\r\n // FIND LISTENERS\r\n var it = this.listeners_.find(event.type);\r\n if (it.equals(this.listeners_.end()))\r\n return;\r\n // SET DEFAULT ARGUMENTS\r\n event.target = this;\r\n event.timeStamp = new Date().getTime() - this.created_at_.getTime();\r\n try {\r\n // CALL THE LISTENERS\r\n for (var _b = __values(it.second), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var listener = _c.value;\r\n listener(event);\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n };\r\n EventTarget.prototype.addEventListener = function (type, listener) {\r\n var it = this.listeners_.find(type);\r\n if (it.equals(this.listeners_.end()))\r\n it = this.listeners_.emplace(type, new HashSet_1.HashSet()).first;\r\n it.second.insert(listener);\r\n };\r\n EventTarget.prototype.removeEventListener = function (type, listener) {\r\n var it = this.listeners_.find(type);\r\n if (it.equals(this.listeners_.end()))\r\n return;\r\n it.second.erase(listener);\r\n if (it.second.empty())\r\n this.listeners_.erase(it);\r\n };\r\n return EventTarget;\r\n}());\r\nexports.EventTarget = EventTarget;\r\n//# sourceMappingURL=EventTarget.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Event = /** @class */ (function () {\r\n function Event(type, init) {\r\n this.type = type;\r\n if (init)\r\n Object.assign(this, init);\r\n }\r\n return Event;\r\n}());\r\nexports.Event = Event;\r\n//# sourceMappingURL=Event.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n }\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Event_1 = require(\"./Event\");\r\nvar CloseEvent = /** @class */ (function (_super) {\r\n __extends(CloseEvent, _super);\r\n function CloseEvent(type, init) {\r\n return _super.call(this, type, init) || this;\r\n }\r\n return CloseEvent;\r\n}(Event_1.Event));\r\nexports.CloseEvent = CloseEvent;\r\n//# sourceMappingURL=CloseEvent.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n }\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Event_1 = require(\"./Event\");\r\nvar MessageEvent = /** @class */ (function (_super) {\r\n __extends(MessageEvent, _super);\r\n function MessageEvent(type, init) {\r\n return _super.call(this, type, init) || this;\r\n }\r\n return MessageEvent;\r\n}(Event_1.Event));\r\nexports.MessageEvent = MessageEvent;\r\n//# sourceMappingURL=MessageEvent.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n }\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Event_1 = require(\"./Event\");\r\nvar ErrorEvent = /** @class */ (function (_super) {\r\n __extends(ErrorEvent, _super);\r\n function ErrorEvent(type, init) {\r\n return _super.call(this, type, init) || this;\r\n }\r\n return ErrorEvent;\r\n}(Event_1.Event));\r\nexports.ErrorEvent = ErrorEvent;\r\n//# sourceMappingURL=ErrorEvent.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n }\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar websocket_1 = require(\"websocket\");\r\nvar EventTarget_1 = require(\"./events/EventTarget\");\r\nvar Event_1 = require(\"./events/Event\");\r\nvar CloseEvent_1 = require(\"./events/CloseEvent\");\r\nvar MessageEvent_1 = require(\"./events/MessageEvent\");\r\nvar ErrorEvent_1 = require(\"./events/ErrorEvent\");\r\nvar WebSocket = /** @class */ (function (_super) {\r\n __extends(WebSocket, _super);\r\n /* ----------------------------------------------------------------\r\n CONSTRUCTORS\r\n ---------------------------------------------------------------- */\r\n function WebSocket(url, protocols) {\r\n var _this = _super.call(this) || this;\r\n _this.on_ = {};\r\n _this.state_ = WebSocket.CONNECTING;\r\n //----\r\n // CLIENT\r\n //----\r\n // PREPARE SOCKET\r\n _this.client_ = new websocket_1.client();\r\n _this.client_.on(\"connect\", _this._Handle_connect.bind(_this));\r\n _this.client_.on(\"connectFailed\", _this._Handle_error.bind(_this));\r\n if (typeof protocols === \"string\")\r\n protocols = [protocols];\r\n // DO CONNECT\r\n _this.client_.connect(url, protocols);\r\n return _this;\r\n }\r\n WebSocket.prototype.close = function (code, reason) {\r\n this.state_ = WebSocket.CLOSING;\r\n if (code === undefined)\r\n this.connection_.sendCloseFrame();\r\n else\r\n this.connection_.sendCloseFrame(code, reason, true);\r\n };\r\n /* ================================================================\r\n ACCESSORS\r\n - SENDER\r\n - PROPERTIES\r\n - LISTENERS\r\n ===================================================================\r\n SENDER\r\n ---------------------------------------------------------------- */\r\n WebSocket.prototype.send = function (data) {\r\n if (typeof data.valueOf() === \"string\")\r\n this.connection_.sendUTF(data);\r\n else {\r\n var buffer = void 0;\r\n if (data instanceof Buffer)\r\n buffer = data;\r\n else if (data instanceof Blob)\r\n buffer = new Buffer(data, \"blob\");\r\n else if (data.buffer)\r\n buffer = new Buffer(data.buffer);\r\n else\r\n buffer = new Buffer(data);\r\n this.connection_.sendBytes(buffer);\r\n }\r\n };\r\n Object.defineProperty(WebSocket.prototype, \"url\", {\r\n /* ----------------------------------------------------------------\r\n PROPERTIES\r\n ---------------------------------------------------------------- */\r\n get: function () {\r\n return this.client_.url.href;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebSocket.prototype, \"protocol\", {\r\n get: function () {\r\n return this.client_.protocols\r\n ? this.client_.protocols[0]\r\n : \"\";\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebSocket.prototype, \"extensions\", {\r\n get: function () {\r\n return this.connection_ && this.connection_.extensions\r\n ? this.connection_.extensions[0].name\r\n : \"\";\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebSocket.prototype, \"readyState\", {\r\n get: function () {\r\n return this.state_;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebSocket.prototype, \"bufferedAmount\", {\r\n get: function () {\r\n return this.connection_.bytesWaitingToFlush;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebSocket.prototype, \"binaryType\", {\r\n get: function () {\r\n return \"arraybuffer\";\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebSocket.prototype, \"onopen\", {\r\n /* ----------------------------------------------------------------\r\n LISTENERS\r\n ---------------------------------------------------------------- */\r\n get: function () {\r\n return this.on_.open;\r\n },\r\n set: function (listener) {\r\n this._Set_on(\"open\", listener);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebSocket.prototype, \"onclose\", {\r\n get: function () {\r\n return this.on_.close;\r\n },\r\n set: function (listener) {\r\n this._Set_on(\"close\", listener);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebSocket.prototype, \"onmessage\", {\r\n get: function () {\r\n return this.on_.message;\r\n },\r\n set: function (listener) {\r\n this._Set_on(\"message\", listener);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebSocket.prototype, \"onerror\", {\r\n get: function () {\r\n return this.on_.error;\r\n },\r\n set: function (listener) {\r\n this._Set_on(\"error\", listener);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @hidden\r\n */\r\n WebSocket.prototype._Set_on = function (type, listener) {\r\n if (this.on_[type])\r\n this.removeEventListener(type, this.on_[type]);\r\n this.addEventListener(type, listener);\r\n this.on_[type] = listener;\r\n };\r\n /* ----------------------------------------------------------------\r\n SOCKET HANDLERS\r\n ---------------------------------------------------------------- */\r\n /**\r\n * @hidden\r\n */\r\n WebSocket.prototype._Handle_connect = function (connection) {\r\n this.connection_ = connection;\r\n this.state_ = WebSocket.OPEN;\r\n this.connection_.on(\"message\", this._Handle_message.bind(this));\r\n this.connection_.on(\"error\", this._Handle_error.bind(this));\r\n this.connection_.on(\"close\", this._Handle_close.bind(this));\r\n var event = new Event_1.Event(\"open\", EVENT_INIT);\r\n this.dispatchEvent(event);\r\n };\r\n /**\r\n * @hidden\r\n */\r\n WebSocket.prototype._Handle_close = function (code, reason) {\r\n var event = new CloseEvent_1.CloseEvent(\"close\", __assign({}, EVENT_INIT, { code: code, reason: reason }));\r\n this.state_ = WebSocket.CLOSED;\r\n this.dispatchEvent(event);\r\n };\r\n /**\r\n * @hidden\r\n */\r\n WebSocket.prototype._Handle_message = function (message) {\r\n var event = new MessageEvent_1.MessageEvent(\"message\", __assign({}, EVENT_INIT, { data: message.binaryData\r\n ? message.binaryData\r\n : message.utf8Data }));\r\n this.dispatchEvent(event);\r\n };\r\n /**\r\n * @hidden\r\n */\r\n WebSocket.prototype._Handle_error = function (error) {\r\n var event = new ErrorEvent_1.ErrorEvent(\"error\", __assign({}, EVENT_INIT, { error: error, message: error.message }));\r\n if (this.state_ === WebSocket.CONNECTING)\r\n this.state_ = WebSocket.CLOSED;\r\n this.dispatchEvent(event);\r\n };\r\n return WebSocket;\r\n}(EventTarget_1.EventTarget));\r\nexports.WebSocket = WebSocket;\r\n(function (WebSocket) {\r\n WebSocket.CONNECTING = 0;\r\n WebSocket.OPEN = 1;\r\n WebSocket.CLOSING = 2;\r\n WebSocket.CLOSED = 3;\r\n})(WebSocket = exports.WebSocket || (exports.WebSocket = {}));\r\nexports.WebSocket = WebSocket;\r\nvar EVENT_INIT = {\r\n bubbles: false,\r\n cancelable: false\r\n};\r\n//# sourceMappingURL=WebSocket.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar node_1 = require(\"tstl/utility/node\");\r\nif (node_1.is_node())\r\n global.WebSocket = require(\"./WebSocket\").WebSocket;\r\n//# sourceMappingURL=index.js.map","const {bech32, hex, utf8} = require('@scure/base')\n\n// defaults for encode; default timestamp is current time at call\nconst DEFAULTNETWORK = {\n // default network is bitcoin\n bech32: 'bc',\n pubKeyHash: 0x00,\n scriptHash: 0x05,\n validWitnessVersions: [0]\n}\nconst TESTNETWORK = {\n bech32: 'tb',\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n validWitnessVersions: [0]\n}\nconst REGTESTNETWORK = {\n bech32: 'bcrt',\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n validWitnessVersions: [0]\n}\nconst SIMNETWORK = {\n bech32: 'sb',\n pubKeyHash: 0x3f,\n scriptHash: 0x7b,\n validWitnessVersions: [0]\n}\n\nconst FEATUREBIT_ORDER = [\n 'option_data_loss_protect',\n 'initial_routing_sync',\n 'option_upfront_shutdown_script',\n 'gossip_queries',\n 'var_onion_optin',\n 'gossip_queries_ex',\n 'option_static_remotekey',\n 'payment_secret',\n 'basic_mpp',\n 'option_support_large_channel'\n]\n\nconst DIVISORS = {\n m: BigInt(1e3),\n u: BigInt(1e6),\n n: BigInt(1e9),\n p: BigInt(1e12)\n}\n\nconst MAX_MILLISATS = BigInt('2100000000000000000')\n\nconst MILLISATS_PER_BTC = BigInt(1e11)\n\nconst TAGCODES = {\n payment_hash: 1,\n payment_secret: 16,\n description: 13,\n payee: 19,\n description_hash: 23, // commit to longer descriptions (used by lnurl-pay)\n expiry: 6, // default: 3600 (1 hour)\n min_final_cltv_expiry: 24, // default: 9\n fallback_address: 9,\n route_hint: 3, // for extra routing info (private etc.)\n feature_bits: 5,\n metadata: 27\n}\n\n// reverse the keys and values of TAGCODES and insert into TAGNAMES\nconst TAGNAMES = {}\nfor (let i = 0, keys = Object.keys(TAGCODES); i < keys.length; i++) {\n const currentName = keys[i]\n const currentCode = TAGCODES[keys[i]].toString()\n TAGNAMES[currentCode] = currentName\n}\n\nconst TAGPARSERS = {\n 1: words => hex.encode(bech32.fromWordsUnsafe(words)), // 256 bits\n 16: words => hex.encode(bech32.fromWordsUnsafe(words)), // 256 bits\n 13: words => utf8.encode(bech32.fromWordsUnsafe(words)), // string variable length\n 19: words => hex.encode(bech32.fromWordsUnsafe(words)), // 264 bits\n 23: words => hex.encode(bech32.fromWordsUnsafe(words)), // 256 bits\n 27: words => hex.encode(bech32.fromWordsUnsafe(words)), // variable\n 6: wordsToIntBE, // default: 3600 (1 hour)\n 24: wordsToIntBE, // default: 9\n 3: routingInfoParser, // for extra routing info (private etc.)\n 5: featureBitsParser // keep feature bits as array of 5 bit words\n}\n\nfunction getUnknownParser(tagCode) {\n return words => ({\n tagCode: parseInt(tagCode),\n words: bech32.encode('unknown', words, Number.MAX_SAFE_INTEGER)\n })\n}\n\nfunction wordsToIntBE(words) {\n return words.reverse().reduce((total, item, index) => {\n return total + item * Math.pow(32, index)\n }, 0)\n}\n\n// first convert from words to buffer, trimming padding where necessary\n// parse in 51 byte chunks. See encoder for details.\nfunction routingInfoParser(words) {\n const routes = []\n let pubkey,\n shortChannelId,\n feeBaseMSats,\n feeProportionalMillionths,\n cltvExpiryDelta\n let routesBuffer = bech32.fromWordsUnsafe(words)\n while (routesBuffer.length > 0) {\n pubkey = hex.encode(routesBuffer.slice(0, 33)) // 33 bytes\n shortChannelId = hex.encode(routesBuffer.slice(33, 41)) // 8 bytes\n feeBaseMSats = parseInt(hex.encode(routesBuffer.slice(41, 45)), 16) // 4 bytes\n feeProportionalMillionths = parseInt(\n hex.encode(routesBuffer.slice(45, 49)),\n 16\n ) // 4 bytes\n cltvExpiryDelta = parseInt(hex.encode(routesBuffer.slice(49, 51)), 16) // 2 bytes\n\n routesBuffer = routesBuffer.slice(51)\n\n routes.push({\n pubkey,\n short_channel_id: shortChannelId,\n fee_base_msat: feeBaseMSats,\n fee_proportional_millionths: feeProportionalMillionths,\n cltv_expiry_delta: cltvExpiryDelta\n })\n }\n return routes\n}\n\nfunction featureBitsParser(words) {\n const bools = words\n .slice()\n .reverse()\n .map(word => [\n !!(word & 0b1),\n !!(word & 0b10),\n !!(word & 0b100),\n !!(word & 0b1000),\n !!(word & 0b10000)\n ])\n .reduce((finalArr, itemArr) => finalArr.concat(itemArr), [])\n while (bools.length < FEATUREBIT_ORDER.length * 2) {\n bools.push(false)\n }\n\n const featureBits = {}\n\n FEATUREBIT_ORDER.forEach((featureName, index) => {\n let status\n if (bools[index * 2]) {\n status = 'required'\n } else if (bools[index * 2 + 1]) {\n status = 'supported'\n } else {\n status = 'unsupported'\n }\n featureBits[featureName] = status\n })\n\n const extraBits = bools.slice(FEATUREBIT_ORDER.length * 2)\n featureBits.extra_bits = {\n start_bit: FEATUREBIT_ORDER.length * 2,\n bits: extraBits,\n has_required: extraBits.reduce(\n (result, bit, index) =>\n index % 2 !== 0 ? result || false : result || bit,\n false\n )\n }\n\n return featureBits\n}\n\nfunction hrpToMillisat(hrpString, outputString) {\n let divisor, value\n if (hrpString.slice(-1).match(/^[munp]$/)) {\n divisor = hrpString.slice(-1)\n value = hrpString.slice(0, -1)\n } else if (hrpString.slice(-1).match(/^[^munp0-9]$/)) {\n throw new Error('Not a valid multiplier for the amount')\n } else {\n value = hrpString\n }\n\n if (!value.match(/^\\d+$/))\n throw new Error('Not a valid human readable amount')\n\n const valueBN = BigInt(value)\n\n const millisatoshisBN = divisor\n ? (valueBN * MILLISATS_PER_BTC) / DIVISORS[divisor]\n : valueBN * MILLISATS_PER_BTC\n\n if (\n (divisor === 'p' && !(valueBN % BigInt(10) === BigInt(0))) ||\n millisatoshisBN > MAX_MILLISATS\n ) {\n throw new Error('Amount is outside of valid range')\n }\n\n return outputString ? millisatoshisBN.toString() : millisatoshisBN\n}\n\n// decode will only have extra comments that aren't covered in encode comments.\n// also if anything is hard to read I'll comment.\nfunction decode(paymentRequest, network) {\n if (typeof paymentRequest !== 'string')\n throw new Error('Lightning Payment Request must be string')\n if (paymentRequest.slice(0, 2).toLowerCase() !== 'ln')\n throw new Error('Not a proper lightning payment request')\n\n const sections = []\n const decoded = bech32.decode(paymentRequest, Number.MAX_SAFE_INTEGER)\n paymentRequest = paymentRequest.toLowerCase()\n const prefix = decoded.prefix\n let words = decoded.words\n let letters = paymentRequest.slice(prefix.length + 1)\n let sigWords = words.slice(-104)\n words = words.slice(0, -104)\n\n // Without reverse lookups, can't say that the multipier at the end must\n // have a number before it, so instead we parse, and if the second group\n // doesn't have anything, there's a good chance the last letter of the\n // coin type got captured by the third group, so just re-regex without\n // the number.\n let prefixMatches = prefix.match(/^ln(\\S+?)(\\d*)([a-zA-Z]?)$/)\n if (prefixMatches && !prefixMatches[2])\n prefixMatches = prefix.match(/^ln(\\S+)$/)\n if (!prefixMatches) {\n throw new Error('Not a proper lightning payment request')\n }\n\n // \"ln\" section\n sections.push({\n name: 'lightning_network',\n letters: 'ln'\n })\n\n // \"bc\" section\n const bech32Prefix = prefixMatches[1]\n let coinNetwork\n if (!network) {\n switch (bech32Prefix) {\n case DEFAULTNETWORK.bech32:\n coinNetwork = DEFAULTNETWORK\n break\n case TESTNETWORK.bech32:\n coinNetwork = TESTNETWORK\n break\n case REGTESTNETWORK.bech32:\n coinNetwork = REGTESTNETWORK\n break\n case SIMNETWORK.bech32:\n coinNetwork = SIMNETWORK\n break\n }\n } else {\n if (\n network.bech32 === undefined ||\n network.pubKeyHash === undefined ||\n network.scriptHash === undefined ||\n !Array.isArray(network.validWitnessVersions)\n )\n throw new Error('Invalid network')\n coinNetwork = network\n }\n if (!coinNetwork || coinNetwork.bech32 !== bech32Prefix) {\n throw new Error('Unknown coin bech32 prefix')\n }\n sections.push({\n name: 'coin_network',\n letters: bech32Prefix,\n value: coinNetwork\n })\n\n // amount section\n const value = prefixMatches[2]\n let millisatoshis\n if (value) {\n const divisor = prefixMatches[3]\n millisatoshis = hrpToMillisat(value + divisor, true)\n sections.push({\n name: 'amount',\n letters: prefixMatches[2] + prefixMatches[3],\n value: millisatoshis\n })\n } else {\n millisatoshis = null\n }\n\n // \"1\" separator\n sections.push({\n name: 'separator',\n letters: '1'\n })\n\n // timestamp\n const timestamp = wordsToIntBE(words.slice(0, 7))\n words = words.slice(7) // trim off the left 7 words\n sections.push({\n name: 'timestamp',\n letters: letters.slice(0, 7),\n value: timestamp\n })\n letters = letters.slice(7)\n\n let tagName, parser, tagLength, tagWords\n // we have no tag count to go on, so just keep hacking off words\n // until we have none.\n while (words.length > 0) {\n const tagCode = words[0].toString()\n tagName = TAGNAMES[tagCode] || 'unknown_tag'\n parser = TAGPARSERS[tagCode] || getUnknownParser(tagCode)\n words = words.slice(1)\n\n tagLength = wordsToIntBE(words.slice(0, 2))\n words = words.slice(2)\n\n tagWords = words.slice(0, tagLength)\n words = words.slice(tagLength)\n\n sections.push({\n name: tagName,\n tag: letters[0],\n letters: letters.slice(0, 1 + 2 + tagLength),\n value: parser(tagWords) // see: parsers for more comments\n })\n letters = letters.slice(1 + 2 + tagLength)\n }\n\n // signature\n sections.push({\n name: 'signature',\n letters: letters.slice(0, 104),\n value: hex.encode(bech32.fromWordsUnsafe(sigWords))\n })\n letters = letters.slice(104)\n\n // checksum\n sections.push({\n name: 'checksum',\n letters: letters\n })\n\n let result = {\n paymentRequest,\n sections,\n\n get expiry() {\n let exp = sections.find(s => s.name === 'expiry')\n if (exp) return getValue('timestamp') + exp.value\n },\n\n get route_hints() {\n return sections.filter(s => s.name === 'route_hint').map(s => s.value)\n }\n }\n\n for (let name in TAGCODES) {\n if (name === 'route_hint') {\n // route hints can be multiple, so this won't work for them\n continue\n }\n\n Object.defineProperty(result, name, {\n get() {\n return getValue(name)\n }\n })\n }\n\n return result\n\n function getValue(name) {\n let section = sections.find(s => s.name === name)\n return section ? section.value : undefined\n }\n}\n\nmodule.exports = {\n decode,\n hrpToMillisat\n}\n","// src/events/index.ts\nimport { getEventHash } from \"nostr-tools\";\nimport EventEmitter2 from \"eventemitter3\";\n\n// src/zap/index.ts\nimport EventEmitter from \"eventemitter3\";\nimport { nip57 } from \"nostr-tools\";\nimport { bech32 } from \"@scure/base\";\nvar Zap = class extends EventEmitter {\n ndk;\n zappedEvent;\n zappedUser;\n constructor(args) {\n super();\n this.ndk = args.ndk;\n this.zappedEvent = args.zappedEvent;\n this.zappedUser = args.zappedUser || this.ndk.getUser({ hexpubkey: this.zappedEvent.pubkey });\n }\n async getZapEndpoint() {\n let lud06;\n let lud16;\n let zapEndpoint;\n let zapEndpointCallback;\n if (this.zappedEvent) {\n const zapTag = (await this.zappedEvent.getMatchingTags(\"zap\"))[0];\n if (zapTag) {\n switch (zapTag[2]) {\n case \"lud06\":\n lud06 = zapTag[1];\n break;\n case \"lud16\":\n lud16 = zapTag[1];\n break;\n default:\n throw new Error(`Unknown zap tag ${zapTag}`);\n }\n }\n }\n if (this.zappedUser) {\n if (!this.zappedUser.profile) {\n await this.zappedUser.fetchProfile();\n }\n lud06 = (this.zappedUser.profile || {}).lud06;\n lud16 = (this.zappedUser.profile || {}).lud16;\n }\n if (lud16) {\n const [name, domain] = lud16.split(\"@\");\n zapEndpoint = `https://${domain}/.well-known/lnurlp/${name}`;\n } else if (lud06) {\n const { words } = bech32.decode(lud06, 1e3);\n const data = bech32.fromWords(words);\n const utf8Decoder = new TextDecoder(\"utf-8\");\n zapEndpoint = utf8Decoder.decode(data);\n }\n if (!zapEndpoint) {\n throw new Error(\"No zap endpoint found\");\n }\n const response = await fetch(zapEndpoint);\n const body = await response.json();\n if (body?.allowsNostr && body?.nostrPubkey) {\n zapEndpointCallback = body.callback;\n }\n return zapEndpointCallback;\n }\n async createZapRequest(amount, comment) {\n const zapEndpoint = await this.getZapEndpoint();\n if (!zapEndpoint) {\n throw new Error(\"No zap endpoint found\");\n }\n if (!this.zappedEvent)\n throw new Error(\"No zapped event found\");\n const zapRequest = nip57.makeZapRequest({\n profile: this.zappedUser.hexpubkey(),\n event: this.zappedEvent?.id,\n amount,\n comment: comment || \"\",\n relays: [\"wss://nos.lol\", \"wss://relay.nostr.band\", \"wss://relay.f7z.io\", \"wss://relay.damus.io\", \"wss://nostr.mom\", \"wss://no.str.cr\"]\n // TODO: fix this\n });\n const zapRequestEvent = new NDKEvent(this.ndk, zapRequest);\n await zapRequestEvent.sign();\n const zapRequestNostrEvent = await zapRequestEvent.toNostrEvent();\n const response = await fetch(\n `${zapEndpoint}?` + new URLSearchParams({\n amount: amount.toString(),\n nostr: JSON.stringify(zapRequestNostrEvent)\n })\n );\n const body = await response.json();\n return body.pr;\n }\n};\n\n// src/events/content-tagger.ts\nimport { nip19 } from \"nostr-tools\";\nfunction generateContentTags(content, tags = []) {\n const tagRegex = /@(npub|nprofile|note)[a-zA-Z0-9]+/g;\n content = content.replace(tagRegex, (tag) => {\n try {\n const { type, data } = nip19.decode(tag.slice(1));\n const tagIndex = tags.length;\n switch (type) {\n case \"npub\":\n tags.push([\"p\", data]);\n break;\n case \"nprofile\":\n tags.push([\"p\", data.pubkey]);\n break;\n case \"nevent\":\n tags.push([\"e\", data.id]);\n break;\n case \"note\":\n tags.push([\"e\", data]);\n break;\n }\n return `#[${tagIndex}]`;\n } catch (error) {\n return tag;\n }\n });\n return { content, tags };\n}\n\n// src/events/kind.ts\nfunction isReplaceable() {\n if (!this.kind)\n throw new Error(\"Kind not set\");\n return this.kind >= 1e4 && this.kind <= 3e4;\n}\nfunction isParamReplaceable() {\n if (!this.kind)\n throw new Error(\"Kind not set\");\n return this.kind >= 3e4 && this.kind <= 4e4;\n}\n\n// src/events/nip19.ts\nimport { nip19 as nip192 } from \"nostr-tools\";\nfunction encode() {\n if (this.isParamReplaceable()) {\n return nip192.naddrEncode({\n kind: this.kind,\n pubkey: this.pubkey,\n identifier: this.tagId()\n });\n }\n}\n\n// src/events/index.ts\nvar NDKEvent = class extends EventEmitter2 {\n ndk;\n created_at;\n content = \"\";\n subject;\n tags = [];\n kind;\n id = \"\";\n sig;\n pubkey = \"\";\n constructor(ndk, event) {\n super();\n this.ndk = ndk;\n this.created_at = event?.created_at;\n this.content = event?.content || \"\";\n this.subject = event?.subject;\n this.tags = event?.tags || [];\n this.id = event?.id || \"\";\n this.sig = event?.sig;\n this.pubkey = event?.pubkey || \"\";\n if (event?.kind)\n this.kind = event?.kind;\n }\n async toNostrEvent(pubkey) {\n if (!pubkey) {\n const user = await this.ndk?.signer?.user();\n pubkey = user?.hexpubkey();\n }\n const nostrEvent = {\n created_at: this.created_at || Math.floor(Date.now() / 1e3),\n content: this.content,\n tags: this.tags,\n kind: this.kind || 0,\n pubkey: pubkey || this.pubkey,\n id: this.id\n };\n this.generateTags();\n if (this.subject)\n nostrEvent.subject = this.subject;\n try {\n nostrEvent.id = getEventHash(nostrEvent);\n } catch (e) {\n }\n if (this.sig)\n nostrEvent.sig = this.sig;\n return nostrEvent;\n }\n isReplaceable = isReplaceable.bind(this);\n isParamReplaceable = isParamReplaceable.bind(this);\n encode = encode.bind(this);\n /**\n * Get all tags with the given name\n */\n getMatchingTags(tagName) {\n return this.tags.filter((tag) => tag[0] === tagName);\n }\n async toString() {\n return await this.toNostrEvent();\n }\n async sign() {\n this.ndk?.assertSigner();\n await this.generateTags();\n const nostrEvent = await this.toNostrEvent();\n this.sig = await this.ndk?.signer?.sign(nostrEvent);\n }\n async publish() {\n if (!this.sig)\n await this.sign();\n return this.ndk?.publish(this);\n }\n async generateTags() {\n if (this.tags.length > 0) {\n const { content, tags } = generateContentTags(this.content, this.tags);\n this.content = content;\n this.tags = tags;\n }\n if (this.kind && this.kind >= 3e4 && this.kind <= 4e4) {\n const dTag = this.getMatchingTags(\"d\")[0];\n if (!dTag) {\n const str = [...Array(16)].map(() => Math.random().toString(36)[2]).join(\"\");\n this.tags.push([\"d\", str]);\n }\n }\n }\n /**\n * @returns the id of the event, or if it's a parameterized event, the id of the event with the d tag\n */\n tagId() {\n if (this.kind && this.kind >= 3e4 && this.kind <= 4e4) {\n const dTag = this.getMatchingTags(\"d\")[0];\n const dTagId = dTag ? dTag[1] : \"\";\n return `${this.kind}:${this.pubkey}:${dTagId}`;\n }\n return this.id;\n }\n /**\n * Get the tag that can be used to reference this event from another event\n * @example\n * event = new NDKEvent(ndk, { kind: 30000, pubkey: 'pubkey', tags: [ [\"d\", \"d-code\"] ] });\n * event.tagReference(); // [\"a\", \"30000:pubkey:d-code\"]\n *\n * event = new NDKEvent(ndk, { kind: 1, pubkey: 'pubkey', id: \"eventid\" });\n * event.tagReference(); // [\"e\", \"eventid\"]\n */\n tagReference() {\n if (this.kind && this.kind >= 3e4 && this.kind <= 4e4) {\n return [\"a\", this.tagId()];\n }\n return [\"e\", this.tagId()];\n }\n /**\n * Create a zap request for an existing event\n */\n async zap(amount, comment) {\n if (!this.ndk)\n throw new Error(\"No NDK instance found\");\n this.ndk.assertSigner();\n const zap = new Zap({\n ndk: this.ndk,\n zappedEvent: this\n });\n const paymentRequest = await zap.createZapRequest(amount, comment);\n return paymentRequest;\n }\n};\n\n// src/relay/pool/index.ts\nimport EventEmitter4 from \"eventemitter3\";\n\n// src/relay/index.ts\nimport \"websocket-polyfill\";\nimport { relayInit } from \"nostr-tools\";\nimport EventEmitter3 from \"eventemitter3\";\nvar NDKRelay = class extends EventEmitter3 {\n url;\n scores;\n relay;\n _status;\n connectedAt;\n _connectionStats = { attempts: 0, success: 0, durations: [] };\n constructor(url) {\n super();\n this.url = url;\n this.relay = relayInit(url);\n this.scores = /* @__PURE__ */ new Map();\n this._status = 3 /* DISCONNECTED */;\n this.relay.on(\"connect\", () => {\n this.updateConnectionStats.connected();\n this.emit(\"connect\");\n this._status = 1 /* CONNECTED */;\n });\n this.relay.on(\"disconnect\", () => {\n this.updateConnectionStats.disconnected();\n this.emit(\"disconnect\");\n if (this._status === 1 /* CONNECTED */) {\n this._status = 3 /* DISCONNECTED */;\n this.handleReconnection();\n }\n });\n this.relay.on(\"notice\", (notice) => this.handleNotice(notice));\n }\n /**\n * Evaluates the connection stats to determine if the relay is flapping.\n */\n isFlapping() {\n const durations = this._connectionStats.durations;\n if (durations.length < 10)\n return false;\n const sum = durations.reduce((a, b) => a + b, 0);\n const avg = sum / durations.length;\n const variance = durations.map((x) => Math.pow(x - avg, 2)).reduce((a, b) => a + b, 0) / durations.length;\n const stdDev = Math.sqrt(variance);\n const isFlapping = stdDev < 1e3;\n console.log(this.relay.url, { sum, avg, variance, stdDev, isFlapping });\n return isFlapping;\n }\n /**\n * Called when the relay is unexpectedly disconnected.\n */\n handleReconnection() {\n if (this.isFlapping()) {\n this.emit(\"flapping\", this, this._connectionStats);\n }\n if (this.connectedAt && Date.now() - this.connectedAt < 5e3) {\n setTimeout(() => this.connect(), 6e4);\n } else {\n this.connect();\n }\n }\n get status() {\n return this._status;\n }\n /**\n * Connects to the relay.\n */\n async connect() {\n try {\n this.updateConnectionStats.attempt();\n this._status = 0 /* CONNECTING */;\n await this.relay.connect();\n } catch (e) {\n }\n }\n /**\n * Disconnects from the relay.\n */\n disconnect() {\n this._status = 2 /* DISCONNECTING */;\n this.relay.close();\n }\n async handleNotice(notice) {\n this.emit(\"notice\", this, notice);\n }\n /**\n * Subscribes to a subscription.\n */\n subscribe(subscription) {\n const { filter } = subscription;\n const sub = this.relay.sub([filter], {\n id: subscription.subId\n });\n sub.on(\"event\", (event) => {\n const e = new NDKEvent(void 0, event);\n subscription.eventReceived(e, this);\n });\n sub.on(\"eose\", () => {\n subscription.eoseReceived(this);\n });\n return sub;\n }\n /**\n * Publishes an event to the relay.\n */\n async publish(event) {\n const nostrEvent = await event.toNostrEvent();\n this.relay.publish(nostrEvent);\n }\n /**\n * Called when this relay has responded with an event but\n * wasn't the fastest one.\n * @param timeDiffInMs The time difference in ms between the fastest and this relay in milliseconds\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n scoreSlowerEvent(timeDiffInMs) {\n }\n /**\n * Utility functions to update the connection stats.\n */\n updateConnectionStats = {\n connected: () => {\n this._connectionStats.success++;\n this._connectionStats.connectedAt = Date.now();\n },\n disconnected: () => {\n if (this._connectionStats.connectedAt) {\n this._connectionStats.durations.push(Date.now() - this._connectionStats.connectedAt);\n if (this._connectionStats.durations.length > 100) {\n this._connectionStats.durations.shift();\n }\n }\n this._connectionStats.connectedAt = void 0;\n },\n attempt: () => {\n this._connectionStats.attempts++;\n }\n };\n /**\n * Returns the connection stats.\n */\n get connectionStats() {\n return this._connectionStats;\n }\n};\n\n// src/relay/pool/index.ts\nvar NDKPool = class extends EventEmitter4 {\n relays = /* @__PURE__ */ new Map();\n debug;\n constructor(relayUrls = [], ndk) {\n super();\n this.debug = ndk.debug.extend(\"pool\");\n relayUrls.forEach((relayUrl) => {\n const relay = new NDKRelay(relayUrl);\n relay.on(\"notice\", (relay2, notice) => this.emit(\"notice\", relay2, notice));\n relay.on(\"connect\", () => this.emit(\"connect\", relay));\n relay.on(\"disconnect\", () => this.emit(\"disconnect\", relay));\n relay.on(\"flapping\", () => this.handleFlapping(relay));\n this.relays.set(relayUrl, relay);\n });\n }\n /**\n * Attempts to establish a connection to each relay in the pool.\n *\n * @async\n * @param {number} [timeoutMs] - Optional timeout in milliseconds for each connection attempt.\n * @returns {Promise} A promise that resolves when all connection attempts have completed.\n * @throws {Error} If any of the connection attempts result in an error or timeout.\n */\n async connect(timeoutMs) {\n const promises = [];\n this.debug(`Connecting to ${this.relays.size} relays${timeoutMs ? `, timeout ${timeoutMs}...` : \"\"}`);\n for (const relay of this.relays.values()) {\n if (timeoutMs) {\n const timeoutPromise = new Promise((_, reject) => {\n setTimeout(() => reject(`Timed out after ${timeoutMs}ms`), timeoutMs);\n });\n promises.push(\n Promise.race([\n relay.connect(),\n timeoutPromise\n ]).catch((e) => {\n this.debug(`Failed to connect to relay ${relay.url}: ${e}`);\n })\n );\n } else {\n promises.push(relay.connect());\n }\n }\n await Promise.all(promises);\n }\n handleFlapping(relay) {\n this.debug(`Relay ${relay.url} is flapping`);\n this.relays.delete(relay.url);\n this.emit(\"flapping\", relay);\n }\n size() {\n return this.relays.size;\n }\n /**\n * Returns the status of each relay in the pool.\n * @returns {NDKPoolStats} An object containing the number of relays in each status.\n */\n stats() {\n const stats = {\n total: 0,\n connected: 0,\n disconnected: 0,\n connecting: 0\n };\n for (const relay of this.relays.values()) {\n stats.total++;\n if (relay.status === 1 /* CONNECTED */) {\n stats.connected++;\n } else if (relay.status === 3 /* DISCONNECTED */) {\n stats.disconnected++;\n } else if (relay.status === 0 /* CONNECTING */) {\n stats.connecting++;\n }\n }\n return stats;\n }\n};\n\n// src/user/index.ts\nimport { nip05, nip19 as nip193 } from \"nostr-tools\";\n\n// src/user/profile.ts\nfunction mergeEvent(event, profile) {\n const payload = JSON.parse(event.content);\n if (payload.name)\n profile.name = payload.name;\n if (payload.display_name)\n profile.displayName = payload.display_name;\n if (payload.displayName)\n profile.displayName = payload.displayName;\n if (payload.image)\n profile.image = payload.image;\n if (payload.picture)\n profile.image = payload.picture;\n if (payload.banner)\n profile.banner = payload.banner;\n if (payload.bio)\n profile.bio = payload.bio;\n if (payload.nip05)\n profile.nip05 = payload.nip05;\n if (payload.lud06)\n profile.lud06 = payload.lud06;\n if (payload.lud16)\n profile.lud16 = payload.lud16;\n if (payload.about)\n profile.about = payload.about;\n if (payload.zapService)\n profile.zapService = payload.zapService;\n return profile;\n}\n\n// src/user/follows.ts\nasync function follows() {\n if (!this.ndk)\n throw new Error(\"NDK not set\");\n const contactListEvents = await this.ndk.fetchEvents({\n kinds: [3],\n authors: [this.hexpubkey()]\n });\n if (contactListEvents) {\n const contactList = /* @__PURE__ */ new Set();\n contactListEvents.forEach((event) => {\n event.tags.forEach((tag) => {\n if (tag[0] === \"p\") {\n try {\n const user = new NDKUser({ hexpubkey: tag[1] });\n user.ndk = this.ndk;\n contactList.add(user);\n } catch (e) {\n }\n }\n });\n });\n return contactList;\n }\n return /* @__PURE__ */ new Set();\n}\n\n// src/user/index.ts\nvar NDKUser = class {\n ndk;\n profile;\n npub = \"\";\n relayUrls = [];\n constructor(opts) {\n if (opts.npub)\n this.npub = opts.npub;\n if (opts.hexpubkey) {\n this.npub = nip193.npubEncode(opts.hexpubkey);\n }\n if (opts.relayUrls) {\n this.relayUrls = opts.relayUrls;\n }\n }\n static async fromNip05(nip05Id) {\n const profile = await nip05.queryProfile(nip05Id);\n if (profile) {\n return new NDKUser({\n hexpubkey: profile.pubkey,\n relayUrls: profile.relays\n });\n }\n }\n hexpubkey() {\n return nip193.decode(this.npub).data;\n }\n async fetchProfile() {\n if (!this.ndk)\n throw new Error(\"NDK not set\");\n if (!this.profile)\n this.profile = {};\n const setMetadataEvents = await this.ndk.fetchEvents({\n kinds: [0],\n authors: [this.hexpubkey()]\n });\n if (setMetadataEvents) {\n const sortedSetMetadataEvents = Array.from(setMetadataEvents).sort(\n (a, b) => a.created_at - b.created_at\n );\n sortedSetMetadataEvents.forEach((event) => {\n try {\n this.profile = mergeEvent(event, this.profile);\n } catch (e) {\n }\n });\n }\n return setMetadataEvents;\n }\n /**\n * Returns a set of users that this user follows.\n */\n follows = follows.bind(this);\n async relayList() {\n if (!this.ndk)\n throw new Error(\"NDK not set\");\n const relayListEvents = await this.ndk.fetchEvents({\n kinds: [10002],\n authors: [this.hexpubkey()]\n });\n if (relayListEvents) {\n return relayListEvents;\n }\n return /* @__PURE__ */ new Set();\n }\n};\n\n// src/subscription/index.ts\nimport EventEmitter5 from \"eventemitter3\";\n\n// src/relay/sets/index.ts\nvar NDKRelaySet = class {\n relays;\n constructor(relays) {\n this.relays = relays;\n }\n subscribeOnRelay(relay, subscription) {\n const sub = relay.subscribe(subscription);\n subscription.relaySubscriptions.set(relay, sub);\n }\n subscribe(subscription) {\n this.relays.forEach((relay) => {\n if (relay.status === 1 /* CONNECTED */) {\n this.subscribeOnRelay(relay, subscription);\n }\n });\n this.relays.forEach((relay) => {\n relay.on(\"connect\", () => this.subscribeOnRelay(relay, subscription));\n });\n return subscription;\n }\n async publish(event) {\n this.relays.forEach(async (relay) => {\n try {\n await relay.publish(event);\n } catch (e) {\n }\n });\n }\n size() {\n return this.relays.size;\n }\n};\n\n// src/relay/sets/calculate.ts\nfunction calculateRelaySetFromEvent(ndk, event) {\n const relays = /* @__PURE__ */ new Set();\n ndk.pool?.relays.forEach((relay) => relays.add(relay));\n return new NDKRelaySet(relays);\n}\nfunction calculateRelaySetFromFilter(ndk, filter) {\n const relays = /* @__PURE__ */ new Set();\n ndk.pool?.relays.forEach((relay) => relays.add(relay));\n return new NDKRelaySet(relays);\n}\n\n// src/subscription/index.ts\nvar NDKSubscription = class extends EventEmitter5 {\n subId;\n filter;\n opts;\n relaySet;\n ndk;\n relaySubscriptions;\n debug;\n constructor(ndk, filter, opts, relaySet, subId) {\n super();\n this.ndk = ndk;\n this.subId = subId || Math.floor(Math.random() * 9999991e3).toString();\n this.filter = filter;\n this.relaySet = relaySet;\n this.opts = opts;\n this.relaySubscriptions = /* @__PURE__ */ new Map();\n this.debug = ndk.debug.extend(\"subscription\");\n if (opts?.cacheUsage === \"ONLY_CACHE\" /* ONLY_CACHE */ || opts?.cacheUsage === \"CACHE_FIRST\" /* CACHE_FIRST */) {\n throw new Error(\n \"Cannot use cache-only options with a persistent subscription\"\n );\n }\n }\n shouldQueryCache() {\n return this.opts?.cacheUsage !== \"ONLY_RELAY\" /* ONLY_RELAY */;\n }\n shouldQueryRelays() {\n return this.opts?.cacheUsage !== \"ONLY_CACHE\" /* ONLY_CACHE */;\n }\n /**\n * Start the subscription. This is the main method that should be called\n * after creating a subscription.\n */\n async start() {\n let cachePromise;\n if (this.shouldQueryCache()) {\n cachePromise = this.startWithCache();\n const shouldWaitForCache = this.ndk.cacheAdapter?.locking && this.shouldQueryRelays() && this.opts?.cacheUsage !== \"PARALLEL\" /* PARALLEL */;\n if (shouldWaitForCache) {\n this.debug(\"waiting for cache to finish\");\n await cachePromise;\n if (this.eventIds.size > 0) {\n this.debug(\"cache hit, skipping relay query\");\n this.emit(\"eose\");\n return;\n }\n }\n }\n if (this.shouldQueryRelays()) {\n this.startWithRelaySet();\n }\n return;\n }\n async startWithCache() {\n if (this.ndk.cacheAdapter?.query) {\n this.debug(\"querying cache\");\n const promise = this.ndk.cacheAdapter.query(this);\n if (this.ndk.cacheAdapter.locking) {\n await promise;\n }\n }\n }\n startWithRelaySet() {\n if (!this.relaySet) {\n this.relaySet = calculateRelaySetFromFilter(this.ndk, this.filter);\n }\n if (this.relaySet) {\n this.debug(\"querying relays\");\n this.relaySet.subscribe(this);\n }\n }\n // EVENT handling\n eventFirstSeen = /* @__PURE__ */ new Map();\n eventIds = /* @__PURE__ */ new Set();\n /**\n * Called when an event is received from a relay or the cache\n * @param event\n * @param relay\n * @param fromCache Whether the event was received from the cache\n */\n eventReceived(event, relay, fromCache = false) {\n if (!fromCache && relay) {\n const eventAlreadySeen = this.eventIds.has(event.id);\n if (eventAlreadySeen) {\n const timeSinceFirstSeen = Date.now() - (this.eventFirstSeen.get(event.id) || 0);\n relay.scoreSlowerEvent(timeSinceFirstSeen);\n this.emit(\"event:dup\", event, relay, timeSinceFirstSeen);\n return;\n }\n if (this.ndk.cacheAdapter) {\n this.ndk.cacheAdapter.setEvent(event, this.filter);\n }\n this.eventFirstSeen.set(event.id, Date.now());\n }\n this.eventIds.add(event.id);\n this.emit(\"event\", event, relay);\n }\n // EOSE handling\n eosesSeen = /* @__PURE__ */ new Set();\n eoseTimeout;\n eoseReceived(relay) {\n if (this.opts?.closeOnEose) {\n this.relaySubscriptions.get(relay)?.unsub();\n }\n this.eosesSeen.add(relay);\n const hasSeenAllEoses = this.eosesSeen.size === this.relaySet?.size();\n if (hasSeenAllEoses) {\n this.emit(\"eose\");\n } else {\n if (this.eoseTimeout) {\n clearTimeout(this.eoseTimeout);\n }\n this.eoseTimeout = setTimeout(() => {\n this.emit(\"eose\");\n }, 500);\n }\n }\n};\n\n// src/events/dedup.ts\nfunction dedup(event1, event2) {\n if (event1.created_at > event2.created_at) {\n return event1;\n }\n return event2;\n}\n\n// src/index.ts\nimport EventEmitter6 from \"eventemitter3\";\nimport debug from \"debug\";\n\n// src/signers/nip07/index.ts\nvar NDKNip07Signer = class {\n _userPromise;\n constructor() {\n if (!window.nostr) {\n throw new Error(\"NIP-07 extension not available\");\n }\n }\n async blockUntilReady() {\n const pubkey = await window.nostr?.getPublicKey();\n if (!pubkey) {\n throw new Error(\"User rejected access\");\n }\n return new NDKUser({ hexpubkey: pubkey });\n }\n /**\n * Getter for the user property.\n * @returns The NDKUser instance.\n */\n async user() {\n if (!this._userPromise) {\n this._userPromise = this.blockUntilReady();\n }\n return this._userPromise;\n }\n /**\n * Signs the given Nostr event.\n * @param event - The Nostr event to be signed.\n * @returns The signature of the signed event.\n * @throws Error if the NIP-07 is not available on the window object.\n */\n async sign(event) {\n if (!window.nostr) {\n throw new Error(\"NIP-07 extension not available\");\n }\n const signedEvent = await window.nostr.signEvent(event);\n return signedEvent.sig;\n }\n};\n\n// src/zap/invoice.ts\nimport { decode } from \"light-bolt11-decoder\";\nfunction zapInvoiceFromEvent(event) {\n const description = event.getMatchingTags(\"description\")[0];\n const bolt11 = event.getMatchingTags(\"bolt11\")[0];\n let decodedInvoice;\n let zapRequest;\n if (!description || !bolt11 || !bolt11[1]) {\n return null;\n }\n try {\n let zapRequestPayload = description[1];\n if (zapRequestPayload.startsWith(\"%\")) {\n zapRequestPayload = decodeURIComponent(zapRequestPayload);\n }\n if (zapRequestPayload === \"\") {\n return null;\n }\n zapRequest = JSON.parse(zapRequestPayload);\n decodedInvoice = decode(bolt11[1]);\n } catch (e) {\n return null;\n }\n const amountSection = decodedInvoice.sections.find((s) => s.name === \"amount\");\n if (!amountSection) {\n return null;\n }\n const amount = parseInt(amountSection.value) / 1e3;\n if (!amount) {\n return null;\n }\n const content = zapRequest.content;\n const sender = zapRequest.pubkey;\n const recipientTag = event.getMatchingTags(\"p\")[0];\n const recipient = recipientTag[1];\n const zappedEvent = event.getMatchingTags(\"e\")[0];\n const zappedEventId = zappedEvent ? zappedEvent[1] : void 0;\n const zapInvoice = {\n id: event.id,\n zapper: event.pubkey,\n zappee: sender,\n zapped: recipient,\n zappedEvent: zappedEventId,\n amount,\n comment: content\n };\n return zapInvoice;\n}\n\n// src/index.ts\nvar NDK = class extends EventEmitter6 {\n pool;\n signer;\n cacheAdapter;\n debug;\n constructor(opts = {}) {\n super();\n this.debug = opts.debug || debug(\"ndk\");\n this.pool = new NDKPool(opts.explicitRelayUrls || [], this);\n this.signer = opts.signer;\n this.cacheAdapter = opts.cacheAdapter;\n this.debug(\"initialized\", {\n relays: opts.explicitRelayUrls,\n signer: opts.signer?.constructor.name || \"none\",\n cacheAdapter: opts.cacheAdapter?.constructor.name || \"none\"\n });\n }\n /**\n * Connect to relays with optional timeout.\n * If the timeout is reached, the connection will be continued to be established in the background.\n */\n async connect(timeoutMs) {\n this.debug(\"Connecting to relays\");\n return this.pool.connect(timeoutMs);\n }\n /**\n * Get a NDKUser object\n *\n * @param opts\n * @returns\n */\n getUser(opts) {\n const user = new NDKUser(opts);\n user.ndk = this;\n return user;\n }\n subscribe(filter, opts) {\n const subscription = new NDKSubscription(this, filter, opts);\n subscription.start();\n return subscription;\n }\n async publish(event) {\n const relaySet = calculateRelaySetFromEvent(this, event);\n return relaySet.publish(event);\n }\n /**\n * Fetch a single event\n */\n async fetchEvent(filter, opts = {}) {\n return new Promise((resolve) => {\n const s = this.subscribe(filter, { ...opts, closeOnEose: true });\n s.on(\"event\", (event) => {\n event.ndk = this;\n resolve(event);\n });\n });\n }\n /**\n * Fetch events\n */\n async fetchEvents(filter, opts = {}) {\n return new Promise((resolve) => {\n const events = /* @__PURE__ */ new Map();\n const relaySetSubscription = this.subscribe(filter, { ...opts, closeOnEose: true });\n relaySetSubscription.on(\"event\", (event) => {\n const existingEvent = events.get(event.tagId());\n if (existingEvent) {\n event = dedup(existingEvent, event);\n }\n event.ndk = this;\n events.set(event.tagId(), event);\n });\n relaySetSubscription.on(\"eose\", () => {\n resolve(new Set(events.values()));\n });\n });\n }\n /**\n * Ensures that a signer is available to sign an event.\n */\n async assertSigner() {\n if (!this.signer) {\n this.emit(\"signerRequired\");\n throw new Error(\"Signer required\");\n }\n }\n};\nexport {\n NDKEvent,\n NDKNip07Signer,\n NDKRelay,\n NDKSubscription,\n NDKUser,\n NDK as default,\n zapInvoiceFromEvent\n};\n","import { chatData } from '../store';\nimport { getEventHash, relayInit } from 'nostr-tools';\nimport RelayPool from 'nostr/lib/relay-pool';\nimport { createEventDispatcher } from 'svelte';\nimport EventEmitter from 'events';\nimport * as uuid from 'uuid';\nimport debug from 'debug';\nimport { NDKEvent, zapInvoiceFromEvent } from '@nostr-dev-kit/ndk';\n\nconst log = new debug('nostr:adapter');\nconst profilesLog = new debug('nostr:adapter:profiles');\nconst writeLog = new debug('nostr:adapter:write');\n\nclass NstrAdapter {\n relayStatus = {};\n #pool = null;\n #messages = {};\n #eventEmitter = new EventEmitter();\n #handlers = {}\n tags;\n referenceTags;\n type;\n #websiteOwnerPubkey;\n relayUrls = [];\n\n #profileRequestQueue = [];\n #requestedProfiles = [];\n #profileRequestTimer;\n #delayedSubscriptions = {};\n #delayedSubscriptionTimeouts = {};\n\n constructor(clientPubkey, {tags, referenceTags, type='DM', websiteOwnerPubkey, relays} = {}) {\n this.pubkey = clientPubkey;\n this.#websiteOwnerPubkey = websiteOwnerPubkey;\n this.relayUrls = relays\n\n if (type) {\n this.setChatConfiguration(type, tags, referenceTags);\n }\n }\n\n setChatConfiguration(type, tags, referenceTags) {\n log('chatConfiguration', {type, tags, referenceTags});\n this.type = type;\n this.tags = tags;\n this.referenceTags = referenceTags;\n\n // handle connection\n if (this.#pool) { this.#disconnect() }\n this.#connect()\n\n let filters = [];\n\n // handle subscriptions\n // if this is DM type then subscribe to chats with this website owner\n switch (this.type) {\n case 'DM':\n filters.push({\n kinds: [4],\n '#p': [this.pubkey, this.#websiteOwnerPubkey],\n 'authors': [this.pubkey, this.#websiteOwnerPubkey]\n });\n break;\n case 'GLOBAL':\n if (this.tags && this.tags.length > 0) {\n filters.push({kinds: [1], '#t': this.tags, limit: 20});\n }\n if (this.referenceTags && this.referenceTags.length > 0) {\n filters.push({kinds: [1], '#r': this.referenceTags, limit: 20});\n }\n\n break;\n }\n\n if (filters && filters.length > 0) {\n this.subscribe(filters, (e) => { this.#emitMessage(e) })\n }\n }\n\n async getPubKey() {\n return this.pubkey;\n }\n\n on(event, callback) {\n this.#eventEmitter.on(event, callback);\n }\n\n /**\n * Send a message to the relay\n * @param {String} message - The message to send\n */\n async send(message, {tagPubKeys, tags} = {}) {\n let event;\n\n if (!tags) { tags = []}\n\n if (this.type === 'DM') {\n event = await this.sendKind4(message, {tagPubKeys, tags});\n } else {\n event = await this.sendKind1(message, {tagPubKeys, tags});\n }\n\n event.id = getEventHash(event)\n const signedEvent = await this.signEvent(event)\n\n this.#_publish(signedEvent);\n\n return event.id;\n }\n\n async sendKind4(message, {tagPubKeys, tags} = {}) {\n let ciphertext = await this.encrypt(this.#websiteOwnerPubkey, message);\n let event = {\n kind: 4,\n pubkey: this.pubkey,\n created_at: Math.floor(Date.now() / 1000),\n content: ciphertext,\n tags: [\n ['p', this.#websiteOwnerPubkey],\n ...tags\n ],\n }\n\n return event;\n }\n\n async sendKind1(message, {tagPubKeys, tags} = {}) {\n if (!tags) { tags = []; }\n\n if (this.tags) {\n this.tags.forEach((t) => tags.push(['t', t]));\n }\n\n if (this.referenceTags) {\n this.referenceTags.forEach((t) => tags.push(['r', t]));\n }\n\n let event = {\n kind: 1,\n created_at: Math.floor(Date.now() / 1000),\n tags,\n content: message,\n pubkey: this.pubkey,\n }\n\n if (tagPubKeys) {\n for (let pubkey of tagPubKeys) {\n if (pubkey) {\n event.tags.push(['p', pubkey]);\n }\n }\n }\n\n event.id = getEventHash(event)\n this.subscribeToEventAndResponses(event.id);\n\n return event;\n }\n\n async #_publish(event) {\n writeLog('publish', event);\n this.#pool.send([ 'EVENT', event ]);\n }\n\n async onEvent(event, messageCallback) {\n this.#addProfileRequest(event.pubkey);\n\n messageCallback(event)\n }\n\n async delayedSubscribe(filters, family, timeout) {\n this.#delayedSubscriptions[family] = this.#delayedSubscriptions[family] || []\n this.#delayedSubscriptions[family].push(filters);\n\n if (!this.#delayedSubscriptionTimeouts[family]) {\n this.#delayedSubscriptionTimeouts[family] = setTimeout(() => {\n delete this.#delayedSubscriptionTimeouts[family];\n\n // if there are more than 10 filters then we need to split them up\n // into multiple subscriptions\n let filters = this.#delayedSubscriptions[family];\n delete this.#delayedSubscriptions[family];\n\n // split filters into groups of 10\n let groups = [];\n groups = filters.reduce((groups, filter, index) => {\n if (index % 10 === 0) {\n groups.push([]);\n }\n groups[groups.length - 1].push(filter);\n return groups;\n }, groups);\n\n console.log(`turned ${filters.length} filters into ${groups.length} groups`);\n\n groups.forEach((filters) => {\n this.subscribe(filters, (e) => { this.#emitMessage(e)});\n });\n }, timeout)\n }\n }\n\n async subscribe(filters, messageCallback=null) {\n if (!messageCallback) { messageCallback = (e) => { this.#emitMessage(e) } }\n return this.#_subscribe(filters, messageCallback)\n }\n\n async #_subscribe(filters, messageCallback) {\n const subId = uuid.v4();\n this.#handlers[subId] = messageCallback;\n if (!Array.isArray(filters)) { filters = [filters] }\n\n\n\n this.#pool.subscribe(subId, filters);\n this.#pool.on('event', (relay, recSubId, e) => {\n this.onEvent(e, this.#handlers[recSubId])\n });\n\n return subId;\n }\n\n async #emitMessage(event) {\n // has already been emitted\n if (this.#messages[event.id]) {\n return;\n }\n\n this.#messages[event.id] = true;\n\n // decrypt\n if (event.kind === 4) {\n event.content = await this.decrypt(this.#websiteOwnerPubkey, event.content);\n }\n\n let deletedEvents = []\n if (event.kind === 5) {\n deletedEvents = event.tags.filter(tag => tag[0] === 'e').map(tag => tag[1]);\n }\n\n let zap;\n if (event.kind === 9735) {\n const ndkEvent = new NDKEvent(null, event);\n zap = zapInvoiceFromEvent(ndkEvent);\n console.log(`received a zap invoice: ${zap}`, event);\n }\n\n switch (event.kind) {\n case 1: this.#eventEmitter.emit('message', event); break;\n case 4: this.#eventEmitter.emit('message', event); break;\n case 5: this.#eventEmitter.emit('deleted', deletedEvents); break;\n case 7: this.#eventEmitter.emit('reaction', event); break;\n case 9735: this.#eventEmitter.emit('zap', zap); break;\n default:\n // alert('unknown event kind ' + event.kind)\n console.log('unknown event kind', event.kind, event);\n }\n\n }\n\n subscribeToEventAndResponses(eventId) {\n this.subscribe([\n {ids: [eventId]},\n {'#e': [eventId]},\n ], (e) => {\n this.#emitMessage(e);\n // this.subscribeToResponses(e)\n })\n }\n\n subscribeToResponses(event) {\n this.subscribe([\n {'#e': [event.id]},\n ], (e) => {\n this.#emitMessage(e);\n this.subscribeToResponses(e)\n })\n }\n\n /**\n * Connect to the relay\n */\n #connect() {\n this.relayUrls.forEach((url) => {\n this.relayStatus[url] = 'disconnected';\n });\n this.#eventEmitter.emit('connectivity', this.relayStatus);\n\n // console.log('connecting to relay', this.relayUrls);\n this.#pool = new RelayPool(this.relayUrls)\n this.#pool.on('open', (relay) => {\n // console.log(`connected to ${relay.url}`, new Date())\n this.relayStatus[relay.url] = 'connected';\n this.#eventEmitter.emit('connectivity', this.relayStatus);\n })\n\n this.#pool.on('error', (relay, r, e) => {\n this.relayStatus[relay.url] = 'error';\n this.#eventEmitter.emit('connectivity', this.relayStatus);\n console.log('error from relay', relay.url, r, e)\n })\n\n this.#pool.on('close', (relay, r) => {\n this.relayStatus[relay.url] = 'closed';\n this.#eventEmitter.emit('connectivity', this.relayStatus);\n console.log('error from relay', relay.url, r)\n })\n\n this.#pool.on('notice', (relay, r) => {\n console.log('notice', relay.url, r)\n })\n }\n\n #disconnect() {\n this.relayUrls.forEach((url) => {\n this.relayStatus[url] = 'disconnected';\n });\n this.#eventEmitter.emit('connectivity', this.relayStatus);\n this.#pool.close();\n this.#pool = null;\n }\n\n //\n //\n // Profiles\n //\n //\n reqProfile(pubkey) {\n this.#addProfileRequest(pubkey);\n }\n\n #addProfileRequest(pubkey, event=null) {\n if (this.#profileRequestQueue.includes(pubkey)) { return; }\n if (this.#requestedProfiles.includes(pubkey)) { return; }\n this.#profileRequestQueue.push(pubkey);\n this.#requestedProfiles.push(pubkey);\n\n if (!this.#profileRequestTimer) {\n this.#profileRequestTimer = setTimeout(() => {\n this.#profileRequestTimer = null;\n this.#requestProfiles();\n }, 500);\n }\n }\n\n /**\n * Send request for all queued profiles\n */\n async #requestProfiles() {\n if (this.#profileRequestQueue.length > 0) {\n profilesLog('requesting profiles', this.#profileRequestQueue);\n\n // send request\n const subId = await this.subscribe({ kinds: [0], authors: this.#profileRequestQueue }, (e) => {\n this.#processReceivedProfile(e);\n });\n profilesLog('subscribed to request', {subId})\n this.#profileRequestQueue = [];\n\n setTimeout(() => {\n profilesLog('unsubscribing from request', {subId})\n this.#pool.unsubscribe(subId);\n }, 5000);\n }\n }\n\n #processReceivedProfile(event) {\n profilesLog('received profile', event)\n let profile;\n try {\n profile = JSON.parse(event.content);\n } catch (e) {\n profilesLog('failed to parse profile', event);\n return;\n }\n this.#eventEmitter.emit('profile', {pubkey: event.pubkey, profile});\n }\n}\n\nexport default NstrAdapter;","import NstrAdapter from './index.js';\n\nclass NstrAdapterNip07 extends NstrAdapter {\n constructor(pubkey, adapterConfig={}) {\n super(pubkey, adapterConfig);\n }\n\n async signEvent(event) {\n return await window.nostr.signEvent(event);\n }\n\n async encrypt(destPubkey, message) {\n return await window.nostr.nip04.encrypt(destPubkey, message);\n }\n\n async decrypt(destPubkey, message) {\n return await window.nostr.nip04.decrypt(destPubkey, message);\n }\n}\n\nexport default NstrAdapterNip07;\n","import EventEmitter from 'events';\nimport { relayInit, getPublicKey, getEventHash, signEvent, validateEvent, verifySignature, nip04 } from 'nostr-tools';\n\nfunction _regeneratorRuntime() {\n _regeneratorRuntime = function () {\n return exports;\n };\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function (obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == typeof value && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function (method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator.return && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function (skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function () {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function (exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function (type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function (record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function (finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n catch: function (tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function (iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\n\nvar NostrRPC = /*#__PURE__*/function () {\n function NostrRPC(opts) {\n // events\n this.events = new EventEmitter();\n this.relay = opts.relay || 'wss://nostr.vulpem.com';\n this.self = {\n pubkey: getPublicKey(opts.secretKey),\n secret: opts.secretKey\n };\n }\n var _proto = NostrRPC.prototype;\n _proto.call = /*#__PURE__*/function () {\n var _call = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(_ref, opts) {\n var _this = this;\n var target, _ref$request, _ref$request$id, id, method, _ref$request$params, params, relay, request, event;\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n target = _ref.target, _ref$request = _ref.request, _ref$request$id = _ref$request.id, id = _ref$request$id === void 0 ? /*#__PURE__*/randomID() : _ref$request$id, method = _ref$request.method, _ref$request$params = _ref$request.params, params = _ref$request$params === void 0 ? [] : _ref$request$params;\n _context3.next = 3;\n return connectToRelay(this.relay);\n case 3:\n relay = _context3.sent;\n // prepare request to be sent\n request = prepareRequest(id, method, params);\n _context3.next = 7;\n return prepareEvent(this.self.secret, target, request);\n case 7:\n event = _context3.sent;\n return _context3.abrupt(\"return\", new Promise( /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(resolve, reject) {\n var sub;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n sub = relay.sub([{\n kinds: [24133],\n authors: [target],\n '#p': [_this.self.pubkey],\n limit: 1\n }]);\n _context2.next = 3;\n return broadcastToRelay(relay, event, true);\n case 3:\n // skip waiting for response from remote\n if (opts && opts.skipResponse === true) resolve();\n sub.on('event', /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(event) {\n var payload, plaintext;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n _context.next = 3;\n return nip04.decrypt(_this.self.secret, event.pubkey, event.content);\n case 3:\n plaintext = _context.sent;\n if (plaintext) {\n _context.next = 6;\n break;\n }\n throw new Error('failed to decrypt event');\n case 6:\n payload = JSON.parse(plaintext);\n _context.next = 12;\n break;\n case 9:\n _context.prev = 9;\n _context.t0 = _context[\"catch\"](0);\n return _context.abrupt(\"return\");\n case 12:\n if (isValidResponse(payload)) {\n _context.next = 14;\n break;\n }\n return _context.abrupt(\"return\");\n case 14:\n if (!(payload.id !== id)) {\n _context.next = 16;\n break;\n }\n return _context.abrupt(\"return\");\n case 16:\n // if the response is an error, reject the promise\n if (payload.error) {\n reject(payload.error);\n }\n // if the response is a result, resolve the promise\n if (payload.result) {\n resolve(payload.result);\n }\n case 18:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[0, 9]]);\n }));\n return function (_x5) {\n return _ref3.apply(this, arguments);\n };\n }());\n case 5:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return function (_x3, _x4) {\n return _ref2.apply(this, arguments);\n };\n }()));\n case 9:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function call(_x, _x2) {\n return _call.apply(this, arguments);\n }\n return call;\n }();\n _proto.listen = /*#__PURE__*/function () {\n var _listen = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n var _this2 = this;\n var relay, sub;\n return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return connectToRelay(this.relay);\n case 2:\n relay = _context5.sent;\n sub = relay.sub([{\n kinds: [24133],\n '#p': [this.self.pubkey],\n since: now()\n }]);\n sub.on('event', /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(event) {\n var payload, plaintext, response, body, responseEvent;\n return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n _context4.prev = 0;\n _context4.next = 3;\n return nip04.decrypt(_this2.self.secret, event.pubkey, event.content);\n case 3:\n plaintext = _context4.sent;\n if (plaintext) {\n _context4.next = 6;\n break;\n }\n throw new Error('failed to decrypt event');\n case 6:\n payload = JSON.parse(plaintext);\n _context4.next = 12;\n break;\n case 9:\n _context4.prev = 9;\n _context4.t0 = _context4[\"catch\"](0);\n return _context4.abrupt(\"return\");\n case 12:\n if (isValidRequest(payload)) {\n _context4.next = 14;\n break;\n }\n return _context4.abrupt(\"return\");\n case 14:\n _context4.next = 17;\n return _this2.handleRequest(payload, event);\n case 17:\n response = _context4.sent;\n body = prepareResponse(response.id, response.result, response.error);\n _context4.next = 21;\n return prepareEvent(_this2.self.secret, event.pubkey, body);\n case 21:\n responseEvent = _context4.sent;\n // send response via relay\n relay.publish(responseEvent);\n case 23:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, null, [[0, 9]]);\n }));\n return function (_x6) {\n return _ref4.apply(this, arguments);\n };\n }());\n return _context5.abrupt(\"return\", sub);\n case 6:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, this);\n }));\n function listen() {\n return _listen.apply(this, arguments);\n }\n return listen;\n }();\n _proto.handleRequest = /*#__PURE__*/function () {\n var _handleRequest = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(request, event) {\n var id, method, params, result, error;\n return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n id = request.id, method = request.method, params = request.params;\n result = null;\n error = null;\n _context6.prev = 3;\n this.event = event;\n _context6.next = 7;\n return this[method].apply(this, params);\n case 7:\n result = _context6.sent;\n this.event = undefined;\n _context6.next = 14;\n break;\n case 11:\n _context6.prev = 11;\n _context6.t0 = _context6[\"catch\"](3);\n if (_context6.t0 instanceof Error) {\n error = _context6.t0.message;\n } else {\n error = 'unknown error';\n }\n case 14:\n return _context6.abrupt(\"return\", {\n id: id,\n result: result,\n error: error\n });\n case 15:\n case \"end\":\n return _context6.stop();\n }\n }, _callee6, this, [[3, 11]]);\n }));\n function handleRequest(_x7, _x8) {\n return _handleRequest.apply(this, arguments);\n }\n return handleRequest;\n }();\n return NostrRPC;\n}();\nfunction now() {\n return Math.floor(Date.now() / 1000);\n}\nfunction randomID() {\n return Math.random().toString().slice(2);\n}\nfunction prepareRequest(id, method, params) {\n return JSON.stringify({\n id: id,\n method: method,\n params: params\n });\n}\nfunction prepareResponse(id, result, error) {\n return JSON.stringify({\n id: id,\n result: result,\n error: error\n });\n}\nfunction prepareEvent(_x9, _x10, _x11) {\n return _prepareEvent.apply(this, arguments);\n}\nfunction _prepareEvent() {\n _prepareEvent = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(secretKey, pubkey, content) {\n var cipherText, event, id, sig, signedEvent, ok, veryOk;\n return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n while (1) switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return nip04.encrypt(secretKey, pubkey, content);\n case 2:\n cipherText = _context7.sent;\n event = {\n kind: 24133,\n created_at: now(),\n pubkey: getPublicKey(secretKey),\n tags: [['p', pubkey]],\n content: cipherText\n };\n id = getEventHash(event);\n sig = signEvent(event, secretKey);\n signedEvent = _extends({}, event, {\n id: id,\n sig: sig\n });\n ok = validateEvent(signedEvent);\n veryOk = verifySignature(signedEvent);\n if (!(!ok || !veryOk)) {\n _context7.next = 11;\n break;\n }\n throw new Error('Event is not valid');\n case 11:\n return _context7.abrupt(\"return\", signedEvent);\n case 12:\n case \"end\":\n return _context7.stop();\n }\n }, _callee7);\n }));\n return _prepareEvent.apply(this, arguments);\n}\nfunction isValidRequest(payload) {\n if (!payload) return false;\n var keys = Object.keys(payload);\n if (!keys.includes('id') || !keys.includes('method') || !keys.includes('params')) return false;\n return true;\n}\nfunction isValidResponse(payload) {\n if (!payload) return false;\n var keys = Object.keys(payload);\n if (!keys.includes('id') || !keys.includes('result') || !keys.includes('error')) return false;\n return true;\n}\nfunction connectToRelay(_x12) {\n return _connectToRelay.apply(this, arguments);\n}\nfunction _connectToRelay() {\n _connectToRelay = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(realayURL) {\n var relay;\n return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n while (1) switch (_context8.prev = _context8.next) {\n case 0:\n relay = relayInit(realayURL);\n _context8.next = 3;\n return relay.connect();\n case 3:\n _context8.next = 5;\n return new Promise(function (resolve, reject) {\n relay.on('connect', function () {\n resolve();\n });\n relay.on('error', function () {\n reject(new Error(\"not possible to connect to \" + relay.url));\n });\n });\n case 5:\n return _context8.abrupt(\"return\", relay);\n case 6:\n case \"end\":\n return _context8.stop();\n }\n }, _callee8);\n }));\n return _connectToRelay.apply(this, arguments);\n}\nfunction broadcastToRelay(_x13, _x14, _x15) {\n return _broadcastToRelay.apply(this, arguments);\n}\nfunction _broadcastToRelay() {\n _broadcastToRelay = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9(relay, event, skipSeen) {\n return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n while (1) switch (_context9.prev = _context9.next) {\n case 0:\n if (skipSeen === void 0) {\n skipSeen = false;\n }\n _context9.next = 3;\n return new Promise(function (resolve, reject) {\n relay.on('error', function () {\n reject(new Error(\"failed to connect to \" + relay.url));\n });\n var pub = relay.publish(event);\n if (skipSeen) resolve();\n pub.on('failed', function (reason) {\n reject(reason);\n });\n pub.on('seen', function () {\n resolve();\n });\n });\n case 3:\n return _context9.abrupt(\"return\", _context9.sent);\n case 4:\n case \"end\":\n return _context9.stop();\n }\n }, _callee9);\n }));\n return _broadcastToRelay.apply(this, arguments);\n}\n\nvar ConnectURI = /*#__PURE__*/function () {\n function ConnectURI(_ref) {\n var target = _ref.target,\n metadata = _ref.metadata,\n relay = _ref.relay;\n this.target = target;\n this.metadata = metadata;\n this.relay = relay;\n }\n ConnectURI.fromURI = function fromURI(uri) {\n var url = new URL(uri);\n var target = url.hostname || url.pathname.substring(2);\n if (!target) throw new Error('Invalid connect URI: missing target');\n var relay = url.searchParams.get('relay');\n if (!relay) {\n throw new Error('Invalid connect URI: missing relay');\n }\n var metadata = url.searchParams.get('metadata');\n if (!metadata) {\n throw new Error('Invalid connect URI: missing metadata');\n }\n /* eslint-disable @typescript-eslint/no-unused-vars */\n try {\n var md = JSON.parse(metadata);\n return new ConnectURI({\n target: target,\n metadata: md,\n relay: relay\n });\n } catch (ignore) {\n throw new Error('Invalid connect URI: metadata is not valid JSON');\n }\n };\n var _proto = ConnectURI.prototype;\n _proto.toString = function toString() {\n return \"nostrconnect://\" + this.target + \"?metadata=\" + encodeURIComponent(JSON.stringify(this.metadata)) + \"&relay=\" + encodeURIComponent(this.relay);\n };\n _proto.approve = /*#__PURE__*/function () {\n var _approve = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(secretKey) {\n var rpc;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n rpc = new NostrRPC({\n relay: this.relay,\n secretKey: secretKey\n });\n _context.next = 3;\n return rpc.call({\n target: this.target,\n request: {\n method: 'connect',\n params: [getPublicKey(secretKey)]\n }\n }, {\n skipResponse: true\n });\n case 3:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function approve(_x) {\n return _approve.apply(this, arguments);\n }\n return approve;\n }();\n _proto.reject = /*#__PURE__*/function () {\n var _reject = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(secretKey) {\n var rpc;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n rpc = new NostrRPC({\n relay: this.relay,\n secretKey: secretKey\n });\n _context2.next = 3;\n return rpc.call({\n target: this.target,\n request: {\n method: 'disconnect',\n params: []\n }\n }, {\n skipResponse: true\n });\n case 3:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function reject(_x2) {\n return _reject.apply(this, arguments);\n }\n return reject;\n }();\n return ConnectURI;\n}();\nvar Connect = /*#__PURE__*/function () {\n function Connect(_ref2) {\n var target = _ref2.target,\n relay = _ref2.relay,\n secretKey = _ref2.secretKey;\n this.events = new EventEmitter();\n this.nip04 = {\n encrypt: function () {\n var _encrypt = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(_pubkey, _plaintext) {\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n throw new Error('Not implemented');\n case 1:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n function encrypt(_x3, _x4) {\n return _encrypt.apply(this, arguments);\n }\n return encrypt;\n }(),\n decrypt: function () {\n var _decrypt = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(_pubkey, _ciphertext) {\n return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n throw new Error('Not implemented');\n case 1:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n function decrypt(_x5, _x6) {\n return _decrypt.apply(this, arguments);\n }\n return decrypt;\n }()\n };\n this.rpc = new NostrRPC({\n relay: relay,\n secretKey: secretKey\n });\n if (target) {\n this.target = target;\n }\n }\n var _proto2 = Connect.prototype;\n _proto2.init = /*#__PURE__*/function () {\n var _init = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n var _this = this;\n var sub;\n return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this.rpc.listen();\n case 2:\n sub = _context6.sent;\n sub.on('event', /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(event) {\n var payload, plaintext, _payload$params, pubkey;\n return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n _context5.prev = 0;\n _context5.next = 3;\n return nip04.decrypt(_this.rpc.self.secret, event.pubkey, event.content);\n case 3:\n plaintext = _context5.sent;\n if (plaintext) {\n _context5.next = 6;\n break;\n }\n throw new Error('failed to decrypt event');\n case 6:\n payload = JSON.parse(plaintext);\n _context5.next = 12;\n break;\n case 9:\n _context5.prev = 9;\n _context5.t0 = _context5[\"catch\"](0);\n return _context5.abrupt(\"return\");\n case 12:\n if (isValidRequest(payload)) {\n _context5.next = 14;\n break;\n }\n return _context5.abrupt(\"return\");\n case 14:\n _context5.t1 = payload.method;\n _context5.next = _context5.t1 === 'connect' ? 17 : _context5.t1 === 'disconnect' ? 23 : 26;\n break;\n case 17:\n if (!(!payload.params || payload.params.length !== 1)) {\n _context5.next = 19;\n break;\n }\n throw new Error('connect: missing pubkey');\n case 19:\n _payload$params = payload.params, pubkey = _payload$params[0];\n _this.target = pubkey;\n _this.events.emit('connect', pubkey);\n return _context5.abrupt(\"break\", 26);\n case 23:\n _this.target = undefined;\n _this.events.emit('disconnect');\n return _context5.abrupt(\"break\", 26);\n case 26:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, null, [[0, 9]]);\n }));\n return function (_x7) {\n return _ref3.apply(this, arguments);\n };\n }());\n case 4:\n case \"end\":\n return _context6.stop();\n }\n }, _callee6, this);\n }));\n function init() {\n return _init.apply(this, arguments);\n }\n return init;\n }();\n _proto2.on = function on(evt, cb) {\n this.events.on(evt, cb);\n };\n _proto2.off = function off(evt, cb) {\n this.events.off(evt, cb);\n };\n _proto2.disconnect = /*#__PURE__*/function () {\n var _disconnect = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n while (1) switch (_context7.prev = _context7.next) {\n case 0:\n if (this.target) {\n _context7.next = 2;\n break;\n }\n throw new Error('Not connected');\n case 2:\n // notify the UI that we are disconnecting\n this.events.emit('disconnect');\n _context7.prev = 3;\n _context7.next = 6;\n return this.rpc.call({\n target: this.target,\n request: {\n method: 'disconnect',\n params: []\n }\n }, {\n skipResponse: true\n });\n case 6:\n _context7.next = 11;\n break;\n case 8:\n _context7.prev = 8;\n _context7.t0 = _context7[\"catch\"](3);\n throw new Error('Failed to disconnect');\n case 11:\n this.target = undefined;\n case 12:\n case \"end\":\n return _context7.stop();\n }\n }, _callee7, this, [[3, 8]]);\n }));\n function disconnect() {\n return _disconnect.apply(this, arguments);\n }\n return disconnect;\n }();\n _proto2.getPublicKey = /*#__PURE__*/function () {\n var _getPublicKey = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n var response;\n return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n while (1) switch (_context8.prev = _context8.next) {\n case 0:\n if (this.target) {\n _context8.next = 2;\n break;\n }\n throw new Error('Not connected');\n case 2:\n _context8.next = 4;\n return this.rpc.call({\n target: this.target,\n request: {\n method: 'get_public_key',\n params: []\n }\n });\n case 4:\n response = _context8.sent;\n return _context8.abrupt(\"return\", response);\n case 6:\n case \"end\":\n return _context8.stop();\n }\n }, _callee8, this);\n }));\n function getPublicKey() {\n return _getPublicKey.apply(this, arguments);\n }\n return getPublicKey;\n }();\n _proto2.signEvent = /*#__PURE__*/function () {\n var _signEvent = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9(event) {\n var signature;\n return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n while (1) switch (_context9.prev = _context9.next) {\n case 0:\n if (this.target) {\n _context9.next = 2;\n break;\n }\n throw new Error('Not connected');\n case 2:\n _context9.next = 4;\n return this.rpc.call({\n target: this.target,\n request: {\n method: 'sign_event',\n params: [event]\n }\n });\n case 4:\n signature = _context9.sent;\n return _context9.abrupt(\"return\", signature);\n case 6:\n case \"end\":\n return _context9.stop();\n }\n }, _callee9, this);\n }));\n function signEvent(_x8) {\n return _signEvent.apply(this, arguments);\n }\n return signEvent;\n }();\n _proto2.getRelays = /*#__PURE__*/function () {\n var _getRelays = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n while (1) switch (_context10.prev = _context10.next) {\n case 0:\n throw new Error('Not implemented');\n case 1:\n case \"end\":\n return _context10.stop();\n }\n }, _callee10);\n }));\n function getRelays() {\n return _getRelays.apply(this, arguments);\n }\n return getRelays;\n }();\n return Connect;\n}();\n\nvar NostrSigner = /*#__PURE__*/function (_NostrRPC) {\n _inheritsLoose(NostrSigner, _NostrRPC);\n function NostrSigner() {\n return _NostrRPC.apply(this, arguments) || this;\n }\n var _proto = NostrSigner.prototype;\n _proto.disconnect = /*#__PURE__*/function () {\n var _disconnect = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n this.events.emit('disconnect');\n return _context.abrupt(\"return\", null);\n case 2:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function disconnect() {\n return _disconnect.apply(this, arguments);\n }\n return disconnect;\n }();\n _proto.isConnected = function isConnected() {\n throw new Error('Method not implemented yet.');\n };\n return NostrSigner;\n}(NostrRPC);\n\nexport { Connect, ConnectURI, NostrRPC, NostrSigner, broadcastToRelay, connectToRelay, isValidRequest, isValidResponse, now, prepareEvent, prepareRequest, prepareResponse, randomID };\n//# sourceMappingURL=connect.esm.js.map\n","import NstrAdapter from './index.js';\nimport { Connect } from '@nostr-connect/connect';\n\nclass NstrAdapterNip46 extends NstrAdapter {\n #secretKey = null;\n \n constructor(pubkey, secretKey, adapterConfig = {}) {\n super(pubkey, adapterConfig);\n this.#secretKey = secretKey;\n }\n\n async signEvent(event) {\n const connect = new Connect({\n secretKey: this.#secretKey,\n target: this.pubkey,\n });\n await connect.init();\n \n event.sig = await connect.signEvent('12323423434');\n return event;\n }\n}\n\nexport default NstrAdapterNip46;\n","import { generatePrivateKey, signEvent, getPublicKey, nip04 } from 'nostr-tools';\nimport NstrAdapter from './index.js';\n\nclass NstrAdapterDiscadableKeys extends NstrAdapter {\n #privateKey;\n\n constructor(adapterConfig={}) {\n let key = localStorage.getItem('nostrichat-discardable-key');\n let publicKey = localStorage.getItem('nostrichat-discardable-public-key');\n\n if (!key) {\n key = generatePrivateKey();\n console.log('generated key', key);\n publicKey = getPublicKey(key);\n }\n\n localStorage.setItem('nostrichat-discardable-key', key);\n localStorage.setItem('nostrichat-discardable-public-key', publicKey);\n\n super(publicKey, adapterConfig);\n \n this.#privateKey = key;\n console.log(key);\n }\n\n async signEvent(event) {\n event.sig = await signEvent(event, this.#privateKey);\n return event;\n }\n\n async encrypt(destPubkey, message) {\n console.log(this.#privateKey);\n return await nip04.encrypt(this.#privateKey, destPubkey, message);\n }\n\n async decrypt(destPubkey, message) {\n return await nip04.decrypt(this.#privateKey, destPubkey, message);\n }\n}\n\nexport default NstrAdapterDiscadableKeys;\n","\n\n\n How would you like to connect?\n \n\n{#if publicKey}\n \n Nostr Connect is a WIP, not fully implemented yet!\n
\n\n \n You are currently connected with the following public key:\n {publicKey} \n
\n{/if}\n\n{#if nip46URI}\n \n Scan this with your Nostr Connect (click to copy to clipboard)\n
\n\n \n \n
\n\n { nip46URI = null; }}>\n Cancel\n \n{:else if !publicKey}\n \n {#if hasNostrNip07}\n \n Browser Extension (NIP-07)\n \n {/if}\n\n\n \n Nostr Connect (NIP-46)\n \n\n \n Anonymous\n \n (Ephemeral Keys)\n \n \n
\n{/if}\n\n","\"use strict\";\n/* tslint:disable:max-classes-per-file */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InternalError = exports.InvalidDataError = exports.RoutingError = exports.UnsupportedMethodError = exports.ConnectionError = exports.RejectionError = exports.MissingProviderError = void 0;\n/**\n * Workaround for custom errors when compiling typescript targeting 'ES5'.\n * see: https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work\n * @param {CustomError} error\n * @param newTarget the value of `new.target`\n * @param {Function} errorType\n */\nfunction fixError(error, newTarget, errorType) {\n Object.setPrototypeOf(error, errorType.prototype);\n // when an error constructor is invoked with the `new` operator\n if (newTarget === errorType) {\n error.name = newTarget.name;\n // exclude the constructor call of the error type from the stack trace.\n if (Error.captureStackTrace) {\n Error.captureStackTrace(error, errorType);\n }\n else {\n var stack = new Error(error.message).stack;\n if (stack) {\n error.stack = fixStack(stack, \"new \".concat(newTarget.name));\n }\n }\n }\n}\nfunction fixStack(stack, functionName) {\n if (!stack)\n return stack;\n if (!functionName)\n return stack;\n // exclude lines starts with: \" at functionName \"\n var exclusion = new RegExp(\"\\\\s+at\\\\s\".concat(functionName, \"\\\\s\"));\n var lines = stack.split(\"\\n\");\n var resultLines = lines.filter(function (line) { return !line.match(exclusion); });\n return resultLines.join(\"\\n\");\n}\n/// CUSTOM ERRORS ///\n// When no WebLN provider is available\nvar MissingProviderError = /** @class */ (function (_super) {\n __extends(MissingProviderError, _super);\n function MissingProviderError(message) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, message) || this;\n fixError(_this, _newTarget, MissingProviderError);\n return _this;\n }\n return MissingProviderError;\n}(Error));\nexports.MissingProviderError = MissingProviderError;\n// When the user rejects a request\nvar RejectionError = /** @class */ (function (_super) {\n __extends(RejectionError, _super);\n function RejectionError(message) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, message) || this;\n fixError(_this, _newTarget, RejectionError);\n return _this;\n }\n return RejectionError;\n}(Error));\nexports.RejectionError = RejectionError;\n// When the node can't be connected to (i.e. the app did nothing wrong)\nvar ConnectionError = /** @class */ (function (_super) {\n __extends(ConnectionError, _super);\n function ConnectionError(message) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, message) || this;\n fixError(_this, _newTarget, ConnectionError);\n return _this;\n }\n return ConnectionError;\n}(Error));\nexports.ConnectionError = ConnectionError;\n// The WebLN provider doesn't support this method\nvar UnsupportedMethodError = /** @class */ (function (_super) {\n __extends(UnsupportedMethodError, _super);\n function UnsupportedMethodError(message) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, message) || this;\n fixError(_this, _newTarget, UnsupportedMethodError);\n return _this;\n }\n return UnsupportedMethodError;\n}(Error));\nexports.UnsupportedMethodError = UnsupportedMethodError;\n// The desired node couldn't be routed to\nvar RoutingError = /** @class */ (function (_super) {\n __extends(RoutingError, _super);\n function RoutingError(message) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, message) || this;\n fixError(_this, _newTarget, RoutingError);\n return _this;\n }\n return RoutingError;\n}(Error));\nexports.RoutingError = RoutingError;\n// An argument passed was somehow invalid (e.g. malformed invoice)\nvar InvalidDataError = /** @class */ (function (_super) {\n __extends(InvalidDataError, _super);\n function InvalidDataError(message) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, message) || this;\n fixError(_this, _newTarget, InvalidDataError);\n return _this;\n }\n return InvalidDataError;\n}(Error));\nexports.InvalidDataError = InvalidDataError;\n// Something broke in the WebLN provider internally, nothing to do with the app\nvar InternalError = /** @class */ (function (_super) {\n __extends(InternalError, _super);\n function InternalError(message) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, message) || this;\n fixError(_this, _newTarget, InternalError);\n return _this;\n }\n return InternalError;\n}(Error));\nexports.InternalError = InternalError;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.requestProvider = void 0;\nvar errors_1 = require(\"./errors\");\nfunction requestProvider(_) {\n if (_ === void 0) { _ = {}; }\n return new Promise(function (resolve, reject) {\n if (typeof window === 'undefined') {\n return reject(new Error('Must be called in a browser context'));\n }\n var webln = window.webln;\n if (!webln) {\n return reject(new errors_1.MissingProviderError('Your browser has no WebLN provider'));\n }\n webln.enable()\n .then(function () { return resolve(webln); })\n .catch(function (err) { return reject(err); });\n });\n}\nexports.requestProvider = requestProvider;\n","\"use strict\";\n/**\n * Everything needed to implement your own provider.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./client\"), exports);\n__exportStar(require(\"./provider\"), exports);\n__exportStar(require(\"./errors\"), exports);\n","\n\n\n (hover = true)}\n on:mouseleave={() => (hover = false)}\n on:click|preventDefault={zap}\n>\n {#if !hover}\n {icon} \n {:else}\n \n {amountDisplay||amount}\n \n {/if}\n
","\n\n (hovering = true)}\n on:mouseleave={() => (hovering = false)}\n>\n
\n
\n
\n \n \n\n
0 ? 'opacity-100 text-base' : 'bg-orange-500 opacity-10 text-xl'}\n w-8 h-8\n flex items-center\n justify-center\n hover:opacity-100\n \"\n on:click|preventDefault={() => $zappingMessage = $zappingMessage === event.id ? null : event.id}\n >\n {#if zappedAmount > 0}\n \n ⚡️\n \n {zappedAmount}\n \n
\n {:else}\n ⚡️\n {/if}\n \n\n
\n {#if zappingIt}\n {#if mobilePR}\n
\n {:else}\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n {/if}\n {/if}\n
\n\n \n
\n\n
\n
\n
\n\n
{selectMessage(event.id)}}\n on:keydown|preventDefault={()=>{selectMessage(event.id)}}\n on:keyup|preventDefault={()=>{selectMessage(event.id)}}\n >\n {event.content}\n
\n\n
\n
\n \n {timestamp.toLocaleString()}\n \n
\n\n {#if byWebsiteOwner}\n
\n Website owner\n
\n {:else}\n
\n {displayName}\n
\n {/if}\n
\n
\n
\n
\n\n{#if responses[event.id].length > 0}\n \n {#each responses[event.id] as response}\n \n {/each}\n
\n{/if}\n\n","export { identity as linear } from '../internal/index.mjs';\n\n/*\nAdapted from https://github.com/mattdesl\nDistributed under MIT License https://github.com/mattdesl/eases/blob/master/LICENSE.md\n*/\nfunction backInOut(t) {\n const s = 1.70158 * 1.525;\n if ((t *= 2) < 1)\n return 0.5 * (t * t * ((s + 1) * t - s));\n return 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2);\n}\nfunction backIn(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n}\nfunction backOut(t) {\n const s = 1.70158;\n return --t * t * ((s + 1) * t + s) + 1;\n}\nfunction bounceOut(t) {\n const a = 4.0 / 11.0;\n const b = 8.0 / 11.0;\n const c = 9.0 / 10.0;\n const ca = 4356.0 / 361.0;\n const cb = 35442.0 / 1805.0;\n const cc = 16061.0 / 1805.0;\n const t2 = t * t;\n return t < a\n ? 7.5625 * t2\n : t < b\n ? 9.075 * t2 - 9.9 * t + 3.4\n : t < c\n ? ca * t2 - cb * t + cc\n : 10.8 * t * t - 20.52 * t + 10.72;\n}\nfunction bounceInOut(t) {\n return t < 0.5\n ? 0.5 * (1.0 - bounceOut(1.0 - t * 2.0))\n : 0.5 * bounceOut(t * 2.0 - 1.0) + 0.5;\n}\nfunction bounceIn(t) {\n return 1.0 - bounceOut(1.0 - t);\n}\nfunction circInOut(t) {\n if ((t *= 2) < 1)\n return -0.5 * (Math.sqrt(1 - t * t) - 1);\n return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n}\nfunction circIn(t) {\n return 1.0 - Math.sqrt(1.0 - t * t);\n}\nfunction circOut(t) {\n return Math.sqrt(1 - --t * t);\n}\nfunction cubicInOut(t) {\n return t < 0.5 ? 4.0 * t * t * t : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0;\n}\nfunction cubicIn(t) {\n return t * t * t;\n}\nfunction cubicOut(t) {\n const f = t - 1.0;\n return f * f * f + 1.0;\n}\nfunction elasticInOut(t) {\n return t < 0.5\n ? 0.5 *\n Math.sin(((+13.0 * Math.PI) / 2) * 2.0 * t) *\n Math.pow(2.0, 10.0 * (2.0 * t - 1.0))\n : 0.5 *\n Math.sin(((-13.0 * Math.PI) / 2) * (2.0 * t - 1.0 + 1.0)) *\n Math.pow(2.0, -10.0 * (2.0 * t - 1.0)) +\n 1.0;\n}\nfunction elasticIn(t) {\n return Math.sin((13.0 * t * Math.PI) / 2) * Math.pow(2.0, 10.0 * (t - 1.0));\n}\nfunction elasticOut(t) {\n return (Math.sin((-13.0 * (t + 1.0) * Math.PI) / 2) * Math.pow(2.0, -10.0 * t) + 1.0);\n}\nfunction expoInOut(t) {\n return t === 0.0 || t === 1.0\n ? t\n : t < 0.5\n ? +0.5 * Math.pow(2.0, 20.0 * t - 10.0)\n : -0.5 * Math.pow(2.0, 10.0 - t * 20.0) + 1.0;\n}\nfunction expoIn(t) {\n return t === 0.0 ? t : Math.pow(2.0, 10.0 * (t - 1.0));\n}\nfunction expoOut(t) {\n return t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t);\n}\nfunction quadInOut(t) {\n t /= 0.5;\n if (t < 1)\n return 0.5 * t * t;\n t--;\n return -0.5 * (t * (t - 2) - 1);\n}\nfunction quadIn(t) {\n return t * t;\n}\nfunction quadOut(t) {\n return -t * (t - 2.0);\n}\nfunction quartInOut(t) {\n return t < 0.5\n ? +8.0 * Math.pow(t, 4.0)\n : -8.0 * Math.pow(t - 1.0, 4.0) + 1.0;\n}\nfunction quartIn(t) {\n return Math.pow(t, 4.0);\n}\nfunction quartOut(t) {\n return Math.pow(t - 1.0, 3.0) * (1.0 - t) + 1.0;\n}\nfunction quintInOut(t) {\n if ((t *= 2) < 1)\n return 0.5 * t * t * t * t * t;\n return 0.5 * ((t -= 2) * t * t * t * t + 2);\n}\nfunction quintIn(t) {\n return t * t * t * t * t;\n}\nfunction quintOut(t) {\n return --t * t * t * t * t + 1;\n}\nfunction sineInOut(t) {\n return -0.5 * (Math.cos(Math.PI * t) - 1);\n}\nfunction sineIn(t) {\n const v = Math.cos(t * Math.PI * 0.5);\n if (Math.abs(v) < 1e-14)\n return 1;\n else\n return 1 - v;\n}\nfunction sineOut(t) {\n return Math.sin((t * Math.PI) / 2);\n}\n\nexport { backIn, backInOut, backOut, bounceIn, bounceInOut, bounceOut, circIn, circInOut, circOut, cubicIn, cubicInOut, cubicOut, elasticIn, elasticInOut, elasticOut, expoIn, expoInOut, expoOut, quadIn, quadInOut, quadOut, quartIn, quartInOut, quartOut, quintIn, quintInOut, quintOut, sineIn, sineInOut, sineOut };\n","export default {\n $(selector) {\n if (typeof selector === \"string\") {\n return document.querySelector(selector);\n }\n return selector;\n },\n extend(...args) {\n return Object.assign(...args);\n },\n cumulativeOffset(element) {\n let top = 0;\n let left = 0;\n\n do {\n top += element.offsetTop || 0;\n left += element.offsetLeft || 0;\n element = element.offsetParent;\n } while (element);\n\n return {\n top: top,\n left: left\n };\n },\n directScroll(element) {\n return element && element !== document && element !== document.body;\n },\n scrollTop(element, value) {\n let inSetter = value !== undefined;\n if (this.directScroll(element)) {\n return inSetter ? (element.scrollTop = value) : element.scrollTop;\n } else {\n return inSetter\n ? (document.documentElement.scrollTop = document.body.scrollTop = value)\n : window.pageYOffset ||\n document.documentElement.scrollTop ||\n document.body.scrollTop ||\n 0;\n }\n },\n scrollLeft(element, value) {\n let inSetter = value !== undefined;\n if (this.directScroll(element)) {\n return inSetter ? (element.scrollLeft = value) : element.scrollLeft;\n } else {\n return inSetter\n ? (document.documentElement.scrollLeft = document.body.scrollLeft = value)\n : window.pageXOffset ||\n document.documentElement.scrollLeft ||\n document.body.scrollLeft ||\n 0;\n }\n }\n};\n","import { cubicInOut } from \"svelte/easing\";\nimport { noop, loop, now } from \"svelte/internal\";\nimport _ from \"./helper\";\n\nconst defaultOptions = {\n container: \"body\",\n duration: 500,\n delay: 0,\n offset: 0,\n easing: cubicInOut,\n onStart: noop,\n onDone: noop,\n onAborting: noop,\n scrollX: false,\n scrollY: true\n};\n\nconst _scrollTo = options => {\n let {\n offset,\n duration,\n delay,\n easing,\n x=0,\n y=0,\n scrollX,\n scrollY,\n onStart,\n onDone,\n container,\n onAborting,\n element\n } = options;\n\n if (typeof offset === \"function\") {\n offset = offset();\n }\n\n var cumulativeOffsetContainer = _.cumulativeOffset(container);\n var cumulativeOffsetTarget = element\n ? _.cumulativeOffset(element)\n : { top: y, left: x };\n\n var initialX = _.scrollLeft(container);\n var initialY = _.scrollTop(container);\n\n var targetX =\n cumulativeOffsetTarget.left - cumulativeOffsetContainer.left + offset;\n var targetY =\n cumulativeOffsetTarget.top - cumulativeOffsetContainer.top + offset;\n\n var diffX = targetX - initialX;\n\tvar diffY = targetY - initialY;\n\n let scrolling = true;\n let started = false;\n let start_time = now() + delay;\n let end_time = start_time + duration;\n\n function scrollToTopLeft(element, top, left) {\n if (scrollX) _.scrollLeft(element, left);\n if (scrollY) _.scrollTop(element, top);\n }\n\n function start(delayStart) {\n if (!delayStart) {\n started = true;\n onStart(element, {x, y});\n }\n }\n\n function tick(progress) {\n scrollToTopLeft(\n container,\n initialY + diffY * progress,\n initialX + diffX * progress\n );\n }\n\n function stop() {\n scrolling = false;\n }\n\n loop(now => {\n if (!started && now >= start_time) {\n start(false)\n }\n\n if (started && now >= end_time) {\n tick(1);\n stop();\n onDone(element, {x, y});\n }\n\n if (!scrolling) {\n onAborting(element, {x, y});\n return false;\n }\n if (started) {\n const p = now - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t);\n }\n\n return true;\n });\n\n start(delay);\n\n tick(0);\n\n return stop;\n};\n\nconst proceedOptions = options => {\n\tlet opts = _.extend({}, defaultOptions, options);\n opts.container = _.$(opts.container);\n opts.element = _.$(opts.element);\n return opts;\n};\n\nconst scrollContainerHeight = containerElement => {\n if (\n containerElement &&\n containerElement !== document &&\n containerElement !== document.body\n ) {\n return containerElement.scrollHeight - containerElement.offsetHeight;\n } else {\n let body = document.body;\n let html = document.documentElement;\n\n return Math.max(\n body.scrollHeight,\n body.offsetHeight,\n html.clientHeight,\n html.scrollHeight,\n html.offsetHeight\n );\n }\n};\n\nexport const setGlobalOptions = options => {\n\t_.extend(defaultOptions, options || {});\n};\n\nexport const scrollTo = options => {\n return _scrollTo(proceedOptions(options));\n};\n\nexport const scrollToBottom = options => {\n options = proceedOptions(options);\n\n return _scrollTo(\n _.extend(options, {\n element: null,\n y: scrollContainerHeight(options.container)\n })\n );\n};\n\nexport const scrollToTop = options => {\n options = proceedOptions(options);\n\n return _scrollTo(\n _.extend(options, {\n element: null,\n y: 0\n })\n );\n};\n\nexport const makeScrollToAction = scrollToFunc => {\n return (node, options) => {\n let current = options;\n const handle = e => {\n e.preventDefault();\n scrollToFunc(\n typeof current === \"string\" ? { element: current } : current\n );\n };\n node.addEventListener(\"click\", handle);\n node.addEventListener(\"touchstart\", handle);\n return {\n update(options) {\n current = options;\n },\n destroy() {\n node.removeEventListener(\"click\", handle);\n node.removeEventListener(\"touchstart\", handle);\n }\n };\n };\n};\n\nexport const scrollto = makeScrollToAction(scrollTo);\nexport const scrolltotop = makeScrollToAction(scrollToTop);\nexport const scrolltobottom = makeScrollToAction(scrollToBottom);\n","\n\n\n\n
\n {#if $chatAdapter?.pubkey}\n {ownName}\n {/if}\n
\n\n
\n \n {#each Array(totalRelays) as _, i}\n i ? 'bg-green-500' : 'bg-gray-300'}\n w-2 h-2\n \"> \n {/each}\n
\n\n {connectedRelays}/{totalRelays} relays\n \n
\n\n{#if $selectedMessage}\n {#if !getEventById($selectedMessage)}\n Couldn't find event with ID {$selectedMessage} \n {:else}\n \n
\n \n \n \n \n\n
\n \n {getEventById($selectedMessage).content}\n \n
\n
\n {/if}\n{/if}\n\n\n
\n {#if $selectedMessage}\n \n {:else}\n {#each events as event}\n \n {#if event.deleted}\n 👆 deleted\n {/if}\n {/each}\n {/if}\n
\n
\n\n\n\n
\n {#if chatConfiguration.chatType === 'DM'}\n Encrypted chat: \n only your chat partner can see these messages.\n {:else}\n Public chat: \n anyone can see these messages.\n {/if}\n
\n\n
\n
\n\n","\n\n{#if !chatStarted}\n \n{:else}\n \n{/if}\n\n","\n\n\n {#if showChat}\n
\n {#if !dismissedIntro}\n
\n NostriChat\n \n\n
\n This is a FOSS chat app built on top of the Nostr protocol.\n
\n\n
\n Choose how you would like to chat:\n
\n\n
\n You can use it to ask for help\n PSBT.io \n to the creators of this site or to\n anyone willing to help.\n
\n\n
\n Keep in mind that this chat is public,\n anyone can read it, so don't exchange\n private information and use common-sense.\n
\n\n
\n Continue\n \n {:else}\n
\n {/if}\n
\n {/if}\n\n\n
\n
\n\n","import Widget from './Widget.svelte';\n\nvar div = document.createElement('DIV');\nvar script = document.currentScript;\nconst websiteOwnerPubkey = script.getAttribute('data-website-owner-pubkey');\nconst chatType = script.getAttribute('data-chat-type');\nlet chatTags = script.getAttribute('data-chat-tags');\nlet chatReferenceTags = script.getAttribute('data-chat-reference-tags');\nlet relays = script.getAttribute('data-relays');\nscript.parentNode.insertBefore(div, script);\n\nif (!relays) {\n\trelays = 'wss://relay.f7z.io,wss://nos.lol,wss://relay.nostr.info,wss://nostr-pub.wellorder.net,wss://relay.current.fyi,wss://relay.nostr.band'\n}\n\nrelays = relays.split(',');\nchatTags = chatTags ? chatTags.split(',') : [];\nchatReferenceTags = chatReferenceTags ? chatReferenceTags.split(',') : [];\n\nconst embed = new Widget({\n\ttarget: div,\n\tprops: {\n\t\twebsiteOwnerPubkey,\n\t\tchatType,\n\t\tchatTags,\n\t\tchatReferenceTags,\n\t\trelays\n\t},\n});\n"],"names":["now","mode","ECL","math","Polynomial","BitByte","RSBlock","BitBuffer","util","bytesToNumber","hexToBytes","bytesToHex","concatBytes","hexes","utils","getPublicKey","crypto","number","bool","bytes","hash","exists","output","assert","setBigUint64","Chi","Maj","SHA256_K","IV","SHA256_W","SHA2","SHA256","sha256","SHA224","normalize","base58check","bech32","utf8","hex","require$$0","require$$1","pbkdf2_1","_assert_js_1","utils_js_1","require$$2","_sha2_js_1","sha512","SHA512_Kh","SHA512_Kl","SHA512_W_H","SHA512_W_L","SHA512","SHA512_224","SHA512_256","SHA384","require$$3","require$$4","require$$5","secp.utils","base58checker","secp.getPublicKey","secp.Point","assertBytes","secp.CURVE","secp.signSync","secp.Signature","secp.verify","secp256k1.utils","secp256k1.schnorr","secp256k12.utils","secp256k12.schnorr","decode","secp256k13.utils","secp256k14.getSharedSecret","mnemonicToSeedSync","secp256k15.utils","generateMnemonic","validateMnemonic","sha2562","secp256k16.utils","secp256k16.schnorr","bech322","secp256k17.utils","sha2563","Relay","EventEmitter","eventsModule","events","global","ForOfAdaptor_1","ForOfAdaptor","this","Container_1","NativeArrayIterator_1","NativeArrayIterator","SetContainer_1","SetContainer","Exception_1","Exception","LogicError_1","LogicError","InvalidArgument_1","InvalidArgument","OutOfRange_1","OutOfRange","UniqueSet_1","UniqueSet","hash_1","ListIterator_1","ListIterator","Repeater_1","Repeater","ListContainer_1","ListContainer","ReverseIterator_1","ReverseIterator","HashBuckets_1","HashBuckets","SetHashBuckets_1","SetHashBuckets","Pair_1","Pair","MapContainer_1","MapContainer","UniqueMap_1","UniqueMap","MapHashBuckets_1","MapHashBuckets","Entry_1","Entry","EventTarget_1","EventTarget","Event_1","Event","CloseEvent_1","CloseEvent","MessageEvent_1","MessageEvent","ErrorEvent_1","ErrorEvent","nip57","nip19","nip192","EventEmitter2","EventEmitter3","EventEmitter4","nip193","nip05","EventEmitter5","bolt11","EventEmitter6","debug","uuid.v4","RelayPool","nip04","create_if_block_2","create_if_block","requestProvider","create_if_block_4","create_if_block_1","animateScroll.scrollToBottom"],"mappings":"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AAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACvB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACvB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACvB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAC3B,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAC3B,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAC5B,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAC5B,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAC5B,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAC5B,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAC5B,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAChC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACjC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACjC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACjC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACjC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACjC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACjC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE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C;IACpG,IAAI,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC,CAAC;IACJ,MAAM,MAAM,GAAG;IACf,UAAIG,MAAI,OAAEC,KAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS;IACnE,CAAC,CAAC;AACqB,CAAC,wCAAwC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;;;;;ICxXjG,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,IAAgB,QAAA,GAAA,OAAA,CAAA,QAAA,GAAG,KAAK,CAAC,CAAC;IAC1B,QAAA,GAAA,OAAA,CAAA,QAAgB,GAAG,CAAC;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;;;;;;ICjgEhB,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,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"}
\ No newline at end of file
+{"version":3,"file":"bundle.js","sources":["../../node_modules/svelte/internal/index.mjs","../../node_modules/svelte/store/index.mjs","../../src/lib/store.js","../../node_modules/@noble/hashes/esm/_assert.js","../../node_modules/@noble/hashes/esm/crypto.js","../../node_modules/@noble/hashes/esm/utils.js","../../node_modules/@noble/hashes/esm/_sha2.js","../../node_modules/@noble/hashes/esm/sha256.js","../../node_modules/@noble/curves/esm/abstract/utils.js","../../node_modules/@noble/curves/esm/abstract/modular.js","../../node_modules/@noble/curves/esm/abstract/curve.js","../../node_modules/@noble/curves/esm/abstract/weierstrass.js","../../node_modules/@noble/hashes/esm/hmac.js","../../node_modules/@noble/curves/esm/_shortw_utils.js","../../node_modules/@noble/curves/esm/secp256k1.js","../../node_modules/@noble/curves/esm/abstract/hash-to-curve.js","../../node_modules/@scure/base/lib/esm/index.js","../../node_modules/@scure/bip39/wordlists/english.js","../../node_modules/@noble/hashes/_assert.js","../../node_modules/@noble/hashes/crypto.js","../../node_modules/@noble/hashes/utils.js","../../node_modules/@noble/hashes/hmac.js","../../node_modules/@noble/hashes/pbkdf2.js","../../node_modules/@noble/hashes/_sha2.js","../../node_modules/@noble/hashes/sha256.js","../../node_modules/@noble/hashes/_u64.js","../../node_modules/@noble/hashes/sha512.js","../../node_modules/@scure/base/lib/index.js","../../node_modules/@scure/bip39/index.js","../../node_modules/@noble/hashes/esm/ripemd160.js","../../node_modules/@noble/hashes/esm/_u64.js","../../node_modules/@noble/hashes/esm/sha512.js","../../node_modules/@scure/bip32/lib/esm/index.js","../../node_modules/nostr-tools/lib/esm/nostr.mjs","../../node_modules/ws/lib/constants.js","../../15c861a31cbb590bb45f136455e8d2","../../node_modules/node-gyp-build/index.js","../../node_modules/node-gyp-build/node-gyp-build.js","../../node_modules/bufferutil/index.js","../../node_modules/bufferutil/fallback.js","../../node_modules/ws/lib/buffer-util.js","../../node_modules/ws/lib/permessage-deflate.js","../../node_modules/ws/lib/limiter.js","../../node_modules/utf-8-validate/index.js","../../355f6efa2839988db2ddf9f6f06144","../../node_modules/utf-8-validate/fallback.js","../../node_modules/ws/lib/validation.js","../../node_modules/ws/lib/receiver.js","../../node_modules/ws/lib/sender.js","../../node_modules/ws/lib/extension.js","../../node_modules/ws/lib/websocket.js","../../node_modules/ws/lib/event-target.js","../../node_modules/ws/lib/subprotocol.js","../../node_modules/ws/lib/websocket-server.js","../../node_modules/nostr/lib/relay.js","../../node_modules/ws/index.js","../../node_modules/ws/lib/stream.js","../../node_modules/nostr/lib/relay-pool.js","../../node_modules/uuid/dist/esm-browser/rng.js","../../node_modules/uuid/dist/esm-browser/stringify.js","../../node_modules/uuid/dist/esm-browser/native.js","../../node_modules/uuid/dist/esm-browser/v4.js","../../node_modules/ms/index.js","../../node_modules/debug/src/common.js","../../node_modules/debug/src/browser.js","../../node_modules/eventemitter3/index.js","../../node_modules/tstl/utility/node.js","../../node_modules/websocket/lib/browser.js","../../node_modules/es5-ext/global.js","../../node_modules/websocket/lib/version.js","../../node_modules/tstl/base/container/Container.js","../../node_modules/tstl/internal/iterator/disposable/ForOfAdaptor.js","../../node_modules/tstl/internal/iterator/disposable/NativeArrayIterator.js","../../node_modules/tstl/exception/LogicError.js","../../node_modules/tstl/exception/Exception.js","../../node_modules/tstl/exception/InvalidArgument.js","../../node_modules/tstl/internal/exception/ErrorGenerator.js","../../node_modules/tstl/exception/OutOfRange.js","../../node_modules/tstl/base/container/UniqueSet.js","../../node_modules/tstl/base/container/SetContainer.js","../../node_modules/tstl/functional/uid.js","../../node_modules/tstl/internal/Global.js","../../node_modules/tstl/functional/hash.js","../../node_modules/tstl/functional/comparators.js","../../node_modules/tstl/internal/container/associative/IHashContainer.js","../../node_modules/tstl/internal/container/associative/IAssociativeContainer.js","../../node_modules/tstl/internal/iterator/ListIterator.js","../../node_modules/tstl/iterator/global.js","../../node_modules/tstl/internal/container/linear/ListContainer.js","../../node_modules/tstl/internal/iterator/disposable/Repeater.js","../../node_modules/tstl/internal/iterator/ReverseIterator.js","../../node_modules/tstl/internal/hash/HashBuckets.js","../../node_modules/tstl/utility/Pair.js","../../node_modules/tstl/container/HashSet.js","../../node_modules/tstl/internal/container/associative/SetElementList.js","../../node_modules/tstl/internal/hash/SetHashBuckets.js","../../node_modules/tstl/base/container/UniqueMap.js","../../node_modules/tstl/base/container/MapContainer.js","../../node_modules/tstl/container/HashMap.js","../../node_modules/tstl/internal/container/associative/MapElementList.js","../../node_modules/tstl/internal/hash/MapHashBuckets.js","../../node_modules/tstl/utility/Entry.js","../../node_modules/websocket-polyfill/lib/events/Event.js","../../node_modules/websocket-polyfill/lib/index.js","../../node_modules/websocket-polyfill/lib/WebSocket.js","../../node_modules/websocket-polyfill/lib/events/EventTarget.js","../../node_modules/websocket-polyfill/lib/events/CloseEvent.js","../../node_modules/websocket-polyfill/lib/events/MessageEvent.js","../../node_modules/websocket-polyfill/lib/events/ErrorEvent.js","../../node_modules/light-bolt11-decoder/bolt11.js","../../node_modules/@nostr-dev-kit/ndk/lib/esm/ndk.mjs","../../src/lib/adapters/index.js","../../src/lib/adapters/nip07.js","../../node_modules/@nostr-connect/connect/dist/connect.esm.js","../../src/lib/adapters/nip46.js","../../src/lib/adapters/discardable-keys.js","../../src/KeyPrompt.svelte","../../node_modules/webln/lib/errors.js","../../node_modules/webln/lib/client.js","../../node_modules/webln/lib/index.js","../../src/ZapAmountButton.svelte","../../node_modules/webln/lib/provider.js","../../src/NostrNote.svelte","../../node_modules/svelte-scrollto/src/helper.js","../../node_modules/svelte-scrollto/src/index.js","../../node_modules/svelte/easing/index.mjs","../../src/ConnectedWidget.svelte","../../src/Container.svelte","../../src/Widget.svelte","../../src/widget.js"],"sourcesContent":["function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n // @ts-ignore\n for (const k in src)\n tar[k] = src[k];\n return tar;\n}\n// Adapted from https://github.com/then/is-promise/blob/master/index.js\n// Distributed under MIT License https://github.com/then/is-promise/blob/master/LICENSE\nfunction is_promise(value) {\n return !!value && (typeof value === 'object' || typeof value === 'function') && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n element.__svelte_meta = {\n loc: { file, line, column, char }\n };\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nlet src_url_equal_anchor;\nfunction src_url_equal(element_src, url) {\n if (!src_url_equal_anchor) {\n src_url_equal_anchor = document.createElement('a');\n }\n src_url_equal_anchor.href = url;\n return element_src === src_url_equal_anchor.href;\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction is_empty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction validate_store(store, name) {\n if (store != null && typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(store, ...callbacks) {\n if (store == null) {\n return noop;\n }\n const unsub = store.subscribe(...callbacks);\n return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\nfunction get_store_value(store) {\n let value;\n subscribe(store, _ => value = _)();\n return value;\n}\nfunction component_subscribe(component, store, callback) {\n component.$$.on_destroy.push(subscribe(store, callback));\n}\nfunction create_slot(definition, ctx, $$scope, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, $$scope, fn) {\n return definition[1] && fn\n ? assign($$scope.ctx.slice(), definition[1](fn(ctx)))\n : $$scope.ctx;\n}\nfunction get_slot_changes(definition, $$scope, dirty, fn) {\n if (definition[2] && fn) {\n const lets = definition[2](fn(dirty));\n if ($$scope.dirty === undefined) {\n return lets;\n }\n if (typeof lets === 'object') {\n const merged = [];\n const len = Math.max($$scope.dirty.length, lets.length);\n for (let i = 0; i < len; i += 1) {\n merged[i] = $$scope.dirty[i] | lets[i];\n }\n return merged;\n }\n return $$scope.dirty | lets;\n }\n return $$scope.dirty;\n}\nfunction update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn) {\n if (slot_changes) {\n const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n slot.p(slot_context, slot_changes);\n }\n}\nfunction update_slot(slot, slot_definition, ctx, $$scope, dirty, get_slot_changes_fn, get_slot_context_fn) {\n const slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn);\n}\nfunction get_all_dirty_from_scope($$scope) {\n if ($$scope.ctx.length > 32) {\n const dirty = [];\n const length = $$scope.ctx.length / 32;\n for (let i = 0; i < length; i++) {\n dirty[i] = -1;\n }\n return dirty;\n }\n return -1;\n}\nfunction exclude_internal_props(props) {\n const result = {};\n for (const k in props)\n if (k[0] !== '$')\n result[k] = props[k];\n return result;\n}\nfunction compute_rest_props(props, keys) {\n const rest = {};\n keys = new Set(keys);\n for (const k in props)\n if (!keys.has(k) && k[0] !== '$')\n rest[k] = props[k];\n return rest;\n}\nfunction compute_slots(slots) {\n const result = {};\n for (const key in slots) {\n result[key] = true;\n }\n return result;\n}\nfunction once(fn) {\n let ran = false;\n return function (...args) {\n if (ran)\n return;\n ran = true;\n fn.call(this, ...args);\n };\n}\nfunction null_to_empty(value) {\n return value == null ? '' : value;\n}\nfunction set_store_value(store, ret, value) {\n store.set(value);\n return ret;\n}\nconst has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nfunction action_destroyer(action_result) {\n return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n ? () => window.performance.now()\n : () => Date.now();\nlet raf = is_client ? cb => requestAnimationFrame(cb) : noop;\n// used internally for testing\nfunction set_now(fn) {\n now = fn;\n}\nfunction set_raf(fn) {\n raf = fn;\n}\n\nconst tasks = new Set();\nfunction run_tasks(now) {\n tasks.forEach(task => {\n if (!task.c(now)) {\n tasks.delete(task);\n task.f();\n }\n });\n if (tasks.size !== 0)\n raf(run_tasks);\n}\n/**\n * For testing purposes only!\n */\nfunction clear_loops() {\n tasks.clear();\n}\n/**\n * Creates a new task that runs on each raf frame\n * until it returns a falsy value or is aborted\n */\nfunction loop(callback) {\n let task;\n if (tasks.size === 0)\n raf(run_tasks);\n return {\n promise: new Promise(fulfill => {\n tasks.add(task = { c: callback, f: fulfill });\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\n// Track which nodes are claimed during hydration. Unclaimed nodes can then be removed from the DOM\n// at the end of hydration without touching the remaining nodes.\nlet is_hydrating = false;\nfunction start_hydrating() {\n is_hydrating = true;\n}\nfunction end_hydrating() {\n is_hydrating = false;\n}\nfunction upper_bound(low, high, key, value) {\n // Return first index of value larger than input value in the range [low, high)\n while (low < high) {\n const mid = low + ((high - low) >> 1);\n if (key(mid) <= value) {\n low = mid + 1;\n }\n else {\n high = mid;\n }\n }\n return low;\n}\nfunction init_hydrate(target) {\n if (target.hydrate_init)\n return;\n target.hydrate_init = true;\n // We know that all children have claim_order values since the unclaimed have been detached if target is not \n let children = target.childNodes;\n // If target is , there may be children without claim_order\n if (target.nodeName === 'HEAD') {\n const myChildren = [];\n for (let i = 0; i < children.length; i++) {\n const node = children[i];\n if (node.claim_order !== undefined) {\n myChildren.push(node);\n }\n }\n children = myChildren;\n }\n /*\n * Reorder claimed children optimally.\n * We can reorder claimed children optimally by finding the longest subsequence of\n * nodes that are already claimed in order and only moving the rest. The longest\n * subsequence of nodes that are claimed in order can be found by\n * computing the longest increasing subsequence of .claim_order values.\n *\n * This algorithm is optimal in generating the least amount of reorder operations\n * possible.\n *\n * Proof:\n * We know that, given a set of reordering operations, the nodes that do not move\n * always form an increasing subsequence, since they do not move among each other\n * meaning that they must be already ordered among each other. Thus, the maximal\n * set of nodes that do not move form a longest increasing subsequence.\n */\n // Compute longest increasing subsequence\n // m: subsequence length j => index k of smallest value that ends an increasing subsequence of length j\n const m = new Int32Array(children.length + 1);\n // Predecessor indices + 1\n const p = new Int32Array(children.length);\n m[0] = -1;\n let longest = 0;\n for (let i = 0; i < children.length; i++) {\n const current = children[i].claim_order;\n // Find the largest subsequence length such that it ends in a value less than our current value\n // upper_bound returns first greater value, so we subtract one\n // with fast path for when we are on the current longest subsequence\n const seqLen = ((longest > 0 && children[m[longest]].claim_order <= current) ? longest + 1 : upper_bound(1, longest, idx => children[m[idx]].claim_order, current)) - 1;\n p[i] = m[seqLen] + 1;\n const newLen = seqLen + 1;\n // We can guarantee that current is the smallest value. Otherwise, we would have generated a longer sequence.\n m[newLen] = i;\n longest = Math.max(newLen, longest);\n }\n // The longest increasing subsequence of nodes (initially reversed)\n const lis = [];\n // The rest of the nodes, nodes that will be moved\n const toMove = [];\n let last = children.length - 1;\n for (let cur = m[longest] + 1; cur != 0; cur = p[cur - 1]) {\n lis.push(children[cur - 1]);\n for (; last >= cur; last--) {\n toMove.push(children[last]);\n }\n last--;\n }\n for (; last >= 0; last--) {\n toMove.push(children[last]);\n }\n lis.reverse();\n // We sort the nodes being moved to guarantee that their insertion order matches the claim order\n toMove.sort((a, b) => a.claim_order - b.claim_order);\n // Finally, we move the nodes\n for (let i = 0, j = 0; i < toMove.length; i++) {\n while (j < lis.length && toMove[i].claim_order >= lis[j].claim_order) {\n j++;\n }\n const anchor = j < lis.length ? lis[j] : null;\n target.insertBefore(toMove[i], anchor);\n }\n}\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction append_styles(target, style_sheet_id, styles) {\n const append_styles_to = get_root_for_style(target);\n if (!append_styles_to.getElementById(style_sheet_id)) {\n const style = element('style');\n style.id = style_sheet_id;\n style.textContent = styles;\n append_stylesheet(append_styles_to, style);\n }\n}\nfunction get_root_for_style(node) {\n if (!node)\n return document;\n const root = node.getRootNode ? node.getRootNode() : node.ownerDocument;\n if (root && root.host) {\n return root;\n }\n return node.ownerDocument;\n}\nfunction append_empty_stylesheet(node) {\n const style_element = element('style');\n append_stylesheet(get_root_for_style(node), style_element);\n return style_element.sheet;\n}\nfunction append_stylesheet(node, style) {\n append(node.head || node, style);\n return style.sheet;\n}\nfunction append_hydration(target, node) {\n if (is_hydrating) {\n init_hydrate(target);\n if ((target.actual_end_child === undefined) || ((target.actual_end_child !== null) && (target.actual_end_child.parentNode !== target))) {\n target.actual_end_child = target.firstChild;\n }\n // Skip nodes of undefined ordering\n while ((target.actual_end_child !== null) && (target.actual_end_child.claim_order === undefined)) {\n target.actual_end_child = target.actual_end_child.nextSibling;\n }\n if (node !== target.actual_end_child) {\n // We only insert if the ordering of this node should be modified or the parent node is not target\n if (node.claim_order !== undefined || node.parentNode !== target) {\n target.insertBefore(node, target.actual_end_child);\n }\n }\n else {\n target.actual_end_child = node.nextSibling;\n }\n }\n else if (node.parentNode !== target || node.nextSibling !== null) {\n target.appendChild(node);\n }\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction insert_hydration(target, node, anchor) {\n if (is_hydrating && !anchor) {\n append_hydration(target, node);\n }\n else if (node.parentNode !== target || node.nextSibling != anchor) {\n target.insertBefore(node, anchor || null);\n }\n}\nfunction detach(node) {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction element_is(name, is) {\n return document.createElement(name, { is });\n}\nfunction object_without_properties(obj, exclude) {\n const target = {};\n for (const k in obj) {\n if (has_prop(obj, k)\n // @ts-ignore\n && exclude.indexOf(k) === -1) {\n // @ts-ignore\n target[k] = obj[k];\n }\n }\n return target;\n}\nfunction svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction space() {\n return text(' ');\n}\nfunction empty() {\n return text('');\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n return function (event) {\n event.preventDefault();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_propagation(fn) {\n return function (event) {\n event.stopPropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction self(fn) {\n return function (event) {\n // @ts-ignore\n if (event.target === this)\n fn.call(this, event);\n };\n}\nfunction trusted(fn) {\n return function (event) {\n // @ts-ignore\n if (event.isTrusted)\n fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else if (node.getAttribute(attribute) !== value)\n node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n // @ts-ignore\n const descriptors = Object.getOwnPropertyDescriptors(node.__proto__);\n for (const key in attributes) {\n if (attributes[key] == null) {\n node.removeAttribute(key);\n }\n else if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key === '__value') {\n node.value = node[key] = attributes[key];\n }\n else if (descriptors[key] && descriptors[key].set) {\n node[key] = attributes[key];\n }\n else {\n attr(node, key, attributes[key]);\n }\n }\n}\nfunction set_svg_attributes(node, attributes) {\n for (const key in attributes) {\n attr(node, key, attributes[key]);\n }\n}\nfunction set_custom_element_data_map(node, data_map) {\n Object.keys(data_map).forEach((key) => {\n set_custom_element_data(node, key, data_map[key]);\n });\n}\nfunction set_custom_element_data(node, prop, value) {\n if (prop in node) {\n node[prop] = typeof node[prop] === 'boolean' && value === '' ? true : value;\n }\n else {\n attr(node, prop, value);\n }\n}\nfunction xlink_attr(node, attribute, value) {\n node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group, __value, checked) {\n const value = new Set();\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.add(group[i].__value);\n }\n if (!checked) {\n value.delete(__value);\n }\n return Array.from(value);\n}\nfunction to_number(value) {\n return value === '' ? null : +value;\n}\nfunction time_ranges_to_array(ranges) {\n const array = [];\n for (let i = 0; i < ranges.length; i += 1) {\n array.push({ start: ranges.start(i), end: ranges.end(i) });\n }\n return array;\n}\nfunction children(element) {\n return Array.from(element.childNodes);\n}\nfunction init_claim_info(nodes) {\n if (nodes.claim_info === undefined) {\n nodes.claim_info = { last_index: 0, total_claimed: 0 };\n }\n}\nfunction claim_node(nodes, predicate, processNode, createNode, dontUpdateLastIndex = false) {\n // Try to find nodes in an order such that we lengthen the longest increasing subsequence\n init_claim_info(nodes);\n const resultNode = (() => {\n // We first try to find an element after the previous one\n for (let i = nodes.claim_info.last_index; i < nodes.length; i++) {\n const node = nodes[i];\n if (predicate(node)) {\n const replacement = processNode(node);\n if (replacement === undefined) {\n nodes.splice(i, 1);\n }\n else {\n nodes[i] = replacement;\n }\n if (!dontUpdateLastIndex) {\n nodes.claim_info.last_index = i;\n }\n return node;\n }\n }\n // Otherwise, we try to find one before\n // We iterate in reverse so that we don't go too far back\n for (let i = nodes.claim_info.last_index - 1; i >= 0; i--) {\n const node = nodes[i];\n if (predicate(node)) {\n const replacement = processNode(node);\n if (replacement === undefined) {\n nodes.splice(i, 1);\n }\n else {\n nodes[i] = replacement;\n }\n if (!dontUpdateLastIndex) {\n nodes.claim_info.last_index = i;\n }\n else if (replacement === undefined) {\n // Since we spliced before the last_index, we decrease it\n nodes.claim_info.last_index--;\n }\n return node;\n }\n }\n // If we can't find any matching node, we create a new one\n return createNode();\n })();\n resultNode.claim_order = nodes.claim_info.total_claimed;\n nodes.claim_info.total_claimed += 1;\n return resultNode;\n}\nfunction claim_element_base(nodes, name, attributes, create_element) {\n return claim_node(nodes, (node) => node.nodeName === name, (node) => {\n const remove = [];\n for (let j = 0; j < node.attributes.length; j++) {\n const attribute = node.attributes[j];\n if (!attributes[attribute.name]) {\n remove.push(attribute.name);\n }\n }\n remove.forEach(v => node.removeAttribute(v));\n return undefined;\n }, () => create_element(name));\n}\nfunction claim_element(nodes, name, attributes) {\n return claim_element_base(nodes, name, attributes, element);\n}\nfunction claim_svg_element(nodes, name, attributes) {\n return claim_element_base(nodes, name, attributes, svg_element);\n}\nfunction claim_text(nodes, data) {\n return claim_node(nodes, (node) => node.nodeType === 3, (node) => {\n const dataStr = '' + data;\n if (node.data.startsWith(dataStr)) {\n if (node.data.length !== dataStr.length) {\n return node.splitText(dataStr.length);\n }\n }\n else {\n node.data = dataStr;\n }\n }, () => text(data), true // Text nodes should not update last index since it is likely not worth it to eliminate an increasing subsequence of actual elements\n );\n}\nfunction claim_space(nodes) {\n return claim_text(nodes, ' ');\n}\nfunction find_comment(nodes, text, start) {\n for (let i = start; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 8 /* comment node */ && node.textContent.trim() === text) {\n return i;\n }\n }\n return nodes.length;\n}\nfunction claim_html_tag(nodes, is_svg) {\n // find html opening tag\n const start_index = find_comment(nodes, 'HTML_TAG_START', 0);\n const end_index = find_comment(nodes, 'HTML_TAG_END', start_index);\n if (start_index === end_index) {\n return new HtmlTagHydration(undefined, is_svg);\n }\n init_claim_info(nodes);\n const html_tag_nodes = nodes.splice(start_index, end_index - start_index + 1);\n detach(html_tag_nodes[0]);\n detach(html_tag_nodes[html_tag_nodes.length - 1]);\n const claimed_nodes = html_tag_nodes.slice(1, html_tag_nodes.length - 1);\n for (const n of claimed_nodes) {\n n.claim_order = nodes.claim_info.total_claimed;\n nodes.claim_info.total_claimed += 1;\n }\n return new HtmlTagHydration(claimed_nodes, is_svg);\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.wholeText !== data)\n text.data = data;\n}\nfunction set_input_value(input, value) {\n input.value = value == null ? '' : value;\n}\nfunction set_input_type(input, type) {\n try {\n input.type = type;\n }\n catch (e) {\n // do nothing\n }\n}\nfunction set_style(node, key, value, important) {\n if (value === null) {\n node.style.removeProperty(key);\n }\n else {\n node.style.setProperty(key, value, important ? 'important' : '');\n }\n}\nfunction select_option(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n if (option.__value === value) {\n option.selected = true;\n return;\n }\n }\n select.selectedIndex = -1; // no option should be selected\n}\nfunction select_options(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n option.selected = ~value.indexOf(option.__value);\n }\n}\nfunction select_value(select) {\n const selected_option = select.querySelector(':checked') || select.options[0];\n return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\n// unfortunately this can't be a constant as that wouldn't be tree-shakeable\n// so we cache the result instead\nlet crossorigin;\nfunction is_crossorigin() {\n if (crossorigin === undefined) {\n crossorigin = false;\n try {\n if (typeof window !== 'undefined' && window.parent) {\n void window.parent.document;\n }\n }\n catch (error) {\n crossorigin = true;\n }\n }\n return crossorigin;\n}\nfunction add_resize_listener(node, fn) {\n const computed_style = getComputedStyle(node);\n if (computed_style.position === 'static') {\n node.style.position = 'relative';\n }\n const iframe = element('iframe');\n iframe.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ' +\n 'overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;');\n iframe.setAttribute('aria-hidden', 'true');\n iframe.tabIndex = -1;\n const crossorigin = is_crossorigin();\n let unsubscribe;\n if (crossorigin) {\n iframe.src = \"data:text/html,\";\n unsubscribe = listen(window, 'message', (event) => {\n if (event.source === iframe.contentWindow)\n fn();\n });\n }\n else {\n iframe.src = 'about:blank';\n iframe.onload = () => {\n unsubscribe = listen(iframe.contentWindow, 'resize', fn);\n };\n }\n append(node, iframe);\n return () => {\n if (crossorigin) {\n unsubscribe();\n }\n else if (unsubscribe && iframe.contentWindow) {\n unsubscribe();\n }\n detach(iframe);\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, bubbles, cancelable, detail);\n return e;\n}\nfunction query_selector_all(selector, parent = document.body) {\n return Array.from(parent.querySelectorAll(selector));\n}\nfunction head_selector(nodeId, head) {\n const result = [];\n let started = 0;\n for (const node of head.childNodes) {\n if (node.nodeType === 8 /* comment node */) {\n const comment = node.textContent.trim();\n if (comment === `HEAD_${nodeId}_END`) {\n started -= 1;\n result.push(node);\n }\n else if (comment === `HEAD_${nodeId}_START`) {\n started += 1;\n result.push(node);\n }\n }\n else if (started > 0) {\n result.push(node);\n }\n }\n return result;\n}\nclass HtmlTag {\n constructor(is_svg = false) {\n this.is_svg = false;\n this.is_svg = is_svg;\n this.e = this.n = null;\n }\n c(html) {\n this.h(html);\n }\n m(html, target, anchor = null) {\n if (!this.e) {\n if (this.is_svg)\n this.e = svg_element(target.nodeName);\n else\n this.e = element(target.nodeName);\n this.t = target;\n this.c(html);\n }\n this.i(anchor);\n }\n h(html) {\n this.e.innerHTML = html;\n this.n = Array.from(this.e.childNodes);\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert(this.t, this.n[i], anchor);\n }\n }\n p(html) {\n this.d();\n this.h(html);\n this.i(this.a);\n }\n d() {\n this.n.forEach(detach);\n }\n}\nclass HtmlTagHydration extends HtmlTag {\n constructor(claimed_nodes, is_svg = false) {\n super(is_svg);\n this.e = this.n = null;\n this.l = claimed_nodes;\n }\n c(html) {\n if (this.l) {\n this.n = this.l;\n }\n else {\n super.c(html);\n }\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert_hydration(this.t, this.n[i], anchor);\n }\n }\n}\nfunction attribute_to_object(attributes) {\n const result = {};\n for (const attribute of attributes) {\n result[attribute.name] = attribute.value;\n }\n return result;\n}\nfunction get_custom_elements_slots(element) {\n const result = {};\n element.childNodes.forEach((node) => {\n result[node.slot || 'default'] = true;\n });\n return result;\n}\nfunction construct_svelte_component(component, props) {\n return new component(props);\n}\n\n// we need to store the information for multiple documents because a Svelte application could also contain iframes\n// https://github.com/sveltejs/svelte/issues/3624\nconst managed_styles = new Map();\nlet active = 0;\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_style_information(doc, node) {\n const info = { stylesheet: append_empty_stylesheet(node), rules: {} };\n managed_styles.set(doc, info);\n return info;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n const doc = get_root_for_style(node);\n const { stylesheet, rules } = managed_styles.get(doc) || create_style_information(doc, node);\n if (!rules[name]) {\n rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ''}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n const previous = (node.style.animation || '').split(', ');\n const next = previous.filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n );\n const deleted = previous.length - next.length;\n if (deleted) {\n node.style.animation = next.join(', ');\n active -= deleted;\n if (!active)\n clear_rules();\n }\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n managed_styles.forEach(info => {\n const { ownerNode } = info.stylesheet;\n // there is no ownerNode if it runs on jsdom.\n if (ownerNode)\n detach(ownerNode);\n });\n managed_styles.clear();\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now => {\n if (!started && now >= start_time) {\n started = true;\n }\n if (started && now >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error('Function called outside component initialization');\n return current_component;\n}\n/**\n * Schedules a callback to run immediately before the component is updated after any state change.\n *\n * The first time the callback runs will be before the initial `onMount`\n *\n * https://svelte.dev/docs#run-time-svelte-beforeupdate\n */\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_update.push(fn);\n}\n/**\n * The `onMount` function schedules a callback to run as soon as the component has been mounted to the DOM.\n * It must be called during the component's initialisation (but doesn't need to live *inside* the component;\n * it can be called from an external module).\n *\n * `onMount` does not run inside a [server-side component](/docs#run-time-server-side-component-api).\n *\n * https://svelte.dev/docs#run-time-svelte-onmount\n */\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\n/**\n * Schedules a callback to run immediately after the component has been updated.\n *\n * The first time the callback runs will be after the initial `onMount`\n */\nfunction afterUpdate(fn) {\n get_current_component().$$.after_update.push(fn);\n}\n/**\n * Schedules a callback to run immediately before the component is unmounted.\n *\n * Out of `onMount`, `beforeUpdate`, `afterUpdate` and `onDestroy`, this is the\n * only one that runs inside a server-side component.\n *\n * https://svelte.dev/docs#run-time-svelte-ondestroy\n */\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\n/**\n * Creates an event dispatcher that can be used to dispatch [component events](/docs#template-syntax-component-directives-on-eventname).\n * Event dispatchers are functions that can take two arguments: `name` and `detail`.\n *\n * Component events created with `createEventDispatcher` create a\n * [CustomEvent](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent).\n * These events do not [bubble](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#Event_bubbling_and_capture).\n * The `detail` argument corresponds to the [CustomEvent.detail](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/detail)\n * property and can contain any type of data.\n *\n * https://svelte.dev/docs#run-time-svelte-createeventdispatcher\n */\nfunction createEventDispatcher() {\n const component = get_current_component();\n return (type, detail, { cancelable = false } = {}) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail, { cancelable });\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n return !event.defaultPrevented;\n }\n return true;\n };\n}\n/**\n * Associates an arbitrary `context` object with the current component and the specified `key`\n * and returns that object. The context is then available to children of the component\n * (including slotted content) with `getContext`.\n *\n * Like lifecycle functions, this must be called during component initialisation.\n *\n * https://svelte.dev/docs#run-time-svelte-setcontext\n */\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n return context;\n}\n/**\n * Retrieves the context that belongs to the closest parent component with the specified `key`.\n * Must be called during component initialisation.\n *\n * https://svelte.dev/docs#run-time-svelte-getcontext\n */\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\n/**\n * Retrieves the whole context map that belongs to the closest parent component.\n * Must be called during component initialisation. Useful, for example, if you\n * programmatically create a component and want to pass the existing context to it.\n *\n * https://svelte.dev/docs#run-time-svelte-getallcontexts\n */\nfunction getAllContexts() {\n return get_current_component().$$.context;\n}\n/**\n * Checks whether a given `key` has been set in the context of a parent component.\n * Must be called during component initialisation.\n *\n * https://svelte.dev/docs#run-time-svelte-hascontext\n */\nfunction hasContext(key) {\n return get_current_component().$$.context.has(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n // @ts-ignore\n callbacks.slice().forEach(fn => fn.call(this, event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\n// flush() calls callbacks in this order:\n// 1. All beforeUpdate callbacks, in order: parents before children\n// 2. All bind:this callbacks, in reverse order: children before parents.\n// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT\n// for afterUpdates called during the initial onMount, which are called in\n// reverse order: children before parents.\n// Since callbacks might update component values, which could trigger another\n// call to flush(), the following steps guard against this:\n// 1. During beforeUpdate, any updated components will be added to the\n// dirty_components array and will cause a reentrant call to flush(). Because\n// the flush index is kept outside the function, the reentrant call will pick\n// up where the earlier call left off and go through all dirty components. The\n// current_component value is saved and restored so that the reentrant call will\n// not interfere with the \"parent\" flush() call.\n// 2. bind:this callbacks cannot trigger new flush() calls.\n// 3. During afterUpdate, any updated components will NOT have their afterUpdate\n// callback called a second time; the seen_callbacks set, outside the flush()\n// function, guarantees this behavior.\nconst seen_callbacks = new Set();\nlet flushidx = 0; // Do *not* move this inside the flush() function\nfunction flush() {\n // Do not reenter flush while dirty components are updated, as this can\n // result in an infinite loop. Instead, let the inner flush handle it.\n // Reentrancy is ok afterwards for bindings etc.\n if (flushidx !== 0) {\n return;\n }\n const saved_component = current_component;\n do {\n // first, call beforeUpdate functions\n // and update components\n try {\n while (flushidx < dirty_components.length) {\n const component = dirty_components[flushidx];\n flushidx++;\n set_current_component(component);\n update(component.$$);\n }\n }\n catch (e) {\n // reset dirty state to not end up in a deadlocked state and then rethrow\n dirty_components.length = 0;\n flushidx = 0;\n throw e;\n }\n set_current_component(null);\n dirty_components.length = 0;\n flushidx = 0;\n while (binding_callbacks.length)\n binding_callbacks.pop()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n for (let i = 0; i < render_callbacks.length; i += 1) {\n const callback = render_callbacks[i];\n if (!seen_callbacks.has(callback)) {\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n callback();\n }\n }\n render_callbacks.length = 0;\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n seen_callbacks.clear();\n set_current_component(saved_component);\n}\nfunction update($$) {\n if ($$.fragment !== null) {\n $$.update();\n run_all($$.before_update);\n const dirty = $$.dirty;\n $$.dirty = [-1];\n $$.fragment && $$.fragment.p($$.ctx, dirty);\n $$.after_update.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n r: 0,\n c: [],\n p: outros // parent group\n };\n}\nfunction check_outros() {\n if (!outros.r) {\n run_all(outros.c);\n }\n outros = outros.p;\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, detach, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.c.push(() => {\n outroing.delete(block);\n if (callback) {\n if (detach)\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n else if (callback) {\n callback();\n }\n}\nconst null_transition = { duration: 0 };\nfunction create_in_transition(node, fn, params) {\n const options = { direction: 'in' };\n let config = fn(node, params, options);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n started = true;\n delete_rule(node);\n if (is_function(config)) {\n config = config(options);\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n const options = { direction: 'out' };\n let config = fn(node, params, options);\n let running = true;\n let animation_name;\n const group = outros;\n group.r += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(0, 1);\n dispatch(node, false, 'end');\n if (!--group.r) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.c);\n }\n return false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config(options);\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n const options = { direction: 'both' };\n let config = fn(node, params, options);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = (program.b - t);\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.r += 1;\n }\n if (running_program || pending_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now => {\n if (pending_program && now > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now >= running_program.end) {\n tick(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.r)\n run_all(running_program.group.c);\n }\n }\n running_program = null;\n }\n else if (now >= running_program.start) {\n const p = now - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config(options);\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = value;\n let child_ctx = info.ctx;\n if (key !== undefined) {\n child_ctx = child_ctx.slice();\n child_ctx[key] = value;\n }\n const block = type && (info.current = type)(child_ctx);\n let needs_flush = false;\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, 1, () => {\n if (info.blocks[i] === block) {\n info.blocks[i] = null;\n }\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n needs_flush = true;\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n if (needs_flush) {\n flush();\n }\n }\n if (is_promise(promise)) {\n const current_component = get_current_component();\n promise.then(value => {\n set_current_component(current_component);\n update(info.then, 1, info.value, value);\n set_current_component(null);\n }, error => {\n set_current_component(current_component);\n update(info.catch, 2, info.error, error);\n set_current_component(null);\n if (!info.hasCatch) {\n throw error;\n }\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = promise;\n }\n}\nfunction update_await_block_branch(info, ctx, dirty) {\n const child_ctx = ctx.slice();\n const { resolved } = info;\n if (info.current === info.then) {\n child_ctx[info.value] = resolved;\n }\n if (info.current === info.catch) {\n child_ctx[info.error] = resolved;\n }\n info.block.p(child_ctx, dirty);\n}\n\nconst globals = (typeof window !== 'undefined'\n ? window\n : typeof globalThis !== 'undefined'\n ? globalThis\n : global);\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(child_ctx, dirty);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction validate_each_keys(ctx, list, get_context, get_key) {\n const keys = new Set();\n for (let i = 0; i < list.length; i++) {\n const key = get_key(get_context(ctx, list, i));\n if (keys.has(key)) {\n throw new Error('Cannot have duplicate keys in a keyed each');\n }\n keys.add(key);\n }\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\nfunction get_spread_object(spread_props) {\n return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n\n// source: https://html.spec.whatwg.org/multipage/indices.html\nconst boolean_attributes = new Set([\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'async',\n 'autofocus',\n 'autoplay',\n 'checked',\n 'controls',\n 'default',\n 'defer',\n 'disabled',\n 'formnovalidate',\n 'hidden',\n 'inert',\n 'ismap',\n 'itemscope',\n 'loop',\n 'multiple',\n 'muted',\n 'nomodule',\n 'novalidate',\n 'open',\n 'playsinline',\n 'readonly',\n 'required',\n 'reversed',\n 'selected'\n]);\n\n/** regex of all html void element names */\nconst void_element_names = /^(?:area|base|br|col|command|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/;\nfunction is_void(name) {\n return void_element_names.test(name) || name.toLowerCase() === '!doctype';\n}\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args, attrs_to_add) {\n const attributes = Object.assign({}, ...args);\n if (attrs_to_add) {\n const classes_to_add = attrs_to_add.classes;\n const styles_to_add = attrs_to_add.styles;\n if (classes_to_add) {\n if (attributes.class == null) {\n attributes.class = classes_to_add;\n }\n else {\n attributes.class += ' ' + classes_to_add;\n }\n }\n if (styles_to_add) {\n if (attributes.style == null) {\n attributes.style = style_object_to_string(styles_to_add);\n }\n else {\n attributes.style = style_object_to_string(merge_ssr_styles(attributes.style, styles_to_add));\n }\n }\n }\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === true)\n str += ' ' + name;\n else if (boolean_attributes.has(name.toLowerCase())) {\n if (value)\n str += ' ' + name;\n }\n else if (value != null) {\n str += ` ${name}=\"${value}\"`;\n }\n });\n return str;\n}\nfunction merge_ssr_styles(style_attribute, style_directive) {\n const style_object = {};\n for (const individual_style of style_attribute.split(';')) {\n const colon_index = individual_style.indexOf(':');\n const name = individual_style.slice(0, colon_index).trim();\n const value = individual_style.slice(colon_index + 1).trim();\n if (!name)\n continue;\n style_object[name] = value;\n }\n for (const name in style_directive) {\n const value = style_directive[name];\n if (value) {\n style_object[name] = value;\n }\n else {\n delete style_object[name];\n }\n }\n return style_object;\n}\nconst ATTR_REGEX = /[&\"]/g;\nconst CONTENT_REGEX = /[&<]/g;\n/**\n * Note: this method is performance sensitive and has been optimized\n * https://github.com/sveltejs/svelte/pull/5701\n */\nfunction escape(value, is_attr = false) {\n const str = String(value);\n const pattern = is_attr ? ATTR_REGEX : CONTENT_REGEX;\n pattern.lastIndex = 0;\n let escaped = '';\n let last = 0;\n while (pattern.test(str)) {\n const i = pattern.lastIndex - 1;\n const ch = str[i];\n escaped += str.substring(last, i) + (ch === '&' ? '&' : (ch === '\"' ? '"' : '<'));\n last = i + 1;\n }\n return escaped + str.substring(last);\n}\nfunction escape_attribute_value(value) {\n // keep booleans, null, and undefined for the sake of `spread`\n const should_escape = typeof value === 'string' || (value && typeof value === 'object');\n return should_escape ? escape(value, true) : value;\n}\nfunction escape_object(obj) {\n const result = {};\n for (const key in obj) {\n result[key] = escape_attribute_value(obj[key]);\n }\n return result;\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules. Otherwise you may need to fix a <${name}>.`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots, context) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(context || (parent_component ? parent_component.$$.context : [])),\n // these will be immediately discarded\n on_mount: [],\n before_update: [],\n after_update: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, { $$slots = {}, context = new Map() } = {}) => {\n on_destroy = [];\n const result = { title: '', head: '', css: new Set() };\n const html = $$render(result, props, {}, $$slots, context);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.title + result.head\n };\n },\n $$render\n };\n}\nfunction add_attribute(name, value, boolean) {\n if (value == null || (boolean && !value))\n return '';\n const assignment = (boolean && value === true) ? '' : `=\"${escape(value, true)}\"`;\n return ` ${name}${assignment}`;\n}\nfunction add_classes(classes) {\n return classes ? ` class=\"${classes}\"` : '';\n}\nfunction style_object_to_string(style_object) {\n return Object.keys(style_object)\n .filter(key => style_object[key])\n .map(key => `${key}: ${escape_attribute_value(style_object[key])};`)\n .join(' ');\n}\nfunction add_styles(style_object) {\n const styles = style_object_to_string(style_object);\n return styles ? ` style=\"${styles}\"` : '';\n}\n\nfunction bind(component, name, callback) {\n const index = component.$$.props[name];\n if (index !== undefined) {\n component.$$.bound[index] = callback;\n callback(component.$$.ctx[index]);\n }\n}\nfunction create_component(block) {\n block && block.c();\n}\nfunction claim_component(block, parent_nodes) {\n block && block.l(parent_nodes);\n}\nfunction mount_component(component, target, anchor, customElement) {\n const { fragment, after_update } = component.$$;\n fragment && fragment.m(target, anchor);\n if (!customElement) {\n // onMount happens before the initial afterUpdate\n add_render_callback(() => {\n const new_on_destroy = component.$$.on_mount.map(run).filter(is_function);\n // if the component was destroyed immediately\n // it will update the `$$.on_destroy` reference to `null`.\n // the destructured on_destroy may still reference to the old array\n if (component.$$.on_destroy) {\n component.$$.on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n }\n after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n const $$ = component.$$;\n if ($$.fragment !== null) {\n run_all($$.on_destroy);\n $$.fragment && $$.fragment.d(detaching);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n $$.on_destroy = $$.fragment = null;\n $$.ctx = [];\n }\n}\nfunction make_dirty(component, i) {\n if (component.$$.dirty[0] === -1) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty.fill(0);\n }\n component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31));\n}\nfunction init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) {\n const parent_component = current_component;\n set_current_component(component);\n const $$ = component.$$ = {\n fragment: null,\n ctx: [],\n // state\n props,\n update: noop,\n not_equal,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n on_disconnect: [],\n before_update: [],\n after_update: [],\n context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),\n // everything else\n callbacks: blank_object(),\n dirty,\n skip_bound: false,\n root: options.target || parent_component.$$.root\n };\n append_styles && append_styles($$.root);\n let ready = false;\n $$.ctx = instance\n ? instance(component, options.props || {}, (i, ret, ...rest) => {\n const value = rest.length ? rest[0] : ret;\n if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {\n if (!$$.skip_bound && $$.bound[i])\n $$.bound[i](value);\n if (ready)\n make_dirty(component, i);\n }\n return ret;\n })\n : [];\n $$.update();\n ready = true;\n run_all($$.before_update);\n // `false` as a special case of no DOM component\n $$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n if (options.target) {\n if (options.hydrate) {\n start_hydrating();\n const nodes = children(options.target);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.l(nodes);\n nodes.forEach(detach);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor, options.customElement);\n end_hydrating();\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement === 'function') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n const { on_mount } = this.$$;\n this.$$.on_disconnect = on_mount.map(run).filter(is_function);\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr, _oldValue, newValue) {\n this[attr] = newValue;\n }\n disconnectedCallback() {\n run_all(this.$$.on_disconnect);\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n if (!is_function(callback)) {\n return noop;\n }\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n };\n}\n/**\n * Base class for Svelte components. Used when dev=false.\n */\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n if (!is_function(callback)) {\n return noop;\n }\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n}\n\nfunction dispatch_dev(type, detail) {\n document.dispatchEvent(custom_event(type, Object.assign({ version: '3.55.1' }, detail), { bubbles: true }));\n}\nfunction append_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append(target, node);\n}\nfunction append_hydration_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append_hydration(target, node);\n}\nfunction insert_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert(target, node, anchor);\n}\nfunction insert_hydration_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert_hydration(target, node, anchor);\n}\nfunction detach_dev(node) {\n dispatch_dev('SvelteDOMRemove', { node });\n detach(node);\n}\nfunction detach_between_dev(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n detach_dev(before.nextSibling);\n }\n}\nfunction detach_before_dev(after) {\n while (after.previousSibling) {\n detach_dev(after.previousSibling);\n }\n}\nfunction detach_after_dev(before) {\n while (before.nextSibling) {\n detach_dev(before.nextSibling);\n }\n}\nfunction listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) {\n const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : [];\n if (has_prevent_default)\n modifiers.push('preventDefault');\n if (has_stop_propagation)\n modifiers.push('stopPropagation');\n dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers });\n const dispose = listen(node, event, handler, options);\n return () => {\n dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers });\n dispose();\n };\n}\nfunction attr_dev(node, attribute, value) {\n attr(node, attribute, value);\n if (value == null)\n dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute });\n else\n dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value });\n}\nfunction prop_dev(node, property, value) {\n node[property] = value;\n dispatch_dev('SvelteDOMSetProperty', { node, property, value });\n}\nfunction dataset_dev(node, property, value) {\n node.dataset[property] = value;\n dispatch_dev('SvelteDOMSetDataset', { node, property, value });\n}\nfunction set_data_dev(text, data) {\n data = '' + data;\n if (text.wholeText === data)\n return;\n dispatch_dev('SvelteDOMSetData', { node: text, data });\n text.data = data;\n}\nfunction validate_each_argument(arg) {\n if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) {\n let msg = '{#each} only iterates over array-like objects.';\n if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) {\n msg += ' You can use a spread to convert this iterable into an array.';\n }\n throw new Error(msg);\n }\n}\nfunction validate_slots(name, slot, keys) {\n for (const slot_key of Object.keys(slot)) {\n if (!~keys.indexOf(slot_key)) {\n console.warn(`<${name}> received an unexpected slot \"${slot_key}\".`);\n }\n }\n}\nfunction validate_dynamic_element(tag) {\n const is_string = typeof tag === 'string';\n if (tag && !is_string) {\n throw new Error(' expects \"this\" attribute to be a string.');\n }\n}\nfunction validate_void_dynamic_element(tag) {\n if (tag && is_void(tag)) {\n console.warn(` is self-closing and cannot have content.`);\n }\n}\nfunction construct_svelte_component_dev(component, props) {\n const error_message = 'this={...} of should specify a Svelte component.';\n try {\n const instance = new component(props);\n if (!instance.$$ || !instance.$set || !instance.$on || !instance.$destroy) {\n throw new Error(error_message);\n }\n return instance;\n }\n catch (err) {\n const { message } = err;\n if (typeof message === 'string' && message.indexOf('is not a constructor') !== -1) {\n throw new Error(error_message);\n }\n else {\n throw err;\n }\n }\n}\n/**\n * Base class for Svelte components with some minor dev-enhancements. Used when dev=true.\n */\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(\"'target' is a required option\");\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn('Component was already destroyed'); // eslint-disable-line no-console\n };\n }\n $capture_state() { }\n $inject_state() { }\n}\n/**\n * Base class to create strongly typed Svelte components.\n * This only exists for typing purposes and should be used in `.d.ts` files.\n *\n * ### Example:\n *\n * You have component library on npm called `component-library`, from which\n * you export a component called `MyComponent`. For Svelte+TypeScript users,\n * you want to provide typings. Therefore you create a `index.d.ts`:\n * ```ts\n * import { SvelteComponentTyped } from \"svelte\";\n * export class MyComponent extends SvelteComponentTyped<{foo: string}> {}\n * ```\n * Typing this makes it possible for IDEs like VS Code with the Svelte extension\n * to provide intellisense and to use the component like this in a Svelte file\n * with TypeScript:\n * ```svelte\n * \n * \n * ```\n *\n * #### Why not make this part of `SvelteComponent(Dev)`?\n * Because\n * ```ts\n * class ASubclassOfSvelteComponent extends SvelteComponent<{foo: string}> {}\n * const component: typeof SvelteComponent = ASubclassOfSvelteComponent;\n * ```\n * will throw a type error, so we need to separate the more strictly typed class.\n */\nclass SvelteComponentTyped extends SvelteComponentDev {\n constructor(options) {\n super(options);\n }\n}\nfunction loop_guard(timeout) {\n const start = Date.now();\n return () => {\n if (Date.now() - start > timeout) {\n throw new Error('Infinite loop detected');\n }\n };\n}\n\nexport { HtmlTag, HtmlTagHydration, SvelteComponent, SvelteComponentDev, SvelteComponentTyped, SvelteElement, action_destroyer, add_attribute, add_classes, add_flush_callback, add_location, add_render_callback, add_resize_listener, add_styles, add_transform, afterUpdate, append, append_dev, append_empty_stylesheet, append_hydration, append_hydration_dev, append_styles, assign, attr, attr_dev, attribute_to_object, beforeUpdate, bind, binding_callbacks, blank_object, bubble, check_outros, children, claim_component, claim_element, claim_html_tag, claim_space, claim_svg_element, claim_text, clear_loops, component_subscribe, compute_rest_props, compute_slots, construct_svelte_component, construct_svelte_component_dev, createEventDispatcher, create_animation, create_bidirectional_transition, create_component, create_in_transition, create_out_transition, create_slot, create_ssr_component, current_component, custom_event, dataset_dev, debug, destroy_block, destroy_component, destroy_each, detach, detach_after_dev, detach_before_dev, detach_between_dev, detach_dev, dirty_components, dispatch_dev, each, element, element_is, empty, end_hydrating, escape, escape_attribute_value, escape_object, exclude_internal_props, fix_and_destroy_block, fix_and_outro_and_destroy_block, fix_position, flush, getAllContexts, getContext, get_all_dirty_from_scope, get_binding_group_value, get_current_component, get_custom_elements_slots, get_root_for_style, get_slot_changes, get_spread_object, get_spread_update, get_store_value, globals, group_outros, handle_promise, hasContext, has_prop, head_selector, identity, init, insert, insert_dev, insert_hydration, insert_hydration_dev, intros, invalid_attribute_name_character, is_client, is_crossorigin, is_empty, is_function, is_promise, is_void, listen, listen_dev, loop, loop_guard, merge_ssr_styles, missing_component, mount_component, noop, not_equal, now, null_to_empty, object_without_properties, onDestroy, onMount, once, outro_and_destroy_block, prevent_default, prop_dev, query_selector_all, raf, run, run_all, safe_not_equal, schedule_update, select_multiple_value, select_option, select_options, select_value, self, setContext, set_attributes, set_current_component, set_custom_element_data, set_custom_element_data_map, set_data, set_data_dev, set_input_type, set_input_value, set_now, set_raf, set_store_value, set_style, set_svg_attributes, space, spread, src_url_equal, start_hydrating, stop_propagation, subscribe, svg_element, text, tick, time_ranges_to_array, to_number, toggle_class, transition_in, transition_out, trusted, update_await_block_branch, update_keyed_each, update_slot, update_slot_base, validate_component, validate_dynamic_element, validate_each_argument, validate_each_keys, validate_slots, validate_store, validate_void_dynamic_element, xlink_attr };\n","import { noop, safe_not_equal, subscribe, run_all, is_function } from '../internal/index.mjs';\nexport { get_store_value as get } from '../internal/index.mjs';\n\nconst subscriber_queue = [];\n/**\n * Creates a `Readable` store that allows reading by subscription.\n * @param value initial value\n * @param {StartStopNotifier}start start and stop notifications for subscriptions\n */\nfunction readable(value, start) {\n return {\n subscribe: writable(value, start).subscribe\n };\n}\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n * @param {*=}value initial value\n * @param {StartStopNotifier=}start start and stop notifications for subscriptions\n */\nfunction writable(value, start = noop) {\n let stop;\n const subscribers = new Set();\n function set(new_value) {\n if (safe_not_equal(value, new_value)) {\n value = new_value;\n if (stop) { // store is ready\n const run_queue = !subscriber_queue.length;\n for (const subscriber of subscribers) {\n subscriber[1]();\n subscriber_queue.push(subscriber, value);\n }\n if (run_queue) {\n for (let i = 0; i < subscriber_queue.length; i += 2) {\n subscriber_queue[i][0](subscriber_queue[i + 1]);\n }\n subscriber_queue.length = 0;\n }\n }\n }\n }\n function update(fn) {\n set(fn(value));\n }\n function subscribe(run, invalidate = noop) {\n const subscriber = [run, invalidate];\n subscribers.add(subscriber);\n if (subscribers.size === 1) {\n stop = start(set) || noop;\n }\n run(value);\n return () => {\n subscribers.delete(subscriber);\n if (subscribers.size === 0) {\n stop();\n stop = null;\n }\n };\n }\n return { set, update, subscribe };\n}\nfunction derived(stores, fn, initial_value) {\n const single = !Array.isArray(stores);\n const stores_array = single\n ? [stores]\n : stores;\n const auto = fn.length < 2;\n return readable(initial_value, (set) => {\n let inited = false;\n const values = [];\n let pending = 0;\n let cleanup = noop;\n const sync = () => {\n if (pending) {\n return;\n }\n cleanup();\n const result = fn(single ? values[0] : values, set);\n if (auto) {\n set(result);\n }\n else {\n cleanup = is_function(result) ? result : noop;\n }\n };\n const unsubscribers = stores_array.map((store, i) => subscribe(store, (value) => {\n values[i] = value;\n pending &= ~(1 << i);\n if (inited) {\n sync();\n }\n }, () => {\n pending |= (1 << i);\n }));\n inited = true;\n sync();\n return function stop() {\n run_all(unsubscribers);\n cleanup();\n };\n });\n}\n\nexport { derived, readable, writable };\n","import { writable } from 'svelte/store';\n\nexport const chatAdapter = writable(null);\nexport const chatData = writable({ events: [], profiles: {}});\nexport const selectedMessage = writable(null);\nexport const zappingMessage = writable(null);\nexport const zapsPerMessage = writable({});","export function number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nexport function bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`Expected boolean, not ${b}`);\n}\nexport function bytes(b, ...lengths) {\n if (!(b instanceof Uint8Array))\n throw new TypeError('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new TypeError(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\nexport function hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nexport function exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nexport function output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nconst assert = {\n number,\n bool,\n bytes,\n hash,\n exists,\n output,\n};\nexport default assert;\n//# sourceMappingURL=_assert.js.map","export const crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n//# sourceMappingURL=crypto.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use `globalThis.crypto`, but node.js versions earlier than v19 don't\n// declare it in global scope. For node.js, package.json#exports field mapping\n// rewrites import from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated, we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xde, 0xad, 0xbe, 0xef])) // 'deadbeef'\n */\nexport function bytesToHex(uint8a) {\n // pre-caching improves the speed 6x\n if (!(uint8a instanceof Uint8Array))\n throw new Error('Uint8Array expected');\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\n/**\n * @example hexToBytes('deadbeef') // Uint8Array.from([0xde, 0xad, 0xbe, 0xef])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex');\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string') {\n throw new TypeError(`utf8ToBytes expected string, got ${typeof str}`);\n }\n return new TextEncoder().encode(str);\n}\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!(data instanceof Uint8Array))\n throw new TypeError(`Expected input type is Uint8Array (got ${typeof data})`);\n return data;\n}\n/**\n * Concats Uint8Array-s into one; like `Buffer.concat([buf1, buf2])`\n * @example concatBytes(buf1, buf2)\n */\nexport function concatBytes(...arrays) {\n if (!arrays.every((a) => a instanceof Uint8Array))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\n// Check if object doens't have custom constructor (like Uint8Array/Array)\nconst isPlainObject = (obj) => Object.prototype.toString.call(obj) === '[object Object]' && obj.constructor === Object;\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && (typeof opts !== 'object' || !isPlainObject(opts)))\n throw new TypeError('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexport function wrapConstructor(hashConstructor) {\n const hashC = (message) => hashConstructor().update(toBytes(message)).digest();\n const tmp = hashConstructor();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashConstructor();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG. Uses `globalThis.crypto` or node.js crypto module.\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","import assert from './_assert.js';\nimport { Hash, createView, toBytes } from './utils.js';\n// Polyfill for Safari 14\nfunction setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n// Base SHA2 class (RFC 6234)\nexport class SHA2 extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n assert.exists(this);\n const { view, buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n assert.exists(this);\n assert.output(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4)\n throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length)\n throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++)\n oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\n//# sourceMappingURL=_sha2.js.map","import { SHA2 } from './_sha2.js';\nimport { rotr, wrapConstructor } from './utils.js';\n// Choice: a ? b : c\nconst Chi = (a, b, c) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst IV = new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = new Uint32Array(64);\nclass SHA256 extends SHA2 {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = IV[0] | 0;\n this.B = IV[1] | 0;\n this.C = IV[2] | 0;\n this.D = IV[3] | 0;\n this.E = IV[4] | 0;\n this.F = IV[5] | 0;\n this.G = IV[6] | 0;\n this.H = IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n// Constants from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf\nclass SHA224 extends SHA256 {\n constructor() {\n super();\n this.A = 0xc1059ed8 | 0;\n this.B = 0x367cd507 | 0;\n this.C = 0x3070dd17 | 0;\n this.D = 0xf70e5939 | 0;\n this.E = 0xffc00b31 | 0;\n this.F = 0x68581511 | 0;\n this.G = 0x64f98fa7 | 0;\n this.H = 0xbefa4fa4 | 0;\n this.outputLen = 28;\n }\n}\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = wrapConstructor(() => new SHA256());\nexport const sha224 = wrapConstructor(() => new SHA224());\n//# sourceMappingURL=sha256.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst u8a = (a) => a instanceof Uint8Array;\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\nexport function bytesToHex(bytes) {\n if (!u8a(bytes))\n throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\nexport function numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\nexport function hexToNumber(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n // Big Endian\n return BigInt(hex === '' ? '0' : `0x${hex}`);\n}\n// Caching slows it down 2-3x\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n if (hex.length % 2)\n throw new Error('hex string is invalid: unpadded ' + hex.length);\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// Big Endian\nexport function bytesToNumberBE(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nexport function bytesToNumberLE(bytes) {\n if (!u8a(bytes))\n throw new Error('Uint8Array expected');\n return hexToNumber(bytesToHex(Uint8Array.from(bytes).reverse()));\n}\nexport const numberToBytesBE = (n, len) => hexToBytes(n.toString(16).padStart(len * 2, '0'));\nexport const numberToBytesLE = (n, len) => numberToBytesBE(n, len).reverse();\n// Returns variable number bytes (minimal bigint encoding?)\nexport const numberToVarBytesBE = (n) => hexToBytes(numberToHexUnpadded(n));\nexport function ensureBytes(title, hex, expectedLength) {\n let res;\n if (typeof hex === 'string') {\n try {\n res = hexToBytes(hex);\n }\n catch (e) {\n throw new Error(`${title} must be valid hex string, got \"${hex}\". Cause: ${e}`);\n }\n }\n else if (u8a(hex)) {\n // Uint8Array.from() instead of hash.slice() because node.js Buffer\n // is instance of Uint8Array, and its slice() creates **mutable** copy\n res = Uint8Array.from(hex);\n }\n else {\n throw new Error(`${title} must be hex string or Uint8Array`);\n }\n const len = res.length;\n if (typeof expectedLength === 'number' && len !== expectedLength)\n throw new Error(`${title} expected ${expectedLength} bytes, got ${len}`);\n return res;\n}\n// Copies several Uint8Arrays into one.\nexport function concatBytes(...arrs) {\n const r = new Uint8Array(arrs.reduce((sum, a) => sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrs.forEach((a) => {\n if (!u8a(a))\n throw new Error('Uint8Array expected');\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\nexport function equalBytes(b1, b2) {\n // We don't care about timing attacks here\n if (b1.length !== b2.length)\n return false;\n for (let i = 0; i < b1.length; i++)\n if (b1[i] !== b2[i])\n return false;\n return true;\n}\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string') {\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n }\n return new TextEncoder().encode(str);\n}\n// Bit operations\n// Amount of bits inside bigint (Same as n.toString(2).length)\nexport function bitLen(n) {\n let len;\n for (len = 0; n > _0n; n >>= _1n, len += 1)\n ;\n return len;\n}\n// Gets single bit at position. NOTE: first bit position is 0 (same as arrays)\n// Same as !!+Array.from(n.toString(2)).reverse()[pos]\nexport const bitGet = (n, pos) => (n >> BigInt(pos)) & _1n;\n// Sets single bit at position\nexport const bitSet = (n, pos, value) => n | ((value ? _1n : _0n) << BigInt(pos));\n// Return mask for N bits (Same as BigInt(`0b${Array(i).fill('1').join('')}`))\n// Not using ** operator with bigints for old engines.\nexport const bitMask = (n) => (_2n << BigInt(n - 1)) - _1n;\n// DRBG\nconst u8n = (data) => new Uint8Array(data); // creates Uint8Array\nconst u8fr = (arr) => Uint8Array.from(arr); // another shortcut\n/**\n * Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n * @returns function that will call DRBG until 2nd arg returns something meaningful\n * @example\n * const drbg = createHmacDRBG(32, 32, hmac);\n * drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg(hashLen, qByteLen, hmacFn) {\n if (typeof hashLen !== 'number' || hashLen < 2)\n throw new Error('hashLen must be a number');\n if (typeof qByteLen !== 'number' || qByteLen < 2)\n throw new Error('qByteLen must be a number');\n if (typeof hmacFn !== 'function')\n throw new Error('hmacFn must be a function');\n // Step B, Step C: set hashLen to 8*ceil(hlen/8)\n let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same\n let i = 0; // Iterations counter, will throw when over 1000\n const reset = () => {\n v.fill(1);\n k.fill(0);\n i = 0;\n };\n const h = (...b) => hmacFn(k, v, ...b); // hmac(k)(v, ...values)\n const reseed = (seed = u8n()) => {\n // HMAC-DRBG reseed() function. Steps D-G\n k = h(u8fr([0x00]), seed); // k = hmac(k || v || 0x00 || seed)\n v = h(); // v = hmac(k || v)\n if (seed.length === 0)\n return;\n k = h(u8fr([0x01]), seed); // k = hmac(k || v || 0x01 || seed)\n v = h(); // v = hmac(k || v)\n };\n const gen = () => {\n // HMAC-DRBG generate() function\n if (i++ >= 1000)\n throw new Error('drbg: tried 1000 values');\n let len = 0;\n const out = [];\n while (len < qByteLen) {\n v = h();\n const sl = v.slice();\n out.push(sl);\n len += v.length;\n }\n return concatBytes(...out);\n };\n const genUntil = (seed, pred) => {\n reset();\n reseed(seed); // Steps D-G\n let res = undefined; // Step H: grind until k is in [1..n-1]\n while (!(res = pred(gen())))\n reseed();\n reset();\n return res;\n };\n return genUntil;\n}\n// Validating curves and fields\nconst validatorFns = {\n bigint: (val) => typeof val === 'bigint',\n function: (val) => typeof val === 'function',\n boolean: (val) => typeof val === 'boolean',\n string: (val) => typeof val === 'string',\n isSafeInteger: (val) => Number.isSafeInteger(val),\n array: (val) => Array.isArray(val),\n field: (val, object) => object.Fp.isValid(val),\n hash: (val) => typeof val === 'function' && Number.isSafeInteger(val.outputLen),\n};\n// type Record = { [P in K]: T; }\nexport function validateObject(object, validators, optValidators = {}) {\n const checkField = (fieldName, type, isOptional) => {\n const checkVal = validatorFns[type];\n if (typeof checkVal !== 'function')\n throw new Error(`Invalid validator \"${type}\", expected function`);\n const val = object[fieldName];\n if (isOptional && val === undefined)\n return;\n if (!checkVal(val, object)) {\n throw new Error(`Invalid param ${String(fieldName)}=${val} (${typeof val}), expected ${type}`);\n }\n };\n for (const [fieldName, type] of Object.entries(validators))\n checkField(fieldName, type, false);\n for (const [fieldName, type] of Object.entries(optValidators))\n checkField(fieldName, type, true);\n return object;\n}\n// validate type tests\n// const o: { a: number; b: number; c: number } = { a: 1, b: 5, c: 6 };\n// const z0 = validateObject(o, { a: 'isSafeInteger' }, { c: 'bigint' }); // Ok!\n// // Should fail type-check\n// const z1 = validateObject(o, { a: 'tmp' }, { c: 'zz' });\n// const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });\n// const z3 = validateObject(o, { test: 'boolean', z: 'bug' });\n// const z4 = validateObject(o, { a: 'boolean', z: 'bug' });\n//# sourceMappingURL=utils.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Utilities for modular arithmetics and finite fields\nimport { bitMask, numberToBytesBE, numberToBytesLE, bytesToNumberBE, bytesToNumberLE, ensureBytes, validateObject, } from './utils.js';\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3);\n// prettier-ignore\nconst _4n = BigInt(4), _5n = BigInt(5), _8n = BigInt(8);\n// prettier-ignore\nconst _9n = BigInt(9), _16n = BigInt(16);\n// Calculates a modulo b\nexport function mod(a, b) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\n/**\n * Efficiently exponentiate num to power and do modular division.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n * @example\n * powMod(2n, 6n, 11n) // 64n % 11n == 9n\n */\n// TODO: use field version && remove\nexport function pow(num, power, modulo) {\n if (modulo <= _0n || power < _0n)\n throw new Error('Expected power/modulo > 0');\n if (modulo === _1n)\n return _0n;\n let res = _1n;\n while (power > _0n) {\n if (power & _1n)\n res = (res * num) % modulo;\n num = (num * num) % modulo;\n power >>= _1n;\n }\n return res;\n}\n// Does x ^ (2 ^ power) mod p. pow2(30, 4) == 30 ^ (2 ^ 4)\nexport function pow2(x, power, modulo) {\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= modulo;\n }\n return res;\n}\n// Inverses number over modulo\nexport function invert(number, modulo) {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n // Eucledian GCD https://brilliant.org/wiki/extended-euclidean-algorithm/\n // Fermat's little theorem \"CT-like\" version inv(n) = n^(m-2) mod m is 30x slower.\n let a = mod(number, modulo);\n let b = modulo;\n // prettier-ignore\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n // JIT applies optimization if those two lines follow each other\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n // prettier-ignore\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\n// Tonelli-Shanks algorithm\n// Paper 1: https://eprint.iacr.org/2012/685.pdf (page 12)\n// Paper 2: Square Roots from 1; 24, 51, 10 to Dan Shanks\nexport function tonelliShanks(P) {\n // Legendre constant: used to calculate Legendre symbol (a | p),\n // which denotes the value of a^((p-1)/2) (mod p).\n // (a | p) ≡ 1 if a is a square (mod p)\n // (a | p) ≡ -1 if a is not a square (mod p)\n // (a | p) ≡ 0 if a ≡ 0 (mod p)\n const legendreC = (P - _1n) / _2n;\n let Q, S, Z;\n // Step 1: By factoring out powers of 2 from p - 1,\n // find q and s such that p - 1 = q*(2^s) with q odd\n for (Q = P - _1n, S = 0; Q % _2n === _0n; Q /= _2n, S++)\n ;\n // Step 2: Select a non-square z such that (z | p) ≡ -1 and set c ≡ zq\n for (Z = _2n; Z < P && pow(Z, legendreC, P) !== P - _1n; Z++)\n ;\n // Fast-path\n if (S === 1) {\n const p1div4 = (P + _1n) / _4n;\n return function tonelliFast(Fp, n) {\n const root = Fp.pow(n, p1div4);\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // Slow-path\n const Q1div2 = (Q + _1n) / _2n;\n return function tonelliSlow(Fp, n) {\n // Step 0: Check that n is indeed a square: (n | p) should not be ≡ -1\n if (Fp.pow(n, legendreC) === Fp.neg(Fp.ONE))\n throw new Error('Cannot find square root');\n let r = S;\n // TODO: will fail at Fp2/etc\n let g = Fp.pow(Fp.mul(Fp.ONE, Z), Q); // will update both x and b\n let x = Fp.pow(n, Q1div2); // first guess at the square root\n let b = Fp.pow(n, Q); // first guess at the fudge factor\n while (!Fp.eql(b, Fp.ONE)) {\n if (Fp.eql(b, Fp.ZERO))\n return Fp.ZERO; // https://en.wikipedia.org/wiki/Tonelli%E2%80%93Shanks_algorithm (4. If t = 0, return r = 0)\n // Find m such b^(2^m)==1\n let m = 1;\n for (let t2 = Fp.sqr(b); m < r; m++) {\n if (Fp.eql(t2, Fp.ONE))\n break;\n t2 = Fp.sqr(t2); // t2 *= t2\n }\n // NOTE: r-m-1 can be bigger than 32, need to convert to bigint before shift, otherwise there will be overflow\n const ge = Fp.pow(g, _1n << BigInt(r - m - 1)); // ge = 2^(r-m-1)\n g = Fp.sqr(ge); // g = ge * ge\n x = Fp.mul(x, ge); // x *= ge\n b = Fp.mul(b, g); // b *= g\n r = m;\n }\n return x;\n };\n}\nexport function FpSqrt(P) {\n // NOTE: different algorithms can give different roots, it is up to user to decide which one they want.\n // For example there is FpSqrtOdd/FpSqrtEven to choice root based on oddness (used for hash-to-curve).\n // P ≡ 3 (mod 4)\n // √n = n^((P+1)/4)\n if (P % _4n === _3n) {\n // Not all roots possible!\n // const ORDER =\n // 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaabn;\n // const NUM = 72057594037927816n;\n const p1div4 = (P + _1n) / _4n;\n return function sqrt3mod4(Fp, n) {\n const root = Fp.pow(n, p1div4);\n // Throw if root**2 != n\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // Atkin algorithm for q ≡ 5 (mod 8), https://eprint.iacr.org/2012/685.pdf (page 10)\n if (P % _8n === _5n) {\n const c1 = (P - _5n) / _8n;\n return function sqrt5mod8(Fp, n) {\n const n2 = Fp.mul(n, _2n);\n const v = Fp.pow(n2, c1);\n const nv = Fp.mul(n, v);\n const i = Fp.mul(Fp.mul(nv, _2n), v);\n const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n };\n }\n // P ≡ 9 (mod 16)\n if (P % _16n === _9n) {\n // NOTE: tonelli is too slow for bls-Fp2 calculations even on start\n // Means we cannot use sqrt for constants at all!\n //\n // const c1 = Fp.sqrt(Fp.negate(Fp.ONE)); // 1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n // const c2 = Fp.sqrt(c1); // 2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n // const c3 = Fp.sqrt(Fp.negate(c1)); // 3. c3 = sqrt(-c1) in F, i.e., (c3^2) == -c1 in F\n // const c4 = (P + _7n) / _16n; // 4. c4 = (q + 7) / 16 # Integer arithmetic\n // sqrt = (x) => {\n // let tv1 = Fp.pow(x, c4); // 1. tv1 = x^c4\n // let tv2 = Fp.mul(c1, tv1); // 2. tv2 = c1 * tv1\n // const tv3 = Fp.mul(c2, tv1); // 3. tv3 = c2 * tv1\n // let tv4 = Fp.mul(c3, tv1); // 4. tv4 = c3 * tv1\n // const e1 = Fp.equals(Fp.square(tv2), x); // 5. e1 = (tv2^2) == x\n // const e2 = Fp.equals(Fp.square(tv3), x); // 6. e2 = (tv3^2) == x\n // tv1 = Fp.cmov(tv1, tv2, e1); // 7. tv1 = CMOV(tv1, tv2, e1) # Select tv2 if (tv2^2) == x\n // tv2 = Fp.cmov(tv4, tv3, e2); // 8. tv2 = CMOV(tv4, tv3, e2) # Select tv3 if (tv3^2) == x\n // const e3 = Fp.equals(Fp.square(tv2), x); // 9. e3 = (tv2^2) == x\n // return Fp.cmov(tv1, tv2, e3); // 10. z = CMOV(tv1, tv2, e3) # Select the sqrt from tv1 and tv2\n // }\n }\n // Other cases: Tonelli-Shanks algorithm\n return tonelliShanks(P);\n}\n// Little-endian check for first LE bit (last BE bit);\nexport const isNegativeLE = (num, modulo) => (mod(num, modulo) & _1n) === _1n;\n// prettier-ignore\nconst FIELD_FIELDS = [\n 'create', 'isValid', 'is0', 'neg', 'inv', 'sqrt', 'sqr',\n 'eql', 'add', 'sub', 'mul', 'pow', 'div',\n 'addN', 'subN', 'mulN', 'sqrN'\n];\nexport function validateField(field) {\n const initial = {\n ORDER: 'bigint',\n MASK: 'bigint',\n BYTES: 'isSafeInteger',\n BITS: 'isSafeInteger',\n };\n const opts = FIELD_FIELDS.reduce((map, val) => {\n map[val] = 'function';\n return map;\n }, initial);\n return validateObject(field, opts);\n}\n// Generic field functions\nexport function FpPow(f, num, power) {\n // Should have same speed as pow for bigints\n // TODO: benchmark!\n if (power < _0n)\n throw new Error('Expected power > 0');\n if (power === _0n)\n return f.ONE;\n if (power === _1n)\n return num;\n let p = f.ONE;\n let d = num;\n while (power > _0n) {\n if (power & _1n)\n p = f.mul(p, d);\n d = f.sqr(d);\n power >>= _1n;\n }\n return p;\n}\n// 0 is non-invertible: non-batched version will throw on 0\nexport function FpInvertBatch(f, nums) {\n const tmp = new Array(nums.length);\n // Walk from first to last, multiply them by each other MOD p\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (f.is0(num))\n return acc;\n tmp[i] = acc;\n return f.mul(acc, num);\n }, f.ONE);\n // Invert last element\n const inverted = f.inv(lastMultiplied);\n // Walk from last to first, multiply them by inverted each other MOD p\n nums.reduceRight((acc, num, i) => {\n if (f.is0(num))\n return acc;\n tmp[i] = f.mul(acc, tmp[i]);\n return f.mul(acc, num);\n }, inverted);\n return tmp;\n}\nexport function FpDiv(f, lhs, rhs) {\n return f.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, f.ORDER) : f.inv(rhs));\n}\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare(f) {\n const legendreConst = (f.ORDER - _1n) / _2n; // Integer arithmetic\n return (x) => {\n const p = f.pow(x, legendreConst);\n return f.eql(p, f.ZERO) || f.eql(p, f.ONE);\n };\n}\n// CURVE.n lengths\nexport function nLength(n, nBitLength) {\n // Bit size, byte size of CURVE.n\n const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;\n const nByteLength = Math.ceil(_nBitLength / 8);\n return { nBitLength: _nBitLength, nByteLength };\n}\n/**\n * Initializes a galois field over prime. Non-primes are not supported for now.\n * Do not init in loop: slow. Very fragile: always run a benchmark on change.\n * Major performance gains:\n * a) non-normalized operations like mulN instead of mul\n * b) `Object.freeze`\n * c) Same object shape: never add or remove keys\n * @param ORDER prime positive bigint\n * @param bitLen how many bits the field consumes\n * @param isLE (def: false) if encoding / decoding should be in little-endian\n * @param redef optional faster redefinitions of sqrt and other methods\n */\nexport function Field(ORDER, bitLen, isLE = false, redef = {}) {\n if (ORDER <= _0n)\n throw new Error(`Expected Fp ORDER > 0, got ${ORDER}`);\n const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, bitLen);\n if (BYTES > 2048)\n throw new Error('Field lengths over 2048 bytes are not supported');\n const sqrtP = FpSqrt(ORDER);\n const f = Object.freeze({\n ORDER,\n BITS,\n BYTES,\n MASK: bitMask(BITS),\n ZERO: _0n,\n ONE: _1n,\n create: (num) => mod(num, ORDER),\n isValid: (num) => {\n if (typeof num !== 'bigint')\n throw new Error(`Invalid field element: expected bigint, got ${typeof num}`);\n return _0n <= num && num < ORDER; // 0 is valid element, but it's not invertible\n },\n is0: (num) => num === _0n,\n isOdd: (num) => (num & _1n) === _1n,\n neg: (num) => mod(-num, ORDER),\n eql: (lhs, rhs) => lhs === rhs,\n sqr: (num) => mod(num * num, ORDER),\n add: (lhs, rhs) => mod(lhs + rhs, ORDER),\n sub: (lhs, rhs) => mod(lhs - rhs, ORDER),\n mul: (lhs, rhs) => mod(lhs * rhs, ORDER),\n pow: (num, power) => FpPow(f, num, power),\n div: (lhs, rhs) => mod(lhs * invert(rhs, ORDER), ORDER),\n // Same as above, but doesn't normalize\n sqrN: (num) => num * num,\n addN: (lhs, rhs) => lhs + rhs,\n subN: (lhs, rhs) => lhs - rhs,\n mulN: (lhs, rhs) => lhs * rhs,\n inv: (num) => invert(num, ORDER),\n sqrt: redef.sqrt || ((n) => sqrtP(f, n)),\n invertBatch: (lst) => FpInvertBatch(f, lst),\n // TODO: do we really need constant cmov?\n // We don't have const-time bigints anyway, so probably will be not very useful\n cmov: (a, b, c) => (c ? b : a),\n toBytes: (num) => (isLE ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES)),\n fromBytes: (bytes) => {\n if (bytes.length !== BYTES)\n throw new Error(`Fp.fromBytes: expected ${BYTES}, got ${bytes.length}`);\n return isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n },\n });\n return Object.freeze(f);\n}\nexport function FpSqrtOdd(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(`Field doesn't have isOdd`);\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? root : Fp.neg(root);\n}\nexport function FpSqrtEven(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(`Field doesn't have isOdd`);\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? Fp.neg(root) : root;\n}\n/**\n * FIPS 186 B.4.1-compliant \"constant-time\" private key generation utility.\n * Can take (n+8) or more bytes of uniform input e.g. from CSPRNG or KDF\n * and convert them into private scalar, with the modulo bias being neglible.\n * Needs at least 40 bytes of input for 32-byte private key.\n * https://research.kudelskisecurity.com/2020/07/28/the-definitive-guide-to-modulo-bias-and-how-to-avoid-it/\n * @param hash hash output from SHA3 or a similar function\n * @returns valid private scalar\n */\nexport function hashToPrivateScalar(hash, groupOrder, isLE = false) {\n hash = ensureBytes('privateHash', hash);\n const hashLen = hash.length;\n const minLen = nLength(groupOrder).nByteLength + 8;\n if (minLen < 24 || hashLen < minLen || hashLen > 1024)\n throw new Error(`hashToPrivateScalar: expected ${minLen}-1024 bytes of input, got ${hashLen}`);\n const num = isLE ? bytesToNumberLE(hash) : bytesToNumberBE(hash);\n return mod(num, groupOrder - _1n) + _1n;\n}\n//# sourceMappingURL=modular.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Abelian group utilities\nimport { validateField, nLength } from './modular.js';\nimport { validateObject } from './utils.js';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\n// Elliptic curve multiplication of Point by scalar. Fragile.\n// Scalars should always be less than curve order: this should be checked inside of a curve itself.\n// Creates precomputation tables for fast multiplication:\n// - private scalar is split by fixed size windows of W bits\n// - every window point is collected from window's table & added to accumulator\n// - since windows are different, same point inside tables won't be accessed more than once per calc\n// - each multiplication is 'Math.ceil(CURVE_ORDER / 𝑊) + 1' point additions (fixed for any scalar)\n// - +1 window is neccessary for wNAF\n// - wNAF reduces table size: 2x less memory + 2x faster generation, but 10% slower multiplication\n// TODO: Research returning 2d JS array of windows, instead of a single window. This would allow\n// windows to be in different memory locations\nexport function wNAF(c, bits) {\n const constTimeNegate = (condition, item) => {\n const neg = item.negate();\n return condition ? neg : item;\n };\n const opts = (W) => {\n const windows = Math.ceil(bits / W) + 1; // +1, because\n const windowSize = 2 ** (W - 1); // -1 because we skip zero\n return { windows, windowSize };\n };\n return {\n constTimeNegate,\n // non-const time multiplication ladder\n unsafeLadder(elm, n) {\n let p = c.ZERO;\n let d = elm;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n },\n /**\n * Creates a wNAF precomputation window. Used for caching.\n * Default window size is set by `utils.precompute()` and is equal to 8.\n * Number of precomputed points depends on the curve size:\n * 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:\n * - 𝑊 is the window size\n * - 𝑛 is the bitlength of the curve order.\n * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n * @returns precomputed point tables flattened to a single array\n */\n precomputeWindow(elm, W) {\n const { windows, windowSize } = opts(W);\n const points = [];\n let p = elm;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n // =1, because we skip zero\n for (let i = 1; i < windowSize; i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n },\n /**\n * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n * @param W window size\n * @param precomputes precomputed tables\n * @param n scalar (we don't check here, but should be less than curve order)\n * @returns real and fake (for const-time) points\n */\n wNAF(W, precomputes, n) {\n // TODO: maybe check that scalar is less than group order? wNAF behavious is undefined otherwise\n // But need to carefully remove other checks before wNAF. ORDER == bits here\n const { windows, windowSize } = opts(W);\n let p = c.ZERO;\n let f = c.BASE;\n const mask = BigInt(2 ** W - 1); // Create mask with W ones: 0b1111 for W=4 etc.\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n // Extract W bits.\n let wbits = Number(n & mask);\n // Shift number by W bits.\n n >>= shiftBy;\n // If the bits are bigger than max size, we'll split those.\n // +224 => 256 - 32\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n // This code was first written with assumption that 'f' and 'p' will never be infinity point:\n // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,\n // there is negate now: it is possible that negated element from low value\n // would be the same as high element, which will create carry into next window.\n // It's not obvious how this can fail, but still worth investigating later.\n // Check if we're onto Zero point.\n // Add random point inside current window to f.\n const offset1 = offset;\n const offset2 = offset + Math.abs(wbits) - 1; // -1 because we skip zero\n const cond1 = window % 2 !== 0;\n const cond2 = wbits < 0;\n if (wbits === 0) {\n // The most important part for const-time getPublicKey\n f = f.add(constTimeNegate(cond1, precomputes[offset1]));\n }\n else {\n p = p.add(constTimeNegate(cond2, precomputes[offset2]));\n }\n }\n // JIT-compiler should not eliminate f here, since it will later be used in normalizeZ()\n // Even if the variable is still unused, there are some checks which will\n // throw an exception, so compiler needs to prove they won't happen, which is hard.\n // At this point there is a way to F be infinity-point even if p is not,\n // which makes it less const-time: around 1 bigint multiply.\n return { p, f };\n },\n wNAFCached(P, precomputesMap, n, transform) {\n // @ts-ignore\n const W = P._WINDOW_SIZE || 1;\n // Calculate precomputes on a first run, reuse them after\n let comp = precomputesMap.get(P);\n if (!comp) {\n comp = this.precomputeWindow(P, W);\n if (W !== 1) {\n precomputesMap.set(P, transform(comp));\n }\n }\n return this.wNAF(W, comp, n);\n },\n };\n}\nexport function validateBasic(curve) {\n validateField(curve.Fp);\n validateObject(curve, {\n n: 'bigint',\n h: 'bigint',\n Gx: 'field',\n Gy: 'field',\n }, {\n nBitLength: 'isSafeInteger',\n nByteLength: 'isSafeInteger',\n });\n // Set defaults\n return Object.freeze({\n ...nLength(curve.n, curve.nBitLength),\n ...curve,\n ...{ p: curve.Fp.ORDER },\n });\n}\n//# sourceMappingURL=curve.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Short Weierstrass curve. The formula is: y² = x³ + ax + b\nimport * as mod from './modular.js';\nimport * as ut from './utils.js';\nimport { ensureBytes } from './utils.js';\nimport { wNAF, validateBasic } from './curve.js';\nfunction validatePointOpts(curve) {\n const opts = validateBasic(curve);\n ut.validateObject(opts, {\n a: 'field',\n b: 'field',\n }, {\n allowedPrivateKeyLengths: 'array',\n wrapPrivateKey: 'boolean',\n isTorsionFree: 'function',\n clearCofactor: 'function',\n allowInfinityPoint: 'boolean',\n fromBytes: 'function',\n toBytes: 'function',\n });\n const { endo, Fp, a } = opts;\n if (endo) {\n if (!Fp.eql(a, Fp.ZERO)) {\n throw new Error('Endomorphism can only be defined for Koblitz curves that have a=0');\n }\n if (typeof endo !== 'object' ||\n typeof endo.beta !== 'bigint' ||\n typeof endo.splitScalar !== 'function') {\n throw new Error('Expected endomorphism with beta: bigint and splitScalar: function');\n }\n }\n return Object.freeze({ ...opts });\n}\n// ASN.1 DER encoding utilities\nconst { bytesToNumberBE: b2n, hexToBytes: h2b } = ut;\nexport const DER = {\n // asn.1 DER encoding utils\n Err: class DERErr extends Error {\n constructor(m = '') {\n super(m);\n }\n },\n _parseInt(data) {\n const { Err: E } = DER;\n if (data.length < 2 || data[0] !== 0x02)\n throw new E('Invalid signature integer tag');\n const len = data[1];\n const res = data.subarray(2, len + 2);\n if (!len || res.length !== len)\n throw new E('Invalid signature integer: wrong length');\n // https://crypto.stackexchange.com/a/57734 Leftmost bit of first byte is 'negative' flag,\n // since we always use positive integers here. It must always be empty:\n // - add zero byte if exists\n // - if next byte doesn't have a flag, leading zero is not allowed (minimal encoding)\n if (res[0] & 0b10000000)\n throw new E('Invalid signature integer: negative');\n if (res[0] === 0x00 && !(res[1] & 0b10000000))\n throw new E('Invalid signature integer: unnecessary leading zero');\n return { d: b2n(res), l: data.subarray(len + 2) }; // d is data, l is left\n },\n toSig(hex) {\n // parse DER signature\n const { Err: E } = DER;\n const data = typeof hex === 'string' ? h2b(hex) : hex;\n if (!(data instanceof Uint8Array))\n throw new Error('ui8a expected');\n let l = data.length;\n if (l < 2 || data[0] != 0x30)\n throw new E('Invalid signature tag');\n if (data[1] !== l - 2)\n throw new E('Invalid signature: incorrect length');\n const { d: r, l: sBytes } = DER._parseInt(data.subarray(2));\n const { d: s, l: rBytesLeft } = DER._parseInt(sBytes);\n if (rBytesLeft.length)\n throw new E('Invalid signature: left bytes after parsing');\n return { r, s };\n },\n hexFromSig(sig) {\n // Add leading zero if first byte has negative bit enabled. More details in '_parseInt'\n const slice = (s) => (Number.parseInt(s[0], 16) & 0b1000 ? '00' + s : s);\n const h = (num) => {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n };\n const s = slice(h(sig.s));\n const r = slice(h(sig.r));\n const shl = s.length / 2;\n const rhl = r.length / 2;\n const sl = h(shl);\n const rl = h(rhl);\n return `30${h(rhl + shl + 4)}02${rl}${r}02${sl}${s}`;\n },\n};\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3), _4n = BigInt(4);\nexport function weierstrassPoints(opts) {\n const CURVE = validatePointOpts(opts);\n const { Fp } = CURVE; // All curves has same field / group length as for now, but they can differ\n const toBytes = CURVE.toBytes ||\n ((c, point, isCompressed) => {\n const a = point.toAffine();\n return ut.concatBytes(Uint8Array.from([0x04]), Fp.toBytes(a.x), Fp.toBytes(a.y));\n });\n const fromBytes = CURVE.fromBytes ||\n ((bytes) => {\n // const head = bytes[0];\n const tail = bytes.subarray(1);\n // if (head !== 0x04) throw new Error('Only non-compressed encoding is supported');\n const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n return { x, y };\n });\n /**\n * y² = x³ + ax + b: Short weierstrass curve formula\n * @returns y²\n */\n function weierstrassEquation(x) {\n const { a, b } = CURVE;\n const x2 = Fp.sqr(x); // x * x\n const x3 = Fp.mul(x2, x); // x2 * x\n return Fp.add(Fp.add(x3, Fp.mul(x, a)), b); // x3 + a * x + b\n }\n // Validate whether the passed curve params are valid.\n // We check if curve equation works for generator point.\n // `assertValidity()` won't work: `isTorsionFree()` is not available at this point in bls12-381.\n // ProjectivePoint class has not been initialized yet.\n if (!Fp.eql(Fp.sqr(CURVE.Gy), weierstrassEquation(CURVE.Gx)))\n throw new Error('bad generator point: equation left != right');\n // Valid group elements reside in range 1..n-1\n function isWithinCurveOrder(num) {\n return typeof num === 'bigint' && _0n < num && num < CURVE.n;\n }\n function assertGE(num) {\n if (!isWithinCurveOrder(num))\n throw new Error('Expected valid bigint: 0 < bigint < curve.n');\n }\n // Validates if priv key is valid and converts it to bigint.\n // Supports options allowedPrivateKeyLengths and wrapPrivateKey.\n function normPrivateKeyToScalar(key) {\n const { allowedPrivateKeyLengths: lengths, nByteLength, wrapPrivateKey, n } = CURVE;\n if (lengths && typeof key !== 'bigint') {\n if (key instanceof Uint8Array)\n key = ut.bytesToHex(key);\n // Normalize to hex string, pad. E.g. P521 would norm 130-132 char hex to 132-char bytes\n if (typeof key !== 'string' || !lengths.includes(key.length))\n throw new Error('Invalid key');\n key = key.padStart(nByteLength * 2, '0');\n }\n let num;\n try {\n num =\n typeof key === 'bigint'\n ? key\n : ut.bytesToNumberBE(ensureBytes('private key', key, nByteLength));\n }\n catch (error) {\n throw new Error(`private key must be ${nByteLength} bytes, hex or bigint, not ${typeof key}`);\n }\n if (wrapPrivateKey)\n num = mod.mod(num, n); // disabled by default, enabled for BLS\n assertGE(num); // num in range [1..N-1]\n return num;\n }\n const pointPrecomputes = new Map();\n function assertPrjPoint(other) {\n if (!(other instanceof Point))\n throw new Error('ProjectivePoint expected');\n }\n /**\n * Projective Point works in 3d / projective (homogeneous) coordinates: (x, y, z) ∋ (x=x/z, y=y/z)\n * Default Point works in 2d / affine coordinates: (x, y)\n * We're doing calculations in projective, because its operations don't require costly inversion.\n */\n class Point {\n constructor(px, py, pz) {\n this.px = px;\n this.py = py;\n this.pz = pz;\n if (px == null || !Fp.isValid(px))\n throw new Error('x required');\n if (py == null || !Fp.isValid(py))\n throw new Error('y required');\n if (pz == null || !Fp.isValid(pz))\n throw new Error('z required');\n }\n // Does not validate if the point is on-curve.\n // Use fromHex instead, or call assertValidity() later.\n static fromAffine(p) {\n const { x, y } = p || {};\n if (!p || !Fp.isValid(x) || !Fp.isValid(y))\n throw new Error('invalid affine point');\n if (p instanceof Point)\n throw new Error('projective point not allowed');\n const is0 = (i) => Fp.eql(i, Fp.ZERO);\n // fromAffine(x:0, y:0) would produce (x:0, y:0, z:1), but we need (x:0, y:1, z:0)\n if (is0(x) && is0(y))\n return Point.ZERO;\n return new Point(x, y, Fp.ONE);\n }\n get x() {\n return this.toAffine().x;\n }\n get y() {\n return this.toAffine().y;\n }\n /**\n * Takes a bunch of Projective Points but executes only one\n * inversion on all of them. Inversion is very slow operation,\n * so this improves performance massively.\n * Optimization: converts a list of projective points to a list of identical points with Z=1.\n */\n static normalizeZ(points) {\n const toInv = Fp.invertBatch(points.map((p) => p.pz));\n return points.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n }\n /**\n * Converts hash string or Uint8Array to Point.\n * @param hex short/long ECDSA hex\n */\n static fromHex(hex) {\n const P = Point.fromAffine(fromBytes(ensureBytes('pointHex', hex)));\n P.assertValidity();\n return P;\n }\n // Multiplies generator point by privateKey.\n static fromPrivateKey(privateKey) {\n return Point.BASE.multiply(normPrivateKeyToScalar(privateKey));\n }\n // \"Private method\", don't use it directly\n _setWindowSize(windowSize) {\n this._WINDOW_SIZE = windowSize;\n pointPrecomputes.delete(this);\n }\n // A point on curve is valid if it conforms to equation.\n assertValidity() {\n // Zero is valid point too!\n if (this.is0()) {\n if (CURVE.allowInfinityPoint)\n return;\n throw new Error('bad point: ZERO');\n }\n // Some 3rd-party test vectors require different wording between here & `fromCompressedHex`\n const { x, y } = this.toAffine();\n // Check if x, y are valid field elements\n if (!Fp.isValid(x) || !Fp.isValid(y))\n throw new Error('bad point: x or y not FE');\n const left = Fp.sqr(y); // y²\n const right = weierstrassEquation(x); // x³ + ax + b\n if (!Fp.eql(left, right))\n throw new Error('bad point: equation left != right');\n if (!this.isTorsionFree())\n throw new Error('bad point: not in prime-order subgroup');\n }\n hasEvenY() {\n const { y } = this.toAffine();\n if (Fp.isOdd)\n return !Fp.isOdd(y);\n throw new Error(\"Field doesn't support isOdd\");\n }\n /**\n * Compare one point to another.\n */\n equals(other) {\n assertPrjPoint(other);\n const { px: X1, py: Y1, pz: Z1 } = this;\n const { px: X2, py: Y2, pz: Z2 } = other;\n const U1 = Fp.eql(Fp.mul(X1, Z2), Fp.mul(X2, Z1));\n const U2 = Fp.eql(Fp.mul(Y1, Z2), Fp.mul(Y2, Z1));\n return U1 && U2;\n }\n /**\n * Flips point to one corresponding to (x, -y) in Affine coordinates.\n */\n negate() {\n return new Point(this.px, Fp.neg(this.py), this.pz);\n }\n // Renes-Costello-Batina exception-free doubling formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 3\n // Cost: 8M + 3S + 3*a + 2*b3 + 15add.\n double() {\n const { a, b } = CURVE;\n const b3 = Fp.mul(b, _3n);\n const { px: X1, py: Y1, pz: Z1 } = this;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n let t0 = Fp.mul(X1, X1); // step 1\n let t1 = Fp.mul(Y1, Y1);\n let t2 = Fp.mul(Z1, Z1);\n let t3 = Fp.mul(X1, Y1);\n t3 = Fp.add(t3, t3); // step 5\n Z3 = Fp.mul(X1, Z1);\n Z3 = Fp.add(Z3, Z3);\n X3 = Fp.mul(a, Z3);\n Y3 = Fp.mul(b3, t2);\n Y3 = Fp.add(X3, Y3); // step 10\n X3 = Fp.sub(t1, Y3);\n Y3 = Fp.add(t1, Y3);\n Y3 = Fp.mul(X3, Y3);\n X3 = Fp.mul(t3, X3);\n Z3 = Fp.mul(b3, Z3); // step 15\n t2 = Fp.mul(a, t2);\n t3 = Fp.sub(t0, t2);\n t3 = Fp.mul(a, t3);\n t3 = Fp.add(t3, Z3);\n Z3 = Fp.add(t0, t0); // step 20\n t0 = Fp.add(Z3, t0);\n t0 = Fp.add(t0, t2);\n t0 = Fp.mul(t0, t3);\n Y3 = Fp.add(Y3, t0);\n t2 = Fp.mul(Y1, Z1); // step 25\n t2 = Fp.add(t2, t2);\n t0 = Fp.mul(t2, t3);\n X3 = Fp.sub(X3, t0);\n Z3 = Fp.mul(t2, t1);\n Z3 = Fp.add(Z3, Z3); // step 30\n Z3 = Fp.add(Z3, Z3);\n return new Point(X3, Y3, Z3);\n }\n // Renes-Costello-Batina exception-free addition formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 1\n // Cost: 12M + 0S + 3*a + 3*b3 + 23add.\n add(other) {\n assertPrjPoint(other);\n const { px: X1, py: Y1, pz: Z1 } = this;\n const { px: X2, py: Y2, pz: Z2 } = other;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n const a = CURVE.a;\n const b3 = Fp.mul(CURVE.b, _3n);\n let t0 = Fp.mul(X1, X2); // step 1\n let t1 = Fp.mul(Y1, Y2);\n let t2 = Fp.mul(Z1, Z2);\n let t3 = Fp.add(X1, Y1);\n let t4 = Fp.add(X2, Y2); // step 5\n t3 = Fp.mul(t3, t4);\n t4 = Fp.add(t0, t1);\n t3 = Fp.sub(t3, t4);\n t4 = Fp.add(X1, Z1);\n let t5 = Fp.add(X2, Z2); // step 10\n t4 = Fp.mul(t4, t5);\n t5 = Fp.add(t0, t2);\n t4 = Fp.sub(t4, t5);\n t5 = Fp.add(Y1, Z1);\n X3 = Fp.add(Y2, Z2); // step 15\n t5 = Fp.mul(t5, X3);\n X3 = Fp.add(t1, t2);\n t5 = Fp.sub(t5, X3);\n Z3 = Fp.mul(a, t4);\n X3 = Fp.mul(b3, t2); // step 20\n Z3 = Fp.add(X3, Z3);\n X3 = Fp.sub(t1, Z3);\n Z3 = Fp.add(t1, Z3);\n Y3 = Fp.mul(X3, Z3);\n t1 = Fp.add(t0, t0); // step 25\n t1 = Fp.add(t1, t0);\n t2 = Fp.mul(a, t2);\n t4 = Fp.mul(b3, t4);\n t1 = Fp.add(t1, t2);\n t2 = Fp.sub(t0, t2); // step 30\n t2 = Fp.mul(a, t2);\n t4 = Fp.add(t4, t2);\n t0 = Fp.mul(t1, t4);\n Y3 = Fp.add(Y3, t0);\n t0 = Fp.mul(t5, t4); // step 35\n X3 = Fp.mul(t3, X3);\n X3 = Fp.sub(X3, t0);\n t0 = Fp.mul(t3, t1);\n Z3 = Fp.mul(t5, Z3);\n Z3 = Fp.add(Z3, t0); // step 40\n return new Point(X3, Y3, Z3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n is0() {\n return this.equals(Point.ZERO);\n }\n wNAF(n) {\n return wnaf.wNAFCached(this, pointPrecomputes, n, (comp) => {\n const toInv = Fp.invertBatch(comp.map((p) => p.pz));\n return comp.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n });\n }\n /**\n * Non-constant-time multiplication. Uses double-and-add algorithm.\n * It's faster, but should only be used when you don't care about\n * an exposed private key e.g. sig verification, which works over *public* keys.\n */\n multiplyUnsafe(n) {\n const I = Point.ZERO;\n if (n === _0n)\n return I;\n assertGE(n); // Will throw on 0\n if (n === _1n)\n return this;\n const { endo } = CURVE;\n if (!endo)\n return wnaf.unsafeLadder(this, n);\n // Apply endomorphism\n let { k1neg, k1, k2neg, k2 } = endo.splitScalar(n);\n let k1p = I;\n let k2p = I;\n let d = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n)\n k1p = k1p.add(d);\n if (k2 & _1n)\n k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n return k1p.add(k2p);\n }\n /**\n * Constant time multiplication.\n * Uses wNAF method. Windowed method may be 10% faster,\n * but takes 2x longer to generate and consumes 2x memory.\n * Uses precomputes when available.\n * Uses endomorphism for Koblitz curves.\n * @param scalar by which the point would be multiplied\n * @returns New point\n */\n multiply(scalar) {\n assertGE(scalar);\n let n = scalar;\n let point, fake; // Fake point is used to const-time mult\n const { endo } = CURVE;\n if (endo) {\n const { k1neg, k1, k2neg, k2 } = endo.splitScalar(n);\n let { p: k1p, f: f1p } = this.wNAF(k1);\n let { p: k2p, f: f2p } = this.wNAF(k2);\n k1p = wnaf.constTimeNegate(k1neg, k1p);\n k2p = wnaf.constTimeNegate(k2neg, k2p);\n k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n }\n else {\n const { p, f } = this.wNAF(n);\n point = p;\n fake = f;\n }\n // Normalize `z` for both points, but return only real one\n return Point.normalizeZ([point, fake])[0];\n }\n /**\n * Efficiently calculate `aP + bQ`. Unsafe, can expose private key, if used incorrectly.\n * Not using Strauss-Shamir trick: precomputation tables are faster.\n * The trick could be useful if both P and Q are not G (not in our case).\n * @returns non-zero affine point\n */\n multiplyAndAddUnsafe(Q, a, b) {\n const G = Point.BASE; // No Strauss-Shamir trick: we have 10% faster G precomputes\n const mul = (P, a // Select faster multiply() method\n ) => (a === _0n || a === _1n || !P.equals(G) ? P.multiplyUnsafe(a) : P.multiply(a));\n const sum = mul(this, a).add(mul(Q, b));\n return sum.is0() ? undefined : sum;\n }\n // Converts Projective point to affine (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n // (x, y, z) ∋ (x=x/z, y=y/z)\n toAffine(iz) {\n const { px: x, py: y, pz: z } = this;\n const is0 = this.is0();\n // If invZ was 0, we return zero point. However we still want to execute\n // all operations, so we replace invZ with a random number, 1.\n if (iz == null)\n iz = is0 ? Fp.ONE : Fp.inv(z);\n const ax = Fp.mul(x, iz);\n const ay = Fp.mul(y, iz);\n const zz = Fp.mul(z, iz);\n if (is0)\n return { x: Fp.ZERO, y: Fp.ZERO };\n if (!Fp.eql(zz, Fp.ONE))\n throw new Error('invZ was invalid');\n return { x: ax, y: ay };\n }\n isTorsionFree() {\n const { h: cofactor, isTorsionFree } = CURVE;\n if (cofactor === _1n)\n return true; // No subgroups, always torsion-free\n if (isTorsionFree)\n return isTorsionFree(Point, this);\n throw new Error('isTorsionFree() has not been declared for the elliptic curve');\n }\n clearCofactor() {\n const { h: cofactor, clearCofactor } = CURVE;\n if (cofactor === _1n)\n return this; // Fast-path\n if (clearCofactor)\n return clearCofactor(Point, this);\n return this.multiplyUnsafe(CURVE.h);\n }\n toRawBytes(isCompressed = true) {\n this.assertValidity();\n return toBytes(Point, this, isCompressed);\n }\n toHex(isCompressed = true) {\n return ut.bytesToHex(this.toRawBytes(isCompressed));\n }\n }\n Point.BASE = new Point(CURVE.Gx, CURVE.Gy, Fp.ONE);\n Point.ZERO = new Point(Fp.ZERO, Fp.ONE, Fp.ZERO);\n const _bits = CURVE.nBitLength;\n const wnaf = wNAF(Point, CURVE.endo ? Math.ceil(_bits / 2) : _bits);\n // Validate if generator point is on curve\n return {\n CURVE,\n ProjectivePoint: Point,\n normPrivateKeyToScalar,\n weierstrassEquation,\n isWithinCurveOrder,\n };\n}\nfunction validateOpts(curve) {\n const opts = validateBasic(curve);\n ut.validateObject(opts, {\n hash: 'hash',\n hmac: 'function',\n randomBytes: 'function',\n }, {\n bits2int: 'function',\n bits2int_modN: 'function',\n lowS: 'boolean',\n });\n return Object.freeze({ lowS: true, ...opts });\n}\nexport function weierstrass(curveDef) {\n const CURVE = validateOpts(curveDef);\n const { Fp, n: CURVE_ORDER } = CURVE;\n const compressedLen = Fp.BYTES + 1; // e.g. 33 for 32\n const uncompressedLen = 2 * Fp.BYTES + 1; // e.g. 65 for 32\n function isValidFieldElement(num) {\n return _0n < num && num < Fp.ORDER; // 0 is banned since it's not invertible FE\n }\n function modN(a) {\n return mod.mod(a, CURVE_ORDER);\n }\n function invN(a) {\n return mod.invert(a, CURVE_ORDER);\n }\n const { ProjectivePoint: Point, normPrivateKeyToScalar, weierstrassEquation, isWithinCurveOrder, } = weierstrassPoints({\n ...CURVE,\n toBytes(c, point, isCompressed) {\n const a = point.toAffine();\n const x = Fp.toBytes(a.x);\n const cat = ut.concatBytes;\n if (isCompressed) {\n return cat(Uint8Array.from([point.hasEvenY() ? 0x02 : 0x03]), x);\n }\n else {\n return cat(Uint8Array.from([0x04]), x, Fp.toBytes(a.y));\n }\n },\n fromBytes(bytes) {\n const len = bytes.length;\n const head = bytes[0];\n const tail = bytes.subarray(1);\n // this.assertValidity() is done inside of fromHex\n if (len === compressedLen && (head === 0x02 || head === 0x03)) {\n const x = ut.bytesToNumberBE(tail);\n if (!isValidFieldElement(x))\n throw new Error('Point is not on curve');\n const y2 = weierstrassEquation(x); // y² = x³ + ax + b\n let y = Fp.sqrt(y2); // y = y² ^ (p+1)/4\n const isYOdd = (y & _1n) === _1n;\n // ECDSA\n const isHeadOdd = (head & 1) === 1;\n if (isHeadOdd !== isYOdd)\n y = Fp.neg(y);\n return { x, y };\n }\n else if (len === uncompressedLen && head === 0x04) {\n const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n return { x, y };\n }\n else {\n throw new Error(`Point of length ${len} was invalid. Expected ${compressedLen} compressed bytes or ${uncompressedLen} uncompressed bytes`);\n }\n },\n });\n const numToNByteStr = (num) => ut.bytesToHex(ut.numberToBytesBE(num, CURVE.nByteLength));\n function isBiggerThanHalfOrder(number) {\n const HALF = CURVE_ORDER >> _1n;\n return number > HALF;\n }\n function normalizeS(s) {\n return isBiggerThanHalfOrder(s) ? modN(-s) : s;\n }\n // slice bytes num\n const slcNum = (b, from, to) => ut.bytesToNumberBE(b.slice(from, to));\n /**\n * ECDSA signature with its (r, s) properties. Supports DER & compact representations.\n */\n class Signature {\n constructor(r, s, recovery) {\n this.r = r;\n this.s = s;\n this.recovery = recovery;\n this.assertValidity();\n }\n // pair (bytes of r, bytes of s)\n static fromCompact(hex) {\n const l = CURVE.nByteLength;\n hex = ensureBytes('compactSignature', hex, l * 2);\n return new Signature(slcNum(hex, 0, l), slcNum(hex, l, 2 * l));\n }\n // DER encoded ECDSA signature\n // https://bitcoin.stackexchange.com/questions/57644/what-are-the-parts-of-a-bitcoin-transaction-input-script\n static fromDER(hex) {\n const { r, s } = DER.toSig(ensureBytes('DER', hex));\n return new Signature(r, s);\n }\n assertValidity() {\n // can use assertGE here\n if (!isWithinCurveOrder(this.r))\n throw new Error('r must be 0 < r < CURVE.n');\n if (!isWithinCurveOrder(this.s))\n throw new Error('s must be 0 < s < CURVE.n');\n }\n addRecoveryBit(recovery) {\n return new Signature(this.r, this.s, recovery);\n }\n recoverPublicKey(msgHash) {\n const { r, s, recovery: rec } = this;\n const h = bits2int_modN(ensureBytes('msgHash', msgHash)); // Truncate hash\n if (rec == null || ![0, 1, 2, 3].includes(rec))\n throw new Error('recovery id invalid');\n const radj = rec === 2 || rec === 3 ? r + CURVE.n : r;\n if (radj >= Fp.ORDER)\n throw new Error('recovery id 2 or 3 invalid');\n const prefix = (rec & 1) === 0 ? '02' : '03';\n const R = Point.fromHex(prefix + numToNByteStr(radj));\n const ir = invN(radj); // r^-1\n const u1 = modN(-h * ir); // -hr^-1\n const u2 = modN(s * ir); // sr^-1\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2); // (sr^-1)R-(hr^-1)G = -(hr^-1)G + (sr^-1)\n if (!Q)\n throw new Error('point at infinify'); // unsafe is fine: no priv data leaked\n Q.assertValidity();\n return Q;\n }\n // Signatures should be low-s, to prevent malleability.\n hasHighS() {\n return isBiggerThanHalfOrder(this.s);\n }\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, modN(-this.s), this.recovery) : this;\n }\n // DER-encoded\n toDERRawBytes() {\n return ut.hexToBytes(this.toDERHex());\n }\n toDERHex() {\n return DER.hexFromSig({ r: this.r, s: this.s });\n }\n // padded bytes of r, then padded bytes of s\n toCompactRawBytes() {\n return ut.hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n return numToNByteStr(this.r) + numToNByteStr(this.s);\n }\n }\n const utils = {\n isValidPrivateKey(privateKey) {\n try {\n normPrivateKeyToScalar(privateKey);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n normPrivateKeyToScalar: normPrivateKeyToScalar,\n /**\n * Produces cryptographically secure private key from random of size (nBitLength+64)\n * as per FIPS 186 B.4.1 with modulo bias being neglible.\n */\n randomPrivateKey: () => {\n const rand = CURVE.randomBytes(Fp.BYTES + 8);\n const num = mod.hashToPrivateScalar(rand, CURVE_ORDER);\n return ut.numberToBytesBE(num, CURVE.nByteLength);\n },\n /**\n * Creates precompute table for an arbitrary EC point. Makes point \"cached\".\n * Allows to massively speed-up `point.multiply(scalar)`.\n * @returns cached point\n * @example\n * const fast = utils.precompute(8, ProjectivePoint.fromHex(someonesPubKey));\n * fast.multiply(privKey); // much faster ECDH now\n */\n precompute(windowSize = 8, point = Point.BASE) {\n point._setWindowSize(windowSize);\n point.multiply(BigInt(3)); // 3 is arbitrary, just need any number here\n return point;\n },\n };\n /**\n * Computes public key for a private key. Checks for validity of the private key.\n * @param privateKey private key\n * @param isCompressed whether to return compact (default), or full key\n * @returns Public key, full when isCompressed=false; short when isCompressed=true\n */\n function getPublicKey(privateKey, isCompressed = true) {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n }\n /**\n * Quick and dirty check for item being public key. Does not validate hex, or being on-curve.\n */\n function isProbPub(item) {\n const arr = item instanceof Uint8Array;\n const str = typeof item === 'string';\n const len = (arr || str) && item.length;\n if (arr)\n return len === compressedLen || len === uncompressedLen;\n if (str)\n return len === 2 * compressedLen || len === 2 * uncompressedLen;\n if (item instanceof Point)\n return true;\n return false;\n }\n /**\n * ECDH (Elliptic Curve Diffie Hellman).\n * Computes shared public key from private key and public key.\n * Checks: 1) private key validity 2) shared key is on-curve.\n * Does NOT hash the result.\n * @param privateA private key\n * @param publicB different public key\n * @param isCompressed whether to return compact (default), or full key\n * @returns shared public key\n */\n function getSharedSecret(privateA, publicB, isCompressed = true) {\n if (isProbPub(privateA))\n throw new Error('first arg must be private key');\n if (!isProbPub(publicB))\n throw new Error('second arg must be public key');\n const b = Point.fromHex(publicB); // check for being on-curve\n return b.multiply(normPrivateKeyToScalar(privateA)).toRawBytes(isCompressed);\n }\n // RFC6979: ensure ECDSA msg is X bytes and < N. RFC suggests optional truncating via bits2octets.\n // FIPS 186-4 4.6 suggests the leftmost min(nBitLen, outLen) bits, which matches bits2int.\n // bits2int can produce res>N, we can do mod(res, N) since the bitLen is the same.\n // int2octets can't be used; pads small msgs with 0: unacceptatble for trunc as per RFC vectors\n const bits2int = CURVE.bits2int ||\n function (bytes) {\n // For curves with nBitLength % 8 !== 0: bits2octets(bits2octets(m)) !== bits2octets(m)\n // for some cases, since bytes.length * 8 is not actual bitLength.\n const num = ut.bytesToNumberBE(bytes); // check for == u8 done here\n const delta = bytes.length * 8 - CURVE.nBitLength; // truncate to nBitLength leftmost bits\n return delta > 0 ? num >> BigInt(delta) : num;\n };\n const bits2int_modN = CURVE.bits2int_modN ||\n function (bytes) {\n return modN(bits2int(bytes)); // can't use bytesToNumberBE here\n };\n // NOTE: pads output with zero as per spec\n const ORDER_MASK = ut.bitMask(CURVE.nBitLength);\n /**\n * Converts to bytes. Checks if num in `[0..ORDER_MASK-1]` e.g.: `[0..2^256-1]`.\n */\n function int2octets(num) {\n if (typeof num !== 'bigint')\n throw new Error('bigint expected');\n if (!(_0n <= num && num < ORDER_MASK))\n throw new Error(`bigint expected < 2^${CURVE.nBitLength}`);\n // works with order, can have different size than numToField!\n return ut.numberToBytesBE(num, CURVE.nByteLength);\n }\n // Steps A, D of RFC6979 3.2\n // Creates RFC6979 seed; converts msg/privKey to numbers.\n // Used only in sign, not in verify.\n // NOTE: we cannot assume here that msgHash has same amount of bytes as curve order, this will be wrong at least for P521.\n // Also it can be bigger for P224 + SHA256\n function prepSig(msgHash, privateKey, opts = defaultSigOpts) {\n if (['recovered', 'canonical'].some((k) => k in opts))\n throw new Error('sign() legacy options not supported');\n const { hash, randomBytes } = CURVE;\n let { lowS, prehash, extraEntropy: ent } = opts; // generates low-s sigs by default\n if (lowS == null)\n lowS = true; // RFC6979 3.2: we skip step A, because we already provide hash\n msgHash = ensureBytes('msgHash', msgHash);\n if (prehash)\n msgHash = ensureBytes('prehashed msgHash', hash(msgHash));\n // We can't later call bits2octets, since nested bits2int is broken for curves\n // with nBitLength % 8 !== 0. Because of that, we unwrap it here as int2octets call.\n // const bits2octets = (bits) => int2octets(bits2int_modN(bits))\n const h1int = bits2int_modN(msgHash);\n const d = normPrivateKeyToScalar(privateKey); // validate private key, convert to bigint\n const seedArgs = [int2octets(d), int2octets(h1int)];\n // extraEntropy. RFC6979 3.6: additional k' (optional).\n if (ent != null) {\n // K = HMAC_K(V || 0x00 || int2octets(x) || bits2octets(h1) || k')\n const e = ent === true ? randomBytes(Fp.BYTES) : ent; // generate random bytes OR pass as-is\n seedArgs.push(ensureBytes('extraEntropy', e, Fp.BYTES)); // check for being of size BYTES\n }\n const seed = ut.concatBytes(...seedArgs); // Step D of RFC6979 3.2\n const m = h1int; // NOTE: no need to call bits2int second time here, it is inside truncateHash!\n // Converts signature params into point w r/s, checks result for validity.\n function k2sig(kBytes) {\n // RFC 6979 Section 3.2, step 3: k = bits2int(T)\n const k = bits2int(kBytes); // Cannot use fields methods, since it is group element\n if (!isWithinCurveOrder(k))\n return; // Important: all mod() calls here must be done over N\n const ik = invN(k); // k^-1 mod n\n const q = Point.BASE.multiply(k).toAffine(); // q = Gk\n const r = modN(q.x); // r = q.x mod n\n if (r === _0n)\n return;\n // Can use scalar blinding b^-1(bm + bdr) where b ∈ [1,q−1] according to\n // https://tches.iacr.org/index.php/TCHES/article/view/7337/6509. We've decided against it:\n // a) dependency on CSPRNG b) 15% slowdown c) doesn't really help since bigints are not CT\n const s = modN(ik * modN(m + r * d)); // Not using blinding here\n if (s === _0n)\n return;\n let recovery = (q.x === r ? 0 : 2) | Number(q.y & _1n); // recovery bit (2 or 3, when q.x > n)\n let normS = s;\n if (lowS && isBiggerThanHalfOrder(s)) {\n normS = normalizeS(s); // if lowS was passed, ensure s is always\n recovery ^= 1; // // in the bottom half of N\n }\n return new Signature(r, normS, recovery); // use normS, not s\n }\n return { seed, k2sig };\n }\n const defaultSigOpts = { lowS: CURVE.lowS, prehash: false };\n const defaultVerOpts = { lowS: CURVE.lowS, prehash: false };\n /**\n * Signs message hash (not message: you need to hash it by yourself).\n * ```\n * sign(m, d, k) where\n * (x, y) = G × k\n * r = x mod n\n * s = (m + dr)/k mod n\n * ```\n * @param opts `lowS, extraEntropy, prehash`\n */\n function sign(msgHash, privKey, opts = defaultSigOpts) {\n const { seed, k2sig } = prepSig(msgHash, privKey, opts); // Steps A, D of RFC6979 3.2.\n const drbg = ut.createHmacDrbg(CURVE.hash.outputLen, CURVE.nByteLength, CURVE.hmac);\n return drbg(seed, k2sig); // Steps B, C, D, E, F, G\n }\n // Enable precomputes. Slows down first publicKey computation by 20ms.\n Point.BASE._setWindowSize(8);\n // utils.precompute(8, ProjectivePoint.BASE)\n /**\n * Verifies a signature against message hash and public key.\n * Rejects lowS signatures by default: to override,\n * specify option `{lowS: false}`. Implements section 4.1.4 from https://www.secg.org/sec1-v2.pdf:\n *\n * ```\n * verify(r, s, h, P) where\n * U1 = hs^-1 mod n\n * U2 = rs^-1 mod n\n * R = U1⋅G - U2⋅P\n * mod(R.x, n) == r\n * ```\n */\n function verify(signature, msgHash, publicKey, opts = defaultVerOpts) {\n const sg = signature;\n msgHash = ensureBytes('msgHash', msgHash);\n publicKey = ensureBytes('publicKey', publicKey);\n if ('strict' in opts)\n throw new Error('options.strict was renamed to lowS');\n const { lowS, prehash } = opts;\n let _sig = undefined;\n let P;\n try {\n if (typeof sg === 'string' || sg instanceof Uint8Array) {\n // Signature can be represented in 2 ways: compact (2*nByteLength) & DER (variable-length).\n // Since DER can also be 2*nByteLength bytes, we check for it first.\n try {\n _sig = Signature.fromDER(sg);\n }\n catch (derError) {\n if (!(derError instanceof DER.Err))\n throw derError;\n _sig = Signature.fromCompact(sg);\n }\n }\n else if (typeof sg === 'object' && typeof sg.r === 'bigint' && typeof sg.s === 'bigint') {\n const { r, s } = sg;\n _sig = new Signature(r, s);\n }\n else {\n throw new Error('PARSE');\n }\n P = Point.fromHex(publicKey);\n }\n catch (error) {\n if (error.message === 'PARSE')\n throw new Error(`signature must be Signature instance, Uint8Array or hex string`);\n return false;\n }\n if (lowS && _sig.hasHighS())\n return false;\n if (prehash)\n msgHash = CURVE.hash(msgHash);\n const { r, s } = _sig;\n const h = bits2int_modN(msgHash); // Cannot use fields methods, since it is group element\n const is = invN(s); // s^-1\n const u1 = modN(h * is); // u1 = hs^-1 mod n\n const u2 = modN(r * is); // u2 = rs^-1 mod n\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2)?.toAffine(); // R = u1⋅G + u2⋅P\n if (!R)\n return false;\n const v = modN(R.x);\n return v === r;\n }\n return {\n CURVE,\n getPublicKey,\n getSharedSecret,\n sign,\n verify,\n ProjectivePoint: Point,\n Signature,\n utils,\n };\n}\n// Implementation of the Shallue and van de Woestijne method for any Weierstrass curve\n// TODO: check if there is a way to merge this with uvRatio in Edwards && move to modular?\n// b = True and y = sqrt(u / v) if (u / v) is square in F, and\n// b = False and y = sqrt(Z * (u / v)) otherwise.\nexport function SWUFpSqrtRatio(Fp, Z) {\n // Generic implementation\n const q = Fp.ORDER;\n let l = _0n;\n for (let o = q - _1n; o % _2n === _0n; o /= _2n)\n l += _1n;\n const c1 = l; // 1. c1, the largest integer such that 2^c1 divides q - 1.\n const c2 = (q - _1n) / _2n ** c1; // 2. c2 = (q - 1) / (2^c1) # Integer arithmetic\n const c3 = (c2 - _1n) / _2n; // 3. c3 = (c2 - 1) / 2 # Integer arithmetic\n const c4 = _2n ** c1 - _1n; // 4. c4 = 2^c1 - 1 # Integer arithmetic\n const c5 = _2n ** (c1 - _1n); // 5. c5 = 2^(c1 - 1) # Integer arithmetic\n const c6 = Fp.pow(Z, c2); // 6. c6 = Z^c2\n const c7 = Fp.pow(Z, (c2 + _1n) / _2n); // 7. c7 = Z^((c2 + 1) / 2)\n let sqrtRatio = (u, v) => {\n let tv1 = c6; // 1. tv1 = c6\n let tv2 = Fp.pow(v, c4); // 2. tv2 = v^c4\n let tv3 = Fp.sqr(tv2); // 3. tv3 = tv2^2\n tv3 = Fp.mul(tv3, v); // 4. tv3 = tv3 * v\n let tv5 = Fp.mul(u, tv3); // 5. tv5 = u * tv3\n tv5 = Fp.pow(tv5, c3); // 6. tv5 = tv5^c3\n tv5 = Fp.mul(tv5, tv2); // 7. tv5 = tv5 * tv2\n tv2 = Fp.mul(tv5, v); // 8. tv2 = tv5 * v\n tv3 = Fp.mul(tv5, u); // 9. tv3 = tv5 * u\n let tv4 = Fp.mul(tv3, tv2); // 10. tv4 = tv3 * tv2\n tv5 = Fp.pow(tv4, c5); // 11. tv5 = tv4^c5\n let isQR = Fp.eql(tv5, Fp.ONE); // 12. isQR = tv5 == 1\n tv2 = Fp.mul(tv3, c7); // 13. tv2 = tv3 * c7\n tv5 = Fp.mul(tv4, tv1); // 14. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, isQR); // 15. tv3 = CMOV(tv2, tv3, isQR)\n tv4 = Fp.cmov(tv5, tv4, isQR); // 16. tv4 = CMOV(tv5, tv4, isQR)\n // 17. for i in (c1, c1 - 1, ..., 2):\n for (let i = c1; i > _1n; i--) {\n let tv5 = _2n ** (i - _2n); // 18. tv5 = i - 2; 19. tv5 = 2^tv5\n let tvv5 = Fp.pow(tv4, tv5); // 20. tv5 = tv4^tv5\n const e1 = Fp.eql(tvv5, Fp.ONE); // 21. e1 = tv5 == 1\n tv2 = Fp.mul(tv3, tv1); // 22. tv2 = tv3 * tv1\n tv1 = Fp.mul(tv1, tv1); // 23. tv1 = tv1 * tv1\n tvv5 = Fp.mul(tv4, tv1); // 24. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, e1); // 25. tv3 = CMOV(tv2, tv3, e1)\n tv4 = Fp.cmov(tvv5, tv4, e1); // 26. tv4 = CMOV(tv5, tv4, e1)\n }\n return { isValid: isQR, value: tv3 };\n };\n if (Fp.ORDER % _4n === _3n) {\n // sqrt_ratio_3mod4(u, v)\n const c1 = (Fp.ORDER - _3n) / _4n; // 1. c1 = (q - 3) / 4 # Integer arithmetic\n const c2 = Fp.sqrt(Fp.neg(Z)); // 2. c2 = sqrt(-Z)\n sqrtRatio = (u, v) => {\n let tv1 = Fp.sqr(v); // 1. tv1 = v^2\n const tv2 = Fp.mul(u, v); // 2. tv2 = u * v\n tv1 = Fp.mul(tv1, tv2); // 3. tv1 = tv1 * tv2\n let y1 = Fp.pow(tv1, c1); // 4. y1 = tv1^c1\n y1 = Fp.mul(y1, tv2); // 5. y1 = y1 * tv2\n const y2 = Fp.mul(y1, c2); // 6. y2 = y1 * c2\n const tv3 = Fp.mul(Fp.sqr(y1), v); // 7. tv3 = y1^2; 8. tv3 = tv3 * v\n const isQR = Fp.eql(tv3, u); // 9. isQR = tv3 == u\n let y = Fp.cmov(y2, y1, isQR); // 10. y = CMOV(y2, y1, isQR)\n return { isValid: isQR, value: y }; // 11. return (isQR, y) isQR ? y : y*c2\n };\n }\n // No curves uses that\n // if (Fp.ORDER % _8n === _5n) // sqrt_ratio_5mod8\n return sqrtRatio;\n}\n// From draft-irtf-cfrg-hash-to-curve-16\nexport function mapToCurveSimpleSWU(Fp, opts) {\n mod.validateField(Fp);\n if (!Fp.isValid(opts.A) || !Fp.isValid(opts.B) || !Fp.isValid(opts.Z))\n throw new Error('mapToCurveSimpleSWU: invalid opts');\n const sqrtRatio = SWUFpSqrtRatio(Fp, opts.Z);\n if (!Fp.isOdd)\n throw new Error('Fp.isOdd is not implemented!');\n // Input: u, an element of F.\n // Output: (x, y), a point on E.\n return (u) => {\n // prettier-ignore\n let tv1, tv2, tv3, tv4, tv5, tv6, x, y;\n tv1 = Fp.sqr(u); // 1. tv1 = u^2\n tv1 = Fp.mul(tv1, opts.Z); // 2. tv1 = Z * tv1\n tv2 = Fp.sqr(tv1); // 3. tv2 = tv1^2\n tv2 = Fp.add(tv2, tv1); // 4. tv2 = tv2 + tv1\n tv3 = Fp.add(tv2, Fp.ONE); // 5. tv3 = tv2 + 1\n tv3 = Fp.mul(tv3, opts.B); // 6. tv3 = B * tv3\n tv4 = Fp.cmov(opts.Z, Fp.neg(tv2), !Fp.eql(tv2, Fp.ZERO)); // 7. tv4 = CMOV(Z, -tv2, tv2 != 0)\n tv4 = Fp.mul(tv4, opts.A); // 8. tv4 = A * tv4\n tv2 = Fp.sqr(tv3); // 9. tv2 = tv3^2\n tv6 = Fp.sqr(tv4); // 10. tv6 = tv4^2\n tv5 = Fp.mul(tv6, opts.A); // 11. tv5 = A * tv6\n tv2 = Fp.add(tv2, tv5); // 12. tv2 = tv2 + tv5\n tv2 = Fp.mul(tv2, tv3); // 13. tv2 = tv2 * tv3\n tv6 = Fp.mul(tv6, tv4); // 14. tv6 = tv6 * tv4\n tv5 = Fp.mul(tv6, opts.B); // 15. tv5 = B * tv6\n tv2 = Fp.add(tv2, tv5); // 16. tv2 = tv2 + tv5\n x = Fp.mul(tv1, tv3); // 17. x = tv1 * tv3\n const { isValid, value } = sqrtRatio(tv2, tv6); // 18. (is_gx1_square, y1) = sqrt_ratio(tv2, tv6)\n y = Fp.mul(tv1, u); // 19. y = tv1 * u -> Z * u^3 * y1\n y = Fp.mul(y, value); // 20. y = y * y1\n x = Fp.cmov(x, tv3, isValid); // 21. x = CMOV(x, tv3, is_gx1_square)\n y = Fp.cmov(y, value, isValid); // 22. y = CMOV(y, y1, is_gx1_square)\n const e1 = Fp.isOdd(u) === Fp.isOdd(y); // 23. e1 = sgn0(u) == sgn0(y)\n y = Fp.cmov(Fp.neg(y), y, e1); // 24. y = CMOV(-y, y, e1)\n x = Fp.div(x, tv4); // 25. x = x / tv4\n return { x, y };\n };\n}\n//# sourceMappingURL=weierstrass.js.map","import assert from './_assert.js';\nimport { Hash, toBytes } from './utils.js';\n// HMAC (RFC 2104)\nclass HMAC extends Hash {\n constructor(hash, _key) {\n super();\n this.finished = false;\n this.destroyed = false;\n assert.hash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create();\n if (typeof this.iHash.update !== 'function')\n throw new TypeError('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create();\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n pad.fill(0);\n }\n update(buf) {\n assert.exists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out) {\n assert.exists(this);\n assert.bytes(out, this.outputLen);\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to) {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to || (to = Object.create(Object.getPrototypeOf(this), {}));\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n */\nexport const hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nhmac.create = (hash, key) => new HMAC(hash, key);\n//# sourceMappingURL=hmac.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { hmac } from '@noble/hashes/hmac';\nimport { concatBytes, randomBytes } from '@noble/hashes/utils';\nimport { weierstrass } from './abstract/weierstrass.js';\n// connects noble-curves to noble-hashes\nexport function getHash(hash) {\n return {\n hash,\n hmac: (key, ...msgs) => hmac(hash, key, concatBytes(...msgs)),\n randomBytes,\n };\n}\nexport function createCurve(curveDef, defHash) {\n const create = (hash) => weierstrass({ ...curveDef, ...getHash(hash) });\n return Object.freeze({ ...create(defHash), create });\n}\n//# sourceMappingURL=_shortw_utils.js.map","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha256 } from '@noble/hashes/sha256';\nimport { randomBytes } from '@noble/hashes/utils';\nimport { Field, mod, pow2 } from './abstract/modular.js';\nimport { mapToCurveSimpleSWU } from './abstract/weierstrass.js';\nimport { bytesToNumberBE, concatBytes, ensureBytes, numberToBytesBE } from './abstract/utils.js';\nimport * as htf from './abstract/hash-to-curve.js';\nimport { createCurve } from './_shortw_utils.js';\nconst secp256k1P = BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f');\nconst secp256k1N = BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141');\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst divNearest = (a, b) => (a + b / _2n) / b;\n/**\n * √n = n^((p+1)/4) for fields p = 3 mod 4. We unwrap the loop and multiply bit-by-bit.\n * (P+1n/4n).toString(2) would produce bits [223x 1, 0, 22x 1, 4x 0, 11, 00]\n */\nfunction sqrtMod(y) {\n const P = secp256k1P;\n // prettier-ignore\n const _3n = BigInt(3), _6n = BigInt(6), _11n = BigInt(11), _22n = BigInt(22);\n // prettier-ignore\n const _23n = BigInt(23), _44n = BigInt(44), _88n = BigInt(88);\n const b2 = (y * y * y) % P; // x^3, 11\n const b3 = (b2 * b2 * y) % P; // x^7\n const b6 = (pow2(b3, _3n, P) * b3) % P;\n const b9 = (pow2(b6, _3n, P) * b3) % P;\n const b11 = (pow2(b9, _2n, P) * b2) % P;\n const b22 = (pow2(b11, _11n, P) * b11) % P;\n const b44 = (pow2(b22, _22n, P) * b22) % P;\n const b88 = (pow2(b44, _44n, P) * b44) % P;\n const b176 = (pow2(b88, _88n, P) * b88) % P;\n const b220 = (pow2(b176, _44n, P) * b44) % P;\n const b223 = (pow2(b220, _3n, P) * b3) % P;\n const t1 = (pow2(b223, _23n, P) * b22) % P;\n const t2 = (pow2(t1, _6n, P) * b2) % P;\n const root = pow2(t2, _2n, P);\n if (!Fp.eql(Fp.sqr(root), y))\n throw new Error('Cannot find square root');\n return root;\n}\nconst Fp = Field(secp256k1P, undefined, undefined, { sqrt: sqrtMod });\nexport const secp256k1 = createCurve({\n a: BigInt(0),\n b: BigInt(7),\n Fp,\n n: secp256k1N,\n // Base point (x, y) aka generator point\n Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n h: BigInt(1),\n lowS: true,\n /**\n * secp256k1 belongs to Koblitz curves: it has efficiently computable endomorphism.\n * Endomorphism uses 2x less RAM, speeds up precomputation by 2x and ECDH / key recovery by 20%.\n * For precomputed wNAF it trades off 1/2 init time & 1/3 ram for 20% perf hit.\n * Explanation: https://gist.github.com/paulmillr/eb670806793e84df628a7c434a873066\n */\n endo: {\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n splitScalar: (k) => {\n const n = secp256k1N;\n const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n const b2 = a1;\n const POW_2_128 = BigInt('0x100000000000000000000000000000000'); // (2n**128n).toString(16)\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n let k1 = mod(k - c1 * a1 - c2 * a2, n);\n let k2 = mod(-c1 * b1 - c2 * b2, n);\n const k1neg = k1 > POW_2_128;\n const k2neg = k2 > POW_2_128;\n if (k1neg)\n k1 = n - k1;\n if (k2neg)\n k2 = n - k2;\n if (k1 > POW_2_128 || k2 > POW_2_128) {\n throw new Error('splitScalar: Endomorphism failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n },\n },\n}, sha256);\n// Schnorr signatures are superior to ECDSA from above. Below is Schnorr-specific BIP0340 code.\n// https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki\nconst _0n = BigInt(0);\nconst fe = (x) => typeof x === 'bigint' && _0n < x && x < secp256k1P;\nconst ge = (x) => typeof x === 'bigint' && _0n < x && x < secp256k1N;\n/** An object mapping tags to their tagged hash prefix of [SHA256(tag) | SHA256(tag)] */\nconst TAGGED_HASH_PREFIXES = {};\nfunction taggedHash(tag, ...messages) {\n let tagP = TAGGED_HASH_PREFIXES[tag];\n if (tagP === undefined) {\n const tagH = sha256(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n tagP = concatBytes(tagH, tagH);\n TAGGED_HASH_PREFIXES[tag] = tagP;\n }\n return sha256(concatBytes(tagP, ...messages));\n}\n// ECDSA compact points are 33-byte. Schnorr is 32: we strip first byte 0x02 or 0x03\nconst pointToBytes = (point) => point.toRawBytes(true).slice(1);\nconst numTo32b = (n) => numberToBytesBE(n, 32);\nconst modP = (x) => mod(x, secp256k1P);\nconst modN = (x) => mod(x, secp256k1N);\nconst Point = secp256k1.ProjectivePoint;\nconst GmulAdd = (Q, a, b) => Point.BASE.multiplyAndAddUnsafe(Q, a, b);\n// Calculate point, scalar and bytes\nfunction schnorrGetExtPubKey(priv) {\n let d_ = secp256k1.utils.normPrivateKeyToScalar(priv); // same method executed in fromPrivateKey\n let p = Point.fromPrivateKey(d_); // P = d'⋅G; 0 < d' < n check is done inside\n const scalar = p.hasEvenY() ? d_ : modN(-d_);\n return { scalar: scalar, bytes: pointToBytes(p) };\n}\n/**\n * lift_x from BIP340. Convert 32-byte x coordinate to elliptic curve point.\n * @returns valid point checked for being on-curve\n */\nfunction lift_x(x) {\n if (!fe(x))\n throw new Error('bad x: need 0 < x < p'); // Fail if x ≥ p.\n const xx = modP(x * x);\n const c = modP(xx * x + BigInt(7)); // Let c = x³ + 7 mod p.\n let y = sqrtMod(c); // Let y = c^(p+1)/4 mod p.\n if (y % _2n !== _0n)\n y = modP(-y); // Return the unique point P such that x(P) = x and\n const p = new Point(x, y, _1n); // y(P) = y if y mod 2 = 0 or y(P) = p-y otherwise.\n p.assertValidity();\n return p;\n}\n/**\n * Create tagged hash, convert it to bigint, reduce modulo-n.\n */\nfunction challenge(...args) {\n return modN(bytesToNumberBE(taggedHash('BIP0340/challenge', ...args)));\n}\n/**\n * Schnorr public key is just `x` coordinate of Point as per BIP340.\n */\nfunction schnorrGetPublicKey(privateKey) {\n return schnorrGetExtPubKey(privateKey).bytes; // d'=int(sk). Fail if d'=0 or d'≥n. Ret bytes(d'⋅G)\n}\n/**\n * Creates Schnorr signature as per BIP340. Verifies itself before returning anything.\n * auxRand is optional and is not the sole source of k generation: bad CSPRNG won't be dangerous.\n */\nfunction schnorrSign(message, privateKey, auxRand = randomBytes(32)) {\n const m = ensureBytes('message', message);\n const { bytes: px, scalar: d } = schnorrGetExtPubKey(privateKey); // checks for isWithinCurveOrder\n const a = ensureBytes('auxRand', auxRand, 32); // Auxiliary random data a: a 32-byte array\n const t = numTo32b(d ^ bytesToNumberBE(taggedHash('BIP0340/aux', a))); // Let t be the byte-wise xor of bytes(d) and hash/aux(a)\n const rand = taggedHash('BIP0340/nonce', t, px, m); // Let rand = hash/nonce(t || bytes(P) || m)\n const k_ = modN(bytesToNumberBE(rand)); // Let k' = int(rand) mod n\n if (k_ === _0n)\n throw new Error('sign failed: k is zero'); // Fail if k' = 0.\n const { bytes: rx, scalar: k } = schnorrGetExtPubKey(k_); // Let R = k'⋅G.\n const e = challenge(rx, px, m); // Let e = int(hash/challenge(bytes(R) || bytes(P) || m)) mod n.\n const sig = new Uint8Array(64); // Let sig = bytes(R) || bytes((k + ed) mod n).\n sig.set(rx, 0);\n sig.set(numTo32b(modN(k + e * d)), 32);\n // If Verify(bytes(P), m, sig) (see below) returns failure, abort\n if (!schnorrVerify(sig, m, px))\n throw new Error('sign: Invalid signature produced');\n return sig;\n}\n/**\n * Verifies Schnorr signature.\n * Will swallow errors & return false except for initial type validation of arguments.\n */\nfunction schnorrVerify(signature, message, publicKey) {\n const sig = ensureBytes('signature', signature, 64);\n const m = ensureBytes('message', message);\n const pub = ensureBytes('publicKey', publicKey, 32);\n try {\n const P = lift_x(bytesToNumberBE(pub)); // P = lift_x(int(pk)); fail if that fails\n const r = bytesToNumberBE(sig.subarray(0, 32)); // Let r = int(sig[0:32]); fail if r ≥ p.\n if (!fe(r))\n return false;\n const s = bytesToNumberBE(sig.subarray(32, 64)); // Let s = int(sig[32:64]); fail if s ≥ n.\n if (!ge(s))\n return false;\n const e = challenge(numTo32b(r), pointToBytes(P), m); // int(challenge(bytes(r)||bytes(P)||m))%n\n const R = GmulAdd(P, s, modN(-e)); // R = s⋅G - e⋅P\n if (!R || !R.hasEvenY() || R.toAffine().x !== r)\n return false; // -eP == (n-e)P\n return true; // Fail if is_infinite(R) / not has_even_y(R) / x(R) ≠ r.\n }\n catch (error) {\n return false;\n }\n}\nexport const schnorr = {\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n utils: {\n randomPrivateKey: secp256k1.utils.randomPrivateKey,\n lift_x,\n pointToBytes,\n numberToBytesBE,\n bytesToNumberBE,\n taggedHash,\n mod,\n },\n};\nconst isoMap = htf.isogenyMap(Fp, [\n // xNum\n [\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7',\n '0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581',\n '0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262',\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c',\n ],\n // xDen\n [\n '0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b',\n '0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n // yNum\n [\n '0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c',\n '0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3',\n '0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931',\n '0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84',\n ],\n // yDen\n [\n '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b',\n '0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573',\n '0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n].map((i) => i.map((j) => BigInt(j))));\nconst mapSWU = mapToCurveSimpleSWU(Fp, {\n A: BigInt('0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533'),\n B: BigInt('1771'),\n Z: Fp.create(BigInt('-11')),\n});\nexport const { hashToCurve, encodeToCurve } = htf.createHasher(secp256k1.ProjectivePoint, (scalars) => {\n const { x, y } = mapSWU(Fp.create(scalars[0]));\n return isoMap(x, y);\n}, {\n DST: 'secp256k1_XMD:SHA-256_SSWU_RO_',\n encodeDST: 'secp256k1_XMD:SHA-256_SSWU_NU_',\n p: Fp.ORDER,\n m: 1,\n k: 128,\n expand: 'xmd',\n hash: sha256,\n});\n//# sourceMappingURL=secp256k1.js.map","import { mod } from './modular.js';\nimport { bytesToNumberBE, concatBytes, utf8ToBytes, validateObject } from './utils.js';\nfunction validateDST(dst) {\n if (dst instanceof Uint8Array)\n return dst;\n if (typeof dst === 'string')\n return utf8ToBytes(dst);\n throw new Error('DST must be Uint8Array or string');\n}\n// Octet Stream to Integer. \"spec\" implementation of os2ip is 2.5x slower vs bytesToNumberBE.\nconst os2ip = bytesToNumberBE;\n// Integer to Octet Stream (numberToBytesBE)\nfunction i2osp(value, length) {\n if (value < 0 || value >= 1 << (8 * length)) {\n throw new Error(`bad I2OSP call: value=${value} length=${length}`);\n }\n const res = Array.from({ length }).fill(0);\n for (let i = length - 1; i >= 0; i--) {\n res[i] = value & 0xff;\n value >>>= 8;\n }\n return new Uint8Array(res);\n}\nfunction strxor(a, b) {\n const arr = new Uint8Array(a.length);\n for (let i = 0; i < a.length; i++) {\n arr[i] = a[i] ^ b[i];\n }\n return arr;\n}\nfunction isBytes(item) {\n if (!(item instanceof Uint8Array))\n throw new Error('Uint8Array expected');\n}\nfunction isNum(item) {\n if (!Number.isSafeInteger(item))\n throw new Error('number expected');\n}\n// Produces a uniformly random byte string using a cryptographic hash function H that outputs b bits\n// https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-11#section-5.4.1\nexport function expand_message_xmd(msg, DST, lenInBytes, H) {\n isBytes(msg);\n isBytes(DST);\n isNum(lenInBytes);\n // https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#section-5.3.3\n if (DST.length > 255)\n DST = H(concatBytes(utf8ToBytes('H2C-OVERSIZE-DST-'), DST));\n const { outputLen: b_in_bytes, blockLen: r_in_bytes } = H;\n const ell = Math.ceil(lenInBytes / b_in_bytes);\n if (ell > 255)\n throw new Error('Invalid xmd length');\n const DST_prime = concatBytes(DST, i2osp(DST.length, 1));\n const Z_pad = i2osp(0, r_in_bytes);\n const l_i_b_str = i2osp(lenInBytes, 2); // len_in_bytes_str\n const b = new Array(ell);\n const b_0 = H(concatBytes(Z_pad, msg, l_i_b_str, i2osp(0, 1), DST_prime));\n b[0] = H(concatBytes(b_0, i2osp(1, 1), DST_prime));\n for (let i = 1; i <= ell; i++) {\n const args = [strxor(b_0, b[i - 1]), i2osp(i + 1, 1), DST_prime];\n b[i] = H(concatBytes(...args));\n }\n const pseudo_random_bytes = concatBytes(...b);\n return pseudo_random_bytes.slice(0, lenInBytes);\n}\nexport function expand_message_xof(msg, DST, lenInBytes, k, H) {\n isBytes(msg);\n isBytes(DST);\n isNum(lenInBytes);\n // https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#section-5.3.3\n // DST = H('H2C-OVERSIZE-DST-' || a_very_long_DST, Math.ceil((lenInBytes * k) / 8));\n if (DST.length > 255) {\n const dkLen = Math.ceil((2 * k) / 8);\n DST = H.create({ dkLen }).update(utf8ToBytes('H2C-OVERSIZE-DST-')).update(DST).digest();\n }\n if (lenInBytes > 65535 || DST.length > 255)\n throw new Error('expand_message_xof: invalid lenInBytes');\n return (H.create({ dkLen: lenInBytes })\n .update(msg)\n .update(i2osp(lenInBytes, 2))\n // 2. DST_prime = DST || I2OSP(len(DST), 1)\n .update(DST)\n .update(i2osp(DST.length, 1))\n .digest());\n}\n/**\n * Hashes arbitrary-length byte strings to a list of one or more elements of a finite field F\n * https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-11#section-5.3\n * @param msg a byte string containing the message to hash\n * @param count the number of elements of F to output\n * @param options `{DST: string, p: bigint, m: number, k: number, expand: 'xmd' | 'xof', hash: H}`, see above\n * @returns [u_0, ..., u_(count - 1)], a list of field elements.\n */\nexport function hash_to_field(msg, count, options) {\n validateObject(options, {\n DST: 'string',\n p: 'bigint',\n m: 'isSafeInteger',\n k: 'isSafeInteger',\n hash: 'hash',\n });\n const { p, k, m, hash, expand, DST: _DST } = options;\n isBytes(msg);\n isNum(count);\n const DST = validateDST(_DST);\n const log2p = p.toString(2).length;\n const L = Math.ceil((log2p + k) / 8); // section 5.1 of ietf draft link above\n const len_in_bytes = count * m * L;\n let prb; // pseudo_random_bytes\n if (expand === 'xmd') {\n prb = expand_message_xmd(msg, DST, len_in_bytes, hash);\n }\n else if (expand === 'xof') {\n prb = expand_message_xof(msg, DST, len_in_bytes, k, hash);\n }\n else if (expand === '_internal_pass') {\n // for internal tests only\n prb = msg;\n }\n else {\n throw new Error('expand must be \"xmd\" or \"xof\"');\n }\n const u = new Array(count);\n for (let i = 0; i < count; i++) {\n const e = new Array(m);\n for (let j = 0; j < m; j++) {\n const elm_offset = L * (j + i * m);\n const tv = prb.subarray(elm_offset, elm_offset + L);\n e[j] = mod(os2ip(tv), p);\n }\n u[i] = e;\n }\n return u;\n}\nexport function isogenyMap(field, map) {\n // Make same order as in spec\n const COEFF = map.map((i) => Array.from(i).reverse());\n return (x, y) => {\n const [xNum, xDen, yNum, yDen] = COEFF.map((val) => val.reduce((acc, i) => field.add(field.mul(acc, x), i)));\n x = field.div(xNum, xDen); // xNum / xDen\n y = field.mul(y, field.div(yNum, yDen)); // y * (yNum / yDev)\n return { x, y };\n };\n}\nexport function createHasher(Point, mapToCurve, def) {\n if (typeof mapToCurve !== 'function')\n throw new Error('mapToCurve() must be defined');\n return {\n // Encodes byte string to elliptic curve\n // https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#section-3\n hashToCurve(msg, options) {\n const u = hash_to_field(msg, 2, { ...def, DST: def.DST, ...options });\n const u0 = Point.fromAffine(mapToCurve(u[0]));\n const u1 = Point.fromAffine(mapToCurve(u[1]));\n const P = u0.add(u1).clearCofactor();\n P.assertValidity();\n return P;\n },\n // https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#section-3\n encodeToCurve(msg, options) {\n const u = hash_to_field(msg, 1, { ...def, DST: def.encodeDST, ...options });\n const P = Point.fromAffine(mapToCurve(u[0])).clearCofactor();\n P.assertValidity();\n return P;\n },\n };\n}\n//# sourceMappingURL=hash-to-curve.js.map","/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nexport function assertNumber(n) {\n if (!Number.isSafeInteger(n))\n throw new Error(`Wrong integer: ${n}`);\n}\nfunction chain(...args) {\n const wrap = (a, b) => (c) => a(b(c));\n const encode = Array.from(args)\n .reverse()\n .reduce((acc, i) => (acc ? wrap(acc, i.encode) : i.encode), undefined);\n const decode = args.reduce((acc, i) => (acc ? wrap(acc, i.decode) : i.decode), undefined);\n return { encode, decode };\n}\nfunction alphabet(alphabet) {\n return {\n encode: (digits) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('alphabet.encode input should be an array of numbers');\n return digits.map((i) => {\n assertNumber(i);\n if (i < 0 || i >= alphabet.length)\n throw new Error(`Digit index outside alphabet: ${i} (alphabet: ${alphabet.length})`);\n return alphabet[i];\n });\n },\n decode: (input) => {\n if (!Array.isArray(input) || (input.length && typeof input[0] !== 'string'))\n throw new Error('alphabet.decode input should be array of strings');\n return input.map((letter) => {\n if (typeof letter !== 'string')\n throw new Error(`alphabet.decode: not string element=${letter}`);\n const index = alphabet.indexOf(letter);\n if (index === -1)\n throw new Error(`Unknown letter: \"${letter}\". Allowed: ${alphabet}`);\n return index;\n });\n },\n };\n}\nfunction join(separator = '') {\n if (typeof separator !== 'string')\n throw new Error('join separator should be string');\n return {\n encode: (from) => {\n if (!Array.isArray(from) || (from.length && typeof from[0] !== 'string'))\n throw new Error('join.encode input should be array of strings');\n for (let i of from)\n if (typeof i !== 'string')\n throw new Error(`join.encode: non-string input=${i}`);\n return from.join(separator);\n },\n decode: (to) => {\n if (typeof to !== 'string')\n throw new Error('join.decode input should be string');\n return to.split(separator);\n },\n };\n}\nfunction padding(bits, chr = '=') {\n assertNumber(bits);\n if (typeof chr !== 'string')\n throw new Error('padding chr should be string');\n return {\n encode(data) {\n if (!Array.isArray(data) || (data.length && typeof data[0] !== 'string'))\n throw new Error('padding.encode input should be array of strings');\n for (let i of data)\n if (typeof i !== 'string')\n throw new Error(`padding.encode: non-string input=${i}`);\n while ((data.length * bits) % 8)\n data.push(chr);\n return data;\n },\n decode(input) {\n if (!Array.isArray(input) || (input.length && typeof input[0] !== 'string'))\n throw new Error('padding.encode input should be array of strings');\n for (let i of input)\n if (typeof i !== 'string')\n throw new Error(`padding.decode: non-string input=${i}`);\n let end = input.length;\n if ((end * bits) % 8)\n throw new Error('Invalid padding: string should have whole number of bytes');\n for (; end > 0 && input[end - 1] === chr; end--) {\n if (!(((end - 1) * bits) % 8))\n throw new Error('Invalid padding: string has too much padding');\n }\n return input.slice(0, end);\n },\n };\n}\nfunction normalize(fn) {\n if (typeof fn !== 'function')\n throw new Error('normalize fn should be function');\n return { encode: (from) => from, decode: (to) => fn(to) };\n}\nfunction convertRadix(data, from, to) {\n if (from < 2)\n throw new Error(`convertRadix: wrong from=${from}, base cannot be less than 2`);\n if (to < 2)\n throw new Error(`convertRadix: wrong to=${to}, base cannot be less than 2`);\n if (!Array.isArray(data))\n throw new Error('convertRadix: data should be array');\n if (!data.length)\n return [];\n let pos = 0;\n const res = [];\n const digits = Array.from(data);\n digits.forEach((d) => {\n assertNumber(d);\n if (d < 0 || d >= from)\n throw new Error(`Wrong integer: ${d}`);\n });\n while (true) {\n let carry = 0;\n let done = true;\n for (let i = pos; i < digits.length; i++) {\n const digit = digits[i];\n const digitBase = from * carry + digit;\n if (!Number.isSafeInteger(digitBase) ||\n (from * carry) / from !== carry ||\n digitBase - digit !== from * carry) {\n throw new Error('convertRadix: carry overflow');\n }\n carry = digitBase % to;\n digits[i] = Math.floor(digitBase / to);\n if (!Number.isSafeInteger(digits[i]) || digits[i] * to + carry !== digitBase)\n throw new Error('convertRadix: carry overflow');\n if (!done)\n continue;\n else if (!digits[i])\n pos = i;\n else\n done = false;\n }\n res.push(carry);\n if (done)\n break;\n }\n for (let i = 0; i < data.length - 1 && data[i] === 0; i++)\n res.push(0);\n return res.reverse();\n}\nconst gcd = (a, b) => (!b ? a : gcd(b, a % b));\nconst radix2carry = (from, to) => from + (to - gcd(from, to));\nfunction convertRadix2(data, from, to, padding) {\n if (!Array.isArray(data))\n throw new Error('convertRadix2: data should be array');\n if (from <= 0 || from > 32)\n throw new Error(`convertRadix2: wrong from=${from}`);\n if (to <= 0 || to > 32)\n throw new Error(`convertRadix2: wrong to=${to}`);\n if (radix2carry(from, to) > 32) {\n throw new Error(`convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`);\n }\n let carry = 0;\n let pos = 0;\n const mask = 2 ** to - 1;\n const res = [];\n for (const n of data) {\n assertNumber(n);\n if (n >= 2 ** from)\n throw new Error(`convertRadix2: invalid data word=${n} from=${from}`);\n carry = (carry << from) | n;\n if (pos + from > 32)\n throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`);\n pos += from;\n for (; pos >= to; pos -= to)\n res.push(((carry >> (pos - to)) & mask) >>> 0);\n carry &= 2 ** pos - 1;\n }\n carry = (carry << (to - pos)) & mask;\n if (!padding && pos >= from)\n throw new Error('Excess padding');\n if (!padding && carry)\n throw new Error(`Non-zero padding: ${carry}`);\n if (padding && pos > 0)\n res.push(carry >>> 0);\n return res;\n}\nfunction radix(num) {\n assertNumber(num);\n return {\n encode: (bytes) => {\n if (!(bytes instanceof Uint8Array))\n throw new Error('radix.encode input should be Uint8Array');\n return convertRadix(Array.from(bytes), 2 ** 8, num);\n },\n decode: (digits) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('radix.decode input should be array of strings');\n return Uint8Array.from(convertRadix(digits, num, 2 ** 8));\n },\n };\n}\nfunction radix2(bits, revPadding = false) {\n assertNumber(bits);\n if (bits <= 0 || bits > 32)\n throw new Error('radix2: bits should be in (0..32]');\n if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)\n throw new Error('radix2: carry overflow');\n return {\n encode: (bytes) => {\n if (!(bytes instanceof Uint8Array))\n throw new Error('radix2.encode input should be Uint8Array');\n return convertRadix2(Array.from(bytes), 8, bits, !revPadding);\n },\n decode: (digits) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('radix2.decode input should be array of strings');\n return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding));\n },\n };\n}\nfunction unsafeWrapper(fn) {\n if (typeof fn !== 'function')\n throw new Error('unsafeWrapper fn should be function');\n return function (...args) {\n try {\n return fn.apply(null, args);\n }\n catch (e) { }\n };\n}\nfunction checksum(len, fn) {\n assertNumber(len);\n if (typeof fn !== 'function')\n throw new Error('checksum fn should be function');\n return {\n encode(data) {\n if (!(data instanceof Uint8Array))\n throw new Error('checksum.encode: input should be Uint8Array');\n const checksum = fn(data).slice(0, len);\n const res = new Uint8Array(data.length + len);\n res.set(data);\n res.set(checksum, data.length);\n return res;\n },\n decode(data) {\n if (!(data instanceof Uint8Array))\n throw new Error('checksum.decode: input should be Uint8Array');\n const payload = data.slice(0, -len);\n const newChecksum = fn(payload).slice(0, len);\n const oldChecksum = data.slice(-len);\n for (let i = 0; i < len; i++)\n if (newChecksum[i] !== oldChecksum[i])\n throw new Error('Invalid checksum');\n return payload;\n },\n };\n}\nexport const utils = { alphabet, chain, checksum, radix, radix2, join, padding };\nexport const base16 = chain(radix2(4), alphabet('0123456789ABCDEF'), join(''));\nexport const base32 = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), padding(5), join(''));\nexport const base32hex = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), padding(5), join(''));\nexport const base32crockford = chain(radix2(5), alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'), join(''), normalize((s) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1')));\nexport const base64 = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), padding(6), join(''));\nexport const base64url = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), padding(6), join(''));\nconst genBase58 = (abc) => chain(radix(58), alphabet(abc), join(''));\nexport const base58 = genBase58('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz');\nexport const base58flickr = genBase58('123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ');\nexport const base58xrp = genBase58('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz');\nconst XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11];\nexport const base58xmr = {\n encode(data) {\n let res = '';\n for (let i = 0; i < data.length; i += 8) {\n const block = data.subarray(i, i + 8);\n res += base58.encode(block).padStart(XMR_BLOCK_LEN[block.length], '1');\n }\n return res;\n },\n decode(str) {\n let res = [];\n for (let i = 0; i < str.length; i += 11) {\n const slice = str.slice(i, i + 11);\n const blockLen = XMR_BLOCK_LEN.indexOf(slice.length);\n const block = base58.decode(slice);\n for (let j = 0; j < block.length - blockLen; j++) {\n if (block[j] !== 0)\n throw new Error('base58xmr: wrong padding');\n }\n res = res.concat(Array.from(block.slice(block.length - blockLen)));\n }\n return Uint8Array.from(res);\n },\n};\nexport const base58check = (sha256) => chain(checksum(4, (data) => sha256(sha256(data))), base58);\nconst BECH_ALPHABET = chain(alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'), join(''));\nconst POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];\nfunction bech32Polymod(pre) {\n const b = pre >> 25;\n let chk = (pre & 0x1ffffff) << 5;\n for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {\n if (((b >> i) & 1) === 1)\n chk ^= POLYMOD_GENERATORS[i];\n }\n return chk;\n}\nfunction bechChecksum(prefix, words, encodingConst = 1) {\n const len = prefix.length;\n let chk = 1;\n for (let i = 0; i < len; i++) {\n const c = prefix.charCodeAt(i);\n if (c < 33 || c > 126)\n throw new Error(`Invalid prefix (${prefix})`);\n chk = bech32Polymod(chk) ^ (c >> 5);\n }\n chk = bech32Polymod(chk);\n for (let i = 0; i < len; i++)\n chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f);\n for (let v of words)\n chk = bech32Polymod(chk) ^ v;\n for (let i = 0; i < 6; i++)\n chk = bech32Polymod(chk);\n chk ^= encodingConst;\n return BECH_ALPHABET.encode(convertRadix2([chk % 2 ** 30], 30, 5, false));\n}\nfunction genBech32(encoding) {\n const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3;\n const _words = radix2(5);\n const fromWords = _words.decode;\n const toWords = _words.encode;\n const fromWordsUnsafe = unsafeWrapper(fromWords);\n function encode(prefix, words, limit = 90) {\n if (typeof prefix !== 'string')\n throw new Error(`bech32.encode prefix should be string, not ${typeof prefix}`);\n if (!Array.isArray(words) || (words.length && typeof words[0] !== 'number'))\n throw new Error(`bech32.encode words should be array of numbers, not ${typeof words}`);\n const actualLength = prefix.length + 7 + words.length;\n if (limit !== false && actualLength > limit)\n throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`);\n prefix = prefix.toLowerCase();\n return `${prefix}1${BECH_ALPHABET.encode(words)}${bechChecksum(prefix, words, ENCODING_CONST)}`;\n }\n function decode(str, limit = 90) {\n if (typeof str !== 'string')\n throw new Error(`bech32.decode input should be string, not ${typeof str}`);\n if (str.length < 8 || (limit !== false && str.length > limit))\n throw new TypeError(`Wrong string length: ${str.length} (${str}). Expected (8..${limit})`);\n const lowered = str.toLowerCase();\n if (str !== lowered && str !== str.toUpperCase())\n throw new Error(`String must be lowercase or uppercase`);\n str = lowered;\n const sepIndex = str.lastIndexOf('1');\n if (sepIndex === 0 || sepIndex === -1)\n throw new Error(`Letter \"1\" must be present between prefix and data only`);\n const prefix = str.slice(0, sepIndex);\n const _words = str.slice(sepIndex + 1);\n if (_words.length < 6)\n throw new Error('Data must be at least 6 characters long');\n const words = BECH_ALPHABET.decode(_words).slice(0, -6);\n const sum = bechChecksum(prefix, words, ENCODING_CONST);\n if (!_words.endsWith(sum))\n throw new Error(`Invalid checksum in ${str}: expected \"${sum}\"`);\n return { prefix, words };\n }\n const decodeUnsafe = unsafeWrapper(decode);\n function decodeToBytes(str) {\n const { prefix, words } = decode(str, false);\n return { prefix, words, bytes: fromWords(words) };\n }\n return { encode, decode, decodeToBytes, decodeUnsafe, fromWords, fromWordsUnsafe, toWords };\n}\nexport const bech32 = genBech32('bech32');\nexport const bech32m = genBech32('bech32m');\nexport const utf8 = {\n encode: (data) => new TextDecoder().decode(data),\n decode: (str) => new TextEncoder().encode(str),\n};\nexport const hex = chain(radix2(4), alphabet('0123456789abcdef'), join(''), normalize((s) => {\n if (typeof s !== 'string' || s.length % 2)\n throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`);\n return s.toLowerCase();\n}));\nconst CODERS = {\n utf8, hex, base16, base32, base64, base64url, base58, base58xmr\n};\nconst coderTypeError = `Invalid encoding type. Available types: ${Object.keys(CODERS).join(', ')}`;\nexport const bytesToString = (type, bytes) => {\n if (typeof type !== 'string' || !CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (!(bytes instanceof Uint8Array))\n throw new TypeError('bytesToString() expects Uint8Array');\n return CODERS[type].encode(bytes);\n};\nexport const str = bytesToString;\nexport const stringToBytes = (type, str) => {\n if (!CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (typeof str !== 'string')\n throw new TypeError('stringToBytes() expects string');\n return CODERS[type].decode(str);\n};\nexport const bytes = stringToBytes;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wordlist = void 0;\nexports.wordlist = `abandon\nability\nable\nabout\nabove\nabsent\nabsorb\nabstract\nabsurd\nabuse\naccess\naccident\naccount\naccuse\nachieve\nacid\nacoustic\nacquire\nacross\nact\naction\nactor\nactress\nactual\nadapt\nadd\naddict\naddress\nadjust\nadmit\nadult\nadvance\nadvice\naerobic\naffair\nafford\nafraid\nagain\nage\nagent\nagree\nahead\naim\nair\nairport\naisle\nalarm\nalbum\nalcohol\nalert\nalien\nall\nalley\nallow\nalmost\nalone\nalpha\nalready\nalso\nalter\nalways\namateur\namazing\namong\namount\namused\nanalyst\nanchor\nancient\nanger\nangle\nangry\nanimal\nankle\nannounce\nannual\nanother\nanswer\nantenna\nantique\nanxiety\nany\napart\napology\nappear\napple\napprove\napril\narch\narctic\narea\narena\nargue\narm\narmed\narmor\narmy\naround\narrange\narrest\narrive\narrow\nart\nartefact\nartist\nartwork\nask\naspect\nassault\nasset\nassist\nassume\nasthma\nathlete\natom\nattack\nattend\nattitude\nattract\nauction\naudit\naugust\naunt\nauthor\nauto\nautumn\naverage\navocado\navoid\nawake\naware\naway\nawesome\nawful\nawkward\naxis\nbaby\nbachelor\nbacon\nbadge\nbag\nbalance\nbalcony\nball\nbamboo\nbanana\nbanner\nbar\nbarely\nbargain\nbarrel\nbase\nbasic\nbasket\nbattle\nbeach\nbean\nbeauty\nbecause\nbecome\nbeef\nbefore\nbegin\nbehave\nbehind\nbelieve\nbelow\nbelt\nbench\nbenefit\nbest\nbetray\nbetter\nbetween\nbeyond\nbicycle\nbid\nbike\nbind\nbiology\nbird\nbirth\nbitter\nblack\nblade\nblame\nblanket\nblast\nbleak\nbless\nblind\nblood\nblossom\nblouse\nblue\nblur\nblush\nboard\nboat\nbody\nboil\nbomb\nbone\nbonus\nbook\nboost\nborder\nboring\nborrow\nboss\nbottom\nbounce\nbox\nboy\nbracket\nbrain\nbrand\nbrass\nbrave\nbread\nbreeze\nbrick\nbridge\nbrief\nbright\nbring\nbrisk\nbroccoli\nbroken\nbronze\nbroom\nbrother\nbrown\nbrush\nbubble\nbuddy\nbudget\nbuffalo\nbuild\nbulb\nbulk\nbullet\nbundle\nbunker\nburden\nburger\nburst\nbus\nbusiness\nbusy\nbutter\nbuyer\nbuzz\ncabbage\ncabin\ncable\ncactus\ncage\ncake\ncall\ncalm\ncamera\ncamp\ncan\ncanal\ncancel\ncandy\ncannon\ncanoe\ncanvas\ncanyon\ncapable\ncapital\ncaptain\ncar\ncarbon\ncard\ncargo\ncarpet\ncarry\ncart\ncase\ncash\ncasino\ncastle\ncasual\ncat\ncatalog\ncatch\ncategory\ncattle\ncaught\ncause\ncaution\ncave\nceiling\ncelery\ncement\ncensus\ncentury\ncereal\ncertain\nchair\nchalk\nchampion\nchange\nchaos\nchapter\ncharge\nchase\nchat\ncheap\ncheck\ncheese\nchef\ncherry\nchest\nchicken\nchief\nchild\nchimney\nchoice\nchoose\nchronic\nchuckle\nchunk\nchurn\ncigar\ncinnamon\ncircle\ncitizen\ncity\ncivil\nclaim\nclap\nclarify\nclaw\nclay\nclean\nclerk\nclever\nclick\nclient\ncliff\nclimb\nclinic\nclip\nclock\nclog\nclose\ncloth\ncloud\nclown\nclub\nclump\ncluster\nclutch\ncoach\ncoast\ncoconut\ncode\ncoffee\ncoil\ncoin\ncollect\ncolor\ncolumn\ncombine\ncome\ncomfort\ncomic\ncommon\ncompany\nconcert\nconduct\nconfirm\ncongress\nconnect\nconsider\ncontrol\nconvince\ncook\ncool\ncopper\ncopy\ncoral\ncore\ncorn\ncorrect\ncost\ncotton\ncouch\ncountry\ncouple\ncourse\ncousin\ncover\ncoyote\ncrack\ncradle\ncraft\ncram\ncrane\ncrash\ncrater\ncrawl\ncrazy\ncream\ncredit\ncreek\ncrew\ncricket\ncrime\ncrisp\ncritic\ncrop\ncross\ncrouch\ncrowd\ncrucial\ncruel\ncruise\ncrumble\ncrunch\ncrush\ncry\ncrystal\ncube\nculture\ncup\ncupboard\ncurious\ncurrent\ncurtain\ncurve\ncushion\ncustom\ncute\ncycle\ndad\ndamage\ndamp\ndance\ndanger\ndaring\ndash\ndaughter\ndawn\nday\ndeal\ndebate\ndebris\ndecade\ndecember\ndecide\ndecline\ndecorate\ndecrease\ndeer\ndefense\ndefine\ndefy\ndegree\ndelay\ndeliver\ndemand\ndemise\ndenial\ndentist\ndeny\ndepart\ndepend\ndeposit\ndepth\ndeputy\nderive\ndescribe\ndesert\ndesign\ndesk\ndespair\ndestroy\ndetail\ndetect\ndevelop\ndevice\ndevote\ndiagram\ndial\ndiamond\ndiary\ndice\ndiesel\ndiet\ndiffer\ndigital\ndignity\ndilemma\ndinner\ndinosaur\ndirect\ndirt\ndisagree\ndiscover\ndisease\ndish\ndismiss\ndisorder\ndisplay\ndistance\ndivert\ndivide\ndivorce\ndizzy\ndoctor\ndocument\ndog\ndoll\ndolphin\ndomain\ndonate\ndonkey\ndonor\ndoor\ndose\ndouble\ndove\ndraft\ndragon\ndrama\ndrastic\ndraw\ndream\ndress\ndrift\ndrill\ndrink\ndrip\ndrive\ndrop\ndrum\ndry\nduck\ndumb\ndune\nduring\ndust\ndutch\nduty\ndwarf\ndynamic\neager\neagle\nearly\nearn\nearth\neasily\neast\neasy\necho\necology\neconomy\nedge\nedit\neducate\neffort\negg\neight\neither\nelbow\nelder\nelectric\nelegant\nelement\nelephant\nelevator\nelite\nelse\nembark\nembody\nembrace\nemerge\nemotion\nemploy\nempower\nempty\nenable\nenact\nend\nendless\nendorse\nenemy\nenergy\nenforce\nengage\nengine\nenhance\nenjoy\nenlist\nenough\nenrich\nenroll\nensure\nenter\nentire\nentry\nenvelope\nepisode\nequal\nequip\nera\nerase\nerode\nerosion\nerror\nerupt\nescape\nessay\nessence\nestate\neternal\nethics\nevidence\nevil\nevoke\nevolve\nexact\nexample\nexcess\nexchange\nexcite\nexclude\nexcuse\nexecute\nexercise\nexhaust\nexhibit\nexile\nexist\nexit\nexotic\nexpand\nexpect\nexpire\nexplain\nexpose\nexpress\nextend\nextra\neye\neyebrow\nfabric\nface\nfaculty\nfade\nfaint\nfaith\nfall\nfalse\nfame\nfamily\nfamous\nfan\nfancy\nfantasy\nfarm\nfashion\nfat\nfatal\nfather\nfatigue\nfault\nfavorite\nfeature\nfebruary\nfederal\nfee\nfeed\nfeel\nfemale\nfence\nfestival\nfetch\nfever\nfew\nfiber\nfiction\nfield\nfigure\nfile\nfilm\nfilter\nfinal\nfind\nfine\nfinger\nfinish\nfire\nfirm\nfirst\nfiscal\nfish\nfit\nfitness\nfix\nflag\nflame\nflash\nflat\nflavor\nflee\nflight\nflip\nfloat\nflock\nfloor\nflower\nfluid\nflush\nfly\nfoam\nfocus\nfog\nfoil\nfold\nfollow\nfood\nfoot\nforce\nforest\nforget\nfork\nfortune\nforum\nforward\nfossil\nfoster\nfound\nfox\nfragile\nframe\nfrequent\nfresh\nfriend\nfringe\nfrog\nfront\nfrost\nfrown\nfrozen\nfruit\nfuel\nfun\nfunny\nfurnace\nfury\nfuture\ngadget\ngain\ngalaxy\ngallery\ngame\ngap\ngarage\ngarbage\ngarden\ngarlic\ngarment\ngas\ngasp\ngate\ngather\ngauge\ngaze\ngeneral\ngenius\ngenre\ngentle\ngenuine\ngesture\nghost\ngiant\ngift\ngiggle\nginger\ngiraffe\ngirl\ngive\nglad\nglance\nglare\nglass\nglide\nglimpse\nglobe\ngloom\nglory\nglove\nglow\nglue\ngoat\ngoddess\ngold\ngood\ngoose\ngorilla\ngospel\ngossip\ngovern\ngown\ngrab\ngrace\ngrain\ngrant\ngrape\ngrass\ngravity\ngreat\ngreen\ngrid\ngrief\ngrit\ngrocery\ngroup\ngrow\ngrunt\nguard\nguess\nguide\nguilt\nguitar\ngun\ngym\nhabit\nhair\nhalf\nhammer\nhamster\nhand\nhappy\nharbor\nhard\nharsh\nharvest\nhat\nhave\nhawk\nhazard\nhead\nhealth\nheart\nheavy\nhedgehog\nheight\nhello\nhelmet\nhelp\nhen\nhero\nhidden\nhigh\nhill\nhint\nhip\nhire\nhistory\nhobby\nhockey\nhold\nhole\nholiday\nhollow\nhome\nhoney\nhood\nhope\nhorn\nhorror\nhorse\nhospital\nhost\nhotel\nhour\nhover\nhub\nhuge\nhuman\nhumble\nhumor\nhundred\nhungry\nhunt\nhurdle\nhurry\nhurt\nhusband\nhybrid\nice\nicon\nidea\nidentify\nidle\nignore\nill\nillegal\nillness\nimage\nimitate\nimmense\nimmune\nimpact\nimpose\nimprove\nimpulse\ninch\ninclude\nincome\nincrease\nindex\nindicate\nindoor\nindustry\ninfant\ninflict\ninform\ninhale\ninherit\ninitial\ninject\ninjury\ninmate\ninner\ninnocent\ninput\ninquiry\ninsane\ninsect\ninside\ninspire\ninstall\nintact\ninterest\ninto\ninvest\ninvite\ninvolve\niron\nisland\nisolate\nissue\nitem\nivory\njacket\njaguar\njar\njazz\njealous\njeans\njelly\njewel\njob\njoin\njoke\njourney\njoy\njudge\njuice\njump\njungle\njunior\njunk\njust\nkangaroo\nkeen\nkeep\nketchup\nkey\nkick\nkid\nkidney\nkind\nkingdom\nkiss\nkit\nkitchen\nkite\nkitten\nkiwi\nknee\nknife\nknock\nknow\nlab\nlabel\nlabor\nladder\nlady\nlake\nlamp\nlanguage\nlaptop\nlarge\nlater\nlatin\nlaugh\nlaundry\nlava\nlaw\nlawn\nlawsuit\nlayer\nlazy\nleader\nleaf\nlearn\nleave\nlecture\nleft\nleg\nlegal\nlegend\nleisure\nlemon\nlend\nlength\nlens\nleopard\nlesson\nletter\nlevel\nliar\nliberty\nlibrary\nlicense\nlife\nlift\nlight\nlike\nlimb\nlimit\nlink\nlion\nliquid\nlist\nlittle\nlive\nlizard\nload\nloan\nlobster\nlocal\nlock\nlogic\nlonely\nlong\nloop\nlottery\nloud\nlounge\nlove\nloyal\nlucky\nluggage\nlumber\nlunar\nlunch\nluxury\nlyrics\nmachine\nmad\nmagic\nmagnet\nmaid\nmail\nmain\nmajor\nmake\nmammal\nman\nmanage\nmandate\nmango\nmansion\nmanual\nmaple\nmarble\nmarch\nmargin\nmarine\nmarket\nmarriage\nmask\nmass\nmaster\nmatch\nmaterial\nmath\nmatrix\nmatter\nmaximum\nmaze\nmeadow\nmean\nmeasure\nmeat\nmechanic\nmedal\nmedia\nmelody\nmelt\nmember\nmemory\nmention\nmenu\nmercy\nmerge\nmerit\nmerry\nmesh\nmessage\nmetal\nmethod\nmiddle\nmidnight\nmilk\nmillion\nmimic\nmind\nminimum\nminor\nminute\nmiracle\nmirror\nmisery\nmiss\nmistake\nmix\nmixed\nmixture\nmobile\nmodel\nmodify\nmom\nmoment\nmonitor\nmonkey\nmonster\nmonth\nmoon\nmoral\nmore\nmorning\nmosquito\nmother\nmotion\nmotor\nmountain\nmouse\nmove\nmovie\nmuch\nmuffin\nmule\nmultiply\nmuscle\nmuseum\nmushroom\nmusic\nmust\nmutual\nmyself\nmystery\nmyth\nnaive\nname\nnapkin\nnarrow\nnasty\nnation\nnature\nnear\nneck\nneed\nnegative\nneglect\nneither\nnephew\nnerve\nnest\nnet\nnetwork\nneutral\nnever\nnews\nnext\nnice\nnight\nnoble\nnoise\nnominee\nnoodle\nnormal\nnorth\nnose\nnotable\nnote\nnothing\nnotice\nnovel\nnow\nnuclear\nnumber\nnurse\nnut\noak\nobey\nobject\noblige\nobscure\nobserve\nobtain\nobvious\noccur\nocean\noctober\nodor\noff\noffer\noffice\noften\noil\nokay\nold\nolive\nolympic\nomit\nonce\none\nonion\nonline\nonly\nopen\nopera\nopinion\noppose\noption\norange\norbit\norchard\norder\nordinary\norgan\norient\noriginal\norphan\nostrich\nother\noutdoor\nouter\noutput\noutside\noval\noven\nover\nown\nowner\noxygen\noyster\nozone\npact\npaddle\npage\npair\npalace\npalm\npanda\npanel\npanic\npanther\npaper\nparade\nparent\npark\nparrot\nparty\npass\npatch\npath\npatient\npatrol\npattern\npause\npave\npayment\npeace\npeanut\npear\npeasant\npelican\npen\npenalty\npencil\npeople\npepper\nperfect\npermit\nperson\npet\nphone\nphoto\nphrase\nphysical\npiano\npicnic\npicture\npiece\npig\npigeon\npill\npilot\npink\npioneer\npipe\npistol\npitch\npizza\nplace\nplanet\nplastic\nplate\nplay\nplease\npledge\npluck\nplug\nplunge\npoem\npoet\npoint\npolar\npole\npolice\npond\npony\npool\npopular\nportion\nposition\npossible\npost\npotato\npottery\npoverty\npowder\npower\npractice\npraise\npredict\nprefer\nprepare\npresent\npretty\nprevent\nprice\npride\nprimary\nprint\npriority\nprison\nprivate\nprize\nproblem\nprocess\nproduce\nprofit\nprogram\nproject\npromote\nproof\nproperty\nprosper\nprotect\nproud\nprovide\npublic\npudding\npull\npulp\npulse\npumpkin\npunch\npupil\npuppy\npurchase\npurity\npurpose\npurse\npush\nput\npuzzle\npyramid\nquality\nquantum\nquarter\nquestion\nquick\nquit\nquiz\nquote\nrabbit\nraccoon\nrace\nrack\nradar\nradio\nrail\nrain\nraise\nrally\nramp\nranch\nrandom\nrange\nrapid\nrare\nrate\nrather\nraven\nraw\nrazor\nready\nreal\nreason\nrebel\nrebuild\nrecall\nreceive\nrecipe\nrecord\nrecycle\nreduce\nreflect\nreform\nrefuse\nregion\nregret\nregular\nreject\nrelax\nrelease\nrelief\nrely\nremain\nremember\nremind\nremove\nrender\nrenew\nrent\nreopen\nrepair\nrepeat\nreplace\nreport\nrequire\nrescue\nresemble\nresist\nresource\nresponse\nresult\nretire\nretreat\nreturn\nreunion\nreveal\nreview\nreward\nrhythm\nrib\nribbon\nrice\nrich\nride\nridge\nrifle\nright\nrigid\nring\nriot\nripple\nrisk\nritual\nrival\nriver\nroad\nroast\nrobot\nrobust\nrocket\nromance\nroof\nrookie\nroom\nrose\nrotate\nrough\nround\nroute\nroyal\nrubber\nrude\nrug\nrule\nrun\nrunway\nrural\nsad\nsaddle\nsadness\nsafe\nsail\nsalad\nsalmon\nsalon\nsalt\nsalute\nsame\nsample\nsand\nsatisfy\nsatoshi\nsauce\nsausage\nsave\nsay\nscale\nscan\nscare\nscatter\nscene\nscheme\nschool\nscience\nscissors\nscorpion\nscout\nscrap\nscreen\nscript\nscrub\nsea\nsearch\nseason\nseat\nsecond\nsecret\nsection\nsecurity\nseed\nseek\nsegment\nselect\nsell\nseminar\nsenior\nsense\nsentence\nseries\nservice\nsession\nsettle\nsetup\nseven\nshadow\nshaft\nshallow\nshare\nshed\nshell\nsheriff\nshield\nshift\nshine\nship\nshiver\nshock\nshoe\nshoot\nshop\nshort\nshoulder\nshove\nshrimp\nshrug\nshuffle\nshy\nsibling\nsick\nside\nsiege\nsight\nsign\nsilent\nsilk\nsilly\nsilver\nsimilar\nsimple\nsince\nsing\nsiren\nsister\nsituate\nsix\nsize\nskate\nsketch\nski\nskill\nskin\nskirt\nskull\nslab\nslam\nsleep\nslender\nslice\nslide\nslight\nslim\nslogan\nslot\nslow\nslush\nsmall\nsmart\nsmile\nsmoke\nsmooth\nsnack\nsnake\nsnap\nsniff\nsnow\nsoap\nsoccer\nsocial\nsock\nsoda\nsoft\nsolar\nsoldier\nsolid\nsolution\nsolve\nsomeone\nsong\nsoon\nsorry\nsort\nsoul\nsound\nsoup\nsource\nsouth\nspace\nspare\nspatial\nspawn\nspeak\nspecial\nspeed\nspell\nspend\nsphere\nspice\nspider\nspike\nspin\nspirit\nsplit\nspoil\nsponsor\nspoon\nsport\nspot\nspray\nspread\nspring\nspy\nsquare\nsqueeze\nsquirrel\nstable\nstadium\nstaff\nstage\nstairs\nstamp\nstand\nstart\nstate\nstay\nsteak\nsteel\nstem\nstep\nstereo\nstick\nstill\nsting\nstock\nstomach\nstone\nstool\nstory\nstove\nstrategy\nstreet\nstrike\nstrong\nstruggle\nstudent\nstuff\nstumble\nstyle\nsubject\nsubmit\nsubway\nsuccess\nsuch\nsudden\nsuffer\nsugar\nsuggest\nsuit\nsummer\nsun\nsunny\nsunset\nsuper\nsupply\nsupreme\nsure\nsurface\nsurge\nsurprise\nsurround\nsurvey\nsuspect\nsustain\nswallow\nswamp\nswap\nswarm\nswear\nsweet\nswift\nswim\nswing\nswitch\nsword\nsymbol\nsymptom\nsyrup\nsystem\ntable\ntackle\ntag\ntail\ntalent\ntalk\ntank\ntape\ntarget\ntask\ntaste\ntattoo\ntaxi\nteach\nteam\ntell\nten\ntenant\ntennis\ntent\nterm\ntest\ntext\nthank\nthat\ntheme\nthen\ntheory\nthere\nthey\nthing\nthis\nthought\nthree\nthrive\nthrow\nthumb\nthunder\nticket\ntide\ntiger\ntilt\ntimber\ntime\ntiny\ntip\ntired\ntissue\ntitle\ntoast\ntobacco\ntoday\ntoddler\ntoe\ntogether\ntoilet\ntoken\ntomato\ntomorrow\ntone\ntongue\ntonight\ntool\ntooth\ntop\ntopic\ntopple\ntorch\ntornado\ntortoise\ntoss\ntotal\ntourist\ntoward\ntower\ntown\ntoy\ntrack\ntrade\ntraffic\ntragic\ntrain\ntransfer\ntrap\ntrash\ntravel\ntray\ntreat\ntree\ntrend\ntrial\ntribe\ntrick\ntrigger\ntrim\ntrip\ntrophy\ntrouble\ntruck\ntrue\ntruly\ntrumpet\ntrust\ntruth\ntry\ntube\ntuition\ntumble\ntuna\ntunnel\nturkey\nturn\nturtle\ntwelve\ntwenty\ntwice\ntwin\ntwist\ntwo\ntype\ntypical\nugly\numbrella\nunable\nunaware\nuncle\nuncover\nunder\nundo\nunfair\nunfold\nunhappy\nuniform\nunique\nunit\nuniverse\nunknown\nunlock\nuntil\nunusual\nunveil\nupdate\nupgrade\nuphold\nupon\nupper\nupset\nurban\nurge\nusage\nuse\nused\nuseful\nuseless\nusual\nutility\nvacant\nvacuum\nvague\nvalid\nvalley\nvalve\nvan\nvanish\nvapor\nvarious\nvast\nvault\nvehicle\nvelvet\nvendor\nventure\nvenue\nverb\nverify\nversion\nvery\nvessel\nveteran\nviable\nvibrant\nvicious\nvictory\nvideo\nview\nvillage\nvintage\nviolin\nvirtual\nvirus\nvisa\nvisit\nvisual\nvital\nvivid\nvocal\nvoice\nvoid\nvolcano\nvolume\nvote\nvoyage\nwage\nwagon\nwait\nwalk\nwall\nwalnut\nwant\nwarfare\nwarm\nwarrior\nwash\nwasp\nwaste\nwater\nwave\nway\nwealth\nweapon\nwear\nweasel\nweather\nweb\nwedding\nweekend\nweird\nwelcome\nwest\nwet\nwhale\nwhat\nwheat\nwheel\nwhen\nwhere\nwhip\nwhisper\nwide\nwidth\nwife\nwild\nwill\nwin\nwindow\nwine\nwing\nwink\nwinner\nwinter\nwire\nwisdom\nwise\nwish\nwitness\nwolf\nwoman\nwonder\nwood\nwool\nword\nwork\nworld\nworry\nworth\nwrap\nwreck\nwrestle\nwrist\nwrite\nwrong\nyard\nyear\nyellow\nyou\nyoung\nyouth\nzebra\nzero\nzone\nzoo`.split('\\n');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.output = exports.exists = exports.hash = exports.bytes = exports.bool = exports.number = void 0;\nfunction number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nexports.number = number;\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`Expected boolean, not ${b}`);\n}\nexports.bool = bool;\nfunction bytes(b, ...lengths) {\n if (!(b instanceof Uint8Array))\n throw new TypeError('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new TypeError(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\nexports.bytes = bytes;\nfunction hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nexports.hash = hash;\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nexports.exists = exists;\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nexports.output = output;\nconst assert = {\n number,\n bool,\n bytes,\n hash,\n exists,\n output,\n};\nexports.default = assert;\n//# sourceMappingURL=_assert.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.crypto = void 0;\nexports.crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n//# sourceMappingURL=crypto.js.map","\"use strict\";\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.randomBytes = exports.wrapConstructorWithOpts = exports.wrapConstructor = exports.checkOpts = exports.Hash = exports.concatBytes = exports.toBytes = exports.utf8ToBytes = exports.asyncLoop = exports.nextTick = exports.hexToBytes = exports.bytesToHex = exports.isLE = exports.rotr = exports.createView = exports.u32 = exports.u8 = void 0;\n// We use `globalThis.crypto`, but node.js versions earlier than v19 don't\n// declare it in global scope. For node.js, package.json#exports field mapping\n// rewrites import from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated, we can just drop the import.\nconst crypto_1 = require(\"@noble/hashes/crypto\");\n// Cast array to different type\nconst u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexports.u8 = u8;\nconst u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\nexports.u32 = u32;\n// Cast array to view\nconst createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\nexports.createView = createView;\n// The rotate right (circular right shift) operation for uint32\nconst rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\nexports.rotr = rotr;\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\nexports.isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!exports.isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xde, 0xad, 0xbe, 0xef])) // 'deadbeef'\n */\nfunction bytesToHex(uint8a) {\n // pre-caching improves the speed 6x\n if (!(uint8a instanceof Uint8Array))\n throw new Error('Uint8Array expected');\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\nexports.bytesToHex = bytesToHex;\n/**\n * @example hexToBytes('deadbeef') // Uint8Array.from([0xde, 0xad, 0xbe, 0xef])\n */\nfunction hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex');\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\nexports.hexToBytes = hexToBytes;\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nconst nextTick = async () => { };\nexports.nextTick = nextTick;\n// Returns control to thread each 'tick' ms to avoid blocking\nasync function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await (0, exports.nextTick)();\n ts += diff;\n }\n}\nexports.asyncLoop = asyncLoop;\nfunction utf8ToBytes(str) {\n if (typeof str !== 'string') {\n throw new TypeError(`utf8ToBytes expected string, got ${typeof str}`);\n }\n return new TextEncoder().encode(str);\n}\nexports.utf8ToBytes = utf8ToBytes;\nfunction toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!(data instanceof Uint8Array))\n throw new TypeError(`Expected input type is Uint8Array (got ${typeof data})`);\n return data;\n}\nexports.toBytes = toBytes;\n/**\n * Concats Uint8Array-s into one; like `Buffer.concat([buf1, buf2])`\n * @example concatBytes(buf1, buf2)\n */\nfunction concatBytes(...arrays) {\n if (!arrays.every((a) => a instanceof Uint8Array))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nexports.concatBytes = concatBytes;\n// For runtime check if class implements interface\nclass Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nexports.Hash = Hash;\n// Check if object doens't have custom constructor (like Uint8Array/Array)\nconst isPlainObject = (obj) => Object.prototype.toString.call(obj) === '[object Object]' && obj.constructor === Object;\nfunction checkOpts(defaults, opts) {\n if (opts !== undefined && (typeof opts !== 'object' || !isPlainObject(opts)))\n throw new TypeError('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexports.checkOpts = checkOpts;\nfunction wrapConstructor(hashConstructor) {\n const hashC = (message) => hashConstructor().update(toBytes(message)).digest();\n const tmp = hashConstructor();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashConstructor();\n return hashC;\n}\nexports.wrapConstructor = wrapConstructor;\nfunction wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexports.wrapConstructorWithOpts = wrapConstructorWithOpts;\n/**\n * Secure PRNG. Uses `globalThis.crypto` or node.js crypto module.\n */\nfunction randomBytes(bytesLength = 32) {\n if (crypto_1.crypto && typeof crypto_1.crypto.getRandomValues === 'function') {\n return crypto_1.crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\nexports.randomBytes = randomBytes;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hmac = void 0;\nconst _assert_js_1 = require(\"./_assert.js\");\nconst utils_js_1 = require(\"./utils.js\");\n// HMAC (RFC 2104)\nclass HMAC extends utils_js_1.Hash {\n constructor(hash, _key) {\n super();\n this.finished = false;\n this.destroyed = false;\n _assert_js_1.default.hash(hash);\n const key = (0, utils_js_1.toBytes)(_key);\n this.iHash = hash.create();\n if (typeof this.iHash.update !== 'function')\n throw new TypeError('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create();\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n pad.fill(0);\n }\n update(buf) {\n _assert_js_1.default.exists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out) {\n _assert_js_1.default.exists(this);\n _assert_js_1.default.bytes(out, this.outputLen);\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to) {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to || (to = Object.create(Object.getPrototypeOf(this), {}));\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n */\nconst hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nexports.hmac = hmac;\nexports.hmac.create = (hash, key) => new HMAC(hash, key);\n//# sourceMappingURL=hmac.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pbkdf2Async = exports.pbkdf2 = void 0;\nconst _assert_js_1 = require(\"./_assert.js\");\nconst hmac_js_1 = require(\"./hmac.js\");\nconst utils_js_1 = require(\"./utils.js\");\n// Common prologue and epilogue for sync/async functions\nfunction pbkdf2Init(hash, _password, _salt, _opts) {\n _assert_js_1.default.hash(hash);\n const opts = (0, utils_js_1.checkOpts)({ dkLen: 32, asyncTick: 10 }, _opts);\n const { c, dkLen, asyncTick } = opts;\n _assert_js_1.default.number(c);\n _assert_js_1.default.number(dkLen);\n _assert_js_1.default.number(asyncTick);\n if (c < 1)\n throw new Error('PBKDF2: iterations (c) should be >= 1');\n const password = (0, utils_js_1.toBytes)(_password);\n const salt = (0, utils_js_1.toBytes)(_salt);\n // DK = PBKDF2(PRF, Password, Salt, c, dkLen);\n const DK = new Uint8Array(dkLen);\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n const PRF = hmac_js_1.hmac.create(hash, password);\n const PRFSalt = PRF._cloneInto().update(salt);\n return { c, dkLen, asyncTick, DK, PRF, PRFSalt };\n}\nfunction pbkdf2Output(PRF, PRFSalt, DK, prfW, u) {\n PRF.destroy();\n PRFSalt.destroy();\n if (prfW)\n prfW.destroy();\n u.fill(0);\n return DK;\n}\n/**\n * PBKDF2-HMAC: RFC 2898 key derivation function\n * @param hash - hash function that would be used e.g. sha256\n * @param password - password from which a derived key is generated\n * @param salt - cryptographic salt\n * @param opts - {c, dkLen} where c is work factor and dkLen is output message size\n */\nfunction pbkdf2(hash, password, salt, opts) {\n const { c, dkLen, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW; // Working copy\n const arr = new Uint8Array(4);\n const view = (0, utils_js_1.createView)(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n for (let ui = 1; ui < c; ui++) {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++)\n Ti[i] ^= u[i];\n }\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\nexports.pbkdf2 = pbkdf2;\nasync function pbkdf2Async(hash, password, salt, opts) {\n const { c, dkLen, asyncTick, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW; // Working copy\n const arr = new Uint8Array(4);\n const view = (0, utils_js_1.createView)(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n await (0, utils_js_1.asyncLoop)(c - 1, asyncTick, (i) => {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++)\n Ti[i] ^= u[i];\n });\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\nexports.pbkdf2Async = pbkdf2Async;\n//# sourceMappingURL=pbkdf2.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SHA2 = void 0;\nconst _assert_js_1 = require(\"./_assert.js\");\nconst utils_js_1 = require(\"./utils.js\");\n// Polyfill for Safari 14\nfunction setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n// Base SHA2 class (RFC 6234)\nclass SHA2 extends utils_js_1.Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = (0, utils_js_1.createView)(this.buffer);\n }\n update(data) {\n _assert_js_1.default.exists(this);\n const { view, buffer, blockLen } = this;\n data = (0, utils_js_1.toBytes)(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = (0, utils_js_1.createView)(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n _assert_js_1.default.exists(this);\n _assert_js_1.default.output(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = (0, utils_js_1.createView)(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4)\n throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length)\n throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++)\n oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\nexports.SHA2 = SHA2;\n//# sourceMappingURL=_sha2.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sha224 = exports.sha256 = void 0;\nconst _sha2_js_1 = require(\"./_sha2.js\");\nconst utils_js_1 = require(\"./utils.js\");\n// Choice: a ? b : c\nconst Chi = (a, b, c) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst IV = new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = new Uint32Array(64);\nclass SHA256 extends _sha2_js_1.SHA2 {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = IV[0] | 0;\n this.B = IV[1] | 0;\n this.C = IV[2] | 0;\n this.D = IV[3] | 0;\n this.E = IV[4] | 0;\n this.F = IV[5] | 0;\n this.G = IV[6] | 0;\n this.H = IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = (0, utils_js_1.rotr)(W15, 7) ^ (0, utils_js_1.rotr)(W15, 18) ^ (W15 >>> 3);\n const s1 = (0, utils_js_1.rotr)(W2, 17) ^ (0, utils_js_1.rotr)(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = (0, utils_js_1.rotr)(E, 6) ^ (0, utils_js_1.rotr)(E, 11) ^ (0, utils_js_1.rotr)(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = (0, utils_js_1.rotr)(A, 2) ^ (0, utils_js_1.rotr)(A, 13) ^ (0, utils_js_1.rotr)(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n// Constants from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf\nclass SHA224 extends SHA256 {\n constructor() {\n super();\n this.A = 0xc1059ed8 | 0;\n this.B = 0x367cd507 | 0;\n this.C = 0x3070dd17 | 0;\n this.D = 0xf70e5939 | 0;\n this.E = 0xffc00b31 | 0;\n this.F = 0x68581511 | 0;\n this.G = 0x64f98fa7 | 0;\n this.H = 0xbefa4fa4 | 0;\n this.outputLen = 28;\n }\n}\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexports.sha256 = (0, utils_js_1.wrapConstructor)(() => new SHA256());\nexports.sha224 = (0, utils_js_1.wrapConstructor)(() => new SHA224());\n//# sourceMappingURL=sha256.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.add = exports.toBig = exports.split = exports.fromBig = void 0;\nconst U32_MASK64 = BigInt(2 ** 32 - 1);\nconst _32n = BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nexports.fromBig = fromBig;\nfunction split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nexports.split = split;\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\nexports.toBig = toBig;\n// for Shift in [0, 32)\nconst shrSH = (h, l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (h, l) => l;\nconst rotr32L = (h, l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\n// Removing \"export\" has 5% perf penalty -_-\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\nexports.add = add;\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig: exports.toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexports.default = u64;\n//# sourceMappingURL=_u64.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sha384 = exports.sha512_256 = exports.sha512_224 = exports.sha512 = exports.SHA512 = void 0;\nconst _sha2_js_1 = require(\"./_sha2.js\");\nconst _u64_js_1 = require(\"./_u64.js\");\nconst utils_js_1 = require(\"./utils.js\");\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = _u64_js_1.default.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n)));\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = new Uint32Array(80);\nconst SHA512_W_L = new Uint32Array(80);\nclass SHA512 extends _sha2_js_1.SHA2 {\n constructor() {\n super(128, 64, 16, false);\n // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n // Also looks cleaner and easier to verify with spec.\n // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x6a09e667 | 0;\n this.Al = 0xf3bcc908 | 0;\n this.Bh = 0xbb67ae85 | 0;\n this.Bl = 0x84caa73b | 0;\n this.Ch = 0x3c6ef372 | 0;\n this.Cl = 0xfe94f82b | 0;\n this.Dh = 0xa54ff53a | 0;\n this.Dl = 0x5f1d36f1 | 0;\n this.Eh = 0x510e527f | 0;\n this.El = 0xade682d1 | 0;\n this.Fh = 0x9b05688c | 0;\n this.Fl = 0x2b3e6c1f | 0;\n this.Gh = 0x1f83d9ab | 0;\n this.Gl = 0xfb41bd6b | 0;\n this.Hh = 0x5be0cd19 | 0;\n this.Hl = 0x137e2179 | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = _u64_js_1.default.rotrSH(W15h, W15l, 1) ^ _u64_js_1.default.rotrSH(W15h, W15l, 8) ^ _u64_js_1.default.shrSH(W15h, W15l, 7);\n const s0l = _u64_js_1.default.rotrSL(W15h, W15l, 1) ^ _u64_js_1.default.rotrSL(W15h, W15l, 8) ^ _u64_js_1.default.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = _u64_js_1.default.rotrSH(W2h, W2l, 19) ^ _u64_js_1.default.rotrBH(W2h, W2l, 61) ^ _u64_js_1.default.shrSH(W2h, W2l, 6);\n const s1l = _u64_js_1.default.rotrSL(W2h, W2l, 19) ^ _u64_js_1.default.rotrBL(W2h, W2l, 61) ^ _u64_js_1.default.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = _u64_js_1.default.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = _u64_js_1.default.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = _u64_js_1.default.rotrSH(Eh, El, 14) ^ _u64_js_1.default.rotrSH(Eh, El, 18) ^ _u64_js_1.default.rotrBH(Eh, El, 41);\n const sigma1l = _u64_js_1.default.rotrSL(Eh, El, 14) ^ _u64_js_1.default.rotrSL(Eh, El, 18) ^ _u64_js_1.default.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = _u64_js_1.default.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = _u64_js_1.default.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = _u64_js_1.default.rotrSH(Ah, Al, 28) ^ _u64_js_1.default.rotrBH(Ah, Al, 34) ^ _u64_js_1.default.rotrBH(Ah, Al, 39);\n const sigma0l = _u64_js_1.default.rotrSL(Ah, Al, 28) ^ _u64_js_1.default.rotrBL(Ah, Al, 34) ^ _u64_js_1.default.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = _u64_js_1.default.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = _u64_js_1.default.add3L(T1l, sigma0l, MAJl);\n Ah = _u64_js_1.default.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = _u64_js_1.default.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = _u64_js_1.default.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = _u64_js_1.default.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = _u64_js_1.default.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = _u64_js_1.default.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = _u64_js_1.default.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = _u64_js_1.default.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = _u64_js_1.default.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n SHA512_W_H.fill(0);\n SHA512_W_L.fill(0);\n }\n destroy() {\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nexports.SHA512 = SHA512;\nclass SHA512_224 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x8c3d37c8 | 0;\n this.Al = 0x19544da2 | 0;\n this.Bh = 0x73e19966 | 0;\n this.Bl = 0x89dcd4d6 | 0;\n this.Ch = 0x1dfab7ae | 0;\n this.Cl = 0x32ff9c82 | 0;\n this.Dh = 0x679dd514 | 0;\n this.Dl = 0x582f9fcf | 0;\n this.Eh = 0x0f6d2b69 | 0;\n this.El = 0x7bd44da8 | 0;\n this.Fh = 0x77e36f73 | 0;\n this.Fl = 0x04c48942 | 0;\n this.Gh = 0x3f9d85a8 | 0;\n this.Gl = 0x6a1d36c8 | 0;\n this.Hh = 0x1112e6ad | 0;\n this.Hl = 0x91d692a1 | 0;\n this.outputLen = 28;\n }\n}\nclass SHA512_256 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x22312194 | 0;\n this.Al = 0xfc2bf72c | 0;\n this.Bh = 0x9f555fa3 | 0;\n this.Bl = 0xc84c64c2 | 0;\n this.Ch = 0x2393b86b | 0;\n this.Cl = 0x6f53b151 | 0;\n this.Dh = 0x96387719 | 0;\n this.Dl = 0x5940eabd | 0;\n this.Eh = 0x96283ee2 | 0;\n this.El = 0xa88effe3 | 0;\n this.Fh = 0xbe5e1e25 | 0;\n this.Fl = 0x53863992 | 0;\n this.Gh = 0x2b0199fc | 0;\n this.Gl = 0x2c85b8aa | 0;\n this.Hh = 0x0eb72ddc | 0;\n this.Hl = 0x81c52ca2 | 0;\n this.outputLen = 32;\n }\n}\nclass SHA384 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0xcbbb9d5d | 0;\n this.Al = 0xc1059ed8 | 0;\n this.Bh = 0x629a292a | 0;\n this.Bl = 0x367cd507 | 0;\n this.Ch = 0x9159015a | 0;\n this.Cl = 0x3070dd17 | 0;\n this.Dh = 0x152fecd8 | 0;\n this.Dl = 0xf70e5939 | 0;\n this.Eh = 0x67332667 | 0;\n this.El = 0xffc00b31 | 0;\n this.Fh = 0x8eb44a87 | 0;\n this.Fl = 0x68581511 | 0;\n this.Gh = 0xdb0c2e0d | 0;\n this.Gl = 0x64f98fa7 | 0;\n this.Hh = 0x47b5481d | 0;\n this.Hl = 0xbefa4fa4 | 0;\n this.outputLen = 48;\n }\n}\nexports.sha512 = (0, utils_js_1.wrapConstructor)(() => new SHA512());\nexports.sha512_224 = (0, utils_js_1.wrapConstructor)(() => new SHA512_224());\nexports.sha512_256 = (0, utils_js_1.wrapConstructor)(() => new SHA512_256());\nexports.sha384 = (0, utils_js_1.wrapConstructor)(() => new SHA384());\n//# sourceMappingURL=sha512.js.map","\"use strict\";\n/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bytes = exports.stringToBytes = exports.str = exports.bytesToString = exports.hex = exports.utf8 = exports.bech32m = exports.bech32 = exports.base58check = exports.base58xmr = exports.base58xrp = exports.base58flickr = exports.base58 = exports.base64url = exports.base64 = exports.base32crockford = exports.base32hex = exports.base32 = exports.base16 = exports.utils = exports.assertNumber = void 0;\nfunction assertNumber(n) {\n if (!Number.isSafeInteger(n))\n throw new Error(`Wrong integer: ${n}`);\n}\nexports.assertNumber = assertNumber;\nfunction chain(...args) {\n const wrap = (a, b) => (c) => a(b(c));\n const encode = Array.from(args)\n .reverse()\n .reduce((acc, i) => (acc ? wrap(acc, i.encode) : i.encode), undefined);\n const decode = args.reduce((acc, i) => (acc ? wrap(acc, i.decode) : i.decode), undefined);\n return { encode, decode };\n}\nfunction alphabet(alphabet) {\n return {\n encode: (digits) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('alphabet.encode input should be an array of numbers');\n return digits.map((i) => {\n assertNumber(i);\n if (i < 0 || i >= alphabet.length)\n throw new Error(`Digit index outside alphabet: ${i} (alphabet: ${alphabet.length})`);\n return alphabet[i];\n });\n },\n decode: (input) => {\n if (!Array.isArray(input) || (input.length && typeof input[0] !== 'string'))\n throw new Error('alphabet.decode input should be array of strings');\n return input.map((letter) => {\n if (typeof letter !== 'string')\n throw new Error(`alphabet.decode: not string element=${letter}`);\n const index = alphabet.indexOf(letter);\n if (index === -1)\n throw new Error(`Unknown letter: \"${letter}\". Allowed: ${alphabet}`);\n return index;\n });\n },\n };\n}\nfunction join(separator = '') {\n if (typeof separator !== 'string')\n throw new Error('join separator should be string');\n return {\n encode: (from) => {\n if (!Array.isArray(from) || (from.length && typeof from[0] !== 'string'))\n throw new Error('join.encode input should be array of strings');\n for (let i of from)\n if (typeof i !== 'string')\n throw new Error(`join.encode: non-string input=${i}`);\n return from.join(separator);\n },\n decode: (to) => {\n if (typeof to !== 'string')\n throw new Error('join.decode input should be string');\n return to.split(separator);\n },\n };\n}\nfunction padding(bits, chr = '=') {\n assertNumber(bits);\n if (typeof chr !== 'string')\n throw new Error('padding chr should be string');\n return {\n encode(data) {\n if (!Array.isArray(data) || (data.length && typeof data[0] !== 'string'))\n throw new Error('padding.encode input should be array of strings');\n for (let i of data)\n if (typeof i !== 'string')\n throw new Error(`padding.encode: non-string input=${i}`);\n while ((data.length * bits) % 8)\n data.push(chr);\n return data;\n },\n decode(input) {\n if (!Array.isArray(input) || (input.length && typeof input[0] !== 'string'))\n throw new Error('padding.encode input should be array of strings');\n for (let i of input)\n if (typeof i !== 'string')\n throw new Error(`padding.decode: non-string input=${i}`);\n let end = input.length;\n if ((end * bits) % 8)\n throw new Error('Invalid padding: string should have whole number of bytes');\n for (; end > 0 && input[end - 1] === chr; end--) {\n if (!(((end - 1) * bits) % 8))\n throw new Error('Invalid padding: string has too much padding');\n }\n return input.slice(0, end);\n },\n };\n}\nfunction normalize(fn) {\n if (typeof fn !== 'function')\n throw new Error('normalize fn should be function');\n return { encode: (from) => from, decode: (to) => fn(to) };\n}\nfunction convertRadix(data, from, to) {\n if (from < 2)\n throw new Error(`convertRadix: wrong from=${from}, base cannot be less than 2`);\n if (to < 2)\n throw new Error(`convertRadix: wrong to=${to}, base cannot be less than 2`);\n if (!Array.isArray(data))\n throw new Error('convertRadix: data should be array');\n if (!data.length)\n return [];\n let pos = 0;\n const res = [];\n const digits = Array.from(data);\n digits.forEach((d) => {\n assertNumber(d);\n if (d < 0 || d >= from)\n throw new Error(`Wrong integer: ${d}`);\n });\n while (true) {\n let carry = 0;\n let done = true;\n for (let i = pos; i < digits.length; i++) {\n const digit = digits[i];\n const digitBase = from * carry + digit;\n if (!Number.isSafeInteger(digitBase) ||\n (from * carry) / from !== carry ||\n digitBase - digit !== from * carry) {\n throw new Error('convertRadix: carry overflow');\n }\n carry = digitBase % to;\n digits[i] = Math.floor(digitBase / to);\n if (!Number.isSafeInteger(digits[i]) || digits[i] * to + carry !== digitBase)\n throw new Error('convertRadix: carry overflow');\n if (!done)\n continue;\n else if (!digits[i])\n pos = i;\n else\n done = false;\n }\n res.push(carry);\n if (done)\n break;\n }\n for (let i = 0; i < data.length - 1 && data[i] === 0; i++)\n res.push(0);\n return res.reverse();\n}\nconst gcd = (a, b) => (!b ? a : gcd(b, a % b));\nconst radix2carry = (from, to) => from + (to - gcd(from, to));\nfunction convertRadix2(data, from, to, padding) {\n if (!Array.isArray(data))\n throw new Error('convertRadix2: data should be array');\n if (from <= 0 || from > 32)\n throw new Error(`convertRadix2: wrong from=${from}`);\n if (to <= 0 || to > 32)\n throw new Error(`convertRadix2: wrong to=${to}`);\n if (radix2carry(from, to) > 32) {\n throw new Error(`convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`);\n }\n let carry = 0;\n let pos = 0;\n const mask = 2 ** to - 1;\n const res = [];\n for (const n of data) {\n assertNumber(n);\n if (n >= 2 ** from)\n throw new Error(`convertRadix2: invalid data word=${n} from=${from}`);\n carry = (carry << from) | n;\n if (pos + from > 32)\n throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`);\n pos += from;\n for (; pos >= to; pos -= to)\n res.push(((carry >> (pos - to)) & mask) >>> 0);\n carry &= 2 ** pos - 1;\n }\n carry = (carry << (to - pos)) & mask;\n if (!padding && pos >= from)\n throw new Error('Excess padding');\n if (!padding && carry)\n throw new Error(`Non-zero padding: ${carry}`);\n if (padding && pos > 0)\n res.push(carry >>> 0);\n return res;\n}\nfunction radix(num) {\n assertNumber(num);\n return {\n encode: (bytes) => {\n if (!(bytes instanceof Uint8Array))\n throw new Error('radix.encode input should be Uint8Array');\n return convertRadix(Array.from(bytes), 2 ** 8, num);\n },\n decode: (digits) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('radix.decode input should be array of strings');\n return Uint8Array.from(convertRadix(digits, num, 2 ** 8));\n },\n };\n}\nfunction radix2(bits, revPadding = false) {\n assertNumber(bits);\n if (bits <= 0 || bits > 32)\n throw new Error('radix2: bits should be in (0..32]');\n if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)\n throw new Error('radix2: carry overflow');\n return {\n encode: (bytes) => {\n if (!(bytes instanceof Uint8Array))\n throw new Error('radix2.encode input should be Uint8Array');\n return convertRadix2(Array.from(bytes), 8, bits, !revPadding);\n },\n decode: (digits) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('radix2.decode input should be array of strings');\n return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding));\n },\n };\n}\nfunction unsafeWrapper(fn) {\n if (typeof fn !== 'function')\n throw new Error('unsafeWrapper fn should be function');\n return function (...args) {\n try {\n return fn.apply(null, args);\n }\n catch (e) { }\n };\n}\nfunction checksum(len, fn) {\n assertNumber(len);\n if (typeof fn !== 'function')\n throw new Error('checksum fn should be function');\n return {\n encode(data) {\n if (!(data instanceof Uint8Array))\n throw new Error('checksum.encode: input should be Uint8Array');\n const checksum = fn(data).slice(0, len);\n const res = new Uint8Array(data.length + len);\n res.set(data);\n res.set(checksum, data.length);\n return res;\n },\n decode(data) {\n if (!(data instanceof Uint8Array))\n throw new Error('checksum.decode: input should be Uint8Array');\n const payload = data.slice(0, -len);\n const newChecksum = fn(payload).slice(0, len);\n const oldChecksum = data.slice(-len);\n for (let i = 0; i < len; i++)\n if (newChecksum[i] !== oldChecksum[i])\n throw new Error('Invalid checksum');\n return payload;\n },\n };\n}\nexports.utils = { alphabet, chain, checksum, radix, radix2, join, padding };\nexports.base16 = chain(radix2(4), alphabet('0123456789ABCDEF'), join(''));\nexports.base32 = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), padding(5), join(''));\nexports.base32hex = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), padding(5), join(''));\nexports.base32crockford = chain(radix2(5), alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'), join(''), normalize((s) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1')));\nexports.base64 = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), padding(6), join(''));\nexports.base64url = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), padding(6), join(''));\nconst genBase58 = (abc) => chain(radix(58), alphabet(abc), join(''));\nexports.base58 = genBase58('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz');\nexports.base58flickr = genBase58('123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ');\nexports.base58xrp = genBase58('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz');\nconst XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11];\nexports.base58xmr = {\n encode(data) {\n let res = '';\n for (let i = 0; i < data.length; i += 8) {\n const block = data.subarray(i, i + 8);\n res += exports.base58.encode(block).padStart(XMR_BLOCK_LEN[block.length], '1');\n }\n return res;\n },\n decode(str) {\n let res = [];\n for (let i = 0; i < str.length; i += 11) {\n const slice = str.slice(i, i + 11);\n const blockLen = XMR_BLOCK_LEN.indexOf(slice.length);\n const block = exports.base58.decode(slice);\n for (let j = 0; j < block.length - blockLen; j++) {\n if (block[j] !== 0)\n throw new Error('base58xmr: wrong padding');\n }\n res = res.concat(Array.from(block.slice(block.length - blockLen)));\n }\n return Uint8Array.from(res);\n },\n};\nconst base58check = (sha256) => chain(checksum(4, (data) => sha256(sha256(data))), exports.base58);\nexports.base58check = base58check;\nconst BECH_ALPHABET = chain(alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'), join(''));\nconst POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];\nfunction bech32Polymod(pre) {\n const b = pre >> 25;\n let chk = (pre & 0x1ffffff) << 5;\n for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {\n if (((b >> i) & 1) === 1)\n chk ^= POLYMOD_GENERATORS[i];\n }\n return chk;\n}\nfunction bechChecksum(prefix, words, encodingConst = 1) {\n const len = prefix.length;\n let chk = 1;\n for (let i = 0; i < len; i++) {\n const c = prefix.charCodeAt(i);\n if (c < 33 || c > 126)\n throw new Error(`Invalid prefix (${prefix})`);\n chk = bech32Polymod(chk) ^ (c >> 5);\n }\n chk = bech32Polymod(chk);\n for (let i = 0; i < len; i++)\n chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f);\n for (let v of words)\n chk = bech32Polymod(chk) ^ v;\n for (let i = 0; i < 6; i++)\n chk = bech32Polymod(chk);\n chk ^= encodingConst;\n return BECH_ALPHABET.encode(convertRadix2([chk % 2 ** 30], 30, 5, false));\n}\nfunction genBech32(encoding) {\n const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3;\n const _words = radix2(5);\n const fromWords = _words.decode;\n const toWords = _words.encode;\n const fromWordsUnsafe = unsafeWrapper(fromWords);\n function encode(prefix, words, limit = 90) {\n if (typeof prefix !== 'string')\n throw new Error(`bech32.encode prefix should be string, not ${typeof prefix}`);\n if (!Array.isArray(words) || (words.length && typeof words[0] !== 'number'))\n throw new Error(`bech32.encode words should be array of numbers, not ${typeof words}`);\n const actualLength = prefix.length + 7 + words.length;\n if (limit !== false && actualLength > limit)\n throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`);\n prefix = prefix.toLowerCase();\n return `${prefix}1${BECH_ALPHABET.encode(words)}${bechChecksum(prefix, words, ENCODING_CONST)}`;\n }\n function decode(str, limit = 90) {\n if (typeof str !== 'string')\n throw new Error(`bech32.decode input should be string, not ${typeof str}`);\n if (str.length < 8 || (limit !== false && str.length > limit))\n throw new TypeError(`Wrong string length: ${str.length} (${str}). Expected (8..${limit})`);\n const lowered = str.toLowerCase();\n if (str !== lowered && str !== str.toUpperCase())\n throw new Error(`String must be lowercase or uppercase`);\n str = lowered;\n const sepIndex = str.lastIndexOf('1');\n if (sepIndex === 0 || sepIndex === -1)\n throw new Error(`Letter \"1\" must be present between prefix and data only`);\n const prefix = str.slice(0, sepIndex);\n const _words = str.slice(sepIndex + 1);\n if (_words.length < 6)\n throw new Error('Data must be at least 6 characters long');\n const words = BECH_ALPHABET.decode(_words).slice(0, -6);\n const sum = bechChecksum(prefix, words, ENCODING_CONST);\n if (!_words.endsWith(sum))\n throw new Error(`Invalid checksum in ${str}: expected \"${sum}\"`);\n return { prefix, words };\n }\n const decodeUnsafe = unsafeWrapper(decode);\n function decodeToBytes(str) {\n const { prefix, words } = decode(str, false);\n return { prefix, words, bytes: fromWords(words) };\n }\n return { encode, decode, decodeToBytes, decodeUnsafe, fromWords, fromWordsUnsafe, toWords };\n}\nexports.bech32 = genBech32('bech32');\nexports.bech32m = genBech32('bech32m');\nexports.utf8 = {\n encode: (data) => new TextDecoder().decode(data),\n decode: (str) => new TextEncoder().encode(str),\n};\nexports.hex = chain(radix2(4), alphabet('0123456789abcdef'), join(''), normalize((s) => {\n if (typeof s !== 'string' || s.length % 2)\n throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`);\n return s.toLowerCase();\n}));\nconst CODERS = {\n utf8: exports.utf8, hex: exports.hex, base16: exports.base16, base32: exports.base32, base64: exports.base64, base64url: exports.base64url, base58: exports.base58, base58xmr: exports.base58xmr\n};\nconst coderTypeError = `Invalid encoding type. Available types: ${Object.keys(CODERS).join(', ')}`;\nconst bytesToString = (type, bytes) => {\n if (typeof type !== 'string' || !CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (!(bytes instanceof Uint8Array))\n throw new TypeError('bytesToString() expects Uint8Array');\n return CODERS[type].encode(bytes);\n};\nexports.bytesToString = bytesToString;\nexports.str = exports.bytesToString;\nconst stringToBytes = (type, str) => {\n if (!CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (typeof str !== 'string')\n throw new TypeError('stringToBytes() expects string');\n return CODERS[type].decode(str);\n};\nexports.stringToBytes = stringToBytes;\nexports.bytes = exports.stringToBytes;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mnemonicToSeedSync = exports.mnemonicToSeed = exports.validateMnemonic = exports.entropyToMnemonic = exports.mnemonicToEntropy = exports.generateMnemonic = void 0;\n/*! scure-bip39 - MIT License (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) */\nconst _assert_1 = require(\"@noble/hashes/_assert\");\nconst pbkdf2_1 = require(\"@noble/hashes/pbkdf2\");\nconst sha256_1 = require(\"@noble/hashes/sha256\");\nconst sha512_1 = require(\"@noble/hashes/sha512\");\nconst utils_1 = require(\"@noble/hashes/utils\");\nconst base_1 = require(\"@scure/base\");\n// Japanese wordlist\nconst isJapanese = (wordlist) => wordlist[0] === '\\u3042\\u3044\\u3053\\u304f\\u3057\\u3093';\n// Normalization replaces equivalent sequences of characters\n// so that any two texts that are equivalent will be reduced\n// to the same sequence of code points, called the normal form of the original text.\nfunction nfkd(str) {\n if (typeof str !== 'string')\n throw new TypeError(`Invalid mnemonic type: ${typeof str}`);\n return str.normalize('NFKD');\n}\nfunction normalize(str) {\n const norm = nfkd(str);\n const words = norm.split(' ');\n if (![12, 15, 18, 21, 24].includes(words.length))\n throw new Error('Invalid mnemonic');\n return { nfkd: norm, words };\n}\nfunction assertEntropy(entropy) {\n _assert_1.default.bytes(entropy, 16, 20, 24, 28, 32);\n}\n/**\n * Generate x random words. Uses Cryptographically-Secure Random Number Generator.\n * @param wordlist imported wordlist for specific language\n * @param strength mnemonic strength 128-256 bits\n * @example\n * generateMnemonic(wordlist, 128)\n * // 'legal winner thank year wave sausage worth useful legal winner thank yellow'\n */\nfunction generateMnemonic(wordlist, strength = 128) {\n _assert_1.default.number(strength);\n if (strength % 32 !== 0 || strength > 256)\n throw new TypeError('Invalid entropy');\n return entropyToMnemonic((0, utils_1.randomBytes)(strength / 8), wordlist);\n}\nexports.generateMnemonic = generateMnemonic;\nconst calcChecksum = (entropy) => {\n // Checksum is ent.length/4 bits long\n const bitsLeft = 8 - entropy.length / 4;\n // Zero rightmost \"bitsLeft\" bits in byte\n // For example: bitsLeft=4 val=10111101 -> 10110000\n return new Uint8Array([((0, sha256_1.sha256)(entropy)[0] >> bitsLeft) << bitsLeft]);\n};\nfunction getCoder(wordlist) {\n if (!Array.isArray(wordlist) || wordlist.length !== 2048 || typeof wordlist[0] !== 'string')\n throw new Error('Worlist: expected array of 2048 strings');\n wordlist.forEach((i) => {\n if (typeof i !== 'string')\n throw new Error(`Wordlist: non-string element: ${i}`);\n });\n return base_1.utils.chain(base_1.utils.checksum(1, calcChecksum), base_1.utils.radix2(11, true), base_1.utils.alphabet(wordlist));\n}\n/**\n * Reversible: Converts mnemonic string to raw entropy in form of byte array.\n * @param mnemonic 12-24 words\n * @param wordlist imported wordlist for specific language\n * @example\n * const mnem = 'legal winner thank year wave sausage worth useful legal winner thank yellow';\n * mnemonicToEntropy(mnem, wordlist)\n * // Produces\n * new Uint8Array([\n * 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n * 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f\n * ])\n */\nfunction mnemonicToEntropy(mnemonic, wordlist) {\n const { words } = normalize(mnemonic);\n const entropy = getCoder(wordlist).decode(words);\n assertEntropy(entropy);\n return entropy;\n}\nexports.mnemonicToEntropy = mnemonicToEntropy;\n/**\n * Reversible: Converts raw entropy in form of byte array to mnemonic string.\n * @param entropy byte array\n * @param wordlist imported wordlist for specific language\n * @returns 12-24 words\n * @example\n * const ent = new Uint8Array([\n * 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n * 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f\n * ]);\n * entropyToMnemonic(ent, wordlist);\n * // 'legal winner thank year wave sausage worth useful legal winner thank yellow'\n */\nfunction entropyToMnemonic(entropy, wordlist) {\n assertEntropy(entropy);\n const words = getCoder(wordlist).encode(entropy);\n return words.join(isJapanese(wordlist) ? '\\u3000' : ' ');\n}\nexports.entropyToMnemonic = entropyToMnemonic;\n/**\n * Validates mnemonic for being 12-24 words contained in `wordlist`.\n */\nfunction validateMnemonic(mnemonic, wordlist) {\n try {\n mnemonicToEntropy(mnemonic, wordlist);\n }\n catch (e) {\n return false;\n }\n return true;\n}\nexports.validateMnemonic = validateMnemonic;\nconst salt = (passphrase) => nfkd(`mnemonic${passphrase}`);\n/**\n * Irreversible: Uses KDF to derive 64 bytes of key data from mnemonic + optional password.\n * @param mnemonic 12-24 words\n * @param passphrase string that will additionally protect the key\n * @returns 64 bytes of key data\n * @example\n * const mnem = 'legal winner thank year wave sausage worth useful legal winner thank yellow';\n * await mnemonicToSeed(mnem, 'password');\n * // new Uint8Array([...64 bytes])\n */\nfunction mnemonicToSeed(mnemonic, passphrase = '') {\n return (0, pbkdf2_1.pbkdf2Async)(sha512_1.sha512, normalize(mnemonic).nfkd, salt(passphrase), { c: 2048, dkLen: 64 });\n}\nexports.mnemonicToSeed = mnemonicToSeed;\n/**\n * Irreversible: Uses KDF to derive 64 bytes of key data from mnemonic + optional password.\n * @param mnemonic 12-24 words\n * @param passphrase string that will additionally protect the key\n * @returns 64 bytes of key data\n * @example\n * const mnem = 'legal winner thank year wave sausage worth useful legal winner thank yellow';\n * mnemonicToSeedSync(mnem, 'password');\n * // new Uint8Array([...64 bytes])\n */\nfunction mnemonicToSeedSync(mnemonic, passphrase = '') {\n return (0, pbkdf2_1.pbkdf2)(sha512_1.sha512, normalize(mnemonic).nfkd, salt(passphrase), { c: 2048, dkLen: 64 });\n}\nexports.mnemonicToSeedSync = mnemonicToSeedSync;\n","import { SHA2 } from './_sha2.js';\nimport { wrapConstructor } from './utils.js';\n// https://homes.esat.kuleuven.be/~bosselae/ripemd160.html\n// https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf\nconst Rho = new Uint8Array([7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8]);\nconst Id = Uint8Array.from({ length: 16 }, (_, i) => i);\nconst Pi = Id.map((i) => (9 * i + 5) % 16);\nlet idxL = [Id];\nlet idxR = [Pi];\nfor (let i = 0; i < 4; i++)\n for (let j of [idxL, idxR])\n j.push(j[i].map((k) => Rho[k]));\nconst shifts = [\n [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8],\n [12, 13, 11, 15, 6, 9, 9, 7, 12, 15, 11, 13, 7, 8, 7, 7],\n [13, 15, 14, 11, 7, 7, 6, 8, 13, 14, 13, 12, 5, 5, 6, 9],\n [14, 11, 12, 14, 8, 6, 5, 5, 15, 12, 15, 14, 9, 9, 8, 6],\n [15, 12, 13, 13, 9, 5, 8, 6, 14, 11, 12, 11, 8, 6, 5, 5],\n].map((i) => new Uint8Array(i));\nconst shiftsL = idxL.map((idx, i) => idx.map((j) => shifts[i][j]));\nconst shiftsR = idxR.map((idx, i) => idx.map((j) => shifts[i][j]));\nconst Kl = new Uint32Array([0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]);\nconst Kr = new Uint32Array([0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]);\n// The rotate left (circular left shift) operation for uint32\nconst rotl = (word, shift) => (word << shift) | (word >>> (32 - shift));\n// It's called f() in spec.\nfunction f(group, x, y, z) {\n if (group === 0)\n return x ^ y ^ z;\n else if (group === 1)\n return (x & y) | (~x & z);\n else if (group === 2)\n return (x | ~y) ^ z;\n else if (group === 3)\n return (x & z) | (y & ~z);\n else\n return x ^ (y | ~z);\n}\n// Temporary buffer, not used to store anything between runs\nconst BUF = new Uint32Array(16);\nexport class RIPEMD160 extends SHA2 {\n constructor() {\n super(64, 20, 8, true);\n this.h0 = 0x67452301 | 0;\n this.h1 = 0xefcdab89 | 0;\n this.h2 = 0x98badcfe | 0;\n this.h3 = 0x10325476 | 0;\n this.h4 = 0xc3d2e1f0 | 0;\n }\n get() {\n const { h0, h1, h2, h3, h4 } = this;\n return [h0, h1, h2, h3, h4];\n }\n set(h0, h1, h2, h3, h4) {\n this.h0 = h0 | 0;\n this.h1 = h1 | 0;\n this.h2 = h2 | 0;\n this.h3 = h3 | 0;\n this.h4 = h4 | 0;\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n BUF[i] = view.getUint32(offset, true);\n // prettier-ignore\n let al = this.h0 | 0, ar = al, bl = this.h1 | 0, br = bl, cl = this.h2 | 0, cr = cl, dl = this.h3 | 0, dr = dl, el = this.h4 | 0, er = el;\n // Instead of iterating 0 to 80, we split it into 5 groups\n // And use the groups in constants, functions, etc. Much simpler\n for (let group = 0; group < 5; group++) {\n const rGroup = 4 - group;\n const hbl = Kl[group], hbr = Kr[group]; // prettier-ignore\n const rl = idxL[group], rr = idxR[group]; // prettier-ignore\n const sl = shiftsL[group], sr = shiftsR[group]; // prettier-ignore\n for (let i = 0; i < 16; i++) {\n const tl = (rotl(al + f(group, bl, cl, dl) + BUF[rl[i]] + hbl, sl[i]) + el) | 0;\n al = el, el = dl, dl = rotl(cl, 10) | 0, cl = bl, bl = tl; // prettier-ignore\n }\n // 2 loops are 10% faster\n for (let i = 0; i < 16; i++) {\n const tr = (rotl(ar + f(rGroup, br, cr, dr) + BUF[rr[i]] + hbr, sr[i]) + er) | 0;\n ar = er, er = dr, dr = rotl(cr, 10) | 0, cr = br, br = tr; // prettier-ignore\n }\n }\n // Add the compressed chunk to the current hash value\n this.set((this.h1 + cl + dr) | 0, (this.h2 + dl + er) | 0, (this.h3 + el + ar) | 0, (this.h4 + al + br) | 0, (this.h0 + bl + cr) | 0);\n }\n roundClean() {\n BUF.fill(0);\n }\n destroy() {\n this.destroyed = true;\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0);\n }\n}\n/**\n * RIPEMD-160 - a hash function from 1990s.\n * @param message - msg that would be hashed\n */\nexport const ripemd160 = wrapConstructor(() => new RIPEMD160());\n//# sourceMappingURL=ripemd160.js.map","const U32_MASK64 = BigInt(2 ** 32 - 1);\nconst _32n = BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nexport function fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nexport function split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nexport const toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (h, l) => l;\nconst rotr32L = (h, l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\n// Removing \"export\" has 5% perf penalty -_-\nexport function add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","import { SHA2 } from './_sha2.js';\nimport u64 from './_u64.js';\nimport { wrapConstructor } from './utils.js';\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n)));\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = new Uint32Array(80);\nconst SHA512_W_L = new Uint32Array(80);\nexport class SHA512 extends SHA2 {\n constructor() {\n super(128, 64, 16, false);\n // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n // Also looks cleaner and easier to verify with spec.\n // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x6a09e667 | 0;\n this.Al = 0xf3bcc908 | 0;\n this.Bh = 0xbb67ae85 | 0;\n this.Bl = 0x84caa73b | 0;\n this.Ch = 0x3c6ef372 | 0;\n this.Cl = 0xfe94f82b | 0;\n this.Dh = 0xa54ff53a | 0;\n this.Dl = 0x5f1d36f1 | 0;\n this.Eh = 0x510e527f | 0;\n this.El = 0xade682d1 | 0;\n this.Fh = 0x9b05688c | 0;\n this.Fl = 0x2b3e6c1f | 0;\n this.Gh = 0x1f83d9ab | 0;\n this.Gl = 0xfb41bd6b | 0;\n this.Hh = 0x5be0cd19 | 0;\n this.Hl = 0x137e2179 | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n SHA512_W_H.fill(0);\n SHA512_W_L.fill(0);\n }\n destroy() {\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nclass SHA512_224 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x8c3d37c8 | 0;\n this.Al = 0x19544da2 | 0;\n this.Bh = 0x73e19966 | 0;\n this.Bl = 0x89dcd4d6 | 0;\n this.Ch = 0x1dfab7ae | 0;\n this.Cl = 0x32ff9c82 | 0;\n this.Dh = 0x679dd514 | 0;\n this.Dl = 0x582f9fcf | 0;\n this.Eh = 0x0f6d2b69 | 0;\n this.El = 0x7bd44da8 | 0;\n this.Fh = 0x77e36f73 | 0;\n this.Fl = 0x04c48942 | 0;\n this.Gh = 0x3f9d85a8 | 0;\n this.Gl = 0x6a1d36c8 | 0;\n this.Hh = 0x1112e6ad | 0;\n this.Hl = 0x91d692a1 | 0;\n this.outputLen = 28;\n }\n}\nclass SHA512_256 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x22312194 | 0;\n this.Al = 0xfc2bf72c | 0;\n this.Bh = 0x9f555fa3 | 0;\n this.Bl = 0xc84c64c2 | 0;\n this.Ch = 0x2393b86b | 0;\n this.Cl = 0x6f53b151 | 0;\n this.Dh = 0x96387719 | 0;\n this.Dl = 0x5940eabd | 0;\n this.Eh = 0x96283ee2 | 0;\n this.El = 0xa88effe3 | 0;\n this.Fh = 0xbe5e1e25 | 0;\n this.Fl = 0x53863992 | 0;\n this.Gh = 0x2b0199fc | 0;\n this.Gl = 0x2c85b8aa | 0;\n this.Hh = 0x0eb72ddc | 0;\n this.Hl = 0x81c52ca2 | 0;\n this.outputLen = 32;\n }\n}\nclass SHA384 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0xcbbb9d5d | 0;\n this.Al = 0xc1059ed8 | 0;\n this.Bh = 0x629a292a | 0;\n this.Bl = 0x367cd507 | 0;\n this.Ch = 0x9159015a | 0;\n this.Cl = 0x3070dd17 | 0;\n this.Dh = 0x152fecd8 | 0;\n this.Dl = 0xf70e5939 | 0;\n this.Eh = 0x67332667 | 0;\n this.El = 0xffc00b31 | 0;\n this.Fh = 0x8eb44a87 | 0;\n this.Fl = 0x68581511 | 0;\n this.Gh = 0xdb0c2e0d | 0;\n this.Gl = 0x64f98fa7 | 0;\n this.Hh = 0x47b5481d | 0;\n this.Hl = 0xbefa4fa4 | 0;\n this.outputLen = 48;\n }\n}\nexport const sha512 = wrapConstructor(() => new SHA512());\nexport const sha512_224 = wrapConstructor(() => new SHA512_224());\nexport const sha512_256 = wrapConstructor(() => new SHA512_256());\nexport const sha384 = wrapConstructor(() => new SHA384());\n//# sourceMappingURL=sha512.js.map","import { hmac } from '@noble/hashes/hmac';\nimport { ripemd160 } from '@noble/hashes/ripemd160';\nimport { sha256 } from '@noble/hashes/sha256';\nimport { sha512 } from '@noble/hashes/sha512';\nimport { bytes as assertBytes } from '@noble/hashes/_assert';\nimport { bytesToHex, concatBytes, createView, hexToBytes, utf8ToBytes } from '@noble/hashes/utils';\nimport { secp256k1 as secp } from '@noble/curves/secp256k1';\nimport { mod } from '@noble/curves/abstract/modular';\nimport { base58check as base58checker } from '@scure/base';\nconst Point = secp.ProjectivePoint;\nconst base58check = base58checker(sha256);\nfunction bytesToNumber(bytes) {\n return BigInt(`0x${bytesToHex(bytes)}`);\n}\nfunction numberToBytes(num) {\n return hexToBytes(num.toString(16).padStart(64, '0'));\n}\nconst MASTER_SECRET = utf8ToBytes('Bitcoin seed');\nconst BITCOIN_VERSIONS = { private: 0x0488ade4, public: 0x0488b21e };\nexport const HARDENED_OFFSET = 0x80000000;\nconst hash160 = (data) => ripemd160(sha256(data));\nconst fromU32 = (data) => createView(data).getUint32(0, false);\nconst toU32 = (n) => {\n if (!Number.isSafeInteger(n) || n < 0 || n > 2 ** 32 - 1) {\n throw new Error(`Invalid number=${n}. Should be from 0 to 2 ** 32 - 1`);\n }\n const buf = new Uint8Array(4);\n createView(buf).setUint32(0, n, false);\n return buf;\n};\nexport class HDKey {\n get fingerprint() {\n if (!this.pubHash) {\n throw new Error('No publicKey set!');\n }\n return fromU32(this.pubHash);\n }\n get identifier() {\n return this.pubHash;\n }\n get pubKeyHash() {\n return this.pubHash;\n }\n get privateKey() {\n return this.privKeyBytes || null;\n }\n get publicKey() {\n return this.pubKey || null;\n }\n get privateExtendedKey() {\n const priv = this.privateKey;\n if (!priv) {\n throw new Error('No private key');\n }\n return base58check.encode(this.serialize(this.versions.private, concatBytes(new Uint8Array([0]), priv)));\n }\n get publicExtendedKey() {\n if (!this.pubKey) {\n throw new Error('No public key');\n }\n return base58check.encode(this.serialize(this.versions.public, this.pubKey));\n }\n static fromMasterSeed(seed, versions = BITCOIN_VERSIONS) {\n assertBytes(seed);\n if (8 * seed.length < 128 || 8 * seed.length > 512) {\n throw new Error(`HDKey: wrong seed length=${seed.length}. Should be between 128 and 512 bits; 256 bits is advised)`);\n }\n const I = hmac(sha512, MASTER_SECRET, seed);\n return new HDKey({\n versions,\n chainCode: I.slice(32),\n privateKey: I.slice(0, 32),\n });\n }\n static fromExtendedKey(base58key, versions = BITCOIN_VERSIONS) {\n const keyBuffer = base58check.decode(base58key);\n const keyView = createView(keyBuffer);\n const version = keyView.getUint32(0, false);\n const opt = {\n versions,\n depth: keyBuffer[4],\n parentFingerprint: keyView.getUint32(5, false),\n index: keyView.getUint32(9, false),\n chainCode: keyBuffer.slice(13, 45),\n };\n const key = keyBuffer.slice(45);\n const isPriv = key[0] === 0;\n if (version !== versions[isPriv ? 'private' : 'public']) {\n throw new Error('Version mismatch');\n }\n if (isPriv) {\n return new HDKey({ ...opt, privateKey: key.slice(1) });\n }\n else {\n return new HDKey({ ...opt, publicKey: key });\n }\n }\n static fromJSON(json) {\n return HDKey.fromExtendedKey(json.xpriv);\n }\n constructor(opt) {\n this.depth = 0;\n this.index = 0;\n this.chainCode = null;\n this.parentFingerprint = 0;\n if (!opt || typeof opt !== 'object') {\n throw new Error('HDKey.constructor must not be called directly');\n }\n this.versions = opt.versions || BITCOIN_VERSIONS;\n this.depth = opt.depth || 0;\n this.chainCode = opt.chainCode;\n this.index = opt.index || 0;\n this.parentFingerprint = opt.parentFingerprint || 0;\n if (!this.depth) {\n if (this.parentFingerprint || this.index) {\n throw new Error('HDKey: zero depth with non-zero index/parent fingerprint');\n }\n }\n if (opt.publicKey && opt.privateKey) {\n throw new Error('HDKey: publicKey and privateKey at same time.');\n }\n if (opt.privateKey) {\n if (!secp.utils.isValidPrivateKey(opt.privateKey)) {\n throw new Error('Invalid private key');\n }\n this.privKey =\n typeof opt.privateKey === 'bigint' ? opt.privateKey : bytesToNumber(opt.privateKey);\n this.privKeyBytes = numberToBytes(this.privKey);\n this.pubKey = secp.getPublicKey(opt.privateKey, true);\n }\n else if (opt.publicKey) {\n this.pubKey = Point.fromHex(opt.publicKey).toRawBytes(true);\n }\n else {\n throw new Error('HDKey: no public or private key provided');\n }\n this.pubHash = hash160(this.pubKey);\n }\n derive(path) {\n if (!/^[mM]'?/.test(path)) {\n throw new Error('Path must start with \"m\" or \"M\"');\n }\n if (/^[mM]'?$/.test(path)) {\n return this;\n }\n const parts = path.replace(/^[mM]'?\\//, '').split('/');\n let child = this;\n for (const c of parts) {\n const m = /^(\\d+)('?)$/.exec(c);\n if (!m || m.length !== 3) {\n throw new Error(`Invalid child index: ${c}`);\n }\n let idx = +m[1];\n if (!Number.isSafeInteger(idx) || idx >= HARDENED_OFFSET) {\n throw new Error('Invalid index');\n }\n if (m[2] === \"'\") {\n idx += HARDENED_OFFSET;\n }\n child = child.deriveChild(idx);\n }\n return child;\n }\n deriveChild(index) {\n if (!this.pubKey || !this.chainCode) {\n throw new Error('No publicKey or chainCode set');\n }\n let data = toU32(index);\n if (index >= HARDENED_OFFSET) {\n const priv = this.privateKey;\n if (!priv) {\n throw new Error('Could not derive hardened child key');\n }\n data = concatBytes(new Uint8Array([0]), priv, data);\n }\n else {\n data = concatBytes(this.pubKey, data);\n }\n const I = hmac(sha512, this.chainCode, data);\n const childTweak = bytesToNumber(I.slice(0, 32));\n const chainCode = I.slice(32);\n if (!secp.utils.isValidPrivateKey(childTweak)) {\n throw new Error('Tweak bigger than curve order');\n }\n const opt = {\n versions: this.versions,\n chainCode,\n depth: this.depth + 1,\n parentFingerprint: this.fingerprint,\n index,\n };\n try {\n if (this.privateKey) {\n const added = mod(this.privKey + childTweak, secp.CURVE.n);\n if (!secp.utils.isValidPrivateKey(added)) {\n throw new Error('The tweak was out of range or the resulted private key is invalid');\n }\n opt.privateKey = added;\n }\n else {\n const added = Point.fromHex(this.pubKey).add(Point.fromPrivateKey(childTweak));\n if (added.equals(Point.ZERO)) {\n throw new Error('The tweak was equal to negative P, which made the result key invalid');\n }\n opt.publicKey = added.toRawBytes(true);\n }\n return new HDKey(opt);\n }\n catch (err) {\n return this.deriveChild(index + 1);\n }\n }\n sign(hash) {\n if (!this.privateKey) {\n throw new Error('No privateKey set!');\n }\n assertBytes(hash, 32);\n return secp.sign(hash, this.privKey).toCompactRawBytes();\n }\n verify(hash, signature) {\n assertBytes(hash, 32);\n assertBytes(signature, 64);\n if (!this.publicKey) {\n throw new Error('No publicKey set!');\n }\n let sig;\n try {\n sig = secp.Signature.fromCompact(signature);\n }\n catch (error) {\n return false;\n }\n return secp.verify(sig, hash, this.publicKey);\n }\n wipePrivateData() {\n this.privKey = undefined;\n if (this.privKeyBytes) {\n this.privKeyBytes.fill(0);\n this.privKeyBytes = undefined;\n }\n return this;\n }\n toJSON() {\n return {\n xpriv: this.privateExtendedKey,\n xpub: this.publicExtendedKey,\n };\n }\n serialize(version, key) {\n if (!this.chainCode) {\n throw new Error('No chainCode set');\n }\n assertBytes(key, 33);\n return concatBytes(toU32(version), new Uint8Array([this.depth]), toU32(this.parentFingerprint), toU32(this.index), this.chainCode, key);\n }\n}\n//# sourceMappingURL=index.js.map","var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// keys.ts\nimport { schnorr } from \"@noble/curves/secp256k1\";\nimport { bytesToHex } from \"@noble/hashes/utils\";\nfunction generatePrivateKey() {\n return bytesToHex(schnorr.utils.randomPrivateKey());\n}\nfunction getPublicKey(privateKey) {\n return bytesToHex(schnorr.getPublicKey(privateKey));\n}\n\n// event.ts\nimport { schnorr as schnorr2 } from \"@noble/curves/secp256k1\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport { bytesToHex as bytesToHex2 } from \"@noble/hashes/utils\";\n\n// utils.ts\nvar utils_exports = {};\n__export(utils_exports, {\n insertEventIntoAscendingList: () => insertEventIntoAscendingList,\n insertEventIntoDescendingList: () => insertEventIntoDescendingList,\n normalizeURL: () => normalizeURL,\n utf8Decoder: () => utf8Decoder,\n utf8Encoder: () => utf8Encoder\n});\nvar utf8Decoder = new TextDecoder(\"utf-8\");\nvar utf8Encoder = new TextEncoder();\nfunction normalizeURL(url) {\n let p = new URL(url);\n p.pathname = p.pathname.replace(/\\/+/g, \"/\");\n if (p.pathname.endsWith(\"/\"))\n p.pathname = p.pathname.slice(0, -1);\n if (p.port === \"80\" && p.protocol === \"ws:\" || p.port === \"443\" && p.protocol === \"wss:\")\n p.port = \"\";\n p.searchParams.sort();\n p.hash = \"\";\n return p.toString();\n}\nfunction insertEventIntoDescendingList(sortedArray, event) {\n let start = 0;\n let end = sortedArray.length - 1;\n let midPoint;\n let position = start;\n if (end < 0) {\n position = 0;\n } else if (event.created_at < sortedArray[end].created_at) {\n position = end + 1;\n } else if (event.created_at >= sortedArray[start].created_at) {\n position = start;\n } else\n while (true) {\n if (end <= start + 1) {\n position = end;\n break;\n }\n midPoint = Math.floor(start + (end - start) / 2);\n if (sortedArray[midPoint].created_at > event.created_at) {\n start = midPoint;\n } else if (sortedArray[midPoint].created_at < event.created_at) {\n end = midPoint;\n } else {\n position = midPoint;\n break;\n }\n }\n if (sortedArray[position]?.id !== event.id) {\n return [\n ...sortedArray.slice(0, position),\n event,\n ...sortedArray.slice(position)\n ];\n }\n return sortedArray;\n}\nfunction insertEventIntoAscendingList(sortedArray, event) {\n let start = 0;\n let end = sortedArray.length - 1;\n let midPoint;\n let position = start;\n if (end < 0) {\n position = 0;\n } else if (event.created_at > sortedArray[end].created_at) {\n position = end + 1;\n } else if (event.created_at <= sortedArray[start].created_at) {\n position = start;\n } else\n while (true) {\n if (end <= start + 1) {\n position = end;\n break;\n }\n midPoint = Math.floor(start + (end - start) / 2);\n if (sortedArray[midPoint].created_at < event.created_at) {\n start = midPoint;\n } else if (sortedArray[midPoint].created_at > event.created_at) {\n end = midPoint;\n } else {\n position = midPoint;\n break;\n }\n }\n if (sortedArray[position]?.id !== event.id) {\n return [\n ...sortedArray.slice(0, position),\n event,\n ...sortedArray.slice(position)\n ];\n }\n return sortedArray;\n}\n\n// event.ts\nvar Kind = /* @__PURE__ */ ((Kind3) => {\n Kind3[Kind3[\"Metadata\"] = 0] = \"Metadata\";\n Kind3[Kind3[\"Text\"] = 1] = \"Text\";\n Kind3[Kind3[\"RecommendRelay\"] = 2] = \"RecommendRelay\";\n Kind3[Kind3[\"Contacts\"] = 3] = \"Contacts\";\n Kind3[Kind3[\"EncryptedDirectMessage\"] = 4] = \"EncryptedDirectMessage\";\n Kind3[Kind3[\"EventDeletion\"] = 5] = \"EventDeletion\";\n Kind3[Kind3[\"Repost\"] = 6] = \"Repost\";\n Kind3[Kind3[\"Reaction\"] = 7] = \"Reaction\";\n Kind3[Kind3[\"BadgeAward\"] = 8] = \"BadgeAward\";\n Kind3[Kind3[\"ChannelCreation\"] = 40] = \"ChannelCreation\";\n Kind3[Kind3[\"ChannelMetadata\"] = 41] = \"ChannelMetadata\";\n Kind3[Kind3[\"ChannelMessage\"] = 42] = \"ChannelMessage\";\n Kind3[Kind3[\"ChannelHideMessage\"] = 43] = \"ChannelHideMessage\";\n Kind3[Kind3[\"ChannelMuteUser\"] = 44] = \"ChannelMuteUser\";\n Kind3[Kind3[\"Blank\"] = 255] = \"Blank\";\n Kind3[Kind3[\"Report\"] = 1984] = \"Report\";\n Kind3[Kind3[\"ZapRequest\"] = 9734] = \"ZapRequest\";\n Kind3[Kind3[\"Zap\"] = 9735] = \"Zap\";\n Kind3[Kind3[\"RelayList\"] = 10002] = \"RelayList\";\n Kind3[Kind3[\"ClientAuth\"] = 22242] = \"ClientAuth\";\n Kind3[Kind3[\"BadgeDefinition\"] = 30008] = \"BadgeDefinition\";\n Kind3[Kind3[\"ProfileBadge\"] = 30009] = \"ProfileBadge\";\n Kind3[Kind3[\"Article\"] = 30023] = \"Article\";\n return Kind3;\n})(Kind || {});\nfunction getBlankEvent(kind = 255 /* Blank */) {\n return {\n kind,\n content: \"\",\n tags: [],\n created_at: 0\n };\n}\nfunction finishEvent(t, privateKey) {\n let event = t;\n event.pubkey = getPublicKey(privateKey);\n event.id = getEventHash(event);\n event.sig = getSignature(event, privateKey);\n return event;\n}\nfunction serializeEvent(evt) {\n if (!validateEvent(evt))\n throw new Error(\"can't serialize event with wrong or missing properties\");\n return JSON.stringify([\n 0,\n evt.pubkey,\n evt.created_at,\n evt.kind,\n evt.tags,\n evt.content\n ]);\n}\nfunction getEventHash(event) {\n let eventHash = sha256(utf8Encoder.encode(serializeEvent(event)));\n return bytesToHex2(eventHash);\n}\nvar isRecord = (obj) => obj instanceof Object;\nfunction validateEvent(event) {\n if (!isRecord(event))\n return false;\n if (typeof event.kind !== \"number\")\n return false;\n if (typeof event.content !== \"string\")\n return false;\n if (typeof event.created_at !== \"number\")\n return false;\n if (typeof event.pubkey !== \"string\")\n return false;\n if (!event.pubkey.match(/^[a-f0-9]{64}$/))\n return false;\n if (!Array.isArray(event.tags))\n return false;\n for (let i = 0; i < event.tags.length; i++) {\n let tag = event.tags[i];\n if (!Array.isArray(tag))\n return false;\n for (let j = 0; j < tag.length; j++) {\n if (typeof tag[j] === \"object\")\n return false;\n }\n }\n return true;\n}\nfunction verifySignature(event) {\n try {\n return schnorr2.verify(event.sig, getEventHash(event), event.pubkey);\n } catch (err) {\n return false;\n }\n}\nfunction signEvent(event, key) {\n console.warn(\n \"nostr-tools: `signEvent` is deprecated and will be removed or changed in the future. Please use `getSignature` instead.\"\n );\n return getSignature(event, key);\n}\nfunction getSignature(event, key) {\n return bytesToHex2(schnorr2.sign(getEventHash(event), key));\n}\n\n// filter.ts\nfunction matchFilter(filter, event) {\n if (filter.ids && filter.ids.indexOf(event.id) === -1) {\n if (!filter.ids.some((prefix) => event.id.startsWith(prefix))) {\n return false;\n }\n }\n if (filter.kinds && filter.kinds.indexOf(event.kind) === -1)\n return false;\n if (filter.authors && filter.authors.indexOf(event.pubkey) === -1) {\n if (!filter.authors.some((prefix) => event.pubkey.startsWith(prefix))) {\n return false;\n }\n }\n for (let f in filter) {\n if (f[0] === \"#\") {\n let tagName = f.slice(1);\n let values = filter[`#${tagName}`];\n if (values && !event.tags.find(\n ([t, v]) => t === f.slice(1) && values.indexOf(v) !== -1\n ))\n return false;\n }\n }\n if (filter.since && event.created_at < filter.since)\n return false;\n if (filter.until && event.created_at >= filter.until)\n return false;\n return true;\n}\nfunction matchFilters(filters, event) {\n for (let i = 0; i < filters.length; i++) {\n if (matchFilter(filters[i], event))\n return true;\n }\n return false;\n}\n\n// fakejson.ts\nvar fakejson_exports = {};\n__export(fakejson_exports, {\n getHex64: () => getHex64,\n getInt: () => getInt,\n getSubscriptionId: () => getSubscriptionId,\n matchEventId: () => matchEventId,\n matchEventKind: () => matchEventKind,\n matchEventPubkey: () => matchEventPubkey\n});\nfunction getHex64(json, field) {\n let len = field.length + 3;\n let idx = json.indexOf(`\"${field}\":`) + len;\n let s = json.slice(idx).indexOf(`\"`) + idx + 1;\n return json.slice(s, s + 64);\n}\nfunction getInt(json, field) {\n let len = field.length;\n let idx = json.indexOf(`\"${field}\":`) + len + 3;\n let sliced = json.slice(idx);\n let end = Math.min(sliced.indexOf(\",\"), sliced.indexOf(\"}\"));\n return parseInt(sliced.slice(0, end), 10);\n}\nfunction getSubscriptionId(json) {\n let idx = json.slice(0, 22).indexOf(`\"EVENT\"`);\n if (idx === -1)\n return null;\n let pstart = json.slice(idx + 7 + 1).indexOf(`\"`);\n if (pstart === -1)\n return null;\n let start = idx + 7 + 1 + pstart;\n let pend = json.slice(start + 1, 80).indexOf(`\"`);\n if (pend === -1)\n return null;\n let end = start + 1 + pend;\n return json.slice(start + 1, end);\n}\nfunction matchEventId(json, id) {\n return id === getHex64(json, \"id\");\n}\nfunction matchEventPubkey(json, pubkey) {\n return pubkey === getHex64(json, \"pubkey\");\n}\nfunction matchEventKind(json, kind) {\n return kind === getInt(json, \"kind\");\n}\n\n// relay.ts\nvar newListeners = () => ({\n connect: [],\n disconnect: [],\n error: [],\n notice: [],\n auth: []\n});\nfunction relayInit(url, options = {}) {\n let { listTimeout = 3e3, getTimeout = 3e3, countTimeout = 3e3 } = options;\n var ws;\n var openSubs = {};\n var listeners = newListeners();\n var subListeners = {};\n var pubListeners = {};\n var connectionPromise;\n async function connectRelay() {\n if (connectionPromise)\n return connectionPromise;\n connectionPromise = new Promise((resolve, reject) => {\n try {\n ws = new WebSocket(url);\n } catch (err) {\n reject(err);\n }\n ws.onopen = () => {\n listeners.connect.forEach((cb) => cb());\n resolve();\n };\n ws.onerror = () => {\n connectionPromise = void 0;\n listeners.error.forEach((cb) => cb());\n reject();\n };\n ws.onclose = async () => {\n connectionPromise = void 0;\n listeners.disconnect.forEach((cb) => cb());\n };\n let incomingMessageQueue = [];\n let handleNextInterval;\n ws.onmessage = (e) => {\n incomingMessageQueue.push(e.data);\n if (!handleNextInterval) {\n handleNextInterval = setInterval(handleNext, 0);\n }\n };\n function handleNext() {\n if (incomingMessageQueue.length === 0) {\n clearInterval(handleNextInterval);\n handleNextInterval = null;\n return;\n }\n var json = incomingMessageQueue.shift();\n if (!json)\n return;\n let subid = getSubscriptionId(json);\n if (subid) {\n let so = openSubs[subid];\n if (so && so.alreadyHaveEvent && so.alreadyHaveEvent(getHex64(json, \"id\"), url)) {\n return;\n }\n }\n try {\n let data = JSON.parse(json);\n switch (data[0]) {\n case \"EVENT\": {\n let id2 = data[1];\n let event = data[2];\n if (validateEvent(event) && openSubs[id2] && (openSubs[id2].skipVerification || verifySignature(event)) && matchFilters(openSubs[id2].filters, event)) {\n openSubs[id2];\n (subListeners[id2]?.event || []).forEach((cb) => cb(event));\n }\n return;\n }\n case \"COUNT\":\n let id = data[1];\n let payload = data[2];\n if (openSubs[id]) {\n ;\n (subListeners[id]?.count || []).forEach((cb) => cb(payload));\n }\n return;\n case \"EOSE\": {\n let id2 = data[1];\n if (id2 in subListeners) {\n subListeners[id2].eose.forEach((cb) => cb());\n subListeners[id2].eose = [];\n }\n return;\n }\n case \"OK\": {\n let id2 = data[1];\n let ok = data[2];\n let reason = data[3] || \"\";\n if (id2 in pubListeners) {\n if (ok)\n pubListeners[id2].ok.forEach((cb) => cb());\n else\n pubListeners[id2].failed.forEach((cb) => cb(reason));\n pubListeners[id2].ok = [];\n pubListeners[id2].failed = [];\n }\n return;\n }\n case \"NOTICE\":\n let notice = data[1];\n listeners.notice.forEach((cb) => cb(notice));\n return;\n case \"AUTH\": {\n let challenge = data[1];\n listeners.auth?.forEach((cb) => cb(challenge));\n return;\n }\n }\n } catch (err) {\n return;\n }\n }\n });\n return connectionPromise;\n }\n function connected() {\n return ws?.readyState === 1;\n }\n async function connect() {\n if (connected())\n return;\n await connectRelay();\n }\n async function trySend(params) {\n let msg = JSON.stringify(params);\n if (!connected()) {\n await new Promise((resolve) => setTimeout(resolve, 1e3));\n if (!connected()) {\n return;\n }\n }\n try {\n ws.send(msg);\n } catch (err) {\n console.log(err);\n }\n }\n const sub = (filters, {\n verb = \"REQ\",\n skipVerification = false,\n alreadyHaveEvent = null,\n id = Math.random().toString().slice(2)\n } = {}) => {\n let subid = id;\n openSubs[subid] = {\n id: subid,\n filters,\n skipVerification,\n alreadyHaveEvent\n };\n trySend([verb, subid, ...filters]);\n return {\n sub: (newFilters, newOpts = {}) => sub(newFilters || filters, {\n skipVerification: newOpts.skipVerification || skipVerification,\n alreadyHaveEvent: newOpts.alreadyHaveEvent || alreadyHaveEvent,\n id: subid\n }),\n unsub: () => {\n delete openSubs[subid];\n delete subListeners[subid];\n trySend([\"CLOSE\", subid]);\n },\n on: (type, cb) => {\n subListeners[subid] = subListeners[subid] || {\n event: [],\n count: [],\n eose: []\n };\n subListeners[subid][type].push(cb);\n },\n off: (type, cb) => {\n let listeners2 = subListeners[subid];\n let idx = listeners2[type].indexOf(cb);\n if (idx >= 0)\n listeners2[type].splice(idx, 1);\n }\n };\n };\n function _publishEvent(event, type) {\n if (!event.id)\n throw new Error(`event ${event} has no id`);\n let id = event.id;\n trySend([type, event]);\n return {\n on: (type2, cb) => {\n pubListeners[id] = pubListeners[id] || {\n ok: [],\n failed: []\n };\n pubListeners[id][type2].push(cb);\n },\n off: (type2, cb) => {\n let listeners2 = pubListeners[id];\n if (!listeners2)\n return;\n let idx = listeners2[type2].indexOf(cb);\n if (idx >= 0)\n listeners2[type2].splice(idx, 1);\n }\n };\n }\n return {\n url,\n sub,\n on: (type, cb) => {\n listeners[type].push(cb);\n if (type === \"connect\" && ws?.readyState === 1) {\n ;\n cb();\n }\n },\n off: (type, cb) => {\n let index = listeners[type].indexOf(cb);\n if (index !== -1)\n listeners[type].splice(index, 1);\n },\n list: (filters, opts) => new Promise((resolve) => {\n let s = sub(filters, opts);\n let events = [];\n let timeout = setTimeout(() => {\n s.unsub();\n resolve(events);\n }, listTimeout);\n s.on(\"eose\", () => {\n s.unsub();\n clearTimeout(timeout);\n resolve(events);\n });\n s.on(\"event\", (event) => {\n events.push(event);\n });\n }),\n get: (filter, opts) => new Promise((resolve) => {\n let s = sub([filter], opts);\n let timeout = setTimeout(() => {\n s.unsub();\n resolve(null);\n }, getTimeout);\n s.on(\"event\", (event) => {\n s.unsub();\n clearTimeout(timeout);\n resolve(event);\n });\n }),\n count: (filters) => new Promise((resolve) => {\n let s = sub(filters, { ...sub, verb: \"COUNT\" });\n let timeout = setTimeout(() => {\n s.unsub();\n resolve(null);\n }, countTimeout);\n s.on(\"count\", (event) => {\n s.unsub();\n clearTimeout(timeout);\n resolve(event);\n });\n }),\n publish(event) {\n return _publishEvent(event, \"EVENT\");\n },\n auth(event) {\n return _publishEvent(event, \"AUTH\");\n },\n connect,\n close() {\n listeners = newListeners();\n subListeners = {};\n pubListeners = {};\n if (ws.readyState === WebSocket.OPEN) {\n ws?.close();\n }\n },\n get status() {\n return ws?.readyState ?? 3;\n }\n };\n}\n\n// pool.ts\nvar SimplePool = class {\n _conn;\n _seenOn = {};\n eoseSubTimeout;\n getTimeout;\n constructor(options = {}) {\n this._conn = {};\n this.eoseSubTimeout = options.eoseSubTimeout || 3400;\n this.getTimeout = options.getTimeout || 3400;\n }\n close(relays) {\n relays.forEach((url) => {\n let relay = this._conn[normalizeURL(url)];\n if (relay)\n relay.close();\n });\n }\n async ensureRelay(url) {\n const nm = normalizeURL(url);\n if (!this._conn[nm]) {\n this._conn[nm] = relayInit(nm, {\n getTimeout: this.getTimeout * 0.9,\n listTimeout: this.getTimeout * 0.9\n });\n }\n const relay = this._conn[nm];\n await relay.connect();\n return relay;\n }\n sub(relays, filters, opts) {\n let _knownIds = /* @__PURE__ */ new Set();\n let modifiedOpts = { ...opts || {} };\n modifiedOpts.alreadyHaveEvent = (id, url) => {\n if (opts?.alreadyHaveEvent?.(id, url)) {\n return true;\n }\n let set = this._seenOn[id] || /* @__PURE__ */ new Set();\n set.add(url);\n this._seenOn[id] = set;\n return _knownIds.has(id);\n };\n let subs = [];\n let eventListeners = /* @__PURE__ */ new Set();\n let eoseListeners = /* @__PURE__ */ new Set();\n let eosesMissing = relays.length;\n let eoseSent = false;\n let eoseTimeout = setTimeout(() => {\n eoseSent = true;\n for (let cb of eoseListeners.values())\n cb();\n }, this.eoseSubTimeout);\n relays.forEach(async (relay) => {\n let r;\n try {\n r = await this.ensureRelay(relay);\n } catch (err) {\n handleEose();\n return;\n }\n if (!r)\n return;\n let s = r.sub(filters, modifiedOpts);\n s.on(\"event\", (event) => {\n _knownIds.add(event.id);\n for (let cb of eventListeners.values())\n cb(event);\n });\n s.on(\"eose\", () => {\n if (eoseSent)\n return;\n handleEose();\n });\n subs.push(s);\n function handleEose() {\n eosesMissing--;\n if (eosesMissing === 0) {\n clearTimeout(eoseTimeout);\n for (let cb of eoseListeners.values())\n cb();\n }\n }\n });\n let greaterSub = {\n sub(filters2, opts2) {\n subs.forEach((sub) => sub.sub(filters2, opts2));\n return greaterSub;\n },\n unsub() {\n subs.forEach((sub) => sub.unsub());\n },\n on(type, cb) {\n if (type === \"event\") {\n eventListeners.add(cb);\n } else if (type === \"eose\") {\n eoseListeners.add(cb);\n }\n },\n off(type, cb) {\n if (type === \"event\") {\n eventListeners.delete(cb);\n } else if (type === \"eose\")\n eoseListeners.delete(cb);\n }\n };\n return greaterSub;\n }\n get(relays, filter, opts) {\n return new Promise((resolve) => {\n let sub = this.sub(relays, [filter], opts);\n let timeout = setTimeout(() => {\n sub.unsub();\n resolve(null);\n }, this.getTimeout);\n sub.on(\"event\", (event) => {\n resolve(event);\n clearTimeout(timeout);\n sub.unsub();\n });\n });\n }\n list(relays, filters, opts) {\n return new Promise((resolve) => {\n let events = [];\n let sub = this.sub(relays, filters, opts);\n sub.on(\"event\", (event) => {\n events.push(event);\n });\n sub.on(\"eose\", () => {\n sub.unsub();\n resolve(events);\n });\n });\n }\n publish(relays, event) {\n const pubPromises = relays.map(async (relay) => {\n let r;\n try {\n r = await this.ensureRelay(relay);\n return r.publish(event);\n } catch (_) {\n return { on() {\n }, off() {\n } };\n }\n });\n const callbackMap = /* @__PURE__ */ new Map();\n return {\n on(type, cb) {\n relays.forEach(async (relay, i) => {\n let pub = await pubPromises[i];\n let callback = () => cb(relay);\n callbackMap.set(cb, callback);\n pub.on(type, callback);\n });\n },\n off(type, cb) {\n relays.forEach(async (_, i) => {\n let callback = callbackMap.get(cb);\n if (callback) {\n let pub = await pubPromises[i];\n pub.off(type, callback);\n }\n });\n }\n };\n }\n seenOn(id) {\n return Array.from(this._seenOn[id]?.values?.() || []);\n }\n};\n\n// nip19.ts\nvar nip19_exports = {};\n__export(nip19_exports, {\n BECH32_REGEX: () => BECH32_REGEX,\n decode: () => decode,\n naddrEncode: () => naddrEncode,\n neventEncode: () => neventEncode,\n noteEncode: () => noteEncode,\n nprofileEncode: () => nprofileEncode,\n npubEncode: () => npubEncode,\n nrelayEncode: () => nrelayEncode,\n nsecEncode: () => nsecEncode\n});\nimport { bytesToHex as bytesToHex3, concatBytes, hexToBytes } from \"@noble/hashes/utils\";\nimport { bech32 } from \"@scure/base\";\nvar Bech32MaxSize = 5e3;\nvar BECH32_REGEX = /[\\x21-\\x7E]{1,83}1[023456789acdefghjklmnpqrstuvwxyz]{6,}/;\nfunction decode(nip19) {\n let { prefix, words } = bech32.decode(nip19, Bech32MaxSize);\n let data = new Uint8Array(bech32.fromWords(words));\n switch (prefix) {\n case \"nprofile\": {\n let tlv = parseTLV(data);\n if (!tlv[0]?.[0])\n throw new Error(\"missing TLV 0 for nprofile\");\n if (tlv[0][0].length !== 32)\n throw new Error(\"TLV 0 should be 32 bytes\");\n return {\n type: \"nprofile\",\n data: {\n pubkey: bytesToHex3(tlv[0][0]),\n relays: tlv[1] ? tlv[1].map((d) => utf8Decoder.decode(d)) : []\n }\n };\n }\n case \"nevent\": {\n let tlv = parseTLV(data);\n if (!tlv[0]?.[0])\n throw new Error(\"missing TLV 0 for nevent\");\n if (tlv[0][0].length !== 32)\n throw new Error(\"TLV 0 should be 32 bytes\");\n if (tlv[2] && tlv[2][0].length !== 32)\n throw new Error(\"TLV 2 should be 32 bytes\");\n return {\n type: \"nevent\",\n data: {\n id: bytesToHex3(tlv[0][0]),\n relays: tlv[1] ? tlv[1].map((d) => utf8Decoder.decode(d)) : [],\n author: tlv[2]?.[0] ? bytesToHex3(tlv[2][0]) : void 0\n }\n };\n }\n case \"naddr\": {\n let tlv = parseTLV(data);\n if (!tlv[0]?.[0])\n throw new Error(\"missing TLV 0 for naddr\");\n if (!tlv[2]?.[0])\n throw new Error(\"missing TLV 2 for naddr\");\n if (tlv[2][0].length !== 32)\n throw new Error(\"TLV 2 should be 32 bytes\");\n if (!tlv[3]?.[0])\n throw new Error(\"missing TLV 3 for naddr\");\n if (tlv[3][0].length !== 4)\n throw new Error(\"TLV 3 should be 4 bytes\");\n return {\n type: \"naddr\",\n data: {\n identifier: utf8Decoder.decode(tlv[0][0]),\n pubkey: bytesToHex3(tlv[2][0]),\n kind: parseInt(bytesToHex3(tlv[3][0]), 16),\n relays: tlv[1] ? tlv[1].map((d) => utf8Decoder.decode(d)) : []\n }\n };\n }\n case \"nrelay\": {\n let tlv = parseTLV(data);\n if (!tlv[0]?.[0])\n throw new Error(\"missing TLV 0 for nrelay\");\n return {\n type: \"nrelay\",\n data: utf8Decoder.decode(tlv[0][0])\n };\n }\n case \"nsec\":\n case \"npub\":\n case \"note\":\n return { type: prefix, data: bytesToHex3(data) };\n default:\n throw new Error(`unknown prefix ${prefix}`);\n }\n}\nfunction parseTLV(data) {\n let result = {};\n let rest = data;\n while (rest.length > 0) {\n let t = rest[0];\n let l = rest[1];\n let v = rest.slice(2, 2 + l);\n rest = rest.slice(2 + l);\n if (v.length < l)\n continue;\n result[t] = result[t] || [];\n result[t].push(v);\n }\n return result;\n}\nfunction nsecEncode(hex) {\n return encodeBytes(\"nsec\", hex);\n}\nfunction npubEncode(hex) {\n return encodeBytes(\"npub\", hex);\n}\nfunction noteEncode(hex) {\n return encodeBytes(\"note\", hex);\n}\nfunction encodeBytes(prefix, hex) {\n let data = hexToBytes(hex);\n let words = bech32.toWords(data);\n return bech32.encode(prefix, words, Bech32MaxSize);\n}\nfunction nprofileEncode(profile) {\n let data = encodeTLV({\n 0: [hexToBytes(profile.pubkey)],\n 1: (profile.relays || []).map((url) => utf8Encoder.encode(url))\n });\n let words = bech32.toWords(data);\n return bech32.encode(\"nprofile\", words, Bech32MaxSize);\n}\nfunction neventEncode(event) {\n let data = encodeTLV({\n 0: [hexToBytes(event.id)],\n 1: (event.relays || []).map((url) => utf8Encoder.encode(url)),\n 2: event.author ? [hexToBytes(event.author)] : []\n });\n let words = bech32.toWords(data);\n return bech32.encode(\"nevent\", words, Bech32MaxSize);\n}\nfunction naddrEncode(addr) {\n let kind = new ArrayBuffer(4);\n new DataView(kind).setUint32(0, addr.kind, false);\n let data = encodeTLV({\n 0: [utf8Encoder.encode(addr.identifier)],\n 1: (addr.relays || []).map((url) => utf8Encoder.encode(url)),\n 2: [hexToBytes(addr.pubkey)],\n 3: [new Uint8Array(kind)]\n });\n let words = bech32.toWords(data);\n return bech32.encode(\"naddr\", words, Bech32MaxSize);\n}\nfunction nrelayEncode(url) {\n let data = encodeTLV({\n 0: [utf8Encoder.encode(url)]\n });\n let words = bech32.toWords(data);\n return bech32.encode(\"nrelay\", words, Bech32MaxSize);\n}\nfunction encodeTLV(tlv) {\n let entries = [];\n Object.entries(tlv).forEach(([t, vs]) => {\n vs.forEach((v) => {\n let entry = new Uint8Array(v.length + 2);\n entry.set([parseInt(t)], 0);\n entry.set([v.length], 1);\n entry.set(v, 2);\n entries.push(entry);\n });\n });\n return concatBytes(...entries);\n}\n\n// references.ts\nvar mentionRegex = /\\bnostr:((note|npub|naddr|nevent|nprofile)1\\w+)\\b|#\\[(\\d+)\\]/g;\nfunction parseReferences(evt) {\n let references = [];\n for (let ref of evt.content.matchAll(mentionRegex)) {\n if (ref[2]) {\n try {\n let { type, data } = decode(ref[1]);\n switch (type) {\n case \"npub\": {\n references.push({\n text: ref[0],\n profile: { pubkey: data, relays: [] }\n });\n break;\n }\n case \"nprofile\": {\n references.push({\n text: ref[0],\n profile: data\n });\n break;\n }\n case \"note\": {\n references.push({\n text: ref[0],\n event: { id: data, relays: [] }\n });\n break;\n }\n case \"nevent\": {\n references.push({\n text: ref[0],\n event: data\n });\n break;\n }\n case \"naddr\": {\n references.push({\n text: ref[0],\n address: data\n });\n break;\n }\n }\n } catch (err) {\n }\n } else if (ref[3]) {\n let idx = parseInt(ref[3], 10);\n let tag = evt.tags[idx];\n if (!tag)\n continue;\n switch (tag[0]) {\n case \"p\": {\n references.push({\n text: ref[0],\n profile: { pubkey: tag[1], relays: tag[2] ? [tag[2]] : [] }\n });\n break;\n }\n case \"e\": {\n references.push({\n text: ref[0],\n event: { id: tag[1], relays: tag[2] ? [tag[2]] : [] }\n });\n break;\n }\n case \"a\": {\n try {\n let [kind, pubkey, identifier] = tag[1].split(\":\");\n references.push({\n text: ref[0],\n address: {\n identifier,\n pubkey,\n kind: parseInt(kind, 10),\n relays: tag[2] ? [tag[2]] : []\n }\n });\n } catch (err) {\n }\n break;\n }\n }\n }\n }\n return references;\n}\n\n// nip04.ts\nvar nip04_exports = {};\n__export(nip04_exports, {\n decrypt: () => decrypt,\n encrypt: () => encrypt\n});\nimport { randomBytes } from \"@noble/hashes/utils\";\nimport { secp256k1 } from \"@noble/curves/secp256k1\";\nimport { base64 } from \"@scure/base\";\nif (typeof crypto !== \"undefined\" && !crypto.subtle && crypto.webcrypto) {\n crypto.subtle = crypto.webcrypto.subtle;\n}\nasync function encrypt(privkey, pubkey, text) {\n const key = secp256k1.getSharedSecret(privkey, \"02\" + pubkey);\n const normalizedKey = getNormalizedX(key);\n let iv = Uint8Array.from(randomBytes(16));\n let plaintext = utf8Encoder.encode(text);\n let cryptoKey = await crypto.subtle.importKey(\n \"raw\",\n normalizedKey,\n { name: \"AES-CBC\" },\n false,\n [\"encrypt\"]\n );\n let ciphertext = await crypto.subtle.encrypt(\n { name: \"AES-CBC\", iv },\n cryptoKey,\n plaintext\n );\n let ctb64 = base64.encode(new Uint8Array(ciphertext));\n let ivb64 = base64.encode(new Uint8Array(iv.buffer));\n return `${ctb64}?iv=${ivb64}`;\n}\nasync function decrypt(privkey, pubkey, data) {\n let [ctb64, ivb64] = data.split(\"?iv=\");\n let key = secp256k1.getSharedSecret(privkey, \"02\" + pubkey);\n let normalizedKey = getNormalizedX(key);\n let cryptoKey = await crypto.subtle.importKey(\n \"raw\",\n normalizedKey,\n { name: \"AES-CBC\" },\n false,\n [\"decrypt\"]\n );\n let ciphertext = base64.decode(ctb64);\n let iv = base64.decode(ivb64);\n let plaintext = await crypto.subtle.decrypt(\n { name: \"AES-CBC\", iv },\n cryptoKey,\n ciphertext\n );\n let text = utf8Decoder.decode(plaintext);\n return text;\n}\nfunction getNormalizedX(key) {\n return key.slice(1, 33);\n}\n\n// nip05.ts\nvar nip05_exports = {};\n__export(nip05_exports, {\n NIP05_REGEX: () => NIP05_REGEX,\n queryProfile: () => queryProfile,\n searchDomain: () => searchDomain,\n useFetchImplementation: () => useFetchImplementation\n});\nvar NIP05_REGEX = /^(?:([\\w.+-]+)@)?([\\w.-]+)$/;\nvar _fetch;\ntry {\n _fetch = fetch;\n} catch {\n}\nfunction useFetchImplementation(fetchImplementation) {\n _fetch = fetchImplementation;\n}\nasync function searchDomain(domain, query = \"\") {\n try {\n let res = await (await _fetch(`https://${domain}/.well-known/nostr.json?name=${query}`)).json();\n return res.names;\n } catch (_) {\n return {};\n }\n}\nasync function queryProfile(fullname) {\n const match = fullname.match(NIP05_REGEX);\n if (!match)\n return null;\n const [_, name = \"_\", domain] = match;\n try {\n const res = await _fetch(`https://${domain}/.well-known/nostr.json?name=${name}`);\n const { names, relays } = parseNIP05Result(await res.json());\n const pubkey = names[name];\n return pubkey ? { pubkey, relays: relays?.[pubkey] } : null;\n } catch (_e) {\n return null;\n }\n}\nfunction parseNIP05Result(json) {\n const result = {\n names: {}\n };\n for (const [name, pubkey] of Object.entries(json.names)) {\n if (typeof name === \"string\" && typeof pubkey === \"string\") {\n result.names[name] = pubkey;\n }\n }\n if (json.relays) {\n result.relays = {};\n for (const [pubkey, relays] of Object.entries(json.relays)) {\n if (typeof pubkey === \"string\" && Array.isArray(relays)) {\n result.relays[pubkey] = relays.filter((relay) => typeof relay === \"string\");\n }\n }\n }\n return result;\n}\n\n// nip06.ts\nvar nip06_exports = {};\n__export(nip06_exports, {\n generateSeedWords: () => generateSeedWords,\n privateKeyFromSeedWords: () => privateKeyFromSeedWords,\n validateWords: () => validateWords\n});\nimport { bytesToHex as bytesToHex4 } from \"@noble/hashes/utils\";\nimport { wordlist } from \"@scure/bip39/wordlists/english.js\";\nimport {\n generateMnemonic,\n mnemonicToSeedSync,\n validateMnemonic\n} from \"@scure/bip39\";\nimport { HDKey } from \"@scure/bip32\";\nfunction privateKeyFromSeedWords(mnemonic, passphrase) {\n let root = HDKey.fromMasterSeed(mnemonicToSeedSync(mnemonic, passphrase));\n let privateKey = root.derive(`m/44'/1237'/0'/0/0`).privateKey;\n if (!privateKey)\n throw new Error(\"could not derive private key\");\n return bytesToHex4(privateKey);\n}\nfunction generateSeedWords() {\n return generateMnemonic(wordlist);\n}\nfunction validateWords(words) {\n return validateMnemonic(words, wordlist);\n}\n\n// nip10.ts\nvar nip10_exports = {};\n__export(nip10_exports, {\n parse: () => parse\n});\nfunction parse(event) {\n const result = {\n reply: void 0,\n root: void 0,\n mentions: [],\n profiles: []\n };\n const eTags = [];\n for (const tag of event.tags) {\n if (tag[0] === \"e\" && tag[1]) {\n eTags.push(tag);\n }\n if (tag[0] === \"p\" && tag[1]) {\n result.profiles.push({\n pubkey: tag[1],\n relays: tag[2] ? [tag[2]] : []\n });\n }\n }\n for (let eTagIndex = 0; eTagIndex < eTags.length; eTagIndex++) {\n const eTag = eTags[eTagIndex];\n const [_, eTagEventId, eTagRelayUrl, eTagMarker] = eTag;\n const eventPointer = {\n id: eTagEventId,\n relays: eTagRelayUrl ? [eTagRelayUrl] : []\n };\n const isFirstETag = eTagIndex === 0;\n const isLastETag = eTagIndex === eTags.length - 1;\n if (eTagMarker === \"root\") {\n result.root = eventPointer;\n continue;\n }\n if (eTagMarker === \"reply\") {\n result.reply = eventPointer;\n continue;\n }\n if (eTagMarker === \"mention\") {\n result.mentions.push(eventPointer);\n continue;\n }\n if (isFirstETag) {\n result.root = eventPointer;\n continue;\n }\n if (isLastETag) {\n result.reply = eventPointer;\n continue;\n }\n result.mentions.push(eventPointer);\n }\n return result;\n}\n\n// nip13.ts\nvar nip13_exports = {};\n__export(nip13_exports, {\n getPow: () => getPow\n});\nimport { hexToBytes as hexToBytes2 } from \"@noble/hashes/utils\";\nfunction getPow(id) {\n return getLeadingZeroBits(hexToBytes2(id));\n}\nfunction getLeadingZeroBits(hash) {\n let total, i, bits;\n for (i = 0, total = 0; i < hash.length; i++) {\n bits = msb(hash[i]);\n total += bits;\n if (bits !== 8) {\n break;\n }\n }\n return total;\n}\nfunction msb(b) {\n let n = 0;\n if (b === 0) {\n return 8;\n }\n while (b >>= 1) {\n n++;\n }\n return 7 - n;\n}\n\n// nip18.ts\nvar nip18_exports = {};\n__export(nip18_exports, {\n finishRepostEvent: () => finishRepostEvent,\n getRepostedEvent: () => getRepostedEvent,\n getRepostedEventPointer: () => getRepostedEventPointer\n});\nfunction finishRepostEvent(t, reposted, relayUrl, privateKey) {\n return finishEvent({\n kind: 6 /* Repost */,\n tags: [\n ...t.tags ?? [],\n [\"e\", reposted.id, relayUrl],\n [\"p\", reposted.pubkey]\n ],\n content: t.content === \"\" ? \"\" : JSON.stringify(reposted),\n created_at: t.created_at\n }, privateKey);\n}\nfunction getRepostedEventPointer(event) {\n if (event.kind !== 6 /* Repost */) {\n return void 0;\n }\n let lastETag;\n let lastPTag;\n for (let i = event.tags.length - 1; i >= 0 && (lastETag === void 0 || lastPTag === void 0); i--) {\n const tag = event.tags[i];\n if (tag.length >= 2) {\n if (tag[0] === \"e\" && lastETag === void 0) {\n lastETag = tag;\n } else if (tag[0] === \"p\" && lastPTag === void 0) {\n lastPTag = tag;\n }\n }\n }\n if (lastETag === void 0) {\n return void 0;\n }\n return {\n id: lastETag[1],\n relays: [lastETag[2], lastPTag?.[2]].filter((x) => typeof x === \"string\"),\n author: lastPTag?.[1]\n };\n}\nfunction getRepostedEvent(event, { skipVerification } = {}) {\n const pointer = getRepostedEventPointer(event);\n if (pointer === void 0 || event.content === \"\") {\n return void 0;\n }\n let repostedEvent;\n try {\n repostedEvent = JSON.parse(event.content);\n } catch (error) {\n return void 0;\n }\n if (repostedEvent.id !== pointer.id) {\n return void 0;\n }\n if (!skipVerification && !verifySignature(repostedEvent)) {\n return void 0;\n }\n return repostedEvent;\n}\n\n// nip21.ts\nvar nip21_exports = {};\n__export(nip21_exports, {\n NOSTR_URI_REGEX: () => NOSTR_URI_REGEX,\n parse: () => parse2,\n test: () => test\n});\nvar NOSTR_URI_REGEX = new RegExp(`nostr:(${BECH32_REGEX.source})`);\nfunction test(value) {\n return typeof value === \"string\" && new RegExp(`^${NOSTR_URI_REGEX.source}$`).test(value);\n}\nfunction parse2(uri) {\n const match = uri.match(new RegExp(`^${NOSTR_URI_REGEX.source}$`));\n if (!match)\n throw new Error(`Invalid Nostr URI: ${uri}`);\n return {\n uri: match[0],\n value: match[1],\n decoded: decode(match[1])\n };\n}\n\n// nip25.ts\nvar nip25_exports = {};\n__export(nip25_exports, {\n finishReactionEvent: () => finishReactionEvent,\n getReactedEventPointer: () => getReactedEventPointer\n});\nfunction finishReactionEvent(t, reacted, privateKey) {\n const inheritedTags = reacted.tags.filter(\n (tag) => tag.length >= 2 && (tag[0] === \"e\" || tag[0] === \"p\")\n );\n return finishEvent({\n ...t,\n kind: 7 /* Reaction */,\n tags: [\n ...t.tags ?? [],\n ...inheritedTags,\n [\"e\", reacted.id],\n [\"p\", reacted.pubkey]\n ],\n content: t.content ?? \"+\"\n }, privateKey);\n}\nfunction getReactedEventPointer(event) {\n if (event.kind !== 7 /* Reaction */) {\n return void 0;\n }\n let lastETag;\n let lastPTag;\n for (let i = event.tags.length - 1; i >= 0 && (lastETag === void 0 || lastPTag === void 0); i--) {\n const tag = event.tags[i];\n if (tag.length >= 2) {\n if (tag[0] === \"e\" && lastETag === void 0) {\n lastETag = tag;\n } else if (tag[0] === \"p\" && lastPTag === void 0) {\n lastPTag = tag;\n }\n }\n }\n if (lastETag === void 0 || lastPTag === void 0) {\n return void 0;\n }\n return {\n id: lastETag[1],\n relays: [lastETag[2], lastPTag[2]].filter((x) => x !== void 0),\n author: lastPTag[1]\n };\n}\n\n// nip26.ts\nvar nip26_exports = {};\n__export(nip26_exports, {\n createDelegation: () => createDelegation,\n getDelegator: () => getDelegator\n});\nimport { schnorr as schnorr3 } from \"@noble/curves/secp256k1\";\nimport { bytesToHex as bytesToHex5 } from \"@noble/hashes/utils\";\nimport { sha256 as sha2562 } from \"@noble/hashes/sha256\";\nfunction createDelegation(privateKey, parameters) {\n let conditions = [];\n if ((parameters.kind || -1) >= 0)\n conditions.push(`kind=${parameters.kind}`);\n if (parameters.until)\n conditions.push(`created_at<${parameters.until}`);\n if (parameters.since)\n conditions.push(`created_at>${parameters.since}`);\n let cond = conditions.join(\"&\");\n if (cond === \"\")\n throw new Error(\"refusing to create a delegation without any conditions\");\n let sighash = sha2562(\n utf8Encoder.encode(`nostr:delegation:${parameters.pubkey}:${cond}`)\n );\n let sig = bytesToHex5(\n schnorr3.sign(sighash, privateKey)\n );\n return {\n from: getPublicKey(privateKey),\n to: parameters.pubkey,\n cond,\n sig\n };\n}\nfunction getDelegator(event) {\n let tag = event.tags.find((tag2) => tag2[0] === \"delegation\" && tag2.length >= 4);\n if (!tag)\n return null;\n let pubkey = tag[1];\n let cond = tag[2];\n let sig = tag[3];\n let conditions = cond.split(\"&\");\n for (let i = 0; i < conditions.length; i++) {\n let [key, operator, value] = conditions[i].split(/\\b/);\n if (key === \"kind\" && operator === \"=\" && event.kind === parseInt(value))\n continue;\n else if (key === \"created_at\" && operator === \"<\" && event.created_at < parseInt(value))\n continue;\n else if (key === \"created_at\" && operator === \">\" && event.created_at > parseInt(value))\n continue;\n else\n return null;\n }\n let sighash = sha2562(\n utf8Encoder.encode(`nostr:delegation:${event.pubkey}:${cond}`)\n );\n if (!schnorr3.verify(sig, sighash, pubkey))\n return null;\n return pubkey;\n}\n\n// nip27.ts\nvar nip27_exports = {};\n__export(nip27_exports, {\n matchAll: () => matchAll,\n regex: () => regex,\n replaceAll: () => replaceAll\n});\nvar regex = () => new RegExp(`\\\\b${NOSTR_URI_REGEX.source}\\\\b`, \"g\");\nfunction* matchAll(content) {\n const matches = content.matchAll(regex());\n for (const match of matches) {\n const [uri, value] = match;\n yield {\n uri,\n value,\n decoded: decode(value),\n start: match.index,\n end: match.index + uri.length\n };\n }\n}\nfunction replaceAll(content, replacer) {\n return content.replaceAll(regex(), (uri, value) => {\n return replacer({\n uri,\n value,\n decoded: decode(value)\n });\n });\n}\n\n// nip39.ts\nvar nip39_exports = {};\n__export(nip39_exports, {\n useFetchImplementation: () => useFetchImplementation2,\n validateGithub: () => validateGithub\n});\nvar _fetch2;\ntry {\n _fetch2 = fetch;\n} catch {\n}\nfunction useFetchImplementation2(fetchImplementation) {\n _fetch2 = fetchImplementation;\n}\nasync function validateGithub(pubkey, username, proof) {\n try {\n let res = await (await _fetch2(`https://gist.github.com/${username}/${proof}/raw`)).text();\n return res === `Verifying that I control the following Nostr public key: ${pubkey}`;\n } catch (_) {\n return false;\n }\n}\n\n// nip42.ts\nvar nip42_exports = {};\n__export(nip42_exports, {\n authenticate: () => authenticate\n});\nvar authenticate = async ({\n challenge,\n relay,\n sign\n}) => {\n const e = {\n kind: 22242 /* ClientAuth */,\n created_at: Math.floor(Date.now() / 1e3),\n tags: [\n [\"relay\", relay.url],\n [\"challenge\", challenge]\n ],\n content: \"\"\n };\n const pub = relay.auth(await sign(e));\n return new Promise((resolve, reject) => {\n pub.on(\"ok\", function ok() {\n pub.off(\"ok\", ok);\n resolve();\n });\n pub.on(\"failed\", function fail(reason) {\n pub.off(\"failed\", fail);\n reject(reason);\n });\n });\n};\n\n// nip57.ts\nvar nip57_exports = {};\n__export(nip57_exports, {\n getZapEndpoint: () => getZapEndpoint,\n makeZapReceipt: () => makeZapReceipt,\n makeZapRequest: () => makeZapRequest,\n useFetchImplementation: () => useFetchImplementation3,\n validateZapRequest: () => validateZapRequest\n});\nimport { bech32 as bech322 } from \"@scure/base\";\nvar _fetch3;\ntry {\n _fetch3 = fetch;\n} catch {\n}\nfunction useFetchImplementation3(fetchImplementation) {\n _fetch3 = fetchImplementation;\n}\nasync function getZapEndpoint(metadata) {\n try {\n let lnurl = \"\";\n let { lud06, lud16 } = JSON.parse(metadata.content);\n if (lud06) {\n let { words } = bech322.decode(lud06, 1e3);\n let data = bech322.fromWords(words);\n lnurl = utf8Decoder.decode(data);\n } else if (lud16) {\n let [name, domain] = lud16.split(\"@\");\n lnurl = `https://${domain}/.well-known/lnurlp/${name}`;\n } else {\n return null;\n }\n let res = await _fetch3(lnurl);\n let body = await res.json();\n if (body.allowsNostr && body.nostrPubkey) {\n return body.callback;\n }\n } catch (err) {\n }\n return null;\n}\nfunction makeZapRequest({\n profile,\n event,\n amount,\n relays,\n comment = \"\"\n}) {\n if (!amount)\n throw new Error(\"amount not given\");\n if (!profile)\n throw new Error(\"profile not given\");\n let zr = {\n kind: 9734,\n created_at: Math.round(Date.now() / 1e3),\n content: comment,\n tags: [\n [\"p\", profile],\n [\"amount\", amount.toString()],\n [\"relays\", ...relays]\n ]\n };\n if (event) {\n zr.tags.push([\"e\", event]);\n }\n return zr;\n}\nfunction validateZapRequest(zapRequestString) {\n let zapRequest;\n try {\n zapRequest = JSON.parse(zapRequestString);\n } catch (err) {\n return \"Invalid zap request JSON.\";\n }\n if (!validateEvent(zapRequest))\n return \"Zap request is not a valid Nostr event.\";\n if (!verifySignature(zapRequest))\n return \"Invalid signature on zap request.\";\n let p = zapRequest.tags.find(([t, v]) => t === \"p\" && v);\n if (!p)\n return \"Zap request doesn't have a 'p' tag.\";\n if (!p[1].match(/^[a-f0-9]{64}$/))\n return \"Zap request 'p' tag is not valid hex.\";\n let e = zapRequest.tags.find(([t, v]) => t === \"e\" && v);\n if (e && !e[1].match(/^[a-f0-9]{64}$/))\n return \"Zap request 'e' tag is not valid hex.\";\n let relays = zapRequest.tags.find(([t, v]) => t === \"relays\" && v);\n if (!relays)\n return \"Zap request doesn't have a 'relays' tag.\";\n return null;\n}\nfunction makeZapReceipt({\n zapRequest,\n preimage,\n bolt11,\n paidAt\n}) {\n let zr = JSON.parse(zapRequest);\n let tagsFromZapRequest = zr.tags.filter(\n ([t]) => t === \"e\" || t === \"p\" || t === \"a\"\n );\n let zap = {\n kind: 9735,\n created_at: Math.round(paidAt.getTime() / 1e3),\n content: \"\",\n tags: [\n ...tagsFromZapRequest,\n [\"bolt11\", bolt11],\n [\"description\", zapRequest]\n ]\n };\n if (preimage) {\n zap.tags.push([\"preimage\", preimage]);\n }\n return zap;\n}\nexport {\n Kind,\n SimplePool,\n finishEvent,\n fakejson_exports as fj,\n generatePrivateKey,\n getBlankEvent,\n getEventHash,\n getPublicKey,\n getSignature,\n matchFilter,\n matchFilters,\n nip04_exports as nip04,\n nip05_exports as nip05,\n nip06_exports as nip06,\n nip10_exports as nip10,\n nip13_exports as nip13,\n nip18_exports as nip18,\n nip19_exports as nip19,\n nip21_exports as nip21,\n nip25_exports as nip25,\n nip26_exports as nip26,\n nip27_exports as nip27,\n nip39_exports as nip39,\n nip42_exports as nip42,\n nip57_exports as nip57,\n parseReferences,\n relayInit,\n serializeEvent,\n signEvent,\n utils_exports as utils,\n validateEvent,\n verifySignature\n};\n","'use strict';\n\nmodule.exports = {\n BINARY_TYPES: ['nodebuffer', 'arraybuffer', 'fragments'],\n EMPTY_BUFFER: Buffer.alloc(0),\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n kListener: Symbol('kListener'),\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n NOOP: () => {}\n};\n","export default '/Users/pablofernandez/src/pablo/nostri.chat/node_modules/bufferutil'","if (typeof process.addon === 'function') { // if the platform supports native resolving prefer that\n module.exports = process.addon.bind(process)\n} else { // else use the runtime version here\n module.exports = require('./node-gyp-build.js')\n}\n","var fs = require('fs')\nvar path = require('path')\nvar os = require('os')\n\n// Workaround to fix webpack's build warnings: 'the request of a dependency is an expression'\nvar runtimeRequire = typeof __webpack_require__ === 'function' ? __non_webpack_require__ : require // eslint-disable-line\n\nvar vars = (process.config && process.config.variables) || {}\nvar prebuildsOnly = !!process.env.PREBUILDS_ONLY\nvar abi = process.versions.modules // TODO: support old node where this is undef\nvar runtime = isElectron() ? 'electron' : (isNwjs() ? 'node-webkit' : 'node')\n\nvar arch = process.env.npm_config_arch || os.arch()\nvar platform = process.env.npm_config_platform || os.platform()\nvar libc = process.env.LIBC || (isAlpine(platform) ? 'musl' : 'glibc')\nvar armv = process.env.ARM_VERSION || (arch === 'arm64' ? '8' : vars.arm_version) || ''\nvar uv = (process.versions.uv || '').split('.')[0]\n\nmodule.exports = load\n\nfunction load (dir) {\n return runtimeRequire(load.resolve(dir))\n}\n\nload.resolve = load.path = function (dir) {\n dir = path.resolve(dir || '.')\n\n try {\n var name = runtimeRequire(path.join(dir, 'package.json')).name.toUpperCase().replace(/-/g, '_')\n if (process.env[name + '_PREBUILD']) dir = process.env[name + '_PREBUILD']\n } catch (err) {}\n\n if (!prebuildsOnly) {\n var release = getFirst(path.join(dir, 'build/Release'), matchBuild)\n if (release) return release\n\n var debug = getFirst(path.join(dir, 'build/Debug'), matchBuild)\n if (debug) return debug\n }\n\n var prebuild = resolve(dir)\n if (prebuild) return prebuild\n\n var nearby = resolve(path.dirname(process.execPath))\n if (nearby) return nearby\n\n var target = [\n 'platform=' + platform,\n 'arch=' + arch,\n 'runtime=' + runtime,\n 'abi=' + abi,\n 'uv=' + uv,\n armv ? 'armv=' + armv : '',\n 'libc=' + libc,\n 'node=' + process.versions.node,\n process.versions.electron ? 'electron=' + process.versions.electron : '',\n typeof __webpack_require__ === 'function' ? 'webpack=true' : '' // eslint-disable-line\n ].filter(Boolean).join(' ')\n\n throw new Error('No native build was found for ' + target + '\\n loaded from: ' + dir + '\\n')\n\n function resolve (dir) {\n // Find matching \"prebuilds/-\" directory\n var tuples = readdirSync(path.join(dir, 'prebuilds')).map(parseTuple)\n var tuple = tuples.filter(matchTuple(platform, arch)).sort(compareTuples)[0]\n if (!tuple) return\n\n // Find most specific flavor first\n var prebuilds = path.join(dir, 'prebuilds', tuple.name)\n var parsed = readdirSync(prebuilds).map(parseTags)\n var candidates = parsed.filter(matchTags(runtime, abi))\n var winner = candidates.sort(compareTags(runtime))[0]\n if (winner) return path.join(prebuilds, winner.file)\n }\n}\n\nfunction readdirSync (dir) {\n try {\n return fs.readdirSync(dir)\n } catch (err) {\n return []\n }\n}\n\nfunction getFirst (dir, filter) {\n var files = readdirSync(dir).filter(filter)\n return files[0] && path.join(dir, files[0])\n}\n\nfunction matchBuild (name) {\n return /\\.node$/.test(name)\n}\n\nfunction parseTuple (name) {\n // Example: darwin-x64+arm64\n var arr = name.split('-')\n if (arr.length !== 2) return\n\n var platform = arr[0]\n var architectures = arr[1].split('+')\n\n if (!platform) return\n if (!architectures.length) return\n if (!architectures.every(Boolean)) return\n\n return { name, platform, architectures }\n}\n\nfunction matchTuple (platform, arch) {\n return function (tuple) {\n if (tuple == null) return false\n if (tuple.platform !== platform) return false\n return tuple.architectures.includes(arch)\n }\n}\n\nfunction compareTuples (a, b) {\n // Prefer single-arch prebuilds over multi-arch\n return a.architectures.length - b.architectures.length\n}\n\nfunction parseTags (file) {\n var arr = file.split('.')\n var extension = arr.pop()\n var tags = { file: file, specificity: 0 }\n\n if (extension !== 'node') return\n\n for (var i = 0; i < arr.length; i++) {\n var tag = arr[i]\n\n if (tag === 'node' || tag === 'electron' || tag === 'node-webkit') {\n tags.runtime = tag\n } else if (tag === 'napi') {\n tags.napi = true\n } else if (tag.slice(0, 3) === 'abi') {\n tags.abi = tag.slice(3)\n } else if (tag.slice(0, 2) === 'uv') {\n tags.uv = tag.slice(2)\n } else if (tag.slice(0, 4) === 'armv') {\n tags.armv = tag.slice(4)\n } else if (tag === 'glibc' || tag === 'musl') {\n tags.libc = tag\n } else {\n continue\n }\n\n tags.specificity++\n }\n\n return tags\n}\n\nfunction matchTags (runtime, abi) {\n return function (tags) {\n if (tags == null) return false\n if (tags.runtime !== runtime && !runtimeAgnostic(tags)) return false\n if (tags.abi !== abi && !tags.napi) return false\n if (tags.uv && tags.uv !== uv) return false\n if (tags.armv && tags.armv !== armv) return false\n if (tags.libc && tags.libc !== libc) return false\n\n return true\n }\n}\n\nfunction runtimeAgnostic (tags) {\n return tags.runtime === 'node' && tags.napi\n}\n\nfunction compareTags (runtime) {\n // Precedence: non-agnostic runtime, abi over napi, then by specificity.\n return function (a, b) {\n if (a.runtime !== b.runtime) {\n return a.runtime === runtime ? -1 : 1\n } else if (a.abi !== b.abi) {\n return a.abi ? -1 : 1\n } else if (a.specificity !== b.specificity) {\n return a.specificity > b.specificity ? -1 : 1\n } else {\n return 0\n }\n }\n}\n\nfunction isNwjs () {\n return !!(process.versions && process.versions.nw)\n}\n\nfunction isElectron () {\n if (process.versions && process.versions.electron) return true\n if (process.env.ELECTRON_RUN_AS_NODE) return true\n return typeof window !== 'undefined' && window.process && window.process.type === 'renderer'\n}\n\nfunction isAlpine (platform) {\n return platform === 'linux' && fs.existsSync('/etc/alpine-release')\n}\n\n// Exposed for unit tests\n// TODO: move to lib\nload.parseTags = parseTags\nload.matchTags = matchTags\nload.compareTags = compareTags\nload.parseTuple = parseTuple\nload.matchTuple = matchTuple\nload.compareTuples = compareTuples\n","'use strict';\n\ntry {\n module.exports = require('node-gyp-build')(__dirname);\n} catch (e) {\n module.exports = require('./fallback');\n}\n","'use strict';\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nconst mask = (source, mask, output, offset, length) => {\n for (var i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n};\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nconst unmask = (buffer, mask) => {\n // Required until https://github.com/nodejs/node/issues/9006 is resolved.\n const length = buffer.length;\n for (var i = 0; i < length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n};\n\nmodule.exports = { mask, unmask };\n","'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) {\n return new FastBuffer(target.buffer, target.byteOffset, offset);\n }\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.length === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = new FastBuffer(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\nmodule.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n};\n\n/* istanbul ignore else */\nif (!process.env.WS_NO_BUFFER_UTIL) {\n try {\n const bufferUtil = require('bufferutil');\n\n module.exports.mask = function (source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bufferUtil.mask(source, mask, output, offset, length);\n };\n\n module.exports.unmask = function (buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bufferUtil.unmask(buffer, mask);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n","'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed if context takeover is disabled\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n * @param {Boolean} [isServer=false] Create the instance in either server or\n * client mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(options, isServer, maxPayload) {\n this._maxPayload = maxPayload | 0;\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._isServer = !!isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) {\n data = new FastBuffer(data.buffer, data.byteOffset, data.length - 4);\n }\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n","'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n","'use strict';\n\ntry {\n module.exports = require('node-gyp-build')(__dirname);\n} catch (e) {\n module.exports = require('./fallback');\n}\n","export default '/Users/pablofernandez/src/pablo/nostri.chat/node_modules/utf-8-validate'","'use strict';\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0x00) { // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) { // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) { // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80 || // overlong\n buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0 // surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) { // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80 || // overlong\n buf[i] === 0xf4 && buf[i + 1] > 0x8f || buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = isValidUTF8;\n","'use strict';\n\nconst { isUtf8 } = require('buffer');\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = {\n isValidStatusCode,\n isValidUTF8: _isValidUTF8,\n tokenChars\n};\n\nif (isUtf8) {\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf);\n };\n} /* istanbul ignore else */ else if (!process.env.WS_NO_UTF_8_VALIDATE) {\n try {\n const isValidUTF8 = require('utf-8-validate');\n\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n","'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst FastBuffer = Buffer[Symbol.species];\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {Object} [options] Options object\n * @param {String} [options.binaryType=nodebuffer] The type for binary data\n * @param {Object} [options.extensions] An object containing the negotiated\n * extensions\n * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n * client or server mode\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n */\n constructor(options = {}) {\n super();\n\n this._binaryType = options.binaryType || BINARY_TYPES[0];\n this._extensions = options.extensions || {};\n this._isServer = !!options.isServer;\n this._maxPayload = options.maxPayload | 0;\n this._skipUTF8Validation = !!options.skipUTF8Validation;\n this[kWebSocket] = undefined;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._state = GET_INFO;\n this._loop = false;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n\n return new FastBuffer(buf.buffer, buf.byteOffset, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n let err;\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n err = this.getInfo();\n break;\n case GET_PAYLOAD_LENGTH_16:\n err = this.getPayloadLength16();\n break;\n case GET_PAYLOAD_LENGTH_64:\n err = this.getPayloadLength64();\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n err = this.getData(cb);\n break;\n default:\n // `INFLATING`\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n cb(err);\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getInfo() {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n if (!this._fragmented) {\n this._loop = false;\n return error(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n this._loop = false;\n return error(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n this._loop = false;\n return error(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n }\n\n if (compressed) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n if (\n this._payloadLength > 0x7d ||\n (this._opcode === 0x08 && this._payloadLength === 1)\n ) {\n this._loop = false;\n return error(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n }\n } else {\n this._loop = false;\n return error(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n this._loop = false;\n return error(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n }\n } else if (this._masked) {\n this._loop = false;\n return error(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else return this.haveLength();\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getPayloadLength16() {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n return this.haveLength();\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getPayloadLength64() {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n this._loop = false;\n return error(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n return this.haveLength();\n }\n\n /**\n * Payload length has been read.\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n haveLength() {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n this._loop = false;\n return error(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n\n if (\n this._masked &&\n (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0\n ) {\n unmask(data, this._mask);\n }\n }\n\n if (this._opcode > 0x07) return this.controlMessage(data);\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its length is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n return this.dataMessage();\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n return cb(\n error(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n )\n );\n }\n\n this._fragments.push(buf);\n }\n\n const er = this.dataMessage();\n if (er) return cb(er);\n\n this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @return {(Error|undefined)} A possible error\n * @private\n */\n dataMessage() {\n if (this._fin) {\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else {\n data = fragments;\n }\n\n this.emit('message', data, true);\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n this._loop = false;\n return error(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n }\n\n this.emit('message', buf, false);\n }\n }\n\n this._state = GET_INFO;\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data) {\n if (this._opcode === 0x08) {\n this._loop = false;\n\n if (data.length === 0) {\n this.emit('conclude', 1005, EMPTY_BUFFER);\n this.end();\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n return error(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n }\n\n const buf = new FastBuffer(\n data.buffer,\n data.byteOffset + 2,\n data.length - 2\n );\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n return error(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n }\n\n this.emit('conclude', code, buf);\n this.end();\n }\n } else if (this._opcode === 0x09) {\n this.emit('ping', data);\n } else {\n this.emit('pong', data);\n }\n\n this._state = GET_INFO;\n }\n}\n\nmodule.exports = Receiver;\n\n/**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\nfunction error(ErrorCtor, message, prefix, statusCode, errorCode) {\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, error);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n}\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^net|tls$\" }] */\n\n'use strict';\n\nconst net = require('net');\nconst tls = require('tls');\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER } = require('./constants');\nconst { isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst kByteLength = Symbol('kByteLength');\nconst maskBuffer = Buffer.alloc(4);\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {(net.Socket|tls.Socket)} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Function} [generateMask] The function used to generate the masking\n * key\n */\n constructor(socket, extensions, generateMask) {\n this._extensions = extensions || {};\n\n if (generateMask) {\n this._generateMask = generateMask;\n this._maskBuffer = Buffer.alloc(4);\n }\n\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._deflating = false;\n this._queue = [];\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {(Buffer|String)} data The data to frame\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {(Buffer|String)[]} The framed data\n * @public\n */\n static frame(data, options) {\n let mask;\n let merge = false;\n let offset = 2;\n let skipMasking = false;\n\n if (options.mask) {\n mask = options.maskBuffer || maskBuffer;\n\n if (options.generateMask) {\n options.generateMask(mask);\n } else {\n randomFillSync(mask, 0, 4);\n }\n\n skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;\n offset = 6;\n }\n\n let dataLength;\n\n if (typeof data === 'string') {\n if (\n (!options.mask || skipMasking) &&\n options[kByteLength] !== undefined\n ) {\n dataLength = options[kByteLength];\n } else {\n data = Buffer.from(data);\n dataLength = data.length;\n }\n } else {\n dataLength = data.length;\n merge = options.mask && options.readOnly && !skipMasking;\n }\n\n let payloadLength = dataLength;\n\n if (dataLength >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (dataLength > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(dataLength, 2);\n } else if (payloadLength === 127) {\n target[2] = target[3] = 0;\n target.writeUIntBE(dataLength, 4, 6);\n }\n\n if (!options.mask) return [target, data];\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (skipMasking) return [target, data];\n\n if (merge) {\n applyMask(data, mask, target, offset, dataLength);\n return [target];\n }\n\n applyMask(data, mask, data, 0, dataLength);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {(String|Buffer)} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || !data.length) {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n\n if (typeof data === 'string') {\n buf.write(data, 2);\n } else {\n buf.set(data, 2);\n }\n }\n\n const options = {\n [kByteLength]: buf.length,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x08,\n readOnly: false,\n rsv1: false\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, buf, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(buf, options), cb);\n }\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x09,\n readOnly,\n rsv1: false\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x0a,\n readOnly,\n rsv1: false\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (\n rsv1 &&\n perMessageDeflate &&\n perMessageDeflate.params[\n perMessageDeflate._isServer\n ? 'server_no_context_takeover'\n : 'client_no_context_takeover'\n ]\n ) {\n rsv1 = byteLength >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n if (perMessageDeflate) {\n const opts = {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, data, this._compress, opts, cb]);\n } else {\n this.dispatch(data, this._compress, opts, cb);\n }\n } else {\n this.sendFrame(\n Sender.frame(data, {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1: false\n }),\n cb\n );\n }\n }\n\n /**\n * Dispatches a message.\n *\n * @param {(Buffer|String)} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += options[kByteLength];\n this._deflating = true;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < this._queue.length; i++) {\n const params = this._queue[i];\n const callback = params[params.length - 1];\n\n if (typeof callback === 'function') callback(err);\n }\n\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n this._deflating = false;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (!this._deflating && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[3][kByteLength];\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[3][kByteLength];\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {Buffer[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n","'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let code = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Readable$\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n GUID,\n kForOnEventAttribute,\n kListener,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst {\n EventTarget: { addEventListener, removeEventListener }\n} = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst closeTimeout = 30 * 1000;\nconst kAborted = Symbol('kAborted');\nconst protocolVersions = [8, 13];\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = EMPTY_BUFFER;\n this._closeTimer = null;\n this._extensions = {};\n this._paused = false;\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (protocols === undefined) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = [];\n } else {\n protocols = [protocols];\n }\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._isServer = true;\n }\n }\n\n /**\n * This deviates from the WHATWG interface since ws doesn't support the\n * required default \"blob\" type (instead we define a custom \"nodebuffer\"\n * type).\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Boolean}\n */\n get isPaused() {\n return this._paused;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return null;\n }\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Object} options Options object\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.maxPayload=0] The maximum allowed message size\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\n setSocket(socket, head, options) {\n const receiver = new Receiver({\n binaryType: this.binaryType,\n extensions: this._extensions,\n isServer: this._isServer,\n maxPayload: options.maxPayload,\n skipUTF8Validation: options.skipUTF8Validation\n });\n\n this._sender = new Sender(socket, this._extensions, options.generateMask);\n this._receiver = receiver;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n socket.setTimeout(0);\n socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {(String|Buffer)} [data] The reason why the connection is\n * closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n //\n // Specify a timeout for the closing handshake to complete.\n //\n this._closeTimer = setTimeout(\n this._socket.destroy.bind(this._socket),\n closeTimeout\n );\n }\n\n /**\n * Pause the socket.\n *\n * @public\n */\n pause() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = true;\n this._socket.pause();\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Resume the socket.\n *\n * @public\n */\n resume() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = false;\n if (!this._receiver._writableState.needDrain) this._socket.resume();\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'isPaused',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) return listener[kListener];\n }\n\n return null;\n },\n set(handler) {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) {\n this.removeListener(method, listener);\n break;\n }\n }\n\n if (typeof handler !== 'function') return;\n\n this.addEventListener(method, handler, {\n [kForOnEventAttribute]: true\n });\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n protocolVersion: protocolVersions[1],\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n createConnection: undefined,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: 'GET',\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n websocket._url = address.href;\n } else {\n try {\n parsedUrl = new URL(address);\n } catch (e) {\n throw new SyntaxError(`Invalid URL: ${address}`);\n }\n\n websocket._url = address;\n }\n\n const isSecure = parsedUrl.protocol === 'wss:';\n const isIpcUrl = parsedUrl.protocol === 'ws+unix:';\n let invalidUrlMessage;\n\n if (parsedUrl.protocol !== 'ws:' && !isSecure && !isIpcUrl) {\n invalidUrlMessage =\n 'The URL\\'s protocol must be one of \"ws:\", \"wss:\", or \"ws+unix:\"';\n } else if (isIpcUrl && !parsedUrl.pathname) {\n invalidUrlMessage = \"The URL's pathname is empty\";\n } else if (parsedUrl.hash) {\n invalidUrlMessage = 'The URL contains a fragment identifier';\n }\n\n if (invalidUrlMessage) {\n const err = new SyntaxError(invalidUrlMessage);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const request = isSecure ? https.request : http.request;\n const protocolSet = new Set();\n let perMessageDeflate;\n\n opts.createConnection = isSecure ? tlsConnect : netConnect;\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n ...opts.headers,\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket'\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate(\n opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n false,\n opts.maxPayload\n );\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols.length) {\n for (const protocol of protocols) {\n if (\n typeof protocol !== 'string' ||\n !subprotocolRegex.test(protocol) ||\n protocolSet.has(protocol)\n ) {\n throw new SyntaxError(\n 'An invalid or duplicated subprotocol was specified'\n );\n }\n\n protocolSet.add(protocol);\n }\n\n opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isIpcUrl) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n let req;\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalIpc = isIpcUrl;\n websocket._originalSecure = isSecure;\n websocket._originalHostOrSocketPath = isIpcUrl\n ? opts.socketPath\n : parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else if (websocket.listenerCount('redirect') === 0) {\n const isSameHost = isIpcUrl\n ? websocket._originalIpc\n ? opts.socketPath === websocket._originalHostOrSocketPath\n : false\n : websocket._originalIpc\n ? false\n : parsedUrl.host === websocket._originalHostOrSocketPath;\n\n if (!isSameHost || (websocket._originalSecure && !isSecure)) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n\n if (!isSameHost) delete opts.headers.host;\n\n opts.auth = undefined;\n }\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n\n req = websocket._req = request(opts);\n\n if (websocket._redirects) {\n //\n // Unlike what is done for the `'upgrade'` event, no early exit is\n // triggered here if the user calls `websocket.close()` or\n // `websocket.terminate()` from a listener of the `'redirect'` event. This\n // is because the user can also call `request.destroy()` with an error\n // before calling `websocket.close()` or `websocket.terminate()` and this\n // would result in an error being emitted on the `request` object with no\n // `'error'` event listeners attached.\n //\n websocket.emit('redirect', websocket.url, req);\n }\n } else {\n req = websocket._req = request(opts);\n }\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req[kAborted]) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (e) {\n const err = new SyntaxError(`Invalid URL: ${location}`);\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the\n // `'upgrade'` event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n if (res.headers.upgrade.toLowerCase() !== 'websocket') {\n abortHandshake(websocket, socket, 'Invalid Upgrade header');\n return;\n }\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n let protError;\n\n if (serverProt !== undefined) {\n if (!protocolSet.size) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (!protocolSet.has(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n } else if (protocolSet.size) {\n protError = 'Server sent no subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message = 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n\n websocket.setSocket(socket, head, {\n generateMask: opts.generateMask,\n maxPayload: opts.maxPayload,\n skipUTF8Validation: opts.skipUTF8Validation\n });\n });\n\n req.end();\n}\n\n/**\n * Emit the `'error'` and `'close'` events.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream[kAborted] = true;\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n process.nextTick(emitErrorAndClose, websocket, err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n process.nextTick(cb, err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n const websocket = this[kWebSocket];\n\n if (!websocket.isPaused) websocket._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n websocket.emit('error', err);\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n websocket.pong(data, !websocket._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The listener of the `net.Socket` `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n let chunk;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written and `readable.read()`\n // will return `null`. If instead, the socket is paused, any possible buffered\n // data will be read as a single chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n (chunk = websocket._socket.read()) !== null\n ) {\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the `net.Socket` `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the `net.Socket` `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the `net.Socket` `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n","'use strict';\n\nconst { kForOnEventAttribute, kListener } = require('./constants');\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @throws {TypeError} If the `type` argument is not specified\n */\n constructor(type) {\n this[kTarget] = null;\n this[kType] = type;\n }\n\n /**\n * @type {*}\n */\n get target() {\n return this[kTarget];\n }\n\n /**\n * @type {String}\n */\n get type() {\n return this[kType];\n }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {Number} [options.code=0] The status code explaining why the\n * connection was closed\n * @param {String} [options.reason=''] A human-readable string explaining why\n * the connection was closed\n * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n * connection was cleanly closed\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kCode] = options.code === undefined ? 0 : options.code;\n this[kReason] = options.reason === undefined ? '' : options.reason;\n this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n }\n\n /**\n * @type {Number}\n */\n get code() {\n return this[kCode];\n }\n\n /**\n * @type {String}\n */\n get reason() {\n return this[kReason];\n }\n\n /**\n * @type {Boolean}\n */\n get wasClean() {\n return this[kWasClean];\n }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.error=null] The error that generated this event\n * @param {String} [options.message=''] The error message\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kError] = options.error === undefined ? null : options.error;\n this[kMessage] = options.message === undefined ? '' : options.message;\n }\n\n /**\n * @type {*}\n */\n get error() {\n return this[kError];\n }\n\n /**\n * @type {String}\n */\n get message() {\n return this[kMessage];\n }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.data=null] The message content\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kData] = options.data === undefined ? null : options.data;\n }\n\n /**\n * @type {*}\n */\n get data() {\n return this[kData];\n }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {(Function|Object)} handler The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, handler, options = {}) {\n for (const listener of this.listeners(type)) {\n if (\n !options[kForOnEventAttribute] &&\n listener[kListener] === handler &&\n !listener[kForOnEventAttribute]\n ) {\n return;\n }\n }\n\n let wrapper;\n\n if (type === 'message') {\n wrapper = function onMessage(data, isBinary) {\n const event = new MessageEvent('message', {\n data: isBinary ? data : data.toString()\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'close') {\n wrapper = function onClose(code, message) {\n const event = new CloseEvent('close', {\n code,\n reason: message.toString(),\n wasClean: this._closeFrameReceived && this._closeFrameSent\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'error') {\n wrapper = function onError(error) {\n const event = new ErrorEvent('error', {\n error,\n message: error.message\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'open') {\n wrapper = function onOpen() {\n const event = new Event('open');\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else {\n return;\n }\n\n wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n wrapper[kListener] = handler;\n\n if (options.once) {\n this.once(type, wrapper);\n } else {\n this.on(type, wrapper);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {(Function|Object)} handler The listener to remove\n * @public\n */\n removeEventListener(type, handler) {\n for (const listener of this.listeners(type)) {\n if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n this.removeListener(type, listener);\n break;\n }\n }\n }\n};\n\nmodule.exports = {\n CloseEvent,\n ErrorEvent,\n Event,\n EventTarget,\n MessageEvent\n};\n\n/**\n * Call an event listener\n *\n * @param {(Function|Object)} listener The listener to call\n * @param {*} thisArg The value to use as `this`` when calling the listener\n * @param {Event} event The event to pass to the listener\n * @private\n */\nfunction callListener(listener, thisArg, event) {\n if (typeof listener === 'object' && listener.handleEvent) {\n listener.handleEvent.call(listener, event);\n } else {\n listener.call(thisArg, event);\n }\n}\n","'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.\n *\n * @param {String} header The field value of the header\n * @return {Set} The subprotocol names\n * @public\n */\nfunction parse(header) {\n const protocols = new Set();\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (i; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n\n const protocol = header.slice(start, end);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n\n if (start === -1 || end !== -1) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n const protocol = header.slice(start, i);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n return protocols;\n}\n\nmodule.exports = { parse };\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^net|tls|https$\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst https = require('https');\nconst net = require('net');\nconst tls = require('tls');\nconst { createHash } = require('crypto');\n\nconst extension = require('./extension');\nconst PerMessageDeflate = require('./permessage-deflate');\nconst subprotocol = require('./subprotocol');\nconst WebSocket = require('./websocket');\nconst { GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket`\n * class to use. It must be the `WebSocket` class or class that extends it\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n WebSocket,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) {\n this.clients = new Set();\n this._shouldEmitClose = false;\n }\n\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Stop the server from accepting new connections and emit the `'close'` event\n * when all existing connections are closed.\n *\n * @param {Function} [cb] A one-time listener for the `'close'` event\n * @public\n */\n close(cb) {\n if (this._state === CLOSED) {\n if (cb) {\n this.once('close', () => {\n cb(new Error('The server is not running'));\n });\n }\n\n process.nextTick(emitClose, this);\n return;\n }\n\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n if (this.options.noServer || this.options.server) {\n if (this._server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n }\n\n if (this.clients) {\n if (!this.clients.size) {\n process.nextTick(emitClose, this);\n } else {\n this._shouldEmitClose = true;\n }\n } else {\n process.nextTick(emitClose, this);\n }\n } else {\n const server = this._server;\n\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // The HTTP/S server was created internally. Close it, and rely on its\n // `'close'` event.\n //\n server.close(() => {\n emitClose(this);\n });\n }\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key = req.headers['sec-websocket-key'];\n const version = +req.headers['sec-websocket-version'];\n\n if (req.method !== 'GET') {\n const message = 'Invalid HTTP method';\n abortHandshakeOrEmitwsClientError(this, req, socket, 405, message);\n return;\n }\n\n if (req.headers.upgrade.toLowerCase() !== 'websocket') {\n const message = 'Invalid Upgrade header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (!key || !keyRegex.test(key)) {\n const message = 'Missing or invalid Sec-WebSocket-Key header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (version !== 8 && version !== 13) {\n const message = 'Missing or invalid Sec-WebSocket-Version header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (!this.shouldHandle(req)) {\n abortHandshake(socket, 400);\n return;\n }\n\n const secWebSocketProtocol = req.headers['sec-websocket-protocol'];\n let protocols = new Set();\n\n if (secWebSocketProtocol !== undefined) {\n try {\n protocols = subprotocol.parse(secWebSocketProtocol);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Protocol header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n const secWebSocketExtensions = req.headers['sec-websocket-extensions'];\n const extensions = {};\n\n if (\n this.options.perMessageDeflate &&\n secWebSocketExtensions !== undefined\n ) {\n const perMessageDeflate = new PerMessageDeflate(\n this.options.perMessageDeflate,\n true,\n this.options.maxPayload\n );\n\n try {\n const offers = extension.parse(secWebSocketExtensions);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n const message =\n 'Invalid or unacceptable Sec-WebSocket-Extensions header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(\n extensions,\n key,\n protocols,\n req,\n socket,\n head,\n cb\n );\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(extensions, key, protocols, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {Object} extensions The accepted extensions\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Set} protocols The subprotocols\n * @param {http.IncomingMessage} req The request object\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(extensions, key, protocols, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new this.options.WebSocket(null);\n\n if (protocols.size) {\n //\n // Optionally call external protocol selection handler.\n //\n const protocol = this.options.handleProtocols\n ? this.options.handleProtocols(protocols, req)\n : protocols.values().next().value;\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = extension.format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, {\n maxPayload: this.options.maxPayload,\n skipUTF8Validation: this.options.skipUTF8Validation\n });\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => {\n this.clients.delete(ws);\n\n if (this._shouldEmitClose && !this.clients.size) {\n process.nextTick(emitClose, this);\n }\n });\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of \n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {(net.Socket|tls.Socket)} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n //\n // The socket is writable unless the user destroyed or ended it before calling\n // `server.handleUpgrade()` or in the `verifyClient` function, which is a user\n // error. Handling this does not make much sense as the worst that can happen\n // is that some of the data written by the user might be discarded due to the\n // call to `socket.end()` below, which triggers an `'error'` event that in\n // turn causes the socket to be destroyed.\n //\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.once('finish', socket.destroy);\n\n socket.end(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n}\n\n/**\n * Emit a `'wsClientError'` event on a `WebSocketServer` if there is at least\n * one listener for it, otherwise call `abortHandshake()`.\n *\n * @param {WebSocketServer} server The WebSocket server\n * @param {http.IncomingMessage} req The request object\n * @param {(net.Socket|tls.Socket)} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} message The HTTP response body\n * @private\n */\nfunction abortHandshakeOrEmitwsClientError(server, req, socket, code, message) {\n if (server.listenerCount('wsClientError')) {\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError);\n\n server.emit('wsClientError', err, socket, req);\n } else {\n abortHandshake(socket, code, message);\n }\n}\n","const WS = typeof WebSocket !== 'undefined' ? WebSocket : require('ws')\n\nRelay.prototype.wait_connected = async function relay_wait_connected(data) {\n\tlet retry = 1000\n\twhile (true) {\n\t\tif (this.ws.readyState !== 1) {\n\t\t\tawait sleep(retry)\n\t\t\tretry *= 1.5\n\t\t}\n\t\telse {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n\nfunction Relay(relay, opts={})\n{\n\tif (!(this instanceof Relay))\n\t\treturn new Relay(relay, opts)\n\n\tthis.url = relay\n\tthis.opts = opts\n\n\tif (opts.reconnect == null)\n\t\topts.reconnect = true\n\n\tconst me = this\n\tme.onfn = {}\n\n\tinit_websocket(me)\n\t\t.catch(e => {\n\t\t\tif (me.onfn.error)\n\t\t\t\tme.onfn.error(e)\n\t\t})\n\n\treturn this\n}\n\nfunction init_websocket(me) {\n\treturn new Promise((resolve, reject) => {\n\t\tconst ws = me.ws = new WS(me.url);\n\n\t\tlet resolved = false\n\t\tws.onmessage = (m) => {\n\t\t\thandle_nostr_message(me, m)\n\t\t\tif (me.onfn.message)\n\t\t\t\tme.onfn.message(m)\n\t\t}\n\t\tws.onclose = (e) => {\n\t\t\tif (me.onfn.close)\n\t\t\t\tme.onfn.close(e)\n\t\t\tif (me.reconnecting)\n\t\t\t\treturn reject(new Error(\"close during reconnect\"))\n\t\t\tif (!me.manualClose && me.opts.reconnect)\n\t\t\t\treconnect(me)\n\t\t}\n\t\tws.onerror = (e) => {\n\t\t\tif (me.onfn.error)\n\t\t\t\tme.onfn.error(e)\n\t\t\tif (me.reconnecting)\n\t\t\t\treturn reject(new Error(\"error during reconnect\"))\n\t\t\tif (me.opts.reconnect)\n\t\t\t\treconnect(me)\n\t\t}\n\t\tws.onopen = (e) => {\n\t\t\tif (me.onfn.open)\n\t\t\t\tme.onfn.open(e)\n\n\t\t\tif (resolved) return\n\n\t\t\tresolved = true\n\t\t\tresolve(me)\n\t\t}\n\t});\n}\n\nfunction sleep(ms) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\nasync function reconnect(me)\n{\n\tconst reconnecting = true\n\tlet n = 100\n\ttry {\n\t\tme.reconnecting = true\n\t\tawait init_websocket(me)\n\t\tme.reconnecting = false\n\t} catch {\n\t\t//console.error(`error thrown during reconnect... trying again in ${n} ms`)\n\t\tawait sleep(n)\n\t\tn *= 1.5\n\t}\n}\n\nRelay.prototype.on = function relayOn(method, fn) {\n\tthis.onfn[method] = fn\n\treturn this\n}\n\nRelay.prototype.close = function relayClose() {\n\tif (this.ws) {\n\t\tthis.manualClose = true\n\t\tthis.ws.close()\n\t}\n}\n\nRelay.prototype.subscribe = function relay_subscribe(sub_id, filters) {\n\tif (Array.isArray(filters))\n\t\tthis.send([\"REQ\", sub_id, ...filters])\n\telse\n\t\tthis.send([\"REQ\", sub_id, filters])\n}\n\nRelay.prototype.unsubscribe = function relay_unsubscribe(sub_id) {\n\tthis.send([\"CLOSE\", sub_id])\n}\n\nRelay.prototype.send = async function relay_send(data) {\n\tawait this.wait_connected()\n\tthis.ws.send(JSON.stringify(data))\n}\n\nfunction handle_nostr_message(relay, msg)\n{\n\tlet data\n\ttry {\n\t\tdata = JSON.parse(msg.data)\n\t} catch (e) {\n\t\tconsole.error(\"handle_nostr_message\", e)\n\t\treturn\n\t}\n\tif (data.length >= 2) {\n\t\tswitch (data[0]) {\n\t\tcase \"EVENT\":\n\t\t\tif (data.length < 3)\n\t\t\t\treturn\n\t\t\treturn relay.onfn.event && relay.onfn.event(data[1], data[2])\n\t\tcase \"EOSE\":\n\t\t\treturn relay.onfn.eose && relay.onfn.eose(data[1])\n\t\tcase \"NOTICE\":\n\t\t\treturn relay.onfn.notice && relay.onfn.notice(...data.slice(1))\n\t\tcase \"OK\":\n\t\t\treturn relay.onfn.ok && relay.onfn.ok(...data.slice(1))\n\t\t}\n\t}\n}\n\nmodule.exports = Relay\n","'use strict';\n\nconst WebSocket = require('./lib/websocket');\n\nWebSocket.createWebSocketStream = require('./lib/stream');\nWebSocket.Server = require('./lib/websocket-server');\nWebSocket.Receiver = require('./lib/receiver');\nWebSocket.Sender = require('./lib/sender');\n\nWebSocket.WebSocket = WebSocket;\nWebSocket.WebSocketServer = WebSocket.Server;\n\nmodule.exports = WebSocket;\n","'use strict';\n\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let terminateOnDestroy = true;\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg, isBinary) {\n const data =\n !isBinary && duplex._readableState.objectMode ? msg.toString() : msg;\n\n if (!duplex.push(data)) ws.pause();\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (ws.isPaused) ws.resume();\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n","\nconst Relay = require('./relay')\n\nfunction RelayPool(relays, opts)\n{\n\tif (!(this instanceof RelayPool))\n\t\treturn new RelayPool(relays, opts)\n\n\tthis.onfn = {}\n\tthis.relays = []\n\tthis.opts = opts\n\n\tfor (const relay of relays) {\n\t\tthis.add(relay)\n\t}\n\n\treturn this\n}\n\nRelayPool.prototype.close = function relayPoolClose() {\n\tfor (const relay of this.relays) {\n\t\trelay.close()\n\t}\n}\n\nRelayPool.prototype.on = function relayPoolOn(method, fn) {\n\tfor (const relay of this.relays) {\n\t\tthis.onfn[method] = fn\n\t\trelay.onfn[method] = fn.bind(null, relay)\n\t}\n\treturn this\n}\n\nRelayPool.prototype.has = function relayPoolHas(relayUrl) {\n\tfor (const relay of this.relays) {\n\t\tif (relay.url === relayUrl)\n\t\t\treturn true\n\t}\n\n\treturn false\n}\n\nRelayPool.prototype.send = function relayPoolSend(payload, relay_ids) {\n\tconst relays = relay_ids ? this.find_relays(relay_ids) : this.relays\n\tfor (const relay of relays) {\n\t\trelay.send(payload)\n\t}\n}\n\nRelayPool.prototype.setupHandlers = function relayPoolSetupHandlers()\n{\n\t// setup its message handlers with the ones we have already\n\tconst keys = Object.keys(this.onfn)\n\tfor (const handler of keys) {\n\t\tfor (const relay of this.relays) {\n\t\t\trelay.onfn[handler] = this.onfn[handler].bind(null, relay)\n\t\t}\n\t}\n}\n\nRelayPool.prototype.remove = function relayPoolRemove(url) {\n\tlet i = 0\n\n\tfor (const relay of this.relays) {\n\t\tif (relay.url === url) {\n\t\t\trelay.ws && relay.ws.close()\n\t\t\tthis.relays = this.replays.splice(i, 1)\n\t\t\treturn true\n\t\t}\n\n\t\ti += 1\n\t}\n\n\treturn false\n}\n\nRelayPool.prototype.subscribe = function relayPoolSubscribe(sub_id, filters, relay_ids) {\n\tconst relays = relay_ids ? this.find_relays(relay_ids) : this.relays\n\tfor (const relay of relays) {\n\t\trelay.subscribe(sub_id, filters)\n\t}\n}\n\nRelayPool.prototype.unsubscribe = function relayPoolUnsubscibe(sub_id, relay_ids) {\n\tconst relays = relay_ids ? this.find_relays(relay_ids) : this.relays\n\tfor (const relay of relays) {\n\t\trelay.unsubscribe(sub_id)\n\t}\n}\n\n\nRelayPool.prototype.add = function relayPoolAdd(relay) {\n\tif (relay instanceof Relay) {\n\t\tif (this.has(relay.url))\n\t\t\treturn false\n\n\t\tthis.relays.push(relay)\n\t\tthis.setupHandlers()\n\t\treturn true\n\t}\n\n\tif (this.has(relay))\n\t\treturn false\n\n\tconst r = Relay(relay, this.opts)\n\tthis.relays.push(r)\n\tthis.setupHandlers()\n\treturn true\n}\n\nRelayPool.prototype.find_relays = function relayPoolFindRelays(relay_ids) {\n\tif (relay_ids instanceof Relay)\n\t\treturn [relay_ids]\n\n\tif (relay_ids.length === 0)\n\t\treturn []\n\n\tif (!relay_ids[0])\n\t\tthrow new Error(\"what!?\")\n\n\tif (relay_ids[0] instanceof Relay)\n\t\treturn relay_ids\n\n\treturn this.relays.reduce((acc, relay) => {\n\t\tif (relay_ids.some((rid) => relay.url === rid))\n\t\t\tacc.push(relay)\n\t\treturn acc\n\t}, [])\n}\n\nmodule.exports = RelayPool\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.is_node = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std\r\n */\r\n//================================================================\r\nvar is_node_ = null;\r\n/**\r\n * Test whether the code is running on NodeJS.\r\n *\r\n * @return Whether NodeJS or not.\r\n */\r\nfunction is_node() {\r\n if (is_node_ === null)\r\n is_node_ =\r\n typeof global === \"object\" &&\r\n typeof global.process === \"object\" &&\r\n typeof global.process.versions === \"object\" &&\r\n typeof global.process.versions.node !== \"undefined\";\r\n return is_node_;\r\n}\r\nexports.is_node = is_node;\r\n//# sourceMappingURL=node.js.map","var _globalThis;\nif (typeof globalThis === 'object') {\n\t_globalThis = globalThis;\n} else {\n\ttry {\n\t\t_globalThis = require('es5-ext/global');\n\t} catch (error) {\n\t} finally {\n\t\tif (!_globalThis && typeof window !== 'undefined') { _globalThis = window; }\n\t\tif (!_globalThis) { throw new Error('Could not determine global this'); }\n\t}\n}\n\nvar NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;\nvar websocket_version = require('./version');\n\n\n/**\n * Expose a W3C WebSocket class with just one or two arguments.\n */\nfunction W3CWebSocket(uri, protocols) {\n\tvar native_instance;\n\n\tif (protocols) {\n\t\tnative_instance = new NativeWebSocket(uri, protocols);\n\t}\n\telse {\n\t\tnative_instance = new NativeWebSocket(uri);\n\t}\n\n\t/**\n\t * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket\n\t * class). Since it is an Object it will be returned as it is when creating an\n\t * instance of W3CWebSocket via 'new W3CWebSocket()'.\n\t *\n\t * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2\n\t */\n\treturn native_instance;\n}\nif (NativeWebSocket) {\n\t['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) {\n\t\tObject.defineProperty(W3CWebSocket, prop, {\n\t\t\tget: function() { return NativeWebSocket[prop]; }\n\t\t});\n\t});\n}\n\n/**\n * Module exports.\n */\nmodule.exports = {\n 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null,\n 'version' : websocket_version\n};\n","var naiveFallback = function () {\n\tif (typeof self === \"object\" && self) return self;\n\tif (typeof window === \"object\" && window) return window;\n\tthrow new Error(\"Unable to resolve global `this`\");\n};\n\nmodule.exports = (function () {\n\tif (this) return this;\n\n\t// Unexpected strict mode (may happen if e.g. bundled into ESM module)\n\n\t// Fallback to standard globalThis if available\n\tif (typeof globalThis === \"object\" && globalThis) return globalThis;\n\n\t// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis\n\t// In all ES5+ engines global object inherits from Object.prototype\n\t// (if you approached one that doesn't please report)\n\ttry {\n\t\tObject.defineProperty(Object.prototype, \"__global__\", {\n\t\t\tget: function () { return this; },\n\t\t\tconfigurable: true\n\t\t});\n\t} catch (error) {\n\t\t// Unfortunate case of updates to Object.prototype being restricted\n\t\t// via preventExtensions, seal or freeze\n\t\treturn naiveFallback();\n\t}\n\ttry {\n\t\t// Safari case (window.__global__ works, but __global__ does not)\n\t\tif (!__global__) return naiveFallback();\n\t\treturn __global__;\n\t} finally {\n\t\tdelete Object.prototype.__global__;\n\t}\n})();\n","module.exports = require('../package.json').version;\n","\"use strict\";\r\nvar __values = (this && this.__values) || function(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Container = void 0;\r\nvar ForOfAdaptor_1 = require(\"../../internal/iterator/disposable/ForOfAdaptor\");\r\n/**\r\n * Basic container.\r\n *\r\n * @template T Stored elements' type\r\n * @template SourceT Derived type extending this {@link Container}\r\n * @template IteratorT Iterator type\r\n * @template ReverseT Reverse iterator type\r\n * @template PElem Parent type of *T*, used for inserting elements through {@link assign} and {@link insert}.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar Container = /** @class */ (function () {\r\n function Container() {\r\n }\r\n /**\r\n * @inheritDoc\r\n */\r\n Container.prototype.empty = function () {\r\n return this.size() === 0;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n Container.prototype.rbegin = function () {\r\n return this.end().reverse();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n Container.prototype.rend = function () {\r\n return this.begin().reverse();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n Container.prototype[Symbol.iterator] = function () {\r\n return new ForOfAdaptor_1.ForOfAdaptor(this.begin(), this.end());\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n Container.prototype.toJSON = function () {\r\n var e_1, _a;\r\n var ret = [];\r\n try {\r\n for (var _b = __values(this), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var elem = _c.value;\r\n ret.push(elem);\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return ret;\r\n };\r\n return Container;\r\n}());\r\nexports.Container = Container;\r\n//# sourceMappingURL=Container.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ForOfAdaptor = void 0;\r\n/**\r\n * Adaptor for `for ... of` iteration.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar ForOfAdaptor = /** @class */ (function () {\r\n /**\r\n * Initializer Constructor.\r\n *\r\n * @param first Input iteartor of the first position.\r\n * @param last Input iterator of the last position.\r\n */\r\n function ForOfAdaptor(first, last) {\r\n this.it_ = first;\r\n this.last_ = last;\r\n }\r\n /**\r\n * @inheritDoc\r\n */\r\n ForOfAdaptor.prototype.next = function () {\r\n if (this.it_.equals(this.last_))\r\n return {\r\n done: true,\r\n value: undefined,\r\n };\r\n else {\r\n var it = this.it_;\r\n this.it_ = this.it_.next();\r\n return {\r\n done: false,\r\n value: it.value,\r\n };\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ForOfAdaptor.prototype[Symbol.iterator] = function () {\r\n return this;\r\n };\r\n return ForOfAdaptor;\r\n}());\r\nexports.ForOfAdaptor = ForOfAdaptor;\r\n//# sourceMappingURL=ForOfAdaptor.js.map","\"use strict\";\r\nvar __read = (this && this.__read) || function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.NativeArrayIterator = void 0;\r\nvar NativeArrayIterator = /** @class */ (function () {\r\n /* ---------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------- */\r\n function NativeArrayIterator(data, index) {\r\n this.data_ = data;\r\n this.index_ = index;\r\n }\r\n /* ---------------------------------------------------------\r\n ACCESSORS\r\n --------------------------------------------------------- */\r\n NativeArrayIterator.prototype.index = function () {\r\n return this.index_;\r\n };\r\n Object.defineProperty(NativeArrayIterator.prototype, \"value\", {\r\n get: function () {\r\n return this.data_[this.index_];\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /* ---------------------------------------------------------\r\n MOVERS\r\n --------------------------------------------------------- */\r\n NativeArrayIterator.prototype.prev = function () {\r\n --this.index_;\r\n return this;\r\n };\r\n NativeArrayIterator.prototype.next = function () {\r\n ++this.index_;\r\n return this;\r\n };\r\n NativeArrayIterator.prototype.advance = function (n) {\r\n this.index_ += n;\r\n return this;\r\n };\r\n /* ---------------------------------------------------------\r\n COMPARES\r\n --------------------------------------------------------- */\r\n NativeArrayIterator.prototype.equals = function (obj) {\r\n return this.data_ === obj.data_ && this.index_ === obj.index_;\r\n };\r\n NativeArrayIterator.prototype.swap = function (obj) {\r\n var _a, _b;\r\n _a = __read([obj.data_, this.data_], 2), this.data_ = _a[0], obj.data_ = _a[1];\r\n _b = __read([obj.index_, this.index_], 2), this.index_ = _b[0], obj.index_ = _b[1];\r\n };\r\n return NativeArrayIterator;\r\n}());\r\nexports.NativeArrayIterator = NativeArrayIterator;\r\n//# sourceMappingURL=NativeArrayIterator.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.LogicError = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std\r\n */\r\n//================================================================\r\nvar Exception_1 = require(\"./Exception\");\r\n/**\r\n * Logic Error.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar LogicError = /** @class */ (function (_super) {\r\n __extends(LogicError, _super);\r\n /**\r\n * Initializer Constructor.\r\n *\r\n * @param message The error messgae.\r\n */\r\n function LogicError(message) {\r\n return _super.call(this, message) || this;\r\n }\r\n return LogicError;\r\n}(Exception_1.Exception));\r\nexports.LogicError = LogicError;\r\n//# sourceMappingURL=LogicError.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Exception = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std\r\n */\r\n//================================================================\r\n/**\r\n * Base Exception.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar Exception = /** @class */ (function (_super) {\r\n __extends(Exception, _super);\r\n /* ---------------------------------------------------------\r\n CONSTRUCTOR\r\n --------------------------------------------------------- */\r\n /**\r\n * Initializer Constructor.\r\n *\r\n * @param message The error messgae.\r\n */\r\n function Exception(message) {\r\n var _newTarget = this.constructor;\r\n var _this = _super.call(this, message) || this;\r\n // INHERITANCE POLYFILL\r\n var proto = _newTarget.prototype;\r\n if (Object.setPrototypeOf)\r\n Object.setPrototypeOf(_this, proto);\r\n else\r\n _this.__proto__ = proto;\r\n return _this;\r\n }\r\n Object.defineProperty(Exception.prototype, \"name\", {\r\n /* ---------------------------------------------------------\r\n ACCESSORS\r\n --------------------------------------------------------- */\r\n /**\r\n * The error name.\r\n */\r\n get: function () {\r\n return this.constructor.name;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Get error message.\r\n *\r\n * @return The error message.\r\n */\r\n Exception.prototype.what = function () {\r\n return this.message;\r\n };\r\n /**\r\n * Native function for `JSON.stringify()`.\r\n *\r\n * The {@link Exception.toJSON} function returns only three properties; ({@link name}, {@link message} and {@link stack}). If you want to define a new sub-class extending the {@link Exception} and const the class to export additional props (or remove some props), override this {@link Exception.toJSON} method.\r\n *\r\n * @return An object for `JSON.stringify()`.\r\n */\r\n Exception.prototype.toJSON = function () {\r\n return {\r\n name: this.name,\r\n message: this.message,\r\n stack: this.stack,\r\n };\r\n };\r\n return Exception;\r\n}(Error));\r\nexports.Exception = Exception;\r\n//# sourceMappingURL=Exception.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.InvalidArgument = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std\r\n */\r\n//================================================================\r\nvar LogicError_1 = require(\"./LogicError\");\r\n/**\r\n * Invalid Argument Exception.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar InvalidArgument = /** @class */ (function (_super) {\r\n __extends(InvalidArgument, _super);\r\n /**\r\n * Initializer Constructor.\r\n *\r\n * @param message The error messgae.\r\n */\r\n function InvalidArgument(message) {\r\n return _super.call(this, message) || this;\r\n }\r\n return InvalidArgument;\r\n}(LogicError_1.LogicError));\r\nexports.InvalidArgument = InvalidArgument;\r\n//# sourceMappingURL=InvalidArgument.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ErrorGenerator = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std.internal\r\n */\r\n//================================================================\r\nvar InvalidArgument_1 = require(\"../../exception/InvalidArgument\");\r\nvar OutOfRange_1 = require(\"../../exception/OutOfRange\");\r\nvar ErrorGenerator;\r\n(function (ErrorGenerator) {\r\n /* ---------------------------------------------------------\r\n COMMON\r\n --------------------------------------------------------- */\r\n function get_class_name(instance) {\r\n if (typeof instance === \"string\")\r\n return instance;\r\n var ret = instance.constructor.name;\r\n if (instance.constructor.__MODULE)\r\n ret = \"\".concat(instance.constructor.__MODULE, \".\").concat(ret);\r\n return \"std.\".concat(ret);\r\n }\r\n ErrorGenerator.get_class_name = get_class_name;\r\n /* ---------------------------------------------------------\r\n CONTAINERS\r\n --------------------------------------------------------- */\r\n function empty(instance, method) {\r\n return new OutOfRange_1.OutOfRange(\"Error on \".concat(get_class_name(instance), \".\").concat(method, \"(): it's empty container.\"));\r\n }\r\n ErrorGenerator.empty = empty;\r\n function negative_index(instance, method, index) {\r\n return new OutOfRange_1.OutOfRange(\"Error on \".concat(get_class_name(instance), \".\").concat(method, \"(): parametric index is negative -> (index = \").concat(index, \").\"));\r\n }\r\n ErrorGenerator.negative_index = negative_index;\r\n function excessive_index(instance, method, index, size) {\r\n return new OutOfRange_1.OutOfRange(\"Error on \".concat(get_class_name(instance), \".\").concat(method, \"(): parametric index is equal or greater than size -> (index = \").concat(index, \", size: \").concat(size, \").\"));\r\n }\r\n ErrorGenerator.excessive_index = excessive_index;\r\n function not_my_iterator(instance, method) {\r\n return new InvalidArgument_1.InvalidArgument(\"Error on \".concat(get_class_name(instance), \".\").concat(method, \"(): parametric iterator is not this container's own.\"));\r\n }\r\n ErrorGenerator.not_my_iterator = not_my_iterator;\r\n function erased_iterator(instance, method) {\r\n return new InvalidArgument_1.InvalidArgument(\"Error on \".concat(get_class_name(instance), \".\").concat(method, \"(): parametric iterator, it already has been erased.\"));\r\n }\r\n ErrorGenerator.erased_iterator = erased_iterator;\r\n function negative_iterator(instance, method, index) {\r\n return new OutOfRange_1.OutOfRange(\"Error on \".concat(get_class_name(instance), \".\").concat(method, \"(): parametric iterator is directing negative position -> (index = \").concat(index, \").\"));\r\n }\r\n ErrorGenerator.negative_iterator = negative_iterator;\r\n function iterator_end_value(instance, method) {\r\n if (method === void 0) { method = \"end\"; }\r\n var className = get_class_name(instance);\r\n return new OutOfRange_1.OutOfRange(\"Error on \".concat(className, \".Iterator.value: cannot access to the \").concat(className, \".\").concat(method, \"().value.\"));\r\n }\r\n ErrorGenerator.iterator_end_value = iterator_end_value;\r\n function key_nout_found(instance, method, key) {\r\n throw new OutOfRange_1.OutOfRange(\"Error on \".concat(get_class_name(instance), \".\").concat(method, \"(): unable to find the matched key -> \").concat(key));\r\n }\r\n ErrorGenerator.key_nout_found = key_nout_found;\r\n})(ErrorGenerator = exports.ErrorGenerator || (exports.ErrorGenerator = {}));\r\n//# sourceMappingURL=ErrorGenerator.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.OutOfRange = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std\r\n */\r\n//================================================================\r\nvar LogicError_1 = require(\"./LogicError\");\r\n/**\r\n * Out-of-range Exception.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar OutOfRange = /** @class */ (function (_super) {\r\n __extends(OutOfRange, _super);\r\n /**\r\n * Initializer Constructor.\r\n *\r\n * @param message The error messgae.\r\n */\r\n function OutOfRange(message) {\r\n return _super.call(this, message) || this;\r\n }\r\n return OutOfRange;\r\n}(LogicError_1.LogicError));\r\nexports.OutOfRange = OutOfRange;\r\n//# sourceMappingURL=OutOfRange.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __read = (this && this.__read) || function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n};\r\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.UniqueSet = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std.base\r\n */\r\n//================================================================\r\nvar SetContainer_1 = require(\"./SetContainer\");\r\nvar ErrorGenerator_1 = require(\"../../internal/exception/ErrorGenerator\");\r\n/**\r\n * Basic set container blocking duplicated key.\r\n *\r\n * @template Key Key type\r\n * @template Source Derived type extending this {@link UniqueSet}\r\n * @template IteratorT Iterator type\r\n * @template ReverseT Reverse iterator type\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar UniqueSet = /** @class */ (function (_super) {\r\n __extends(UniqueSet, _super);\r\n function UniqueSet() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /* ---------------------------------------------------------\r\n ACCESSOR\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n UniqueSet.prototype.count = function (key) {\r\n return this.find(key).equals(this.end()) ? 0 : 1;\r\n };\r\n UniqueSet.prototype.insert = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return _super.prototype.insert.apply(this, __spreadArray([], __read(args), false));\r\n };\r\n UniqueSet.prototype._Insert_by_range = function (first, last) {\r\n for (; !first.equals(last); first = first.next())\r\n this._Insert_by_key(first.value);\r\n };\r\n UniqueSet.prototype.extract = function (param) {\r\n if (param instanceof this.end().constructor)\r\n return this._Extract_by_iterator(param);\r\n else\r\n return this._Extract_by_val(param);\r\n };\r\n UniqueSet.prototype._Extract_by_val = function (key) {\r\n var it = this.find(key);\r\n if (it.equals(this.end()) === true)\r\n throw ErrorGenerator_1.ErrorGenerator.key_nout_found(this, \"extract\", key);\r\n this._Erase_by_range(it);\r\n return key;\r\n };\r\n UniqueSet.prototype._Extract_by_iterator = function (it) {\r\n if (it.equals(this.end()) === true || this.has(it.value) === false)\r\n return this.end();\r\n this._Erase_by_range(it);\r\n return it;\r\n };\r\n UniqueSet.prototype._Erase_by_val = function (key) {\r\n var it = this.find(key);\r\n if (it.equals(this.end()) === true)\r\n return 0;\r\n this._Erase_by_range(it);\r\n return 1;\r\n };\r\n /* ---------------------------------------------------------\r\n UTILITY\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n UniqueSet.prototype.merge = function (source) {\r\n for (var it = source.begin(); !it.equals(source.end());) {\r\n if (this.has(it.value) === false) {\r\n this.insert(it.value);\r\n it = source.erase(it);\r\n }\r\n else\r\n it = it.next();\r\n }\r\n };\r\n return UniqueSet;\r\n}(SetContainer_1.SetContainer));\r\nexports.UniqueSet = UniqueSet;\r\n//# sourceMappingURL=UniqueSet.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SetContainer = void 0;\r\nvar Container_1 = require(\"./Container\");\r\nvar NativeArrayIterator_1 = require(\"../../internal/iterator/disposable/NativeArrayIterator\");\r\n/**\r\n * Basic set container.\r\n *\r\n * @template Key Key type\r\n * @template Unique Whether duplicated key is blocked or not\r\n * @template Source Derived type extending this {@link SetContainer}\r\n * @template IteratorT Iterator type\r\n * @template ReverseT Reverse iterator type\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar SetContainer = /** @class */ (function (_super) {\r\n __extends(SetContainer, _super);\r\n /* ---------------------------------------------------------\r\n CONSTURCTORS\r\n --------------------------------------------------------- */\r\n /**\r\n * Default Constructor.\r\n */\r\n function SetContainer(factory) {\r\n var _this = _super.call(this) || this;\r\n _this.data_ = factory(_this);\r\n return _this;\r\n }\r\n /**\r\n * @inheritDoc\r\n */\r\n SetContainer.prototype.assign = function (first, last) {\r\n // INSERT\r\n this.clear();\r\n this.insert(first, last);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n SetContainer.prototype.clear = function () {\r\n // TO BE ABSTRACT\r\n this.data_.clear();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n SetContainer.prototype.begin = function () {\r\n return this.data_.begin();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n SetContainer.prototype.end = function () {\r\n return this.data_.end();\r\n };\r\n /* ---------------------------------------------------------\r\n ELEMENTS\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n SetContainer.prototype.has = function (key) {\r\n return !this.find(key).equals(this.end());\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n SetContainer.prototype.size = function () {\r\n return this.data_.size();\r\n };\r\n /* =========================================================\r\n ELEMENTS I/O\r\n - INSERT\r\n - ERASE\r\n - UTILITY\r\n - POST-PROCESS\r\n ============================================================\r\n INSERT\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n SetContainer.prototype.push = function () {\r\n var items = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n items[_i] = arguments[_i];\r\n }\r\n if (items.length === 0)\r\n return this.size();\r\n // INSERT BY RANGE\r\n var first = new NativeArrayIterator_1.NativeArrayIterator(items, 0);\r\n var last = new NativeArrayIterator_1.NativeArrayIterator(items, items.length);\r\n this._Insert_by_range(first, last);\r\n // RETURN SIZE\r\n return this.size();\r\n };\r\n SetContainer.prototype.insert = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (args.length === 1)\r\n return this._Insert_by_key(args[0]);\r\n else if (args[0].next instanceof Function &&\r\n args[1].next instanceof Function)\r\n return this._Insert_by_range(args[0], args[1]);\r\n else\r\n return this._Insert_by_hint(args[0], args[1]);\r\n };\r\n SetContainer.prototype.erase = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (args.length === 1 &&\r\n !(args[0] instanceof this.end().constructor &&\r\n args[0].source() === this))\r\n return this._Erase_by_val(args[0]);\r\n else if (args.length === 1)\r\n return this._Erase_by_range(args[0]);\r\n else\r\n return this._Erase_by_range(args[0], args[1]);\r\n };\r\n SetContainer.prototype._Erase_by_range = function (first, last) {\r\n if (last === void 0) { last = first.next(); }\r\n // ERASE\r\n var it = this.data_.erase(first, last);\r\n // POST-PROCESS\r\n this._Handle_erase(first, last);\r\n return it;\r\n };\r\n return SetContainer;\r\n}(Container_1.Container));\r\nexports.SetContainer = SetContainer;\r\n//# sourceMappingURL=SetContainer.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.get_uid = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std\r\n */\r\n//================================================================\r\nvar Global_1 = require(\"../internal/Global\");\r\n/**\r\n * Get unique identifier.\r\n *\r\n * @param obj Target object.\r\n * @return The identifier number.\r\n */\r\nfunction get_uid(obj) {\r\n // NO UID EXISTS, THEN ISSUE ONE.\r\n if (obj instanceof Object) {\r\n if (obj.hasOwnProperty(\"__get_m_iUID\") === false) {\r\n var uid_1 = ++(0, Global_1._Get_root)().__s_iUID;\r\n Object.defineProperty(obj, \"__get_m_iUID\", {\r\n value: function () {\r\n return uid_1;\r\n },\r\n });\r\n }\r\n // RETURNS\r\n return obj.__get_m_iUID();\r\n }\r\n else if (obj === undefined)\r\n return -1;\r\n // is null\r\n else\r\n return 0;\r\n}\r\nexports.get_uid = get_uid;\r\n//# sourceMappingURL=uid.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports._Get_root = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std.internal\r\n */\r\n//================================================================\r\nvar node_1 = require(\"../utility/node\");\r\n/**\r\n * @internal\r\n */\r\nfunction _Get_root() {\r\n if (__s_pRoot === null) {\r\n __s_pRoot = ((0, node_1.is_node)() ? global : self);\r\n if (__s_pRoot.__s_iUID === undefined)\r\n __s_pRoot.__s_iUID = 0;\r\n }\r\n return __s_pRoot;\r\n}\r\nexports._Get_root = _Get_root;\r\n/**\r\n * @internal\r\n */\r\nvar __s_pRoot = null;\r\n//# sourceMappingURL=Global.js.map","\"use strict\";\r\nvar __values = (this && this.__values) || function(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.hash = void 0;\r\nvar uid_1 = require(\"./uid\");\r\n/**\r\n * Hash function.\r\n *\r\n * @param itemList The items to be hashed.\r\n * @return The hash code.\r\n */\r\nfunction hash() {\r\n var e_1, _a;\r\n var itemList = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n itemList[_i] = arguments[_i];\r\n }\r\n var ret = INIT_VALUE;\r\n try {\r\n for (var itemList_1 = __values(itemList), itemList_1_1 = itemList_1.next(); !itemList_1_1.done; itemList_1_1 = itemList_1.next()) {\r\n var item = itemList_1_1.value;\r\n item = item ? item.valueOf() : item;\r\n var type = typeof item;\r\n if (type === \"boolean\")\r\n // BOOLEAN -> 1 BYTE\r\n ret = _Hash_boolean(item, ret);\r\n else if (type === \"number\" || type === \"bigint\")\r\n // NUMBER -> 8 BYTES\r\n ret = _Hash_number(item, ret);\r\n else if (type === \"string\")\r\n // STRING -> {LENGTH} BYTES\r\n ret = _Hash_string(item, ret);\r\n else if (item instanceof Object &&\r\n item.hashCode instanceof Function) {\r\n var hashed = item.hashCode();\r\n if (itemList.length === 1)\r\n return hashed;\r\n else {\r\n ret = ret ^ hashed;\r\n ret *= MULTIPLIER;\r\n }\r\n } // object | null | undefined\r\n else\r\n ret = _Hash_number((0, uid_1.get_uid)(item), ret);\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (itemList_1_1 && !itemList_1_1.done && (_a = itemList_1.return)) _a.call(itemList_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return Math.abs(ret);\r\n}\r\nexports.hash = hash;\r\nfunction _Hash_boolean(val, ret) {\r\n ret ^= val ? 1 : 0;\r\n ret *= MULTIPLIER;\r\n return ret;\r\n}\r\nfunction _Hash_number(val, ret) {\r\n return _Hash_string(val.toString(), ret);\r\n // // ------------------------------------------\r\n // // IN C++\r\n // // CONSIDER A NUMBER AS A STRING\r\n // // HASH((CHAR*)&VAL, 8)\r\n // // ------------------------------------------\r\n // // CONSTRUCT BUFFER AND BYTE_ARRAY\r\n // const buffer: ArrayBuffer = new ArrayBuffer(8);\r\n // const byteArray: Int8Array = new Int8Array(buffer);\r\n // const valueArray: Float64Array = new Float64Array(buffer);\r\n // valueArray[0] = val;\r\n // for (let i: number = 0; i < byteArray.length; ++i)\r\n // {\r\n // const byte = (byteArray[i] < 0) ? byteArray[i] + 256 : byteArray[i];\r\n // ret ^= byte;\r\n // ret *= _HASH_MULTIPLIER;\r\n // }\r\n // return Math.abs(ret);\r\n}\r\nfunction _Hash_string(str, ret) {\r\n for (var i = 0; i < str.length; ++i) {\r\n ret ^= str.charCodeAt(i);\r\n ret *= MULTIPLIER;\r\n }\r\n return Math.abs(ret);\r\n}\r\n/* ---------------------------------------------------------\r\n RESERVED ITEMS\r\n--------------------------------------------------------- */\r\nvar INIT_VALUE = 2166136261;\r\nvar MULTIPLIER = 16777619;\r\n//# sourceMappingURL=hash.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.greater_equal = exports.greater = exports.less_equal = exports.less = exports.not_equal_to = exports.equal_to = void 0;\r\nvar uid_1 = require(\"./uid\");\r\n/**\r\n * Test whether two arguments are equal.\r\n *\r\n * @param x The first argument to compare.\r\n * @param y The second argument to compare.\r\n * @return Whether two arguments are equal or not.\r\n */\r\nfunction equal_to(x, y) {\r\n // CONVERT TO PRIMITIVE TYPE\r\n x = x ? x.valueOf() : x;\r\n y = y ? y.valueOf() : y;\r\n // DO COMPARE\r\n if (x instanceof Object &&\r\n x.equals instanceof Function)\r\n return x.equals(y);\r\n else\r\n return x === y;\r\n}\r\nexports.equal_to = equal_to;\r\n/**\r\n * Test whether two arguments are not equal.\r\n *\r\n * @param x The first argument to compare.\r\n * @param y The second argument to compare.\r\n * @return Returns `true`, if two arguments are not equal, otherwise `false`.\r\n */\r\nfunction not_equal_to(x, y) {\r\n return !equal_to(x, y);\r\n}\r\nexports.not_equal_to = not_equal_to;\r\n/**\r\n * Test whether *x* is less than *y*.\r\n *\r\n * @param x The first argument to compare.\r\n * @param y The second argument to compare.\r\n * @return Whether *x* is less than *y*.\r\n */\r\nfunction less(x, y) {\r\n // CONVERT TO PRIMITIVE TYPE\r\n x = x.valueOf();\r\n y = y.valueOf();\r\n // DO COMPARE\r\n if (x instanceof Object)\r\n if (x.less instanceof Function)\r\n // has less()\r\n return x.less(y);\r\n else\r\n return (0, uid_1.get_uid)(x) < (0, uid_1.get_uid)(y);\r\n else\r\n return x < y;\r\n}\r\nexports.less = less;\r\n/**\r\n * Test whether *x* is less than or equal to *y*.\r\n *\r\n * @param x The first argument to compare.\r\n * @param y The second argument to compare.\r\n * @return Whether *x* is less than or equal to *y*.\r\n */\r\nfunction less_equal(x, y) {\r\n return less(x, y) || equal_to(x, y);\r\n}\r\nexports.less_equal = less_equal;\r\n/**\r\n * Test whether *x* is greater than *y*.\r\n *\r\n * @param x The first argument to compare.\r\n * @param y The second argument to compare.\r\n * @return Whether *x* is greater than *y*.\r\n */\r\nfunction greater(x, y) {\r\n return !less_equal(x, y);\r\n}\r\nexports.greater = greater;\r\n/**\r\n * Test whether *x* is greater than or equal to *y*.\r\n *\r\n * @param x The first argument to compare.\r\n * @param y The second argument to compare.\r\n * @return Whether *x* is greater than or equal to *y*.\r\n */\r\nfunction greater_equal(x, y) {\r\n return !less(x, y);\r\n}\r\nexports.greater_equal = greater_equal;\r\n//# sourceMappingURL=comparators.js.map","\"use strict\";\r\nvar __read = (this && this.__read) || function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n};\r\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.IHashContainer = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std.internal\r\n */\r\n//================================================================\r\nvar IAssociativeContainer_1 = require(\"./IAssociativeContainer\");\r\nvar hash_1 = require(\"../../../functional/hash\");\r\nvar comparators_1 = require(\"../../../functional/comparators\");\r\nvar IHashContainer;\r\n(function (IHashContainer) {\r\n /**\r\n * @internal\r\n */\r\n function construct(source, Source, bucketFactory) {\r\n var args = [];\r\n for (var _i = 3; _i < arguments.length; _i++) {\r\n args[_i - 3] = arguments[_i];\r\n }\r\n // DECLARE MEMBERS\r\n var post_process = null;\r\n var hash_function = hash_1.hash;\r\n var key_eq = comparators_1.equal_to;\r\n //----\r\n // INITIALIZE MEMBERS AND POST-PROCESS\r\n //----\r\n // BRANCH - METHOD OVERLOADINGS\r\n if (args.length === 1 && args[0] instanceof Source) {\r\n // PARAMETERS\r\n var container_1 = args[0];\r\n hash_function = container_1.hash_function();\r\n key_eq = container_1.key_eq();\r\n // COPY CONSTRUCTOR\r\n post_process = function () {\r\n var first = container_1.begin();\r\n var last = container_1.end();\r\n source.assign(first, last);\r\n };\r\n }\r\n else {\r\n var tuple = IAssociativeContainer_1.IAssociativeContainer.construct.apply(IAssociativeContainer_1.IAssociativeContainer, __spreadArray([source], __read(args), false));\r\n post_process = tuple.ramda;\r\n if (tuple.tail.length >= 1)\r\n hash_function = tuple.tail[0];\r\n if (tuple.tail.length >= 2)\r\n key_eq = tuple.tail[1];\r\n }\r\n //----\r\n // DO PROCESS\r\n //----\r\n // CONSTRUCT BUCKET\r\n bucketFactory(hash_function, key_eq);\r\n // ACT POST-PROCESS\r\n if (post_process !== null)\r\n post_process();\r\n }\r\n IHashContainer.construct = construct;\r\n})(IHashContainer = exports.IHashContainer || (exports.IHashContainer = {}));\r\n//# sourceMappingURL=IHashContainer.js.map","\"use strict\";\r\nvar __read = (this && this.__read) || function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n};\r\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.IAssociativeContainer = void 0;\r\nvar IAssociativeContainer;\r\n(function (IAssociativeContainer) {\r\n /**\r\n * @internal\r\n */\r\n function construct(source) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n var ramda;\r\n var tail;\r\n if (args.length >= 1 && args[0] instanceof Array) {\r\n // INITIALIZER LIST CONSTRUCTOR\r\n ramda = function () {\r\n var items = args[0];\r\n source.push.apply(source, __spreadArray([], __read(items), false));\r\n };\r\n tail = args.slice(1);\r\n }\r\n else if (args.length >= 2 &&\r\n args[0].next instanceof Function &&\r\n args[1].next instanceof Function) {\r\n // RANGE CONSTRUCTOR\r\n ramda = function () {\r\n var first = args[0];\r\n var last = args[1];\r\n source.assign(first, last);\r\n };\r\n tail = args.slice(2);\r\n }\r\n else {\r\n // DEFAULT CONSTRUCTOR\r\n ramda = null;\r\n tail = args;\r\n }\r\n return { ramda: ramda, tail: tail };\r\n }\r\n IAssociativeContainer.construct = construct;\r\n})(IAssociativeContainer = exports.IAssociativeContainer || (exports.IAssociativeContainer = {}));\r\n//# sourceMappingURL=IAssociativeContainer.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ListIterator = void 0;\r\nvar ErrorGenerator_1 = require(\"../exception/ErrorGenerator\");\r\n/**\r\n * Basic List Iterator.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar ListIterator = /** @class */ (function () {\r\n /* ---------------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------------- */\r\n function ListIterator(prev, next, value) {\r\n this.prev_ = prev;\r\n this.next_ = next;\r\n this.value_ = value;\r\n }\r\n /**\r\n * @internal\r\n */\r\n ListIterator._Set_prev = function (it, prev) {\r\n it.prev_ = prev;\r\n };\r\n /**\r\n * @internal\r\n */\r\n ListIterator._Set_next = function (it, next) {\r\n it.next_ = next;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ListIterator.prototype.prev = function () {\r\n return this.prev_;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ListIterator.prototype.next = function () {\r\n return this.next_;\r\n };\r\n Object.defineProperty(ListIterator.prototype, \"value\", {\r\n /**\r\n * @inheritDoc\r\n */\r\n get: function () {\r\n this._Try_value();\r\n return this.value_;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ListIterator.prototype._Try_value = function () {\r\n if (this.value_ === undefined &&\r\n this.equals(this.source().end()) === true)\r\n throw ErrorGenerator_1.ErrorGenerator.iterator_end_value(this.source());\r\n };\r\n /* ---------------------------------------------------------------\r\n COMPARISON\r\n --------------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n ListIterator.prototype.equals = function (obj) {\r\n return this === obj;\r\n };\r\n return ListIterator;\r\n}());\r\nexports.ListIterator = ListIterator;\r\n//# sourceMappingURL=ListIterator.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.next = exports.prev = exports.advance = exports.distance = exports.size = exports.empty = void 0;\r\nvar InvalidArgument_1 = require(\"../exception/InvalidArgument\");\r\n/* =========================================================\r\n GLOBAL FUNCTIONS\r\n - ACCESSORS\r\n - MOVERS\r\n - FACTORIES\r\n============================================================\r\n ACCESSORS\r\n--------------------------------------------------------- */\r\n/**\r\n * Test whether a container is empty.\r\n *\r\n * @param source Target container.\r\n * @return Whether empty or not.\r\n */\r\nfunction empty(source) {\r\n if (source instanceof Array)\r\n return source.length !== 0;\r\n else\r\n return source.empty();\r\n}\r\nexports.empty = empty;\r\n/**\r\n * Get number of elements of a container.\r\n *\r\n * @param source Target container.\r\n * @return The number of elements in the container.\r\n */\r\nfunction size(source) {\r\n if (source instanceof Array)\r\n return source.length;\r\n else\r\n return source.size();\r\n}\r\nexports.size = size;\r\nfunction distance(first, last) {\r\n if (first.index instanceof Function)\r\n return _Distance_via_index(first, last);\r\n var ret = 0;\r\n for (; !first.equals(last); first = first.next())\r\n ++ret;\r\n return ret;\r\n}\r\nexports.distance = distance;\r\nfunction _Distance_via_index(first, last) {\r\n var x = first.index();\r\n var y = last.index();\r\n if (first.base instanceof Function)\r\n return x - y;\r\n else\r\n return y - x;\r\n}\r\nfunction advance(it, n) {\r\n if (n === 0)\r\n return it;\r\n else if (it.advance instanceof Function)\r\n return it.advance(n);\r\n var stepper;\r\n if (n < 0) {\r\n if (!(it.prev instanceof Function))\r\n throw new InvalidArgument_1.InvalidArgument(\"Error on std.advance(): parametric iterator is not a bi-directional iterator, thus advancing to negative direction is not possible.\");\r\n stepper = function (it) { return it.prev(); };\r\n n = -n;\r\n }\r\n else\r\n stepper = function (it) { return it.next(); };\r\n while (n-- > 0)\r\n it = stepper(it);\r\n return it;\r\n}\r\nexports.advance = advance;\r\n/**\r\n * Get previous iterator.\r\n *\r\n * @param it Iterator to move.\r\n * @param n Step to move prev.\r\n * @return An iterator moved to prev *n* steps.\r\n */\r\nfunction prev(it, n) {\r\n if (n === void 0) { n = 1; }\r\n if (n === 1)\r\n return it.prev();\r\n else\r\n return advance(it, -n);\r\n}\r\nexports.prev = prev;\r\n/**\r\n * Get next iterator.\r\n *\r\n * @param it Iterator to move.\r\n * @param n Step to move next.\r\n * @return Iterator moved to next *n* steps.\r\n */\r\nfunction next(it, n) {\r\n if (n === void 0) { n = 1; }\r\n if (n === 1)\r\n return it.next();\r\n else\r\n return advance(it, n);\r\n}\r\nexports.next = next;\r\n//# sourceMappingURL=global.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __read = (this && this.__read) || function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ListContainer = void 0;\r\nvar Container_1 = require(\"../../../base/container/Container\");\r\nvar ListIterator_1 = require(\"../../iterator/ListIterator\");\r\nvar Repeater_1 = require(\"../../iterator/disposable/Repeater\");\r\nvar NativeArrayIterator_1 = require(\"../../iterator/disposable/NativeArrayIterator\");\r\nvar global_1 = require(\"../../../iterator/global\");\r\nvar ErrorGenerator_1 = require(\"../../exception/ErrorGenerator\");\r\n/**\r\n * Basic List Container.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar ListContainer = /** @class */ (function (_super) {\r\n __extends(ListContainer, _super);\r\n /* ---------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------- */\r\n /**\r\n * Default Constructor.\r\n */\r\n function ListContainer() {\r\n var _this = _super.call(this) || this;\r\n // INIT MEMBERS\r\n _this.end_ = _this._Create_iterator(null, null);\r\n _this.clear();\r\n return _this;\r\n }\r\n ListContainer.prototype.assign = function (par1, par2) {\r\n this.clear();\r\n this.insert(this.end(), par1, par2);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ListContainer.prototype.clear = function () {\r\n // DISCONNECT NODES\r\n ListIterator_1.ListIterator._Set_prev(this.end_, this.end_);\r\n ListIterator_1.ListIterator._Set_next(this.end_, this.end_);\r\n // RE-SIZE -> 0\r\n this.begin_ = this.end_;\r\n this.size_ = 0;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ListContainer.prototype.resize = function (n) {\r\n var expansion = n - this.size();\r\n if (expansion > 0)\r\n this.insert(this.end(), expansion, undefined);\r\n else if (expansion < 0)\r\n this.erase((0, global_1.advance)(this.end(), -expansion), this.end());\r\n };\r\n /* ---------------------------------------------------------\r\n ACCESSORS\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n ListContainer.prototype.begin = function () {\r\n return this.begin_;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ListContainer.prototype.end = function () {\r\n return this.end_;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ListContainer.prototype.size = function () {\r\n return this.size_;\r\n };\r\n /* =========================================================\r\n ELEMENTS I/O\r\n - PUSH & POP\r\n - INSERT\r\n - ERASE\r\n - POST-PROCESS\r\n ============================================================\r\n PUSH & POP\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n ListContainer.prototype.push_front = function (val) {\r\n this.insert(this.begin_, val);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ListContainer.prototype.push_back = function (val) {\r\n this.insert(this.end_, val);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ListContainer.prototype.pop_front = function () {\r\n if (this.empty() === true)\r\n throw ErrorGenerator_1.ErrorGenerator.empty(this.end_.source().constructor.name, \"pop_front\");\r\n this.erase(this.begin_);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ListContainer.prototype.pop_back = function () {\r\n if (this.empty() === true)\r\n throw ErrorGenerator_1.ErrorGenerator.empty(this.end_.source().constructor.name, \"pop_back\");\r\n this.erase(this.end_.prev());\r\n };\r\n /* ---------------------------------------------------------\r\n INSERT\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n ListContainer.prototype.push = function () {\r\n var items = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n items[_i] = arguments[_i];\r\n }\r\n if (items.length === 0)\r\n return this.size();\r\n // INSERT BY RANGE\r\n var first = new NativeArrayIterator_1.NativeArrayIterator(items, 0);\r\n var last = new NativeArrayIterator_1.NativeArrayIterator(items, items.length);\r\n this._Insert_by_range(this.end(), first, last);\r\n // RETURN SIZE\r\n return this.size();\r\n };\r\n ListContainer.prototype.insert = function (pos) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n // VALIDATION\r\n if (pos.source() !== this.end_.source())\r\n throw ErrorGenerator_1.ErrorGenerator.not_my_iterator(this.end_.source(), \"insert\");\r\n else if (pos.erased_ === true)\r\n throw ErrorGenerator_1.ErrorGenerator.erased_iterator(this.end_.source(), \"insert\");\r\n // BRANCHES\r\n if (args.length === 1)\r\n return this._Insert_by_repeating_val(pos, 1, args[0]);\r\n else if (args.length === 2 && typeof args[0] === \"number\")\r\n return this._Insert_by_repeating_val(pos, args[0], args[1]);\r\n else\r\n return this._Insert_by_range(pos, args[0], args[1]);\r\n };\r\n ListContainer.prototype._Insert_by_repeating_val = function (position, n, val) {\r\n var first = new Repeater_1.Repeater(0, val);\r\n var last = new Repeater_1.Repeater(n);\r\n return this._Insert_by_range(position, first, last);\r\n };\r\n ListContainer.prototype._Insert_by_range = function (position, begin, end) {\r\n var prev = position.prev();\r\n var first = null;\r\n var size = 0;\r\n for (var it = begin; it.equals(end) === false; it = it.next()) {\r\n // CONSTRUCT ITEM, THE NEW ELEMENT\r\n var item = this._Create_iterator(prev, null, it.value);\r\n if (size === 0)\r\n first = item;\r\n // PLACE ITEM ON THE NEXT OF \"PREV\"\r\n ListIterator_1.ListIterator._Set_next(prev, item);\r\n // SHIFT CURRENT ITEM TO PREVIOUS\r\n prev = item;\r\n ++size;\r\n }\r\n // WILL FIRST BE THE BEGIN?\r\n if (position.equals(this.begin()) === true)\r\n this.begin_ = first;\r\n // CONNECT BETWEEN LAST AND POSITION\r\n ListIterator_1.ListIterator._Set_next(prev, position);\r\n ListIterator_1.ListIterator._Set_prev(position, prev);\r\n this.size_ += size;\r\n return first;\r\n };\r\n ListContainer.prototype.erase = function (first, last) {\r\n if (last === void 0) { last = first.next(); }\r\n return this._Erase_by_range(first, last);\r\n };\r\n ListContainer.prototype._Erase_by_range = function (first, last) {\r\n // VALIDATION\r\n if (first.source() !== this.end_.source())\r\n throw ErrorGenerator_1.ErrorGenerator.not_my_iterator(this.end_.source(), \"insert\");\r\n else if (first.erased_ === true)\r\n throw ErrorGenerator_1.ErrorGenerator.erased_iterator(this.end_.source(), \"insert\");\r\n else if (first.equals(this.end_))\r\n return this.end_;\r\n // FIND PREV AND NEXT\r\n var prev = first.prev();\r\n // SHRINK\r\n ListIterator_1.ListIterator._Set_next(prev, last);\r\n ListIterator_1.ListIterator._Set_prev(last, prev);\r\n for (var it = first; !it.equals(last); it = it.next()) {\r\n it.erased_ = true;\r\n --this.size_;\r\n }\r\n if (first.equals(this.begin_))\r\n this.begin_ = last;\r\n return last;\r\n };\r\n /* ---------------------------------------------------------\r\n SWAP\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n ListContainer.prototype.swap = function (obj) {\r\n var _a, _b, _c;\r\n _a = __read([obj.begin_, this.begin_], 2), this.begin_ = _a[0], obj.begin_ = _a[1];\r\n _b = __read([obj.end_, this.end_], 2), this.end_ = _b[0], obj.end_ = _b[1];\r\n _c = __read([obj.size_, this.size_], 2), this.size_ = _c[0], obj.size_ = _c[1];\r\n };\r\n return ListContainer;\r\n}(Container_1.Container));\r\nexports.ListContainer = ListContainer;\r\n//# sourceMappingURL=ListContainer.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Repeater = void 0;\r\nvar Repeater = /** @class */ (function () {\r\n /* ---------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------- */\r\n function Repeater(index, value) {\r\n this.index_ = index;\r\n this.value_ = value;\r\n }\r\n /* ---------------------------------------------------------\r\n ACCESSORS\r\n --------------------------------------------------------- */\r\n Repeater.prototype.index = function () {\r\n return this.index_;\r\n };\r\n Object.defineProperty(Repeater.prototype, \"value\", {\r\n get: function () {\r\n return this.value_;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /* ---------------------------------------------------------\r\n MOVERS & COMPARE\r\n --------------------------------------------------------- */\r\n Repeater.prototype.next = function () {\r\n ++this.index_;\r\n return this;\r\n };\r\n Repeater.prototype.equals = function (obj) {\r\n return this.index_ === obj.index_;\r\n };\r\n return Repeater;\r\n}());\r\nexports.Repeater = Repeater;\r\n//# sourceMappingURL=Repeater.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ReverseIterator = void 0;\r\n/**\r\n * Basic reverse iterator.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar ReverseIterator = /** @class */ (function () {\r\n /* ---------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------- */\r\n /**\r\n * Initializer Constructor.\r\n *\r\n * @param base The base iterator.\r\n */\r\n function ReverseIterator(base) {\r\n this.base_ = base.prev();\r\n }\r\n /* ---------------------------------------------------------\r\n ACCESSORS\r\n --------------------------------------------------------- */\r\n /**\r\n * Get source container.\r\n *\r\n * @return The source container.\r\n */\r\n ReverseIterator.prototype.source = function () {\r\n return this.base_.source();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ReverseIterator.prototype.base = function () {\r\n return this.base_.next();\r\n };\r\n Object.defineProperty(ReverseIterator.prototype, \"value\", {\r\n /**\r\n * @inheritDoc\r\n */\r\n get: function () {\r\n return this.base_.value;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /* ---------------------------------------------------------\r\n MOVERS\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n ReverseIterator.prototype.prev = function () {\r\n // this.base().next()\r\n return this._Create_neighbor(this.base().next());\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ReverseIterator.prototype.next = function () {\r\n // this.base().prev()\r\n return this._Create_neighbor(this.base_);\r\n };\r\n /* ---------------------------------------------------------\r\n COMPARES\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n ReverseIterator.prototype.equals = function (obj) {\r\n return this.base_.equals(obj.base_);\r\n };\r\n return ReverseIterator;\r\n}());\r\nexports.ReverseIterator = ReverseIterator;\r\n//# sourceMappingURL=ReverseIterator.js.map","\"use strict\";\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std.internal\r\n */\r\n//================================================================\r\nvar __values = (this && this.__values) || function(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.HashBuckets = void 0;\r\n/**\r\n * Hash buckets\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar HashBuckets = /** @class */ (function () {\r\n /* ---------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------- */\r\n function HashBuckets(fetcher, hasher) {\r\n this.fetcher_ = fetcher;\r\n this.hasher_ = hasher;\r\n this.max_load_factor_ = DEFAULT_MAX_FACTOR;\r\n this.data_ = [];\r\n this.size_ = 0;\r\n this.initialize();\r\n }\r\n HashBuckets.prototype.clear = function () {\r\n this.data_ = [];\r\n this.size_ = 0;\r\n this.initialize();\r\n };\r\n HashBuckets.prototype.rehash = function (length) {\r\n var e_1, _a, e_2, _b;\r\n length = Math.max(length, MIN_BUCKET_COUNT);\r\n var data = [];\r\n for (var i = 0; i < length; ++i)\r\n data.push([]);\r\n try {\r\n for (var _c = __values(this.data_), _d = _c.next(); !_d.done; _d = _c.next()) {\r\n var row = _d.value;\r\n try {\r\n for (var row_1 = (e_2 = void 0, __values(row)), row_1_1 = row_1.next(); !row_1_1.done; row_1_1 = row_1.next()) {\r\n var elem = row_1_1.value;\r\n var index = this.hasher_(this.fetcher_(elem)) % data.length;\r\n data[index].push(elem);\r\n }\r\n }\r\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\r\n finally {\r\n try {\r\n if (row_1_1 && !row_1_1.done && (_b = row_1.return)) _b.call(row_1);\r\n }\r\n finally { if (e_2) throw e_2.error; }\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n this.data_ = data;\r\n };\r\n HashBuckets.prototype.reserve = function (length) {\r\n if (length > this.capacity()) {\r\n length = Math.floor(length / this.max_load_factor_);\r\n this.rehash(length);\r\n }\r\n };\r\n HashBuckets.prototype.initialize = function () {\r\n for (var i = 0; i < MIN_BUCKET_COUNT; ++i)\r\n this.data_.push([]);\r\n };\r\n /* ---------------------------------------------------------\r\n ACCESSORS\r\n --------------------------------------------------------- */\r\n HashBuckets.prototype.length = function () {\r\n return this.data_.length;\r\n };\r\n HashBuckets.prototype.capacity = function () {\r\n return this.data_.length * this.max_load_factor_;\r\n };\r\n HashBuckets.prototype.at = function (index) {\r\n return this.data_[index];\r\n };\r\n HashBuckets.prototype.load_factor = function () {\r\n return this.size_ / this.length();\r\n };\r\n HashBuckets.prototype.max_load_factor = function (z) {\r\n if (z === void 0) { z = null; }\r\n if (z === null)\r\n return this.max_load_factor_;\r\n else\r\n this.max_load_factor_ = z;\r\n };\r\n HashBuckets.prototype.hash_function = function () {\r\n return this.hasher_;\r\n };\r\n /* ---------------------------------------------------------\r\n ELEMENTS I/O\r\n --------------------------------------------------------- */\r\n HashBuckets.prototype.index = function (elem) {\r\n return this.hasher_(this.fetcher_(elem)) % this.length();\r\n };\r\n HashBuckets.prototype.insert = function (val) {\r\n var capacity = this.capacity();\r\n if (++this.size_ > capacity)\r\n this.reserve(capacity * 2);\r\n var index = this.index(val);\r\n this.data_[index].push(val);\r\n };\r\n HashBuckets.prototype.erase = function (val) {\r\n var index = this.index(val);\r\n var bucket = this.data_[index];\r\n for (var i = 0; i < bucket.length; ++i)\r\n if (bucket[i] === val) {\r\n bucket.splice(i, 1);\r\n --this.size_;\r\n break;\r\n }\r\n };\r\n return HashBuckets;\r\n}());\r\nexports.HashBuckets = HashBuckets;\r\nvar MIN_BUCKET_COUNT = 10;\r\nvar DEFAULT_MAX_FACTOR = 1.0;\r\n//# sourceMappingURL=HashBuckets.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.make_pair = exports.Pair = void 0;\r\nvar hash_1 = require(\"../functional/hash\");\r\nvar comparators_1 = require(\"../functional/comparators\");\r\n/**\r\n * Pair of two elements.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar Pair = /** @class */ (function () {\r\n /* ---------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------- */\r\n /**\r\n * Initializer Constructor.\r\n *\r\n * @param first The first element.\r\n * @param second The second element.\r\n */\r\n function Pair(first, second) {\r\n this.first = first;\r\n this.second = second;\r\n }\r\n /* ---------------------------------------------------------\r\n COMPARISON\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n Pair.prototype.equals = function (pair) {\r\n return ((0, comparators_1.equal_to)(this.first, pair.first) &&\r\n (0, comparators_1.equal_to)(this.second, pair.second));\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n Pair.prototype.less = function (pair) {\r\n if ((0, comparators_1.equal_to)(this.first, pair.first) === false)\r\n return (0, comparators_1.less)(this.first, pair.first);\r\n else\r\n return (0, comparators_1.less)(this.second, pair.second);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n Pair.prototype.hashCode = function () {\r\n return (0, hash_1.hash)(this.first, this.second);\r\n };\r\n return Pair;\r\n}());\r\nexports.Pair = Pair;\r\n/**\r\n * Create a {@link Pair}.\r\n *\r\n * @param first The 1st element.\r\n * @param second The 2nd element.\r\n *\r\n * @return A {@link Pair} object.\r\n */\r\nfunction make_pair(first, second) {\r\n return new Pair(first, second);\r\n}\r\nexports.make_pair = make_pair;\r\n//# sourceMappingURL=Pair.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __read = (this && this.__read) || function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n};\r\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.HashSet = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std\r\n */\r\n//================================================================\r\nvar UniqueSet_1 = require(\"../base/container/UniqueSet\");\r\nvar IHashContainer_1 = require(\"../internal/container/associative/IHashContainer\");\r\nvar SetElementList_1 = require(\"../internal/container/associative/SetElementList\");\r\nvar SetHashBuckets_1 = require(\"../internal/hash/SetHashBuckets\");\r\nvar Pair_1 = require(\"../utility/Pair\");\r\n/**\r\n * Unique-key Set based on Hash buckets.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar HashSet = /** @class */ (function (_super) {\r\n __extends(HashSet, _super);\r\n function HashSet() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var _this = _super.call(this, function (thisArg) { return new SetElementList_1.SetElementList(thisArg); }) || this;\r\n IHashContainer_1.IHashContainer.construct.apply(IHashContainer_1.IHashContainer, __spreadArray([_this,\r\n HashSet,\r\n function (hash, pred) {\r\n _this.buckets_ = new SetHashBuckets_1.SetHashBuckets(_this, hash, pred);\r\n }], __read(args), false));\r\n return _this;\r\n }\r\n /* ---------------------------------------------------------\r\n ASSIGN & CLEAR\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n HashSet.prototype.clear = function () {\r\n this.buckets_.clear();\r\n _super.prototype.clear.call(this);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashSet.prototype.swap = function (obj) {\r\n var _a, _b;\r\n // SWAP CONTENTS\r\n _a = __read([obj.data_, this.data_], 2), this.data_ = _a[0], obj.data_ = _a[1];\r\n SetElementList_1.SetElementList._Swap_associative(this.data_, obj.data_);\r\n // SWAP BUCKETS\r\n SetHashBuckets_1.SetHashBuckets._Swap_source(this.buckets_, obj.buckets_);\r\n _b = __read([obj.buckets_, this.buckets_], 2), this.buckets_ = _b[0], obj.buckets_ = _b[1];\r\n };\r\n /* =========================================================\r\n ACCESSORS\r\n - MEMBER\r\n - HASH\r\n ============================================================\r\n MEMBER\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n HashSet.prototype.find = function (key) {\r\n return this.buckets_.find(key);\r\n };\r\n HashSet.prototype.begin = function (index) {\r\n if (index === void 0) { index = null; }\r\n if (index === null)\r\n return _super.prototype.begin.call(this);\r\n else\r\n return this.buckets_.at(index)[0];\r\n };\r\n HashSet.prototype.end = function (index) {\r\n if (index === void 0) { index = null; }\r\n if (index === null)\r\n return _super.prototype.end.call(this);\r\n else {\r\n var bucket = this.buckets_.at(index);\r\n return bucket[bucket.length - 1].next();\r\n }\r\n };\r\n HashSet.prototype.rbegin = function (index) {\r\n if (index === void 0) { index = null; }\r\n return this.end(index).reverse();\r\n };\r\n HashSet.prototype.rend = function (index) {\r\n if (index === void 0) { index = null; }\r\n return this.begin(index).reverse();\r\n };\r\n /* ---------------------------------------------------------\r\n HASH\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n HashSet.prototype.bucket_count = function () {\r\n return this.buckets_.length();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashSet.prototype.bucket_size = function (n) {\r\n return this.buckets_.at(n).length;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashSet.prototype.load_factor = function () {\r\n return this.buckets_.load_factor();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashSet.prototype.hash_function = function () {\r\n return this.buckets_.hash_function();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashSet.prototype.key_eq = function () {\r\n return this.buckets_.key_eq();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashSet.prototype.bucket = function (key) {\r\n return this.hash_function()(key) % this.buckets_.length();\r\n };\r\n HashSet.prototype.max_load_factor = function (z) {\r\n if (z === void 0) { z = null; }\r\n return this.buckets_.max_load_factor(z);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashSet.prototype.reserve = function (n) {\r\n this.buckets_.reserve(n);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashSet.prototype.rehash = function (n) {\r\n this.buckets_.rehash(n);\r\n };\r\n /* =========================================================\r\n ELEMENTS I/O\r\n - INSERT\r\n - POST-PROCESS\r\n - SWAP\r\n ============================================================\r\n INSERT\r\n --------------------------------------------------------- */\r\n HashSet.prototype._Insert_by_key = function (key) {\r\n // TEST WHETHER EXIST\r\n var it = this.find(key);\r\n if (it.equals(this.end()) === false)\r\n return new Pair_1.Pair(it, false);\r\n // INSERT\r\n this.data_.push(key);\r\n it = it.prev();\r\n // POST-PROCESS\r\n this._Handle_insert(it, it.next());\r\n return new Pair_1.Pair(it, true);\r\n };\r\n HashSet.prototype._Insert_by_hint = function (hint, key) {\r\n // FIND DUPLICATED KEY\r\n var it = this.find(key);\r\n if (it.equals(this.end()) === true) {\r\n // INSERT\r\n it = this.data_.insert(hint, key);\r\n // POST-PROCESS\r\n this._Handle_insert(it, it.next());\r\n }\r\n return it;\r\n };\r\n /* ---------------------------------------------------------\r\n POST-PROCESS\r\n --------------------------------------------------------- */\r\n HashSet.prototype._Handle_insert = function (first, last) {\r\n for (; !first.equals(last); first = first.next())\r\n this.buckets_.insert(first);\r\n };\r\n HashSet.prototype._Handle_erase = function (first, last) {\r\n for (; !first.equals(last); first = first.next())\r\n this.buckets_.erase(first);\r\n };\r\n return HashSet;\r\n}(UniqueSet_1.UniqueSet));\r\nexports.HashSet = HashSet;\r\n/**\r\n *\r\n */\r\n(function (HashSet) {\r\n // BODY\r\n HashSet.Iterator = SetElementList_1.SetElementList.Iterator;\r\n HashSet.ReverseIterator = SetElementList_1.SetElementList.ReverseIterator;\r\n})(HashSet = exports.HashSet || (exports.HashSet = {}));\r\nexports.HashSet = HashSet;\r\n//# sourceMappingURL=HashSet.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __read = (this && this.__read) || function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SetElementList = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std.internal\r\n */\r\n//================================================================\r\nvar ListContainer_1 = require(\"../linear/ListContainer\");\r\nvar ListIterator_1 = require(\"../../iterator/ListIterator\");\r\nvar ReverseIterator_1 = require(\"../../iterator/ReverseIterator\");\r\n/**\r\n * Doubly Linked List storing set elements.\r\n *\r\n * @template Key Key type\r\n * @template Unique Whether duplicated key is blocked or not\r\n * @template Source Source container type\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar SetElementList = /** @class */ (function (_super) {\r\n __extends(SetElementList, _super);\r\n /* ---------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------- */\r\n function SetElementList(associative) {\r\n var _this = _super.call(this) || this;\r\n _this.associative_ = associative;\r\n return _this;\r\n }\r\n SetElementList.prototype._Create_iterator = function (prev, next, val) {\r\n return SetElementList.Iterator.create(this, prev, next, val);\r\n };\r\n /**\r\n * @internal\r\n */\r\n SetElementList._Swap_associative = function (x, y) {\r\n var _a;\r\n _a = __read([y.associative_, x.associative_], 2), x.associative_ = _a[0], y.associative_ = _a[1];\r\n };\r\n /* ---------------------------------------------------------\r\n ACCESSORS\r\n --------------------------------------------------------- */\r\n SetElementList.prototype.associative = function () {\r\n return this.associative_;\r\n };\r\n return SetElementList;\r\n}(ListContainer_1.ListContainer));\r\nexports.SetElementList = SetElementList;\r\n/**\r\n *\r\n */\r\n(function (SetElementList) {\r\n /**\r\n * Iterator of set container storing elements in a list.\r\n *\r\n * @template Key Key type\r\n * @template Unique Whether duplicated key is blocked or not\r\n * @template Source Source container type\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\n var Iterator = /** @class */ (function (_super) {\r\n __extends(Iterator, _super);\r\n /* ---------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------- */\r\n function Iterator(list, prev, next, val) {\r\n var _this = _super.call(this, prev, next, val) || this;\r\n _this.source_ = list;\r\n return _this;\r\n }\r\n /**\r\n * @internal\r\n */\r\n Iterator.create = function (list, prev, next, val) {\r\n return new Iterator(list, prev, next, val);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n Iterator.prototype.reverse = function () {\r\n return new ReverseIterator(this);\r\n };\r\n /* ---------------------------------------------------------\r\n ACCESSORS\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n Iterator.prototype.source = function () {\r\n return this.source_.associative();\r\n };\r\n return Iterator;\r\n }(ListIterator_1.ListIterator));\r\n SetElementList.Iterator = Iterator;\r\n /**\r\n * Reverser iterator of set container storing elements in a list.\r\n *\r\n * @template Key Key type\r\n * @template Unique Whether duplicated key is blocked or not\r\n * @template Source Source container type\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\n var ReverseIterator = /** @class */ (function (_super) {\r\n __extends(ReverseIterator, _super);\r\n function ReverseIterator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ReverseIterator.prototype._Create_neighbor = function (base) {\r\n return new ReverseIterator(base);\r\n };\r\n return ReverseIterator;\r\n }(ReverseIterator_1.ReverseIterator));\r\n SetElementList.ReverseIterator = ReverseIterator;\r\n})(SetElementList = exports.SetElementList || (exports.SetElementList = {}));\r\nexports.SetElementList = SetElementList;\r\n//# sourceMappingURL=SetElementList.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __read = (this && this.__read) || function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n};\r\nvar __values = (this && this.__values) || function(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SetHashBuckets = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std.internal\r\n */\r\n//================================================================\r\nvar HashBuckets_1 = require(\"./HashBuckets\");\r\n/**\r\n * Hash buckets for set containers\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar SetHashBuckets = /** @class */ (function (_super) {\r\n __extends(SetHashBuckets, _super);\r\n /* ---------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------- */\r\n /**\r\n * Initializer Constructor\r\n *\r\n * @param source Source set container\r\n * @param hasher Hash function\r\n * @param pred Equality function\r\n */\r\n function SetHashBuckets(source, hasher, pred) {\r\n var _this = _super.call(this, fetcher, hasher) || this;\r\n _this.source_ = source;\r\n _this.key_eq_ = pred;\r\n return _this;\r\n }\r\n /**\r\n * @internal\r\n */\r\n SetHashBuckets._Swap_source = function (x, y) {\r\n var _a;\r\n _a = __read([y.source_, x.source_], 2), x.source_ = _a[0], y.source_ = _a[1];\r\n };\r\n /* ---------------------------------------------------------\r\n FINDERS\r\n --------------------------------------------------------- */\r\n SetHashBuckets.prototype.key_eq = function () {\r\n return this.key_eq_;\r\n };\r\n SetHashBuckets.prototype.find = function (val) {\r\n var e_1, _a;\r\n var index = this.hash_function()(val) % this.length();\r\n var bucket = this.at(index);\r\n try {\r\n for (var bucket_1 = __values(bucket), bucket_1_1 = bucket_1.next(); !bucket_1_1.done; bucket_1_1 = bucket_1.next()) {\r\n var it = bucket_1_1.value;\r\n if (this.key_eq_(it.value, val))\r\n return it;\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (bucket_1_1 && !bucket_1_1.done && (_a = bucket_1.return)) _a.call(bucket_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return this.source_.end();\r\n };\r\n return SetHashBuckets;\r\n}(HashBuckets_1.HashBuckets));\r\nexports.SetHashBuckets = SetHashBuckets;\r\nfunction fetcher(elem) {\r\n return elem.value;\r\n}\r\n//# sourceMappingURL=SetHashBuckets.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __read = (this && this.__read) || function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n};\r\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.UniqueMap = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std.base\r\n */\r\n//================================================================\r\nvar MapContainer_1 = require(\"./MapContainer\");\r\nvar ErrorGenerator_1 = require(\"../../internal/exception/ErrorGenerator\");\r\n/**\r\n * Basic map container blocking duplicated key.\r\n *\r\n * @template Key Key type\r\n * @template T Mapped type\r\n * @template Source Derived type extending this {@link UniqueMap}\r\n * @template IteratorT Iterator type\r\n * @template ReverseT Reverse iterator type\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar UniqueMap = /** @class */ (function (_super) {\r\n __extends(UniqueMap, _super);\r\n function UniqueMap() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /* ---------------------------------------------------------\r\n ACCESSORS\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n UniqueMap.prototype.count = function (key) {\r\n return this.find(key).equals(this.end()) ? 0 : 1;\r\n };\r\n /**\r\n * Get a value.\r\n *\r\n * @param key Key to search for.\r\n * @return The value mapped by the key.\r\n */\r\n UniqueMap.prototype.get = function (key) {\r\n var it = this.find(key);\r\n if (it.equals(this.end()) === true)\r\n throw ErrorGenerator_1.ErrorGenerator.key_nout_found(this, \"get\", key);\r\n return it.second;\r\n };\r\n /**\r\n * Take a value.\r\n *\r\n * Get a value, or set the value and returns it.\r\n *\r\n * @param key Key to search for.\r\n * @param generator Value generator when the matched key not found\r\n * @returns Value, anyway\r\n */\r\n UniqueMap.prototype.take = function (key, generator) {\r\n var it = this.find(key);\r\n return it.equals(this.end())\r\n ? this.emplace(key, generator()).first.second\r\n : it.second;\r\n };\r\n /**\r\n * Set a value with key.\r\n *\r\n * @param key Key to be mapped or search for.\r\n * @param val Value to insert or assign.\r\n */\r\n UniqueMap.prototype.set = function (key, val) {\r\n this.insert_or_assign(key, val);\r\n };\r\n UniqueMap.prototype.insert = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return _super.prototype.insert.apply(this, __spreadArray([], __read(args), false));\r\n };\r\n UniqueMap.prototype._Insert_by_range = function (first, last) {\r\n for (var it = first; !it.equals(last); it = it.next())\r\n this.emplace(it.value.first, it.value.second);\r\n };\r\n UniqueMap.prototype.insert_or_assign = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (args.length === 2) {\r\n return this._Insert_or_assign_with_key_value(args[0], args[1]);\r\n }\r\n else if (args.length === 3) {\r\n // INSERT OR ASSIGN AN ELEMENT\r\n return this._Insert_or_assign_with_hint(args[0], args[1], args[2]);\r\n }\r\n };\r\n UniqueMap.prototype._Insert_or_assign_with_key_value = function (key, value) {\r\n var ret = this.emplace(key, value);\r\n if (ret.second === false)\r\n ret.first.second = value;\r\n return ret;\r\n };\r\n UniqueMap.prototype._Insert_or_assign_with_hint = function (hint, key, value) {\r\n var ret = this.emplace_hint(hint, key, value);\r\n if (ret.second !== value)\r\n ret.second = value;\r\n return ret;\r\n };\r\n UniqueMap.prototype.extract = function (param) {\r\n if (param instanceof this.end().constructor)\r\n return this._Extract_by_iterator(param);\r\n else\r\n return this._Extract_by_key(param);\r\n };\r\n UniqueMap.prototype._Extract_by_key = function (key) {\r\n var it = this.find(key);\r\n if (it.equals(this.end()) === true)\r\n throw ErrorGenerator_1.ErrorGenerator.key_nout_found(this, \"extract\", key);\r\n var ret = it.value;\r\n this._Erase_by_range(it);\r\n return ret;\r\n };\r\n UniqueMap.prototype._Extract_by_iterator = function (it) {\r\n if (it.equals(this.end()) === true)\r\n return this.end();\r\n this._Erase_by_range(it);\r\n return it;\r\n };\r\n UniqueMap.prototype._Erase_by_key = function (key) {\r\n var it = this.find(key);\r\n if (it.equals(this.end()) === true)\r\n return 0;\r\n this._Erase_by_range(it);\r\n return 1;\r\n };\r\n /* ---------------------------------------------------------\r\n UTILITY\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n UniqueMap.prototype.merge = function (source) {\r\n for (var it = source.begin(); !it.equals(source.end());)\r\n if (this.has(it.first) === false) {\r\n this.insert(it.value);\r\n it = source.erase(it);\r\n }\r\n else\r\n it = it.next();\r\n };\r\n return UniqueMap;\r\n}(MapContainer_1.MapContainer));\r\nexports.UniqueMap = UniqueMap;\r\n//# sourceMappingURL=UniqueMap.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MapContainer = void 0;\r\nvar Container_1 = require(\"./Container\");\r\nvar NativeArrayIterator_1 = require(\"../../internal/iterator/disposable/NativeArrayIterator\");\r\n/**\r\n * Basic map container.\r\n *\r\n * @template Key Key type\r\n * @template T Mapped type\r\n * @template Unique Whether duplicated key is blocked or not\r\n * @template Source Derived type extending this {@link MapContainer}\r\n * @template IteratorT Iterator type\r\n * @template ReverseT Reverse iterator type\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar MapContainer = /** @class */ (function (_super) {\r\n __extends(MapContainer, _super);\r\n /* ---------------------------------------------------------\r\n CONSTURCTORS\r\n --------------------------------------------------------- */\r\n /**\r\n * Default Constructor.\r\n */\r\n function MapContainer(factory) {\r\n var _this = _super.call(this) || this;\r\n _this.data_ = factory(_this);\r\n return _this;\r\n }\r\n /**\r\n * @inheritDoc\r\n */\r\n MapContainer.prototype.assign = function (first, last) {\r\n // INSERT\r\n this.clear();\r\n this.insert(first, last);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n MapContainer.prototype.clear = function () {\r\n // TO BE ABSTRACT\r\n this.data_.clear();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n MapContainer.prototype.begin = function () {\r\n return this.data_.begin();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n MapContainer.prototype.end = function () {\r\n return this.data_.end();\r\n };\r\n /* ---------------------------------------------------------\r\n ELEMENTS\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n MapContainer.prototype.has = function (key) {\r\n return !this.find(key).equals(this.end());\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n MapContainer.prototype.size = function () {\r\n return this.data_.size();\r\n };\r\n /* =========================================================\r\n ELEMENTS I/O\r\n - INSERT\r\n - ERASE\r\n - UTILITY\r\n - POST-PROCESS\r\n ============================================================\r\n INSERT\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n MapContainer.prototype.push = function () {\r\n var items = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n items[_i] = arguments[_i];\r\n }\r\n // INSERT BY RANGE\r\n var first = new NativeArrayIterator_1.NativeArrayIterator(items, 0);\r\n var last = new NativeArrayIterator_1.NativeArrayIterator(items, items.length);\r\n this.insert(first, last);\r\n // RETURN SIZE\r\n return this.size();\r\n };\r\n MapContainer.prototype.insert = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (args.length === 1)\r\n return this.emplace(args[0].first, args[0].second);\r\n else if (args[0].next instanceof Function &&\r\n args[1].next instanceof Function)\r\n return this._Insert_by_range(args[0], args[1]);\r\n else\r\n return this.emplace_hint(args[0], args[1].first, args[1].second);\r\n };\r\n MapContainer.prototype.erase = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (args.length === 1 &&\r\n (args[0] instanceof this.end().constructor === false ||\r\n args[0].source() !== this))\r\n return this._Erase_by_key(args[0]);\r\n else if (args.length === 1)\r\n return this._Erase_by_range(args[0]);\r\n else\r\n return this._Erase_by_range(args[0], args[1]);\r\n };\r\n MapContainer.prototype._Erase_by_range = function (first, last) {\r\n if (last === void 0) { last = first.next(); }\r\n // ERASE\r\n var it = this.data_.erase(first, last);\r\n // POST-PROCESS\r\n this._Handle_erase(first, last);\r\n return it;\r\n };\r\n return MapContainer;\r\n}(Container_1.Container));\r\nexports.MapContainer = MapContainer;\r\n//# sourceMappingURL=MapContainer.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __read = (this && this.__read) || function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n};\r\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.HashMap = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std\r\n */\r\n//================================================================\r\nvar UniqueMap_1 = require(\"../base/container/UniqueMap\");\r\nvar IHashContainer_1 = require(\"../internal/container/associative/IHashContainer\");\r\nvar MapElementList_1 = require(\"../internal/container/associative/MapElementList\");\r\nvar MapHashBuckets_1 = require(\"../internal/hash/MapHashBuckets\");\r\nvar Entry_1 = require(\"../utility/Entry\");\r\nvar Pair_1 = require(\"../utility/Pair\");\r\n/**\r\n * Unique-key Map based on Hash buckets.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar HashMap = /** @class */ (function (_super) {\r\n __extends(HashMap, _super);\r\n function HashMap() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var _this = _super.call(this, function (thisArg) { return new MapElementList_1.MapElementList(thisArg); }) || this;\r\n IHashContainer_1.IHashContainer.construct.apply(IHashContainer_1.IHashContainer, __spreadArray([_this,\r\n HashMap,\r\n function (hash, pred) {\r\n _this.buckets_ = new MapHashBuckets_1.MapHashBuckets(_this, hash, pred);\r\n }], __read(args), false));\r\n return _this;\r\n }\r\n /* ---------------------------------------------------------\r\n ASSIGN & CLEAR\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n HashMap.prototype.clear = function () {\r\n this.buckets_.clear();\r\n _super.prototype.clear.call(this);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashMap.prototype.swap = function (obj) {\r\n var _a, _b;\r\n // SWAP CONTENTS\r\n _a = __read([obj.data_, this.data_], 2), this.data_ = _a[0], obj.data_ = _a[1];\r\n MapElementList_1.MapElementList._Swap_associative(this.data_, obj.data_);\r\n // SWAP BUCKETS\r\n MapHashBuckets_1.MapHashBuckets._Swap_source(this.buckets_, obj.buckets_);\r\n _b = __read([obj.buckets_, this.buckets_], 2), this.buckets_ = _b[0], obj.buckets_ = _b[1];\r\n };\r\n /* =========================================================\r\n ACCESSORS\r\n - MEMBER\r\n - HASH\r\n ============================================================\r\n MEMBER\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n HashMap.prototype.find = function (key) {\r\n return this.buckets_.find(key);\r\n };\r\n HashMap.prototype.begin = function (index) {\r\n if (index === void 0) { index = null; }\r\n if (index === null)\r\n return _super.prototype.begin.call(this);\r\n else\r\n return this.buckets_.at(index)[0];\r\n };\r\n HashMap.prototype.end = function (index) {\r\n if (index === void 0) { index = null; }\r\n if (index === null)\r\n return _super.prototype.end.call(this);\r\n else {\r\n var bucket = this.buckets_.at(index);\r\n return bucket[bucket.length - 1].next();\r\n }\r\n };\r\n HashMap.prototype.rbegin = function (index) {\r\n if (index === void 0) { index = null; }\r\n return this.end(index).reverse();\r\n };\r\n HashMap.prototype.rend = function (index) {\r\n if (index === void 0) { index = null; }\r\n return this.begin(index).reverse();\r\n };\r\n /* ---------------------------------------------------------\r\n HASH\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n HashMap.prototype.bucket_count = function () {\r\n return this.buckets_.length();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashMap.prototype.bucket_size = function (index) {\r\n return this.buckets_.at(index).length;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashMap.prototype.load_factor = function () {\r\n return this.buckets_.load_factor();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashMap.prototype.hash_function = function () {\r\n return this.buckets_.hash_function();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashMap.prototype.key_eq = function () {\r\n return this.buckets_.key_eq();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashMap.prototype.bucket = function (key) {\r\n return this.hash_function()(key) % this.buckets_.length();\r\n };\r\n HashMap.prototype.max_load_factor = function (z) {\r\n if (z === void 0) { z = null; }\r\n return this.buckets_.max_load_factor(z);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashMap.prototype.reserve = function (n) {\r\n this.buckets_.reserve(n);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashMap.prototype.rehash = function (n) {\r\n this.buckets_.rehash(n);\r\n };\r\n /* =========================================================\r\n ELEMENTS I/O\r\n - INSERT\r\n - POST-PROCESS\r\n ============================================================\r\n INSERT\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n HashMap.prototype.emplace = function (key, val) {\r\n // TEST WHETHER EXIST\r\n var it = this.find(key);\r\n if (it.equals(this.end()) === false)\r\n return new Pair_1.Pair(it, false);\r\n // INSERT\r\n this.data_.push(new Entry_1.Entry(key, val));\r\n it = it.prev();\r\n // POST-PROCESS\r\n this._Handle_insert(it, it.next());\r\n return new Pair_1.Pair(it, true);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n HashMap.prototype.emplace_hint = function (hint, key, val) {\r\n // FIND DUPLICATED KEY\r\n var it = this.find(key);\r\n if (it.equals(this.end()) === true) {\r\n // INSERT\r\n it = this.data_.insert(hint, new Entry_1.Entry(key, val));\r\n // POST-PROCESS\r\n this._Handle_insert(it, it.next());\r\n }\r\n return it;\r\n };\r\n /* ---------------------------------------------------------\r\n POST-PROCESS\r\n --------------------------------------------------------- */\r\n HashMap.prototype._Handle_insert = function (first, last) {\r\n for (; !first.equals(last); first = first.next())\r\n this.buckets_.insert(first);\r\n };\r\n HashMap.prototype._Handle_erase = function (first, last) {\r\n for (; !first.equals(last); first = first.next())\r\n this.buckets_.erase(first);\r\n };\r\n return HashMap;\r\n}(UniqueMap_1.UniqueMap));\r\nexports.HashMap = HashMap;\r\n/**\r\n *\r\n */\r\n(function (HashMap) {\r\n // BODY\r\n HashMap.Iterator = MapElementList_1.MapElementList.Iterator;\r\n HashMap.ReverseIterator = MapElementList_1.MapElementList.ReverseIterator;\r\n})(HashMap = exports.HashMap || (exports.HashMap = {}));\r\nexports.HashMap = HashMap;\r\n//# sourceMappingURL=HashMap.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __read = (this && this.__read) || function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MapElementList = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std.internal\r\n */\r\n//================================================================\r\nvar ListContainer_1 = require(\"../linear/ListContainer\");\r\nvar ListIterator_1 = require(\"../../iterator/ListIterator\");\r\nvar ReverseIterator_1 = require(\"../../iterator/ReverseIterator\");\r\n/**\r\n * Doubly Linked List storing map elements.\r\n *\r\n * @template Key Key type\r\n * @template T Mapped type\r\n * @template Unique Whether duplicated key is blocked or not\r\n * @template Source Source type\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar MapElementList = /** @class */ (function (_super) {\r\n __extends(MapElementList, _super);\r\n /* ---------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------- */\r\n function MapElementList(associative) {\r\n var _this = _super.call(this) || this;\r\n _this.associative_ = associative;\r\n return _this;\r\n }\r\n MapElementList.prototype._Create_iterator = function (prev, next, val) {\r\n return MapElementList.Iterator.create(this, prev, next, val);\r\n };\r\n /**\r\n * @internal\r\n */\r\n MapElementList._Swap_associative = function (x, y) {\r\n var _a;\r\n _a = __read([y.associative_, x.associative_], 2), x.associative_ = _a[0], y.associative_ = _a[1];\r\n };\r\n /* ---------------------------------------------------------\r\n ACCESSORS\r\n --------------------------------------------------------- */\r\n MapElementList.prototype.associative = function () {\r\n return this.associative_;\r\n };\r\n return MapElementList;\r\n}(ListContainer_1.ListContainer));\r\nexports.MapElementList = MapElementList;\r\n/**\r\n *\r\n */\r\n(function (MapElementList) {\r\n /**\r\n * Iterator of map container storing elements in a list.\r\n *\r\n * @template Key Key type\r\n * @template T Mapped type\r\n * @template Unique Whether duplicated key is blocked or not\r\n * @template Source Source container type\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\n var Iterator = /** @class */ (function (_super) {\r\n __extends(Iterator, _super);\r\n /* ---------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------- */\r\n function Iterator(list, prev, next, val) {\r\n var _this = _super.call(this, prev, next, val) || this;\r\n _this.list_ = list;\r\n return _this;\r\n }\r\n /**\r\n * @internal\r\n */\r\n Iterator.create = function (list, prev, next, val) {\r\n return new Iterator(list, prev, next, val);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n Iterator.prototype.reverse = function () {\r\n return new ReverseIterator(this);\r\n };\r\n /* ---------------------------------------------------------\r\n ACCESSORS\r\n --------------------------------------------------------- */\r\n /**\r\n * @inheritDoc\r\n */\r\n Iterator.prototype.source = function () {\r\n return this.list_.associative();\r\n };\r\n Object.defineProperty(Iterator.prototype, \"first\", {\r\n /**\r\n * @inheritDoc\r\n */\r\n get: function () {\r\n return this.value.first;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Iterator.prototype, \"second\", {\r\n /**\r\n * @inheritDoc\r\n */\r\n get: function () {\r\n return this.value.second;\r\n },\r\n /**\r\n * @inheritDoc\r\n */\r\n set: function (val) {\r\n this.value.second = val;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return Iterator;\r\n }(ListIterator_1.ListIterator));\r\n MapElementList.Iterator = Iterator;\r\n /**\r\n * Reverse iterator of map container storing elements a list.\r\n *\r\n * @template Key Key type\r\n * @template T Mapped type\r\n * @template Unique Whether duplicated key is blocked or not\r\n * @template Source Source container type\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\n var ReverseIterator = /** @class */ (function (_super) {\r\n __extends(ReverseIterator, _super);\r\n function ReverseIterator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /* ---------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------- */\r\n ReverseIterator.prototype._Create_neighbor = function (base) {\r\n return new ReverseIterator(base);\r\n };\r\n Object.defineProperty(ReverseIterator.prototype, \"first\", {\r\n /* ---------------------------------------------------------\r\n ACCESSORS\r\n --------------------------------------------------------- */\r\n /**\r\n * Get the first, key element.\r\n *\r\n * @return The first element.\r\n */\r\n get: function () {\r\n return this.base_.first;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ReverseIterator.prototype, \"second\", {\r\n /**\r\n * Get the second, stored element.\r\n *\r\n * @return The second element.\r\n */\r\n get: function () {\r\n return this.base_.second;\r\n },\r\n /**\r\n * Set the second, stored element.\r\n *\r\n * @param val The value to set.\r\n */\r\n set: function (val) {\r\n this.base_.second = val;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return ReverseIterator;\r\n }(ReverseIterator_1.ReverseIterator));\r\n MapElementList.ReverseIterator = ReverseIterator;\r\n})(MapElementList = exports.MapElementList || (exports.MapElementList = {}));\r\nexports.MapElementList = MapElementList;\r\n//# sourceMappingURL=MapElementList.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __read = (this && this.__read) || function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n};\r\nvar __values = (this && this.__values) || function(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MapHashBuckets = void 0;\r\n//================================================================\r\n/**\r\n * @packageDocumentation\r\n * @module std.internal\r\n */\r\n//================================================================\r\nvar HashBuckets_1 = require(\"./HashBuckets\");\r\n/**\r\n * Hash buckets for map containers.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar MapHashBuckets = /** @class */ (function (_super) {\r\n __extends(MapHashBuckets, _super);\r\n /* ---------------------------------------------------------\r\n CONSTRUCTORS\r\n --------------------------------------------------------- */\r\n /**\r\n * Initializer Constructor\r\n *\r\n * @param source Source map container\r\n * @param hasher Hash function\r\n * @param pred Equality function\r\n */\r\n function MapHashBuckets(source, hasher, pred) {\r\n var _this = _super.call(this, fetcher, hasher) || this;\r\n _this.source_ = source;\r\n _this.key_eq_ = pred;\r\n return _this;\r\n }\r\n /**\r\n * @internal\r\n */\r\n MapHashBuckets._Swap_source = function (x, y) {\r\n var _a;\r\n _a = __read([y.source_, x.source_], 2), x.source_ = _a[0], y.source_ = _a[1];\r\n };\r\n /* ---------------------------------------------------------\r\n FINDERS\r\n --------------------------------------------------------- */\r\n MapHashBuckets.prototype.key_eq = function () {\r\n return this.key_eq_;\r\n };\r\n MapHashBuckets.prototype.find = function (key) {\r\n var e_1, _a;\r\n var index = this.hash_function()(key) % this.length();\r\n var bucket = this.at(index);\r\n try {\r\n for (var bucket_1 = __values(bucket), bucket_1_1 = bucket_1.next(); !bucket_1_1.done; bucket_1_1 = bucket_1.next()) {\r\n var it = bucket_1_1.value;\r\n if (this.key_eq_(it.first, key))\r\n return it;\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (bucket_1_1 && !bucket_1_1.done && (_a = bucket_1.return)) _a.call(bucket_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return this.source_.end();\r\n };\r\n return MapHashBuckets;\r\n}(HashBuckets_1.HashBuckets));\r\nexports.MapHashBuckets = MapHashBuckets;\r\nfunction fetcher(elem) {\r\n return elem.first;\r\n}\r\n//# sourceMappingURL=MapHashBuckets.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Entry = void 0;\r\nvar hash_1 = require(\"../functional/hash\");\r\nvar comparators_1 = require(\"../functional/comparators\");\r\n/**\r\n * Entry for mapping.\r\n *\r\n * @author Jeongho Nam - https://github.com/samchon\r\n */\r\nvar Entry = /** @class */ (function () {\r\n /**\r\n * Intializer Constructor.\r\n *\r\n * @param first The first, key element.\r\n * @param second The second, mapped element.\r\n */\r\n function Entry(first, second) {\r\n this.first = first;\r\n this.second = second;\r\n }\r\n /**\r\n * @inheritDoc\r\n */\r\n Entry.prototype.equals = function (obj) {\r\n return (0, comparators_1.equal_to)(this.first, obj.first);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n Entry.prototype.less = function (obj) {\r\n return (0, comparators_1.less)(this.first, obj.first);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n Entry.prototype.hashCode = function () {\r\n return (0, hash_1.hash)(this.first);\r\n };\r\n return Entry;\r\n}());\r\nexports.Entry = Entry;\r\n//# sourceMappingURL=Entry.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Event = /** @class */ (function () {\r\n function Event(type, init) {\r\n this.type = type;\r\n if (init)\r\n Object.assign(this, init);\r\n }\r\n return Event;\r\n}());\r\nexports.Event = Event;\r\n//# sourceMappingURL=Event.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar node_1 = require(\"tstl/utility/node\");\r\nif (node_1.is_node())\r\n global.WebSocket = require(\"./WebSocket\").WebSocket;\r\n//# sourceMappingURL=index.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n }\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar websocket_1 = require(\"websocket\");\r\nvar EventTarget_1 = require(\"./events/EventTarget\");\r\nvar Event_1 = require(\"./events/Event\");\r\nvar CloseEvent_1 = require(\"./events/CloseEvent\");\r\nvar MessageEvent_1 = require(\"./events/MessageEvent\");\r\nvar ErrorEvent_1 = require(\"./events/ErrorEvent\");\r\nvar WebSocket = /** @class */ (function (_super) {\r\n __extends(WebSocket, _super);\r\n /* ----------------------------------------------------------------\r\n CONSTRUCTORS\r\n ---------------------------------------------------------------- */\r\n function WebSocket(url, protocols) {\r\n var _this = _super.call(this) || this;\r\n _this.on_ = {};\r\n _this.state_ = WebSocket.CONNECTING;\r\n //----\r\n // CLIENT\r\n //----\r\n // PREPARE SOCKET\r\n _this.client_ = new websocket_1.client();\r\n _this.client_.on(\"connect\", _this._Handle_connect.bind(_this));\r\n _this.client_.on(\"connectFailed\", _this._Handle_error.bind(_this));\r\n if (typeof protocols === \"string\")\r\n protocols = [protocols];\r\n // DO CONNECT\r\n _this.client_.connect(url, protocols);\r\n return _this;\r\n }\r\n WebSocket.prototype.close = function (code, reason) {\r\n this.state_ = WebSocket.CLOSING;\r\n if (code === undefined)\r\n this.connection_.sendCloseFrame();\r\n else\r\n this.connection_.sendCloseFrame(code, reason, true);\r\n };\r\n /* ================================================================\r\n ACCESSORS\r\n - SENDER\r\n - PROPERTIES\r\n - LISTENERS\r\n ===================================================================\r\n SENDER\r\n ---------------------------------------------------------------- */\r\n WebSocket.prototype.send = function (data) {\r\n if (typeof data.valueOf() === \"string\")\r\n this.connection_.sendUTF(data);\r\n else {\r\n var buffer = void 0;\r\n if (data instanceof Buffer)\r\n buffer = data;\r\n else if (data instanceof Blob)\r\n buffer = new Buffer(data, \"blob\");\r\n else if (data.buffer)\r\n buffer = new Buffer(data.buffer);\r\n else\r\n buffer = new Buffer(data);\r\n this.connection_.sendBytes(buffer);\r\n }\r\n };\r\n Object.defineProperty(WebSocket.prototype, \"url\", {\r\n /* ----------------------------------------------------------------\r\n PROPERTIES\r\n ---------------------------------------------------------------- */\r\n get: function () {\r\n return this.client_.url.href;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebSocket.prototype, \"protocol\", {\r\n get: function () {\r\n return this.client_.protocols\r\n ? this.client_.protocols[0]\r\n : \"\";\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebSocket.prototype, \"extensions\", {\r\n get: function () {\r\n return this.connection_ && this.connection_.extensions\r\n ? this.connection_.extensions[0].name\r\n : \"\";\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebSocket.prototype, \"readyState\", {\r\n get: function () {\r\n return this.state_;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebSocket.prototype, \"bufferedAmount\", {\r\n get: function () {\r\n return this.connection_.bytesWaitingToFlush;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebSocket.prototype, \"binaryType\", {\r\n get: function () {\r\n return \"arraybuffer\";\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebSocket.prototype, \"onopen\", {\r\n /* ----------------------------------------------------------------\r\n LISTENERS\r\n ---------------------------------------------------------------- */\r\n get: function () {\r\n return this.on_.open;\r\n },\r\n set: function (listener) {\r\n this._Set_on(\"open\", listener);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebSocket.prototype, \"onclose\", {\r\n get: function () {\r\n return this.on_.close;\r\n },\r\n set: function (listener) {\r\n this._Set_on(\"close\", listener);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebSocket.prototype, \"onmessage\", {\r\n get: function () {\r\n return this.on_.message;\r\n },\r\n set: function (listener) {\r\n this._Set_on(\"message\", listener);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebSocket.prototype, \"onerror\", {\r\n get: function () {\r\n return this.on_.error;\r\n },\r\n set: function (listener) {\r\n this._Set_on(\"error\", listener);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @hidden\r\n */\r\n WebSocket.prototype._Set_on = function (type, listener) {\r\n if (this.on_[type])\r\n this.removeEventListener(type, this.on_[type]);\r\n this.addEventListener(type, listener);\r\n this.on_[type] = listener;\r\n };\r\n /* ----------------------------------------------------------------\r\n SOCKET HANDLERS\r\n ---------------------------------------------------------------- */\r\n /**\r\n * @hidden\r\n */\r\n WebSocket.prototype._Handle_connect = function (connection) {\r\n this.connection_ = connection;\r\n this.state_ = WebSocket.OPEN;\r\n this.connection_.on(\"message\", this._Handle_message.bind(this));\r\n this.connection_.on(\"error\", this._Handle_error.bind(this));\r\n this.connection_.on(\"close\", this._Handle_close.bind(this));\r\n var event = new Event_1.Event(\"open\", EVENT_INIT);\r\n this.dispatchEvent(event);\r\n };\r\n /**\r\n * @hidden\r\n */\r\n WebSocket.prototype._Handle_close = function (code, reason) {\r\n var event = new CloseEvent_1.CloseEvent(\"close\", __assign({}, EVENT_INIT, { code: code, reason: reason }));\r\n this.state_ = WebSocket.CLOSED;\r\n this.dispatchEvent(event);\r\n };\r\n /**\r\n * @hidden\r\n */\r\n WebSocket.prototype._Handle_message = function (message) {\r\n var event = new MessageEvent_1.MessageEvent(\"message\", __assign({}, EVENT_INIT, { data: message.binaryData\r\n ? message.binaryData\r\n : message.utf8Data }));\r\n this.dispatchEvent(event);\r\n };\r\n /**\r\n * @hidden\r\n */\r\n WebSocket.prototype._Handle_error = function (error) {\r\n var event = new ErrorEvent_1.ErrorEvent(\"error\", __assign({}, EVENT_INIT, { error: error, message: error.message }));\r\n if (this.state_ === WebSocket.CONNECTING)\r\n this.state_ = WebSocket.CLOSED;\r\n this.dispatchEvent(event);\r\n };\r\n return WebSocket;\r\n}(EventTarget_1.EventTarget));\r\nexports.WebSocket = WebSocket;\r\n(function (WebSocket) {\r\n WebSocket.CONNECTING = 0;\r\n WebSocket.OPEN = 1;\r\n WebSocket.CLOSING = 2;\r\n WebSocket.CLOSED = 3;\r\n})(WebSocket = exports.WebSocket || (exports.WebSocket = {}));\r\nexports.WebSocket = WebSocket;\r\nvar EVENT_INIT = {\r\n bubbles: false,\r\n cancelable: false\r\n};\r\n//# sourceMappingURL=WebSocket.js.map","\"use strict\";\r\nvar __values = (this && this.__values) || function (o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar HashSet_1 = require(\"tstl/container/HashSet\");\r\nvar HashMap_1 = require(\"tstl/container/HashMap\");\r\nvar EventTarget = /** @class */ (function () {\r\n function EventTarget() {\r\n this.listeners_ = new HashMap_1.HashMap();\r\n this.created_at_ = new Date();\r\n }\r\n EventTarget.prototype.dispatchEvent = function (event) {\r\n var e_1, _a;\r\n // FIND LISTENERS\r\n var it = this.listeners_.find(event.type);\r\n if (it.equals(this.listeners_.end()))\r\n return;\r\n // SET DEFAULT ARGUMENTS\r\n event.target = this;\r\n event.timeStamp = new Date().getTime() - this.created_at_.getTime();\r\n try {\r\n // CALL THE LISTENERS\r\n for (var _b = __values(it.second), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var listener = _c.value;\r\n listener(event);\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n };\r\n EventTarget.prototype.addEventListener = function (type, listener) {\r\n var it = this.listeners_.find(type);\r\n if (it.equals(this.listeners_.end()))\r\n it = this.listeners_.emplace(type, new HashSet_1.HashSet()).first;\r\n it.second.insert(listener);\r\n };\r\n EventTarget.prototype.removeEventListener = function (type, listener) {\r\n var it = this.listeners_.find(type);\r\n if (it.equals(this.listeners_.end()))\r\n return;\r\n it.second.erase(listener);\r\n if (it.second.empty())\r\n this.listeners_.erase(it);\r\n };\r\n return EventTarget;\r\n}());\r\nexports.EventTarget = EventTarget;\r\n//# sourceMappingURL=EventTarget.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n }\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Event_1 = require(\"./Event\");\r\nvar CloseEvent = /** @class */ (function (_super) {\r\n __extends(CloseEvent, _super);\r\n function CloseEvent(type, init) {\r\n return _super.call(this, type, init) || this;\r\n }\r\n return CloseEvent;\r\n}(Event_1.Event));\r\nexports.CloseEvent = CloseEvent;\r\n//# sourceMappingURL=CloseEvent.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n }\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Event_1 = require(\"./Event\");\r\nvar MessageEvent = /** @class */ (function (_super) {\r\n __extends(MessageEvent, _super);\r\n function MessageEvent(type, init) {\r\n return _super.call(this, type, init) || this;\r\n }\r\n return MessageEvent;\r\n}(Event_1.Event));\r\nexports.MessageEvent = MessageEvent;\r\n//# sourceMappingURL=MessageEvent.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n }\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Event_1 = require(\"./Event\");\r\nvar ErrorEvent = /** @class */ (function (_super) {\r\n __extends(ErrorEvent, _super);\r\n function ErrorEvent(type, init) {\r\n return _super.call(this, type, init) || this;\r\n }\r\n return ErrorEvent;\r\n}(Event_1.Event));\r\nexports.ErrorEvent = ErrorEvent;\r\n//# sourceMappingURL=ErrorEvent.js.map","const {bech32, hex, utf8} = require('@scure/base')\n\n// defaults for encode; default timestamp is current time at call\nconst DEFAULTNETWORK = {\n // default network is bitcoin\n bech32: 'bc',\n pubKeyHash: 0x00,\n scriptHash: 0x05,\n validWitnessVersions: [0]\n}\nconst TESTNETWORK = {\n bech32: 'tb',\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n validWitnessVersions: [0]\n}\nconst REGTESTNETWORK = {\n bech32: 'bcrt',\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n validWitnessVersions: [0]\n}\nconst SIMNETWORK = {\n bech32: 'sb',\n pubKeyHash: 0x3f,\n scriptHash: 0x7b,\n validWitnessVersions: [0]\n}\n\nconst FEATUREBIT_ORDER = [\n 'option_data_loss_protect',\n 'initial_routing_sync',\n 'option_upfront_shutdown_script',\n 'gossip_queries',\n 'var_onion_optin',\n 'gossip_queries_ex',\n 'option_static_remotekey',\n 'payment_secret',\n 'basic_mpp',\n 'option_support_large_channel'\n]\n\nconst DIVISORS = {\n m: BigInt(1e3),\n u: BigInt(1e6),\n n: BigInt(1e9),\n p: BigInt(1e12)\n}\n\nconst MAX_MILLISATS = BigInt('2100000000000000000')\n\nconst MILLISATS_PER_BTC = BigInt(1e11)\n\nconst TAGCODES = {\n payment_hash: 1,\n payment_secret: 16,\n description: 13,\n payee: 19,\n description_hash: 23, // commit to longer descriptions (used by lnurl-pay)\n expiry: 6, // default: 3600 (1 hour)\n min_final_cltv_expiry: 24, // default: 9\n fallback_address: 9,\n route_hint: 3, // for extra routing info (private etc.)\n feature_bits: 5,\n metadata: 27\n}\n\n// reverse the keys and values of TAGCODES and insert into TAGNAMES\nconst TAGNAMES = {}\nfor (let i = 0, keys = Object.keys(TAGCODES); i < keys.length; i++) {\n const currentName = keys[i]\n const currentCode = TAGCODES[keys[i]].toString()\n TAGNAMES[currentCode] = currentName\n}\n\nconst TAGPARSERS = {\n 1: words => hex.encode(bech32.fromWordsUnsafe(words)), // 256 bits\n 16: words => hex.encode(bech32.fromWordsUnsafe(words)), // 256 bits\n 13: words => utf8.encode(bech32.fromWordsUnsafe(words)), // string variable length\n 19: words => hex.encode(bech32.fromWordsUnsafe(words)), // 264 bits\n 23: words => hex.encode(bech32.fromWordsUnsafe(words)), // 256 bits\n 27: words => hex.encode(bech32.fromWordsUnsafe(words)), // variable\n 6: wordsToIntBE, // default: 3600 (1 hour)\n 24: wordsToIntBE, // default: 9\n 3: routingInfoParser, // for extra routing info (private etc.)\n 5: featureBitsParser // keep feature bits as array of 5 bit words\n}\n\nfunction getUnknownParser(tagCode) {\n return words => ({\n tagCode: parseInt(tagCode),\n words: bech32.encode('unknown', words, Number.MAX_SAFE_INTEGER)\n })\n}\n\nfunction wordsToIntBE(words) {\n return words.reverse().reduce((total, item, index) => {\n return total + item * Math.pow(32, index)\n }, 0)\n}\n\n// first convert from words to buffer, trimming padding where necessary\n// parse in 51 byte chunks. See encoder for details.\nfunction routingInfoParser(words) {\n const routes = []\n let pubkey,\n shortChannelId,\n feeBaseMSats,\n feeProportionalMillionths,\n cltvExpiryDelta\n let routesBuffer = bech32.fromWordsUnsafe(words)\n while (routesBuffer.length > 0) {\n pubkey = hex.encode(routesBuffer.slice(0, 33)) // 33 bytes\n shortChannelId = hex.encode(routesBuffer.slice(33, 41)) // 8 bytes\n feeBaseMSats = parseInt(hex.encode(routesBuffer.slice(41, 45)), 16) // 4 bytes\n feeProportionalMillionths = parseInt(\n hex.encode(routesBuffer.slice(45, 49)),\n 16\n ) // 4 bytes\n cltvExpiryDelta = parseInt(hex.encode(routesBuffer.slice(49, 51)), 16) // 2 bytes\n\n routesBuffer = routesBuffer.slice(51)\n\n routes.push({\n pubkey,\n short_channel_id: shortChannelId,\n fee_base_msat: feeBaseMSats,\n fee_proportional_millionths: feeProportionalMillionths,\n cltv_expiry_delta: cltvExpiryDelta\n })\n }\n return routes\n}\n\nfunction featureBitsParser(words) {\n const bools = words\n .slice()\n .reverse()\n .map(word => [\n !!(word & 0b1),\n !!(word & 0b10),\n !!(word & 0b100),\n !!(word & 0b1000),\n !!(word & 0b10000)\n ])\n .reduce((finalArr, itemArr) => finalArr.concat(itemArr), [])\n while (bools.length < FEATUREBIT_ORDER.length * 2) {\n bools.push(false)\n }\n\n const featureBits = {}\n\n FEATUREBIT_ORDER.forEach((featureName, index) => {\n let status\n if (bools[index * 2]) {\n status = 'required'\n } else if (bools[index * 2 + 1]) {\n status = 'supported'\n } else {\n status = 'unsupported'\n }\n featureBits[featureName] = status\n })\n\n const extraBits = bools.slice(FEATUREBIT_ORDER.length * 2)\n featureBits.extra_bits = {\n start_bit: FEATUREBIT_ORDER.length * 2,\n bits: extraBits,\n has_required: extraBits.reduce(\n (result, bit, index) =>\n index % 2 !== 0 ? result || false : result || bit,\n false\n )\n }\n\n return featureBits\n}\n\nfunction hrpToMillisat(hrpString, outputString) {\n let divisor, value\n if (hrpString.slice(-1).match(/^[munp]$/)) {\n divisor = hrpString.slice(-1)\n value = hrpString.slice(0, -1)\n } else if (hrpString.slice(-1).match(/^[^munp0-9]$/)) {\n throw new Error('Not a valid multiplier for the amount')\n } else {\n value = hrpString\n }\n\n if (!value.match(/^\\d+$/))\n throw new Error('Not a valid human readable amount')\n\n const valueBN = BigInt(value)\n\n const millisatoshisBN = divisor\n ? (valueBN * MILLISATS_PER_BTC) / DIVISORS[divisor]\n : valueBN * MILLISATS_PER_BTC\n\n if (\n (divisor === 'p' && !(valueBN % BigInt(10) === BigInt(0))) ||\n millisatoshisBN > MAX_MILLISATS\n ) {\n throw new Error('Amount is outside of valid range')\n }\n\n return outputString ? millisatoshisBN.toString() : millisatoshisBN\n}\n\n// decode will only have extra comments that aren't covered in encode comments.\n// also if anything is hard to read I'll comment.\nfunction decode(paymentRequest, network) {\n if (typeof paymentRequest !== 'string')\n throw new Error('Lightning Payment Request must be string')\n if (paymentRequest.slice(0, 2).toLowerCase() !== 'ln')\n throw new Error('Not a proper lightning payment request')\n\n const sections = []\n const decoded = bech32.decode(paymentRequest, Number.MAX_SAFE_INTEGER)\n paymentRequest = paymentRequest.toLowerCase()\n const prefix = decoded.prefix\n let words = decoded.words\n let letters = paymentRequest.slice(prefix.length + 1)\n let sigWords = words.slice(-104)\n words = words.slice(0, -104)\n\n // Without reverse lookups, can't say that the multipier at the end must\n // have a number before it, so instead we parse, and if the second group\n // doesn't have anything, there's a good chance the last letter of the\n // coin type got captured by the third group, so just re-regex without\n // the number.\n let prefixMatches = prefix.match(/^ln(\\S+?)(\\d*)([a-zA-Z]?)$/)\n if (prefixMatches && !prefixMatches[2])\n prefixMatches = prefix.match(/^ln(\\S+)$/)\n if (!prefixMatches) {\n throw new Error('Not a proper lightning payment request')\n }\n\n // \"ln\" section\n sections.push({\n name: 'lightning_network',\n letters: 'ln'\n })\n\n // \"bc\" section\n const bech32Prefix = prefixMatches[1]\n let coinNetwork\n if (!network) {\n switch (bech32Prefix) {\n case DEFAULTNETWORK.bech32:\n coinNetwork = DEFAULTNETWORK\n break\n case TESTNETWORK.bech32:\n coinNetwork = TESTNETWORK\n break\n case REGTESTNETWORK.bech32:\n coinNetwork = REGTESTNETWORK\n break\n case SIMNETWORK.bech32:\n coinNetwork = SIMNETWORK\n break\n }\n } else {\n if (\n network.bech32 === undefined ||\n network.pubKeyHash === undefined ||\n network.scriptHash === undefined ||\n !Array.isArray(network.validWitnessVersions)\n )\n throw new Error('Invalid network')\n coinNetwork = network\n }\n if (!coinNetwork || coinNetwork.bech32 !== bech32Prefix) {\n throw new Error('Unknown coin bech32 prefix')\n }\n sections.push({\n name: 'coin_network',\n letters: bech32Prefix,\n value: coinNetwork\n })\n\n // amount section\n const value = prefixMatches[2]\n let millisatoshis\n if (value) {\n const divisor = prefixMatches[3]\n millisatoshis = hrpToMillisat(value + divisor, true)\n sections.push({\n name: 'amount',\n letters: prefixMatches[2] + prefixMatches[3],\n value: millisatoshis\n })\n } else {\n millisatoshis = null\n }\n\n // \"1\" separator\n sections.push({\n name: 'separator',\n letters: '1'\n })\n\n // timestamp\n const timestamp = wordsToIntBE(words.slice(0, 7))\n words = words.slice(7) // trim off the left 7 words\n sections.push({\n name: 'timestamp',\n letters: letters.slice(0, 7),\n value: timestamp\n })\n letters = letters.slice(7)\n\n let tagName, parser, tagLength, tagWords\n // we have no tag count to go on, so just keep hacking off words\n // until we have none.\n while (words.length > 0) {\n const tagCode = words[0].toString()\n tagName = TAGNAMES[tagCode] || 'unknown_tag'\n parser = TAGPARSERS[tagCode] || getUnknownParser(tagCode)\n words = words.slice(1)\n\n tagLength = wordsToIntBE(words.slice(0, 2))\n words = words.slice(2)\n\n tagWords = words.slice(0, tagLength)\n words = words.slice(tagLength)\n\n sections.push({\n name: tagName,\n tag: letters[0],\n letters: letters.slice(0, 1 + 2 + tagLength),\n value: parser(tagWords) // see: parsers for more comments\n })\n letters = letters.slice(1 + 2 + tagLength)\n }\n\n // signature\n sections.push({\n name: 'signature',\n letters: letters.slice(0, 104),\n value: hex.encode(bech32.fromWordsUnsafe(sigWords))\n })\n letters = letters.slice(104)\n\n // checksum\n sections.push({\n name: 'checksum',\n letters: letters\n })\n\n let result = {\n paymentRequest,\n sections,\n\n get expiry() {\n let exp = sections.find(s => s.name === 'expiry')\n if (exp) return getValue('timestamp') + exp.value\n },\n\n get route_hints() {\n return sections.filter(s => s.name === 'route_hint').map(s => s.value)\n }\n }\n\n for (let name in TAGCODES) {\n if (name === 'route_hint') {\n // route hints can be multiple, so this won't work for them\n continue\n }\n\n Object.defineProperty(result, name, {\n get() {\n return getValue(name)\n }\n })\n }\n\n return result\n\n function getValue(name) {\n let section = sections.find(s => s.name === name)\n return section ? section.value : undefined\n }\n}\n\nmodule.exports = {\n decode,\n hrpToMillisat\n}\n","// src/index.ts\nimport debug2 from \"debug\";\nimport EventEmitter7 from \"eventemitter3\";\n\n// src/events/dedup.ts\nfunction dedup(event1, event2) {\n if (event1.created_at > event2.created_at) {\n return event1;\n }\n return event2;\n}\n\n// src/events/index.ts\nimport EventEmitter2 from \"eventemitter3\";\nimport { getEventHash } from \"nostr-tools\";\n\n// src/zap/index.ts\nimport { bech32 } from \"@scure/base\";\nimport EventEmitter from \"eventemitter3\";\nimport { nip57 } from \"nostr-tools\";\nvar Zap = class extends EventEmitter {\n ndk;\n zappedEvent;\n zappedUser;\n constructor(args) {\n super();\n this.ndk = args.ndk;\n this.zappedEvent = args.zappedEvent;\n this.zappedUser = args.zappedUser || this.ndk.getUser({ hexpubkey: this.zappedEvent.pubkey });\n }\n async getZapEndpoint() {\n let lud06;\n let lud16;\n let zapEndpoint;\n let zapEndpointCallback;\n if (this.zappedEvent) {\n const zapTag = (await this.zappedEvent.getMatchingTags(\"zap\"))[0];\n if (zapTag) {\n switch (zapTag[2]) {\n case \"lud06\":\n lud06 = zapTag[1];\n break;\n case \"lud16\":\n lud16 = zapTag[1];\n break;\n default:\n throw new Error(`Unknown zap tag ${zapTag}`);\n }\n }\n }\n if (this.zappedUser && !lud06 && !lud16) {\n if (!this.zappedUser.profile) {\n await this.zappedUser.fetchProfile();\n }\n lud06 = (this.zappedUser.profile || {}).lud06;\n lud16 = (this.zappedUser.profile || {}).lud16;\n }\n if (lud16) {\n const [name, domain] = lud16.split(\"@\");\n zapEndpoint = `https://${domain}/.well-known/lnurlp/${name}`;\n } else if (lud06) {\n const { words } = bech32.decode(lud06, 1e3);\n const data = bech32.fromWords(words);\n const utf8Decoder = new TextDecoder(\"utf-8\");\n zapEndpoint = utf8Decoder.decode(data);\n }\n if (!zapEndpoint) {\n throw new Error(\"No zap endpoint found\");\n }\n const response = await fetch(zapEndpoint);\n const body = await response.json();\n if (body?.allowsNostr && (body?.nostrPubkey || body?.nostrPubKey)) {\n zapEndpointCallback = body.callback;\n }\n return zapEndpointCallback;\n }\n async createZapRequest(amount, comment, extraTags) {\n const zapEndpoint = await this.getZapEndpoint();\n if (!zapEndpoint) {\n throw new Error(\"No zap endpoint found\");\n }\n if (!this.zappedEvent)\n throw new Error(\"No zapped event found\");\n const zapRequest = nip57.makeZapRequest({\n profile: this.zappedUser.hexpubkey(),\n // set the event to null since nostr-tools doesn't support nip-33 zaps\n event: null,\n amount,\n comment: comment || \"\",\n relays: [\n \"wss://nos.lol\",\n \"wss://relay.nostr.band\",\n \"wss://relay.f7z.io\",\n \"wss://relay.damus.io\",\n \"wss://nostr.mom\",\n \"wss://no.str.cr\"\n ]\n // TODO: fix this\n });\n if (this.zappedEvent) {\n const tag = this.zappedEvent.tagReference();\n if (tag) {\n zapRequest.tags.push(tag);\n }\n }\n zapRequest.tags.push([\"lnurl\", zapEndpoint]);\n const zapRequestEvent = new NDKEvent(this.ndk, zapRequest);\n if (extraTags) {\n zapRequestEvent.tags = zapRequestEvent.tags.concat(extraTags);\n }\n await zapRequestEvent.sign();\n const zapRequestNostrEvent = await zapRequestEvent.toNostrEvent();\n const response = await fetch(\n `${zapEndpoint}?` + new URLSearchParams({\n amount: amount.toString(),\n nostr: JSON.stringify(zapRequestNostrEvent)\n })\n );\n const body = await response.json();\n return body.pr;\n }\n};\n\n// src/events/content-tagger.ts\nimport { nip19 } from \"nostr-tools\";\nfunction generateContentTags(content, tags = []) {\n const tagRegex = /(@|nostr:)(npub|nprofile|note|nevent)[a-zA-Z0-9]+/g;\n content = content.replace(tagRegex, (tag) => {\n try {\n const entity = tag.split(/(@|nostr:)/)[2];\n const { type, data } = nip19.decode(entity);\n let t;\n switch (type) {\n case \"npub\":\n t = [\"p\", data];\n break;\n case \"nprofile\":\n t = [\"p\", data.pubkey];\n break;\n case \"nevent\":\n t = [\"e\", data.id];\n break;\n case \"note\":\n t = [\"e\", data];\n break;\n default:\n return tag;\n }\n if (!tags.find((t2) => t2[0] === t2[0] && t2[1] === t2[1])) {\n tags.push(t);\n }\n return `nostr:${entity}`;\n } catch (error) {\n return tag;\n }\n });\n return { content, tags };\n}\n\n// src/events/kind.ts\nfunction isReplaceable() {\n if (this.kind === void 0)\n throw new Error(\"Kind not set\");\n return this.kind >= 1e4 && this.kind < 2e4;\n}\nfunction isParamReplaceable() {\n if (this.kind === void 0)\n throw new Error(\"Kind not set\");\n return this.kind >= 3e4 && this.kind < 4e4;\n}\n\n// src/user/index.ts\nimport { nip05, nip19 as nip193 } from \"nostr-tools\";\n\n// src/user/follows.ts\nimport { nip19 as nip192 } from \"nostr-tools\";\nasync function follows() {\n if (!this.ndk)\n throw new Error(\"NDK not set\");\n const contactListEvents = await this.ndk.fetchEvents({\n kinds: [3],\n authors: [this.hexpubkey()]\n });\n if (contactListEvents) {\n const npubs = /* @__PURE__ */ new Set();\n contactListEvents.forEach((event) => {\n event.tags.forEach((tag) => {\n if (tag[0] === \"p\") {\n try {\n const npub = nip192.npubEncode(tag[1]);\n npubs.add(npub);\n } catch (e) {\n }\n }\n });\n });\n return [...npubs].reduce((acc, npub) => {\n const user = new NDKUser({ npub });\n user.ndk = this.ndk;\n acc.add(user);\n return acc;\n }, /* @__PURE__ */ new Set());\n }\n return /* @__PURE__ */ new Set();\n}\n\n// src/user/profile.ts\nfunction mergeEvent(event, profile) {\n const payload = JSON.parse(event.content);\n if (payload.name)\n profile.name = payload.name;\n if (payload.display_name)\n profile.displayName = payload.display_name;\n if (payload.displayName)\n profile.displayName = payload.displayName;\n if (payload.image)\n profile.image = payload.image;\n if (payload.picture)\n profile.image = payload.picture;\n if (payload.banner)\n profile.banner = payload.banner;\n if (payload.bio)\n profile.bio = payload.bio;\n if (payload.nip05)\n profile.nip05 = payload.nip05;\n if (payload.lud06)\n profile.lud06 = payload.lud06;\n if (payload.lud16)\n profile.lud16 = payload.lud16;\n if (payload.about)\n profile.about = payload.about;\n if (payload.zapService)\n profile.zapService = payload.zapService;\n return profile;\n}\n\n// src/user/index.ts\nvar NDKUser = class {\n ndk;\n profile;\n npub = \"\";\n relayUrls = [];\n constructor(opts) {\n if (opts.npub)\n this.npub = opts.npub;\n if (opts.hexpubkey) {\n this.npub = nip193.npubEncode(opts.hexpubkey);\n }\n if (opts.relayUrls) {\n this.relayUrls = opts.relayUrls;\n }\n }\n static async fromNip05(nip05Id) {\n const profile = await nip05.queryProfile(nip05Id);\n if (profile) {\n return new NDKUser({\n hexpubkey: profile.pubkey,\n relayUrls: profile.relays\n });\n }\n }\n hexpubkey() {\n return nip193.decode(this.npub).data;\n }\n async fetchProfile(opts) {\n if (!this.ndk)\n throw new Error(\"NDK not set\");\n if (!this.profile)\n this.profile = {};\n const setMetadataEvents = await this.ndk.fetchEvents(\n {\n kinds: [0],\n authors: [this.hexpubkey()]\n },\n opts\n );\n if (setMetadataEvents) {\n const sortedSetMetadataEvents = Array.from(setMetadataEvents).sort(\n (a, b) => a.created_at - b.created_at\n );\n sortedSetMetadataEvents.forEach((event) => {\n try {\n this.profile = mergeEvent(event, this.profile);\n } catch (e) {\n }\n });\n }\n return setMetadataEvents;\n }\n /**\n * Returns a set of users that this user follows.\n */\n follows = follows.bind(this);\n async relayList() {\n if (!this.ndk)\n throw new Error(\"NDK not set\");\n const relayListEvents = await this.ndk.fetchEvents({\n kinds: [10002],\n authors: [this.hexpubkey()]\n });\n if (relayListEvents) {\n return relayListEvents;\n }\n return /* @__PURE__ */ new Set();\n }\n};\n\n// src/events/nip04.ts\nasync function encrypt(recipient, signer) {\n if (!signer) {\n if (!this.ndk) {\n throw new Error(\"No signer available\");\n }\n await this.ndk.assertSigner();\n signer = this.ndk.signer;\n }\n if (!recipient) {\n const pTags = this.getMatchingTags(\"p\");\n if (pTags.length !== 1) {\n throw new Error(\"No recipient could be determined and no explicit recipient was provided\");\n }\n recipient = new NDKUser({ hexpubkey: pTags[0][1] });\n recipient.ndk = this.ndk;\n }\n this.content = await signer.encrypt(recipient, this.content);\n}\nasync function decrypt(sender, signer) {\n if (!signer) {\n if (!this.ndk) {\n throw new Error(\"No signer available\");\n }\n await this.ndk.assertSigner();\n signer = this.ndk.signer;\n }\n if (!sender) {\n sender = this.author();\n }\n this.content = await signer.decrypt(sender, this.content);\n}\n\n// src/events/nip19.ts\nimport { nip19 as nip194 } from \"nostr-tools\";\nfunction encode() {\n if (this.isParamReplaceable()) {\n return nip194.naddrEncode({\n kind: this.kind,\n pubkey: this.pubkey,\n identifier: this.replaceableDTag()\n });\n } else {\n return nip194.noteEncode(this.tagId());\n }\n}\n\n// src/events/index.ts\nvar NDKEvent = class extends EventEmitter2 {\n ndk;\n created_at;\n content = \"\";\n tags = [];\n kind;\n id = \"\";\n sig;\n pubkey = \"\";\n constructor(ndk, event) {\n super();\n this.ndk = ndk;\n this.created_at = event?.created_at;\n this.content = event?.content || \"\";\n this.tags = event?.tags || [];\n this.id = event?.id || \"\";\n this.sig = event?.sig;\n this.pubkey = event?.pubkey || \"\";\n this.kind = event?.kind;\n }\n /**\n * Returns the event as is.\n */\n rawEvent() {\n return {\n created_at: this.created_at,\n content: this.content,\n tags: this.tags,\n kind: this.kind,\n pubkey: this.pubkey,\n id: this.id,\n sig: this.sig\n };\n }\n /**\n * Returns an NDKUser for the author of the event.\n */\n author() {\n const user = new NDKUser({ hexpubkey: this.pubkey });\n user.ndk = this.ndk;\n return user;\n }\n /**\n * Return a NostrEvent object, trying to fill in missing fields\n * when possible, adding tags when necessary.\n */\n async toNostrEvent(pubkey) {\n if (!pubkey && this.pubkey === \"\") {\n const user = await this.ndk?.signer?.user();\n this.pubkey = user?.hexpubkey() || \"\";\n }\n if (!this.created_at)\n this.created_at = Math.floor(Date.now() / 1e3);\n const nostrEvent = this.rawEvent();\n const { content, tags } = this.generateTags();\n nostrEvent.content = content || \"\";\n nostrEvent.tags = tags;\n try {\n this.id = getEventHash(nostrEvent);\n } catch (e) {\n }\n if (this.id)\n nostrEvent.id = this.id;\n if (this.sig)\n nostrEvent.sig = this.sig;\n return nostrEvent;\n }\n isReplaceable = isReplaceable.bind(this);\n isParamReplaceable = isParamReplaceable.bind(this);\n encode = encode.bind(this);\n encrypt = encrypt.bind(this);\n decrypt = decrypt.bind(this);\n /**\n * Get all tags with the given name\n */\n getMatchingTags(tagName) {\n return this.tags.filter((tag) => tag[0] === tagName);\n }\n async toString() {\n return await this.toNostrEvent();\n }\n /**\n * Sign the event if a signer is present.\n *\n * It will generate tags.\n * Repleacable events will have their created_at field set to the current time.\n */\n async sign(signer) {\n signer || this.ndk?.assertSigner();\n await this.generateTags();\n if (this.isReplaceable()) {\n this.created_at = Math.floor(Date.now() / 1e3);\n }\n const nostrEvent = await this.toNostrEvent();\n const _signer = signer || this.ndk?.signer;\n this.sig = await _signer.sign(nostrEvent);\n }\n async publish(relaySet) {\n if (!this.sig)\n await this.sign();\n return this.ndk?.publish(this, relaySet);\n }\n generateTags() {\n let tags = [];\n const g = generateContentTags(this.content, this.tags);\n const content = g.content;\n tags = g.tags;\n if (this.kind && this.kind >= 3e4 && this.kind <= 4e4) {\n const dTag = this.getMatchingTags(\"d\")[0];\n if (!dTag) {\n const str = [...Array(16)].map(() => Math.random().toString(36)[2]).join(\"\");\n tags.push([\"d\", str]);\n }\n }\n return { content: content || \"\", tags };\n }\n /**\n * @returns the `d` tag of a parameterized replaceable event\n */\n replaceableDTag() {\n if (this.kind && this.kind >= 3e4 && this.kind <= 4e4) {\n const dTag = this.getMatchingTags(\"d\")[0];\n const dTagId = dTag ? dTag[1] : \"\";\n return dTagId;\n }\n throw new Error(\"Event is not a parameterized replaceable event\");\n }\n /**\n * @returns the id of the event, or if it's a parameterized event, the id of the event with the d tag\n */\n tagId() {\n if (this.kind && this.kind >= 3e4 && this.kind <= 4e4) {\n const dTagId = this.replaceableDTag();\n return `${this.kind}:${this.pubkey}:${dTagId}`;\n }\n return this.id;\n }\n /**\n * Get the tag that can be used to reference this event from another event\n * @example\n * event = new NDKEvent(ndk, { kind: 30000, pubkey: 'pubkey', tags: [ [\"d\", \"d-code\"] ] });\n * event.tagReference(); // [\"a\", \"30000:pubkey:d-code\"]\n *\n * event = new NDKEvent(ndk, { kind: 1, pubkey: 'pubkey', id: \"eventid\" });\n * event.tagReference(); // [\"e\", \"eventid\"]\n */\n tagReference() {\n if (this.kind && this.kind >= 3e4 && this.kind <= 4e4) {\n return [\"a\", this.tagId()];\n }\n return [\"e\", this.tagId()];\n }\n /**\n * Create a zap request for an existing event\n *\n * @param amount The amount to zap in millisatoshis\n * @param comment A comment to add to the zap request\n * @param extraTags Extra tags to add to the zap request\n */\n async zap(amount, comment, extraTags) {\n if (!this.ndk)\n throw new Error(\"No NDK instance found\");\n this.ndk.assertSigner();\n const zap = new Zap({\n ndk: this.ndk,\n zappedEvent: this\n });\n const paymentRequest = await zap.createZapRequest(amount, comment, extraTags);\n return paymentRequest;\n }\n};\n\n// src/relay/pool/index.ts\nimport EventEmitter4 from \"eventemitter3\";\n\n// src/relay/index.ts\nimport EventEmitter3 from \"eventemitter3\";\nimport { relayInit } from \"nostr-tools\";\nimport \"websocket-polyfill\";\nimport debug from \"debug\";\nvar NDKRelayStatus = /* @__PURE__ */ ((NDKRelayStatus2) => {\n NDKRelayStatus2[NDKRelayStatus2[\"CONNECTING\"] = 0] = \"CONNECTING\";\n NDKRelayStatus2[NDKRelayStatus2[\"CONNECTED\"] = 1] = \"CONNECTED\";\n NDKRelayStatus2[NDKRelayStatus2[\"DISCONNECTING\"] = 2] = \"DISCONNECTING\";\n NDKRelayStatus2[NDKRelayStatus2[\"DISCONNECTED\"] = 3] = \"DISCONNECTED\";\n NDKRelayStatus2[NDKRelayStatus2[\"RECONNECTING\"] = 4] = \"RECONNECTING\";\n return NDKRelayStatus2;\n})(NDKRelayStatus || {});\nvar NDKRelay = class extends EventEmitter3 {\n url;\n scores;\n relay;\n _status;\n connectedAt;\n _connectionStats = { attempts: 0, success: 0, durations: [] };\n complaining = false;\n debug;\n /**\n * Active subscriptions this relay is connected to\n */\n activeSubscriptions = /* @__PURE__ */ new Set();\n constructor(url) {\n super();\n this.url = url;\n this.relay = relayInit(url);\n this.scores = /* @__PURE__ */ new Map();\n this._status = 3 /* DISCONNECTED */;\n this.debug = debug(`ndk:relay:${url}`);\n this.relay.on(\"connect\", () => {\n this.updateConnectionStats.connected();\n this.emit(\"connect\");\n this._status = 1 /* CONNECTED */;\n });\n this.relay.on(\"disconnect\", () => {\n this.updateConnectionStats.disconnected();\n this.emit(\"disconnect\");\n if (this._status === 1 /* CONNECTED */) {\n this._status = 3 /* DISCONNECTED */;\n this.handleReconnection();\n }\n });\n this.relay.on(\"notice\", (notice) => this.handleNotice(notice));\n }\n /**\n * Evaluates the connection stats to determine if the relay is flapping.\n */\n isFlapping() {\n const durations = this._connectionStats.durations;\n if (durations.length < 10)\n return false;\n const sum = durations.reduce((a, b) => a + b, 0);\n const avg = sum / durations.length;\n const variance = durations.map((x) => Math.pow(x - avg, 2)).reduce((a, b) => a + b, 0) / durations.length;\n const stdDev = Math.sqrt(variance);\n const isFlapping = stdDev < 1e3;\n return isFlapping;\n }\n /**\n * Called when the relay is unexpectedly disconnected.\n */\n handleReconnection() {\n if (this.isFlapping()) {\n this.emit(\"flapping\", this, this._connectionStats);\n }\n if (this.connectedAt && Date.now() - this.connectedAt < 5e3) {\n setTimeout(() => this.connect(), 6e4);\n } else {\n this.connect();\n }\n }\n get status() {\n return this._status;\n }\n /**\n * Connects to the relay.\n */\n async connect() {\n try {\n this.updateConnectionStats.attempt();\n this._status = 0 /* CONNECTING */;\n await this.relay.connect();\n } catch (e) {\n this.debug(\"Failed to connect\", e);\n this._status = 3 /* DISCONNECTED */;\n throw e;\n }\n }\n /**\n * Disconnects from the relay.\n */\n disconnect() {\n this._status = 2 /* DISCONNECTING */;\n this.relay.close();\n }\n async handleNotice(notice) {\n if (notice.includes(\"oo many\") || notice.includes(\"aximum\")) {\n this.disconnect();\n setTimeout(() => this.connect(), 2e3);\n console.log(this.relay.url, \"Relay complaining?\", notice);\n }\n this.emit(\"notice\", this, notice);\n }\n /**\n * Subscribes to a subscription.\n */\n subscribe(subscription) {\n const { filter } = subscription;\n const sub = this.relay.sub([filter], {\n id: subscription.subId\n });\n this.debug(`Subscribed to ${JSON.stringify(filter)}`);\n sub.on(\"event\", (event) => {\n const e = new NDKEvent(void 0, event);\n subscription.eventReceived(e, this);\n });\n sub.on(\"eose\", () => {\n subscription.eoseReceived(this);\n });\n this.activeSubscriptions.add(subscription);\n subscription.on(\"close\", () => {\n this.activeSubscriptions.delete(subscription);\n });\n return sub;\n }\n /**\n * Publishes an event to the relay.\n */\n async publish(event) {\n const nostrEvent = await event.toNostrEvent();\n const a = this.relay.publish(nostrEvent);\n a.on(\"failed\", (err) => {\n this.debug(\"Publish failed\", err, event.rawEvent());\n });\n a.on(\"ok\", () => {\n this.debug(\"Publish ok\", event.rawEvent());\n });\n this.debug(`Published event ${event.id}`, event.rawEvent());\n }\n /**\n * Called when this relay has responded with an event but\n * wasn't the fastest one.\n * @param timeDiffInMs The time difference in ms between the fastest and this relay in milliseconds\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n scoreSlowerEvent(timeDiffInMs) {\n }\n /**\n * Utility functions to update the connection stats.\n */\n updateConnectionStats = {\n connected: () => {\n this._connectionStats.success++;\n this._connectionStats.connectedAt = Date.now();\n },\n disconnected: () => {\n if (this._connectionStats.connectedAt) {\n this._connectionStats.durations.push(\n Date.now() - this._connectionStats.connectedAt\n );\n if (this._connectionStats.durations.length > 100) {\n this._connectionStats.durations.shift();\n }\n }\n this._connectionStats.connectedAt = void 0;\n },\n attempt: () => {\n this._connectionStats.attempts++;\n }\n };\n /**\n * Returns the connection stats.\n */\n get connectionStats() {\n return this._connectionStats;\n }\n};\n\n// src/relay/pool/index.ts\nvar NDKPool = class extends EventEmitter4 {\n relays = /* @__PURE__ */ new Map();\n debug;\n constructor(relayUrls = [], ndk) {\n super();\n this.debug = ndk.debug.extend(\"pool\");\n for (const relayUrl of relayUrls) {\n const relay = new NDKRelay(relayUrl);\n relay.on(\"notice\", (relay2, notice) => this.emit(\"notice\", relay2, notice));\n relay.on(\"connect\", () => this.handleRelayConnect(relayUrl));\n relay.on(\"disconnect\", () => this.emit(\"relay:disconnect\", relay));\n relay.on(\"flapping\", () => this.handleFlapping(relay));\n this.relays.set(relayUrl, relay);\n }\n }\n handleRelayConnect(relayUrl) {\n this.debug(`Relay ${relayUrl} connected`);\n this.emit(\"relay:connect\", this.relays.get(relayUrl));\n if (this.stats().connected === this.relays.size) {\n this.emit(\"connect\");\n }\n }\n /**\n * Attempts to establish a connection to each relay in the pool.\n *\n * @async\n * @param {number} [timeoutMs] - Optional timeout in milliseconds for each connection attempt.\n * @returns {Promise} A promise that resolves when all connection attempts have completed.\n * @throws {Error} If any of the connection attempts result in an error or timeout.\n */\n async connect(timeoutMs) {\n const promises = [];\n this.debug(\n `Connecting to ${this.relays.size} relays${timeoutMs ? `, timeout ${timeoutMs}...` : \"\"}`\n );\n for (const relay of this.relays.values()) {\n if (timeoutMs) {\n const timeoutPromise = new Promise((_, reject) => {\n setTimeout(() => reject(`Timed out after ${timeoutMs}ms`), timeoutMs);\n });\n promises.push(\n Promise.race([relay.connect(), timeoutPromise]).catch((e) => {\n this.debug(`Failed to connect to relay ${relay.url}: ${e}`);\n })\n );\n } else {\n promises.push(relay.connect());\n }\n }\n await Promise.all(promises);\n }\n handleFlapping(relay) {\n this.debug(`Relay ${relay.url} is flapping`);\n this.relays.delete(relay.url);\n this.emit(\"flapping\", relay);\n }\n size() {\n return this.relays.size;\n }\n /**\n * Returns the status of each relay in the pool.\n * @returns {NDKPoolStats} An object containing the number of relays in each status.\n */\n stats() {\n const stats = {\n total: 0,\n connected: 0,\n disconnected: 0,\n connecting: 0\n };\n for (const relay of this.relays.values()) {\n stats.total++;\n if (relay.status === 1 /* CONNECTED */) {\n stats.connected++;\n } else if (relay.status === 3 /* DISCONNECTED */) {\n stats.disconnected++;\n } else if (relay.status === 0 /* CONNECTING */) {\n stats.connecting++;\n }\n }\n return stats;\n }\n};\n\n// src/relay/sets/index.ts\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport { bytesToHex } from \"@noble/hashes/utils\";\n\n// src/subscription/index.ts\nimport EventEmitter5 from \"eventemitter3\";\nimport { matchFilter } from \"nostr-tools\";\nvar NDKSubscriptionCacheUsage = /* @__PURE__ */ ((NDKSubscriptionCacheUsage2) => {\n NDKSubscriptionCacheUsage2[\"ONLY_CACHE\"] = \"ONLY_CACHE\";\n NDKSubscriptionCacheUsage2[\"CACHE_FIRST\"] = \"CACHE_FIRST\";\n NDKSubscriptionCacheUsage2[\"PARALLEL\"] = \"PARALLEL\";\n NDKSubscriptionCacheUsage2[\"ONLY_RELAY\"] = \"ONLY_RELAY\";\n return NDKSubscriptionCacheUsage2;\n})(NDKSubscriptionCacheUsage || {});\nvar defaultOpts = {\n closeOnEose: true,\n cacheUsage: \"CACHE_FIRST\" /* CACHE_FIRST */,\n groupable: true,\n groupableDelay: 100\n};\nvar NDKSubscription = class extends EventEmitter5 {\n subId;\n filter;\n opts;\n relaySet;\n ndk;\n relaySubscriptions;\n debug;\n constructor(ndk, filter, opts, relaySet, subId) {\n super();\n this.ndk = ndk;\n this.subId = subId || Math.floor(Math.random() * 9999991e3).toString();\n this.filter = filter;\n this.relaySet = relaySet;\n this.opts = { ...defaultOpts, ...opts || {} };\n this.relaySubscriptions = /* @__PURE__ */ new Map();\n this.debug = ndk.debug.extend(\"subscription\");\n if (this.opts.cacheUsage === \"ONLY_CACHE\" /* ONLY_CACHE */ && !this.opts.closeOnEose) {\n throw new Error(\"Cannot use cache-only options with a persistent subscription\");\n }\n }\n /**\n * Calculates the groupable ID for this subscription.\n *\n * @returns The groupable ID, or null if the subscription is not groupable.\n */\n groupableId() {\n if (!this.opts?.groupable) {\n return null;\n }\n const hasKind = (this.filter.kinds?.length || 0) > 0;\n const noTimeConstraints = !this.filter.since && !this.filter.until;\n const noLimit = !this.filter.limit;\n if (hasKind && noTimeConstraints && noLimit) {\n let id = this.filter.kinds.join(\",\");\n const keys = Object.keys(this.filter || {}).sort().join(\"-\");\n id += `-${keys}`;\n return id;\n }\n return null;\n }\n shouldQueryCache() {\n return this.opts?.cacheUsage !== \"ONLY_RELAY\" /* ONLY_RELAY */;\n }\n shouldQueryRelays() {\n return this.opts?.cacheUsage !== \"ONLY_CACHE\" /* ONLY_CACHE */;\n }\n /**\n * Start the subscription. This is the main method that should be called\n * after creating a subscription.\n */\n async start() {\n let cachePromise;\n if (this.shouldQueryCache()) {\n cachePromise = this.startWithCache();\n const shouldWaitForCache = this.ndk.cacheAdapter?.locking && this.shouldQueryRelays() && this.opts?.cacheUsage !== \"PARALLEL\" /* PARALLEL */;\n if (shouldWaitForCache) {\n this.debug(\"waiting for cache to finish\");\n await cachePromise;\n if (this.eventFirstSeen.size > 0) {\n this.debug(\"cache hit, skipping relay query\");\n this.emit(\"eose\", this);\n return;\n }\n }\n }\n if (this.shouldQueryRelays()) {\n this.startWithRelaySet();\n }\n return;\n }\n stop() {\n this.relaySubscriptions.forEach((sub) => sub.unsub());\n this.relaySubscriptions.clear();\n this.emit(\"close\", this);\n }\n async startWithCache() {\n if (this.ndk.cacheAdapter?.query) {\n this.debug(\"querying cache\");\n const promise = this.ndk.cacheAdapter.query(this);\n if (this.ndk.cacheAdapter.locking) {\n await promise;\n }\n }\n }\n startWithRelaySet() {\n if (!this.relaySet) {\n this.relaySet = calculateRelaySetFromFilter(this.ndk, this.filter);\n }\n if (this.relaySet) {\n this.debug(\"querying relays\");\n this.relaySet.subscribe(this);\n }\n }\n // EVENT handling\n eventFirstSeen = /* @__PURE__ */ new Map();\n /**\n * Called when an event is received from a relay or the cache\n * @param event\n * @param relay\n * @param fromCache Whether the event was received from the cache\n */\n eventReceived(event, relay, fromCache = false) {\n if (!fromCache && relay) {\n const eventAlreadySeen = this.eventFirstSeen.has(event.id);\n if (eventAlreadySeen) {\n const timeSinceFirstSeen = Date.now() - (this.eventFirstSeen.get(event.id) || 0);\n relay.scoreSlowerEvent(timeSinceFirstSeen);\n this.emit(\"event:dup\", event, relay, timeSinceFirstSeen, this);\n return;\n }\n if (this.ndk.cacheAdapter) {\n this.ndk.cacheAdapter.setEvent(event, this.filter);\n }\n this.eventFirstSeen.set(`${event.id}`, Date.now());\n } else {\n this.eventFirstSeen.set(`${event.id}`, 0);\n }\n this.emit(\"event\", event, relay, this);\n }\n // EOSE handling\n eosesSeen = /* @__PURE__ */ new Set();\n eoseTimeout;\n eoseReceived(relay) {\n if (this.opts?.closeOnEose) {\n this.relaySubscriptions.get(relay)?.unsub();\n this.relaySubscriptions.delete(relay);\n if (this.relaySubscriptions.size === 0) {\n this.emit(\"close\", this);\n }\n }\n this.eosesSeen.add(relay);\n const hasSeenAllEoses = this.eosesSeen.size === this.relaySet?.size();\n if (hasSeenAllEoses) {\n this.emit(\"eose\");\n } else {\n if (this.eoseTimeout) {\n clearTimeout(this.eoseTimeout);\n }\n this.eoseTimeout = setTimeout(() => {\n this.emit(\"eose\");\n }, 500);\n }\n }\n};\nvar NDKSubscriptionGroup = class extends NDKSubscription {\n subscriptions;\n constructor(ndk, subscriptions) {\n const debug3 = ndk.debug.extend(\"subscription-group\");\n const filters = mergeFilters(subscriptions.map((s) => s.filter));\n super(\n ndk,\n filters,\n subscriptions[0].opts,\n // TODO: This should be merged\n subscriptions[0].relaySet\n // TODO: This should be merged\n );\n this.subscriptions = subscriptions;\n debug3(\"merged filters\", {\n count: subscriptions.length,\n mergedFilters: this.filter\n });\n this.on(\"event\", this.forwardEvent);\n this.on(\"event:dup\", this.forwardEventDup);\n this.on(\"eose\", this.forwardEose);\n this.on(\"close\", this.forwardClose);\n }\n isEventForSubscription(event, subscription) {\n const { filter } = subscription;\n if (!filter)\n return false;\n return matchFilter(filter, event.rawEvent());\n }\n forwardEvent(event, relay) {\n for (const subscription of this.subscriptions) {\n if (!this.isEventForSubscription(event, subscription)) {\n continue;\n }\n subscription.emit(\"event\", event, relay, subscription);\n }\n }\n forwardEventDup(event, relay, timeSinceFirstSeen) {\n for (const subscription of this.subscriptions) {\n if (!this.isEventForSubscription(event, subscription)) {\n continue;\n }\n subscription.emit(\"event:dup\", event, relay, timeSinceFirstSeen, subscription);\n }\n }\n forwardEose() {\n for (const subscription of this.subscriptions) {\n subscription.emit(\"eose\", subscription);\n }\n }\n forwardClose() {\n for (const subscription of this.subscriptions) {\n subscription.emit(\"close\", subscription);\n }\n }\n};\nfunction mergeFilters(filters) {\n const result = {};\n filters.forEach((filter) => {\n Object.entries(filter).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n if (result[key] === void 0) {\n result[key] = [...value];\n } else {\n result[key] = Array.from(/* @__PURE__ */ new Set([...result[key], ...value]));\n }\n } else {\n result[key] = value;\n }\n });\n });\n return result;\n}\n\n// src/relay/sets/index.ts\nvar NDKRelaySet2 = class {\n relays;\n debug;\n ndk;\n constructor(relays, ndk) {\n this.relays = relays;\n this.ndk = ndk;\n this.debug = ndk.debug.extend(\"relayset\");\n }\n /**\n * Creates a relay set from a list of relay URLs.\n *\n * This is useful for testing in development to pass a local relay\n * to publish methods.\n *\n * @param relayUrls - list of relay URLs to include in this set\n * @param ndk\n * @returns NDKRelaySet\n */\n static fromRelayUrls(relayUrls, ndk) {\n const relays = /* @__PURE__ */ new Set();\n for (const url of relayUrls) {\n const relay = ndk.pool.relays.get(url);\n if (relay) {\n relays.add(relay);\n }\n }\n return new NDKRelaySet2(new Set(relays), ndk);\n }\n subscribeOnRelay(relay, subscription) {\n const sub = relay.subscribe(subscription);\n subscription.relaySubscriptions.set(relay, sub);\n }\n /**\n * Calculates an ID of this specific combination of relays.\n */\n getId() {\n const urls = Array.from(this.relays).map((r) => r.url);\n const urlString = urls.sort().join(\",\");\n return bytesToHex(sha256(urlString));\n }\n /**\n * Add a subscription to this relay set\n */\n subscribe(subscription) {\n const subGroupableId = subscription.groupableId();\n const groupableId = `${this.getId()}:${subGroupableId}`;\n if (!groupableId) {\n this.executeSubscription(subscription);\n return subscription;\n }\n const delayedSubscription = this.ndk.delayedSubscriptions.get(groupableId);\n if (delayedSubscription) {\n delayedSubscription.push(subscription);\n } else {\n setTimeout(() => {\n this.executeDelayedSubscription(groupableId);\n }, subscription.opts.groupableDelay);\n this.ndk.delayedSubscriptions.set(groupableId, [subscription]);\n }\n return subscription;\n }\n executeDelayedSubscription(groupableId) {\n const subscriptions = this.ndk.delayedSubscriptions.get(groupableId);\n this.ndk.delayedSubscriptions.delete(groupableId);\n if (subscriptions) {\n if (subscriptions.length > 1) {\n this.executeSubscriptions(subscriptions);\n } else {\n this.executeSubscription(subscriptions[0]);\n }\n }\n }\n /**\n * This function takes a similar group of subscriptions, merges the filters\n * and sends a single subscription to the relay.\n */\n executeSubscriptions(subscriptions) {\n const ndk = subscriptions[0].ndk;\n const subGroup = new NDKSubscriptionGroup(ndk, subscriptions);\n this.executeSubscription(subGroup);\n }\n executeSubscription(subscription) {\n this.debug(\"subscribing\", { filter: subscription.filter });\n for (const relay of this.relays) {\n if (relay.status === 1 /* CONNECTED */) {\n this.subscribeOnRelay(relay, subscription);\n } else {\n const connectedListener = () => {\n this.debug(\"new relay coming online for active subscription\", {\n relay: relay.url,\n filter: subscription.filter\n });\n this.subscribeOnRelay(relay, subscription);\n };\n relay.once(\"connect\", connectedListener);\n subscription.once(\"close\", () => {\n relay.removeListener(\"connect\", connectedListener);\n });\n }\n }\n return subscription;\n }\n async publish(event) {\n this.relays.forEach(async (relay) => {\n try {\n await relay.publish(event);\n } catch (e) {\n }\n });\n }\n size() {\n return this.relays.size;\n }\n};\n\n// src/relay/sets/calculate.ts\nfunction calculateRelaySetFromEvent(ndk, event) {\n const relays = /* @__PURE__ */ new Set();\n ndk.pool?.relays.forEach((relay) => relays.add(relay));\n return new NDKRelaySet2(relays, ndk);\n}\nfunction calculateRelaySetFromFilter(ndk, filter) {\n const relays = /* @__PURE__ */ new Set();\n ndk.pool?.relays.forEach((relay) => {\n if (!relay.complaining) {\n relays.add(relay);\n } else {\n ndk.debug(`Relay ${relay.url} is complaining, not adding to set`);\n }\n });\n return new NDKRelaySet2(relays, ndk);\n}\n\n// src/signers/nip07/index.ts\nvar NDKNip07Signer = class {\n _userPromise;\n constructor() {\n if (!window.nostr) {\n throw new Error(\"NIP-07 extension not available\");\n }\n }\n async blockUntilReady() {\n const pubkey = await window.nostr?.getPublicKey();\n if (!pubkey) {\n throw new Error(\"User rejected access\");\n }\n return new NDKUser({ hexpubkey: pubkey });\n }\n /**\n * Getter for the user property.\n * @returns The NDKUser instance.\n */\n async user() {\n if (!this._userPromise) {\n this._userPromise = this.blockUntilReady();\n }\n return this._userPromise;\n }\n /**\n * Signs the given Nostr event.\n * @param event - The Nostr event to be signed.\n * @returns The signature of the signed event.\n * @throws Error if the NIP-07 is not available on the window object.\n */\n async sign(event) {\n if (!window.nostr) {\n throw new Error(\"NIP-07 extension not available\");\n }\n const signedEvent = await window.nostr.signEvent(event);\n return signedEvent.sig;\n }\n async encrypt(recipient, value) {\n if (!window.nostr) {\n throw new Error(\"NIP-07 extension not available\");\n }\n const recipientHexPubKey = recipient.hexpubkey();\n return window.nostr.nip04.encrypt(recipientHexPubKey, value);\n }\n async decrypt(sender, value) {\n if (!window.nostr) {\n throw new Error(\"NIP-07 extension not available\");\n }\n const senderHexPubKey = sender.hexpubkey();\n return window.nostr.nip04.decrypt(senderHexPubKey, value);\n }\n};\n\n// src/signers/nip46/rpc.ts\nimport EventEmitter6 from \"eventemitter3\";\nvar NDKNostrRpc = class extends EventEmitter6 {\n ndk;\n signer;\n debug;\n constructor(ndk, signer, debug3) {\n super();\n this.ndk = ndk;\n this.signer = signer;\n this.debug = debug3.extend(\"rpc\");\n }\n /**\n * Subscribe to a filter. This function will resolve once the subscription is ready.\n */\n async subscribe(filter) {\n const sub = this.ndk.subscribe(filter, { closeOnEose: false });\n sub.on(\"event\", async (event) => {\n try {\n const parsedEvent = await this.parseEvent(event);\n if (parsedEvent.method) {\n this.emit(\"request\", parsedEvent);\n } else {\n this.emit(`response-${parsedEvent.id}`, parsedEvent);\n }\n } catch (e) {\n this.debug(\"error parsing event\", e, event);\n }\n });\n return new Promise((resolve, reject) => {\n sub.on(\"eose\", () => resolve(sub));\n });\n }\n async parseEvent(event) {\n const remoteUser = this.ndk.getUser({ hexpubkey: event.pubkey });\n remoteUser.ndk = this.ndk;\n const decryptedContent = await this.signer.decrypt(remoteUser, event.content);\n const parsedContent = JSON.parse(decryptedContent);\n const { id, method, params, result, error } = parsedContent;\n if (method) {\n return { id, pubkey: event.pubkey, method, params, event };\n } else {\n return { id, result, error, event };\n }\n }\n async sendResponse(id, remotePubkey, result, kind = 24133, error) {\n const res = { id, result };\n if (error) {\n res.error = error;\n }\n const localUser = await this.signer.user();\n const remoteUser = this.ndk.getUser({ hexpubkey: remotePubkey });\n const event = new NDKEvent(this.ndk, {\n kind,\n content: JSON.stringify(res),\n tags: [[\"p\", remotePubkey]],\n pubkey: localUser.hexpubkey()\n });\n event.content = await this.signer.encrypt(remoteUser, event.content);\n await event.sign(this.signer);\n await this.ndk.publish(event);\n }\n /**\n * Sends a request.\n * @param remotePubkey\n * @param method\n * @param params\n * @param kind\n * @param id\n */\n async sendRequest(remotePubkey, method, params = [], kind = 24133, cb) {\n const id = Math.random().toString(36).substring(7);\n const localUser = await this.signer.user();\n const remoteUser = this.ndk.getUser({ hexpubkey: remotePubkey });\n const request = { id, method, params };\n const promise = new Promise((resolve) => {\n if (cb)\n this.once(`response-${id}`, cb);\n });\n const event = new NDKEvent(this.ndk, {\n kind,\n content: JSON.stringify(request),\n tags: [[\"p\", remotePubkey]],\n pubkey: localUser.hexpubkey()\n });\n event.content = await this.signer.encrypt(remoteUser, event.content);\n await event.sign(this.signer);\n this.debug(\"sending request to\", remotePubkey);\n await this.ndk.publish(event);\n return promise;\n }\n};\n\n// src/signers/nip46/backend/connect.ts\nvar ConnectEventHandlingStrategy = class {\n async handle(backend, remotePubkey, params) {\n const [pubkey, token] = params;\n const debug3 = backend.debug.extend(\"connect\");\n debug3(`connection request from ${pubkey}`);\n if (token && backend.applyToken) {\n debug3(`applying token`);\n await backend.applyToken(pubkey, token);\n }\n if (await backend.pubkeyAllowed(pubkey, \"connect\", token)) {\n debug3(`connection request from ${pubkey} allowed`);\n return \"ack\";\n } else {\n debug3(`connection request from ${pubkey} rejected`);\n }\n return void 0;\n }\n};\n\n// src/signers/nip46/backend/describe.ts\nvar DescribeHandlingStrategy = class {\n async handle(backend, remotePubkey, params) {\n const keys = Object.keys(backend.handlers);\n return JSON.stringify(keys);\n }\n};\n\n// src/signers/nip46/backend/get-public-key.ts\nvar GetPublicKeyHandlingStrategy = class {\n async handle(backend, remotePubkey, params) {\n return backend.localUser?.hexpubkey();\n }\n};\n\n// src/signers/nip46/backend/sign-event.ts\nvar SignEventHandlingStrategy = class {\n async handle(backend, remotePubkey, params) {\n const event = await backend.signEvent(remotePubkey, params);\n if (!event)\n return void 0;\n return JSON.stringify(await event.toNostrEvent());\n }\n};\n\n// src/signers/nip46/backend/nip04-decrypt.ts\nvar Nip04DecryptHandlingStrategy = class {\n async handle(backend, remotePubkey, params) {\n const [senderPubkey, payload] = params;\n const senderUser = new NDKUser({ hexpubkey: senderPubkey });\n const decryptedPayload = await backend.decrypt(remotePubkey, senderUser, payload);\n return JSON.stringify([decryptedPayload]);\n }\n};\n\n// src/signers/nip46/backend/nip04-encrypt.ts\nvar Nip04EncryptHandlingStrategy = class {\n async handle(backend, remotePubkey, params) {\n const [recipientPubkey, payload] = params;\n const recipientUser = new NDKUser({ hexpubkey: recipientPubkey });\n const decryptedPayload = await backend.encrypt(remotePubkey, recipientUser, payload);\n return decryptedPayload;\n }\n};\n\n// src/signers/nip46/backend/index.ts\nvar NDKNip46Backend = class {\n ndk;\n signer;\n localUser;\n debug;\n rpc;\n permitCallback;\n /**\n * @param ndk The NDK instance to use\n * @param privateKey The private key of the npub that wants to be published as\n */\n constructor(ndk, privateKey, permitCallback) {\n this.ndk = ndk;\n this.signer = new NDKPrivateKeySigner(privateKey);\n this.debug = ndk.debug.extend(\"nip46:backend\");\n this.rpc = new NDKNostrRpc(ndk, this.signer, this.debug);\n this.permitCallback = permitCallback;\n }\n /**\n * This method starts the backend, which will start listening for incoming\n * requests.\n */\n async start() {\n this.localUser = await this.signer.user();\n const sub = this.ndk.subscribe(\n {\n kinds: [24133],\n \"#p\": [this.localUser.hexpubkey()]\n },\n { closeOnEose: false }\n );\n sub.on(\"event\", (e) => this.handleIncomingEvent(e));\n }\n handlers = {\n connect: new ConnectEventHandlingStrategy(),\n sign_event: new SignEventHandlingStrategy(),\n nip04_encrypt: new Nip04EncryptHandlingStrategy(),\n nip04_decrypt: new Nip04DecryptHandlingStrategy(),\n get_public_key: new GetPublicKeyHandlingStrategy(),\n describe: new DescribeHandlingStrategy()\n };\n /**\n * Enables the user to set a custom strategy for handling incoming events.\n * @param method - The method to set the strategy for\n * @param strategy - The strategy to set\n */\n setStrategy(method, strategy) {\n this.handlers[method] = strategy;\n }\n /**\n * Overload this method to apply tokens, which can\n * wrap permission sets to be applied to a pubkey.\n * @param pubkey public key to apply token to\n * @param token token to apply\n */\n async applyToken(pubkey, token) {\n throw new Error(\"connection token not supported\");\n }\n async handleIncomingEvent(event) {\n const { id, method, params } = await this.rpc.parseEvent(event);\n const remotePubkey = event.pubkey;\n let response;\n this.debug(\"incoming event\", { id, method, params });\n const strategy = this.handlers[method];\n if (strategy) {\n try {\n response = await strategy.handle(this, remotePubkey, params);\n } catch (e) {\n this.debug(\"error handling event\", e, { id, method, params });\n this.rpc.sendResponse(id, remotePubkey, \"error\", void 0, e.message);\n }\n } else {\n this.debug(\"unsupported method\", { method, params });\n }\n if (response) {\n this.debug(`sending response to ${remotePubkey}`, response);\n this.rpc.sendResponse(id, remotePubkey, response);\n }\n }\n async decrypt(remotePubkey, senderUser, payload) {\n if (!await this.pubkeyAllowed(remotePubkey, \"decrypt\", payload)) {\n this.debug(`decrypt request from ${remotePubkey} rejected`);\n return void 0;\n }\n return await this.signer.decrypt(senderUser, payload);\n }\n async encrypt(remotePubkey, recipientUser, payload) {\n if (!await this.pubkeyAllowed(remotePubkey, \"encrypt\", payload)) {\n this.debug(`encrypt request from ${remotePubkey} rejected`);\n return void 0;\n }\n return await this.signer.encrypt(recipientUser, payload);\n }\n async signEvent(remotePubkey, params) {\n const [eventString] = params;\n this.debug(`sign event request from ${remotePubkey}`);\n const event = new NDKEvent(this.ndk, JSON.parse(eventString));\n this.debug(\"event to sign\", event.rawEvent());\n if (!await this.pubkeyAllowed(remotePubkey, \"sign_event\", event)) {\n this.debug(`sign event request from ${remotePubkey} rejected`);\n return void 0;\n }\n this.debug(`sign event request from ${remotePubkey} allowed`);\n await event.sign(this.signer);\n return event;\n }\n /**\n * This method should be overriden by the user to allow or reject incoming\n * connections.\n */\n async pubkeyAllowed(pubkey, method, params) {\n return this.permitCallback(pubkey, method, params);\n }\n};\n\n// src/signers/nip46/index.ts\nvar NDKNip46Signer = class {\n ndk;\n remoteUser;\n remotePubkey;\n token;\n localSigner;\n rpc;\n debug;\n /**\n * @param ndk - The NDK instance to use\n * @param tokenOrRemotePubkey - The public key, or a connection token, of the npub that wants to be published as\n * @param localSigner - The signer that will be used to request events to be signed\n */\n constructor(ndk, tokenOrRemotePubkey, localSigner) {\n let remotePubkey;\n let token;\n if (tokenOrRemotePubkey.includes(\"#\")) {\n const parts = tokenOrRemotePubkey.split(\"#\");\n remotePubkey = new NDKUser({ npub: parts[0] }).hexpubkey();\n token = parts[1];\n } else if (tokenOrRemotePubkey.startsWith(\"npub\")) {\n remotePubkey = new NDKUser({ npub: tokenOrRemotePubkey }).hexpubkey();\n } else {\n remotePubkey = tokenOrRemotePubkey;\n }\n this.ndk = ndk;\n this.remotePubkey = remotePubkey;\n this.token = token;\n this.debug = ndk.debug.extend(\"nip46:signer\");\n this.remoteUser = new NDKUser({ hexpubkey: remotePubkey });\n if (!localSigner) {\n this.localSigner = NDKPrivateKeySigner.generate();\n } else {\n this.localSigner = localSigner;\n }\n this.rpc = new NDKNostrRpc(ndk, this.localSigner, this.debug);\n }\n /**\n * Get the user that is being published as\n */\n async user() {\n return this.remoteUser;\n }\n async blockUntilReady() {\n const localUser = await this.localSigner.user();\n const user = this.ndk.getUser({ npub: localUser.npub });\n await this.rpc.subscribe({\n kinds: [24133],\n \"#p\": [localUser.hexpubkey()]\n });\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n const connectParams = [localUser.hexpubkey()];\n if (this.token) {\n connectParams.push(this.token);\n }\n this.rpc.sendRequest(\n this.remotePubkey,\n \"connect\",\n connectParams,\n 24133,\n (response) => {\n if (response.result === \"ack\") {\n resolve(user);\n } else {\n reject(response.error);\n }\n }\n );\n }, 100);\n });\n }\n async encrypt(recipient, value) {\n this.debug(\"asking for encryption\");\n const promise = new Promise((resolve, reject) => {\n this.rpc.sendRequest(\n this.remotePubkey,\n \"nip04_encrypt\",\n [recipient.hexpubkey(), value],\n 24133,\n (response) => {\n if (!response.error) {\n resolve(response.result);\n } else {\n reject(response.error);\n }\n }\n );\n });\n return promise;\n }\n async decrypt(sender, value) {\n this.debug(\"asking for decryption\");\n const promise = new Promise((resolve, reject) => {\n this.rpc.sendRequest(\n this.remotePubkey,\n \"nip04_decrypt\",\n [sender.hexpubkey(), value],\n 24133,\n (response) => {\n if (!response.error) {\n const value2 = JSON.parse(response.result);\n resolve(value2[0]);\n } else {\n reject(response.error);\n }\n }\n );\n });\n return promise;\n }\n async sign(event) {\n this.debug(\"asking for a signature\");\n const promise = new Promise((resolve, reject) => {\n this.rpc.sendRequest(\n this.remotePubkey,\n \"sign_event\",\n [JSON.stringify(event)],\n 24133,\n (response) => {\n this.debug(\"got a response\", response);\n if (!response.error) {\n const json = JSON.parse(response.result);\n resolve(json.sig);\n } else {\n reject(response.error);\n }\n }\n );\n });\n return promise;\n }\n};\n\n// src/signers/private-key/index.ts\nimport { generatePrivateKey, getPublicKey, nip04, getSignature } from \"nostr-tools\";\nvar NDKPrivateKeySigner = class {\n _user;\n privateKey;\n constructor(privateKey) {\n if (privateKey) {\n this.privateKey = privateKey;\n this._user = new NDKUser({ hexpubkey: getPublicKey(this.privateKey) });\n }\n }\n static generate() {\n const privateKey = generatePrivateKey();\n return new NDKPrivateKeySigner(privateKey);\n }\n async blockUntilReady() {\n if (!this._user) {\n throw new Error(\"NDKUser not initialized\");\n }\n return this._user;\n }\n async user() {\n await this.blockUntilReady();\n return this._user;\n }\n async sign(event) {\n if (!this.privateKey) {\n throw Error(\"Attempted to sign without a private key\");\n }\n return getSignature(event, this.privateKey);\n }\n async encrypt(recipient, value) {\n if (!this.privateKey) {\n throw Error(\"Attempted to encrypt without a private key\");\n }\n const recipientHexPubKey = recipient.hexpubkey();\n return await nip04.encrypt(this.privateKey, recipientHexPubKey, value);\n }\n async decrypt(sender, value) {\n if (!this.privateKey) {\n throw Error(\"Attempted to decrypt without a private key\");\n }\n const senderHexPubKey = sender.hexpubkey();\n return await nip04.decrypt(this.privateKey, senderHexPubKey, value);\n }\n};\n\n// src/zap/invoice.ts\nimport { decode } from \"light-bolt11-decoder\";\nfunction zapInvoiceFromEvent(event) {\n const description = event.getMatchingTags(\"description\")[0];\n const bolt11 = event.getMatchingTags(\"bolt11\")[0];\n let decodedInvoice;\n let zapRequest;\n if (!description || !bolt11 || !bolt11[1]) {\n return null;\n }\n try {\n let zapRequestPayload = description[1];\n if (zapRequestPayload.startsWith(\"%\")) {\n zapRequestPayload = decodeURIComponent(zapRequestPayload);\n }\n if (zapRequestPayload === \"\") {\n return null;\n }\n zapRequest = JSON.parse(zapRequestPayload);\n decodedInvoice = decode(bolt11[1]);\n } catch (e) {\n return null;\n }\n const amountSection = decodedInvoice.sections.find((s) => s.name === \"amount\");\n if (!amountSection) {\n return null;\n }\n const amount = parseInt(amountSection.value);\n if (!amount) {\n return null;\n }\n const content = zapRequest.content;\n const sender = zapRequest.pubkey;\n const recipientTag = event.getMatchingTags(\"p\")[0];\n const recipient = recipientTag[1];\n let zappedEvent = event.getMatchingTags(\"e\")[0];\n if (!zappedEvent) {\n zappedEvent = event.getMatchingTags(\"a\")[0];\n }\n const zappedEventId = zappedEvent ? zappedEvent[1] : void 0;\n const zapInvoice = {\n id: event.id,\n zapper: event.pubkey,\n zappee: sender,\n zapped: recipient,\n zappedEvent: zappedEventId,\n amount,\n comment: content\n };\n return zapInvoice;\n}\n\n// src/index.ts\nvar NDK5 = class extends EventEmitter7 {\n pool;\n signer;\n cacheAdapter;\n debug;\n devWriteRelaySet;\n delayedSubscriptions;\n constructor(opts = {}) {\n super();\n this.debug = opts.debug || debug2(\"ndk\");\n this.pool = new NDKPool(opts.explicitRelayUrls || [], this);\n this.signer = opts.signer;\n this.cacheAdapter = opts.cacheAdapter;\n this.delayedSubscriptions = /* @__PURE__ */ new Map();\n if (opts.devWriteRelayUrls) {\n this.devWriteRelaySet = NDKRelaySet2.fromRelayUrls(opts.devWriteRelayUrls, this);\n }\n }\n /**\n * Connect to relays with optional timeout.\n * If the timeout is reached, the connection will be continued to be established in the background.\n */\n async connect(timeoutMs) {\n this.debug(\"Connecting to relays\", { timeoutMs });\n return this.pool.connect(timeoutMs);\n }\n /**\n * Get a NDKUser object\n *\n * @param opts\n * @returns\n */\n getUser(opts) {\n const user = new NDKUser(opts);\n user.ndk = this;\n return user;\n }\n /**\n * Create a new subscription. Subscriptions automatically start and finish when all relays\n * on the set send back an EOSE. (set `opts.closeOnEose` to `false` in order avoid this)\n *\n * @param filter\n * @param opts\n * @param relaySet explicit relay set to use\n * @returns NDKSubscription\n */\n subscribe(filter, opts, relaySet) {\n const subscription = new NDKSubscription(this, filter, opts, relaySet);\n subscription.start();\n return subscription;\n }\n /**\n * Publish an event\n * @param event event to publish\n * @returns\n */\n async publish(event, relaySet) {\n if (!relaySet) {\n relaySet = this.devWriteRelaySet || calculateRelaySetFromEvent(this, event);\n }\n return relaySet.publish(event);\n }\n /**\n * Fetch a single event\n */\n async fetchEvent(filter, opts = {}) {\n return new Promise((resolve) => {\n const s = this.subscribe(filter, { ...opts, closeOnEose: true });\n s.on(\"event\", (event) => {\n event.ndk = this;\n resolve(event);\n });\n s.on(\"eose\", () => {\n resolve(null);\n });\n });\n }\n /**\n * Fetch events\n */\n async fetchEvents(filter, opts = {}) {\n return new Promise((resolve) => {\n const events = /* @__PURE__ */ new Map();\n const relaySetSubscription = this.subscribe(filter, { ...opts, closeOnEose: true });\n relaySetSubscription.on(\"event\", (event) => {\n const existingEvent = events.get(event.tagId());\n if (existingEvent) {\n event = dedup(existingEvent, event);\n }\n event.ndk = this;\n events.set(event.tagId(), event);\n });\n relaySetSubscription.on(\"eose\", () => {\n resolve(new Set(events.values()));\n });\n });\n }\n /**\n * Ensures that a signer is available to sign an event.\n */\n async assertSigner() {\n if (!this.signer) {\n this.emit(\"signerRequired\");\n throw new Error(\"Signer required\");\n }\n }\n};\nexport {\n NDKEvent,\n NDKNip07Signer,\n NDKNip46Backend,\n NDKNip46Signer,\n NDKNostrRpc,\n NDKPrivateKeySigner,\n NDKRelay,\n NDKRelaySet2 as NDKRelaySet,\n NDKRelayStatus,\n NDKSubscription,\n NDKSubscriptionCacheUsage,\n NDKSubscriptionGroup,\n NDKUser,\n NDK5 as default,\n defaultOpts,\n mergeEvent,\n mergeFilters,\n zapInvoiceFromEvent\n};\n","import { chatData } from '../store';\nimport { getEventHash, relayInit } from 'nostr-tools';\nimport RelayPool from 'nostr/lib/relay-pool';\nimport { createEventDispatcher } from 'svelte';\nimport EventEmitter from 'events';\nimport * as uuid from 'uuid';\nimport debug from 'debug';\nimport { NDKEvent, zapInvoiceFromEvent } from '@nostr-dev-kit/ndk';\n\nconst log = new debug('nostr:adapter');\nconst profilesLog = new debug('nostr:adapter:profiles');\nconst writeLog = new debug('nostr:adapter:write');\n\nclass NstrAdapter {\n relayStatus = {};\n #pool = null;\n #messages = {};\n #eventEmitter = new EventEmitter();\n #handlers = {}\n tags;\n referenceTags;\n type;\n #websiteOwnerPubkey;\n chatId;\n relayUrls = [];\n\n #profileRequestQueue = [];\n #requestedProfiles = [];\n #profileRequestTimer;\n #delayedSubscriptions = {};\n #delayedSubscriptionTimeouts = {};\n\n constructor(clientPubkey, {tags, referenceTags, type='DM', chatId, websiteOwnerPubkey, relays} = {}) {\n this.pubkey = clientPubkey;\n this.#websiteOwnerPubkey = websiteOwnerPubkey;\n this.relayUrls = relays\n\n if (type) {\n this.setChatConfiguration(type, tags, referenceTags, chatId);\n }\n }\n\n setChatConfiguration(type, tags, referenceTags, chatId) {\n this.type = type;\n this.tags = tags;\n this.chatId = chatId;\n this.referenceTags = referenceTags;\n\n // handle connection\n if (this.#pool) { this.#disconnect() }\n\n let filters = [];\n\n // handle subscriptions\n // if this is DM type then subscribe to chats with this website owner\n switch (this.type) {\n case 'DM':\n filters.push({\n kinds: [4],\n '#p': [this.pubkey, this.#websiteOwnerPubkey],\n 'authors': [this.pubkey, this.#websiteOwnerPubkey]\n });\n break;\n case 'GROUP':\n if (this.chatId) {\n filters.push({\n kinds: [41, 42],\n \"#e\": [this.chatId],\n limit: 200,\n })\n }\n case 'GLOBAL':\n if (this.tags && this.tags.length > 0) {\n filters.push({kinds: [1], '#t': this.tags, limit: 20});\n }\n if (this.referenceTags && this.referenceTags.length > 0) {\n filters.push({kinds: [1], '#r': this.referenceTags, limit: 20});\n }\n\n break;\n }\n\n if (filters && filters.length > 0) {\n this.#connect()\n this.subscribe(filters, (e) => { this.#emitMessage(e) })\n }\n }\n\n async getPubKey() {\n return this.pubkey;\n }\n\n on(event, callback) {\n this.#eventEmitter.on(event, callback);\n }\n\n /**\n * Send a message to the relay\n * @param {String} message - The message to send\n */\n async send(message, {tagPubKeys, tags} = {}) {\n let event;\n\n if (!tags) { tags = []}\n\n if (this.type === 'DM') {\n event = await this.sendKind4(message, {tagPubKeys, tags});\n } else if (this.type === 'GROUP') {\n event = await this.sendKind42(message, {tagPubKeys, tags, chatId: this.chatId});\n } else {\n event = await this.sendKind1(message, {tagPubKeys, tags});\n }\n\n event.id = getEventHash(event)\n const signedEvent = await this.signEvent(event)\n\n this.#_publish(signedEvent);\n\n return event.id;\n }\n\n async sendKind4(message, {tagPubKeys, tags} = {}) {\n let ciphertext = await this.encrypt(this.#websiteOwnerPubkey, message);\n let event = {\n kind: 4,\n pubkey: this.pubkey,\n created_at: Math.floor(Date.now() / 1000),\n content: ciphertext,\n tags: [\n ['p', this.#websiteOwnerPubkey],\n ...tags\n ],\n }\n\n return event;\n }\n\n async sendKind42(message, {tagPubKeys, tags, chatId} = {}) {\n if (!tags) { tags = []; }\n\n if (this.tags) {\n this.tags.forEach((t) => tags.push(['t', t]));\n }\n\n // check if there is an e tag\n const reply = !!tags.find((t) => t[0] === 'e');\n\n if (!reply) {\n tags.push(['e', chatId, \"wss://nos.lol\", reply ? \"reply\" : \"root\"]);\n }\n\n if (this.referenceTags) {\n this.referenceTags.forEach((t) => tags.push(['r', t]));\n }\n\n let event = {\n kind: 42,\n created_at: Math.floor(Date.now() / 1000),\n tags,\n content: message,\n pubkey: this.pubkey,\n }\n\n if (tagPubKeys) {\n for (let pubkey of tagPubKeys) {\n if (pubkey) {\n event.tags.push(['p', pubkey]);\n }\n }\n }\n\n event.id = getEventHash(event)\n this.subscribeToEventAndResponses(event.id);\n\n return event;\n }\n\n async sendKind1(message, {tagPubKeys, tags} = {}) {\n if (!tags) { tags = []; }\n\n if (this.tags) {\n this.tags.forEach((t) => tags.push(['t', t]));\n }\n\n if (this.referenceTags) {\n this.referenceTags.forEach((t) => tags.push(['r', t]));\n }\n\n let event = {\n kind: 1,\n created_at: Math.floor(Date.now() / 1000),\n tags,\n content: message,\n pubkey: this.pubkey,\n }\n\n if (tagPubKeys) {\n for (let pubkey of tagPubKeys) {\n if (pubkey) {\n event.tags.push(['p', pubkey]);\n }\n }\n }\n\n event.id = getEventHash(event)\n this.subscribeToEventAndResponses(event.id);\n\n return event;\n }\n\n async #_publish(event) {\n writeLog('publish', event);\n this.#pool.send([ 'EVENT', event ]);\n }\n\n async onEvent(event, messageCallback) {\n this.#addProfileRequest(event.pubkey);\n\n messageCallback(event)\n }\n\n async delayedSubscribe(filters, family, timeout) {\n this.#delayedSubscriptions[family] = this.#delayedSubscriptions[family] || []\n this.#delayedSubscriptions[family].push(filters);\n\n if (!this.#delayedSubscriptionTimeouts[family]) {\n this.#delayedSubscriptionTimeouts[family] = setTimeout(() => {\n delete this.#delayedSubscriptionTimeouts[family];\n\n // if there are more than 10 filters then we need to split them up\n // into multiple subscriptions\n let filters = this.#delayedSubscriptions[family];\n delete this.#delayedSubscriptions[family];\n\n // split filters into groups of 10\n let groups = [];\n groups = filters.reduce((groups, filter, index) => {\n if (index % 10 === 0) {\n groups.push([]);\n }\n groups[groups.length - 1].push(filter);\n return groups;\n }, groups);\n\n groups.forEach((filters) => {\n this.subscribe(filters, (e) => { this.#emitMessage(e)});\n });\n }, timeout)\n }\n }\n\n async subscribe(filters, messageCallback=null) {\n if (!messageCallback) { messageCallback = (e) => { this.#emitMessage(e) } }\n return this.#_subscribe(filters, messageCallback)\n }\n\n async #_subscribe(filters, messageCallback) {\n const subId = uuid.v4();\n this.#handlers[subId] = messageCallback;\n if (!Array.isArray(filters)) { filters = [filters] }\n\n\n\n this.#pool.subscribe(subId, filters);\n this.#pool.on('event', (relay, recSubId, e) => {\n this.onEvent(e, this.#handlers[recSubId])\n });\n\n return subId;\n }\n\n async #emitMessage(event) {\n // has already been emitted\n if (this.#messages[event.id]) {\n return;\n }\n\n this.#messages[event.id] = true;\n\n // decrypt\n if (event.kind === 4) {\n event.content = await this.decrypt(this.#websiteOwnerPubkey, event.content);\n }\n\n let deletedEvents = []\n if (event.kind === 5) {\n deletedEvents = event.tags.filter(tag => tag[0] === 'e').map(tag => tag[1]);\n }\n\n let zap;\n if (event.kind === 9735) {\n const ndkEvent = new NDKEvent(null, event);\n zap = zapInvoiceFromEvent(ndkEvent);\n console.log(`received a zap invoice: ${zap}`, event);\n }\n\n switch (event.kind) {\n case 1:\n case 42:\n this.#eventEmitter.emit('message', event); break;\n case 41:\n this.#eventEmitter.emit('channelMetadata', event); break;\n case 4: this.#eventEmitter.emit('message', event); break;\n case 5: this.#eventEmitter.emit('deleted', deletedEvents); break;\n case 7: this.#eventEmitter.emit('reaction', event); break;\n case 9735: this.#eventEmitter.emit('zap', zap); break;\n default:\n // alert('unknown event kind ' + event.kind)\n console.log('unknown event kind', event.kind, event);\n }\n\n }\n\n subscribeToEventAndResponses(eventId) {\n this.subscribe([\n {ids: [eventId]},\n {'#e': [eventId]},\n ], (e) => {\n this.#emitMessage(e);\n // this.subscribeToResponses(e)\n })\n }\n\n subscribeToResponses(event) {\n this.subscribe([\n {'#e': [event.id]},\n ], (e) => {\n this.#emitMessage(e);\n this.subscribeToResponses(e)\n })\n }\n\n /**\n * Connect to the relay\n */\n #connect() {\n this.relayUrls.forEach((url) => {\n this.relayStatus[url] = 'disconnected';\n });\n this.#eventEmitter.emit('connectivity', this.relayStatus);\n\n // console.log('connecting to relay', this.relayUrls);\n this.#pool = new RelayPool(this.relayUrls)\n this.#pool.on('open', (relay) => {\n // console.log(`connected to ${relay.url}`, new Date())\n this.relayStatus[relay.url] = 'connected';\n this.#eventEmitter.emit('connectivity', this.relayStatus);\n })\n\n this.#pool.on('error', (relay, r, e) => {\n this.relayStatus[relay.url] = 'error';\n this.#eventEmitter.emit('connectivity', this.relayStatus);\n console.log('error from relay', relay.url, r, e)\n })\n\n this.#pool.on('close', (relay, r) => {\n this.relayStatus[relay.url] = 'closed';\n this.#eventEmitter.emit('connectivity', this.relayStatus);\n console.log('error from relay', relay.url, r)\n })\n\n this.#pool.on('notice', (relay, r) => {\n console.log('notice', relay.url, r)\n })\n }\n\n #disconnect() {\n this.relayUrls.forEach((url) => {\n this.relayStatus[url] = 'disconnected';\n });\n this.#eventEmitter.emit('connectivity', this.relayStatus);\n this.#pool.close();\n this.#pool = null;\n }\n\n //\n //\n // Profiles\n //\n //\n reqProfile(pubkey) {\n this.#addProfileRequest(pubkey);\n }\n\n #addProfileRequest(pubkey, event=null) {\n if (this.#profileRequestQueue.includes(pubkey)) { return; }\n if (this.#requestedProfiles.includes(pubkey)) { return; }\n this.#profileRequestQueue.push(pubkey);\n this.#requestedProfiles.push(pubkey);\n\n if (!this.#profileRequestTimer) {\n this.#profileRequestTimer = setTimeout(() => {\n this.#profileRequestTimer = null;\n this.#requestProfiles();\n }, 500);\n }\n }\n\n /**\n * Send request for all queued profiles\n */\n async #requestProfiles() {\n if (this.#profileRequestQueue.length > 0) {\n profilesLog('requesting profiles', this.#profileRequestQueue);\n\n // send request\n const subId = await this.subscribe({ kinds: [0], authors: this.#profileRequestQueue }, (e) => {\n this.#processReceivedProfile(e);\n });\n profilesLog('subscribed to request', {subId})\n this.#profileRequestQueue = [];\n\n setTimeout(() => {\n profilesLog('unsubscribing from request', {subId})\n this.#pool.unsubscribe(subId);\n }, 5000);\n }\n }\n\n #processReceivedProfile(event) {\n profilesLog('received profile', event)\n let profile;\n try {\n profile = JSON.parse(event.content);\n } catch (e) {\n profilesLog('failed to parse profile', event);\n return;\n }\n this.#eventEmitter.emit('profile', {pubkey: event.pubkey, profile});\n }\n}\n\nexport default NstrAdapter;","import NstrAdapter from './index.js';\n\nclass NstrAdapterNip07 extends NstrAdapter {\n constructor(pubkey, adapterConfig={}) {\n super(pubkey, adapterConfig);\n }\n\n async signEvent(event) {\n return await window.nostr.signEvent(event);\n }\n\n async encrypt(destPubkey, message) {\n return await window.nostr.nip04.encrypt(destPubkey, message);\n }\n\n async decrypt(destPubkey, message) {\n return await window.nostr.nip04.decrypt(destPubkey, message);\n }\n}\n\nexport default NstrAdapterNip07;\n","import EventEmitter from 'events';\nimport { relayInit, getPublicKey, getEventHash, signEvent, validateEvent, verifySignature, nip04 } from 'nostr-tools';\n\nfunction _regeneratorRuntime() {\n _regeneratorRuntime = function () {\n return exports;\n };\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function (obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == typeof value && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function (method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator.return && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function (skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function () {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function (exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function (type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function (record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function (finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n catch: function (tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function (iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\n\nvar NostrRPC = /*#__PURE__*/function () {\n function NostrRPC(opts) {\n // events\n this.events = new EventEmitter();\n this.relay = opts.relay || 'wss://nostr.vulpem.com';\n this.self = {\n pubkey: getPublicKey(opts.secretKey),\n secret: opts.secretKey\n };\n }\n var _proto = NostrRPC.prototype;\n _proto.call = /*#__PURE__*/function () {\n var _call = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(_ref, opts) {\n var _this = this;\n var target, _ref$request, _ref$request$id, id, method, _ref$request$params, params, relay, request, event;\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n target = _ref.target, _ref$request = _ref.request, _ref$request$id = _ref$request.id, id = _ref$request$id === void 0 ? /*#__PURE__*/randomID() : _ref$request$id, method = _ref$request.method, _ref$request$params = _ref$request.params, params = _ref$request$params === void 0 ? [] : _ref$request$params;\n _context3.next = 3;\n return connectToRelay(this.relay);\n case 3:\n relay = _context3.sent;\n // prepare request to be sent\n request = prepareRequest(id, method, params);\n _context3.next = 7;\n return prepareEvent(this.self.secret, target, request);\n case 7:\n event = _context3.sent;\n return _context3.abrupt(\"return\", new Promise( /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(resolve, reject) {\n var sub;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n sub = relay.sub([{\n kinds: [24133],\n authors: [target],\n '#p': [_this.self.pubkey],\n limit: 1\n }]);\n _context2.next = 3;\n return broadcastToRelay(relay, event, true);\n case 3:\n // skip waiting for response from remote\n if (opts && opts.skipResponse === true) resolve();\n sub.on('event', /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(event) {\n var payload, plaintext;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n _context.next = 3;\n return nip04.decrypt(_this.self.secret, event.pubkey, event.content);\n case 3:\n plaintext = _context.sent;\n if (plaintext) {\n _context.next = 6;\n break;\n }\n throw new Error('failed to decrypt event');\n case 6:\n payload = JSON.parse(plaintext);\n _context.next = 12;\n break;\n case 9:\n _context.prev = 9;\n _context.t0 = _context[\"catch\"](0);\n return _context.abrupt(\"return\");\n case 12:\n if (isValidResponse(payload)) {\n _context.next = 14;\n break;\n }\n return _context.abrupt(\"return\");\n case 14:\n if (!(payload.id !== id)) {\n _context.next = 16;\n break;\n }\n return _context.abrupt(\"return\");\n case 16:\n // if the response is an error, reject the promise\n if (payload.error) {\n reject(payload.error);\n }\n // if the response is a result, resolve the promise\n if (payload.result) {\n resolve(payload.result);\n }\n case 18:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[0, 9]]);\n }));\n return function (_x5) {\n return _ref3.apply(this, arguments);\n };\n }());\n case 5:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return function (_x3, _x4) {\n return _ref2.apply(this, arguments);\n };\n }()));\n case 9:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function call(_x, _x2) {\n return _call.apply(this, arguments);\n }\n return call;\n }();\n _proto.listen = /*#__PURE__*/function () {\n var _listen = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n var _this2 = this;\n var relay, sub;\n return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return connectToRelay(this.relay);\n case 2:\n relay = _context5.sent;\n sub = relay.sub([{\n kinds: [24133],\n '#p': [this.self.pubkey],\n since: now()\n }]);\n sub.on('event', /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(event) {\n var payload, plaintext, response, body, responseEvent;\n return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n _context4.prev = 0;\n _context4.next = 3;\n return nip04.decrypt(_this2.self.secret, event.pubkey, event.content);\n case 3:\n plaintext = _context4.sent;\n if (plaintext) {\n _context4.next = 6;\n break;\n }\n throw new Error('failed to decrypt event');\n case 6:\n payload = JSON.parse(plaintext);\n _context4.next = 12;\n break;\n case 9:\n _context4.prev = 9;\n _context4.t0 = _context4[\"catch\"](0);\n return _context4.abrupt(\"return\");\n case 12:\n if (isValidRequest(payload)) {\n _context4.next = 14;\n break;\n }\n return _context4.abrupt(\"return\");\n case 14:\n _context4.next = 17;\n return _this2.handleRequest(payload, event);\n case 17:\n response = _context4.sent;\n body = prepareResponse(response.id, response.result, response.error);\n _context4.next = 21;\n return prepareEvent(_this2.self.secret, event.pubkey, body);\n case 21:\n responseEvent = _context4.sent;\n // send response via relay\n relay.publish(responseEvent);\n case 23:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, null, [[0, 9]]);\n }));\n return function (_x6) {\n return _ref4.apply(this, arguments);\n };\n }());\n return _context5.abrupt(\"return\", sub);\n case 6:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, this);\n }));\n function listen() {\n return _listen.apply(this, arguments);\n }\n return listen;\n }();\n _proto.handleRequest = /*#__PURE__*/function () {\n var _handleRequest = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(request, event) {\n var id, method, params, result, error;\n return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n id = request.id, method = request.method, params = request.params;\n result = null;\n error = null;\n _context6.prev = 3;\n this.event = event;\n _context6.next = 7;\n return this[method].apply(this, params);\n case 7:\n result = _context6.sent;\n this.event = undefined;\n _context6.next = 14;\n break;\n case 11:\n _context6.prev = 11;\n _context6.t0 = _context6[\"catch\"](3);\n if (_context6.t0 instanceof Error) {\n error = _context6.t0.message;\n } else {\n error = 'unknown error';\n }\n case 14:\n return _context6.abrupt(\"return\", {\n id: id,\n result: result,\n error: error\n });\n case 15:\n case \"end\":\n return _context6.stop();\n }\n }, _callee6, this, [[3, 11]]);\n }));\n function handleRequest(_x7, _x8) {\n return _handleRequest.apply(this, arguments);\n }\n return handleRequest;\n }();\n return NostrRPC;\n}();\nfunction now() {\n return Math.floor(Date.now() / 1000);\n}\nfunction randomID() {\n return Math.random().toString().slice(2);\n}\nfunction prepareRequest(id, method, params) {\n return JSON.stringify({\n id: id,\n method: method,\n params: params\n });\n}\nfunction prepareResponse(id, result, error) {\n return JSON.stringify({\n id: id,\n result: result,\n error: error\n });\n}\nfunction prepareEvent(_x9, _x10, _x11) {\n return _prepareEvent.apply(this, arguments);\n}\nfunction _prepareEvent() {\n _prepareEvent = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(secretKey, pubkey, content) {\n var cipherText, event, id, sig, signedEvent, ok, veryOk;\n return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n while (1) switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return nip04.encrypt(secretKey, pubkey, content);\n case 2:\n cipherText = _context7.sent;\n event = {\n kind: 24133,\n created_at: now(),\n pubkey: getPublicKey(secretKey),\n tags: [['p', pubkey]],\n content: cipherText\n };\n id = getEventHash(event);\n sig = signEvent(event, secretKey);\n signedEvent = _extends({}, event, {\n id: id,\n sig: sig\n });\n ok = validateEvent(signedEvent);\n veryOk = verifySignature(signedEvent);\n if (!(!ok || !veryOk)) {\n _context7.next = 11;\n break;\n }\n throw new Error('Event is not valid');\n case 11:\n return _context7.abrupt(\"return\", signedEvent);\n case 12:\n case \"end\":\n return _context7.stop();\n }\n }, _callee7);\n }));\n return _prepareEvent.apply(this, arguments);\n}\nfunction isValidRequest(payload) {\n if (!payload) return false;\n var keys = Object.keys(payload);\n if (!keys.includes('id') || !keys.includes('method') || !keys.includes('params')) return false;\n return true;\n}\nfunction isValidResponse(payload) {\n if (!payload) return false;\n var keys = Object.keys(payload);\n if (!keys.includes('id') || !keys.includes('result') || !keys.includes('error')) return false;\n return true;\n}\nfunction connectToRelay(_x12) {\n return _connectToRelay.apply(this, arguments);\n}\nfunction _connectToRelay() {\n _connectToRelay = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(realayURL) {\n var relay;\n return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n while (1) switch (_context8.prev = _context8.next) {\n case 0:\n relay = relayInit(realayURL);\n _context8.next = 3;\n return relay.connect();\n case 3:\n _context8.next = 5;\n return new Promise(function (resolve, reject) {\n relay.on('connect', function () {\n resolve();\n });\n relay.on('error', function () {\n reject(new Error(\"not possible to connect to \" + relay.url));\n });\n });\n case 5:\n return _context8.abrupt(\"return\", relay);\n case 6:\n case \"end\":\n return _context8.stop();\n }\n }, _callee8);\n }));\n return _connectToRelay.apply(this, arguments);\n}\nfunction broadcastToRelay(_x13, _x14, _x15) {\n return _broadcastToRelay.apply(this, arguments);\n}\nfunction _broadcastToRelay() {\n _broadcastToRelay = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9(relay, event, skipSeen) {\n return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n while (1) switch (_context9.prev = _context9.next) {\n case 0:\n if (skipSeen === void 0) {\n skipSeen = false;\n }\n _context9.next = 3;\n return new Promise(function (resolve, reject) {\n relay.on('error', function () {\n reject(new Error(\"failed to connect to \" + relay.url));\n });\n var pub = relay.publish(event);\n if (skipSeen) resolve();\n pub.on('failed', function (reason) {\n reject(reason);\n });\n pub.on('seen', function () {\n resolve();\n });\n });\n case 3:\n return _context9.abrupt(\"return\", _context9.sent);\n case 4:\n case \"end\":\n return _context9.stop();\n }\n }, _callee9);\n }));\n return _broadcastToRelay.apply(this, arguments);\n}\n\nvar ConnectURI = /*#__PURE__*/function () {\n function ConnectURI(_ref) {\n var target = _ref.target,\n metadata = _ref.metadata,\n relay = _ref.relay;\n this.target = target;\n this.metadata = metadata;\n this.relay = relay;\n }\n ConnectURI.fromURI = function fromURI(uri) {\n var url = new URL(uri);\n var target = url.hostname || url.pathname.substring(2);\n if (!target) throw new Error('Invalid connect URI: missing target');\n var relay = url.searchParams.get('relay');\n if (!relay) {\n throw new Error('Invalid connect URI: missing relay');\n }\n var metadata = url.searchParams.get('metadata');\n if (!metadata) {\n throw new Error('Invalid connect URI: missing metadata');\n }\n /* eslint-disable @typescript-eslint/no-unused-vars */\n try {\n var md = JSON.parse(metadata);\n return new ConnectURI({\n target: target,\n metadata: md,\n relay: relay\n });\n } catch (ignore) {\n throw new Error('Invalid connect URI: metadata is not valid JSON');\n }\n };\n var _proto = ConnectURI.prototype;\n _proto.toString = function toString() {\n return \"nostrconnect://\" + this.target + \"?metadata=\" + encodeURIComponent(JSON.stringify(this.metadata)) + \"&relay=\" + encodeURIComponent(this.relay);\n };\n _proto.approve = /*#__PURE__*/function () {\n var _approve = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(secretKey) {\n var rpc;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n rpc = new NostrRPC({\n relay: this.relay,\n secretKey: secretKey\n });\n _context.next = 3;\n return rpc.call({\n target: this.target,\n request: {\n method: 'connect',\n params: [getPublicKey(secretKey)]\n }\n }, {\n skipResponse: true\n });\n case 3:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function approve(_x) {\n return _approve.apply(this, arguments);\n }\n return approve;\n }();\n _proto.reject = /*#__PURE__*/function () {\n var _reject = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(secretKey) {\n var rpc;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n rpc = new NostrRPC({\n relay: this.relay,\n secretKey: secretKey\n });\n _context2.next = 3;\n return rpc.call({\n target: this.target,\n request: {\n method: 'disconnect',\n params: []\n }\n }, {\n skipResponse: true\n });\n case 3:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function reject(_x2) {\n return _reject.apply(this, arguments);\n }\n return reject;\n }();\n return ConnectURI;\n}();\nvar Connect = /*#__PURE__*/function () {\n function Connect(_ref2) {\n var target = _ref2.target,\n relay = _ref2.relay,\n secretKey = _ref2.secretKey;\n this.events = new EventEmitter();\n this.nip04 = {\n encrypt: function () {\n var _encrypt = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(_pubkey, _plaintext) {\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n throw new Error('Not implemented');\n case 1:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n function encrypt(_x3, _x4) {\n return _encrypt.apply(this, arguments);\n }\n return encrypt;\n }(),\n decrypt: function () {\n var _decrypt = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(_pubkey, _ciphertext) {\n return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n throw new Error('Not implemented');\n case 1:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n function decrypt(_x5, _x6) {\n return _decrypt.apply(this, arguments);\n }\n return decrypt;\n }()\n };\n this.rpc = new NostrRPC({\n relay: relay,\n secretKey: secretKey\n });\n if (target) {\n this.target = target;\n }\n }\n var _proto2 = Connect.prototype;\n _proto2.init = /*#__PURE__*/function () {\n var _init = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n var _this = this;\n var sub;\n return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this.rpc.listen();\n case 2:\n sub = _context6.sent;\n sub.on('event', /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(event) {\n var payload, plaintext, _payload$params, pubkey;\n return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n _context5.prev = 0;\n _context5.next = 3;\n return nip04.decrypt(_this.rpc.self.secret, event.pubkey, event.content);\n case 3:\n plaintext = _context5.sent;\n if (plaintext) {\n _context5.next = 6;\n break;\n }\n throw new Error('failed to decrypt event');\n case 6:\n payload = JSON.parse(plaintext);\n _context5.next = 12;\n break;\n case 9:\n _context5.prev = 9;\n _context5.t0 = _context5[\"catch\"](0);\n return _context5.abrupt(\"return\");\n case 12:\n if (isValidRequest(payload)) {\n _context5.next = 14;\n break;\n }\n return _context5.abrupt(\"return\");\n case 14:\n _context5.t1 = payload.method;\n _context5.next = _context5.t1 === 'connect' ? 17 : _context5.t1 === 'disconnect' ? 23 : 26;\n break;\n case 17:\n if (!(!payload.params || payload.params.length !== 1)) {\n _context5.next = 19;\n break;\n }\n throw new Error('connect: missing pubkey');\n case 19:\n _payload$params = payload.params, pubkey = _payload$params[0];\n _this.target = pubkey;\n _this.events.emit('connect', pubkey);\n return _context5.abrupt(\"break\", 26);\n case 23:\n _this.target = undefined;\n _this.events.emit('disconnect');\n return _context5.abrupt(\"break\", 26);\n case 26:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, null, [[0, 9]]);\n }));\n return function (_x7) {\n return _ref3.apply(this, arguments);\n };\n }());\n case 4:\n case \"end\":\n return _context6.stop();\n }\n }, _callee6, this);\n }));\n function init() {\n return _init.apply(this, arguments);\n }\n return init;\n }();\n _proto2.on = function on(evt, cb) {\n this.events.on(evt, cb);\n };\n _proto2.off = function off(evt, cb) {\n this.events.off(evt, cb);\n };\n _proto2.disconnect = /*#__PURE__*/function () {\n var _disconnect = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n while (1) switch (_context7.prev = _context7.next) {\n case 0:\n if (this.target) {\n _context7.next = 2;\n break;\n }\n throw new Error('Not connected');\n case 2:\n // notify the UI that we are disconnecting\n this.events.emit('disconnect');\n _context7.prev = 3;\n _context7.next = 6;\n return this.rpc.call({\n target: this.target,\n request: {\n method: 'disconnect',\n params: []\n }\n }, {\n skipResponse: true\n });\n case 6:\n _context7.next = 11;\n break;\n case 8:\n _context7.prev = 8;\n _context7.t0 = _context7[\"catch\"](3);\n throw new Error('Failed to disconnect');\n case 11:\n this.target = undefined;\n case 12:\n case \"end\":\n return _context7.stop();\n }\n }, _callee7, this, [[3, 8]]);\n }));\n function disconnect() {\n return _disconnect.apply(this, arguments);\n }\n return disconnect;\n }();\n _proto2.getPublicKey = /*#__PURE__*/function () {\n var _getPublicKey = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n var response;\n return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n while (1) switch (_context8.prev = _context8.next) {\n case 0:\n if (this.target) {\n _context8.next = 2;\n break;\n }\n throw new Error('Not connected');\n case 2:\n _context8.next = 4;\n return this.rpc.call({\n target: this.target,\n request: {\n method: 'get_public_key',\n params: []\n }\n });\n case 4:\n response = _context8.sent;\n return _context8.abrupt(\"return\", response);\n case 6:\n case \"end\":\n return _context8.stop();\n }\n }, _callee8, this);\n }));\n function getPublicKey() {\n return _getPublicKey.apply(this, arguments);\n }\n return getPublicKey;\n }();\n _proto2.signEvent = /*#__PURE__*/function () {\n var _signEvent = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9(event) {\n var signature;\n return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n while (1) switch (_context9.prev = _context9.next) {\n case 0:\n if (this.target) {\n _context9.next = 2;\n break;\n }\n throw new Error('Not connected');\n case 2:\n _context9.next = 4;\n return this.rpc.call({\n target: this.target,\n request: {\n method: 'sign_event',\n params: [event]\n }\n });\n case 4:\n signature = _context9.sent;\n return _context9.abrupt(\"return\", signature);\n case 6:\n case \"end\":\n return _context9.stop();\n }\n }, _callee9, this);\n }));\n function signEvent(_x8) {\n return _signEvent.apply(this, arguments);\n }\n return signEvent;\n }();\n _proto2.getRelays = /*#__PURE__*/function () {\n var _getRelays = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n while (1) switch (_context10.prev = _context10.next) {\n case 0:\n throw new Error('Not implemented');\n case 1:\n case \"end\":\n return _context10.stop();\n }\n }, _callee10);\n }));\n function getRelays() {\n return _getRelays.apply(this, arguments);\n }\n return getRelays;\n }();\n return Connect;\n}();\n\nvar NostrSigner = /*#__PURE__*/function (_NostrRPC) {\n _inheritsLoose(NostrSigner, _NostrRPC);\n function NostrSigner() {\n return _NostrRPC.apply(this, arguments) || this;\n }\n var _proto = NostrSigner.prototype;\n _proto.disconnect = /*#__PURE__*/function () {\n var _disconnect = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n this.events.emit('disconnect');\n return _context.abrupt(\"return\", null);\n case 2:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function disconnect() {\n return _disconnect.apply(this, arguments);\n }\n return disconnect;\n }();\n _proto.isConnected = function isConnected() {\n throw new Error('Method not implemented yet.');\n };\n return NostrSigner;\n}(NostrRPC);\n\nexport { Connect, ConnectURI, NostrRPC, NostrSigner, broadcastToRelay, connectToRelay, isValidRequest, isValidResponse, now, prepareEvent, prepareRequest, prepareResponse, randomID };\n//# sourceMappingURL=connect.esm.js.map\n","import NstrAdapter from './index.js';\nimport { Connect } from '@nostr-connect/connect';\n\nclass NstrAdapterNip46 extends NstrAdapter {\n #secretKey = null;\n \n constructor(pubkey, secretKey, adapterConfig = {}) {\n super(pubkey, adapterConfig);\n this.#secretKey = secretKey;\n }\n\n async signEvent(event) {\n const connect = new Connect({\n secretKey: this.#secretKey,\n target: this.pubkey,\n });\n await connect.init();\n \n event.sig = await connect.signEvent('12323423434');\n return event;\n }\n}\n\nexport default NstrAdapterNip46;\n","import { generatePrivateKey, signEvent, getPublicKey, nip04 } from 'nostr-tools';\nimport NstrAdapter from './index.js';\n\nclass NstrAdapterDiscadableKeys extends NstrAdapter {\n #privateKey;\n\n constructor(adapterConfig={}) {\n let key = localStorage.getItem('nostrichat-discardable-key');\n let publicKey = localStorage.getItem('nostrichat-discardable-public-key');\n\n if (!key) {\n key = generatePrivateKey();\n console.log('generated key', key);\n publicKey = getPublicKey(key);\n }\n\n localStorage.setItem('nostrichat-discardable-key', key);\n localStorage.setItem('nostrichat-discardable-public-key', publicKey);\n\n super(publicKey, adapterConfig);\n \n this.#privateKey = key;\n console.log(key);\n }\n\n async signEvent(event) {\n event.sig = await signEvent(event, this.#privateKey);\n return event;\n }\n\n async encrypt(destPubkey, message) {\n console.log(this.#privateKey);\n return await nip04.encrypt(this.#privateKey, destPubkey, message);\n }\n\n async decrypt(destPubkey, message) {\n return await nip04.decrypt(this.#privateKey, destPubkey, message);\n }\n}\n\nexport default NstrAdapterDiscadableKeys;\n","\n\n\n How would you like to connect?\n \n\n{#if publicKey}\n \n Nostr Connect is a WIP, not fully implemented yet!\n
\n\n \n You are currently connected with the following public key:\n {publicKey} \n
\n{/if}\n\n{#if nip46URI}\n \n Scan this with your Nostr Connect (click to copy to clipboard)\n
\n\n \n \n
\n\n { nip46URI = null; }}>\n Cancel\n \n{:else if !publicKey}\n \n {#if hasNostrNip07}\n \n Browser Extension (NIP-07)\n \n {/if}\n\n\n \n Nostr Connect (NIP-46)\n \n\n \n Anonymous\n