Sign In

genosdb

Package Overview
Dependencies
Maintainers
1
Versions
126
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

genosdb - npm Package Compare versions

Comparing version
0.24.1
to
0.25.0
+1
-1
dist/genosrtc.min.js
var log=(()=>{const n=()=>{};return new Proxy(console,{get:(c,m)=>globalThis.__gdbDebug?c[m].bind(c):n})})();
var u$=typeof globalThis==="object"&&"crypto"in globalThis?globalThis.crypto:void 0;/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function F$($){return $ instanceof Uint8Array||ArrayBuffer.isView($)&&$.constructor.name==="Uint8Array"}function q0($){if(!Number.isSafeInteger($)||$<0)throw Error("positive integer expected, got "+$)}function A$($,...Q){if(!F$($))throw Error("Uint8Array expected");if(Q.length>0&&!Q.includes($.length))throw Error("Uint8Array expected of length "+Q+", got length="+$.length)}function x0($){if(typeof $!=="function"||typeof $.create!=="function")throw Error("Hash should be wrapped by utils.createHasher");q0($.outputLen),q0($.blockLen)}function i$($,Q=!0){if($.destroyed)throw Error("Hash instance has been destroyed");if(Q&&$.finished)throw Error("Hash#digest() has already been called")}function T8($,Q){A$($);let q=Q.outputLen;if($.length<q)throw Error("digestInto() expects output buffer of length at least "+q)}function m$(...$){for(let Q=0;Q<$.length;Q++)$[Q].fill(0)}function A0($){return new DataView($.buffer,$.byteOffset,$.byteLength)}function R$($,Q){return $<<32-Q|$>>>Q}var L8=(()=>typeof Uint8Array.from([]).toHex==="function"&&typeof Uint8Array.fromHex==="function")(),cQ=Array.from({length:256},($,Q)=>Q.toString(16).padStart(2,"0"));function C$($){if(A$($),L8)return $.toHex();let Q="";for(let q=0;q<$.length;q++)Q+=cQ[$[q]];return Q}var w$={_0:48,_9:57,A:65,F:70,a:97,f:102};function R8($){if($>=w$._0&&$<=w$._9)return $-w$._0;if($>=w$.A&&$<=w$.F)return $-(w$.A-10);if($>=w$.a&&$<=w$.f)return $-(w$.a-10);return}function h$($){if(typeof $!=="string")throw Error("hex string expected, got "+typeof $);if(L8)return Uint8Array.fromHex($);let Q=$.length,q=Q/2;if(Q%2)throw Error("hex string expected, got unpadded hex of length "+Q);let J=new Uint8Array(q);for(let G=0,z=0;G<q;G++,z+=2){let Y=R8($.charCodeAt(z)),U=R8($.charCodeAt(z+1));if(Y===void 0||U===void 0){let Z=$[z]+$[z+1];throw Error('hex string expected, got non-hex character "'+Z+'" at index '+z)}J[G]=Y*16+U}return J}function R0($){if(typeof $!=="string")throw Error("string expected");return new Uint8Array(new TextEncoder().encode($))}function G0($){if(typeof $==="string")$=R0($);return A$($),$}function W$(...$){let Q=0;for(let J=0;J<$.length;J++){let G=$[J];A$(G),Q+=G.length}let q=new Uint8Array(Q);for(let J=0,G=0;J<$.length;J++){let z=$[J];q.set(z,G),G+=z.length}return q}class z0{}function w8($){let Q=(J)=>$().update(G0(J)).digest(),q=$();return Q.outputLen=q.outputLen,Q.blockLen=q.blockLen,Q.create=()=>$(),Q}function c$($=32){if(u$&&typeof u$.getRandomValues==="function")return u$.getRandomValues(new Uint8Array($));if(u$&&typeof u$.randomBytes==="function")return Uint8Array.from(u$.randomBytes($));throw Error("crypto.getRandomValues must be defined")}function lQ($,Q,q,J){if(typeof $.setBigUint64==="function")return $.setBigUint64(Q,q,J);let G=BigInt(32),z=BigInt(4294967295),Y=Number(q>>G&z),U=Number(q&z),Z=J?4:0,D=J?0:4;$.setUint32(Q+Z,Y,J),$.setUint32(Q+D,U,J)}function C8($,Q,q){return $&Q^~$&q}function k8($,Q,q){return $&Q^$&q^Q&q}class o0 extends z0{constructor($,Q,q,J){super();this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=$,this.outputLen=Q,this.padOffset=q,this.isLE=J,this.buffer=new Uint8Array($),this.view=A0(this.buffer)}update($){i$(this),$=G0($),A$($);let{view:Q,buffer:q,blockLen:J}=this,G=$.length;for(let z=0;z<G;){let Y=Math.min(J-this.pos,G-z);if(Y===J){let U=A0($);for(;J<=G-z;z+=J)this.process(U,z);continue}if(q.set($.subarray(z,z+Y),this.pos),this.pos+=Y,z+=Y,this.pos===J)this.process(Q,0),this.pos=0}return this.length+=$.length,this.roundClean(),this}digestInto($){i$(this),T8($,this),this.finished=!0;let{buffer:Q,view:q,blockLen:J,isLE:G}=this,{pos:z}=this;if(Q[z++]=128,m$(this.buffer.subarray(z)),this.padOffset>J-z)this.process(q,0),z=0;for(let H=z;H<J;H++)Q[H]=0;lQ(q,J-8,BigInt(this.length*8),G),this.process(q,0);let Y=A0($),U=this.outputLen;if(U%4)throw Error("_sha2: outputLen should be aligned to 32bit");let Z=U/4,D=this.get();if(Z>D.length)throw Error("_sha2: outputLen bigger than state");for(let H=0;H<Z;H++)Y.setUint32(4*H,D[H],G)}digest(){let{buffer:$,outputLen:Q}=this;this.digestInto($);let q=$.slice(0,Q);return this.destroy(),q}_cloneInto($){$||($=new this.constructor),$.set(...this.get());let{blockLen:Q,buffer:q,length:J,finished:G,destroyed:z,pos:Y}=this;if($.destroyed=z,$.finished=G,$.length=J,$.pos=Y,J%Q)$.buffer.set(q);return $}clone(){return this._cloneInto()}}var k$=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var dQ=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),v$=new Uint32Array(64);class S8 extends o0{constructor($=32){super(64,$,8,!1);this.A=k$[0]|0,this.B=k$[1]|0,this.C=k$[2]|0,this.D=k$[3]|0,this.E=k$[4]|0,this.F=k$[5]|0,this.G=k$[6]|0,this.H=k$[7]|0}get(){let{A:$,B:Q,C:q,D:J,E:G,F:z,G:Y,H:U}=this;return[$,Q,q,J,G,z,Y,U]}set($,Q,q,J,G,z,Y,U){this.A=$|0,this.B=Q|0,this.C=q|0,this.D=J|0,this.E=G|0,this.F=z|0,this.G=Y|0,this.H=U|0}process($,Q){for(let H=0;H<16;H++,Q+=4)v$[H]=$.getUint32(Q,!1);for(let H=16;H<64;H++){let R=v$[H-15],X=v$[H-2],K=R$(R,7)^R$(R,18)^R>>>3,A=R$(X,17)^R$(X,19)^X>>>10;v$[H]=A+v$[H-7]+K+v$[H-16]|0}let{A:q,B:J,C:G,D:z,E:Y,F:U,G:Z,H:D}=this;for(let H=0;H<64;H++){let R=R$(Y,6)^R$(Y,11)^R$(Y,25),X=D+R+C8(Y,U,Z)+dQ[H]+v$[H]|0,A=(R$(q,2)^R$(q,13)^R$(q,22))+k8(q,J,G)|0;D=Z,Z=U,U=Y,Y=z+X|0,z=G,G=J,J=q,q=X+A|0}q=q+this.A|0,J=J+this.B|0,G=G+this.C|0,z=z+this.D|0,Y=Y+this.E|0,U=U+this.F|0,Z=Z+this.G|0,D=D+this.H|0,this.set(q,J,G,z,Y,U,Z,D)}roundClean(){m$(v$)}destroy(){this.set(0,0,0,0,0,0,0,0),m$(this.buffer)}}var T0=w8(()=>new S8);class i0 extends z0{constructor($,Q){super();this.finished=!1,this.destroyed=!1,x0($);let q=G0(Q);if(this.iHash=$.create(),typeof this.iHash.update!=="function")throw Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let J=this.blockLen,G=new Uint8Array(J);G.set(q.length>J?$.create().update(q).digest():q);for(let z=0;z<G.length;z++)G[z]^=54;this.iHash.update(G),this.oHash=$.create();for(let z=0;z<G.length;z++)G[z]^=106;this.oHash.update(G),m$(G)}update($){return i$(this),this.iHash.update($),this}digestInto($){i$(this),A$($,this.outputLen),this.finished=!0,this.iHash.digestInto($),this.oHash.update($),this.oHash.digestInto($),this.destroy()}digest(){let $=new Uint8Array(this.oHash.outputLen);return this.digestInto($),$}_cloneInto($){$||($=Object.create(Object.getPrototypeOf(this),{}));let{oHash:Q,iHash:q,finished:J,destroyed:G,blockLen:z,outputLen:Y}=this;return $=$,$.finished=J,$.destroyed=G,$.blockLen=z,$.outputLen=Y,$.oHash=Q._cloneInto($.oHash),$.iHash=q._cloneInto($.iHash),$}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}var r0=($,Q,q)=>new i0($,Q).update(q).digest();r0.create=($,Q)=>new i0($,Q);/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var s0=BigInt(0),n0=BigInt(1);function Y0($,Q=""){if(typeof $!=="boolean"){let q=Q&&`"${Q}"`;throw Error(q+"expected boolean, got type="+typeof $)}return $}function _$($,Q,q=""){let J=F$($),G=$?.length,z=Q!==void 0;if(!J||z&&G!==Q){let Y=q&&`"${q}" `,U=z?` of length ${Q}`:"",Z=J?`length=${G}`:`type=${typeof $}`;throw Error(Y+"expected Uint8Array"+U+", got "+Z)}return $}function X0($){let Q=$.toString(16);return Q.length&1?"0"+Q:Q}function P8($){if(typeof $!=="string")throw Error("hex string expected, got "+typeof $);return $===""?s0:BigInt("0x"+$)}function S$($){return P8(C$($))}function t0($){return A$($),P8(C$(Uint8Array.from($).reverse()))}function r$($,Q){return h$($.toString(16).padStart(Q*2,"0"))}function e0($,Q){return r$($,Q).reverse()}function n($,Q,q){let J;if(typeof Q==="string")try{J=h$(Q)}catch(z){throw Error($+" must be hex string or Uint8Array, cause: "+z)}else if(F$(Q))J=Uint8Array.from(Q);else throw Error($+" must be hex string or Uint8Array");let G=J.length;if(typeof q==="number"&&G!==q)throw Error($+" of length "+q+" expected, got "+G);return J}var a0=($)=>typeof $==="bigint"&&s0<=$;function Z0($,Q,q){return a0($)&&a0(Q)&&a0(q)&&Q<=$&&$<q}function I8($,Q,q,J){if(!Z0(Q,q,J))throw Error("expected valid "+$+": "+q+" <= n < "+J+", got "+Q)}function L0($){let Q;for(Q=0;$>s0;$>>=n0,Q+=1);return Q}var b$=($)=>(n0<<BigInt($))-n0;function E8($,Q,q){if(typeof $!=="number"||$<2)throw Error("hashLen must be a number");if(typeof Q!=="number"||Q<2)throw Error("qByteLen must be a number");if(typeof q!=="function")throw Error("hmacFn must be a function");let J=(K)=>new Uint8Array(K),G=(K)=>Uint8Array.of(K),z=J($),Y=J($),U=0,Z=()=>{z.fill(1),Y.fill(0),U=0},D=(...K)=>q(Y,z,...K),H=(K=J(0))=>{if(Y=D(G(0),K),z=D(),K.length===0)return;Y=D(G(1),K),z=D()},R=()=>{if(U++>=1000)throw Error("drbg: tried 1000 values");let K=0,A=[];while(K<Q){z=D();let _=z.slice();A.push(_),K+=z.length}return W$(...A)};return(K,A)=>{Z(),H(K);let _=void 0;while(!(_=A(R())))H();return Z(),_}}function K0($,Q,q={}){if(!$||typeof $!=="object")throw Error("expected valid options object");function J(G,z,Y){let U=$[G];if(Y&&U===void 0)return;let Z=typeof U;if(Z!==z||U===null)throw Error(`param "${G}" is invalid: expected ${z}, got ${Z}`)}Object.entries(Q).forEach(([G,z])=>J(G,z,!1)),Object.entries(q).forEach(([G,z])=>J(G,z,!0))}function $8($){let Q=new WeakMap;return(q,...J)=>{let G=Q.get(q);if(G!==void 0)return G;let z=$(q,...J);return Q.set(q,z),z}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var U$=BigInt(0),X$=BigInt(1),l$=BigInt(2),b8=BigInt(3),f8=BigInt(4),y8=BigInt(5),pQ=BigInt(7),g8=BigInt(8),oQ=BigInt(9),u8=BigInt(16);function M$($,Q){let q=$%Q;return q>=U$?q:Q+q}function V$($,Q,q){let J=$;while(Q-- >U$)J*=J,J%=q;return J}function v8($,Q){if($===U$)throw Error("invert: expected non-zero number");if(Q<=U$)throw Error("invert: expected positive modulus, got "+Q);let q=M$($,Q),J=Q,G=U$,z=X$,Y=X$,U=U$;while(q!==U$){let D=J/q,H=J%q,R=G-Y*D,X=z-U*D;J=q,q=H,G=Y,z=U,Y=R,U=X}if(J!==X$)throw Error("invert: does not exist");return M$(G,Q)}function Q8($,Q,q){if(!$.eql($.sqr(Q),q))throw Error("Cannot find square root")}function F8($,Q){let q=($.ORDER+X$)/f8,J=$.pow(Q,q);return Q8($,J,Q),J}function iQ($,Q){let q=($.ORDER-y8)/g8,J=$.mul(Q,l$),G=$.pow(J,q),z=$.mul(Q,G),Y=$.mul($.mul(z,l$),G),U=$.mul(z,$.sub(Y,$.ONE));return Q8($,U,Q),U}function rQ($){let Q=f$($),q=m8($),J=q(Q,Q.neg(Q.ONE)),G=q(Q,J),z=q(Q,Q.neg(J)),Y=($+pQ)/u8;return(U,Z)=>{let D=U.pow(Z,Y),H=U.mul(D,J),R=U.mul(D,G),X=U.mul(D,z),K=U.eql(U.sqr(H),Z),A=U.eql(U.sqr(R),Z);D=U.cmov(D,H,K),H=U.cmov(X,R,A);let _=U.eql(U.sqr(H),Z),y=U.cmov(D,H,_);return Q8(U,y,Z),y}}function m8($){if($<b8)throw Error("sqrt is not defined for small field");let Q=$-X$,q=0;while(Q%l$===U$)Q/=l$,q++;let J=l$,G=f$($);while(_8(G,J)===1)if(J++>1000)throw Error("Cannot find square root: probably non-prime P");if(q===1)return F8;let z=G.pow(J,Q),Y=(Q+X$)/l$;return function(Z,D){if(Z.is0(D))return D;if(_8(Z,D)!==1)throw Error("Cannot find square root");let H=q,R=Z.mul(Z.ONE,z),X=Z.pow(D,Q),K=Z.pow(D,Y);while(!Z.eql(X,Z.ONE)){if(Z.is0(X))return Z.ZERO;let A=1,_=Z.sqr(X);while(!Z.eql(_,Z.ONE))if(A++,_=Z.sqr(_),A===H)throw Error("Cannot find square root");let y=X$<<BigInt(H-A-1),u=Z.pow(R,y);H=A,R=Z.sqr(u),X=Z.mul(X,R),K=Z.mul(K,u)}return K}}function aQ($){if($%f8===b8)return F8;if($%g8===y8)return iQ;if($%u8===oQ)return rQ($);return m8($)}var nQ=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function J8($){let Q={ORDER:"bigint",MASK:"bigint",BYTES:"number",BITS:"number"},q=nQ.reduce((J,G)=>{return J[G]="function",J},Q);return K0($,q),$}function sQ($,Q,q){if(q<U$)throw Error("invalid exponent, negatives unsupported");if(q===U$)return $.ONE;if(q===X$)return Q;let J=$.ONE,G=Q;while(q>U$){if(q&X$)J=$.mul(J,G);G=$.sqr(G),q>>=X$}return J}function w0($,Q,q=!1){let J=Array(Q.length).fill(q?$.ZERO:void 0),G=Q.reduce((Y,U,Z)=>{if($.is0(U))return Y;return J[Z]=Y,$.mul(Y,U)},$.ONE),z=$.inv(G);return Q.reduceRight((Y,U,Z)=>{if($.is0(U))return Y;return J[Z]=$.mul(Y,J[Z]),$.mul(Y,U)},z),J}function _8($,Q){let q=($.ORDER-X$)/l$,J=$.pow(Q,q),G=$.eql(J,$.ONE),z=$.eql(J,$.ZERO),Y=$.eql(J,$.neg($.ONE));if(!G&&!z&&!Y)throw Error("invalid Legendre symbol result");return G?1:z?0:-1}function C0($,Q){if(Q!==void 0)q0(Q);let q=Q!==void 0?Q:$.toString(2).length,J=Math.ceil(q/8);return{nBitLength:q,nByteLength:J}}function f$($,Q,q=!1,J={}){if($<=U$)throw Error("invalid field: expected ORDER > 0, got "+$);let G=void 0,z=void 0,Y=!1,U=void 0;if(typeof Q==="object"&&Q!=null){if(J.sqrt||q)throw Error("cannot specify opts in two arguments");let X=Q;if(X.BITS)G=X.BITS;if(X.sqrt)z=X.sqrt;if(typeof X.isLE==="boolean")q=X.isLE;if(typeof X.modFromBytes==="boolean")Y=X.modFromBytes;U=X.allowedLengths}else{if(typeof Q==="number")G=Q;if(J.sqrt)z=J.sqrt}let{nBitLength:Z,nByteLength:D}=C0($,G);if(D>2048)throw Error("invalid field: expected ORDER of <= 2048 bytes");let H,R=Object.freeze({ORDER:$,isLE:q,BITS:Z,BYTES:D,MASK:b$(Z),ZERO:U$,ONE:X$,allowedLengths:U,create:(X)=>M$(X,$),isValid:(X)=>{if(typeof X!=="bigint")throw Error("invalid field element: expected bigint, got "+typeof X);return U$<=X&&X<$},is0:(X)=>X===U$,isValidNot0:(X)=>!R.is0(X)&&R.isValid(X),isOdd:(X)=>(X&X$)===X$,neg:(X)=>M$(-X,$),eql:(X,K)=>X===K,sqr:(X)=>M$(X*X,$),add:(X,K)=>M$(X+K,$),sub:(X,K)=>M$(X-K,$),mul:(X,K)=>M$(X*K,$),pow:(X,K)=>sQ(R,X,K),div:(X,K)=>M$(X*v8(K,$),$),sqrN:(X)=>X*X,addN:(X,K)=>X+K,subN:(X,K)=>X-K,mulN:(X,K)=>X*K,inv:(X)=>v8(X,$),sqrt:z||((X)=>{if(!H)H=aQ($);return H(R,X)}),toBytes:(X)=>q?e0(X,D):r$(X,D),fromBytes:(X,K=!0)=>{if(U){if(!U.includes(X.length)||X.length>D)throw Error("Field.fromBytes: expected "+U+" bytes, got "+X.length);let _=new Uint8Array(D);_.set(X,q?0:_.length-X.length),X=_}if(X.length!==D)throw Error("Field.fromBytes: expected "+D+" bytes, got "+X.length);let A=q?t0(X):S$(X);if(Y)A=M$(A,$);if(!K){if(!R.isValid(A))throw Error("invalid field element: outside of range 0..ORDER")}return A},invertBatch:(X)=>w0(R,X),cmov:(X,K,A)=>A?K:X});return Object.freeze(R)}function h8($){if(typeof $!=="bigint")throw Error("field order must be bigint");let Q=$.toString(2).length;return Math.ceil(Q/8)}function q8($){let Q=h8($);return Q+Math.ceil(Q/2)}function k0($,Q,q=!1){let J=$.length,G=h8(Q),z=q8(Q);if(J<16||J<z||J>1024)throw Error("expected "+z+"-1024 bytes of input, got "+J);let Y=q?t0($):S$($),U=M$(Y,Q-X$)+X$;return q?e0(U,G):r$(U,G)}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var a$=BigInt(0),d$=BigInt(1);function U0($,Q){let q=Q.negate();return $?q:Q}function S0($,Q){let q=w0($.Fp,Q.map((J)=>J.Z));return Q.map((J,G)=>$.fromAffine(J.toAffine(q[G])))}function p8($,Q){if(!Number.isSafeInteger($)||$<=0||$>Q)throw Error("invalid window size, expected [1.."+Q+"], got W="+$)}function G8($,Q){p8($,Q);let q=Math.ceil(Q/$)+1,J=2**($-1),G=2**$,z=b$($),Y=BigInt($);return{windows:q,windowSize:J,mask:z,maxNumber:G,shiftBy:Y}}function c8($,Q,q){let{windowSize:J,mask:G,maxNumber:z,shiftBy:Y}=q,U=Number($&G),Z=$>>Y;if(U>J)U-=z,Z+=d$;let D=Q*J,H=D+Math.abs(U)-1,R=U===0,X=U<0,K=Q%2!==0;return{nextN:Z,offset:H,isZero:R,isNeg:X,isNegF:K,offsetF:D}}function tQ($,Q){if(!Array.isArray($))throw Error("array expected");$.forEach((q,J)=>{if(!(q instanceof Q))throw Error("invalid point at index "+J)})}function eQ($,Q){if(!Array.isArray($))throw Error("array of scalars expected");$.forEach((q,J)=>{if(!Q.isValid(q))throw Error("invalid scalar at index "+J)})}var z8=new WeakMap,o8=new WeakMap;function Y8($){return o8.get($)||1}function l8($){if($!==a$)throw Error("invalid wNAF")}class X8{constructor($,Q){this.BASE=$.BASE,this.ZERO=$.ZERO,this.Fn=$.Fn,this.bits=Q}_unsafeLadder($,Q,q=this.ZERO){let J=$;while(Q>a$){if(Q&d$)q=q.add(J);J=J.double(),Q>>=d$}return q}precomputeWindow($,Q){let{windows:q,windowSize:J}=G8(Q,this.bits),G=[],z=$,Y=z;for(let U=0;U<q;U++){Y=z,G.push(Y);for(let Z=1;Z<J;Z++)Y=Y.add(z),G.push(Y);z=Y.double()}return G}wNAF($,Q,q){if(!this.Fn.isValid(q))throw Error("invalid scalar");let J=this.ZERO,G=this.BASE,z=G8($,this.bits);for(let Y=0;Y<z.windows;Y++){let{nextN:U,offset:Z,isZero:D,isNeg:H,isNegF:R,offsetF:X}=c8(q,Y,z);if(q=U,D)G=G.add(U0(R,Q[X]));else J=J.add(U0(H,Q[Z]))}return l8(q),{p:J,f:G}}wNAFUnsafe($,Q,q,J=this.ZERO){let G=G8($,this.bits);for(let z=0;z<G.windows;z++){if(q===a$)break;let{nextN:Y,offset:U,isZero:Z,isNeg:D}=c8(q,z,G);if(q=Y,Z)continue;else{let H=Q[U];J=J.add(D?H.negate():H)}}return l8(q),J}getPrecomputes($,Q,q){let J=z8.get(Q);if(!J){if(J=this.precomputeWindow(Q,$),$!==1){if(typeof q==="function")J=q(J);z8.set(Q,J)}}return J}cached($,Q,q){let J=Y8($);return this.wNAF(J,this.getPrecomputes(J,$,q),Q)}unsafe($,Q,q,J){let G=Y8($);if(G===1)return this._unsafeLadder($,Q,J);return this.wNAFUnsafe(G,this.getPrecomputes(G,$,q),Q,J)}createCache($,Q){p8(Q,this.bits),o8.set($,Q),z8.delete($)}hasCache($){return Y8($)!==1}}function i8($,Q,q,J){let G=Q,z=$.ZERO,Y=$.ZERO;while(q>a$||J>a$){if(q&d$)z=z.add(G);if(J&d$)Y=Y.add(G);G=G.double(),q>>=d$,J>>=d$}return{p1:z,p2:Y}}function r8($,Q,q,J){tQ(q,$),eQ(J,Q);let G=q.length,z=J.length;if(G!==z)throw Error("arrays of points and scalars must have equal length");let Y=$.ZERO,U=L0(BigInt(G)),Z=1;if(U>12)Z=U-3;else if(U>4)Z=U-2;else if(U>0)Z=2;let D=b$(Z),H=Array(Number(D)+1).fill(Y),R=Math.floor((Q.BITS-1)/Z)*Z,X=Y;for(let K=R;K>=0;K-=Z){H.fill(Y);for(let _=0;_<z;_++){let y=J[_],u=Number(y>>BigInt(K)&D);H[u]=H[u].add(q[_])}let A=Y;for(let _=H.length-1,y=Y;_>0;_--)y=y.add(H[_]),A=A.add(y);if(X=X.add(A),K!==0)for(let _=0;_<Z;_++)X=X.double()}return X}function d8($,Q,q){if(Q){if(Q.ORDER!==$)throw Error("Field.ORDER must match order: Fp == p, Fn == n");return J8(Q),Q}else return f$($,{isLE:q})}function a8($,Q,q={},J){if(J===void 0)J=$==="edwards";if(!Q||typeof Q!=="object")throw Error(`expected valid ${$} CURVE object`);for(let Z of["p","n","h"]){let D=Q[Z];if(!(typeof D==="bigint"&&D>a$))throw Error(`CURVE.${Z} must be positive bigint`)}let G=d8(Q.p,q.Fp,J),z=d8(Q.n,q.Fn,J),U=["Gx","Gy","a",$==="weierstrass"?"b":"d"];for(let Z of U)if(!G.isValid(Q[Z]))throw Error(`CURVE.${Z} must be valid field element of CURVE.Fp`);return Q=Object.freeze(Object.assign({},Q)),{CURVE:Q,Fp:G,Fn:z}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var n8=($,Q)=>($+($>=0?Q:-Q)/t8)/Q;function $J($,Q,q){let[[J,G],[z,Y]]=Q,U=n8(Y*$,q),Z=n8(-G*$,q),D=$-U*J-Z*z,H=-U*G-Z*Y,R=D<I$,X=H<I$;if(R)D=-D;if(X)H=-H;let K=b$(Math.ceil(L0(q)/2))+n$;if(D<I$||D>=K||H<I$||H>=K)throw Error("splitScalar (endomorphism): failed, k="+$);return{k1neg:R,k1:D,k2neg:X,k2:H}}function K8($){if(!["compact","recovered","der"].includes($))throw Error('Signature format must be "compact", "recovered", or "der"');return $}function Z8($,Q){let q={};for(let J of Object.keys(Q))q[J]=$[J]===void 0?Q[J]:$[J];if(Y0(q.lowS,"lowS"),Y0(q.prehash,"prehash"),q.format!==void 0)K8(q.format);return q}class s8 extends Error{constructor($=""){super($)}}var P$={Err:s8,_tlv:{encode:($,Q)=>{let{Err:q}=P$;if($<0||$>256)throw new q("tlv.encode: wrong tag");if(Q.length&1)throw new q("tlv.encode: unpadded data");let J=Q.length/2,G=X0(J);if(G.length/2&128)throw new q("tlv.encode: long form length too big");let z=J>127?X0(G.length/2|128):"";return X0($)+z+G+Q},decode($,Q){let{Err:q}=P$,J=0;if($<0||$>256)throw new q("tlv.encode: wrong tag");if(Q.length<2||Q[J++]!==$)throw new q("tlv.decode: wrong tlv");let G=Q[J++],z=!!(G&128),Y=0;if(!z)Y=G;else{let Z=G&127;if(!Z)throw new q("tlv.decode(long): indefinite length not supported");if(Z>4)throw new q("tlv.decode(long): byte length is too big");let D=Q.subarray(J,J+Z);if(D.length!==Z)throw new q("tlv.decode: length bytes not complete");if(D[0]===0)throw new q("tlv.decode(long): zero leftmost byte");for(let H of D)Y=Y<<8|H;if(J+=Z,Y<128)throw new q("tlv.decode(long): not minimal encoding")}let U=Q.subarray(J,J+Y);if(U.length!==Y)throw new q("tlv.decode: wrong value length");return{v:U,l:Q.subarray(J+Y)}}},_int:{encode($){let{Err:Q}=P$;if($<I$)throw new Q("integer: negative integers are not allowed");let q=X0($);if(Number.parseInt(q[0],16)&8)q="00"+q;if(q.length&1)throw new Q("unexpected DER parsing assertion: unpadded hex");return q},decode($){let{Err:Q}=P$;if($[0]&128)throw new Q("invalid signature integer: negative");if($[0]===0&&!($[1]&128))throw new Q("invalid signature integer: unnecessary leading zero");return S$($)}},toSig($){let{Err:Q,_int:q,_tlv:J}=P$,G=n("signature",$),{v:z,l:Y}=J.decode(48,G);if(Y.length)throw new Q("invalid signature: left bytes after parsing");let{v:U,l:Z}=J.decode(2,z),{v:D,l:H}=J.decode(2,Z);if(H.length)throw new Q("invalid signature: left bytes after parsing");return{r:q.decode(U),s:q.decode(D)}},hexFromSig($){let{_tlv:Q,_int:q}=P$,J=Q.encode(2,q.encode($.r)),G=Q.encode(2,q.encode($.s)),z=J+G;return Q.encode(48,z)}},I$=BigInt(0),n$=BigInt(1),t8=BigInt(2),P0=BigInt(3),QJ=BigInt(4);function y$($,Q){let{BYTES:q}=$,J;if(typeof Q==="bigint")J=Q;else{let G=n("private key",Q);try{J=$.fromBytes(G)}catch(z){throw Error(`invalid private key: expected ui8a of size ${q}, got ${typeof Q}`)}}if(!$.isValidNot0(J))throw Error("invalid private key: out of range [1..N-1]");return J}function JJ($,Q={}){let q=a8("weierstrass",$,Q),{Fp:J,Fn:G}=q,z=q.CURVE,{h:Y,n:U}=z;K0(Q,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",wrapPrivateKey:"boolean"});let{endo:Z}=Q;if(Z){if(!J.is0(z.a)||typeof Z.beta!=="bigint"||!Array.isArray(Z.basises))throw Error('invalid endo: expected "beta": bigint and "basises": array')}let D=$Q(J,G);function H(){if(!J.isOdd)throw Error("compression is not supported: Field does not have .isOdd()")}function R(O,S,W){let{x:B,y:k}=S.toAffine(),v=J.toBytes(B);if(Y0(W,"isCompressed"),W){H();let P=!J.isOdd(k);return W$(e8(P),v)}else return W$(Uint8Array.of(4),v,J.toBytes(k))}function X(O){_$(O,void 0,"Point");let{publicKey:S,publicKeyUncompressed:W}=D,B=O.length,k=O[0],v=O.subarray(1);if(B===S&&(k===2||k===3)){let P=J.fromBytes(v);if(!J.isValid(P))throw Error("bad point: is not on curve, wrong x");let I=_(P),N;try{N=J.sqrt(I)}catch(V){let w=V instanceof Error?": "+V.message:"";throw Error("bad point: is not on curve, sqrt error"+w)}H();let T=J.isOdd(N);if((k&1)===1!==T)N=J.neg(N);return{x:P,y:N}}else if(B===W&&k===4){let P=J.BYTES,I=J.fromBytes(v.subarray(0,P)),N=J.fromBytes(v.subarray(P,P*2));if(!y(I,N))throw Error("bad point: is not on curve");return{x:I,y:N}}else throw Error(`bad point: got length ${B}, expected compressed=${S} or uncompressed=${W}`)}let K=Q.toBytes||R,A=Q.fromBytes||X;function _(O){let S=J.sqr(O),W=J.mul(S,O);return J.add(J.add(W,J.mul(O,z.a)),z.b)}function y(O,S){let W=J.sqr(S),B=_(O);return J.eql(W,B)}if(!y(z.Gx,z.Gy))throw Error("bad curve params: generator point");let u=J.mul(J.pow(z.a,P0),QJ),s=J.mul(J.sqr(z.b),BigInt(27));if(J.is0(J.add(u,s)))throw Error("bad curve params: a or b");function h(O,S,W=!1){if(!J.isValid(S)||W&&J.is0(S))throw Error(`bad point coordinate ${O}`);return S}function e(O){if(!(O instanceof g))throw Error("ProjectivePoint expected")}function $$(O){if(!Z||!Z.basises)throw Error("no endo");return $J(O,Z.basises,G.ORDER)}let Q$=$8((O,S)=>{let{X:W,Y:B,Z:k}=O;if(J.eql(k,J.ONE))return{x:W,y:B};let v=O.is0();if(S==null)S=v?J.ONE:J.inv(k);let P=J.mul(W,S),I=J.mul(B,S),N=J.mul(k,S);if(v)return{x:J.ZERO,y:J.ZERO};if(!J.eql(N,J.ONE))throw Error("invZ was invalid");return{x:P,y:I}}),z$=$8((O)=>{if(O.is0()){if(Q.allowInfinityPoint&&!J.is0(O.Y))return;throw Error("bad point: ZERO")}let{x:S,y:W}=O.toAffine();if(!J.isValid(S)||!J.isValid(W))throw Error("bad point: x or y not field elements");if(!y(S,W))throw Error("bad point: equation left != right");if(!O.isTorsionFree())throw Error("bad point: not in prime-order subgroup");return!0});function Z$(O,S,W,B,k){return W=new g(J.mul(W.X,O),W.Y,W.Z),S=U0(B,S),W=U0(k,W),S.add(W)}class g{constructor(O,S,W){this.X=h("x",O),this.Y=h("y",S,!0),this.Z=h("z",W),Object.freeze(this)}static CURVE(){return z}static fromAffine(O){let{x:S,y:W}=O||{};if(!O||!J.isValid(S)||!J.isValid(W))throw Error("invalid affine point");if(O instanceof g)throw Error("projective point not allowed");if(J.is0(S)&&J.is0(W))return g.ZERO;return new g(S,W,J.ONE)}static fromBytes(O){let S=g.fromAffine(A(_$(O,void 0,"point")));return S.assertValidity(),S}static fromHex(O){return g.fromBytes(n("pointHex",O))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(O=8,S=!0){if(j$.createCache(this,O),!S)this.multiply(P0);return this}assertValidity(){z$(this)}hasEvenY(){let{y:O}=this.toAffine();if(!J.isOdd)throw Error("Field doesn't support isOdd");return!J.isOdd(O)}equals(O){e(O);let{X:S,Y:W,Z:B}=this,{X:k,Y:v,Z:P}=O,I=J.eql(J.mul(S,P),J.mul(k,B)),N=J.eql(J.mul(W,P),J.mul(v,B));return I&&N}negate(){return new g(this.X,J.neg(this.Y),this.Z)}double(){let{a:O,b:S}=z,W=J.mul(S,P0),{X:B,Y:k,Z:v}=this,P=J.ZERO,I=J.ZERO,N=J.ZERO,T=J.mul(B,B),j=J.mul(k,k),V=J.mul(v,v),w=J.mul(B,k);return w=J.add(w,w),N=J.mul(B,v),N=J.add(N,N),P=J.mul(O,N),I=J.mul(W,V),I=J.add(P,I),P=J.sub(j,I),I=J.add(j,I),I=J.mul(P,I),P=J.mul(w,P),N=J.mul(W,N),V=J.mul(O,V),w=J.sub(T,V),w=J.mul(O,w),w=J.add(w,N),N=J.add(T,T),T=J.add(N,T),T=J.add(T,V),T=J.mul(T,w),I=J.add(I,T),V=J.mul(k,v),V=J.add(V,V),T=J.mul(V,w),P=J.sub(P,T),N=J.mul(V,j),N=J.add(N,N),N=J.add(N,N),new g(P,I,N)}add(O){e(O);let{X:S,Y:W,Z:B}=this,{X:k,Y:v,Z:P}=O,I=J.ZERO,N=J.ZERO,T=J.ZERO,j=z.a,V=J.mul(z.b,P0),w=J.mul(S,k),C=J.mul(W,v),x=J.mul(B,P),m=J.add(S,W),l=J.add(k,v);m=J.mul(m,l),l=J.add(w,C),m=J.sub(m,l),l=J.add(S,B);let d=J.add(k,P);return l=J.mul(l,d),d=J.add(w,x),l=J.sub(l,d),d=J.add(W,B),I=J.add(v,P),d=J.mul(d,I),I=J.add(C,x),d=J.sub(d,I),T=J.mul(j,l),I=J.mul(V,x),T=J.add(I,T),I=J.sub(C,T),T=J.add(C,T),N=J.mul(I,T),C=J.add(w,w),C=J.add(C,w),x=J.mul(j,x),l=J.mul(V,l),C=J.add(C,x),x=J.sub(w,x),x=J.mul(j,x),l=J.add(l,x),w=J.mul(C,l),N=J.add(N,w),w=J.mul(d,l),I=J.mul(m,I),I=J.sub(I,w),w=J.mul(m,C),T=J.mul(d,T),T=J.add(T,w),new g(I,N,T)}subtract(O){return this.add(O.negate())}is0(){return this.equals(g.ZERO)}multiply(O){let{endo:S}=Q;if(!G.isValidNot0(O))throw Error("invalid scalar: out of range");let W,B,k=(v)=>j$.cached(this,v,(P)=>S0(g,P));if(S){let{k1neg:v,k1:P,k2neg:I,k2:N}=$$(O),{p:T,f:j}=k(P),{p:V,f:w}=k(N);B=j.add(w),W=Z$(S.beta,T,V,v,I)}else{let{p:v,f:P}=k(O);W=v,B=P}return S0(g,[W,B])[0]}multiplyUnsafe(O){let{endo:S}=Q,W=this;if(!G.isValid(O))throw Error("invalid scalar: out of range");if(O===I$||W.is0())return g.ZERO;if(O===n$)return W;if(j$.hasCache(this))return this.multiply(O);if(S){let{k1neg:B,k1:k,k2neg:v,k2:P}=$$(O),{p1:I,p2:N}=i8(g,W,k,P);return Z$(S.beta,I,N,B,v)}else return j$.unsafe(W,O)}multiplyAndAddUnsafe(O,S,W){let B=this.multiplyUnsafe(S).add(O.multiplyUnsafe(W));return B.is0()?void 0:B}toAffine(O){return Q$(this,O)}isTorsionFree(){let{isTorsionFree:O}=Q;if(Y===n$)return!0;if(O)return O(g,this);return j$.unsafe(this,U).is0()}clearCofactor(){let{clearCofactor:O}=Q;if(Y===n$)return this;if(O)return O(g,this);return this.multiplyUnsafe(Y)}isSmallOrder(){return this.multiplyUnsafe(Y).is0()}toBytes(O=!0){return Y0(O,"isCompressed"),this.assertValidity(),K(g,this,O)}toHex(O=!0){return C$(this.toBytes(O))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(O=!0){return this.toBytes(O)}_setWindowSize(O){this.precompute(O)}static normalizeZ(O){return S0(g,O)}static msm(O,S){return r8(g,G,O,S)}static fromPrivateKey(O){return g.BASE.multiply(y$(G,O))}}g.BASE=new g(z.Gx,z.Gy,J.ONE),g.ZERO=new g(J.ZERO,J.ONE,J.ZERO),g.Fp=J,g.Fn=G;let H$=G.BITS,j$=new X8(g,Q.endo?Math.ceil(H$/2):H$);return g.BASE.precompute(8),g}function e8($){return Uint8Array.of($?2:3)}function $Q($,Q){return{secretKey:Q.BYTES,publicKey:1+$.BYTES,publicKeyUncompressed:1+2*$.BYTES,publicKeyHasPrefix:!0,signature:2*Q.BYTES}}function qJ($,Q={}){let{Fn:q}=$,J=Q.randomBytes||c$,G=Object.assign($Q($.Fp,q),{seed:q8(q.ORDER)});function z(K){try{return!!y$(q,K)}catch(A){return!1}}function Y(K,A){let{publicKey:_,publicKeyUncompressed:y}=G;try{let u=K.length;if(A===!0&&u!==_)return!1;if(A===!1&&u!==y)return!1;return!!$.fromBytes(K)}catch(u){return!1}}function U(K=J(G.seed)){return k0(_$(K,G.seed,"seed"),q.ORDER)}function Z(K,A=!0){return $.BASE.multiply(y$(q,K)).toBytes(A)}function D(K){let A=U(K);return{secretKey:A,publicKey:Z(A)}}function H(K){if(typeof K==="bigint")return!1;if(K instanceof $)return!0;let{secretKey:A,publicKey:_,publicKeyUncompressed:y}=G;if(q.allowedLengths||A===_)return;let u=n("key",K).length;return u===_||u===y}function R(K,A,_=!0){if(H(K)===!0)throw Error("first arg must be private key");if(H(A)===!1)throw Error("second arg must be public key");let y=y$(q,K);return $.fromHex(A).multiply(y).toBytes(_)}return Object.freeze({getPublicKey:Z,getSharedSecret:R,keygen:D,Point:$,utils:{isValidSecretKey:z,isValidPublicKey:Y,randomSecretKey:U,isValidPrivateKey:z,randomPrivateKey:U,normPrivateKeyToScalar:(K)=>y$(q,K),precompute(K=8,A=$.BASE){return A.precompute(K,!1)}},lengths:G})}function GJ($,Q,q={}){x0(Q),K0(q,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});let J=q.randomBytes||c$,G=q.hmac||((W,...B)=>r0(Q,W,W$(...B))),{Fp:z,Fn:Y}=$,{ORDER:U,BITS:Z}=Y,{keygen:D,getPublicKey:H,getSharedSecret:R,utils:X,lengths:K}=qJ($,q),A={prehash:!1,lowS:typeof q.lowS==="boolean"?q.lowS:!1,format:void 0,extraEntropy:!1},_="compact";function y(W){let B=U>>n$;return W>B}function u(W,B){if(!Y.isValidNot0(B))throw Error(`invalid signature ${W}: out of range 1..Point.Fn.ORDER`);return B}function s(W,B){K8(B);let k=K.signature,v=B==="compact"?k:B==="recovered"?k+1:void 0;return _$(W,v,`${B} signature`)}class h{constructor(W,B,k){if(this.r=u("r",W),this.s=u("s",B),k!=null)this.recovery=k;Object.freeze(this)}static fromBytes(W,B=_){s(W,B);let k;if(B==="der"){let{r:N,s:T}=P$.toSig(_$(W));return new h(N,T)}if(B==="recovered")k=W[0],B="compact",W=W.subarray(1);let v=Y.BYTES,P=W.subarray(0,v),I=W.subarray(v,v*2);return new h(Y.fromBytes(P),Y.fromBytes(I),k)}static fromHex(W,B){return this.fromBytes(h$(W),B)}addRecoveryBit(W){return new h(this.r,this.s,W)}recoverPublicKey(W){let B=z.ORDER,{r:k,s:v,recovery:P}=this;if(P==null||![0,1,2,3].includes(P))throw Error("recovery id invalid");if(U*t8<B&&P>1)throw Error("recovery id is ambiguous for h>1 curve");let N=P===2||P===3?k+U:k;if(!z.isValid(N))throw Error("recovery id 2 or 3 invalid");let T=z.toBytes(N),j=$.fromBytes(W$(e8((P&1)===0),T)),V=Y.inv(N),w=$$(n("msgHash",W)),C=Y.create(-w*V),x=Y.create(v*V),m=$.BASE.multiplyUnsafe(C).add(j.multiplyUnsafe(x));if(m.is0())throw Error("point at infinify");return m.assertValidity(),m}hasHighS(){return y(this.s)}toBytes(W=_){if(K8(W),W==="der")return h$(P$.hexFromSig(this));let B=Y.toBytes(this.r),k=Y.toBytes(this.s);if(W==="recovered"){if(this.recovery==null)throw Error("recovery bit must be present");return W$(Uint8Array.of(this.recovery),B,k)}return W$(B,k)}toHex(W){return C$(this.toBytes(W))}assertValidity(){}static fromCompact(W){return h.fromBytes(n("sig",W),"compact")}static fromDER(W){return h.fromBytes(n("sig",W),"der")}normalizeS(){return this.hasHighS()?new h(this.r,Y.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return C$(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return C$(this.toBytes("compact"))}}let e=q.bits2int||function(B){if(B.length>8192)throw Error("input is too large");let k=S$(B),v=B.length*8-Z;return v>0?k>>BigInt(v):k},$$=q.bits2int_modN||function(B){return Y.create(e(B))},Q$=b$(Z);function z$(W){return I8("num < 2^"+Z,W,I$,Q$),Y.toBytes(W)}function Z$(W,B){return _$(W,void 0,"message"),B?_$(Q(W),void 0,"prehashed message"):W}function g(W,B,k){if(["recovered","canonical"].some((x)=>(x in k)))throw Error("sign() legacy options not supported");let{lowS:v,prehash:P,extraEntropy:I}=Z8(k,A);W=Z$(W,P);let N=$$(W),T=y$(Y,B),j=[z$(T),z$(N)];if(I!=null&&I!==!1){let x=I===!0?J(K.secretKey):I;j.push(n("extraEntropy",x))}let V=W$(...j),w=N;function C(x){let m=e(x);if(!Y.isValidNot0(m))return;let l=Y.inv(m),d=$.BASE.multiply(m).toAffine(),K$=Y.create(d.x);if(K$===I$)return;let b=Y.create(l*Y.create(w+K$*T));if(b===I$)return;let G$=(d.x===K$?0:2)|Number(d.y&n$),r=b;if(v&&y(b))r=Y.neg(b),G$^=1;return new h(K$,r,G$)}return{seed:V,k2sig:C}}function H$(W,B,k={}){W=n("message",W);let{seed:v,k2sig:P}=g(W,B,k);return E8(Q.outputLen,Y.BYTES,G)(v,P)}function j$(W){let B=void 0,k=typeof W==="string"||F$(W),v=!k&&W!==null&&typeof W==="object"&&typeof W.r==="bigint"&&typeof W.s==="bigint";if(!k&&!v)throw Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(v)B=new h(W.r,W.s);else if(k){try{B=h.fromBytes(n("sig",W),"der")}catch(P){if(!(P instanceof P$.Err))throw P}if(!B)try{B=h.fromBytes(n("sig",W),"compact")}catch(P){return!1}}if(!B)return!1;return B}function O(W,B,k,v={}){let{lowS:P,prehash:I,format:N}=Z8(v,A);if(k=n("publicKey",k),B=Z$(n("message",B),I),"strict"in v)throw Error("options.strict was renamed to lowS");let T=N===void 0?j$(W):h.fromBytes(n("sig",W),N);if(T===!1)return!1;try{let j=$.fromBytes(k);if(P&&T.hasHighS())return!1;let{r:V,s:w}=T,C=$$(B),x=Y.inv(w),m=Y.create(C*x),l=Y.create(V*x),d=$.BASE.multiplyUnsafe(m).add(j.multiplyUnsafe(l));if(d.is0())return!1;return Y.create(d.x)===V}catch(j){return!1}}function S(W,B,k={}){let{prehash:v}=Z8(k,A);return B=Z$(B,v),h.fromBytes(W,"recovered").recoverPublicKey(B).toBytes()}return Object.freeze({keygen:D,getPublicKey:H,getSharedSecret:R,utils:X,lengths:K,Point:$,sign:H$,verify:O,recoverPublicKey:S,Signature:h,hash:Q})}function zJ($){let Q={a:$.a,b:$.b,p:$.Fp.ORDER,n:$.n,h:$.h,Gx:$.Gx,Gy:$.Gy},q=$.Fp,J=$.allowedPrivateKeyLengths?Array.from(new Set($.allowedPrivateKeyLengths.map((Y)=>Math.ceil(Y/2)))):void 0,G=f$(Q.n,{BITS:$.nBitLength,allowedLengths:J,modFromBytes:$.wrapPrivateKey}),z={Fp:q,Fn:G,allowInfinityPoint:$.allowInfinityPoint,endo:$.endo,isTorsionFree:$.isTorsionFree,clearCofactor:$.clearCofactor,fromBytes:$.fromBytes,toBytes:$.toBytes};return{CURVE:Q,curveOpts:z}}function YJ($){let{CURVE:Q,curveOpts:q}=zJ($),J={hmac:$.hmac,randomBytes:$.randomBytes,lowS:$.lowS,bits2int:$.bits2int,bits2int_modN:$.bits2int_modN};return{CURVE:Q,curveOpts:q,hash:$.hash,ecdsaOpts:J}}function XJ($,Q){let q=Q.Point;return Object.assign({},Q,{ProjectivePoint:q,CURVE:Object.assign({},$,C0(q.Fn.ORDER,q.Fn.BITS))})}function QQ($){let{CURVE:Q,curveOpts:q,hash:J,ecdsaOpts:G}=YJ($),z=JJ(Q,q),Y=GJ(z,J,G);return XJ($,Y)}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function JQ($,Q){let q=(J)=>QQ({...$,hash:J});return{...q(Q),create:q}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var s$={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},ZJ={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},KJ=BigInt(0),qQ=BigInt(1),U8=BigInt(2);function UJ($){let Q=s$.p,q=BigInt(3),J=BigInt(6),G=BigInt(11),z=BigInt(22),Y=BigInt(23),U=BigInt(44),Z=BigInt(88),D=$*$*$%Q,H=D*D*$%Q,R=V$(H,q,Q)*H%Q,X=V$(R,q,Q)*H%Q,K=V$(X,U8,Q)*D%Q,A=V$(K,G,Q)*K%Q,_=V$(A,z,Q)*A%Q,y=V$(_,U,Q)*_%Q,u=V$(y,Z,Q)*y%Q,s=V$(u,U,Q)*_%Q,h=V$(s,q,Q)*H%Q,e=V$(h,Y,Q)*A%Q,$$=V$(e,J,Q)*D%Q,Q$=V$($$,U8,Q);if(!I0.eql(I0.sqr(Q$),$))throw Error("Cannot find square root");return Q$}var I0=f$(s$.p,{sqrt:UJ}),YQ=JQ({...s$,Fp:I0,lowS:!0,endo:ZJ},T0),GQ={};function E0($,...Q){let q=GQ[$];if(q===void 0){let J=T0(R0($));q=W$(J,J),GQ[$]=q}return T0(W$(q,...Q))}var W8=($)=>$.toBytes(!0).slice(1),t$=(()=>YQ.Point)(),D8=($)=>$%U8===KJ;function j8($){let{Fn:Q,BASE:q}=t$,J=y$(Q,$),G=q.multiply(J);return{scalar:D8(G.y)?J:Q.neg(J),bytes:W8(G)}}function XQ($){let Q=I0;if(!Q.isValidNot0($))throw Error("invalid x: Fail if x ≥ p");let q=Q.create($*$),J=Q.create(q*$+BigInt(7)),G=Q.sqrt(J);if(!D8(G))G=Q.neg(G);let z=t$.fromAffine({x:$,y:G});return z.assertValidity(),z}var j0=S$;function ZQ(...$){return t$.Fn.create(j0(E0("BIP0340/challenge",...$)))}function zQ($){return j8($).bytes}function jJ($,Q,q=c$(32)){let{Fn:J}=t$,G=n("message",$),{bytes:z,scalar:Y}=j8(Q),U=n("auxRand",q,32),Z=J.toBytes(Y^j0(E0("BIP0340/aux",U))),D=E0("BIP0340/nonce",Z,z,G),{bytes:H,scalar:R}=j8(D),X=ZQ(H,z,G),K=new Uint8Array(64);if(K.set(H,0),K.set(J.toBytes(J.create(R+X*Y)),32),!KQ(K,G,z))throw Error("sign: Invalid signature produced");return K}function KQ($,Q,q){let{Fn:J,BASE:G}=t$,z=n("signature",$,64),Y=n("message",Q),U=n("publicKey",q,32);try{let Z=XQ(j0(U)),D=j0(z.subarray(0,32));if(!Z0(D,qQ,s$.p))return!1;let H=j0(z.subarray(32,64));if(!Z0(H,qQ,s$.n))return!1;let R=ZQ(J.toBytes(D),W8(Z),Y),X=G.multiplyUnsafe(H).add(Z.multiplyUnsafe(J.neg(R))),{x:K,y:A}=X.toAffine();if(X.is0()||!D8(A)||K!==D)return!1;return!0}catch(Z){return!1}}var v0=(()=>{let q=(G=c$(48))=>{return k0(G,s$.n)};YQ.utils.randomSecretKey;function J(G){let z=q(G);return{secretKey:z,publicKey:zQ(z)}}return{keygen:J,getPublicKey:zQ,sign:jJ,verify:KQ,Point:t$,utils:{randomSecretKey:q,randomPrivateKey:q,taggedHash:E0,lift_x:XQ,pointToBytes:W8,numberToBytesBE:r$,bytesToNumberBE:S$,mod:M$},lengths:{secretKey:32,publicKey:32,publicKeyHasPrefix:!1,signature:64,seed:48}}})();var WJ=new TextEncoder,DJ=new TextDecoder,L$=($)=>WJ.encode($),p$=($)=>DJ.decode($),_0=($)=>Array.from($,(Q)=>Q.toString(16).padStart(2,"0")).join(""),N$=JSON.stringify,o$=JSON.parse,b0=($,Q=Number.MAX_SAFE_INTEGER)=>$.split("").reduce((q,J)=>q+J.charCodeAt(0),0)%Q;var M8="AES-GCM",MJ={},UQ="$",jQ=",",VJ=($)=>{let Q=new Uint8Array($),q=32768,J="";for(let G=0;G<Q.length;G+=32768)J+=String.fromCharCode(...Q.subarray(G,G+32768));return btoa(J)},NJ=($)=>Uint8Array.from(atob($),(Q)=>Q.charCodeAt(0)).buffer,W0=($)=>MJ[$]??=crypto.subtle.digest("SHA-1",L$($)).then((Q)=>{let q=new Uint8Array(Q),J="";for(let G of q)J+=G.toString(36);return J}),WQ=async($,Q,q)=>{let J=await crypto.subtle.digest("SHA-256",L$(`${$}:${Q}:${q}`));return crypto.subtle.importKey("raw",J,{name:M8},!1,["encrypt","decrypt"])},DQ=async($,Q)=>{let q=crypto.getRandomValues(new Uint8Array(12)),J=await $,G=await crypto.subtle.encrypt({name:M8,iv:q},J,L$(Q));return`${q.join(jQ)}${UQ}${VJ(G)}`},MQ=async($,Q)=>{let[q,J]=Q.split(UQ);if(!q||!J)throw Error("Invalid encrypted payload format");let G=Uint8Array.from(q.split(jQ),Number),z=await $,Y=await crypto.subtle.decrypt({name:M8,iv:G},z,NJ(J));return p$(Y)};var D$="GenosRTC",$0=($,Q)=>Array.from({length:$},Q);var e$=($)=>Array.from(crypto.getRandomValues(new Uint8Array($)),(Q)=>"0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"[Q%62]).join(""),p=typeof sessionStorage<"u"?sessionStorage.__genosrtcId??=e$(20):e$(20),E$=Promise.all.bind(Promise),VQ=typeof window<"u",{entries:NQ,fromEntries:f0,keys:y9}=Object,HQ=()=>{},T$=($)=>Error(`GenosRTC: ${$}`),D0=(...$)=>$.join("@"),OQ=($,Q)=>{let q=[...$],J=q.length,G=()=>{let z=Math.sin(Q++)*1e4;return z-Math.floor(z)};while(J){let z=Math.floor(G()*J--);[q[J],q[z]]=[q[z],q[J]]}return q};var HJ=5000,BQ="icegatheringstatechange",xQ="offer",OJ="answer",BJ=[...$0(3,($,Q)=>`stun:stun${Q||""}.l.google.com:19302`),"stun:stun.cloudflare.com:3478"].map(($)=>({urls:$})),V8=($,{rtcConfig:Q,rtcPolyfill:q,turnConfig:J})=>{let G=new(q||RTCPeerConnection)({iceServers:[...BJ,...J||[]],...Q}),z={},Y=!1,U=!1,Z,D=(X)=>Object.assign(X,{binaryType:"arraybuffer",bufferedAmountLowThreshold:65535,onmessage:(K)=>z.data?.(K.data),onopen:()=>z.connect?.(),onclose:()=>z.close?.(),onerror:(K)=>!K?.error?.message?.includes("User-Initiated Abort")&&z.error?.(K)}),H=()=>Promise.race([new Promise((X)=>{let K=()=>{if(G.iceGatheringState==="complete")G.removeEventListener(BQ,K),X()};G.addEventListener(BQ,K),K()}),new Promise((X)=>setTimeout(X,HJ))]).then(()=>({type:G.localDescription.type,sdp:G.localDescription.sdp.replace(/a=ice-options:trickle\s\n/g,"")}));if($?D(Z=G.createDataChannel("data")):G.ondatachannel=({channel:X})=>D(Z=X),G.onnegotiationneeded=async()=>{try{Y=!0,await G.setLocalDescription(),z.signal?.(await H())}catch(X){z.error?.(X)}finally{Y=!1}},G.onconnectionstatechange=()=>{if(["disconnected","failed","closed"].includes(G.connectionState))z.close?.()},G.ontrack=(X)=>{z.track?.(X.track,X.streams[0]),z.stream?.(X.streams[0])},G.onremovestream=(X)=>z.stream?.(X.stream),$&&!G.canTrickleIceCandidates)G.onnegotiationneeded();let R=()=>G.getSenders();return{created:Date.now(),connection:G,get channel(){return Z},get isDead(){return G.connectionState==="closed"},async signal(X){if(Z?.readyState==="open"&&!X.sdp?.includes("a=rtpmap"))return;try{if(X.type===xQ){if(Y||G.signalingState!=="stable"&&!U){if($)return;await E$([G.setLocalDescription({type:"rollback"}),G.setRemoteDescription(X)])}else await G.setRemoteDescription(X);await G.setLocalDescription();let K=await H();return z.signal?.(K),K}if(X.type===OJ){U=!0;try{await G.setRemoteDescription(X)}finally{U=!1}}}catch(K){z.error?.(K)}},sendData:(X)=>{if(Z?.readyState==="open")Z.send(X)},destroy:()=>{Z?.close(),G.close(),Y=U=!1},setHandlers:(X)=>Object.assign(z,X),offerPromise:$?new Promise((X)=>z.signal=(K)=>K.type===xQ&&X(K)):Promise.resolve(),addStream:(X)=>X.getTracks().forEach((K)=>G.addTrack(K,X)),removeStream:(X)=>R().filter((K)=>X.getTracks().includes(K.track)).forEach((K)=>G.removeTrack(K)),addTrack:(X,K)=>G.addTrack(X,K),removeTrack:(X)=>{let K=R().find((A)=>A.track===X);if(K)G.removeTrack(K)},replaceTrack:(X,K)=>R().find((A)=>A.track===X)?.replaceTrack(K)}};var xJ=Object.getPrototypeOf(Uint8Array),g0=12,TQ=0,u0=TQ+g0,F0=u0+1,V0=F0+1,N0=V0+1,M0=16384-N0,y0=255,N8="bufferedamountlow",Q0=($)=>`@_${$}`,AQ=Q0("ping"),H8=100,AJ=3,RJ=200,TJ=512,RQ=($,Q)=>new Response(new Blob([$]).stream().pipeThrough(new Q("deflate"))).arrayBuffer().then((q)=>new Uint8Array(q)),LQ=($,Q,q,J)=>{let G=new Map,z=new Map,Y=new Map,U={},Z={},D={},H={},R=new Map,X=new Map,K=Promise.resolve(),A=(j,V)=>{if(!R.has(j))R.set(j,new Set);R.get(j).add(V)},_=(j,V)=>R.get(j)?.delete(V),y=(j,...V)=>R.get(j)?.forEach((w)=>w(...V)),u=(j,V)=>{let w=j?Array.isArray(j)?j:[j]:G.keys();return Array.from(w,(C)=>{let x=G.get(C);if(!x)return console.warn(`${D$}: no peer with id ${C}`),null;return V(C,x)}).filter(Boolean)},s=(j)=>{if(!G.has(j))return;G.delete(j),X.delete(j),N.delete(j),delete U[j],delete Z[j],delete D[j],delete H[j],y("peer:leave",j),Q(j)},h=(j)=>new Promise((V,w)=>{let C=setTimeout(()=>{j.removeEventListener(N8,x),w(Error(`${D$}: bufferLow timeout`))},5000);function x(){clearTimeout(C),j.removeEventListener(N8,x),V()}j.addEventListener(N8,x)}),e=(j)=>{if(Y.has(j))return Y.get(j);if(!j)throw T$("action type is required");let V=L$(j);if(V.byteLength>g0)throw T$(`❌ "${j}" exceeds ${g0} bytes. Use a shorter name.`);let w=new Uint8Array(g0).map((b,G$)=>V[G$]||0),C=0,x=new Map([["message",new Set],["progress",new Set]]),m=(b,G$)=>x.get(b)?.add(G$),l=(b,G$)=>x.get(b)?.delete(G$),d=async(b,G$,r,J$)=>{if(r&&typeof r!=="object")throw T$("meta must be object");if(b===void 0)throw T$("data cannot be undefined");let M=b instanceof Blob,L=M||b instanceof ArrayBuffer||b instanceof xJ,E=typeof b!=="string";if(r&&!L)throw T$("meta only allowed with binary");let F=L?new Uint8Array(M?await b.arrayBuffer():b):L$(E?N$(b):b),i=0;if(!L&&F.byteLength>=TJ){let O$=await RQ(F,CompressionStream);if(O$.byteLength<F.byteLength)F=O$,i=1}let c=r?L$(N$(r)):null,o=Math.ceil(F.byteLength/M0)+(r?1:0)||1;if(o>H8)throw T$(`Message too large, exceeds max chunks ${H8}`);let q$=$0(o,(O$,a)=>{let B$=a===o-1,f=r&&a===0,t=f?c:F.subarray(r?(a-1)*M0:a*M0,r?a*M0:(a+1)*M0),Y$=new Uint8Array(N0+t.byteLength);return Y$.set(w),Y$.set([C],u0),Y$.set([B$|f<<1|L<<2|E<<3|i<<4],F0),Y$.set([Math.round((a+1)/o*y0)],V0),Y$.set(t,N0),Y$});return C=C+1&y0,E$(u(G$,async(O$,a)=>{let{channel:B$}=a;for(let f=0;f<o;f++){let t=0;while(B$.bufferedAmount>B$.bufferedAmountLowThreshold){if(t++>AJ)throw T$(`${D$}: send buffer full, max retries reached for peer ${O$}`);try{await h(B$)}catch(Y$){console.warn(Y$.message),await new Promise((x$)=>setTimeout(x$,RJ))}}if(!G.has(O$))break;a.sendData(q$[f]),J$?.(q$[f][V0]/y0,O$,r)}}))};z.set(j,{listeners:x,send:d});let K$={send:d,on:m,off:l};return Y.set(j,K$),K$},$$=(j,V)=>{try{X.set(j,Date.now()),N.delete(j);let w=new Uint8Array(V),C=p$(w.subarray(TQ,u0)).replace(/\x00/g,"");if(!z.has(C))return console.warn(`${D$}: unregistered type (${C})`);if(C===AQ){Z$("",j).catch(()=>{});return}let[x]=w.subarray(u0,F0),[m]=w.subarray(F0,V0),[l]=w.subarray(V0,N0),d=w.subarray(N0),K$=Boolean(m&1),b=Boolean(m&2),G$=Boolean(m&4),r=Boolean(m&8),J$=Boolean(m&16),M=z.get(C),L=(U[j]||={})[C]||={};if(L[x]?.chunks?.length>H8){console.warn(`${D$}: peer ${j} sent too many chunks for nonce ${x}, ignoring.`);return}let E=L[x]||={chunks:[]};if(b)try{E.meta=o$(p$(d))}catch{console.warn(`${D$}: failed to parse meta from peer ${j} for type ${C}`);return}else E.chunks.push(d);if(M.listeners.get("progress").forEach((i)=>{try{i(l/y0,j,E.meta)}catch(c){console.error(c)}}),!K$)return;let F=new Uint8Array(E.chunks.reduce((i,c)=>i+c.byteLength,0));E.chunks.reduce((i,c)=>(F.set(c,i),i+c.byteLength),0),delete L[x],K=K.then(async()=>{let i=J$?await RQ(F,DecompressionStream):F,c;if(G$)c=i;else if(r)try{c=o$(p$(i))}catch{console.warn(`${D$}: failed to parse JSON message data from peer ${j} for type ${C}`);return}else c=p$(i);M.listeners.get("message").forEach((o)=>{try{o(c,j,E.meta)}catch(q$){console.error(q$)}})}).catch((i)=>console.error(`${D$}: dispatch error from peer ${j}:`,i))}catch(w){console.error(`${D$}: error handling data from peer ${j}:`,w)}},Q$=async()=>{try{await k(""),await new Promise((j)=>setTimeout(j,99))}catch(j){console.warn(`${D$}: error sending leave`,j)}for(let[j,V]of G){try{V.destroy()}catch{}G.delete(j)}clearInterval(T),q()},{send:z$}=e(AQ),{send:Z$,on:g}=e(Q0("pong")),{send:H$,on:j$}=e(Q0("signal")),{send:O,on:S}=e(Q0("stream")),{send:W,on:B}=e(Q0("track")),{send:k,on:v}=e(Q0("leave"));$((j,V)=>{let w=G.get(V);if(w===j)return;if(w){let C=()=>{};w.setHandlers({data:C,stream:C,track:C,signal:C,close:C,error:C})}G.set(V,j),X.set(V,Date.now()),N.delete(V),j.setHandlers({data:(C)=>$$(V,C),stream:(C)=>{y("stream:add",C,V,D[V]),delete D[V]},track:(C,x)=>{y("track:add",C,x,V,H[V]),delete H[V]},signal:(C)=>H$(C,V),close:()=>s(V),error:(C)=>{console.error(`${D$}: peer error for ${V}`,C),s(V)}}),y("peer:join",V,J?.(V))}),g("message",(j,V)=>{Z[V]?.(),delete Z[V]}),j$("message",(j,V)=>G.get(V)?.signal(j)),S("message",(j,V)=>D[V]=j),B("message",(j,V)=>H[V]=j),v("message",(j,V)=>s(V));let P=1e4,I=20000,N=new Map,T=setInterval(()=>{let j=Date.now();for(let[V,w]of G){if(j-(X.get(V)??j)<=P)continue;let x=N.get(V);if(x===void 0)N.set(V,j),z$("",V).catch(()=>{});else if(j-x>I){N.delete(V);try{w.destroy()}catch{}s(V)}}},5000);if(VQ)addEventListener("beforeunload",Q$);return{on:A,off:_,channel:e,leave:Q$,ping:async(j)=>{if(!j)throw T$("ping() requires target peer ID");let V=Date.now();return z$("",j),await new Promise((w)=>Z[j]=w),Date.now()-V},getPeers:()=>f0(Array.from(G,([j,V])=>[j,V.connection])),addStream:(j,V,w)=>u(V,async(C,x)=>{if(w)await O(w,C);x.addStream(j)}),removeStream:(j,V)=>u(V,(w,C)=>C.removeStream(j)),addTrack:(j,V,w,C)=>u(w,async(x,m)=>{if(C)await W(C,x);m.addTrack(j,V)}),removeTrack:(j,V)=>u(V,(w,C)=>C.removeTrack(j)),replaceTrack:(j,V,w,C)=>u(w,async(x,m)=>{if(C)await W(C,x);m.replaceTrack(j,V)})}};var LJ=5,wJ=10,CJ=2500,m0=57333,wQ=({init:$,subscribe:Q,announce:q,bye:J})=>{let G={},z=!1,Y,U;return(Z,D,H)=>{let{appId:R}=Z;if(G[R]?.[D])return G[R][D];if(!Z||!D||!R&&!Z.firebaseApp)throw T$(!Z?"config required":!D?"roomId required":"appId missing");let X=HQ;if(!z){let N=$(Z);U=$0(LJ,()=>{try{return V8(!0,Z)}catch{return null}}).filter(Boolean),Y=Array.isArray(N)?N:[N];let T=setInterval(()=>{U=U.filter((j)=>{let V=Date.now()-j.created<m0;if(!V)j.destroy();return V})},m0);G.offerCleanupTimer||=T,z=!0}let K={},A={},_=new Map,y=new Map,u=new Map,s={},h=D0(D$,R,D),e=W0(h),$$=W0(D0(h,p)),Q$=WQ(Z.password||"",R,D),z$=(N)=>async(T)=>({type:T.type,sdp:await N(Q$,T.sdp)}),Z$=z$(MQ),g=z$(DQ),H$=(N)=>{return setTimeout(()=>{if(!N.isDead&&!Object.values(A).includes(N))N.destroy()},m0),N},j$=(N)=>{try{return H$(V8(N,Z))}catch{return null}},O=(N,T)=>{if(A[T]===N)return;N.connectedAt=Date.now(),A[T]?.destroy(),A[T]=N,X(N,T),K[T]?.forEach((j)=>j!==N&&j.destroy()),delete K[T]},S=(N,T)=>{if(A[T]===N)delete A[T]},W=(N)=>async(T,j,V)=>{let[w,C]=await E$([e,$$]);if(T!==w&&T!==C)return;let{peerId:x,offer:m,answer:l,type:d,bye:K$}=typeof j==="string"?o$(j):j;if(K$){if(x&&x!==p)y.delete(x),u.set(x,Date.now()),delete s[x];return}if(x&&x!==p)y.set(x,Date.now()),u.delete(x);if(d&&x)s[x]=d;if(x===p)return;if(A[x]){let b=A[x].channel?.readyState==="open";if(!m||b||Date.now()-A[x].connectedAt<2000)return;A[x].destroy(),delete A[x]}if(Z.admit&&!Z.admit(x))return;if(m){if(K[x]?.[N]&&p>x)return;let b=j$(!1);if(!b)return;b.setHandlers({connect:()=>O(b,x),close:()=>S(b,x)});try{let G$=await Z$(m);if(b.isDead)return;let[r,J$]=await E$([W0(D0(h,x)),b.signal(G$).then(g)]);V(r,N$({peerId:p,answer:J$,...Z.type&&{type:Z.type}}))}catch{H?.({error:"decryption failed (offer)",appId:R,peerId:x,roomId:D})}}else if(l){let b=K[x]?.[N];if(!b||b.isDead)return;b.setHandlers({connect:()=>O(b,x),close:()=>S(b,x)});try{b.signal(await Z$(l))}catch{H?.({error:"decryption failed (answer)",appId:R,peerId:x,roomId:D})}}else{let b=K[x]||=[];if(b.forEach((M,L)=>{if(M&&(M.isDead||Date.now()-(M.dialedAt??M.created)>m0)){if(M.isDead)_.set(x,Date.now()+30000);M.destroy(),delete b[L]}}),b[N]||b.filter(Boolean).length>=2||_.get(x)>Date.now())return;if(Object.values(K).reduce((M,L)=>M+L.filter((E)=>E&&!E.isDead).length,0)>=wJ)return;let r=U.pop(),J$=r?H$(r):j$(!0);if(!J$){_.set(x,Date.now()+30000);return}J$.dialedAt=Date.now(),b[N]=J$;try{let[M,{offer:L}]=await E$([W0(D0(h,x)),J$.offerPromise.then(g).then((E)=>({offer:E}))]);J$.setHandlers({connect:()=>O(J$,x),close:()=>S(J$,x)}),V(M,N$({peerId:p,offer:L,peer:J$,...Z.type&&{type:Z.type}}))}catch{if(b[N]===J$)delete b[N];J$.destroy()}}},B=[],k=[],v=[],P=()=>v.forEach(({relay:N,rootTopic:T})=>J?.(N,T));Y.forEach(async(N,T)=>{let j=await N;if(!j)return;let[V,w]=await E$([e,$$]);k[T]=Q(j,V,w,W(T)),v.push({relay:j,rootTopic:V});let C=async()=>{let x=await q(j,V,w);B[T]=setTimeout(C,typeof x==="number"?x:CJ)};C()}),G[R]||={};let I=LQ((N)=>X=N,(N)=>delete A[N],()=>I.onCleanup?.(),(N)=>s[N]);if(typeof window<"u")window.addEventListener("pagehide",P);return I.onCleanup=()=>{if(P(),typeof window<"u")window.removeEventListener("pagehide",P);if(delete G[R][D],B.forEach(clearTimeout),k.forEach((N)=>N?.()),Object.keys(G).length===0)clearInterval(G.offerCleanupTimer),delete G.offerCleanupTimer},I._census=()=>{for(let T of Object.keys(A))y.set(T,Date.now());let N=Date.now()-120000;for(let[T,j]of y)if(j<N)y.delete(T);return[...y.keys()]},I._gone=()=>{let N=Date.now()-60000;for(let[T,j]of u)if(j<N)u.delete(T);return[...u.keys()]},G[R][D]=I}};var CQ=3333,kJ=30000,H0={},kQ={},SQ=($,Q)=>{let q={},J=null;q.reopenHandlers=new Set;let G=()=>{if(J)clearTimeout(J),J=null;if(q.socket)q.socket.onclose=null,q.socket.close();let z=new WebSocket($);z.onclose=()=>{H0[$]??=CQ,J=setTimeout(G,H0[$]),H0[$]=Math.min(H0[$]*2,kJ)},z.onmessage=(Y)=>Q(Y.data),q.socket=z,q.url=z.url,q.ready=new Promise((Y)=>{z.onopen=()=>{H0[$]=CQ,Y(q),q.reopenHandlers.forEach((U)=>U())}}),q.send=(Y)=>{if(z.readyState===1)z.send(Y)}};return q.forceReconnect=G,G(),kQ[$]=q,q};if(typeof window<"u"){let $=(Q)=>{log.info("⚡ [GenosRTC] Network event detected. Forcing reconnection…"),Object.values(kQ).forEach((q)=>{if(q.socket&&q.socket.readyState!==WebSocket.OPEN&&(Q||q.socket.readyState!==WebSocket.CONNECTING))q.forceReconnect()})};window.addEventListener("online",()=>{log.info("✅ Reconnected to the network."),$(!0)}),window.addEventListener("offline",async()=>{log.info("❌ Disconnected from the network.")}),document.addEventListener("visibilitychange",()=>{if(document.visibilityState==="visible")$()})}var PQ=($)=>()=>f0(NQ($).map(([Q,q])=>[Q,q.socket])),IQ=($,Q,q,J)=>($.relayUrls??(J?OQ(Q,b0($.appId)):Q)).slice(0,$.relayUrls?.length??$.relayRedundancy??q);var EQ=["wss://relay.primal.net","wss://relay.snort.social","wss://nostr.oxtr.dev","wss://nostr.vulpem.com","wss://relay.nostr.net","wss://nostr.sathoarder.com","wss://nostr.data.haus","wss://relay.mostr.pub"];var J0={},PJ=10,bQ="x",fQ="EVENT",IJ=/pow:\s*(\d+)\s*bits needed\.?/i,h0=new Set,yQ=v0.utils.randomSecretKey(),EJ=_0(v0.getPublicKey(yQ)),B8={},O0={},vJ={},gQ=()=>Math.floor(Date.now()/1000),uQ=($)=>vJ[$]??=b0($,1e4)+20000,B0=($)=>$.replace(/\/$/,""),_J=($,Q)=>{let[q,J,G,z]=o$(Q);if(q===fQ)return O0[J]?.(B8[J],G.content);if(q==="NOTICE"||q==="OK"&&!G){if(+((q==="NOTICE"?J:z).match(IJ)?.[1]??0)>0){let U=B0($);h0.add(U),J0[U]?.close?.(),delete J0[U]}}},bJ=($)=>{let Q=B0($);if(J0[Q])return J0[Q];let q=SQ(Q,(J)=>_J(Q,J));return J0[Q]=q},O8=async($,Q)=>{let q={kind:uQ($),content:Q,pubkey:EJ,created_at:gQ(),tags:[[bQ,$]]},J=L$(N$([0,q.pubkey,q.created_at,q.kind,q.tags,q.content])),G=new Uint8Array(await crypto.subtle.digest("SHA-256",J)),z=v0.sign(G,yQ);return N$([fQ,{...q,id:_0(G),sig:_0(z)}])},vQ=($,Q)=>{return B8[$]=Q,N$(["REQ",$,{kinds:[uQ(Q)],since:gQ(),["#"+bQ]:[Q]}])},_Q=($)=>{return delete B8[$],N$(["CLOSE",$])},c0=wQ({init:($)=>{let q=($?.relayUrls?.length?$.relayUrls:null)??EQ;return IQ($,q,PJ,!1).map(bJ).map((G)=>G.ready.then(()=>G).catch(()=>null))},subscribe:($,Q,q,J)=>{let G=e$(64),z=e$(64);O0[G]=O0[z]=(U,Z)=>J(U,Z,async(D,H)=>{if(h0.has(B0($.url)))return;$.send(await O8(D,H))});let Y=()=>{$.send(vQ(G,Q)),$.send(vQ(z,q))};return Y(),$.reopenHandlers.add(Y),()=>{$.reopenHandlers.delete(Y),$.send(_Q(G)),$.send(_Q(z)),delete O0[G],delete O0[z]}},announce:async($,Q)=>{if(h0.has(B0($.url)))return;$.send(await O8(Q,N$({peerId:p})))},bye:async($,Q)=>{if(h0.has(B0($.url)))return;$.send(await O8(Q,N$({peerId:p,bye:1})))}}),FQ=PQ(J0);var fJ={cellSize:10},yJ=5000,gJ=3000,uJ=2000,FJ=2000,mJ=1e4,hJ=30000,cJ=5000,lJ=30000,d0=($)=>{let Q=String($||"").match(/cell-(\d+)/);return Q?Number(Q[1]):null},x8=($,Q)=>{let q=d0($);if(q==null)return[];let J=[];for(let G=1;G<Q;G*=2){if(q-G>=0)J.push(`cell-${q-G}`);if(q+G<Q)J.push(`cell-${q+G}`)}return J},l0=($)=>`c${(d0($)||0).toString(36)}`,dJ=10,pJ=($,Q)=>{let q=+Q.cellSize>=2?Q.cellSize|0:dJ;return Math.max(1,Math.ceil($/q))},mQ=($)=>{let Q=0;for(let q=0;q<$.length;q++)Q=Math.imul(Q^$.charCodeAt(q),2654435761);return Q>>>0},g$=($,Q)=>{let q=0,J=-1;for(let G=0;G<Q;G++){let z=mQ(`${$}:${G}`);if(z>J)J=z,q=G}return q};function oJ($,Q={},q={}){let J={...fJ,...Q},G=1,z={epoch:0,roster:[p],set:new Set([p]),key:p,C:1,cellId:null,isBridge:!1,bridges:[],edgeBridges:[]},Y={cellId:null},U=0,Z=0,D="",H=0,R=0,X=0,K=null,A=null,_=null,y=new Map,u=new Set,s=new Map,h=new Set,e=0,$$=new Set,Q$=new Map,z$=()=>Math.min(150,Math.ceil(Math.log2(z.C+1))*2+3),Z$=(M)=>x8(M,z.C),g=$.on?.bind($),H$=$.off?.bind($);if(g)$.on=(M,L)=>String(M).startsWith("mesh:")?S(M,L):g(M,L);if(H$)$.off=(M,L)=>String(M).startsWith("mesh:")?s.get(M)?.delete(L):H$(M,L);let j$=(M)=>(u.add(M),()=>u.delete(M)),O=(M,L)=>{for(let E of u)try{E(M,L)}catch(F){log.error("\uD83D\uDD78️ [Cells] Error in deliver handler:",F)}},S=(M,L)=>{if(!s.has(M))s.set(M,new Set);return s.get(M).add(L),()=>s.get(M)?.delete(L)},W=(M,...L)=>{let E=s.get(M);if(E)for(let F of E)try{F(...L)}catch{}},B=(M)=>{try{return typeof M==="string"?JSON.parse(M):M}catch{return null}},k=()=>`${p}:${Date.now().toString(36)}:${(e++&65535).toString(36)}`,v=()=>{if(h.size>yJ)h.delete(h.values().next().value)},P=()=>[...new Set([...$._census(),p])].sort(),I=(M,L,E)=>L.filter((F)=>g$(F,E)===M),N=(M,L,E)=>{if(M==null)return null;let F=(o)=>mQ(`${o}@${M}`),i=null,c=-1;for(let o of I(M,L,E)){let q$=F(o);if(q$>c)c=q$,i=o}return i},T=(M)=>{let L=z.audience?.get(M);if(!L)return[];return Object.keys($.getPeers?.()||{}).filter((E)=>L.has(E))},j=(M,L)=>{if(M!==A&&!(z.isBridge&&z.bridges.some((f)=>l0(f)===M)))return;let E=B(L);if(!E?.id||!E?.t)return;if(h.has(E.id))return;h.add(E.id),v();let{t:F,id:i,ttl:c,data:o,origin:q$,originCell:O$}=E,a=z.cellId;if(F==="ping"&&o?.pingId&&o.target===p&&q$!==p){let f={t:"pong",id:k(),ttl:z$(),data:{pingId:o.pingId,receivedAt:Date.now()},origin:p,originCell:a},t=$.getPeers?.()?.[q$]?[q$]:T(a);K?.send(JSON.stringify(f),t)}if(F==="pong"&&o?.pingId){let f=Q$.get(o.pingId);if(f)clearTimeout(f.timeout),f.resolve(Date.now()-f.start),Q$.delete(o.pingId)}if(F==="msg"&&q$!==p)O(o,q$);if(!z.isBridge)return;if((c??0)<=0)return;let B$=(f,t,Y$=null)=>{if(!f||!t.length)return;let x$={t:F,id:i,ttl:Y$??(c??z$())-1,data:o,origin:q$||p,originCell:O$||a};f.send(JSON.stringify(x$),t)};if(M===A){for(let f of Z$(a))B$(V(f),T(f));return}B$(K,T(a));for(let f of Z$(a))if(l0(f)!==M)B$(V(f),T(f))},V=(M)=>{let L=l0(M),E=$.channel(L);if(!$$.has(L))$$.add(L),E.on("message",(F)=>j(L,F));return E},w=()=>{if(!z.cellId)return;if(A=l0(z.cellId),K=$.channel(A),!$$.has(A))$$.add(A),K.on("message",(M)=>j(A,M));if(z.isBridge)for(let M of Z$(z.cellId))V(M)},C=(M,L)=>{if(!M.cellId||!M.set.has(L))return!1;let E=`cell-${g$(L,M.C)}`;return E===M.cellId||M.bridges.includes(E)||x8(E,M.C).includes(M.cellId)&&N(g$(L,M.C),M.roster,M.C)===L},x=(M)=>C(z,M)||Date.now()<U&&C(Y,M),m=()=>{let M=$.getPeers?.()||{};for(let L of Object.keys(M))if(!x(L))M[L].close?.()};q.admit=x;let l=()=>({epoch:z.epoch,cellId:z.cellId,isBridge:z.isBridge,bridges:z.bridges,roster:[...z.roster],cellSize:G,dynamicTTL:z$(),totalCells:z.C}),d=()=>{R=Date.now();for(let[M,L]of y){if(M===p)continue;W("mesh:peer-state",{id:M,cell:L.cell,bridges:L.bridges,timestamp:R})}},K$=(M)=>{let L=pJ(M.length,J);G=Math.ceil(M.length/L);let E=`cell-${g$(p,L)}`,F=new Map,i=new Set,c=new Map,o=(f)=>c.get(f)??c.set(f,new Set).get(f);for(let f of M)o(`cell-${g$(f,L)}`).add(f);let q$=new Map,O$=(f)=>q$.has(f)?q$.get(f):q$.set(f,N(f,M,L)).get(f);for(let f of new Set(M.map((t)=>g$(t,L)))){let t=`cell-${f}`;for(let Y$ of x8(t,L)){if(d0(Y$)<f)continue;for(let x$ of[O$(f),O$(d0(Y$))]){if(!x$)continue;let A8=`cell-${g$(x$,L)}`===t?Y$:t,p0=F.get(x$)??[];if(!p0.includes(A8))p0.push(A8);if(F.set(x$,p0),o(t).add(x$),o(Y$).add(x$),t===E||Y$===E)i.add(x$)}}}let a=F.get(p)??[],B$=z.cellId!==E||String(z.bridges)!==String(a);Y=z,z={epoch:z.epoch+1,roster:M,set:new Set(M),key:M.join("|"),C:L,cellId:E,isBridge:a.length>0,bridges:a,edgeBridges:[...i],audience:c},X=Date.now(),y.clear();for(let f of M){let t=F.get(f)??[];y.set(f,{cell:`cell-${g$(f,L)}`,isBridge:t.length>0,bridges:t})}if(U=Date.now()+cJ,B$)w();log.info("\uD83D\uDD78️ [Cells] seal",{epoch:z.epoch,myCell:E,bridges:a,C:L,roster:M.length}),d(),W("mesh:state",l())},b=()=>{let M=P(),L=M.join("|");if(L===z.key)Z=0;else{let E=Date.now();if(Z||=E,L!==D)D=L,H=E;if(M.some((c)=>!z.set.has(c))||z.edgeBridges.some((c)=>!M.includes(c))||($._gone?.()??[]).some((c)=>z.set.has(c))?E-H>=FJ||E-Z>=mJ:E-Z>=hJ)Z=0,K$(M)}if(U&&Date.now()>=U)U=0,m()},G$=()=>{if(_)return;_=setInterval(()=>{if(b(),Date.now()-R>=lJ)d()},uJ)},r=()=>{if(_)clearInterval(_),_=null},J$=(M)=>{return new Promise((L,E)=>{let F=`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,i=Date.now(),c=setTimeout(()=>{Q$.delete(F),E(Error("Ping timeout"))},gJ);Q$.set(F,{start:i,resolve:L,reject:E,timeout:c,peerId:M});let o={t:"ping",id:k(),ttl:z$(),data:{pingId:F,target:M},origin:p,originCell:z.cellId};K?.send(JSON.stringify(o),T(z.cellId))})};return $.on?.("peer:join",()=>b()),$.on?.("peer:leave",()=>b()),K$(P()),G$(),{send:(M)=>{let L={t:"msg",id:k(),ttl:z$(),data:M,origin:p,originCell:z.cellId},E=JSON.stringify(L);K.send(E,T(z.cellId)),j(A,E)},on:(M,L)=>M==="message"?j$(L):void 0,ping:J$,getState:()=>({...l(),knownCells:new Set([...y.values()].map((M)=>M.cell)).size}),getPeerInfo:()=>new Map(y),getStableRoster:()=>[...z.roster],getKnownCells:()=>{let M=new Map;for(let[L,{cell:E}]of y)if(!M.has(E))M.set(E,{lastSeen:X,peerId:L});return M},getCellSize:()=>G,destroy:()=>{r(),Q$.forEach((M)=>clearTimeout(M.timeout)),Q$.clear()}}}function hQ($,Q,q){let J={},G=c0({...$,admit:(Z)=>J.admit?.(Z)??!0},Q,q),z=$.overlay||{},Y=oJ(G,z,J),U=new Map;return{on:(Z,D)=>G.on(Z,D),off:(Z,D)=>G.off?.(Z,D),channel:(Z)=>{if(U.has(Z))return U.get(Z);let D=G.channel(Z),H={send:(R,X)=>{if(X){let K=[].concat(X),A=G.getPeers?.()||{};if(K.every((_)=>A[_]))return D.send(R,X)}Y.send({_ch:Z,_d:R,_t:X})},on:(R,X)=>{if(R==="message")Y.on("message",(K,A)=>{if(K?._ch!==Z)return;if(K._t&&![].concat(K._t).includes(p))return;X(K._d,A)}),D.on(R,X);else D.on(R,X)},off:(R,X)=>D.off?.(R,X),_original:D};return U.set(Z,H),H},get id(){return G.id},get peers(){return G.peers},getPeers:()=>G.getPeers?.()||{},mesh:Y,_room:G,getState:()=>Y.getState(),getPeerInfo:()=>Y.getPeerInfo(),ping:(Z)=>Y.ping(Z),leave:()=>{Y.destroy(),U.clear(),G.leave()},destroy:()=>{Y.destroy(),U.clear()}}}var Uq=($,Q,q)=>$?.cells||$?.overlay?hQ($,Q,q):c0($,Q,q);export{p as selfId,Uq as join,FQ as getRelaySockets};
var u$=typeof globalThis==="object"&&"crypto"in globalThis?globalThis.crypto:void 0;/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function F$($){return $ instanceof Uint8Array||ArrayBuffer.isView($)&&$.constructor.name==="Uint8Array"}function q0($){if(!Number.isSafeInteger($)||$<0)throw Error("positive integer expected, got "+$)}function x$($,...Q){if(!F$($))throw Error("Uint8Array expected");if(Q.length>0&&!Q.includes($.length))throw Error("Uint8Array expected of length "+Q+", got length="+$.length)}function x0($){if(typeof $!=="function"||typeof $.create!=="function")throw Error("Hash should be wrapped by utils.createHasher");q0($.outputLen),q0($.blockLen)}function i$($,Q=!0){if($.destroyed)throw Error("Hash instance has been destroyed");if(Q&&$.finished)throw Error("Hash#digest() has already been called")}function w8($,Q){x$($);let q=Q.outputLen;if($.length<q)throw Error("digestInto() expects output buffer of length at least "+q)}function m$(...$){for(let Q=0;Q<$.length;Q++)$[Q].fill(0)}function A0($){return new DataView($.buffer,$.byteOffset,$.byteLength)}function A$($,Q){return $<<32-Q|$>>>Q}var C8=(()=>typeof Uint8Array.from([]).toHex==="function"&&typeof Uint8Array.fromHex==="function")(),lQ=Array.from({length:256},($,Q)=>Q.toString(16).padStart(2,"0"));function C$($){if(x$($),C8)return $.toHex();let Q="";for(let q=0;q<$.length;q++)Q+=lQ[$[q]];return Q}var w$={_0:48,_9:57,A:65,F:70,a:97,f:102};function L8($){if($>=w$._0&&$<=w$._9)return $-w$._0;if($>=w$.A&&$<=w$.F)return $-(w$.A-10);if($>=w$.a&&$<=w$.f)return $-(w$.a-10);return}function h$($){if(typeof $!=="string")throw Error("hex string expected, got "+typeof $);if(C8)return Uint8Array.fromHex($);let Q=$.length,q=Q/2;if(Q%2)throw Error("hex string expected, got unpadded hex of length "+Q);let J=new Uint8Array(q);for(let G=0,z=0;G<q;G++,z+=2){let Y=L8($.charCodeAt(z)),K=L8($.charCodeAt(z+1));if(Y===void 0||K===void 0){let Z=$[z]+$[z+1];throw Error('hex string expected, got non-hex character "'+Z+'" at index '+z)}J[G]=Y*16+K}return J}function R0($){if(typeof $!=="string")throw Error("string expected");return new Uint8Array(new TextEncoder().encode($))}function G0($){if(typeof $==="string")$=R0($);return x$($),$}function D$(...$){let Q=0;for(let J=0;J<$.length;J++){let G=$[J];x$(G),Q+=G.length}let q=new Uint8Array(Q);for(let J=0,G=0;J<$.length;J++){let z=$[J];q.set(z,G),G+=z.length}return q}class z0{}function k8($){let Q=(J)=>$().update(G0(J)).digest(),q=$();return Q.outputLen=q.outputLen,Q.blockLen=q.blockLen,Q.create=()=>$(),Q}function c$($=32){if(u$&&typeof u$.getRandomValues==="function")return u$.getRandomValues(new Uint8Array($));if(u$&&typeof u$.randomBytes==="function")return Uint8Array.from(u$.randomBytes($));throw Error("crypto.getRandomValues must be defined")}function dQ($,Q,q,J){if(typeof $.setBigUint64==="function")return $.setBigUint64(Q,q,J);let G=BigInt(32),z=BigInt(4294967295),Y=Number(q>>G&z),K=Number(q&z),Z=J?4:0,D=J?0:4;$.setUint32(Q+Z,Y,J),$.setUint32(Q+D,K,J)}function S8($,Q,q){return $&Q^~$&q}function P8($,Q,q){return $&Q^$&q^Q&q}class o0 extends z0{constructor($,Q,q,J){super();this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=$,this.outputLen=Q,this.padOffset=q,this.isLE=J,this.buffer=new Uint8Array($),this.view=A0(this.buffer)}update($){i$(this),$=G0($),x$($);let{view:Q,buffer:q,blockLen:J}=this,G=$.length;for(let z=0;z<G;){let Y=Math.min(J-this.pos,G-z);if(Y===J){let K=A0($);for(;J<=G-z;z+=J)this.process(K,z);continue}if(q.set($.subarray(z,z+Y),this.pos),this.pos+=Y,z+=Y,this.pos===J)this.process(Q,0),this.pos=0}return this.length+=$.length,this.roundClean(),this}digestInto($){i$(this),w8($,this),this.finished=!0;let{buffer:Q,view:q,blockLen:J,isLE:G}=this,{pos:z}=this;if(Q[z++]=128,m$(this.buffer.subarray(z)),this.padOffset>J-z)this.process(q,0),z=0;for(let N=z;N<J;N++)Q[N]=0;dQ(q,J-8,BigInt(this.length*8),G),this.process(q,0);let Y=A0($),K=this.outputLen;if(K%4)throw Error("_sha2: outputLen should be aligned to 32bit");let Z=K/4,D=this.get();if(Z>D.length)throw Error("_sha2: outputLen bigger than state");for(let N=0;N<Z;N++)Y.setUint32(4*N,D[N],G)}digest(){let{buffer:$,outputLen:Q}=this;this.digestInto($);let q=$.slice(0,Q);return this.destroy(),q}_cloneInto($){$||($=new this.constructor),$.set(...this.get());let{blockLen:Q,buffer:q,length:J,finished:G,destroyed:z,pos:Y}=this;if($.destroyed=z,$.finished=G,$.length=J,$.pos=Y,J%Q)$.buffer.set(q);return $}clone(){return this._cloneInto()}}var k$=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var pQ=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),v$=new Uint32Array(64);class I8 extends o0{constructor($=32){super(64,$,8,!1);this.A=k$[0]|0,this.B=k$[1]|0,this.C=k$[2]|0,this.D=k$[3]|0,this.E=k$[4]|0,this.F=k$[5]|0,this.G=k$[6]|0,this.H=k$[7]|0}get(){let{A:$,B:Q,C:q,D:J,E:G,F:z,G:Y,H:K}=this;return[$,Q,q,J,G,z,Y,K]}set($,Q,q,J,G,z,Y,K){this.A=$|0,this.B=Q|0,this.C=q|0,this.D=J|0,this.E=G|0,this.F=z|0,this.G=Y|0,this.H=K|0}process($,Q){for(let N=0;N<16;N++,Q+=4)v$[N]=$.getUint32(Q,!1);for(let N=16;N<64;N++){let R=v$[N-15],X=v$[N-2],U=A$(R,7)^A$(R,18)^R>>>3,A=A$(X,17)^A$(X,19)^X>>>10;v$[N]=A+v$[N-7]+U+v$[N-16]|0}let{A:q,B:J,C:G,D:z,E:Y,F:K,G:Z,H:D}=this;for(let N=0;N<64;N++){let R=A$(Y,6)^A$(Y,11)^A$(Y,25),X=D+R+S8(Y,K,Z)+pQ[N]+v$[N]|0,A=(A$(q,2)^A$(q,13)^A$(q,22))+P8(q,J,G)|0;D=Z,Z=K,K=Y,Y=z+X|0,z=G,G=J,J=q,q=X+A|0}q=q+this.A|0,J=J+this.B|0,G=G+this.C|0,z=z+this.D|0,Y=Y+this.E|0,K=K+this.F|0,Z=Z+this.G|0,D=D+this.H|0,this.set(q,J,G,z,Y,K,Z,D)}roundClean(){m$(v$)}destroy(){this.set(0,0,0,0,0,0,0,0),m$(this.buffer)}}var T0=k8(()=>new I8);class i0 extends z0{constructor($,Q){super();this.finished=!1,this.destroyed=!1,x0($);let q=G0(Q);if(this.iHash=$.create(),typeof this.iHash.update!=="function")throw Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let J=this.blockLen,G=new Uint8Array(J);G.set(q.length>J?$.create().update(q).digest():q);for(let z=0;z<G.length;z++)G[z]^=54;this.iHash.update(G),this.oHash=$.create();for(let z=0;z<G.length;z++)G[z]^=106;this.oHash.update(G),m$(G)}update($){return i$(this),this.iHash.update($),this}digestInto($){i$(this),x$($,this.outputLen),this.finished=!0,this.iHash.digestInto($),this.oHash.update($),this.oHash.digestInto($),this.destroy()}digest(){let $=new Uint8Array(this.oHash.outputLen);return this.digestInto($),$}_cloneInto($){$||($=Object.create(Object.getPrototypeOf(this),{}));let{oHash:Q,iHash:q,finished:J,destroyed:G,blockLen:z,outputLen:Y}=this;return $=$,$.finished=J,$.destroyed=G,$.blockLen=z,$.outputLen=Y,$.oHash=Q._cloneInto($.oHash),$.iHash=q._cloneInto($.iHash),$}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}var a0=($,Q,q)=>new i0($,Q).update(q).digest();a0.create=($,Q)=>new i0($,Q);/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var s0=BigInt(0),n0=BigInt(1);function Y0($,Q=""){if(typeof $!=="boolean"){let q=Q&&`"${Q}"`;throw Error(q+"expected boolean, got type="+typeof $)}return $}function _$($,Q,q=""){let J=F$($),G=$?.length,z=Q!==void 0;if(!J||z&&G!==Q){let Y=q&&`"${q}" `,K=z?` of length ${Q}`:"",Z=J?`length=${G}`:`type=${typeof $}`;throw Error(Y+"expected Uint8Array"+K+", got "+Z)}return $}function X0($){let Q=$.toString(16);return Q.length&1?"0"+Q:Q}function E8($){if(typeof $!=="string")throw Error("hex string expected, got "+typeof $);return $===""?s0:BigInt("0x"+$)}function S$($){return E8(C$($))}function t0($){return x$($),E8(C$(Uint8Array.from($).reverse()))}function a$($,Q){return h$($.toString(16).padStart(Q*2,"0"))}function e0($,Q){return a$($,Q).reverse()}function n($,Q,q){let J;if(typeof Q==="string")try{J=h$(Q)}catch(z){throw Error($+" must be hex string or Uint8Array, cause: "+z)}else if(F$(Q))J=Uint8Array.from(Q);else throw Error($+" must be hex string or Uint8Array");let G=J.length;if(typeof q==="number"&&G!==q)throw Error($+" of length "+q+" expected, got "+G);return J}var r0=($)=>typeof $==="bigint"&&s0<=$;function Z0($,Q,q){return r0($)&&r0(Q)&&r0(q)&&Q<=$&&$<q}function v8($,Q,q,J){if(!Z0(Q,q,J))throw Error("expected valid "+$+": "+q+" <= n < "+J+", got "+Q)}function L0($){let Q;for(Q=0;$>s0;$>>=n0,Q+=1);return Q}var b$=($)=>(n0<<BigInt($))-n0;function _8($,Q,q){if(typeof $!=="number"||$<2)throw Error("hashLen must be a number");if(typeof Q!=="number"||Q<2)throw Error("qByteLen must be a number");if(typeof q!=="function")throw Error("hmacFn must be a function");let J=(U)=>new Uint8Array(U),G=(U)=>Uint8Array.of(U),z=J($),Y=J($),K=0,Z=()=>{z.fill(1),Y.fill(0),K=0},D=(...U)=>q(Y,z,...U),N=(U=J(0))=>{if(Y=D(G(0),U),z=D(),U.length===0)return;Y=D(G(1),U),z=D()},R=()=>{if(K++>=1000)throw Error("drbg: tried 1000 values");let U=0,A=[];while(U<Q){z=D();let C=z.slice();A.push(C),U+=z.length}return D$(...A)};return(U,A)=>{Z(),N(U);let C=void 0;while(!(C=A(R())))N();return Z(),C}}function K0($,Q,q={}){if(!$||typeof $!=="object")throw Error("expected valid options object");function J(G,z,Y){let K=$[G];if(Y&&K===void 0)return;let Z=typeof K;if(Z!==z||K===null)throw Error(`param "${G}" is invalid: expected ${z}, got ${Z}`)}Object.entries(Q).forEach(([G,z])=>J(G,z,!1)),Object.entries(q).forEach(([G,z])=>J(G,z,!0))}function $8($){let Q=new WeakMap;return(q,...J)=>{let G=Q.get(q);if(G!==void 0)return G;let z=$(q,...J);return Q.set(q,z),z}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var j$=BigInt(0),Z$=BigInt(1),l$=BigInt(2),y8=BigInt(3),g8=BigInt(4),u8=BigInt(5),oQ=BigInt(7),F8=BigInt(8),iQ=BigInt(9),m8=BigInt(16);function V$($,Q){let q=$%Q;return q>=j$?q:Q+q}function N$($,Q,q){let J=$;while(Q-- >j$)J*=J,J%=q;return J}function b8($,Q){if($===j$)throw Error("invert: expected non-zero number");if(Q<=j$)throw Error("invert: expected positive modulus, got "+Q);let q=V$($,Q),J=Q,G=j$,z=Z$,Y=Z$,K=j$;while(q!==j$){let D=J/q,N=J%q,R=G-Y*D,X=z-K*D;J=q,q=N,G=Y,z=K,Y=R,K=X}if(J!==Z$)throw Error("invert: does not exist");return V$(G,Q)}function Q8($,Q,q){if(!$.eql($.sqr(Q),q))throw Error("Cannot find square root")}function h8($,Q){let q=($.ORDER+Z$)/g8,J=$.pow(Q,q);return Q8($,J,Q),J}function aQ($,Q){let q=($.ORDER-u8)/F8,J=$.mul(Q,l$),G=$.pow(J,q),z=$.mul(Q,G),Y=$.mul($.mul(z,l$),G),K=$.mul(z,$.sub(Y,$.ONE));return Q8($,K,Q),K}function rQ($){let Q=f$($),q=c8($),J=q(Q,Q.neg(Q.ONE)),G=q(Q,J),z=q(Q,Q.neg(J)),Y=($+oQ)/m8;return(K,Z)=>{let D=K.pow(Z,Y),N=K.mul(D,J),R=K.mul(D,G),X=K.mul(D,z),U=K.eql(K.sqr(N),Z),A=K.eql(K.sqr(R),Z);D=K.cmov(D,N,U),N=K.cmov(X,R,A);let C=K.eql(K.sqr(N),Z),u=K.cmov(D,N,C);return Q8(K,u,Z),u}}function c8($){if($<y8)throw Error("sqrt is not defined for small field");let Q=$-Z$,q=0;while(Q%l$===j$)Q/=l$,q++;let J=l$,G=f$($);while(f8(G,J)===1)if(J++>1000)throw Error("Cannot find square root: probably non-prime P");if(q===1)return h8;let z=G.pow(J,Q),Y=(Q+Z$)/l$;return function(Z,D){if(Z.is0(D))return D;if(f8(Z,D)!==1)throw Error("Cannot find square root");let N=q,R=Z.mul(Z.ONE,z),X=Z.pow(D,Q),U=Z.pow(D,Y);while(!Z.eql(X,Z.ONE)){if(Z.is0(X))return Z.ZERO;let A=1,C=Z.sqr(X);while(!Z.eql(C,Z.ONE))if(A++,C=Z.sqr(C),A===N)throw Error("Cannot find square root");let u=Z$<<BigInt(N-A-1),h=Z.pow(R,u);N=A,R=Z.sqr(h),X=Z.mul(X,R),U=Z.mul(U,h)}return U}}function nQ($){if($%g8===y8)return h8;if($%F8===u8)return aQ;if($%m8===iQ)return rQ($);return c8($)}var sQ=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function J8($){let Q={ORDER:"bigint",MASK:"bigint",BYTES:"number",BITS:"number"},q=sQ.reduce((J,G)=>{return J[G]="function",J},Q);return K0($,q),$}function tQ($,Q,q){if(q<j$)throw Error("invalid exponent, negatives unsupported");if(q===j$)return $.ONE;if(q===Z$)return Q;let J=$.ONE,G=Q;while(q>j$){if(q&Z$)J=$.mul(J,G);G=$.sqr(G),q>>=Z$}return J}function w0($,Q,q=!1){let J=Array(Q.length).fill(q?$.ZERO:void 0),G=Q.reduce((Y,K,Z)=>{if($.is0(K))return Y;return J[Z]=Y,$.mul(Y,K)},$.ONE),z=$.inv(G);return Q.reduceRight((Y,K,Z)=>{if($.is0(K))return Y;return J[Z]=$.mul(Y,J[Z]),$.mul(Y,K)},z),J}function f8($,Q){let q=($.ORDER-Z$)/l$,J=$.pow(Q,q),G=$.eql(J,$.ONE),z=$.eql(J,$.ZERO),Y=$.eql(J,$.neg($.ONE));if(!G&&!z&&!Y)throw Error("invalid Legendre symbol result");return G?1:z?0:-1}function C0($,Q){if(Q!==void 0)q0(Q);let q=Q!==void 0?Q:$.toString(2).length,J=Math.ceil(q/8);return{nBitLength:q,nByteLength:J}}function f$($,Q,q=!1,J={}){if($<=j$)throw Error("invalid field: expected ORDER > 0, got "+$);let G=void 0,z=void 0,Y=!1,K=void 0;if(typeof Q==="object"&&Q!=null){if(J.sqrt||q)throw Error("cannot specify opts in two arguments");let X=Q;if(X.BITS)G=X.BITS;if(X.sqrt)z=X.sqrt;if(typeof X.isLE==="boolean")q=X.isLE;if(typeof X.modFromBytes==="boolean")Y=X.modFromBytes;K=X.allowedLengths}else{if(typeof Q==="number")G=Q;if(J.sqrt)z=J.sqrt}let{nBitLength:Z,nByteLength:D}=C0($,G);if(D>2048)throw Error("invalid field: expected ORDER of <= 2048 bytes");let N,R=Object.freeze({ORDER:$,isLE:q,BITS:Z,BYTES:D,MASK:b$(Z),ZERO:j$,ONE:Z$,allowedLengths:K,create:(X)=>V$(X,$),isValid:(X)=>{if(typeof X!=="bigint")throw Error("invalid field element: expected bigint, got "+typeof X);return j$<=X&&X<$},is0:(X)=>X===j$,isValidNot0:(X)=>!R.is0(X)&&R.isValid(X),isOdd:(X)=>(X&Z$)===Z$,neg:(X)=>V$(-X,$),eql:(X,U)=>X===U,sqr:(X)=>V$(X*X,$),add:(X,U)=>V$(X+U,$),sub:(X,U)=>V$(X-U,$),mul:(X,U)=>V$(X*U,$),pow:(X,U)=>tQ(R,X,U),div:(X,U)=>V$(X*b8(U,$),$),sqrN:(X)=>X*X,addN:(X,U)=>X+U,subN:(X,U)=>X-U,mulN:(X,U)=>X*U,inv:(X)=>b8(X,$),sqrt:z||((X)=>{if(!N)N=nQ($);return N(R,X)}),toBytes:(X)=>q?e0(X,D):a$(X,D),fromBytes:(X,U=!0)=>{if(K){if(!K.includes(X.length)||X.length>D)throw Error("Field.fromBytes: expected "+K+" bytes, got "+X.length);let C=new Uint8Array(D);C.set(X,q?0:C.length-X.length),X=C}if(X.length!==D)throw Error("Field.fromBytes: expected "+D+" bytes, got "+X.length);let A=q?t0(X):S$(X);if(Y)A=V$(A,$);if(!U){if(!R.isValid(A))throw Error("invalid field element: outside of range 0..ORDER")}return A},invertBatch:(X)=>w0(R,X),cmov:(X,U,A)=>A?U:X});return Object.freeze(R)}function l8($){if(typeof $!=="bigint")throw Error("field order must be bigint");let Q=$.toString(2).length;return Math.ceil(Q/8)}function q8($){let Q=l8($);return Q+Math.ceil(Q/2)}function k0($,Q,q=!1){let J=$.length,G=l8(Q),z=q8(Q);if(J<16||J<z||J>1024)throw Error("expected "+z+"-1024 bytes of input, got "+J);let Y=q?t0($):S$($),K=V$(Y,Q-Z$)+Z$;return q?e0(K,G):a$(K,G)}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var r$=BigInt(0),d$=BigInt(1);function U0($,Q){let q=Q.negate();return $?q:Q}function S0($,Q){let q=w0($.Fp,Q.map((J)=>J.Z));return Q.map((J,G)=>$.fromAffine(J.toAffine(q[G])))}function i8($,Q){if(!Number.isSafeInteger($)||$<=0||$>Q)throw Error("invalid window size, expected [1.."+Q+"], got W="+$)}function G8($,Q){i8($,Q);let q=Math.ceil(Q/$)+1,J=2**($-1),G=2**$,z=b$($),Y=BigInt($);return{windows:q,windowSize:J,mask:z,maxNumber:G,shiftBy:Y}}function d8($,Q,q){let{windowSize:J,mask:G,maxNumber:z,shiftBy:Y}=q,K=Number($&G),Z=$>>Y;if(K>J)K-=z,Z+=d$;let D=Q*J,N=D+Math.abs(K)-1,R=K===0,X=K<0,U=Q%2!==0;return{nextN:Z,offset:N,isZero:R,isNeg:X,isNegF:U,offsetF:D}}function eQ($,Q){if(!Array.isArray($))throw Error("array expected");$.forEach((q,J)=>{if(!(q instanceof Q))throw Error("invalid point at index "+J)})}function $J($,Q){if(!Array.isArray($))throw Error("array of scalars expected");$.forEach((q,J)=>{if(!Q.isValid(q))throw Error("invalid scalar at index "+J)})}var z8=new WeakMap,a8=new WeakMap;function Y8($){return a8.get($)||1}function p8($){if($!==r$)throw Error("invalid wNAF")}class X8{constructor($,Q){this.BASE=$.BASE,this.ZERO=$.ZERO,this.Fn=$.Fn,this.bits=Q}_unsafeLadder($,Q,q=this.ZERO){let J=$;while(Q>r$){if(Q&d$)q=q.add(J);J=J.double(),Q>>=d$}return q}precomputeWindow($,Q){let{windows:q,windowSize:J}=G8(Q,this.bits),G=[],z=$,Y=z;for(let K=0;K<q;K++){Y=z,G.push(Y);for(let Z=1;Z<J;Z++)Y=Y.add(z),G.push(Y);z=Y.double()}return G}wNAF($,Q,q){if(!this.Fn.isValid(q))throw Error("invalid scalar");let J=this.ZERO,G=this.BASE,z=G8($,this.bits);for(let Y=0;Y<z.windows;Y++){let{nextN:K,offset:Z,isZero:D,isNeg:N,isNegF:R,offsetF:X}=d8(q,Y,z);if(q=K,D)G=G.add(U0(R,Q[X]));else J=J.add(U0(N,Q[Z]))}return p8(q),{p:J,f:G}}wNAFUnsafe($,Q,q,J=this.ZERO){let G=G8($,this.bits);for(let z=0;z<G.windows;z++){if(q===r$)break;let{nextN:Y,offset:K,isZero:Z,isNeg:D}=d8(q,z,G);if(q=Y,Z)continue;else{let N=Q[K];J=J.add(D?N.negate():N)}}return p8(q),J}getPrecomputes($,Q,q){let J=z8.get(Q);if(!J){if(J=this.precomputeWindow(Q,$),$!==1){if(typeof q==="function")J=q(J);z8.set(Q,J)}}return J}cached($,Q,q){let J=Y8($);return this.wNAF(J,this.getPrecomputes(J,$,q),Q)}unsafe($,Q,q,J){let G=Y8($);if(G===1)return this._unsafeLadder($,Q,J);return this.wNAFUnsafe(G,this.getPrecomputes(G,$,q),Q,J)}createCache($,Q){i8(Q,this.bits),a8.set($,Q),z8.delete($)}hasCache($){return Y8($)!==1}}function r8($,Q,q,J){let G=Q,z=$.ZERO,Y=$.ZERO;while(q>r$||J>r$){if(q&d$)z=z.add(G);if(J&d$)Y=Y.add(G);G=G.double(),q>>=d$,J>>=d$}return{p1:z,p2:Y}}function n8($,Q,q,J){eQ(q,$),$J(J,Q);let G=q.length,z=J.length;if(G!==z)throw Error("arrays of points and scalars must have equal length");let Y=$.ZERO,K=L0(BigInt(G)),Z=1;if(K>12)Z=K-3;else if(K>4)Z=K-2;else if(K>0)Z=2;let D=b$(Z),N=Array(Number(D)+1).fill(Y),R=Math.floor((Q.BITS-1)/Z)*Z,X=Y;for(let U=R;U>=0;U-=Z){N.fill(Y);for(let C=0;C<z;C++){let u=J[C],h=Number(u>>BigInt(U)&D);N[h]=N[h].add(q[C])}let A=Y;for(let C=N.length-1,u=Y;C>0;C--)u=u.add(N[C]),A=A.add(u);if(X=X.add(A),U!==0)for(let C=0;C<Z;C++)X=X.double()}return X}function o8($,Q,q){if(Q){if(Q.ORDER!==$)throw Error("Field.ORDER must match order: Fp == p, Fn == n");return J8(Q),Q}else return f$($,{isLE:q})}function s8($,Q,q={},J){if(J===void 0)J=$==="edwards";if(!Q||typeof Q!=="object")throw Error(`expected valid ${$} CURVE object`);for(let Z of["p","n","h"]){let D=Q[Z];if(!(typeof D==="bigint"&&D>r$))throw Error(`CURVE.${Z} must be positive bigint`)}let G=o8(Q.p,q.Fp,J),z=o8(Q.n,q.Fn,J),K=["Gx","Gy","a",$==="weierstrass"?"b":"d"];for(let Z of K)if(!G.isValid(Q[Z]))throw Error(`CURVE.${Z} must be valid field element of CURVE.Fp`);return Q=Object.freeze(Object.assign({},Q)),{CURVE:Q,Fp:G,Fn:z}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var t8=($,Q)=>($+($>=0?Q:-Q)/$Q)/Q;function QJ($,Q,q){let[[J,G],[z,Y]]=Q,K=t8(Y*$,q),Z=t8(-G*$,q),D=$-K*J-Z*z,N=-K*G-Z*Y,R=D<I$,X=N<I$;if(R)D=-D;if(X)N=-N;let U=b$(Math.ceil(L0(q)/2))+n$;if(D<I$||D>=U||N<I$||N>=U)throw Error("splitScalar (endomorphism): failed, k="+$);return{k1neg:R,k1:D,k2neg:X,k2:N}}function K8($){if(!["compact","recovered","der"].includes($))throw Error('Signature format must be "compact", "recovered", or "der"');return $}function Z8($,Q){let q={};for(let J of Object.keys(Q))q[J]=$[J]===void 0?Q[J]:$[J];if(Y0(q.lowS,"lowS"),Y0(q.prehash,"prehash"),q.format!==void 0)K8(q.format);return q}class e8 extends Error{constructor($=""){super($)}}var P$={Err:e8,_tlv:{encode:($,Q)=>{let{Err:q}=P$;if($<0||$>256)throw new q("tlv.encode: wrong tag");if(Q.length&1)throw new q("tlv.encode: unpadded data");let J=Q.length/2,G=X0(J);if(G.length/2&128)throw new q("tlv.encode: long form length too big");let z=J>127?X0(G.length/2|128):"";return X0($)+z+G+Q},decode($,Q){let{Err:q}=P$,J=0;if($<0||$>256)throw new q("tlv.encode: wrong tag");if(Q.length<2||Q[J++]!==$)throw new q("tlv.decode: wrong tlv");let G=Q[J++],z=!!(G&128),Y=0;if(!z)Y=G;else{let Z=G&127;if(!Z)throw new q("tlv.decode(long): indefinite length not supported");if(Z>4)throw new q("tlv.decode(long): byte length is too big");let D=Q.subarray(J,J+Z);if(D.length!==Z)throw new q("tlv.decode: length bytes not complete");if(D[0]===0)throw new q("tlv.decode(long): zero leftmost byte");for(let N of D)Y=Y<<8|N;if(J+=Z,Y<128)throw new q("tlv.decode(long): not minimal encoding")}let K=Q.subarray(J,J+Y);if(K.length!==Y)throw new q("tlv.decode: wrong value length");return{v:K,l:Q.subarray(J+Y)}}},_int:{encode($){let{Err:Q}=P$;if($<I$)throw new Q("integer: negative integers are not allowed");let q=X0($);if(Number.parseInt(q[0],16)&8)q="00"+q;if(q.length&1)throw new Q("unexpected DER parsing assertion: unpadded hex");return q},decode($){let{Err:Q}=P$;if($[0]&128)throw new Q("invalid signature integer: negative");if($[0]===0&&!($[1]&128))throw new Q("invalid signature integer: unnecessary leading zero");return S$($)}},toSig($){let{Err:Q,_int:q,_tlv:J}=P$,G=n("signature",$),{v:z,l:Y}=J.decode(48,G);if(Y.length)throw new Q("invalid signature: left bytes after parsing");let{v:K,l:Z}=J.decode(2,z),{v:D,l:N}=J.decode(2,Z);if(N.length)throw new Q("invalid signature: left bytes after parsing");return{r:q.decode(K),s:q.decode(D)}},hexFromSig($){let{_tlv:Q,_int:q}=P$,J=Q.encode(2,q.encode($.r)),G=Q.encode(2,q.encode($.s)),z=J+G;return Q.encode(48,z)}},I$=BigInt(0),n$=BigInt(1),$Q=BigInt(2),P0=BigInt(3),JJ=BigInt(4);function y$($,Q){let{BYTES:q}=$,J;if(typeof Q==="bigint")J=Q;else{let G=n("private key",Q);try{J=$.fromBytes(G)}catch(z){throw Error(`invalid private key: expected ui8a of size ${q}, got ${typeof Q}`)}}if(!$.isValidNot0(J))throw Error("invalid private key: out of range [1..N-1]");return J}function qJ($,Q={}){let q=s8("weierstrass",$,Q),{Fp:J,Fn:G}=q,z=q.CURVE,{h:Y,n:K}=z;K0(Q,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",wrapPrivateKey:"boolean"});let{endo:Z}=Q;if(Z){if(!J.is0(z.a)||typeof Z.beta!=="bigint"||!Array.isArray(Z.basises))throw Error('invalid endo: expected "beta": bigint and "basises": array')}let D=JQ(J,G);function N(){if(!J.isOdd)throw Error("compression is not supported: Field does not have .isOdd()")}function R(O,k,W){let{x:B,y:w}=k.toAffine(),v=J.toBytes(B);if(Y0(W,"isCompressed"),W){N();let P=!J.isOdd(w);return D$(QQ(P),v)}else return D$(Uint8Array.of(4),v,J.toBytes(w))}function X(O){_$(O,void 0,"Point");let{publicKey:k,publicKeyUncompressed:W}=D,B=O.length,w=O[0],v=O.subarray(1);if(B===k&&(w===2||w===3)){let P=J.fromBytes(v);if(!J.isValid(P))throw Error("bad point: is not on curve, wrong x");let _=C(P),S;try{S=J.sqrt(_)}catch(j){let M=j instanceof Error?": "+j.message:"";throw Error("bad point: is not on curve, sqrt error"+M)}N();let H=J.isOdd(S);if((w&1)===1!==H)S=J.neg(S);return{x:P,y:S}}else if(B===W&&w===4){let P=J.BYTES,_=J.fromBytes(v.subarray(0,P)),S=J.fromBytes(v.subarray(P,P*2));if(!u(_,S))throw Error("bad point: is not on curve");return{x:_,y:S}}else throw Error(`bad point: got length ${B}, expected compressed=${k} or uncompressed=${W}`)}let U=Q.toBytes||R,A=Q.fromBytes||X;function C(O){let k=J.sqr(O),W=J.mul(k,O);return J.add(J.add(W,J.mul(O,z.a)),z.b)}function u(O,k){let W=J.sqr(k),B=C(O);return J.eql(W,B)}if(!u(z.Gx,z.Gy))throw Error("bad curve params: generator point");let h=J.mul(J.pow(z.a,P0),JJ),i=J.mul(J.sqr(z.b),BigInt(27));if(J.is0(J.add(h,i)))throw Error("bad curve params: a or b");function c(O,k,W=!1){if(!J.isValid(k)||W&&J.is0(k))throw Error(`bad point coordinate ${O}`);return k}function z$(O){if(!(O instanceof g))throw Error("ProjectivePoint expected")}function a(O){if(!Z||!Z.basises)throw Error("no endo");return QJ(O,Z.basises,G.ORDER)}let Q$=$8((O,k)=>{let{X:W,Y:B,Z:w}=O;if(J.eql(w,J.ONE))return{x:W,y:B};let v=O.is0();if(k==null)k=v?J.ONE:J.inv(w);let P=J.mul(W,k),_=J.mul(B,k),S=J.mul(w,k);if(v)return{x:J.ZERO,y:J.ZERO};if(!J.eql(S,J.ONE))throw Error("invZ was invalid");return{x:P,y:_}}),K$=$8((O)=>{if(O.is0()){if(Q.allowInfinityPoint&&!J.is0(O.Y))return;throw Error("bad point: ZERO")}let{x:k,y:W}=O.toAffine();if(!J.isValid(k)||!J.isValid(W))throw Error("bad point: x or y not field elements");if(!u(k,W))throw Error("bad point: equation left != right");if(!O.isTorsionFree())throw Error("bad point: not in prime-order subgroup");return!0});function Y$(O,k,W,B,w){return W=new g(J.mul(W.X,O),W.Y,W.Z),k=U0(B,k),W=U0(w,W),k.add(W)}class g{constructor(O,k,W){this.X=c("x",O),this.Y=c("y",k,!0),this.Z=c("z",W),Object.freeze(this)}static CURVE(){return z}static fromAffine(O){let{x:k,y:W}=O||{};if(!O||!J.isValid(k)||!J.isValid(W))throw Error("invalid affine point");if(O instanceof g)throw Error("projective point not allowed");if(J.is0(k)&&J.is0(W))return g.ZERO;return new g(k,W,J.ONE)}static fromBytes(O){let k=g.fromAffine(A(_$(O,void 0,"point")));return k.assertValidity(),k}static fromHex(O){return g.fromBytes(n("pointHex",O))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(O=8,k=!0){if(W$.createCache(this,O),!k)this.multiply(P0);return this}assertValidity(){K$(this)}hasEvenY(){let{y:O}=this.toAffine();if(!J.isOdd)throw Error("Field doesn't support isOdd");return!J.isOdd(O)}equals(O){z$(O);let{X:k,Y:W,Z:B}=this,{X:w,Y:v,Z:P}=O,_=J.eql(J.mul(k,P),J.mul(w,B)),S=J.eql(J.mul(W,P),J.mul(v,B));return _&&S}negate(){return new g(this.X,J.neg(this.Y),this.Z)}double(){let{a:O,b:k}=z,W=J.mul(k,P0),{X:B,Y:w,Z:v}=this,P=J.ZERO,_=J.ZERO,S=J.ZERO,H=J.mul(B,B),b=J.mul(w,w),j=J.mul(v,v),M=J.mul(B,w);return M=J.add(M,M),S=J.mul(B,v),S=J.add(S,S),P=J.mul(O,S),_=J.mul(W,j),_=J.add(P,_),P=J.sub(b,_),_=J.add(b,_),_=J.mul(P,_),P=J.mul(M,P),S=J.mul(W,S),j=J.mul(O,j),M=J.sub(H,j),M=J.mul(O,M),M=J.add(M,S),S=J.add(H,H),H=J.add(S,H),H=J.add(H,j),H=J.mul(H,M),_=J.add(_,H),j=J.mul(w,v),j=J.add(j,j),H=J.mul(j,M),P=J.sub(P,H),S=J.mul(j,b),S=J.add(S,S),S=J.add(S,S),new g(P,_,S)}add(O){z$(O);let{X:k,Y:W,Z:B}=this,{X:w,Y:v,Z:P}=O,_=J.ZERO,S=J.ZERO,H=J.ZERO,b=z.a,j=J.mul(z.b,P0),M=J.mul(k,w),I=J.mul(W,v),T=J.mul(B,P),x=J.add(k,W),m=J.add(w,v);x=J.mul(x,m),m=J.add(M,I),x=J.sub(x,m),m=J.add(k,B);let o=J.add(w,P);return m=J.mul(m,o),o=J.add(M,T),m=J.sub(m,o),o=J.add(W,B),_=J.add(v,P),o=J.mul(o,_),_=J.add(I,T),o=J.sub(o,_),H=J.mul(b,m),_=J.mul(j,T),H=J.add(_,H),_=J.sub(I,H),H=J.add(I,H),S=J.mul(_,H),I=J.add(M,M),I=J.add(I,M),T=J.mul(b,T),m=J.mul(j,m),I=J.add(I,T),T=J.sub(M,T),T=J.mul(b,T),m=J.add(m,T),M=J.mul(I,m),S=J.add(S,M),M=J.mul(o,m),_=J.mul(x,_),_=J.sub(_,M),M=J.mul(x,I),H=J.mul(o,H),H=J.add(H,M),new g(_,S,H)}subtract(O){return this.add(O.negate())}is0(){return this.equals(g.ZERO)}multiply(O){let{endo:k}=Q;if(!G.isValidNot0(O))throw Error("invalid scalar: out of range");let W,B,w=(v)=>W$.cached(this,v,(P)=>S0(g,P));if(k){let{k1neg:v,k1:P,k2neg:_,k2:S}=a(O),{p:H,f:b}=w(P),{p:j,f:M}=w(S);B=b.add(M),W=Y$(k.beta,H,j,v,_)}else{let{p:v,f:P}=w(O);W=v,B=P}return S0(g,[W,B])[0]}multiplyUnsafe(O){let{endo:k}=Q,W=this;if(!G.isValid(O))throw Error("invalid scalar: out of range");if(O===I$||W.is0())return g.ZERO;if(O===n$)return W;if(W$.hasCache(this))return this.multiply(O);if(k){let{k1neg:B,k1:w,k2neg:v,k2:P}=a(O),{p1:_,p2:S}=r8(g,W,w,P);return Y$(k.beta,_,S,B,v)}else return W$.unsafe(W,O)}multiplyAndAddUnsafe(O,k,W){let B=this.multiplyUnsafe(k).add(O.multiplyUnsafe(W));return B.is0()?void 0:B}toAffine(O){return Q$(this,O)}isTorsionFree(){let{isTorsionFree:O}=Q;if(Y===n$)return!0;if(O)return O(g,this);return W$.unsafe(this,K).is0()}clearCofactor(){let{clearCofactor:O}=Q;if(Y===n$)return this;if(O)return O(g,this);return this.multiplyUnsafe(Y)}isSmallOrder(){return this.multiplyUnsafe(Y).is0()}toBytes(O=!0){return Y0(O,"isCompressed"),this.assertValidity(),U(g,this,O)}toHex(O=!0){return C$(this.toBytes(O))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(O=!0){return this.toBytes(O)}_setWindowSize(O){this.precompute(O)}static normalizeZ(O){return S0(g,O)}static msm(O,k){return n8(g,G,O,k)}static fromPrivateKey(O){return g.BASE.multiply(y$(G,O))}}g.BASE=new g(z.Gx,z.Gy,J.ONE),g.ZERO=new g(J.ZERO,J.ONE,J.ZERO),g.Fp=J,g.Fn=G;let O$=G.BITS,W$=new X8(g,Q.endo?Math.ceil(O$/2):O$);return g.BASE.precompute(8),g}function QQ($){return Uint8Array.of($?2:3)}function JQ($,Q){return{secretKey:Q.BYTES,publicKey:1+$.BYTES,publicKeyUncompressed:1+2*$.BYTES,publicKeyHasPrefix:!0,signature:2*Q.BYTES}}function GJ($,Q={}){let{Fn:q}=$,J=Q.randomBytes||c$,G=Object.assign(JQ($.Fp,q),{seed:q8(q.ORDER)});function z(U){try{return!!y$(q,U)}catch(A){return!1}}function Y(U,A){let{publicKey:C,publicKeyUncompressed:u}=G;try{let h=U.length;if(A===!0&&h!==C)return!1;if(A===!1&&h!==u)return!1;return!!$.fromBytes(U)}catch(h){return!1}}function K(U=J(G.seed)){return k0(_$(U,G.seed,"seed"),q.ORDER)}function Z(U,A=!0){return $.BASE.multiply(y$(q,U)).toBytes(A)}function D(U){let A=K(U);return{secretKey:A,publicKey:Z(A)}}function N(U){if(typeof U==="bigint")return!1;if(U instanceof $)return!0;let{secretKey:A,publicKey:C,publicKeyUncompressed:u}=G;if(q.allowedLengths||A===C)return;let h=n("key",U).length;return h===C||h===u}function R(U,A,C=!0){if(N(U)===!0)throw Error("first arg must be private key");if(N(A)===!1)throw Error("second arg must be public key");let u=y$(q,U);return $.fromHex(A).multiply(u).toBytes(C)}return Object.freeze({getPublicKey:Z,getSharedSecret:R,keygen:D,Point:$,utils:{isValidSecretKey:z,isValidPublicKey:Y,randomSecretKey:K,isValidPrivateKey:z,randomPrivateKey:K,normPrivateKeyToScalar:(U)=>y$(q,U),precompute(U=8,A=$.BASE){return A.precompute(U,!1)}},lengths:G})}function zJ($,Q,q={}){x0(Q),K0(q,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});let J=q.randomBytes||c$,G=q.hmac||((W,...B)=>a0(Q,W,D$(...B))),{Fp:z,Fn:Y}=$,{ORDER:K,BITS:Z}=Y,{keygen:D,getPublicKey:N,getSharedSecret:R,utils:X,lengths:U}=GJ($,q),A={prehash:!1,lowS:typeof q.lowS==="boolean"?q.lowS:!1,format:void 0,extraEntropy:!1},C="compact";function u(W){let B=K>>n$;return W>B}function h(W,B){if(!Y.isValidNot0(B))throw Error(`invalid signature ${W}: out of range 1..Point.Fn.ORDER`);return B}function i(W,B){K8(B);let w=U.signature,v=B==="compact"?w:B==="recovered"?w+1:void 0;return _$(W,v,`${B} signature`)}class c{constructor(W,B,w){if(this.r=h("r",W),this.s=h("s",B),w!=null)this.recovery=w;Object.freeze(this)}static fromBytes(W,B=C){i(W,B);let w;if(B==="der"){let{r:S,s:H}=P$.toSig(_$(W));return new c(S,H)}if(B==="recovered")w=W[0],B="compact",W=W.subarray(1);let v=Y.BYTES,P=W.subarray(0,v),_=W.subarray(v,v*2);return new c(Y.fromBytes(P),Y.fromBytes(_),w)}static fromHex(W,B){return this.fromBytes(h$(W),B)}addRecoveryBit(W){return new c(this.r,this.s,W)}recoverPublicKey(W){let B=z.ORDER,{r:w,s:v,recovery:P}=this;if(P==null||![0,1,2,3].includes(P))throw Error("recovery id invalid");if(K*$Q<B&&P>1)throw Error("recovery id is ambiguous for h>1 curve");let S=P===2||P===3?w+K:w;if(!z.isValid(S))throw Error("recovery id 2 or 3 invalid");let H=z.toBytes(S),b=$.fromBytes(D$(QQ((P&1)===0),H)),j=Y.inv(S),M=a(n("msgHash",W)),I=Y.create(-M*j),T=Y.create(v*j),x=$.BASE.multiplyUnsafe(I).add(b.multiplyUnsafe(T));if(x.is0())throw Error("point at infinify");return x.assertValidity(),x}hasHighS(){return u(this.s)}toBytes(W=C){if(K8(W),W==="der")return h$(P$.hexFromSig(this));let B=Y.toBytes(this.r),w=Y.toBytes(this.s);if(W==="recovered"){if(this.recovery==null)throw Error("recovery bit must be present");return D$(Uint8Array.of(this.recovery),B,w)}return D$(B,w)}toHex(W){return C$(this.toBytes(W))}assertValidity(){}static fromCompact(W){return c.fromBytes(n("sig",W),"compact")}static fromDER(W){return c.fromBytes(n("sig",W),"der")}normalizeS(){return this.hasHighS()?new c(this.r,Y.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return C$(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return C$(this.toBytes("compact"))}}let z$=q.bits2int||function(B){if(B.length>8192)throw Error("input is too large");let w=S$(B),v=B.length*8-Z;return v>0?w>>BigInt(v):w},a=q.bits2int_modN||function(B){return Y.create(z$(B))},Q$=b$(Z);function K$(W){return v8("num < 2^"+Z,W,I$,Q$),Y.toBytes(W)}function Y$(W,B){return _$(W,void 0,"message"),B?_$(Q(W),void 0,"prehashed message"):W}function g(W,B,w){if(["recovered","canonical"].some((T)=>(T in w)))throw Error("sign() legacy options not supported");let{lowS:v,prehash:P,extraEntropy:_}=Z8(w,A);W=Y$(W,P);let S=a(W),H=y$(Y,B),b=[K$(H),K$(S)];if(_!=null&&_!==!1){let T=_===!0?J(U.secretKey):_;b.push(n("extraEntropy",T))}let j=D$(...b),M=S;function I(T){let x=z$(T);if(!Y.isValidNot0(x))return;let m=Y.inv(x),o=$.BASE.multiply(x).toAffine(),J$=Y.create(o.x);if(J$===I$)return;let U$=Y.create(m*Y.create(M+J$*H));if(U$===I$)return;let f=(o.x===J$?0:2)|Number(o.y&n$),G$=U$;if(v&&u(U$))G$=Y.neg(U$),f^=1;return new c(J$,G$,f)}return{seed:j,k2sig:I}}function O$(W,B,w={}){W=n("message",W);let{seed:v,k2sig:P}=g(W,B,w);return _8(Q.outputLen,Y.BYTES,G)(v,P)}function W$(W){let B=void 0,w=typeof W==="string"||F$(W),v=!w&&W!==null&&typeof W==="object"&&typeof W.r==="bigint"&&typeof W.s==="bigint";if(!w&&!v)throw Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(v)B=new c(W.r,W.s);else if(w){try{B=c.fromBytes(n("sig",W),"der")}catch(P){if(!(P instanceof P$.Err))throw P}if(!B)try{B=c.fromBytes(n("sig",W),"compact")}catch(P){return!1}}if(!B)return!1;return B}function O(W,B,w,v={}){let{lowS:P,prehash:_,format:S}=Z8(v,A);if(w=n("publicKey",w),B=Y$(n("message",B),_),"strict"in v)throw Error("options.strict was renamed to lowS");let H=S===void 0?W$(W):c.fromBytes(n("sig",W),S);if(H===!1)return!1;try{let b=$.fromBytes(w);if(P&&H.hasHighS())return!1;let{r:j,s:M}=H,I=a(B),T=Y.inv(M),x=Y.create(I*T),m=Y.create(j*T),o=$.BASE.multiplyUnsafe(x).add(b.multiplyUnsafe(m));if(o.is0())return!1;return Y.create(o.x)===j}catch(b){return!1}}function k(W,B,w={}){let{prehash:v}=Z8(w,A);return B=Y$(B,v),c.fromBytes(W,"recovered").recoverPublicKey(B).toBytes()}return Object.freeze({keygen:D,getPublicKey:N,getSharedSecret:R,utils:X,lengths:U,Point:$,sign:O$,verify:O,recoverPublicKey:k,Signature:c,hash:Q})}function YJ($){let Q={a:$.a,b:$.b,p:$.Fp.ORDER,n:$.n,h:$.h,Gx:$.Gx,Gy:$.Gy},q=$.Fp,J=$.allowedPrivateKeyLengths?Array.from(new Set($.allowedPrivateKeyLengths.map((Y)=>Math.ceil(Y/2)))):void 0,G=f$(Q.n,{BITS:$.nBitLength,allowedLengths:J,modFromBytes:$.wrapPrivateKey}),z={Fp:q,Fn:G,allowInfinityPoint:$.allowInfinityPoint,endo:$.endo,isTorsionFree:$.isTorsionFree,clearCofactor:$.clearCofactor,fromBytes:$.fromBytes,toBytes:$.toBytes};return{CURVE:Q,curveOpts:z}}function XJ($){let{CURVE:Q,curveOpts:q}=YJ($),J={hmac:$.hmac,randomBytes:$.randomBytes,lowS:$.lowS,bits2int:$.bits2int,bits2int_modN:$.bits2int_modN};return{CURVE:Q,curveOpts:q,hash:$.hash,ecdsaOpts:J}}function ZJ($,Q){let q=Q.Point;return Object.assign({},Q,{ProjectivePoint:q,CURVE:Object.assign({},$,C0(q.Fn.ORDER,q.Fn.BITS))})}function qQ($){let{CURVE:Q,curveOpts:q,hash:J,ecdsaOpts:G}=XJ($),z=qJ(Q,q),Y=zJ(z,J,G);return ZJ($,Y)}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function GQ($,Q){let q=(J)=>qQ({...$,hash:J});return{...q(Q),create:q}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var s$={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},KJ={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},UJ=BigInt(0),zQ=BigInt(1),U8=BigInt(2);function jJ($){let Q=s$.p,q=BigInt(3),J=BigInt(6),G=BigInt(11),z=BigInt(22),Y=BigInt(23),K=BigInt(44),Z=BigInt(88),D=$*$*$%Q,N=D*D*$%Q,R=N$(N,q,Q)*N%Q,X=N$(R,q,Q)*N%Q,U=N$(X,U8,Q)*D%Q,A=N$(U,G,Q)*U%Q,C=N$(A,z,Q)*A%Q,u=N$(C,K,Q)*C%Q,h=N$(u,Z,Q)*u%Q,i=N$(h,K,Q)*C%Q,c=N$(i,q,Q)*N%Q,z$=N$(c,Y,Q)*A%Q,a=N$(z$,J,Q)*D%Q,Q$=N$(a,U8,Q);if(!I0.eql(I0.sqr(Q$),$))throw Error("Cannot find square root");return Q$}var I0=f$(s$.p,{sqrt:jJ}),ZQ=GQ({...s$,Fp:I0,lowS:!0,endo:KJ},T0),YQ={};function E0($,...Q){let q=YQ[$];if(q===void 0){let J=T0(R0($));q=D$(J,J),YQ[$]=q}return T0(D$(q,...Q))}var W8=($)=>$.toBytes(!0).slice(1),t$=(()=>ZQ.Point)(),D8=($)=>$%U8===UJ;function j8($){let{Fn:Q,BASE:q}=t$,J=y$(Q,$),G=q.multiply(J);return{scalar:D8(G.y)?J:Q.neg(J),bytes:W8(G)}}function KQ($){let Q=I0;if(!Q.isValidNot0($))throw Error("invalid x: Fail if x ≥ p");let q=Q.create($*$),J=Q.create(q*$+BigInt(7)),G=Q.sqrt(J);if(!D8(G))G=Q.neg(G);let z=t$.fromAffine({x:$,y:G});return z.assertValidity(),z}var j0=S$;function UQ(...$){return t$.Fn.create(j0(E0("BIP0340/challenge",...$)))}function XQ($){return j8($).bytes}function WJ($,Q,q=c$(32)){let{Fn:J}=t$,G=n("message",$),{bytes:z,scalar:Y}=j8(Q),K=n("auxRand",q,32),Z=J.toBytes(Y^j0(E0("BIP0340/aux",K))),D=E0("BIP0340/nonce",Z,z,G),{bytes:N,scalar:R}=j8(D),X=UQ(N,z,G),U=new Uint8Array(64);if(U.set(N,0),U.set(J.toBytes(J.create(R+X*Y)),32),!jQ(U,G,z))throw Error("sign: Invalid signature produced");return U}function jQ($,Q,q){let{Fn:J,BASE:G}=t$,z=n("signature",$,64),Y=n("message",Q),K=n("publicKey",q,32);try{let Z=KQ(j0(K)),D=j0(z.subarray(0,32));if(!Z0(D,zQ,s$.p))return!1;let N=j0(z.subarray(32,64));if(!Z0(N,zQ,s$.n))return!1;let R=UQ(J.toBytes(D),W8(Z),Y),X=G.multiplyUnsafe(N).add(Z.multiplyUnsafe(J.neg(R))),{x:U,y:A}=X.toAffine();if(X.is0()||!D8(A)||U!==D)return!1;return!0}catch(Z){return!1}}var v0=(()=>{let q=(G=c$(48))=>{return k0(G,s$.n)};ZQ.utils.randomSecretKey;function J(G){let z=q(G);return{secretKey:z,publicKey:XQ(z)}}return{keygen:J,getPublicKey:XQ,sign:WJ,verify:jQ,Point:t$,utils:{randomSecretKey:q,randomPrivateKey:q,taggedHash:E0,lift_x:KQ,pointToBytes:W8,numberToBytesBE:a$,bytesToNumberBE:S$,mod:V$},lengths:{secretKey:32,publicKey:32,publicKeyHasPrefix:!1,signature:64,seed:48}}})();var DJ=new TextEncoder,MJ=new TextDecoder,T$=($)=>DJ.encode($),p$=($)=>MJ.decode($),_0=($)=>Array.from($,(Q)=>Q.toString(16).padStart(2,"0")).join(""),H$=JSON.stringify,o$=JSON.parse,b0=($,Q=Number.MAX_SAFE_INTEGER)=>$.split("").reduce((q,J)=>q+J.charCodeAt(0),0)%Q;var M8="AES-GCM",VJ={},WQ="$",DQ=",",NJ=($)=>{let Q=new Uint8Array($),q=32768,J="";for(let G=0;G<Q.length;G+=32768)J+=String.fromCharCode(...Q.subarray(G,G+32768));return btoa(J)},HJ=($)=>Uint8Array.from(atob($),(Q)=>Q.charCodeAt(0)).buffer,W0=($)=>VJ[$]??=crypto.subtle.digest("SHA-1",T$($)).then((Q)=>{let q=new Uint8Array(Q),J="";for(let G of q)J+=G.toString(36);return J}),MQ=async($,Q,q)=>{let J=await crypto.subtle.digest("SHA-256",T$(`${$}:${Q}:${q}`));return crypto.subtle.importKey("raw",J,{name:M8},!1,["encrypt","decrypt"])},VQ=async($,Q)=>{let q=crypto.getRandomValues(new Uint8Array(12)),J=await $,G=await crypto.subtle.encrypt({name:M8,iv:q},J,T$(Q));return`${q.join(DQ)}${WQ}${NJ(G)}`},NQ=async($,Q)=>{let[q,J]=Q.split(WQ);if(!q||!J)throw Error("Invalid encrypted payload format");let G=Uint8Array.from(q.split(DQ),Number),z=await $,Y=await crypto.subtle.decrypt({name:M8,iv:G},z,HJ(J));return p$(Y)};var M$="GenosRTC",$0=($,Q)=>Array.from({length:$},Q);var e$=($)=>Array.from(crypto.getRandomValues(new Uint8Array($)),(Q)=>"0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"[Q%62]).join(""),p=typeof sessionStorage<"u"?sessionStorage.__genosrtcId??=e$(20):e$(20),E$=Promise.all.bind(Promise),HQ=typeof window<"u",{entries:OQ,fromEntries:f0,keys:y9}=Object,V8=()=>{},R$=($)=>Error(`GenosRTC: ${$}`),D0=(...$)=>$.join("@"),BQ=($,Q)=>{let q=[...$],J=q.length,G=()=>{let z=Math.sin(Q++)*1e4;return z-Math.floor(z)};while(J){let z=Math.floor(G()*J--);[q[J],q[z]]=[q[z],q[J]]}return q};var OJ=5000,xQ="icegatheringstatechange",AQ="offer",BJ="answer",xJ=[...$0(3,($,Q)=>`stun:stun${Q||""}.l.google.com:19302`),"stun:stun.cloudflare.com:3478"].map(($)=>({urls:$})),N8=($,{rtcConfig:Q,rtcPolyfill:q,turnConfig:J})=>{let G=new(q||RTCPeerConnection)({iceServers:[...xJ,...J||[]],...Q}),z={},Y=!1,K=!1,Z,D=(X)=>Object.assign(X,{binaryType:"arraybuffer",bufferedAmountLowThreshold:65535,onmessage:(U)=>z.data?.(U.data),onopen:()=>z.connect?.(),onclose:()=>z.close?.(),onerror:(U)=>!U?.error?.message?.includes("User-Initiated Abort")&&z.error?.(U)}),N=()=>Promise.race([new Promise((X)=>{let U=()=>{if(G.iceGatheringState==="complete")G.removeEventListener(xQ,U),X()};G.addEventListener(xQ,U),U()}),new Promise((X)=>setTimeout(X,OJ))]).then(()=>({type:G.localDescription.type,sdp:G.localDescription.sdp.replace(/a=ice-options:trickle\s\n/g,"")}));if($?D(Z=G.createDataChannel("data")):G.ondatachannel=({channel:X})=>D(Z=X),G.onnegotiationneeded=async()=>{try{Y=!0,await G.setLocalDescription(),z.signal?.(await N())}catch(X){z.error?.(X)}finally{Y=!1}},G.onconnectionstatechange=()=>{if(["disconnected","failed","closed"].includes(G.connectionState))z.close?.()},G.ontrack=(X)=>{z.track?.(X.track,X.streams[0]),z.stream?.(X.streams[0])},G.onremovestream=(X)=>z.stream?.(X.stream),$&&!G.canTrickleIceCandidates)G.onnegotiationneeded();let R=()=>G.getSenders();return{created:Date.now(),connection:G,get channel(){return Z},get isDead(){return G.connectionState==="closed"},async signal(X){if(Z?.readyState==="open"&&!X.sdp?.includes("a=rtpmap"))return;try{if(X.type===AQ){if(Y||G.signalingState!=="stable"&&!K){if($)return;await E$([G.setLocalDescription({type:"rollback"}),G.setRemoteDescription(X)])}else await G.setRemoteDescription(X);await G.setLocalDescription();let U=await N();return z.signal?.(U),U}if(X.type===BJ){K=!0;try{await G.setRemoteDescription(X)}finally{K=!1}}}catch(U){z.error?.(U)}},sendData:(X)=>{if(Z?.readyState==="open")Z.send(X)},destroy:()=>{Z?.close(),G.close(),Y=K=!1},setHandlers:(X)=>Object.assign(z,X),offerPromise:$?new Promise((X)=>z.signal=(U)=>U.type===AQ&&X(U)):Promise.resolve(),addStream:(X)=>X.getTracks().forEach((U)=>G.addTrack(U,X)),removeStream:(X)=>R().filter((U)=>X.getTracks().includes(U.track)).forEach((U)=>G.removeTrack(U)),addTrack:(X,U)=>G.addTrack(X,U),removeTrack:(X)=>{let U=R().find((A)=>A.track===X);if(U)G.removeTrack(U)},replaceTrack:(X,U)=>R().find((A)=>A.track===X)?.replaceTrack(U)}};var AJ=Object.getPrototypeOf(Uint8Array),g0=12,LQ=0,u0=LQ+g0,F0=u0+1,V0=F0+1,N0=V0+1,M0=16384-N0,y0=255,H8="bufferedamountlow",Q0=($)=>`@_${$}`,RQ=Q0("ping"),O8=100,RJ=3,TJ=200,LJ=512,TQ=($,Q)=>new Response(new Blob([$]).stream().pipeThrough(new Q("deflate"))).arrayBuffer().then((q)=>new Uint8Array(q)),wQ=($,Q,q,J,G)=>{let z=new Map,Y=new Map,K=new Map,Z={},D={},N={},R={},X=new Map,U=new Map,A=Promise.resolve(),C=(j,M)=>{if(!X.has(j))X.set(j,new Set);X.get(j).add(M)},u=(j,M)=>X.get(j)?.delete(M),h=(j,...M)=>X.get(j)?.forEach((I)=>I(...M)),i=(j,M)=>{let I=j?Array.isArray(j)?j:[j]:z.keys();return Array.from(I,(T)=>{let x=z.get(T);if(!x)return console.warn(`${M$}: no peer with id ${T}`),null;return M(T,x)}).filter(Boolean)},c=(j)=>{if(!z.has(j))return;z.delete(j),U.delete(j),H.delete(j),delete Z[j],delete D[j],delete N[j],delete R[j],h("peer:leave",j),Q(j)},z$=(j)=>new Promise((M,I)=>{let T=setTimeout(()=>{j.removeEventListener(H8,x),I(Error(`${M$}: bufferLow timeout`))},5000);function x(){clearTimeout(T),j.removeEventListener(H8,x),M()}j.addEventListener(H8,x)}),a=(j)=>{if(K.has(j))return K.get(j);if(!j)throw R$("action type is required");let M=T$(j);if(M.byteLength>g0)throw R$(`❌ "${j}" exceeds ${g0} bytes. Use a shorter name.`);let I=new Uint8Array(g0).map((f,G$)=>M[G$]||0),T=0,x=new Map([["message",new Set],["progress",new Set]]),m=(f,G$)=>x.get(f)?.add(G$),o=(f,G$)=>x.get(f)?.delete(G$),J$=async(f,G$,e,V)=>{if(e&&typeof e!=="object")throw R$("meta must be object");if(f===void 0)throw R$("data cannot be undefined");let L=f instanceof Blob,E=L||f instanceof ArrayBuffer||f instanceof AJ,F=typeof f!=="string";if(e&&!E)throw R$("meta only allowed with binary");let s=E?new Uint8Array(L?await f.arrayBuffer():f):T$(F?H$(f):f),l=0;if(!E&&s.byteLength>=LJ){let $$=await TQ(s,CompressionStream);if($$.byteLength<s.byteLength)s=$$,l=1}let d=e?T$(H$(e)):null,t=Math.ceil(s.byteLength/M0)+(e?1:0)||1;if(t>O8)throw R$(`Message too large, exceeds max chunks ${O8}`);let L$=$0(t,($$,X$)=>{let y=X$===t-1,r=e&&X$===0,B$=r?d:s.subarray(e?(X$-1)*M0:X$*M0,e?X$*M0:(X$+1)*M0),q$=new Uint8Array(N0+B$.byteLength);return q$.set(I),q$.set([T],u0),q$.set([y|r<<1|E<<2|F<<3|l<<4],F0),q$.set([Math.round((X$+1)/t*y0)],V0),q$.set(B$,N0),q$});return T=T+1&y0,E$(i(G$,async($$,X$)=>{let{channel:y}=X$;for(let r=0;r<t;r++){let B$=0;while(y.bufferedAmount>y.bufferedAmountLowThreshold){if(B$++>RJ)throw R$(`${M$}: send buffer full, max retries reached for peer ${$$}`);try{await z$(y)}catch(q$){console.warn(q$.message),await new Promise((R8)=>setTimeout(R8,TJ))}}if(!z.has($$))break;X$.sendData(L$[r]),V?.(L$[r][V0]/y0,$$,e)}}))};Y.set(j,{listeners:x,send:J$});let U$={send:J$,on:m,off:o};return K.set(j,U$),U$},Q$=(j,M)=>{try{U.set(j,Date.now()),H.delete(j);let I=new Uint8Array(M),T=p$(I.subarray(LQ,u0)).replace(/\x00/g,"");if(!Y.has(T))return console.warn(`${M$}: unregistered type (${T})`);if(T===RQ){g("",j).catch(()=>{});return}let[x]=I.subarray(u0,F0),[m]=I.subarray(F0,V0),[o]=I.subarray(V0,N0),J$=I.subarray(N0),U$=Boolean(m&1),f=Boolean(m&2),G$=Boolean(m&4),e=Boolean(m&8),V=Boolean(m&16),L=Y.get(T),E=(Z[j]||={})[T]||={};if(E[x]?.chunks?.length>O8){console.warn(`${M$}: peer ${j} sent too many chunks for nonce ${x}, ignoring.`);return}let F=E[x]||={chunks:[]};if(f)try{F.meta=o$(p$(J$))}catch{console.warn(`${M$}: failed to parse meta from peer ${j} for type ${T}`);return}else F.chunks.push(J$);if(L.listeners.get("progress").forEach((l)=>{try{l(o/y0,j,F.meta)}catch(d){console.error(d)}}),!U$)return;let s=new Uint8Array(F.chunks.reduce((l,d)=>l+d.byteLength,0));F.chunks.reduce((l,d)=>(s.set(d,l),l+d.byteLength),0),delete E[x],A=A.then(async()=>{let l=V?await TQ(s,DecompressionStream):s,d;if(G$)d=l;else if(e)try{d=o$(p$(l))}catch{console.warn(`${M$}: failed to parse JSON message data from peer ${j} for type ${T}`);return}else d=p$(l);L.listeners.get("message").forEach((t)=>{try{t(d,j,F.meta)}catch(L$){console.error(L$)}})}).catch((l)=>console.error(`${M$}: dispatch error from peer ${j}:`,l))}catch(I){console.error(`${M$}: error handling data from peer ${j}:`,I)}},K$=async()=>{try{await v(""),await new Promise((j)=>setTimeout(j,99))}catch(j){console.warn(`${M$}: error sending leave`,j)}for(let[j,M]of z){try{M.destroy()}catch{}z.delete(j)}clearInterval(b),q()},{send:Y$}=a(RQ),{send:g,on:O$}=a(Q0("pong")),{send:W$,on:O}=a(Q0("signal")),{send:k,on:W}=a(Q0("stream")),{send:B,on:w}=a(Q0("track")),{send:v,on:P}=a(Q0("leave"));$((j,M)=>{let I=z.get(M);if(I===j)return;if(I){let T=()=>{};I.setHandlers({data:T,stream:T,track:T,signal:T,close:T,error:T})}z.set(M,j),U.set(M,Date.now()),H.delete(M),j.setHandlers({data:(T)=>Q$(M,T),stream:(T)=>{h("stream:add",T,M,N[M]),delete N[M]},track:(T,x)=>{h("track:add",T,x,M,R[M]),delete R[M]},signal:(T)=>W$(T,M),close:()=>c(M),error:(T)=>{console.error(`${M$}: peer error for ${M}`,T),c(M)}}),h("peer:join",M,J?.(M))}),G?.((j,M,I)=>h(I?"peer:seen":"peer:lost",j,M)),O$("message",(j,M)=>{D[M]?.(),delete D[M]}),O("message",(j,M)=>z.get(M)?.signal(j)),W("message",(j,M)=>N[M]=j),w("message",(j,M)=>R[M]=j),P("message",(j,M)=>c(M));let _=1e4,S=20000,H=new Map,b=setInterval(()=>{let j=Date.now();for(let[M,I]of z){if(j-(U.get(M)??j)<=_)continue;let x=H.get(M);if(x===void 0)H.set(M,j),Y$("",M).catch(()=>{});else if(j-x>S){H.delete(M);try{I.destroy()}catch{}c(M)}}},5000);if(HQ)addEventListener("beforeunload",K$);return{on:C,off:u,channel:a,leave:K$,ping:async(j)=>{if(!j)throw R$("ping() requires target peer ID");let M=Date.now();return Y$("",j),await new Promise((I)=>D[j]=I),Date.now()-M},getPeers:()=>f0(Array.from(z,([j,M])=>[j,M.connection])),addStream:(j,M,I)=>i(M,async(T,x)=>{if(I)await k(I,T);x.addStream(j)}),removeStream:(j,M)=>i(M,(I,T)=>T.removeStream(j)),addTrack:(j,M,I,T)=>i(I,async(x,m)=>{if(T)await B(T,x);m.addTrack(j,M)}),removeTrack:(j,M)=>i(M,(I,T)=>T.removeTrack(j)),replaceTrack:(j,M,I,T)=>i(I,async(x,m)=>{if(T)await B(T,x);m.replaceTrack(j,M)})}};var wJ=5,CJ=10,kJ=2500,m0=57333,CQ=({init:$,subscribe:Q,announce:q,bye:J})=>{let G={},z=!1,Y,K;return(Z,D,N)=>{let{appId:R}=Z;if(G[R]?.[D])return G[R][D];if(!Z||!D||!R&&!Z.firebaseApp)throw R$(!Z?"config required":!D?"roomId required":"appId missing");let X=V8,U=V8;if(!z){let H=$(Z);K=$0(wJ,()=>{try{return N8(!0,Z)}catch{return null}}).filter(Boolean),Y=Array.isArray(H)?H:[H];let b=setInterval(()=>{K=K.filter((j)=>{let M=Date.now()-j.created<m0;if(!M)j.destroy();return M})},m0);G.offerCleanupTimer||=b,z=!0}let A={},C={},u=new Map,h=new Map,i=new Map,c={},z$=D0(M$,R,D),a=W0(z$),Q$=W0(D0(z$,p)),K$=MQ(Z.password||"",R,D),Y$=(H)=>async(b)=>({type:b.type,sdp:await H(K$,b.sdp)}),g=Y$(NQ),O$=Y$(VQ),W$=(H)=>{return setTimeout(()=>{if(!H.isDead&&!Object.values(C).includes(H))H.destroy()},m0),H},O=(H)=>{try{return W$(N8(H,Z))}catch{return null}},k=(H,b)=>{if(C[b]===H)return;H.connectedAt=Date.now(),C[b]?.destroy(),C[b]=H,X(H,b),A[b]?.forEach((j)=>j!==H&&j.destroy()),delete A[b]},W=(H,b)=>{if(C[b]===H)delete C[b]},B=(H)=>async(b,j,M)=>{let[I,T]=await E$([a,Q$]);if(b!==I&&b!==T)return;let{peerId:x,offer:m,answer:o,type:J$,bye:U$}=typeof j==="string"?o$(j):j;if(U$){if(x&&x!==p)h.delete(x),U(x,null,!1),i.set(x,Date.now()),delete c[x];return}if(x&&x!==p)U(x,J$,!0),h.set(x,Date.now()),i.delete(x);if(J$&&x)c[x]=J$;if(x===p)return;if(C[x]){let f=C[x].channel?.readyState==="open";if(!m||f||Date.now()-C[x].connectedAt<2000)return;C[x].destroy(),delete C[x]}if(Z.admit&&!Z.admit(x))return;if(m){if(A[x]?.[H]&&p>x)return;let f=O(!1);if(!f)return;f.setHandlers({connect:()=>k(f,x),close:()=>W(f,x)});try{let G$=await g(m);if(f.isDead)return;let[e,V]=await E$([W0(D0(z$,x)),f.signal(G$).then(O$)]);M(e,H$({peerId:p,answer:V,...Z.type&&{type:Z.type}}))}catch{N?.({error:"decryption failed (offer)",appId:R,peerId:x,roomId:D})}}else if(o){let f=A[x]?.[H];if(!f||f.isDead)return;f.setHandlers({connect:()=>k(f,x),close:()=>W(f,x)});try{f.signal(await g(o))}catch{N?.({error:"decryption failed (answer)",appId:R,peerId:x,roomId:D})}}else{let f=A[x]||=[];if(f.forEach((L,E)=>{if(L&&(L.isDead||Date.now()-(L.dialedAt??L.created)>m0)){if(L.isDead)u.set(x,Date.now()+30000);L.destroy(),delete f[E]}}),f[H]||f.filter(Boolean).length>=2||u.get(x)>Date.now())return;if(Object.values(A).reduce((L,E)=>L+E.filter((F)=>F&&!F.isDead).length,0)>=CJ)return;let e=K.pop(),V=e?W$(e):O(!0);if(!V){u.set(x,Date.now()+30000);return}V.dialedAt=Date.now(),f[H]=V;try{let[L,{offer:E}]=await E$([W0(D0(z$,x)),V.offerPromise.then(O$).then((F)=>({offer:F}))]);V.setHandlers({connect:()=>k(V,x),close:()=>W(V,x)}),M(L,H$({peerId:p,offer:E,peer:V,...Z.type&&{type:Z.type}}))}catch{if(f[H]===V)delete f[H];V.destroy()}}},w=[],v=[],P=[],_=()=>P.forEach(({relay:H,rootTopic:b})=>J?.(H,b));Y.forEach(async(H,b)=>{let j=await H;if(!j)return;let[M,I]=await E$([a,Q$]);v[b]=Q(j,M,I,B(b)),P.push({relay:j,rootTopic:M});let T=async()=>{let x=await q(j,M,I);w[b]=setTimeout(T,typeof x==="number"?x:kJ)};T()}),G[R]||={};let S=wQ((H)=>X=H,(H)=>delete C[H],()=>S.onCleanup?.(),(H)=>c[H],(H)=>U=H);if(typeof window<"u")window.addEventListener("pagehide",_);return S.onCleanup=()=>{if(_(),typeof window<"u")window.removeEventListener("pagehide",_);if(delete G[R][D],w.forEach(clearTimeout),v.forEach((H)=>H?.()),Object.keys(G).length===0)clearInterval(G.offerCleanupTimer),delete G.offerCleanupTimer},S._census=()=>{for(let b of Object.keys(C))h.set(b,Date.now());let H=Date.now()-120000;for(let[b,j]of h)if(j<H)h.delete(b);return[...h.keys()]},S._gone=()=>{let H=Date.now()-60000;for(let[b,j]of i)if(j<H)i.delete(b);return[...i.keys()]},G[R][D]=S}};var kQ=3333,SJ=30000,H0={},SQ={},PQ=($,Q)=>{let q={},J=null;q.reopenHandlers=new Set;let G=()=>{if(J)clearTimeout(J),J=null;if(q.socket)q.socket.onclose=null,q.socket.close();let z=new WebSocket($);z.onclose=()=>{H0[$]??=kQ,J=setTimeout(G,H0[$]),H0[$]=Math.min(H0[$]*2,SJ)},z.onmessage=(Y)=>Q(Y.data),q.socket=z,q.url=z.url,q.ready=new Promise((Y)=>{z.onopen=()=>{H0[$]=kQ,Y(q),q.reopenHandlers.forEach((K)=>K())}}),q.send=(Y)=>{if(z.readyState===1)z.send(Y)}};return q.forceReconnect=G,G(),SQ[$]=q,q};if(typeof window<"u"){let $=(Q)=>{log.info("⚡ [GenosRTC] Network event detected. Forcing reconnection…"),Object.values(SQ).forEach((q)=>{if(q.socket&&q.socket.readyState!==WebSocket.OPEN&&(Q||q.socket.readyState!==WebSocket.CONNECTING))q.forceReconnect()})};window.addEventListener("online",()=>{log.info("✅ Reconnected to the network."),$(!0)}),window.addEventListener("offline",async()=>{log.info("❌ Disconnected from the network.")}),document.addEventListener("visibilitychange",()=>{if(document.visibilityState==="visible")$()})}var IQ=($)=>()=>f0(OQ($).map(([Q,q])=>[Q,q.socket])),EQ=($,Q,q,J)=>($.relayUrls??(J?BQ(Q,b0($.appId)):Q)).slice(0,$.relayUrls?.length??$.relayRedundancy??q);var vQ=["wss://relay.primal.net","wss://relay.snort.social","wss://nostr.oxtr.dev","wss://nostr.vulpem.com","wss://relay.nostr.net","wss://nostr.sathoarder.com","wss://nostr.data.haus","wss://relay.mostr.pub"];var J0={},IJ=10,fQ="x",yQ="EVENT",EJ=/pow:\s*(\d+)\s*bits needed\.?/i,h0=new Set,gQ=v0.utils.randomSecretKey(),vJ=_0(v0.getPublicKey(gQ)),x8={},O0={},_J={},uQ=()=>Math.floor(Date.now()/1000),FQ=($)=>_J[$]??=b0($,1e4)+20000,B0=($)=>$.replace(/\/$/,""),bJ=($,Q)=>{let[q,J,G,z]=o$(Q);if(q===yQ)return O0[J]?.(x8[J],G.content);if(q==="NOTICE"||q==="OK"&&!G){if(+((q==="NOTICE"?J:z).match(EJ)?.[1]??0)>0){let K=B0($);h0.add(K),J0[K]?.close?.(),delete J0[K]}}},fJ=($)=>{let Q=B0($);if(J0[Q])return J0[Q];let q=PQ(Q,(J)=>bJ(Q,J));return J0[Q]=q},B8=async($,Q)=>{let q={kind:FQ($),content:Q,pubkey:vJ,created_at:uQ(),tags:[[fQ,$]]},J=T$(H$([0,q.pubkey,q.created_at,q.kind,q.tags,q.content])),G=new Uint8Array(await crypto.subtle.digest("SHA-256",J)),z=v0.sign(G,gQ);return H$([yQ,{...q,id:_0(G),sig:_0(z)}])},_Q=($,Q)=>{return x8[$]=Q,H$(["REQ",$,{kinds:[FQ(Q)],since:uQ(),["#"+fQ]:[Q]}])},bQ=($)=>{return delete x8[$],H$(["CLOSE",$])},c0=CQ({init:($)=>{let q=($?.relayUrls?.length?$.relayUrls:null)??vQ;return EQ($,q,IJ,!1).map(fJ).map((G)=>G.ready.then(()=>G).catch(()=>null))},subscribe:($,Q,q,J)=>{let G=e$(64),z=e$(64);O0[G]=O0[z]=(K,Z)=>J(K,Z,async(D,N)=>{if(h0.has(B0($.url)))return;$.send(await B8(D,N))});let Y=()=>{$.send(_Q(G,Q)),$.send(_Q(z,q))};return Y(),$.reopenHandlers.add(Y),()=>{$.reopenHandlers.delete(Y),$.send(bQ(G)),$.send(bQ(z)),delete O0[G],delete O0[z]}},announce:async($,Q)=>{if(h0.has(B0($.url)))return;$.send(await B8(Q,H$({peerId:p})))},bye:async($,Q)=>{if(h0.has(B0($.url)))return;$.send(await B8(Q,H$({peerId:p,bye:1})))}}),mQ=IQ(J0);var yJ={cellSize:10},gJ=5000,uJ=3000,FJ=2000,mJ=2000,hJ=1e4,cJ=30000,lJ=5000,dJ=30000,d0=($)=>{let Q=String($||"").match(/cell-(\d+)/);return Q?Number(Q[1]):null},A8=($,Q)=>{let q=d0($);if(q==null)return[];let J=[];for(let G=1;G<Q;G*=2){if(q-G>=0)J.push(`cell-${q-G}`);if(q+G<Q)J.push(`cell-${q+G}`)}return J},l0=($)=>`c${(d0($)||0).toString(36)}`,pJ=10,oJ=($,Q)=>{let q=+Q.cellSize>=2?Q.cellSize|0:pJ;return Math.max(1,Math.ceil($/q))},hQ=($)=>{let Q=0;for(let q=0;q<$.length;q++)Q=Math.imul(Q^$.charCodeAt(q),2654435761);return Q>>>0},g$=($,Q)=>{let q=0,J=-1;for(let G=0;G<Q;G++){let z=hQ(`${$}:${G}`);if(z>J)J=z,q=G}return q};function iJ($,Q={},q={}){let J={...yJ,...Q},G=1,z={epoch:0,roster:[p],set:new Set([p]),key:p,C:1,cellId:null,isBridge:!1,bridges:[],edgeBridges:[]},Y={cellId:null},K=0,Z=0,D="",N=0,R=0,X=0,U=null,A=null,C=null,u=new Map,h=new Set,i=new Map,c=new Set,z$=0,a=new Set,Q$=new Map,K$=()=>Math.min(150,Math.ceil(Math.log2(z.C+1))*2+3),Y$=(V)=>A8(V,z.C),g=$.on?.bind($),O$=$.off?.bind($);if(g)$.on=(V,L)=>String(V).startsWith("mesh:")?k(V,L):g(V,L);if(O$)$.off=(V,L)=>String(V).startsWith("mesh:")?i.get(V)?.delete(L):O$(V,L);let W$=(V)=>(h.add(V),()=>h.delete(V)),O=(V,L)=>{for(let E of h)try{E(V,L)}catch(F){log.error("\uD83D\uDD78️ [Cells] Error in deliver handler:",F)}},k=(V,L)=>{if(!i.has(V))i.set(V,new Set);return i.get(V).add(L),()=>i.get(V)?.delete(L)},W=(V,...L)=>{let E=i.get(V);if(E)for(let F of E)try{F(...L)}catch{}},B=(V)=>{try{return typeof V==="string"?JSON.parse(V):V}catch{return null}},w=()=>`${p}:${Date.now().toString(36)}:${(z$++&65535).toString(36)}`,v=()=>{if(c.size>gJ)c.delete(c.values().next().value)},P=()=>[...new Set([...$._census(),p])].sort(),_=(V,L,E)=>L.filter((F)=>g$(F,E)===V),S=(V,L,E)=>{if(V==null)return null;let F=(d)=>hQ(`${d}@${V}`),s=null,l=-1;for(let d of _(V,L,E)){let t=F(d);if(t>l)l=t,s=d}return s},H=(V)=>{let L=z.audience?.get(V);if(!L)return[];return Object.keys($.getPeers?.()||{}).filter((E)=>L.has(E))},b=(V,L)=>{if(V!==A&&!(z.isBridge&&z.bridges.some((y)=>l0(y)===V)))return;let E=B(L);if(!E?.id||!E?.t)return;if(c.has(E.id))return;c.add(E.id),v();let{t:F,id:s,ttl:l,data:d,origin:t,originCell:L$}=E,$$=z.cellId;if(F==="ping"&&d?.pingId&&d.target===p&&t!==p){let y={t:"pong",id:w(),ttl:K$(),data:{pingId:d.pingId,receivedAt:Date.now()},origin:p,originCell:$$},r=$.getPeers?.()?.[t]?[t]:H($$);U?.send(JSON.stringify(y),r)}if(F==="pong"&&d?.pingId){let y=Q$.get(d.pingId);if(y)clearTimeout(y.timeout),y.resolve(Date.now()-y.start),Q$.delete(d.pingId)}if(F==="msg"&&t!==p)O(d,t);if(!z.isBridge)return;if((l??0)<=0)return;let X$=(y,r,B$=null)=>{if(!y||!r.length)return;let q$={t:F,id:s,ttl:B$??(l??K$())-1,data:d,origin:t||p,originCell:L$||$$};y.send(JSON.stringify(q$),r)};if(V===A){for(let y of Y$($$))X$(j(y),H(y));return}X$(U,H($$));for(let y of Y$($$))if(l0(y)!==V)X$(j(y),H(y))},j=(V)=>{let L=l0(V),E=$.channel(L);if(!a.has(L))a.add(L),E.on("message",(F)=>b(L,F));return E},M=()=>{if(!z.cellId)return;if(A=l0(z.cellId),U=$.channel(A),!a.has(A))a.add(A),U.on("message",(V)=>b(A,V));if(z.isBridge)for(let V of Y$(z.cellId))j(V)},I=(V,L)=>{if(!V.cellId||!V.set.has(L))return!1;let E=`cell-${g$(L,V.C)}`;return E===V.cellId||V.bridges.includes(E)||A8(E,V.C).includes(V.cellId)&&S(g$(L,V.C),V.roster,V.C)===L},T=(V)=>z.set.size<2&&(Y.set?.size??0)<2||I(z,V)||Date.now()<K&&I(Y,V),x=()=>{let V=$.getPeers?.()||{};for(let L of Object.keys(V))if(!T(L))V[L].close?.()};q.admit=T;let m=()=>({epoch:z.epoch,cellId:z.cellId,isBridge:z.isBridge,bridges:z.bridges,roster:[...z.roster],cellSize:G,dynamicTTL:K$(),totalCells:z.C}),o=()=>{R=Date.now();for(let[V,L]of u){if(V===p)continue;W("mesh:peer-state",{id:V,cell:L.cell,bridges:L.bridges,timestamp:R})}},J$=(V)=>{let L=oJ(V.length,J);G=Math.ceil(V.length/L);let E=`cell-${g$(p,L)}`,F=new Map,s=new Set,l=new Map,d=(y)=>l.get(y)??l.set(y,new Set).get(y);for(let y of V)d(`cell-${g$(y,L)}`).add(y);let t=new Map,L$=(y)=>t.has(y)?t.get(y):t.set(y,S(y,V,L)).get(y);for(let y of new Set(V.map((r)=>g$(r,L)))){let r=`cell-${y}`;for(let B$ of A8(r,L)){if(d0(B$)<y)continue;for(let q$ of[L$(y),L$(d0(B$))]){if(!q$)continue;let T8=`cell-${g$(q$,L)}`===r?B$:r,p0=F.get(q$)??[];if(!p0.includes(T8))p0.push(T8);if(F.set(q$,p0),d(r).add(q$),d(B$).add(q$),r===E||B$===E)s.add(q$)}}}let $$=F.get(p)??[],X$=z.cellId!==E||String(z.bridges)!==String($$);Y=z,z={epoch:z.epoch+1,roster:V,set:new Set(V),key:V.join("|"),C:L,cellId:E,isBridge:$$.length>0,bridges:$$,edgeBridges:[...s],audience:l},X=Date.now(),u.clear();for(let y of V){let r=F.get(y)??[];u.set(y,{cell:`cell-${g$(y,L)}`,isBridge:r.length>0,bridges:r})}if(K=Date.now()+lJ,X$)M();log.info("\uD83D\uDD78️ [Cells] seal",{epoch:z.epoch,myCell:E,bridges:$$,C:L,roster:V.length}),o(),W("mesh:state",m())},U$=()=>{let V=P(),L=V.join("|");if(L===z.key)Z=0;else{let E=Date.now();if(Z||=E,L!==D)D=L,N=E;if(V.some((l)=>!z.set.has(l))||z.edgeBridges.some((l)=>!V.includes(l))||($._gone?.()??[]).some((l)=>z.set.has(l))?E-N>=mJ||E-Z>=hJ:E-Z>=cJ)Z=0,J$(V)}if(K&&Date.now()>=K)K=0,x()},f=()=>{if(C)return;C=setInterval(()=>{if(U$(),Date.now()-R>=dJ)o()},FJ)},G$=()=>{if(C)clearInterval(C),C=null},e=(V)=>{return new Promise((L,E)=>{let F=`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,s=Date.now(),l=setTimeout(()=>{Q$.delete(F),E(Error("Ping timeout"))},uJ);Q$.set(F,{start:s,resolve:L,reject:E,timeout:l,peerId:V});let d={t:"ping",id:w(),ttl:K$(),data:{pingId:F,target:V},origin:p,originCell:z.cellId};U?.send(JSON.stringify(d),H(z.cellId))})};return $.on?.("peer:join",()=>U$()),$.on?.("peer:leave",()=>U$()),J$(P()),f(),{send:(V)=>{let L={t:"msg",id:w(),ttl:K$(),data:V,origin:p,originCell:z.cellId},E=JSON.stringify(L);U.send(E,H(z.cellId)),b(A,E)},on:(V,L)=>V==="message"?W$(L):void 0,ping:e,getState:()=>({...m(),knownCells:new Set([...u.values()].map((V)=>V.cell)).size}),getPeerInfo:()=>new Map(u),getStableRoster:()=>[...z.roster],getKnownCells:()=>{let V=new Map;for(let[L,{cell:E}]of u)if(!V.has(E))V.set(E,{lastSeen:X,peerId:L});return V},getCellSize:()=>G,destroy:()=>{G$(),Q$.forEach((V)=>clearTimeout(V.timeout)),Q$.clear()}}}function cQ($,Q,q){let J={},G=c0({...$,admit:(Z)=>J.admit?.(Z)??!0},Q,q),z=$.overlay||{},Y=iJ(G,z,J),K=new Map;return{on:(Z,D)=>G.on(Z,D),off:(Z,D)=>G.off?.(Z,D),channel:(Z)=>{if(K.has(Z))return K.get(Z);let D=G.channel(Z),N={send:(R,X)=>{if(X){let U=[].concat(X),A=G.getPeers?.()||{};if(U.every((C)=>A[C]))return D.send(R,X)}Y.send({_ch:Z,_d:R,_t:X})},on:(R,X)=>{if(R==="message")Y.on("message",(U,A)=>{if(U?._ch!==Z)return;if(U._t&&![].concat(U._t).includes(p))return;X(U._d,A)}),D.on(R,X);else D.on(R,X)},off:(R,X)=>D.off?.(R,X),_original:D};return K.set(Z,N),N},get id(){return G.id},get peers(){return G.peers},getPeers:()=>G.getPeers?.()||{},mesh:Y,_room:G,getState:()=>Y.getState(),getPeerInfo:()=>Y.getPeerInfo(),ping:(Z)=>Y.ping(Z),leave:()=>{Y.destroy(),K.clear(),G.leave()},destroy:()=>{Y.destroy(),K.clear()}}}var Uq=($,Q,q)=>$?.cells||$?.overlay?cQ($,Q,q):c0($,Q,q);export{p as selfId,Uq as join,mQ as getRelaySockets};
+12
-12

@@ -7,3 +7,3 @@ # GenosDB (GDB)

Install: `npm i genosdb` · Current version: 0.22.3 · Runtime dependencies: none.
Install: `npm i genosdb` · Current version: 0.25.0 · Runtime dependencies: none.

@@ -40,10 +40,10 @@ ## What it is good for

- [API reference](https://github.com/estebanrfp/gdb/blob/main/docs/genosdb-api-reference.md): every method, option and operator.
- [Documentation index](https://github.com/estebanrfp/gdb/blob/main/docs/index.md): all guides.
- [Examples](https://github.com/estebanrfp/gdb/blob/main/docs/genosdb-examples.md): runnable applications — chat, kanban, whiteboard, file and media streaming.
- [Zero-trust security model](https://github.com/estebanrfp/gdb/blob/main/docs/zero-trust-security-model.md): what each role can and cannot do.
- [GenosRTC architecture](https://github.com/estebanrfp/gdb/blob/main/docs/genosrtc-architecture.md): WebRTC transport and Nostr signaling.
- [Cellular Mesh](https://github.com/estebanrfp/gdb/blob/main/docs/genosrtc-cells.md): scaling beyond full-mesh limits.
- [Fallback Server](https://github.com/estebanrfp/gdb/blob/main/docs/genosdb-fallback-server.md): optional always-on peer, and running your own Nostr signaling relay.
- [Whitepaper](https://github.com/estebanrfp/gdb/blob/main/WHITEPAPER.md): architecture and design rationale.
- [API reference](https://github.com/estebanrfp/GenosDB/blob/main/docs/genosdb-api-reference.md): every method, option and operator.
- [Documentation index](https://github.com/estebanrfp/GenosDB/blob/main/docs/index.md): all guides.
- [Examples](https://github.com/estebanrfp/GenosDB/blob/main/docs/genosdb-examples.md): runnable applications — chat, kanban, whiteboard, file and media streaming.
- [Zero-trust security model](https://github.com/estebanrfp/GenosDB/blob/main/docs/zero-trust-security-model.md): what each role can and cannot do.
- [GenosRTC architecture](https://github.com/estebanrfp/GenosDB/blob/main/docs/genosrtc-architecture.md): WebRTC transport and Nostr signaling.
- [Cellular Mesh](https://github.com/estebanrfp/GenosDB/blob/main/docs/genosrtc-cells.md): scaling beyond full-mesh limits.
- [Fallback Server](https://github.com/estebanrfp/GenosDB/blob/main/docs/genosdb-fallback-server.md): optional always-on peer, and running your own Nostr signaling relay.
- [Whitepaper](https://github.com/estebanrfp/GenosDB/blob/main/WHITEPAPER.md): architecture and design rationale.
- [Articles](https://genosdb.com): concepts, comparisons and tutorials.

@@ -53,4 +53,4 @@

- [Migration guide](https://github.com/estebanrfp/gdb/blob/main/MIGRATION.md): moving from the removed `new GDB()` API.
- [Changelog](https://github.com/estebanrfp/gdb/blob/main/CHANGELOG.md)
- [Philosophy](https://github.com/estebanrfp/gdb/blob/main/PHILOSOPHY.md): why the source is closed and how collaboration works.
- [Migration guide](https://github.com/estebanrfp/GenosDB/blob/main/MIGRATION.md): moving from the removed `new GDB()` API.
- [Changelog](https://github.com/estebanrfp/GenosDB/blob/main/CHANGELOG.md)
- [Philosophy](https://github.com/estebanrfp/GenosDB/blob/main/PHILOSOPHY.md): why the source is closed and how collaboration works.
{
"name": "genosdb",
"version": "0.24.1",
"version": "0.25.0",
"description": "GenosDB (GDB): distributed graph database in real-time, peer-to-peer, scalable storage - efficient querying of complex relationships.",

@@ -5,0 +5,0 @@ "main": "dist/index.js",

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet