New:Socket for Asana Is Now Available.Learn more
Get Started

genosdb

Package Overview
Dependencies
Maintainers
1
Versions
139
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.31.1
to
0.31.3
+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 F$=typeof globalThis==="object"&&"crypto"in globalThis?globalThis.crypto:void 0;/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function m$($){return $ instanceof Uint8Array||ArrayBuffer.isView($)&&$.constructor.name==="Uint8Array"}function q0($){if(!Number.isSafeInteger($)||$<0)throw Error("positive integer expected, got "+$)}function A$($,...Q){if(!m$($))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 a$($,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){A$($);let q=Q.outputLen;if($.length<q)throw Error("digestInto() expects output buffer of length at least "+q)}function h$(...$){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 C8=(()=>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$($),C8)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 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 c$($){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 X=L8($.charCodeAt(z)),K=L8($.charCodeAt(z+1));if(X===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]=X*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 A$($),$}function D$(...$){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 k8($){let Q=(J)=>$().update(G0(J)).digest(),q=$();return Q.outputLen=q.outputLen,Q.blockLen=q.blockLen,Q.create=()=>$(),Q}function l$($=32){if(F$&&typeof F$.getRandomValues==="function")return F$.getRandomValues(new Uint8Array($));if(F$&&typeof F$.randomBytes==="function")return Uint8Array.from(F$.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),X=Number(q>>G&z),K=Number(q&z),Z=J?4:0,D=J?0:4;$.setUint32(Q+Z,X,J),$.setUint32(Q+D,K,J)}function S8($,Q,q){return $&Q^~$&q}function P8($,Q,q){return $&Q^$&q^Q&q}class p0 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($){a$(this),$=G0($),A$($);let{view:Q,buffer:q,blockLen:J}=this,G=$.length;for(let z=0;z<G;){let X=Math.min(J-this.pos,G-z);if(X===J){let K=A0($);for(;J<=G-z;z+=J)this.process(K,z);continue}if(q.set($.subarray(z,z+X),this.pos),this.pos+=X,z+=X,this.pos===J)this.process(Q,0),this.pos=0}return this.length+=$.length,this.roundClean(),this}digestInto($){a$(this),w8($,this),this.finished=!0;let{buffer:Q,view:q,blockLen:J,isLE:G}=this,{pos:z}=this;if(Q[z++]=128,h$(this.buffer.subarray(z)),this.padOffset>J-z)this.process(q,0),z=0;for(let N=z;N<J;N++)Q[N]=0;lQ(q,J-8,BigInt(this.length*8),G),this.process(q,0);let X=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++)X.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:X}=this;if($.destroyed=z,$.finished=G,$.length=J,$.pos=X,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 I8 extends p0{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:X,H:K}=this;return[$,Q,q,J,G,z,X,K]}set($,Q,q,J,G,z,X,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=X|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],Y=v$[N-2],U=R$(R,7)^R$(R,18)^R>>>3,A=R$(Y,17)^R$(Y,19)^Y>>>10;v$[N]=A+v$[N-7]+U+v$[N-16]|0}let{A:q,B:J,C:G,D:z,E:X,F:K,G:Z,H:D}=this;for(let N=0;N<64;N++){let R=R$(X,6)^R$(X,11)^R$(X,25),Y=D+R+S8(X,K,Z)+dQ[N]+v$[N]|0,A=(R$(q,2)^R$(q,13)^R$(q,22))+P8(q,J,G)|0;D=Z,Z=K,K=X,X=z+Y|0,z=G,G=J,J=q,q=Y+A|0}q=q+this.A|0,J=J+this.B|0,G=G+this.C|0,z=z+this.D|0,X=X+this.E|0,K=K+this.F|0,Z=Z+this.G|0,D=D+this.H|0,this.set(q,J,G,z,X,K,Z,D)}roundClean(){h$(v$)}destroy(){this.set(0,0,0,0,0,0,0,0),h$(this.buffer)}}var T0=k8(()=>new I8);class o0 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),h$(G)}update($){return a$(this),this.iHash.update($),this}digestInto($){a$(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:X}=this;return $=$,$.finished=J,$.destroyed=G,$.blockLen=z,$.outputLen=X,$.oHash=Q._cloneInto($.oHash),$.iHash=q._cloneInto($.iHash),$}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}var i0=($,Q,q)=>new o0($,Q).update(q).digest();i0.create=($,Q)=>new o0($,Q);/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var n0=BigInt(0),r0=BigInt(1);function X0($,Q=""){if(typeof $!=="boolean"){let q=Q&&`"${Q}"`;throw Error(q+"expected boolean, got type="+typeof $)}return $}function _$($,Q,q=""){let J=m$($),G=$?.length,z=Q!==void 0;if(!J||z&&G!==Q){let X=q&&`"${q}" `,K=z?` of length ${Q}`:"",Z=J?`length=${G}`:`type=${typeof $}`;throw Error(X+"expected Uint8Array"+K+", got "+Z)}return $}function Y0($){let Q=$.toString(16);return Q.length&1?"0"+Q:Q}function E8($){if(typeof $!=="string")throw Error("hex string expected, got "+typeof $);return $===""?n0:BigInt("0x"+$)}function S$($){return E8(C$($))}function s0($){return A$($),E8(C$(Uint8Array.from($).reverse()))}function r$($,Q){return c$($.toString(16).padStart(Q*2,"0"))}function t0($,Q){return r$($,Q).reverse()}function n($,Q,q){let J;if(typeof Q==="string")try{J=c$(Q)}catch(z){throw Error($+" must be hex string or Uint8Array, cause: "+z)}else if(m$(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"&&n0<=$;function Z0($,Q,q){return a0($)&&a0(Q)&&a0(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;$>n0;$>>=r0,Q+=1);return Q}var b$=($)=>(r0<<BigInt($))-r0;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($),X=J($),K=0,Z=()=>{z.fill(1),X.fill(0),K=0},D=(...U)=>q(X,z,...U),N=(U=J(0))=>{if(X=D(G(0),U),z=D(),U.length===0)return;X=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,X){let K=$[G];if(X&&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 e0($){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),d$=BigInt(2),y8=BigInt(3),g8=BigInt(4),u8=BigInt(5),pQ=BigInt(7),F8=BigInt(8),oQ=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$,X=Z$,K=j$;while(q!==j$){let D=J/q,N=J%q,R=G-X*D,Y=z-K*D;J=q,q=N,G=X,z=K,X=R,K=Y}if(J!==Z$)throw Error("invert: does not exist");return V$(G,Q)}function $8($,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 $8($,J,Q),J}function iQ($,Q){let q=($.ORDER-u8)/F8,J=$.mul(Q,d$),G=$.pow(J,q),z=$.mul(Q,G),X=$.mul($.mul(z,d$),G),K=$.mul(z,$.sub(X,$.ONE));return $8($,K,Q),K}function aQ($){let Q=f$($),q=c8($),J=q(Q,Q.neg(Q.ONE)),G=q(Q,J),z=q(Q,Q.neg(J)),X=($+pQ)/m8;return(K,Z)=>{let D=K.pow(Z,X),N=K.mul(D,J),R=K.mul(D,G),Y=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(Y,R,A);let C=K.eql(K.sqr(N),Z),u=K.cmov(D,N,C);return $8(K,u,Z),u}}function c8($){if($<y8)throw Error("sqrt is not defined for small field");let Q=$-Z$,q=0;while(Q%d$===j$)Q/=d$,q++;let J=d$,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),X=(Q+Z$)/d$;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),Y=Z.pow(D,Q),U=Z.pow(D,X);while(!Z.eql(Y,Z.ONE)){if(Z.is0(Y))return Z.ZERO;let A=1,C=Z.sqr(Y);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),Y=Z.mul(Y,R),U=Z.mul(U,h)}return U}}function rQ($){if($%g8===y8)return h8;if($%F8===u8)return iQ;if($%m8===oQ)return aQ($);return c8($)}var nQ=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Q8($){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<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((X,K,Z)=>{if($.is0(K))return X;return J[Z]=X,$.mul(X,K)},$.ONE),z=$.inv(G);return Q.reduceRight((X,K,Z)=>{if($.is0(K))return X;return J[Z]=$.mul(X,J[Z]),$.mul(X,K)},z),J}function f8($,Q){let q=($.ORDER-Z$)/d$,J=$.pow(Q,q),G=$.eql(J,$.ONE),z=$.eql(J,$.ZERO),X=$.eql(J,$.neg($.ONE));if(!G&&!z&&!X)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,X=!1,K=void 0;if(typeof Q==="object"&&Q!=null){if(J.sqrt||q)throw Error("cannot specify opts in two arguments");let Y=Q;if(Y.BITS)G=Y.BITS;if(Y.sqrt)z=Y.sqrt;if(typeof Y.isLE==="boolean")q=Y.isLE;if(typeof Y.modFromBytes==="boolean")X=Y.modFromBytes;K=Y.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:(Y)=>V$(Y,$),isValid:(Y)=>{if(typeof Y!=="bigint")throw Error("invalid field element: expected bigint, got "+typeof Y);return j$<=Y&&Y<$},is0:(Y)=>Y===j$,isValidNot0:(Y)=>!R.is0(Y)&&R.isValid(Y),isOdd:(Y)=>(Y&Z$)===Z$,neg:(Y)=>V$(-Y,$),eql:(Y,U)=>Y===U,sqr:(Y)=>V$(Y*Y,$),add:(Y,U)=>V$(Y+U,$),sub:(Y,U)=>V$(Y-U,$),mul:(Y,U)=>V$(Y*U,$),pow:(Y,U)=>sQ(R,Y,U),div:(Y,U)=>V$(Y*b8(U,$),$),sqrN:(Y)=>Y*Y,addN:(Y,U)=>Y+U,subN:(Y,U)=>Y-U,mulN:(Y,U)=>Y*U,inv:(Y)=>b8(Y,$),sqrt:z||((Y)=>{if(!N)N=rQ($);return N(R,Y)}),toBytes:(Y)=>q?t0(Y,D):r$(Y,D),fromBytes:(Y,U=!0)=>{if(K){if(!K.includes(Y.length)||Y.length>D)throw Error("Field.fromBytes: expected "+K+" bytes, got "+Y.length);let C=new Uint8Array(D);C.set(Y,q?0:C.length-Y.length),Y=C}if(Y.length!==D)throw Error("Field.fromBytes: expected "+D+" bytes, got "+Y.length);let A=q?s0(Y):S$(Y);if(X)A=V$(A,$);if(!U){if(!R.isValid(A))throw Error("invalid field element: outside of range 0..ORDER")}return A},invertBatch:(Y)=>w0(R,Y),cmov:(Y,U,A)=>A?U:Y});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 J8($){let Q=l8($);return Q+Math.ceil(Q/2)}function k0($,Q,q=!1){let J=$.length,G=l8(Q),z=J8(Q);if(J<16||J<z||J>1024)throw Error("expected "+z+"-1024 bytes of input, got "+J);let X=q?s0($):S$($),K=V$(X,Q-Z$)+Z$;return q?t0(K,G):r$(K,G)}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var n$=BigInt(0),p$=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 q8($,Q){i8($,Q);let q=Math.ceil(Q/$)+1,J=2**($-1),G=2**$,z=b$($),X=BigInt($);return{windows:q,windowSize:J,mask:z,maxNumber:G,shiftBy:X}}function d8($,Q,q){let{windowSize:J,mask:G,maxNumber:z,shiftBy:X}=q,K=Number($&G),Z=$>>X;if(K>J)K-=z,Z+=p$;let D=Q*J,N=D+Math.abs(K)-1,R=K===0,Y=K<0,U=Q%2!==0;return{nextN:Z,offset:N,isZero:R,isNeg:Y,isNegF:U,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 G8=new WeakMap,a8=new WeakMap;function z8($){return a8.get($)||1}function p8($){if($!==n$)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>n$){if(Q&p$)q=q.add(J);J=J.double(),Q>>=p$}return q}precomputeWindow($,Q){let{windows:q,windowSize:J}=q8(Q,this.bits),G=[],z=$,X=z;for(let K=0;K<q;K++){X=z,G.push(X);for(let Z=1;Z<J;Z++)X=X.add(z),G.push(X);z=X.double()}return G}wNAF($,Q,q){if(!this.Fn.isValid(q))throw Error("invalid scalar");let J=this.ZERO,G=this.BASE,z=q8($,this.bits);for(let X=0;X<z.windows;X++){let{nextN:K,offset:Z,isZero:D,isNeg:N,isNegF:R,offsetF:Y}=d8(q,X,z);if(q=K,D)G=G.add(U0(R,Q[Y]));else J=J.add(U0(N,Q[Z]))}return p8(q),{p:J,f:G}}wNAFUnsafe($,Q,q,J=this.ZERO){let G=q8($,this.bits);for(let z=0;z<G.windows;z++){if(q===n$)break;let{nextN:X,offset:K,isZero:Z,isNeg:D}=d8(q,z,G);if(q=X,Z)continue;else{let N=Q[K];J=J.add(D?N.negate():N)}}return p8(q),J}getPrecomputes($,Q,q){let J=G8.get(Q);if(!J){if(J=this.precomputeWindow(Q,$),$!==1){if(typeof q==="function")J=q(J);G8.set(Q,J)}}return J}cached($,Q,q){let J=z8($);return this.wNAF(J,this.getPrecomputes(J,$,q),Q)}unsafe($,Q,q,J){let G=z8($);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),G8.delete($)}hasCache($){return z8($)!==1}}function r8($,Q,q,J){let G=Q,z=$.ZERO,X=$.ZERO;while(q>n$||J>n$){if(q&p$)z=z.add(G);if(J&p$)X=X.add(G);G=G.double(),q>>=p$,J>>=p$}return{p1:z,p2:X}}function n8($,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 X=$.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(X),R=Math.floor((Q.BITS-1)/Z)*Z,Y=X;for(let U=R;U>=0;U-=Z){N.fill(X);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=X;for(let C=N.length-1,u=X;C>0;C--)u=u.add(N[C]),A=A.add(u);if(Y=Y.add(A),U!==0)for(let C=0;C<Z;C++)Y=Y.double()}return Y}function o8($,Q,q){if(Q){if(Q.ORDER!==$)throw Error("Field.ORDER must match order: Fp == p, Fn == n");return Q8(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>n$))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 $J($,Q,q){let[[J,G],[z,X]]=Q,K=t8(X*$,q),Z=t8(-G*$,q),D=$-K*J-Z*z,N=-K*G-Z*X,R=D<I$,Y=N<I$;if(R)D=-D;if(Y)N=-N;let U=b$(Math.ceil(L0(q)/2))+s$;if(D<I$||D>=U||N<I$||N>=U)throw Error("splitScalar (endomorphism): failed, k="+$);return{k1neg:R,k1:D,k2neg:Y,k2:N}}function Z8($){if(!["compact","recovered","der"].includes($))throw Error('Signature format must be "compact", "recovered", or "der"');return $}function Y8($,Q){let q={};for(let J of Object.keys(Q))q[J]=$[J]===void 0?Q[J]:$[J];if(X0(q.lowS,"lowS"),X0(q.prehash,"prehash"),q.format!==void 0)Z8(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=Y0(J);if(G.length/2&128)throw new q("tlv.encode: long form length too big");let z=J>127?Y0(G.length/2|128):"";return Y0($)+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),X=0;if(!z)X=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)X=X<<8|N;if(J+=Z,X<128)throw new q("tlv.decode(long): not minimal encoding")}let K=Q.subarray(J,J+X);if(K.length!==X)throw new q("tlv.decode: wrong value length");return{v:K,l:Q.subarray(J+X)}}},_int:{encode($){let{Err:Q}=P$;if($<I$)throw new Q("integer: negative integers are not allowed");let q=Y0($);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:X}=J.decode(48,G);if(X.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),s$=BigInt(1),$Q=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=s8("weierstrass",$,Q),{Fp:J,Fn:G}=q,z=q.CURVE,{h:X,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(X0(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 Y(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||Y;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),QJ),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 $J(O,Z.basises,G.ORDER)}let Q$=e0((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$=e0((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 X$(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=X$(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===s$)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 X$(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(X===s$)return!0;if(O)return O(g,this);return W$.unsafe(this,K).is0()}clearCofactor(){let{clearCofactor:O}=Q;if(X===s$)return this;if(O)return O(g,this);return this.multiplyUnsafe(X)}isSmallOrder(){return this.multiplyUnsafe(X).is0()}toBytes(O=!0){return X0(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 qJ($,Q={}){let{Fn:q}=$,J=Q.randomBytes||l$,G=Object.assign(JQ($.Fp,q),{seed:J8(q.ORDER)});function z(U){try{return!!y$(q,U)}catch(A){return!1}}function X(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:X,randomSecretKey:K,isValidPrivateKey:z,randomPrivateKey:K,normPrivateKeyToScalar:(U)=>y$(q,U),precompute(U=8,A=$.BASE){return A.precompute(U,!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||l$,G=q.hmac||((W,...B)=>i0(Q,W,D$(...B))),{Fp:z,Fn:X}=$,{ORDER:K,BITS:Z}=X,{keygen:D,getPublicKey:N,getSharedSecret:R,utils:Y,lengths:U}=qJ($,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>>s$;return W>B}function h(W,B){if(!X.isValidNot0(B))throw Error(`invalid signature ${W}: out of range 1..Point.Fn.ORDER`);return B}function i(W,B){Z8(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=X.BYTES,P=W.subarray(0,v),_=W.subarray(v,v*2);return new c(X.fromBytes(P),X.fromBytes(_),w)}static fromHex(W,B){return this.fromBytes(c$(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=X.inv(S),M=a(n("msgHash",W)),I=X.create(-M*j),T=X.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(Z8(W),W==="der")return c$(P$.hexFromSig(this));let B=X.toBytes(this.r),w=X.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,X.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 X.create(z$(B))},Q$=b$(Z);function K$(W){return v8("num < 2^"+Z,W,I$,Q$),X.toBytes(W)}function X$(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:_}=Y8(w,A);W=X$(W,P);let S=a(W),H=y$(X,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(!X.isValidNot0(x))return;let m=X.inv(x),o=$.BASE.multiply(x).toAffine(),J$=X.create(o.x);if(J$===I$)return;let U$=X.create(m*X.create(M+J$*H));if(U$===I$)return;let f=(o.x===J$?0:2)|Number(o.y&s$),G$=U$;if(v&&u(U$))G$=X.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,X.BYTES,G)(v,P)}function W$(W){let B=void 0,w=typeof W==="string"||m$(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}=Y8(v,A);if(w=n("publicKey",w),B=X$(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=X.inv(M),x=X.create(I*T),m=X.create(j*T),o=$.BASE.multiplyUnsafe(x).add(b.multiplyUnsafe(m));if(o.is0())return!1;return X.create(o.x)===j}catch(b){return!1}}function k(W,B,w={}){let{prehash:v}=Y8(w,A);return B=X$(B,v),c.fromBytes(W,"recovered").recoverPublicKey(B).toBytes()}return Object.freeze({keygen:D,getPublicKey:N,getSharedSecret:R,utils:Y,lengths:U,Point:$,sign:O$,verify:O,recoverPublicKey:k,Signature:c,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((X)=>Math.ceil(X/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}=zJ($),J={hmac:$.hmac,randomBytes:$.randomBytes,lowS:$.lowS,bits2int:$.bits2int,bits2int_modN:$.bits2int_modN};return{CURVE:Q,curveOpts:q,hash:$.hash,ecdsaOpts:J}}function YJ($,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=JJ(Q,q),X=GJ(z,J,G);return YJ($,X)}/*! 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 t$={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),zQ=BigInt(1),K8=BigInt(2);function UJ($){let Q=t$.p,q=BigInt(3),J=BigInt(6),G=BigInt(11),z=BigInt(22),X=BigInt(23),K=BigInt(44),Z=BigInt(88),D=$*$*$%Q,N=D*D*$%Q,R=N$(N,q,Q)*N%Q,Y=N$(R,q,Q)*N%Q,U=N$(Y,K8,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,X,Q)*A%Q,a=N$(z$,J,Q)*D%Q,Q$=N$(a,K8,Q);if(!I0.eql(I0.sqr(Q$),$))throw Error("Cannot find square root");return Q$}var I0=f$(t$.p,{sqrt:UJ}),ZQ=GQ({...t$,Fp:I0,lowS:!0,endo:ZJ},T0),XQ={};function E0($,...Q){let q=XQ[$];if(q===void 0){let J=T0(R0($));q=D$(J,J),XQ[$]=q}return T0(D$(q,...Q))}var j8=($)=>$.toBytes(!0).slice(1),e$=(()=>ZQ.Point)(),W8=($)=>$%K8===KJ;function U8($){let{Fn:Q,BASE:q}=e$,J=y$(Q,$),G=q.multiply(J);return{scalar:W8(G.y)?J:Q.neg(J),bytes:j8(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(!W8(G))G=Q.neg(G);let z=e$.fromAffine({x:$,y:G});return z.assertValidity(),z}var j0=S$;function UQ(...$){return e$.Fn.create(j0(E0("BIP0340/challenge",...$)))}function YQ($){return U8($).bytes}function jJ($,Q,q=l$(32)){let{Fn:J}=e$,G=n("message",$),{bytes:z,scalar:X}=U8(Q),K=n("auxRand",q,32),Z=J.toBytes(X^j0(E0("BIP0340/aux",K))),D=E0("BIP0340/nonce",Z,z,G),{bytes:N,scalar:R}=U8(D),Y=UQ(N,z,G),U=new Uint8Array(64);if(U.set(N,0),U.set(J.toBytes(J.create(R+Y*X)),32),!jQ(U,G,z))throw Error("sign: Invalid signature produced");return U}function jQ($,Q,q){let{Fn:J,BASE:G}=e$,z=n("signature",$,64),X=n("message",Q),K=n("publicKey",q,32);try{let Z=KQ(j0(K)),D=j0(z.subarray(0,32));if(!Z0(D,zQ,t$.p))return!1;let N=j0(z.subarray(32,64));if(!Z0(N,zQ,t$.n))return!1;let R=UQ(J.toBytes(D),j8(Z),X),Y=G.multiplyUnsafe(N).add(Z.multiplyUnsafe(J.neg(R))),{x:U,y:A}=Y.toAffine();if(Y.is0()||!W8(A)||U!==D)return!1;return!0}catch(Z){return!1}}var v0=(()=>{let q=(G=l$(48))=>{return k0(G,t$.n)};ZQ.utils.randomSecretKey;function J(G){let z=q(G);return{secretKey:z,publicKey:YQ(z)}}return{keygen:J,getPublicKey:YQ,sign:jJ,verify:jQ,Point:e$,utils:{randomSecretKey:q,randomPrivateKey:q,taggedHash:E0,lift_x:KQ,pointToBytes:j8,numberToBytesBE:r$,bytesToNumberBE:S$,mod:V$},lengths:{secretKey:32,publicKey:32,publicKeyHasPrefix:!1,signature:64,seed:48}}})();var WJ=new TextEncoder,DJ=new TextDecoder,T$=($)=>WJ.encode($),o$=($)=>DJ.decode($),_0=($)=>Array.from($,(Q)=>Q.toString(16).padStart(2,"0")).join(""),H$=JSON.stringify,i$=JSON.parse,D8=($,Q=Number.MAX_SAFE_INTEGER)=>$.split("").reduce((q,J)=>q+J.charCodeAt(0),0)%Q;var M8="AES-GCM",MJ={},WQ="$",DQ=",",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",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}${VJ(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 $,X=await crypto.subtle.decrypt({name:M8,iv:G},z,NJ(J));return o$(X)};var M$="GenosRTC",g$=($,Q)=>Array.from({length:$},Q);var $0=($)=>Array.from(crypto.getRandomValues(new Uint8Array($)),(Q)=>"0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"[Q%62]).join(""),p=typeof sessionStorage<"u"?sessionStorage.__genosrtcId??=$0(20):$0(20),E$=Promise.all.bind(Promise),HQ=typeof window<"u",{entries:OQ,fromEntries:b0,keys:g9}=Object,V8=()=>{},x$=($)=>Error(`GenosRTC: ${$}`),D0=(...$)=>$.join("@");var HJ=5000,BQ="icegatheringstatechange",xQ="offer",OJ="answer",BJ=[...g$(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:[...BJ,...J||[]],...Q}),z={},X=!1,K=!1,Z,D=(Y)=>Object.assign(Y,{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((Y)=>{let U=()=>{if(G.iceGatheringState==="complete")G.removeEventListener(BQ,U),Y()};G.addEventListener(BQ,U),U()}),new Promise((Y)=>setTimeout(Y,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:Y})=>D(Z=Y),G.onnegotiationneeded=async()=>{try{X=!0,await G.setLocalDescription(),z.signal?.(await N())}catch(Y){z.error?.(Y)}finally{X=!1}},G.onconnectionstatechange=()=>{if(["disconnected","failed","closed"].includes(G.connectionState))z.close?.()},G.ontrack=(Y)=>{z.track?.(Y.track,Y.streams[0]),z.stream?.(Y.streams[0])},G.onremovestream=(Y)=>z.stream?.(Y.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(Y){if(Z?.readyState==="open"&&!Y.sdp?.includes("a=rtpmap"))return;try{if(Y.type===xQ){if(X||G.signalingState!=="stable"&&!K){if($)return;await E$([G.setLocalDescription({type:"rollback"}),G.setRemoteDescription(Y)])}else await G.setRemoteDescription(Y);await G.setLocalDescription();let U=await N();return z.signal?.(U),U}if(Y.type===OJ){K=!0;try{await G.setRemoteDescription(Y)}finally{K=!1}}}catch(U){z.error?.(U)}},sendData:(Y)=>{if(Z?.readyState!=="open")return!1;return Z.send(Y),!0},destroy:()=>{Z?.close(),G.close(),X=K=!1},setHandlers:(Y)=>Object.assign(z,Y),offerPromise:$?new Promise((Y)=>z.signal=(U)=>U.type===xQ&&Y(U)):Promise.resolve(),addStream:(Y)=>Y.getTracks().forEach((U)=>G.addTrack(U,Y)),removeStream:(Y)=>R().filter((U)=>Y.getTracks().includes(U.track)).forEach((U)=>G.removeTrack(U)),addTrack:(Y,U)=>G.addTrack(Y,U),removeTrack:(Y)=>{let U=R().find((A)=>A.track===Y);if(U)G.removeTrack(U)},replaceTrack:(Y,U)=>R().find((A)=>A.track===Y)?.replaceTrack(U)}};var xJ=Object.getPrototypeOf(Uint8Array),y0=12,TQ=0,g0=TQ+y0,u0=g0+1,V0=u0+1,N0=V0+1,M0=16384-N0,f0=255,H8="bufferedamountlow",Q0=($)=>`@_${$}`,AQ=Q0("ping"),O8=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,G)=>{let z=new Map,X=new Map,K=new Map,Z={},D={},N={},R={},Y=new Map,U=new Map,A=Promise.resolve(),C=(j,M)=>{if(!Y.has(j))Y.set(j,new Set);Y.get(j).add(M)},u=(j,M)=>Y.get(j)?.delete(M),h=(j,...M)=>Y.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 x$("action type is required");let M=T$(j);if(M.byteLength>y0)throw x$(`❌ "${j}" exceeds ${y0} bytes. Use a shorter name.`);let I=new Uint8Array(y0).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$,$$,V)=>{if($$&&typeof $$!=="object")throw x$("meta must be object");if(f===void 0)throw x$("data cannot be undefined");let L=f instanceof Blob,E=L||f instanceof ArrayBuffer||f instanceof xJ,F=typeof f!=="string";if($$&&!E)throw x$("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>=TJ){let e=await RQ(s,CompressionStream);if(e.byteLength<s.byteLength)s=e,l=1}let d=$$?T$(H$($$)):null,t=Math.ceil(s.byteLength/M0)+($$?1:0)||1;if(t>O8)throw x$(`Message too large, exceeds max chunks ${O8}`);let L$=g$(t,(e,Y$)=>{let y=Y$===t-1,r=$$&&Y$===0,B$=r?d:s.subarray($$?(Y$-1)*M0:Y$*M0,$$?Y$*M0:(Y$+1)*M0),q$=new Uint8Array(N0+B$.byteLength);return q$.set(I),q$.set([T],g0),q$.set([y|r<<1|E<<2|F<<3|l<<4],u0),q$.set([Math.round((Y$+1)/t*f0)],V0),q$.set(B$,N0),q$});return T=T+1&f0,E$(i(G$,async(e,Y$)=>{let{channel:y}=Y$;for(let r=0;r<t;r++){let B$=0;while(y.bufferedAmount>y.bufferedAmountLowThreshold){if(B$++>AJ)throw x$(`${M$}: send buffer full, max retries reached for peer ${e}`);try{await z$(y)}catch(q$){console.warn(q$.message),await new Promise((R8)=>setTimeout(R8,RJ))}}if(!z.has(e))break;if(!Y$.sendData(L$[r]))throw x$(`channel not open for peer ${e}`);V?.(L$[r][V0]/f0,e,$$)}}))};X.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=o$(I.subarray(TQ,g0)).replace(/\x00/g,"");if(!X.has(T))return console.warn(`${M$}: unregistered type (${T})`);if(T===AQ){g("",j).catch(()=>{});return}let[x]=I.subarray(g0,u0),[m]=I.subarray(u0,V0),[o]=I.subarray(V0,N0),J$=I.subarray(N0),U$=Boolean(m&1),f=Boolean(m&2),G$=Boolean(m&4),$$=Boolean(m&8),V=Boolean(m&16),L=X.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=i$(o$(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/f0,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 RQ(s,DecompressionStream):s,d;if(G$)d=l;else if($$)try{d=i$(o$(l))}catch{console.warn(`${M$}: failed to parse JSON message data from peer ${j} for type ${T}`);return}else d=o$(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:X$}=a(AQ),{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),X$("",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 x$("ping() requires target peer ID");let M=Date.now();return X$("",j),await new Promise((I)=>D[j]=I),Date.now()-M},getPeers:()=>b0(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 LJ=5,wJ=10,CJ=2500,F0=57333,wQ=({init:$,subscribe:Q,announce:q,bye:J})=>{let G={},z=!1,X,K;return(Z,D,N)=>{let{appId:R}=Z;if(G[R]?.[D])return G[R][D];if(!Z||!D||!R&&!Z.firebaseApp)throw x$(!Z?"config required":!D?"roomId required":"appId missing");let Y=V8,U=V8;if(!z){let H=$(Z);K=g$(LJ,()=>{try{return N8(!0,Z)}catch{return null}}).filter(Boolean),X=Array.isArray(H)?H:[H];let b=setInterval(()=>{K=K.filter((j)=>{let M=Date.now()-j.created<F0;if(!M)j.destroy();return M})},F0);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),X$=(H)=>async(b)=>({type:b.type,sdp:await H(K$,b.sdp)}),g=X$(NQ),O$=X$(VQ),W$=(H)=>{return setTimeout(()=>{if(!H.isDead&&!Object.values(C).includes(H))H.destroy()},F0),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,Y(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"?i$(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[$$,V]=await E$([W0(D0(z$,x)),f.signal(G$).then(O$)]);M($$,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)>F0)){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)>=wJ)return;let $$=K.pop(),V=$$?W$($$):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));X.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:CJ)};T()}),G[R]||={};let S=LQ((H)=>Y=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 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=(X)=>Q(X.data),q.socket=z,q.url=z.url,q.ready=new Promise((X)=>{z.onopen=()=>{H0[$]=CQ,X(q),q.reopenHandlers.forEach((K)=>K())}}),q.send=(X)=>{if(z.readyState===1)z.send(X)}};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=($)=>()=>b0(OQ($).map(([Q,q])=>[Q,q.socket]));var J0={},SJ=10,vQ="x",_Q="EVENT",PJ=/pow:\s*(\d+)\s*bits needed\.?/i,m0=new Set,bQ=v0.utils.randomSecretKey(),IJ=_0(v0.getPublicKey(bQ)),x8={},O0={},EJ={},fQ=()=>Math.floor(Date.now()/1000),yQ=($)=>EJ[$]??=D8($,1e4)+20000,B0=($)=>$.replace(/\/$/,""),vJ="https://relays.genosdb.com/relays.json",gQ=($)=>Array.isArray($)?[...new Set($.filter((Q)=>Q?.startsWith?.("wss://")))]:[],uQ="genosrtc_relays",_J=()=>{try{return gQ(JSON.parse(globalThis.localStorage?.getItem(uQ)))}catch{return[]}},bJ=()=>fetch(`${vJ}?r=${Math.random().toString(36).slice(2)}`,{signal:AbortSignal.timeout(5000)}).then(($)=>$.json()).then(gQ).then(($)=>($.length&&globalThis.localStorage?.setItem(uQ,JSON.stringify($)),$)).catch(()=>[]).then(($)=>($=$.length?$:_J(),$.length||log.warn("⚠️ [GenosRTC] Relay list unreachable - Pass rtc.relayUrls to override."),$)),fJ=($,Q)=>{let[q,J,G,z]=i$(Q);if(q===_Q)return O0[J]?.(x8[J],G.content);if(q==="NOTICE"||q==="OK"&&!G){if(+((q==="NOTICE"?J:z).match(PJ)?.[1]??0)>0){let K=B0($);m0.add(K),J0[K]?.close?.(),delete J0[K]}}},yJ=($)=>{let Q=B0($);if(J0[Q])return J0[Q];let q=SQ(Q,(J)=>fJ(Q,J));return J0[Q]=q},B8=async($,Q)=>{let q={kind:yQ($),content:Q,pubkey:IJ,created_at:fQ(),tags:[[vQ,$]]},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,bQ);return H$([_Q,{...q,id:_0(G),sig:_0(z)}])},IQ=($,Q)=>{return x8[$]=Q,H$(["REQ",$,{kinds:[yQ(Q)],since:fQ(),["#"+vQ]:[Q]}])},EQ=($)=>{return delete x8[$],H$(["CLOSE",$])},h0=wQ({init:($)=>{let Q=$?.relayUrls?.length?$.relayUrls:null,q=Q?Promise.resolve(Q):bJ(),J=Q?.length??$.relayRedundancy??SJ;return g$(J,(G,z)=>q.then((X)=>{let K=X[z]&&yJ(X[z]);return K?K.ready.then(()=>K).catch(()=>null):null}))},subscribe:($,Q,q,J)=>{let G=$0(64),z=$0(64);O0[G]=O0[z]=(K,Z)=>J(K,Z,async(D,N)=>{if(m0.has(B0($.url)))return;$.send(await B8(D,N))});let X=()=>{$.send(IQ(G,Q)),$.send(IQ(z,q))};return X(),$.reopenHandlers.add(X),()=>{$.reopenHandlers.delete(X),$.send(EQ(G)),$.send(EQ(z)),delete O0[G],delete O0[z]}},announce:async($,Q)=>{if(m0.has(B0($.url)))return;$.send(await B8(Q,H$({peerId:p})))},bye:async($,Q)=>{if(m0.has(B0($.url)))return;$.send(await B8(Q,H$({peerId:p,bye:1})))}}),FQ=PQ(J0);var gJ={cellSize:10},uJ=5000,FJ=3000,mJ=2000,hJ=2000,cJ=1e4,lJ=30000,dJ=5000,pJ=30000,l0=($)=>{let Q=String($||"").match(/cell-(\d+)/);return Q?Number(Q[1]):null},A8=($,Q)=>{let q=l0($);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},c0=($)=>`c${(l0($)||0).toString(36)}`,oJ=10,iJ=($,Q)=>{let q=+Q.cellSize>=2?Q.cellSize|0:oJ;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},u$=($,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 aJ($,Q={},q={}){let J={...gJ,...Q},G=1,z={epoch:0,roster:[p],set:new Set([p]),key:p,C:1,cellId:null,isBridge:!1,bridges:[],edgeBridges:[]},X={cellId:null},K=0,Z=0,D="",N=0,R=0,Y=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),X$=(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>uJ)c.delete(c.values().next().value)},P=()=>[...new Set([...$._census(),p])].sort(),_=(V,L,E)=>L.filter((F)=>u$(F,E)===V),S=(V,L,E)=>{if(V==null)return null;let F=(d)=>mQ(`${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)=>c0(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,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:e},r=$.getPeers?.()?.[t]?[t]:H(e);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 Y$=(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$||e};y.send(JSON.stringify(q$),r)};if(V===A){for(let y of X$(e))Y$(j(y),H(y));return}Y$(U,H(e));for(let y of X$(e))if(c0(y)!==V)Y$(j(y),H(y))},j=(V)=>{let L=c0(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=c0(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 X$(z.cellId))j(V)},I=(V,L)=>{if(!V.cellId||!V.set.has(L))return!1;let E=`cell-${u$(L,V.C)}`;return E===V.cellId||V.bridges.includes(E)||A8(E,V.C).includes(V.cellId)&&S(u$(L,V.C),V.roster,V.C)===L},T=(V)=>z.set.size<2&&(X.set?.size??0)<2||I(z,V)||Date.now()<K&&I(X,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=iJ(V.length,J);G=Math.ceil(V.length/L);let E=`cell-${u$(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-${u$(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)=>u$(r,L)))){let r=`cell-${y}`;for(let B$ of A8(r,L)){if(l0(B$)<y)continue;for(let q$ of[L$(y),L$(l0(B$))]){if(!q$)continue;let T8=`cell-${u$(q$,L)}`===r?B$:r,d0=F.get(q$)??[];if(!d0.includes(T8))d0.push(T8);if(F.set(q$,d0),d(r).add(q$),d(B$).add(q$),r===E||B$===E)s.add(q$)}}}let e=F.get(p)??[],Y$=z.cellId!==E||String(z.bridges)!==String(e);X=z,z={epoch:z.epoch+1,roster:V,set:new Set(V),key:V.join("|"),C:L,cellId:E,isBridge:e.length>0,bridges:e,edgeBridges:[...s],audience:l},Y=Date.now(),u.clear();for(let y of V){let r=F.get(y)??[];u.set(y,{cell:`cell-${u$(y,L)}`,isBridge:r.length>0,bridges:r})}if(K=Date.now()+dJ,Y$)M();log.info("\uD83D\uDD78️ [Cells] seal",{epoch:z.epoch,myCell:E,bridges:e,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>=hJ||E-Z>=cJ:E-Z>=lJ)Z=0,J$(V)}if(K&&Date.now()>=K)K=0,x()},f=()=>{if(C)return;C=setInterval(()=>{if(U$(),Date.now()-R>=pJ)o()},mJ)},G$=()=>{if(C)clearInterval(C),C=null},$$=(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"))},FJ);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:$$,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:Y,peerId:L});return V},getCellSize:()=>G,destroy:()=>{G$(),Q$.forEach((V)=>clearTimeout(V.timeout)),Q$.clear()}}}function hQ($,Q,q){let J={},G=h0({...$,admit:(Z)=>J.admit?.(Z)??!0},Q,q),z=$.overlay||{},X=aJ(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,Y)=>{if(Y){let U=[].concat(Y),A=G.getPeers?.()||{};if(U.every((C)=>A[C]))return D.send(R,Y)}X.send({_ch:Z,_d:R,_t:Y})},on:(R,Y)=>{if(R==="message")X.on("message",(U,A)=>{if(U?._ch!==Z)return;if(U._t&&![].concat(U._t).includes(p))return;Y(U._d,A)}),D.on(R,Y);else D.on(R,Y)},off:(R,Y)=>D.off?.(R,Y),_original:D};return K.set(Z,N),N},get id(){return G.id},get peers(){return G.peers},getPeers:()=>G.getPeers?.()||{},mesh:X,_room:G,getState:()=>X.getState(),getPeerInfo:()=>X.getPeerInfo(),ping:(Z)=>X.ping(Z),leave:()=>{X.destroy(),K.clear(),G.leave()},destroy:()=>{X.destroy(),K.clear()}}}var Uq=($,Q,q)=>$?.cells||$?.overlay?hQ($,Q,q):h0($,Q,q);export{p as selfId,Uq as join,FQ as getRelaySockets};
var F$=typeof globalThis==="object"&&"crypto"in globalThis?globalThis.crypto:void 0;/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function m$($){return $ instanceof Uint8Array||ArrayBuffer.isView($)&&$.constructor.name==="Uint8Array"}function q0($){if(!Number.isSafeInteger($)||$<0)throw Error("positive integer expected, got "+$)}function A$($,...Q){if(!m$($))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 a$($,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){A$($);let q=Q.outputLen;if($.length<q)throw Error("digestInto() expects output buffer of length at least "+q)}function h$(...$){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 C8=(()=>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$($),C8)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 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 c$($){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 X=L8($.charCodeAt(z)),K=L8($.charCodeAt(z+1));if(X===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]=X*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 A$($),$}function D$(...$){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 k8($){let Q=(J)=>$().update(G0(J)).digest(),q=$();return Q.outputLen=q.outputLen,Q.blockLen=q.blockLen,Q.create=()=>$(),Q}function l$($=32){if(F$&&typeof F$.getRandomValues==="function")return F$.getRandomValues(new Uint8Array($));if(F$&&typeof F$.randomBytes==="function")return Uint8Array.from(F$.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),X=Number(q>>G&z),K=Number(q&z),Z=J?4:0,D=J?0:4;$.setUint32(Q+Z,X,J),$.setUint32(Q+D,K,J)}function S8($,Q,q){return $&Q^~$&q}function P8($,Q,q){return $&Q^$&q^Q&q}class p0 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($){a$(this),$=G0($),A$($);let{view:Q,buffer:q,blockLen:J}=this,G=$.length;for(let z=0;z<G;){let X=Math.min(J-this.pos,G-z);if(X===J){let K=A0($);for(;J<=G-z;z+=J)this.process(K,z);continue}if(q.set($.subarray(z,z+X),this.pos),this.pos+=X,z+=X,this.pos===J)this.process(Q,0),this.pos=0}return this.length+=$.length,this.roundClean(),this}digestInto($){a$(this),w8($,this),this.finished=!0;let{buffer:Q,view:q,blockLen:J,isLE:G}=this,{pos:z}=this;if(Q[z++]=128,h$(this.buffer.subarray(z)),this.padOffset>J-z)this.process(q,0),z=0;for(let N=z;N<J;N++)Q[N]=0;lQ(q,J-8,BigInt(this.length*8),G),this.process(q,0);let X=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++)X.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:X}=this;if($.destroyed=z,$.finished=G,$.length=J,$.pos=X,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 I8 extends p0{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:X,H:K}=this;return[$,Q,q,J,G,z,X,K]}set($,Q,q,J,G,z,X,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=X|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],Y=v$[N-2],U=R$(R,7)^R$(R,18)^R>>>3,A=R$(Y,17)^R$(Y,19)^Y>>>10;v$[N]=A+v$[N-7]+U+v$[N-16]|0}let{A:q,B:J,C:G,D:z,E:X,F:K,G:Z,H:D}=this;for(let N=0;N<64;N++){let R=R$(X,6)^R$(X,11)^R$(X,25),Y=D+R+S8(X,K,Z)+dQ[N]+v$[N]|0,A=(R$(q,2)^R$(q,13)^R$(q,22))+P8(q,J,G)|0;D=Z,Z=K,K=X,X=z+Y|0,z=G,G=J,J=q,q=Y+A|0}q=q+this.A|0,J=J+this.B|0,G=G+this.C|0,z=z+this.D|0,X=X+this.E|0,K=K+this.F|0,Z=Z+this.G|0,D=D+this.H|0,this.set(q,J,G,z,X,K,Z,D)}roundClean(){h$(v$)}destroy(){this.set(0,0,0,0,0,0,0,0),h$(this.buffer)}}var T0=k8(()=>new I8);class o0 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),h$(G)}update($){return a$(this),this.iHash.update($),this}digestInto($){a$(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:X}=this;return $=$,$.finished=J,$.destroyed=G,$.blockLen=z,$.outputLen=X,$.oHash=Q._cloneInto($.oHash),$.iHash=q._cloneInto($.iHash),$}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}var i0=($,Q,q)=>new o0($,Q).update(q).digest();i0.create=($,Q)=>new o0($,Q);/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var n0=BigInt(0),r0=BigInt(1);function X0($,Q=""){if(typeof $!=="boolean"){let q=Q&&`"${Q}"`;throw Error(q+"expected boolean, got type="+typeof $)}return $}function _$($,Q,q=""){let J=m$($),G=$?.length,z=Q!==void 0;if(!J||z&&G!==Q){let X=q&&`"${q}" `,K=z?` of length ${Q}`:"",Z=J?`length=${G}`:`type=${typeof $}`;throw Error(X+"expected Uint8Array"+K+", got "+Z)}return $}function Y0($){let Q=$.toString(16);return Q.length&1?"0"+Q:Q}function E8($){if(typeof $!=="string")throw Error("hex string expected, got "+typeof $);return $===""?n0:BigInt("0x"+$)}function S$($){return E8(C$($))}function s0($){return A$($),E8(C$(Uint8Array.from($).reverse()))}function r$($,Q){return c$($.toString(16).padStart(Q*2,"0"))}function t0($,Q){return r$($,Q).reverse()}function n($,Q,q){let J;if(typeof Q==="string")try{J=c$(Q)}catch(z){throw Error($+" must be hex string or Uint8Array, cause: "+z)}else if(m$(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"&&n0<=$;function Z0($,Q,q){return a0($)&&a0(Q)&&a0(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;$>n0;$>>=r0,Q+=1);return Q}var b$=($)=>(r0<<BigInt($))-r0;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($),X=J($),K=0,Z=()=>{z.fill(1),X.fill(0),K=0},D=(...U)=>q(X,z,...U),N=(U=J(0))=>{if(X=D(G(0),U),z=D(),U.length===0)return;X=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,X){let K=$[G];if(X&&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 e0($){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),d$=BigInt(2),y8=BigInt(3),g8=BigInt(4),u8=BigInt(5),pQ=BigInt(7),F8=BigInt(8),oQ=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$,X=Z$,K=j$;while(q!==j$){let D=J/q,N=J%q,R=G-X*D,Y=z-K*D;J=q,q=N,G=X,z=K,X=R,K=Y}if(J!==Z$)throw Error("invert: does not exist");return V$(G,Q)}function $8($,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 $8($,J,Q),J}function iQ($,Q){let q=($.ORDER-u8)/F8,J=$.mul(Q,d$),G=$.pow(J,q),z=$.mul(Q,G),X=$.mul($.mul(z,d$),G),K=$.mul(z,$.sub(X,$.ONE));return $8($,K,Q),K}function aQ($){let Q=f$($),q=c8($),J=q(Q,Q.neg(Q.ONE)),G=q(Q,J),z=q(Q,Q.neg(J)),X=($+pQ)/m8;return(K,Z)=>{let D=K.pow(Z,X),N=K.mul(D,J),R=K.mul(D,G),Y=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(Y,R,A);let C=K.eql(K.sqr(N),Z),u=K.cmov(D,N,C);return $8(K,u,Z),u}}function c8($){if($<y8)throw Error("sqrt is not defined for small field");let Q=$-Z$,q=0;while(Q%d$===j$)Q/=d$,q++;let J=d$,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),X=(Q+Z$)/d$;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),Y=Z.pow(D,Q),U=Z.pow(D,X);while(!Z.eql(Y,Z.ONE)){if(Z.is0(Y))return Z.ZERO;let A=1,C=Z.sqr(Y);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),Y=Z.mul(Y,R),U=Z.mul(U,h)}return U}}function rQ($){if($%g8===y8)return h8;if($%F8===u8)return iQ;if($%m8===oQ)return aQ($);return c8($)}var nQ=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Q8($){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<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((X,K,Z)=>{if($.is0(K))return X;return J[Z]=X,$.mul(X,K)},$.ONE),z=$.inv(G);return Q.reduceRight((X,K,Z)=>{if($.is0(K))return X;return J[Z]=$.mul(X,J[Z]),$.mul(X,K)},z),J}function f8($,Q){let q=($.ORDER-Z$)/d$,J=$.pow(Q,q),G=$.eql(J,$.ONE),z=$.eql(J,$.ZERO),X=$.eql(J,$.neg($.ONE));if(!G&&!z&&!X)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,X=!1,K=void 0;if(typeof Q==="object"&&Q!=null){if(J.sqrt||q)throw Error("cannot specify opts in two arguments");let Y=Q;if(Y.BITS)G=Y.BITS;if(Y.sqrt)z=Y.sqrt;if(typeof Y.isLE==="boolean")q=Y.isLE;if(typeof Y.modFromBytes==="boolean")X=Y.modFromBytes;K=Y.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:(Y)=>V$(Y,$),isValid:(Y)=>{if(typeof Y!=="bigint")throw Error("invalid field element: expected bigint, got "+typeof Y);return j$<=Y&&Y<$},is0:(Y)=>Y===j$,isValidNot0:(Y)=>!R.is0(Y)&&R.isValid(Y),isOdd:(Y)=>(Y&Z$)===Z$,neg:(Y)=>V$(-Y,$),eql:(Y,U)=>Y===U,sqr:(Y)=>V$(Y*Y,$),add:(Y,U)=>V$(Y+U,$),sub:(Y,U)=>V$(Y-U,$),mul:(Y,U)=>V$(Y*U,$),pow:(Y,U)=>sQ(R,Y,U),div:(Y,U)=>V$(Y*b8(U,$),$),sqrN:(Y)=>Y*Y,addN:(Y,U)=>Y+U,subN:(Y,U)=>Y-U,mulN:(Y,U)=>Y*U,inv:(Y)=>b8(Y,$),sqrt:z||((Y)=>{if(!N)N=rQ($);return N(R,Y)}),toBytes:(Y)=>q?t0(Y,D):r$(Y,D),fromBytes:(Y,U=!0)=>{if(K){if(!K.includes(Y.length)||Y.length>D)throw Error("Field.fromBytes: expected "+K+" bytes, got "+Y.length);let C=new Uint8Array(D);C.set(Y,q?0:C.length-Y.length),Y=C}if(Y.length!==D)throw Error("Field.fromBytes: expected "+D+" bytes, got "+Y.length);let A=q?s0(Y):S$(Y);if(X)A=V$(A,$);if(!U){if(!R.isValid(A))throw Error("invalid field element: outside of range 0..ORDER")}return A},invertBatch:(Y)=>w0(R,Y),cmov:(Y,U,A)=>A?U:Y});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 J8($){let Q=l8($);return Q+Math.ceil(Q/2)}function k0($,Q,q=!1){let J=$.length,G=l8(Q),z=J8(Q);if(J<16||J<z||J>1024)throw Error("expected "+z+"-1024 bytes of input, got "+J);let X=q?s0($):S$($),K=V$(X,Q-Z$)+Z$;return q?t0(K,G):r$(K,G)}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var n$=BigInt(0),p$=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 q8($,Q){i8($,Q);let q=Math.ceil(Q/$)+1,J=2**($-1),G=2**$,z=b$($),X=BigInt($);return{windows:q,windowSize:J,mask:z,maxNumber:G,shiftBy:X}}function d8($,Q,q){let{windowSize:J,mask:G,maxNumber:z,shiftBy:X}=q,K=Number($&G),Z=$>>X;if(K>J)K-=z,Z+=p$;let D=Q*J,N=D+Math.abs(K)-1,R=K===0,Y=K<0,U=Q%2!==0;return{nextN:Z,offset:N,isZero:R,isNeg:Y,isNegF:U,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 G8=new WeakMap,a8=new WeakMap;function z8($){return a8.get($)||1}function p8($){if($!==n$)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>n$){if(Q&p$)q=q.add(J);J=J.double(),Q>>=p$}return q}precomputeWindow($,Q){let{windows:q,windowSize:J}=q8(Q,this.bits),G=[],z=$,X=z;for(let K=0;K<q;K++){X=z,G.push(X);for(let Z=1;Z<J;Z++)X=X.add(z),G.push(X);z=X.double()}return G}wNAF($,Q,q){if(!this.Fn.isValid(q))throw Error("invalid scalar");let J=this.ZERO,G=this.BASE,z=q8($,this.bits);for(let X=0;X<z.windows;X++){let{nextN:K,offset:Z,isZero:D,isNeg:N,isNegF:R,offsetF:Y}=d8(q,X,z);if(q=K,D)G=G.add(U0(R,Q[Y]));else J=J.add(U0(N,Q[Z]))}return p8(q),{p:J,f:G}}wNAFUnsafe($,Q,q,J=this.ZERO){let G=q8($,this.bits);for(let z=0;z<G.windows;z++){if(q===n$)break;let{nextN:X,offset:K,isZero:Z,isNeg:D}=d8(q,z,G);if(q=X,Z)continue;else{let N=Q[K];J=J.add(D?N.negate():N)}}return p8(q),J}getPrecomputes($,Q,q){let J=G8.get(Q);if(!J){if(J=this.precomputeWindow(Q,$),$!==1){if(typeof q==="function")J=q(J);G8.set(Q,J)}}return J}cached($,Q,q){let J=z8($);return this.wNAF(J,this.getPrecomputes(J,$,q),Q)}unsafe($,Q,q,J){let G=z8($);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),G8.delete($)}hasCache($){return z8($)!==1}}function r8($,Q,q,J){let G=Q,z=$.ZERO,X=$.ZERO;while(q>n$||J>n$){if(q&p$)z=z.add(G);if(J&p$)X=X.add(G);G=G.double(),q>>=p$,J>>=p$}return{p1:z,p2:X}}function n8($,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 X=$.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(X),R=Math.floor((Q.BITS-1)/Z)*Z,Y=X;for(let U=R;U>=0;U-=Z){N.fill(X);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=X;for(let C=N.length-1,u=X;C>0;C--)u=u.add(N[C]),A=A.add(u);if(Y=Y.add(A),U!==0)for(let C=0;C<Z;C++)Y=Y.double()}return Y}function o8($,Q,q){if(Q){if(Q.ORDER!==$)throw Error("Field.ORDER must match order: Fp == p, Fn == n");return Q8(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>n$))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 $J($,Q,q){let[[J,G],[z,X]]=Q,K=t8(X*$,q),Z=t8(-G*$,q),D=$-K*J-Z*z,N=-K*G-Z*X,R=D<I$,Y=N<I$;if(R)D=-D;if(Y)N=-N;let U=b$(Math.ceil(L0(q)/2))+s$;if(D<I$||D>=U||N<I$||N>=U)throw Error("splitScalar (endomorphism): failed, k="+$);return{k1neg:R,k1:D,k2neg:Y,k2:N}}function Z8($){if(!["compact","recovered","der"].includes($))throw Error('Signature format must be "compact", "recovered", or "der"');return $}function Y8($,Q){let q={};for(let J of Object.keys(Q))q[J]=$[J]===void 0?Q[J]:$[J];if(X0(q.lowS,"lowS"),X0(q.prehash,"prehash"),q.format!==void 0)Z8(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=Y0(J);if(G.length/2&128)throw new q("tlv.encode: long form length too big");let z=J>127?Y0(G.length/2|128):"";return Y0($)+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),X=0;if(!z)X=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)X=X<<8|N;if(J+=Z,X<128)throw new q("tlv.decode(long): not minimal encoding")}let K=Q.subarray(J,J+X);if(K.length!==X)throw new q("tlv.decode: wrong value length");return{v:K,l:Q.subarray(J+X)}}},_int:{encode($){let{Err:Q}=P$;if($<I$)throw new Q("integer: negative integers are not allowed");let q=Y0($);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:X}=J.decode(48,G);if(X.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),s$=BigInt(1),$Q=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=s8("weierstrass",$,Q),{Fp:J,Fn:G}=q,z=q.CURVE,{h:X,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(X0(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 Y(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||Y;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),QJ),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 $J(O,Z.basises,G.ORDER)}let Q$=e0((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$=e0((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 X$(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=X$(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===s$)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 X$(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(X===s$)return!0;if(O)return O(g,this);return W$.unsafe(this,K).is0()}clearCofactor(){let{clearCofactor:O}=Q;if(X===s$)return this;if(O)return O(g,this);return this.multiplyUnsafe(X)}isSmallOrder(){return this.multiplyUnsafe(X).is0()}toBytes(O=!0){return X0(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 qJ($,Q={}){let{Fn:q}=$,J=Q.randomBytes||l$,G=Object.assign(JQ($.Fp,q),{seed:J8(q.ORDER)});function z(U){try{return!!y$(q,U)}catch(A){return!1}}function X(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:X,randomSecretKey:K,isValidPrivateKey:z,randomPrivateKey:K,normPrivateKeyToScalar:(U)=>y$(q,U),precompute(U=8,A=$.BASE){return A.precompute(U,!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||l$,G=q.hmac||((W,...B)=>i0(Q,W,D$(...B))),{Fp:z,Fn:X}=$,{ORDER:K,BITS:Z}=X,{keygen:D,getPublicKey:N,getSharedSecret:R,utils:Y,lengths:U}=qJ($,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>>s$;return W>B}function h(W,B){if(!X.isValidNot0(B))throw Error(`invalid signature ${W}: out of range 1..Point.Fn.ORDER`);return B}function i(W,B){Z8(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=X.BYTES,P=W.subarray(0,v),_=W.subarray(v,v*2);return new c(X.fromBytes(P),X.fromBytes(_),w)}static fromHex(W,B){return this.fromBytes(c$(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=X.inv(S),M=a(n("msgHash",W)),I=X.create(-M*j),T=X.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(Z8(W),W==="der")return c$(P$.hexFromSig(this));let B=X.toBytes(this.r),w=X.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,X.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 X.create(z$(B))},Q$=b$(Z);function K$(W){return v8("num < 2^"+Z,W,I$,Q$),X.toBytes(W)}function X$(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:_}=Y8(w,A);W=X$(W,P);let S=a(W),H=y$(X,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(!X.isValidNot0(x))return;let m=X.inv(x),o=$.BASE.multiply(x).toAffine(),J$=X.create(o.x);if(J$===I$)return;let U$=X.create(m*X.create(M+J$*H));if(U$===I$)return;let f=(o.x===J$?0:2)|Number(o.y&s$),G$=U$;if(v&&u(U$))G$=X.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,X.BYTES,G)(v,P)}function W$(W){let B=void 0,w=typeof W==="string"||m$(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}=Y8(v,A);if(w=n("publicKey",w),B=X$(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=X.inv(M),x=X.create(I*T),m=X.create(j*T),o=$.BASE.multiplyUnsafe(x).add(b.multiplyUnsafe(m));if(o.is0())return!1;return X.create(o.x)===j}catch(b){return!1}}function k(W,B,w={}){let{prehash:v}=Y8(w,A);return B=X$(B,v),c.fromBytes(W,"recovered").recoverPublicKey(B).toBytes()}return Object.freeze({keygen:D,getPublicKey:N,getSharedSecret:R,utils:Y,lengths:U,Point:$,sign:O$,verify:O,recoverPublicKey:k,Signature:c,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((X)=>Math.ceil(X/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}=zJ($),J={hmac:$.hmac,randomBytes:$.randomBytes,lowS:$.lowS,bits2int:$.bits2int,bits2int_modN:$.bits2int_modN};return{CURVE:Q,curveOpts:q,hash:$.hash,ecdsaOpts:J}}function YJ($,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=JJ(Q,q),X=GJ(z,J,G);return YJ($,X)}/*! 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 t$={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),zQ=BigInt(1),K8=BigInt(2);function UJ($){let Q=t$.p,q=BigInt(3),J=BigInt(6),G=BigInt(11),z=BigInt(22),X=BigInt(23),K=BigInt(44),Z=BigInt(88),D=$*$*$%Q,N=D*D*$%Q,R=N$(N,q,Q)*N%Q,Y=N$(R,q,Q)*N%Q,U=N$(Y,K8,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,X,Q)*A%Q,a=N$(z$,J,Q)*D%Q,Q$=N$(a,K8,Q);if(!I0.eql(I0.sqr(Q$),$))throw Error("Cannot find square root");return Q$}var I0=f$(t$.p,{sqrt:UJ}),ZQ=GQ({...t$,Fp:I0,lowS:!0,endo:ZJ},T0),XQ={};function E0($,...Q){let q=XQ[$];if(q===void 0){let J=T0(R0($));q=D$(J,J),XQ[$]=q}return T0(D$(q,...Q))}var j8=($)=>$.toBytes(!0).slice(1),e$=(()=>ZQ.Point)(),W8=($)=>$%K8===KJ;function U8($){let{Fn:Q,BASE:q}=e$,J=y$(Q,$),G=q.multiply(J);return{scalar:W8(G.y)?J:Q.neg(J),bytes:j8(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(!W8(G))G=Q.neg(G);let z=e$.fromAffine({x:$,y:G});return z.assertValidity(),z}var j0=S$;function UQ(...$){return e$.Fn.create(j0(E0("BIP0340/challenge",...$)))}function YQ($){return U8($).bytes}function jJ($,Q,q=l$(32)){let{Fn:J}=e$,G=n("message",$),{bytes:z,scalar:X}=U8(Q),K=n("auxRand",q,32),Z=J.toBytes(X^j0(E0("BIP0340/aux",K))),D=E0("BIP0340/nonce",Z,z,G),{bytes:N,scalar:R}=U8(D),Y=UQ(N,z,G),U=new Uint8Array(64);if(U.set(N,0),U.set(J.toBytes(J.create(R+Y*X)),32),!jQ(U,G,z))throw Error("sign: Invalid signature produced");return U}function jQ($,Q,q){let{Fn:J,BASE:G}=e$,z=n("signature",$,64),X=n("message",Q),K=n("publicKey",q,32);try{let Z=KQ(j0(K)),D=j0(z.subarray(0,32));if(!Z0(D,zQ,t$.p))return!1;let N=j0(z.subarray(32,64));if(!Z0(N,zQ,t$.n))return!1;let R=UQ(J.toBytes(D),j8(Z),X),Y=G.multiplyUnsafe(N).add(Z.multiplyUnsafe(J.neg(R))),{x:U,y:A}=Y.toAffine();if(Y.is0()||!W8(A)||U!==D)return!1;return!0}catch(Z){return!1}}var v0=(()=>{let q=(G=l$(48))=>{return k0(G,t$.n)};ZQ.utils.randomSecretKey;function J(G){let z=q(G);return{secretKey:z,publicKey:YQ(z)}}return{keygen:J,getPublicKey:YQ,sign:jJ,verify:jQ,Point:e$,utils:{randomSecretKey:q,randomPrivateKey:q,taggedHash:E0,lift_x:KQ,pointToBytes:j8,numberToBytesBE:r$,bytesToNumberBE:S$,mod:V$},lengths:{secretKey:32,publicKey:32,publicKeyHasPrefix:!1,signature:64,seed:48}}})();var WJ=new TextEncoder,DJ=new TextDecoder,T$=($)=>WJ.encode($),o$=($)=>DJ.decode($),_0=($)=>Array.from($,(Q)=>Q.toString(16).padStart(2,"0")).join(""),H$=JSON.stringify,i$=JSON.parse,D8=($,Q=Number.MAX_SAFE_INTEGER)=>$.split("").reduce((q,J)=>q+J.charCodeAt(0),0)%Q;var M8="AES-GCM",MJ={},WQ="$",DQ=",",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",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}${VJ(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 $,X=await crypto.subtle.decrypt({name:M8,iv:G},z,NJ(J));return o$(X)};var M$="GenosRTC",g$=($,Q)=>Array.from({length:$},Q);var $0=($)=>Array.from(crypto.getRandomValues(new Uint8Array($)),(Q)=>"0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"[Q%62]).join(""),p=typeof sessionStorage<"u"?sessionStorage.__genosrtcId??=$0(20):$0(20),E$=Promise.all.bind(Promise),HQ=typeof window<"u",{entries:OQ,fromEntries:b0,keys:g9}=Object,V8=()=>{},x$=($)=>Error(`GenosRTC: ${$}`),D0=(...$)=>$.join("@");var HJ=5000,BQ="icegatheringstatechange",xQ="offer",OJ="answer",BJ=[...g$(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:[...BJ,...J||[]],...Q}),z={},X=!1,K=!1,Z,D=(Y)=>Object.assign(Y,{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((Y)=>{let U=()=>{if(G.iceGatheringState==="complete")G.removeEventListener(BQ,U),Y()};G.addEventListener(BQ,U),U()}),new Promise((Y)=>setTimeout(Y,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:Y})=>D(Z=Y),G.onnegotiationneeded=async()=>{try{X=!0,await G.setLocalDescription(),z.signal?.(await N())}catch(Y){z.error?.(Y)}finally{X=!1}},G.onconnectionstatechange=()=>{if(["disconnected","failed","closed"].includes(G.connectionState))z.close?.()},G.ontrack=(Y)=>{z.track?.(Y.track,Y.streams[0]),z.stream?.(Y.streams[0])},G.onremovestream=(Y)=>z.stream?.(Y.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(Y){if(Z?.readyState==="open"&&!Y.sdp?.includes("a=rtpmap"))return;try{if(Y.type===xQ){if(X||G.signalingState!=="stable"&&!K){if($)return;await E$([G.setLocalDescription({type:"rollback"}),G.setRemoteDescription(Y)])}else await G.setRemoteDescription(Y);await G.setLocalDescription();let U=await N();return z.signal?.(U),U}if(Y.type===OJ){K=!0;try{await G.setRemoteDescription(Y)}finally{K=!1}}}catch(U){z.error?.(U)}},sendData:(Y)=>{if(Z?.readyState!=="open")return!1;return Z.send(Y),!0},destroy:()=>{Z?.close(),G.close(),X=K=!1},setHandlers:(Y)=>Object.assign(z,Y),offerPromise:$?new Promise((Y)=>z.signal=(U)=>U.type===xQ&&Y(U)):Promise.resolve(),addStream:(Y)=>Y.getTracks().forEach((U)=>G.addTrack(U,Y)),removeStream:(Y)=>R().filter((U)=>Y.getTracks().includes(U.track)).forEach((U)=>G.removeTrack(U)),addTrack:(Y,U)=>G.addTrack(Y,U),removeTrack:(Y)=>{let U=R().find((A)=>A.track===Y);if(U)G.removeTrack(U)},replaceTrack:(Y,U)=>R().find((A)=>A.track===Y)?.replaceTrack(U)}};var xJ=Object.getPrototypeOf(Uint8Array),y0=12,TQ=0,g0=TQ+y0,u0=g0+1,V0=u0+1,N0=V0+1,M0=16384-N0,f0=255,H8="bufferedamountlow",Q0=($)=>`@_${$}`,AQ=Q0("ping"),O8=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,G)=>{let z=new Map,X=new Map,K=new Map,Z={},D={},N={},R={},Y=new Map,U=new Map,A=Promise.resolve(),C=(j,M)=>{if(!Y.has(j))Y.set(j,new Set);Y.get(j).add(M)},u=(j,M)=>Y.get(j)?.delete(M),h=(j,...M)=>Y.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 x$("action type is required");let M=T$(j);if(M.byteLength>y0)throw x$(`❌ "${j}" exceeds ${y0} bytes. Use a shorter name.`);let I=new Uint8Array(y0).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$,$$,V)=>{if($$&&typeof $$!=="object")throw x$("meta must be object");if(f===void 0)throw x$("data cannot be undefined");let L=f instanceof Blob,E=L||f instanceof ArrayBuffer||f instanceof xJ,F=typeof f!=="string";if($$&&!E)throw x$("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>=TJ){let e=await RQ(s,CompressionStream);if(e.byteLength<s.byteLength)s=e,l=1}let d=$$?T$(H$($$)):null,t=Math.ceil(s.byteLength/M0)+($$?1:0)||1;if(t>O8)throw x$(`Message too large, exceeds max chunks ${O8}`);let L$=g$(t,(e,Y$)=>{let y=Y$===t-1,r=$$&&Y$===0,B$=r?d:s.subarray($$?(Y$-1)*M0:Y$*M0,$$?Y$*M0:(Y$+1)*M0),q$=new Uint8Array(N0+B$.byteLength);return q$.set(I),q$.set([T],g0),q$.set([y|r<<1|E<<2|F<<3|l<<4],u0),q$.set([Math.round((Y$+1)/t*f0)],V0),q$.set(B$,N0),q$});return T=T+1&f0,E$(i(G$,async(e,Y$)=>{let{channel:y}=Y$;for(let r=0;r<t;r++){let B$=0;while(y.bufferedAmount>y.bufferedAmountLowThreshold){if(B$++>AJ)throw x$(`${M$}: send buffer full, max retries reached for peer ${e}`);try{await z$(y)}catch(q$){console.warn(q$.message),await new Promise((R8)=>setTimeout(R8,RJ))}}if(!z.has(e))break;if(!Y$.sendData(L$[r]))throw x$(`channel not open for peer ${e}`);V?.(L$[r][V0]/f0,e,$$)}}))};X.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=o$(I.subarray(TQ,g0)).replace(/\x00/g,"");if(!X.has(T))return console.warn(`${M$}: unregistered type (${T})`);if(T===AQ){g("",j).catch(()=>{});return}let[x]=I.subarray(g0,u0),[m]=I.subarray(u0,V0),[o]=I.subarray(V0,N0),J$=I.subarray(N0),U$=Boolean(m&1),f=Boolean(m&2),G$=Boolean(m&4),$$=Boolean(m&8),V=Boolean(m&16),L=X.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=i$(o$(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/f0,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 RQ(s,DecompressionStream):s,d;if(G$)d=l;else if($$)try{d=i$(o$(l))}catch{console.warn(`${M$}: failed to parse JSON message data from peer ${j} for type ${T}`);return}else d=o$(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:X$}=a(AQ),{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),X$("",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 x$("ping() requires target peer ID");let M=Date.now();return X$("",j),await new Promise((I)=>D[j]=I),Date.now()-M},getPeers:()=>b0(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 LJ=5,wJ=10,CJ=2500,F0=57333,wQ=({init:$,subscribe:Q,announce:q,bye:J})=>{let G={},z=!1,X,K;return(Z,D,N)=>{let{appId:R}=Z;if(G[R]?.[D])return G[R][D];if(!Z||!D||!R&&!Z.firebaseApp)throw x$(!Z?"config required":!D?"roomId required":"appId missing");let Y=V8,U=V8;if(!z){let H=$(Z);K=g$(LJ,()=>{try{return N8(!0,Z)}catch{return null}}).filter(Boolean),X=Array.isArray(H)?H:[H];let b=setInterval(()=>{K=K.filter((j)=>{let M=Date.now()-j.created<F0;if(!M)j.destroy();return M})},F0);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),X$=(H)=>async(b)=>({type:b.type,sdp:await H(K$,b.sdp)}),g=X$(NQ),O$=X$(VQ),W$=(H)=>{return setTimeout(()=>{if(!H.isDead&&!Object.values(C).includes(H))H.destroy()},F0),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,Y(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"?i$(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[$$,V]=await E$([W0(D0(z$,x)),f.signal(G$).then(O$)]);M($$,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)>F0)){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)>=wJ)return;let $$=K.pop(),V=$$?W$($$):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));X.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:CJ)};T()}),G[R]||={};let S=LQ((H)=>Y=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 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=(X)=>Q(X.data),q.socket=z,q.url=z.url,q.ready=new Promise((X)=>{z.onopen=()=>{H0[$]=CQ,X(q),q.reopenHandlers.forEach((K)=>K())}}),q.send=(X)=>{if(z.readyState===1)z.send(X)}};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=($)=>()=>b0(OQ($).map(([Q,q])=>[Q,q.socket]));var J0={},SJ=10,vQ="x",_Q="EVENT",PJ=/pow:\s*(\d+)\s*bits needed\.?/i,m0=new Set,bQ=v0.utils.randomSecretKey(),IJ=_0(v0.getPublicKey(bQ)),x8={},O0={},EJ={},fQ=()=>Math.floor(Date.now()/1000),yQ=($)=>EJ[$]??=D8($,1e4)+20000,B0=($)=>$.replace(/\/$/,""),vJ="https://cdn.jsdelivr.net/gh/estebanrfp/gdb@main/relays.json",gQ=($)=>Array.isArray($)?[...new Set($.filter((Q)=>Q?.startsWith?.("wss://")))]:[],uQ="genosrtc_relays",_J=()=>{try{return gQ(JSON.parse(globalThis.localStorage?.getItem(uQ)))}catch{return[]}},bJ=()=>fetch(`${vJ}?r=${Math.random().toString(36).slice(2)}`,{signal:AbortSignal.timeout(5000)}).then(($)=>$.json()).then(gQ).then(($)=>($.length&&globalThis.localStorage?.setItem(uQ,JSON.stringify($)),$)).catch(()=>[]).then(($)=>($=$.length?$:_J(),$.length||log.warn("⚠️ [GenosRTC] Relay list unreachable - Pass rtc.relayUrls to override."),$)),fJ=($,Q)=>{let[q,J,G,z]=i$(Q);if(q===_Q)return O0[J]?.(x8[J],G.content);if(q==="NOTICE"||q==="OK"&&!G){if(+((q==="NOTICE"?J:z).match(PJ)?.[1]??0)>0){let K=B0($);m0.add(K),J0[K]?.close?.(),delete J0[K]}}},yJ=($)=>{let Q=B0($);if(J0[Q])return J0[Q];let q=SQ(Q,(J)=>fJ(Q,J));return J0[Q]=q},B8=async($,Q)=>{let q={kind:yQ($),content:Q,pubkey:IJ,created_at:fQ(),tags:[[vQ,$]]},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,bQ);return H$([_Q,{...q,id:_0(G),sig:_0(z)}])},IQ=($,Q)=>{return x8[$]=Q,H$(["REQ",$,{kinds:[yQ(Q)],since:fQ(),["#"+vQ]:[Q]}])},EQ=($)=>{return delete x8[$],H$(["CLOSE",$])},h0=wQ({init:($)=>{let Q=$?.relayUrls?.length?$.relayUrls:null,q=Q?Promise.resolve(Q):bJ(),J=Q?.length??$.relayRedundancy??SJ;return g$(J,(G,z)=>q.then((X)=>{let K=X[z]&&yJ(X[z]);return K?K.ready.then(()=>K).catch(()=>null):null}))},subscribe:($,Q,q,J)=>{let G=$0(64),z=$0(64);O0[G]=O0[z]=(K,Z)=>J(K,Z,async(D,N)=>{if(m0.has(B0($.url)))return;$.send(await B8(D,N))});let X=()=>{$.send(IQ(G,Q)),$.send(IQ(z,q))};return X(),$.reopenHandlers.add(X),()=>{$.reopenHandlers.delete(X),$.send(EQ(G)),$.send(EQ(z)),delete O0[G],delete O0[z]}},announce:async($,Q)=>{if(m0.has(B0($.url)))return;$.send(await B8(Q,H$({peerId:p})))},bye:async($,Q)=>{if(m0.has(B0($.url)))return;$.send(await B8(Q,H$({peerId:p,bye:1})))}}),FQ=PQ(J0);var gJ={cellSize:10},uJ=5000,FJ=3000,mJ=2000,hJ=2000,cJ=1e4,lJ=30000,dJ=5000,pJ=30000,l0=($)=>{let Q=String($||"").match(/cell-(\d+)/);return Q?Number(Q[1]):null},A8=($,Q)=>{let q=l0($);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},c0=($)=>`c${(l0($)||0).toString(36)}`,oJ=10,iJ=($,Q)=>{let q=+Q.cellSize>=2?Q.cellSize|0:oJ;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},u$=($,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 aJ($,Q={},q={}){let J={...gJ,...Q},G=1,z={epoch:0,roster:[p],set:new Set([p]),key:p,C:1,cellId:null,isBridge:!1,bridges:[],edgeBridges:[]},X={cellId:null},K=0,Z=0,D="",N=0,R=0,Y=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),X$=(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>uJ)c.delete(c.values().next().value)},P=()=>[...new Set([...$._census(),p])].sort(),_=(V,L,E)=>L.filter((F)=>u$(F,E)===V),S=(V,L,E)=>{if(V==null)return null;let F=(d)=>mQ(`${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)=>c0(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,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:e},r=$.getPeers?.()?.[t]?[t]:H(e);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 Y$=(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$||e};y.send(JSON.stringify(q$),r)};if(V===A){for(let y of X$(e))Y$(j(y),H(y));return}Y$(U,H(e));for(let y of X$(e))if(c0(y)!==V)Y$(j(y),H(y))},j=(V)=>{let L=c0(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=c0(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 X$(z.cellId))j(V)},I=(V,L)=>{if(!V.cellId||!V.set.has(L))return!1;let E=`cell-${u$(L,V.C)}`;return E===V.cellId||V.bridges.includes(E)||A8(E,V.C).includes(V.cellId)&&S(u$(L,V.C),V.roster,V.C)===L},T=(V)=>z.set.size<2&&(X.set?.size??0)<2||I(z,V)||Date.now()<K&&I(X,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=iJ(V.length,J);G=Math.ceil(V.length/L);let E=`cell-${u$(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-${u$(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)=>u$(r,L)))){let r=`cell-${y}`;for(let B$ of A8(r,L)){if(l0(B$)<y)continue;for(let q$ of[L$(y),L$(l0(B$))]){if(!q$)continue;let T8=`cell-${u$(q$,L)}`===r?B$:r,d0=F.get(q$)??[];if(!d0.includes(T8))d0.push(T8);if(F.set(q$,d0),d(r).add(q$),d(B$).add(q$),r===E||B$===E)s.add(q$)}}}let e=F.get(p)??[],Y$=z.cellId!==E||String(z.bridges)!==String(e);X=z,z={epoch:z.epoch+1,roster:V,set:new Set(V),key:V.join("|"),C:L,cellId:E,isBridge:e.length>0,bridges:e,edgeBridges:[...s],audience:l},Y=Date.now(),u.clear();for(let y of V){let r=F.get(y)??[];u.set(y,{cell:`cell-${u$(y,L)}`,isBridge:r.length>0,bridges:r})}if(K=Date.now()+dJ,Y$)M();log.info("\uD83D\uDD78️ [Cells] seal",{epoch:z.epoch,myCell:E,bridges:e,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>=hJ||E-Z>=cJ:E-Z>=lJ)Z=0,J$(V)}if(K&&Date.now()>=K)K=0,x()},f=()=>{if(C)return;C=setInterval(()=>{if(U$(),Date.now()-R>=pJ)o()},mJ)},G$=()=>{if(C)clearInterval(C),C=null},$$=(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"))},FJ);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:$$,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:Y,peerId:L});return V},getCellSize:()=>G,destroy:()=>{G$(),Q$.forEach((V)=>clearTimeout(V.timeout)),Q$.clear()}}}function hQ($,Q,q){let J={},G=h0({...$,admit:(Z)=>J.admit?.(Z)??!0},Q,q),z=$.overlay||{},X=aJ(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,Y)=>{if(Y){let U=[].concat(Y),A=G.getPeers?.()||{};if(U.every((C)=>A[C]))return D.send(R,Y)}X.send({_ch:Z,_d:R,_t:Y})},on:(R,Y)=>{if(R==="message")X.on("message",(U,A)=>{if(U?._ch!==Z)return;if(U._t&&![].concat(U._t).includes(p))return;Y(U._d,A)}),D.on(R,Y);else D.on(R,Y)},off:(R,Y)=>D.off?.(R,Y),_original:D};return K.set(Z,N),N},get id(){return G.id},get peers(){return G.peers},getPeers:()=>G.getPeers?.()||{},mesh:X,_room:G,getState:()=>X.getState(),getPeerInfo:()=>X.getPeerInfo(),ping:(Z)=>X.ping(Z),leave:()=>{X.destroy(),K.clear(),G.leave()},destroy:()=>{X.destroy(),K.clear()}}}var Uq=($,Q,q)=>$?.cells||$?.overlay?hQ($,Q,q):h0($,Q,q);export{p as selfId,Uq as join,FQ as getRelaySockets};
{
"name": "genosdb",
"version": "0.31.1",
"version": "0.31.3",
"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