hive-p2p 1.0.112 → 1.0.113

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  var Cs=Object.create;var Tn=Object.defineProperty;var ys=Object.getOwnPropertyDescriptor;var Qs=Object.getOwnPropertyNames;var bs=Object.getPrototypeOf,ws=Object.prototype.hasOwnProperty;var Fe=(a=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(a,{get:(t,e)=>(typeof require<"u"?require:t)[e]}):a)(function(a){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+a+'" is not supported')});var Et=(a,t)=>()=>(a&&(t=a(a=0)),t);var ms=(a,t)=>()=>(t||a((t={exports:{}}).exports,t),t.exports),Le=(a,t)=>{for(var e in t)Tn(a,e,{get:t[e],enumerable:!0})},Ss=(a,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Qs(t))!ws.call(a,r)&&r!==e&&Tn(a,r,{get:()=>t[r],enumerable:!(n=ys(t,r))||n.enumerable});return a};var _s=(a,t,e)=>(e=a!=null?Cs(bs(a)):{},Ss(t||!a||!a.__esModule?Tn(e,"default",{value:a,enumerable:!0}):e,a));var Rs={};var Dr=Et(()=>{(function(a){if(typeof exports=="object"&&typeof module<"u")module.exports=a();else if(typeof define=="function"&&define.amd)define([],a);else{var t;t=typeof window>"u"?typeof global>"u"?typeof self>"u"?this:self:global:window,t.SimplePeer=a()}})(function(){var a=Math.floor,t=Math.abs,e=Math.pow;return(function(){function n(r,s,o){function f(u,I){if(!s[u]){if(!r[u]){var l=typeof Fe=="function"&&Fe;if(!I&&l)return l(u,!0);if(h)return h(u,!0);var C=new Error("Cannot find module '"+u+"'");throw C.code="MODULE_NOT_FOUND",C}var B=s[u]={exports:{}};r[u][0].call(B.exports,function(y){var m=r[u][1][y];return f(m||y)},B,B.exports,n,r,s,o)}return s[u].exports}for(var h=typeof Fe=="function"&&Fe,c=0;c<o.length;c++)f(o[c]);return f}return n})()({1:[function(n,r,s){"use strict";function o(p){var E=p.length;if(0<E%4)throw new Error("Invalid string. Length must be a multiple of 4");var S=p.indexOf("=");S===-1&&(S=E);var b=S===E?0:4-S%4;return[S,b]}function f(p,E,S){return 3*(E+S)/4-S}function h(p){var E,S,b=o(p),R=b[0],v=b[1],Q=new B(f(p,R,v)),w=0,D=0<v?R-4:R;for(S=0;S<D;S+=4)E=C[p.charCodeAt(S)]<<18|C[p.charCodeAt(S+1)]<<12|C[p.charCodeAt(S+2)]<<6|C[p.charCodeAt(S+3)],Q[w++]=255&E>>16,Q[w++]=255&E>>8,Q[w++]=255&E;return v===2&&(E=C[p.charCodeAt(S)]<<2|C[p.charCodeAt(S+1)]>>4,Q[w++]=255&E),v===1&&(E=C[p.charCodeAt(S)]<<10|C[p.charCodeAt(S+1)]<<4|C[p.charCodeAt(S+2)]>>2,Q[w++]=255&E>>8,Q[w++]=255&E),Q}function c(p){return l[63&p>>18]+l[63&p>>12]+l[63&p>>6]+l[63&p]}function u(p,E,S){for(var b,R=[],v=E;v<S;v+=3)b=(16711680&p[v]<<16)+(65280&p[v+1]<<8)+(255&p[v+2]),R.push(c(b));return R.join("")}function I(p){for(var E,S=p.length,b=S%3,R=[],v=16383,Q=0,w=S-b;Q<w;Q+=v)R.push(u(p,Q,Q+v>w?w:Q+v));return b===1?(E=p[S-1],R.push(l[E>>2]+l[63&E<<4]+"==")):b===2&&(E=(p[S-2]<<8)+p[S-1],R.push(l[E>>10]+l[63&E>>4]+l[63&E<<2]+"=")),R.join("")}s.byteLength=function(p){var E=o(p),S=E[0],b=E[1];return 3*(S+b)/4-b},s.toByteArray=h,s.fromByteArray=I;for(var l=[],C=[],B=typeof Uint8Array>"u"?Array:Uint8Array,y="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",m=0,g=y.length;m<g;++m)l[m]=y[m],C[y.charCodeAt(m)]=m;C[45]=62,C[95]=63},{}],2:[function(){},{}],3:[function(n,r,s){(function(){(function(){"use strict";var o=String.fromCharCode,f=Math.min;function h(i){if(2147483647<i)throw new RangeError('The value "'+i+'" is invalid for option "size"');var A=new Uint8Array(i);return A.__proto__=c.prototype,A}function c(i,A,d){if(typeof i=="number"){if(typeof A=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return C(i)}return u(i,A,d)}function u(i,A,d){if(typeof i=="string")return B(i,A);if(ArrayBuffer.isView(i))return y(i);if(i==null)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof i);if(T(i,ArrayBuffer)||i&&T(i.buffer,ArrayBuffer))return m(i,A,d);if(typeof i=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var _=i.valueOf&&i.valueOf();if(_!=null&&_!==i)return c.from(_,A,d);var U=g(i);if(U)return U;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof i[Symbol.toPrimitive]=="function")return c.from(i[Symbol.toPrimitive]("string"),A,d);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof i)}function I(i){if(typeof i!="number")throw new TypeError('"size" argument must be of type number');if(0>i)throw new RangeError('The value "'+i+'" is invalid for option "size"')}function l(i,A,d){return I(i),0>=i||A===void 0?h(i):typeof d=="string"?h(i).fill(A,d):h(i).fill(A)}function C(i){return I(i),h(0>i?0:0|p(i))}function B(i,A){if((typeof A!="string"||A==="")&&(A="utf8"),!c.isEncoding(A))throw new TypeError("Unknown encoding: "+A);var d=0|E(i,A),_=h(d),U=_.write(i,A);return U!==d&&(_=_.slice(0,U)),_}function y(i){for(var A=0>i.length?0:0|p(i.length),d=h(A),_=0;_<A;_+=1)d[_]=255&i[_];return d}function m(i,A,d){if(0>A||i.byteLength<A)throw new RangeError('"offset" is outside of buffer bounds');if(i.byteLength<A+(d||0))throw new RangeError('"length" is outside of buffer bounds');var _;return _=A===void 0&&d===void 0?new Uint8Array(i):d===void 0?new Uint8Array(i,A):new Uint8Array(i,A,d),_.__proto__=c.prototype,_}function g(i){if(c.isBuffer(i)){var A=0|p(i.length),d=h(A);return d.length===0||i.copy(d,0,0,A),d}return i.length===void 0?i.type==="Buffer"&&Array.isArray(i.data)?y(i.data):void 0:typeof i.length!="number"||G(i.length)?h(0):y(i)}function p(i){if(i>=2147483647)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x7fffffff bytes");return 0|i}function E(i,A){if(c.isBuffer(i))return i.length;if(ArrayBuffer.isView(i)||T(i,ArrayBuffer))return i.byteLength;if(typeof i!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof i);var d=i.length,_=2<arguments.length&&arguments[2]===!0;if(!_&&d===0)return 0;for(var U=!1;;)switch(A){case"ascii":case"latin1":case"binary":return d;case"utf8":case"utf-8":return ut(i).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*d;case"hex":return d>>>1;case"base64":return yt(i).length;default:if(U)return _?-1:ut(i).length;A=(""+A).toLowerCase(),U=!0}}function S(i,A,d){var _=!1;if((A===void 0||0>A)&&(A=0),A>this.length||((d===void 0||d>this.length)&&(d=this.length),0>=d)||(d>>>=0,A>>>=0,d<=A))return"";for(i||(i="utf8");;)switch(i){case"hex":return P(this,A,d);case"utf8":case"utf-8":return O(this,A,d);case"ascii":return H(this,A,d);case"latin1":case"binary":return q(this,A,d);case"base64":return F(this,A,d);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return X(this,A,d);default:if(_)throw new TypeError("Unknown encoding: "+i);i=(i+"").toLowerCase(),_=!0}}function b(i,A,d){var _=i[A];i[A]=i[d],i[d]=_}function R(i,A,d,_,U){if(i.length===0)return-1;if(typeof d=="string"?(_=d,d=0):2147483647<d?d=2147483647:-2147483648>d&&(d=-2147483648),d=+d,G(d)&&(d=U?0:i.length-1),0>d&&(d=i.length+d),d>=i.length){if(U)return-1;d=i.length-1}else if(0>d)if(U)d=0;else return-1;if(typeof A=="string"&&(A=c.from(A,_)),c.isBuffer(A))return A.length===0?-1:v(i,A,d,_,U);if(typeof A=="number")return A&=255,typeof Uint8Array.prototype.indexOf=="function"?U?Uint8Array.prototype.indexOf.call(i,A,d):Uint8Array.prototype.lastIndexOf.call(i,A,d):v(i,[A],d,_,U);throw new TypeError("val must be string, number or Buffer")}function v(i,A,d,_,U){function L(Ue,Ee){return W===1?Ue[Ee]:Ue.readUInt16BE(Ee*W)}var W=1,z=i.length,ht=A.length;if(_!==void 0&&(_=(_+"").toLowerCase(),_==="ucs2"||_==="ucs-2"||_==="utf16le"||_==="utf-16le")){if(2>i.length||2>A.length)return-1;W=2,z/=2,ht/=2,d/=2}var st;if(U){var ot=-1;for(st=d;st<z;st++)if(L(i,st)!==L(A,ot===-1?0:st-ot))ot!==-1&&(st-=st-ot),ot=-1;else if(ot===-1&&(ot=st),st-ot+1===ht)return ot*W}else for(d+ht>z&&(d=z-ht),st=d;0<=st;st--){for(var At=!0,Ie=0;Ie<ht;Ie++)if(L(i,st+Ie)!==L(A,Ie)){At=!1;break}if(At)return st}return-1}function Q(i,A,d,_){d=+d||0;var U=i.length-d;_?(_=+_,_>U&&(_=U)):_=U;var L=A.length;_>L/2&&(_=L/2);for(var W,z=0;z<_;++z){if(W=parseInt(A.substr(2*z,2),16),G(W))return z;i[d+z]=W}return z}function w(i,A,d,_){return Dt(ut(A,i.length-d),i,d,_)}function D(i,A,d,_){return Dt(mt(A),i,d,_)}function k(i,A,d,_){return D(i,A,d,_)}function x(i,A,d,_){return Dt(yt(A),i,d,_)}function N(i,A,d,_){return Dt(kt(A,i.length-d),i,d,_)}function F(i,A,d){return A===0&&d===i.length?j.fromByteArray(i):j.fromByteArray(i.slice(A,d))}function O(i,A,d){d=f(i.length,d);for(var _=[],U=A;U<d;){var L=i[U],W=null,z=239<L?4:223<L?3:191<L?2:1;if(U+z<=d){var ht,st,ot,At;z===1?128>L&&(W=L):z===2?(ht=i[U+1],(192&ht)==128&&(At=(31&L)<<6|63&ht,127<At&&(W=At))):z===3?(ht=i[U+1],st=i[U+2],(192&ht)==128&&(192&st)==128&&(At=(15&L)<<12|(63&ht)<<6|63&st,2047<At&&(55296>At||57343<At)&&(W=At))):z===4&&(ht=i[U+1],st=i[U+2],ot=i[U+3],(192&ht)==128&&(192&st)==128&&(192&ot)==128&&(At=(15&L)<<18|(63&ht)<<12|(63&st)<<6|63&ot,65535<At&&1114112>At&&(W=At)))}W===null?(W=65533,z=1):65535<W&&(W-=65536,_.push(55296|1023&W>>>10),W=56320|1023&W),_.push(W),U+=z}return Y(_)}function Y(i){var A=i.length;if(A<=4096)return o.apply(String,i);for(var d="",_=0;_<A;)d+=o.apply(String,i.slice(_,_+=4096));return d}function H(i,A,d){var _="";d=f(i.length,d);for(var U=A;U<d;++U)_+=o(127&i[U]);return _}function q(i,A,d){var _="";d=f(i.length,d);for(var U=A;U<d;++U)_+=o(i[U]);return _}function P(i,A,d){var _=i.length;(!A||0>A)&&(A=0),(!d||0>d||d>_)&&(d=_);for(var U="",L=A;L<d;++L)U+=It(i[L]);return U}function X(i,A,d){for(var _=i.slice(A,d),U="",L=0;L<_.length;L+=2)U+=o(_[L]+256*_[L+1]);return U}function K(i,A,d){if(i%1!=0||0>i)throw new RangeError("offset is not uint");if(i+A>d)throw new RangeError("Trying to access beyond buffer length")}function V(i,A,d,_,U,L){if(!c.isBuffer(i))throw new TypeError('"buffer" argument must be a Buffer instance');if(A>U||A<L)throw new RangeError('"value" argument is out of bounds');if(d+_>i.length)throw new RangeError("Index out of range")}function tt(i,A,d,_){if(d+_>i.length)throw new RangeError("Index out of range");if(0>d)throw new RangeError("Index out of range")}function et(i,A,d,_,U){return A=+A,d>>>=0,U||tt(i,A,d,4,34028234663852886e22,-34028234663852886e22),M.write(i,A,d,_,23,4),d+4}function at(i,A,d,_,U){return A=+A,d>>>=0,U||tt(i,A,d,8,17976931348623157e292,-17976931348623157e292),M.write(i,A,d,_,52,8),d+8}function nt(i){if(i=i.split("=")[0],i=i.trim().replace(J,""),2>i.length)return"";for(;i.length%4!=0;)i+="=";return i}function It(i){return 16>i?"0"+i.toString(16):i.toString(16)}function ut(i,A){A=A||1/0;for(var d,_=i.length,U=null,L=[],W=0;W<_;++W){if(d=i.charCodeAt(W),55295<d&&57344>d){if(!U){if(56319<d){-1<(A-=3)&&L.push(239,191,189);continue}else if(W+1===_){-1<(A-=3)&&L.push(239,191,189);continue}U=d;continue}if(56320>d){-1<(A-=3)&&L.push(239,191,189),U=d;continue}d=(U-55296<<10|d-56320)+65536}else U&&-1<(A-=3)&&L.push(239,191,189);if(U=null,128>d){if(0>(A-=1))break;L.push(d)}else if(2048>d){if(0>(A-=2))break;L.push(192|d>>6,128|63&d)}else if(65536>d){if(0>(A-=3))break;L.push(224|d>>12,128|63&d>>6,128|63&d)}else if(1114112>d){if(0>(A-=4))break;L.push(240|d>>18,128|63&d>>12,128|63&d>>6,128|63&d)}else throw new Error("Invalid code point")}return L}function mt(i){for(var A=[],d=0;d<i.length;++d)A.push(255&i.charCodeAt(d));return A}function kt(i,A){for(var d,_,U,L=[],W=0;W<i.length&&!(0>(A-=2));++W)d=i.charCodeAt(W),_=d>>8,U=d%256,L.push(U),L.push(_);return L}function yt(i){return j.toByteArray(nt(i))}function Dt(i,A,d,_){for(var U=0;U<_&&!(U+d>=A.length||U>=i.length);++U)A[U+d]=i[U];return U}function T(i,A){return i instanceof A||i!=null&&i.constructor!=null&&i.constructor.name!=null&&i.constructor.name===A.name}function G(i){return i!==i}var j=n("base64-js"),M=n("ieee754");s.Buffer=c,s.SlowBuffer=function(i){return+i!=i&&(i=0),c.alloc(+i)},s.INSPECT_MAX_BYTES=50,s.kMaxLength=2147483647,c.TYPED_ARRAY_SUPPORT=(function(){try{var i=new Uint8Array(1);return i.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},i.foo()===42}catch{return!1}})(),c.TYPED_ARRAY_SUPPORT||typeof console>"u"||typeof console.error!="function"||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(c.prototype,"parent",{enumerable:!0,get:function(){return c.isBuffer(this)?this.buffer:void 0}}),Object.defineProperty(c.prototype,"offset",{enumerable:!0,get:function(){return c.isBuffer(this)?this.byteOffset:void 0}}),typeof Symbol<"u"&&Symbol.species!=null&&c[Symbol.species]===c&&Object.defineProperty(c,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),c.poolSize=8192,c.from=function(i,A,d){return u(i,A,d)},c.prototype.__proto__=Uint8Array.prototype,c.__proto__=Uint8Array,c.alloc=function(i,A,d){return l(i,A,d)},c.allocUnsafe=function(i){return C(i)},c.allocUnsafeSlow=function(i){return C(i)},c.isBuffer=function(i){return i!=null&&i._isBuffer===!0&&i!==c.prototype},c.compare=function(i,A){if(T(i,Uint8Array)&&(i=c.from(i,i.offset,i.byteLength)),T(A,Uint8Array)&&(A=c.from(A,A.offset,A.byteLength)),!c.isBuffer(i)||!c.isBuffer(A))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(i===A)return 0;for(var d=i.length,_=A.length,U=0,L=f(d,_);U<L;++U)if(i[U]!==A[U]){d=i[U],_=A[U];break}return d<_?-1:_<d?1:0},c.isEncoding=function(i){switch((i+"").toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},c.concat=function(i,A){if(!Array.isArray(i))throw new TypeError('"list" argument must be an Array of Buffers');if(i.length===0)return c.alloc(0);var d;if(A===void 0)for(A=0,d=0;d<i.length;++d)A+=i[d].length;var _=c.allocUnsafe(A),U=0;for(d=0;d<i.length;++d){var L=i[d];if(T(L,Uint8Array)&&(L=c.from(L)),!c.isBuffer(L))throw new TypeError('"list" argument must be an Array of Buffers');L.copy(_,U),U+=L.length}return _},c.byteLength=E,c.prototype._isBuffer=!0,c.prototype.swap16=function(){var i=this.length;if(i%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var A=0;A<i;A+=2)b(this,A,A+1);return this},c.prototype.swap32=function(){var i=this.length;if(i%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var A=0;A<i;A+=4)b(this,A,A+3),b(this,A+1,A+2);return this},c.prototype.swap64=function(){var i=this.length;if(i%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var A=0;A<i;A+=8)b(this,A,A+7),b(this,A+1,A+6),b(this,A+2,A+5),b(this,A+3,A+4);return this},c.prototype.toString=function(){var i=this.length;return i===0?"":arguments.length===0?O(this,0,i):S.apply(this,arguments)},c.prototype.toLocaleString=c.prototype.toString,c.prototype.equals=function(i){if(!c.isBuffer(i))throw new TypeError("Argument must be a Buffer");return this===i||c.compare(this,i)===0},c.prototype.inspect=function(){var i="",A=s.INSPECT_MAX_BYTES;return i=this.toString("hex",0,A).replace(/(.{2})/g,"$1 ").trim(),this.length>A&&(i+=" ... "),"<Buffer "+i+">"},c.prototype.compare=function(i,A,d,_,U){if(T(i,Uint8Array)&&(i=c.from(i,i.offset,i.byteLength)),!c.isBuffer(i))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof i);if(A===void 0&&(A=0),d===void 0&&(d=i?i.length:0),_===void 0&&(_=0),U===void 0&&(U=this.length),0>A||d>i.length||0>_||U>this.length)throw new RangeError("out of range index");if(_>=U&&A>=d)return 0;if(_>=U)return-1;if(A>=d)return 1;if(A>>>=0,d>>>=0,_>>>=0,U>>>=0,this===i)return 0;for(var L=U-_,W=d-A,z=f(L,W),ht=this.slice(_,U),st=i.slice(A,d),ot=0;ot<z;++ot)if(ht[ot]!==st[ot]){L=ht[ot],W=st[ot];break}return L<W?-1:W<L?1:0},c.prototype.includes=function(i,A,d){return this.indexOf(i,A,d)!==-1},c.prototype.indexOf=function(i,A,d){return R(this,i,A,d,!0)},c.prototype.lastIndexOf=function(i,A,d){return R(this,i,A,d,!1)},c.prototype.write=function(i,A,d,_){if(A===void 0)_="utf8",d=this.length,A=0;else if(d===void 0&&typeof A=="string")_=A,d=this.length,A=0;else if(isFinite(A))A>>>=0,isFinite(d)?(d>>>=0,_===void 0&&(_="utf8")):(_=d,d=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var U=this.length-A;if((d===void 0||d>U)&&(d=U),0<i.length&&(0>d||0>A)||A>this.length)throw new RangeError("Attempt to write outside buffer bounds");_||(_="utf8");for(var L=!1;;)switch(_){case"hex":return Q(this,i,A,d);case"utf8":case"utf-8":return w(this,i,A,d);case"ascii":return D(this,i,A,d);case"latin1":case"binary":return k(this,i,A,d);case"base64":return x(this,i,A,d);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,i,A,d);default:if(L)throw new TypeError("Unknown encoding: "+_);_=(""+_).toLowerCase(),L=!0}},c.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},c.prototype.slice=function(i,A){var d=this.length;i=~~i,A=A===void 0?d:~~A,0>i?(i+=d,0>i&&(i=0)):i>d&&(i=d),0>A?(A+=d,0>A&&(A=0)):A>d&&(A=d),A<i&&(A=i);var _=this.subarray(i,A);return _.__proto__=c.prototype,_},c.prototype.readUIntLE=function(i,A,d){i>>>=0,A>>>=0,d||K(i,A,this.length);for(var _=this[i],U=1,L=0;++L<A&&(U*=256);)_+=this[i+L]*U;return _},c.prototype.readUIntBE=function(i,A,d){i>>>=0,A>>>=0,d||K(i,A,this.length);for(var _=this[i+--A],U=1;0<A&&(U*=256);)_+=this[i+--A]*U;return _},c.prototype.readUInt8=function(i,A){return i>>>=0,A||K(i,1,this.length),this[i]},c.prototype.readUInt16LE=function(i,A){return i>>>=0,A||K(i,2,this.length),this[i]|this[i+1]<<8},c.prototype.readUInt16BE=function(i,A){return i>>>=0,A||K(i,2,this.length),this[i]<<8|this[i+1]},c.prototype.readUInt32LE=function(i,A){return i>>>=0,A||K(i,4,this.length),(this[i]|this[i+1]<<8|this[i+2]<<16)+16777216*this[i+3]},c.prototype.readUInt32BE=function(i,A){return i>>>=0,A||K(i,4,this.length),16777216*this[i]+(this[i+1]<<16|this[i+2]<<8|this[i+3])},c.prototype.readIntLE=function(i,A,d){i>>>=0,A>>>=0,d||K(i,A,this.length);for(var _=this[i],U=1,L=0;++L<A&&(U*=256);)_+=this[i+L]*U;return U*=128,_>=U&&(_-=e(2,8*A)),_},c.prototype.readIntBE=function(i,A,d){i>>>=0,A>>>=0,d||K(i,A,this.length);for(var _=A,U=1,L=this[i+--_];0<_&&(U*=256);)L+=this[i+--_]*U;return U*=128,L>=U&&(L-=e(2,8*A)),L},c.prototype.readInt8=function(i,A){return i>>>=0,A||K(i,1,this.length),128&this[i]?-1*(255-this[i]+1):this[i]},c.prototype.readInt16LE=function(i,A){i>>>=0,A||K(i,2,this.length);var d=this[i]|this[i+1]<<8;return 32768&d?4294901760|d:d},c.prototype.readInt16BE=function(i,A){i>>>=0,A||K(i,2,this.length);var d=this[i+1]|this[i]<<8;return 32768&d?4294901760|d:d},c.prototype.readInt32LE=function(i,A){return i>>>=0,A||K(i,4,this.length),this[i]|this[i+1]<<8|this[i+2]<<16|this[i+3]<<24},c.prototype.readInt32BE=function(i,A){return i>>>=0,A||K(i,4,this.length),this[i]<<24|this[i+1]<<16|this[i+2]<<8|this[i+3]},c.prototype.readFloatLE=function(i,A){return i>>>=0,A||K(i,4,this.length),M.read(this,i,!0,23,4)},c.prototype.readFloatBE=function(i,A){return i>>>=0,A||K(i,4,this.length),M.read(this,i,!1,23,4)},c.prototype.readDoubleLE=function(i,A){return i>>>=0,A||K(i,8,this.length),M.read(this,i,!0,52,8)},c.prototype.readDoubleBE=function(i,A){return i>>>=0,A||K(i,8,this.length),M.read(this,i,!1,52,8)},c.prototype.writeUIntLE=function(i,A,d,_){if(i=+i,A>>>=0,d>>>=0,!_){var U=e(2,8*d)-1;V(this,i,A,d,U,0)}var L=1,W=0;for(this[A]=255&i;++W<d&&(L*=256);)this[A+W]=255&i/L;return A+d},c.prototype.writeUIntBE=function(i,A,d,_){if(i=+i,A>>>=0,d>>>=0,!_){var U=e(2,8*d)-1;V(this,i,A,d,U,0)}var L=d-1,W=1;for(this[A+L]=255&i;0<=--L&&(W*=256);)this[A+L]=255&i/W;return A+d},c.prototype.writeUInt8=function(i,A,d){return i=+i,A>>>=0,d||V(this,i,A,1,255,0),this[A]=255&i,A+1},c.prototype.writeUInt16LE=function(i,A,d){return i=+i,A>>>=0,d||V(this,i,A,2,65535,0),this[A]=255&i,this[A+1]=i>>>8,A+2},c.prototype.writeUInt16BE=function(i,A,d){return i=+i,A>>>=0,d||V(this,i,A,2,65535,0),this[A]=i>>>8,this[A+1]=255&i,A+2},c.prototype.writeUInt32LE=function(i,A,d){return i=+i,A>>>=0,d||V(this,i,A,4,4294967295,0),this[A+3]=i>>>24,this[A+2]=i>>>16,this[A+1]=i>>>8,this[A]=255&i,A+4},c.prototype.writeUInt32BE=function(i,A,d){return i=+i,A>>>=0,d||V(this,i,A,4,4294967295,0),this[A]=i>>>24,this[A+1]=i>>>16,this[A+2]=i>>>8,this[A+3]=255&i,A+4},c.prototype.writeIntLE=function(i,A,d,_){if(i=+i,A>>>=0,!_){var U=e(2,8*d-1);V(this,i,A,d,U-1,-U)}var L=0,W=1,z=0;for(this[A]=255&i;++L<d&&(W*=256);)0>i&&z===0&&this[A+L-1]!==0&&(z=1),this[A+L]=255&(i/W>>0)-z;return A+d},c.prototype.writeIntBE=function(i,A,d,_){if(i=+i,A>>>=0,!_){var U=e(2,8*d-1);V(this,i,A,d,U-1,-U)}var L=d-1,W=1,z=0;for(this[A+L]=255&i;0<=--L&&(W*=256);)0>i&&z===0&&this[A+L+1]!==0&&(z=1),this[A+L]=255&(i/W>>0)-z;return A+d},c.prototype.writeInt8=function(i,A,d){return i=+i,A>>>=0,d||V(this,i,A,1,127,-128),0>i&&(i=255+i+1),this[A]=255&i,A+1},c.prototype.writeInt16LE=function(i,A,d){return i=+i,A>>>=0,d||V(this,i,A,2,32767,-32768),this[A]=255&i,this[A+1]=i>>>8,A+2},c.prototype.writeInt16BE=function(i,A,d){return i=+i,A>>>=0,d||V(this,i,A,2,32767,-32768),this[A]=i>>>8,this[A+1]=255&i,A+2},c.prototype.writeInt32LE=function(i,A,d){return i=+i,A>>>=0,d||V(this,i,A,4,2147483647,-2147483648),this[A]=255&i,this[A+1]=i>>>8,this[A+2]=i>>>16,this[A+3]=i>>>24,A+4},c.prototype.writeInt32BE=function(i,A,d){return i=+i,A>>>=0,d||V(this,i,A,4,2147483647,-2147483648),0>i&&(i=4294967295+i+1),this[A]=i>>>24,this[A+1]=i>>>16,this[A+2]=i>>>8,this[A+3]=255&i,A+4},c.prototype.writeFloatLE=function(i,A,d){return et(this,i,A,!0,d)},c.prototype.writeFloatBE=function(i,A,d){return et(this,i,A,!1,d)},c.prototype.writeDoubleLE=function(i,A,d){return at(this,i,A,!0,d)},c.prototype.writeDoubleBE=function(i,A,d){return at(this,i,A,!1,d)},c.prototype.copy=function(i,A,d,_){if(!c.isBuffer(i))throw new TypeError("argument should be a Buffer");if(d||(d=0),_||_===0||(_=this.length),A>=i.length&&(A=i.length),A||(A=0),0<_&&_<d&&(_=d),_===d||i.length===0||this.length===0)return 0;if(0>A)throw new RangeError("targetStart out of bounds");if(0>d||d>=this.length)throw new RangeError("Index out of range");if(0>_)throw new RangeError("sourceEnd out of bounds");_>this.length&&(_=this.length),i.length-A<_-d&&(_=i.length-A+d);var U=_-d;if(this===i&&typeof Uint8Array.prototype.copyWithin=="function")this.copyWithin(A,d,_);else if(this===i&&d<A&&A<_)for(var L=U-1;0<=L;--L)i[L+A]=this[L+d];else Uint8Array.prototype.set.call(i,this.subarray(d,_),A);return U},c.prototype.fill=function(i,A,d,_){if(typeof i=="string"){if(typeof A=="string"?(_=A,A=0,d=this.length):typeof d=="string"&&(_=d,d=this.length),_!==void 0&&typeof _!="string")throw new TypeError("encoding must be a string");if(typeof _=="string"&&!c.isEncoding(_))throw new TypeError("Unknown encoding: "+_);if(i.length===1){var U=i.charCodeAt(0);(_==="utf8"&&128>U||_==="latin1")&&(i=U)}}else typeof i=="number"&&(i&=255);if(0>A||this.length<A||this.length<d)throw new RangeError("Out of range index");if(d<=A)return this;A>>>=0,d=d===void 0?this.length:d>>>0,i||(i=0);var L;if(typeof i=="number")for(L=A;L<d;++L)this[L]=i;else{var W=c.isBuffer(i)?i:c.from(i,_),z=W.length;if(z===0)throw new TypeError('The value "'+i+'" is invalid for argument "value"');for(L=0;L<d-A;++L)this[L+A]=W[L%z]}return this};var J=/[^+/0-9A-Za-z-_]/g}).call(this)}).call(this,n("buffer").Buffer)},{"base64-js":1,buffer:3,ieee754:9}],4:[function(n,r,s){(function(o){(function(){function f(){let c;try{c=s.storage.getItem("debug")}catch{}return!c&&typeof o<"u"&&"env"in o&&(c=o.env.DEBUG),c}s.formatArgs=function(c){if(c[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+c[0]+(this.useColors?"%c ":" ")+"+"+r.exports.humanize(this.diff),!this.useColors)return;let u="color: "+this.color;c.splice(1,0,u,"color: inherit");let I=0,l=0;c[0].replace(/%[a-zA-Z%]/g,C=>{C==="%%"||(I++,C==="%c"&&(l=I))}),c.splice(l,0,u)},s.save=function(c){try{c?s.storage.setItem("debug",c):s.storage.removeItem("debug")}catch{}},s.load=f,s.useColors=function(){return!!(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))||!(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&(typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&31<=parseInt(RegExp.$1,10)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},s.storage=(function(){try{return localStorage}catch{}})(),s.destroy=(()=>{let c=!1;return()=>{c||(c=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),s.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],s.log=console.debug||console.log||(()=>{}),r.exports=n("./common")(s);let{formatters:h}=r.exports;h.j=function(c){try{return JSON.stringify(c)}catch(u){return"[UnexpectedJSONParseError]: "+u.message}}}).call(this)}).call(this,n("_process"))},{"./common":5,_process:12}],5:[function(n,r){r.exports=function(s){function o(c){function u(...C){if(!u.enabled)return;let B=u,y=+new Date,m=y-(I||y);B.diff=m,B.prev=I,B.curr=y,I=y,C[0]=o.coerce(C[0]),typeof C[0]!="string"&&C.unshift("%O");let g=0;C[0]=C[0].replace(/%([a-zA-Z%])/g,(E,S)=>{if(E==="%%")return"%";g++;let b=o.formatters[S];if(typeof b=="function"){let R=C[g];E=b.call(B,R),C.splice(g,1),g--}return E}),o.formatArgs.call(B,C),(B.log||o.log).apply(B,C)}let I,l=null;return u.namespace=c,u.useColors=o.useColors(),u.color=o.selectColor(c),u.extend=f,u.destroy=o.destroy,Object.defineProperty(u,"enabled",{enumerable:!0,configurable:!1,get:()=>l===null?o.enabled(c):l,set:C=>{l=C}}),typeof o.init=="function"&&o.init(u),u}function f(c,u){let I=o(this.namespace+(typeof u>"u"?":":u)+c);return I.log=this.log,I}function h(c){return c.toString().substring(2,c.toString().length-2).replace(/\.\*\?$/,"*")}return o.debug=o,o.default=o,o.coerce=function(c){return c instanceof Error?c.stack||c.message:c},o.disable=function(){let c=[...o.names.map(h),...o.skips.map(h).map(u=>"-"+u)].join(",");return o.enable(""),c},o.enable=function(c){o.save(c),o.names=[],o.skips=[];let u,I=(typeof c=="string"?c:"").split(/[\s,]+/),l=I.length;for(u=0;u<l;u++)I[u]&&(c=I[u].replace(/\*/g,".*?"),c[0]==="-"?o.skips.push(new RegExp("^"+c.substr(1)+"$")):o.names.push(new RegExp("^"+c+"$")))},o.enabled=function(c){if(c[c.length-1]==="*")return!0;let u,I;for(u=0,I=o.skips.length;u<I;u++)if(o.skips[u].test(c))return!1;for(u=0,I=o.names.length;u<I;u++)if(o.names[u].test(c))return!0;return!1},o.humanize=n("ms"),o.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(s).forEach(c=>{o[c]=s[c]}),o.names=[],o.skips=[],o.formatters={},o.selectColor=function(c){let u=0;for(let I=0;I<c.length;I++)u=(u<<5)-u+c.charCodeAt(I),u|=0;return o.colors[t(u)%o.colors.length]},o.enable(o.load()),o}},{ms:11}],6:[function(n,r){"use strict";function s(o,f){for(let h in f)Object.defineProperty(o,h,{value:f[h],enumerable:!0,configurable:!0});return o}r.exports=function(o,f,h){if(!o||typeof o=="string")throw new TypeError("Please pass an Error to err-code");h||(h={}),typeof f=="object"&&(h=f,f=""),f&&(h.code=f);try{return s(o,h)}catch{h.message=o.message,h.stack=o.stack;let u=function(){};return u.prototype=Object.create(Object.getPrototypeOf(o)),s(new u,h)}}},{}],7:[function(n,r){"use strict";function s(Q){console&&console.warn&&console.warn(Q)}function o(){o.init.call(this)}function f(Q){if(typeof Q!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof Q)}function h(Q){return Q._maxListeners===void 0?o.defaultMaxListeners:Q._maxListeners}function c(Q,w,D,k){var x,N,F;if(f(D),N=Q._events,N===void 0?(N=Q._events=Object.create(null),Q._eventsCount=0):(N.newListener!==void 0&&(Q.emit("newListener",w,D.listener?D.listener:D),N=Q._events),F=N[w]),F===void 0)F=N[w]=D,++Q._eventsCount;else if(typeof F=="function"?F=N[w]=k?[D,F]:[F,D]:k?F.unshift(D):F.push(D),x=h(Q),0<x&&F.length>x&&!F.warned){F.warned=!0;var O=new Error("Possible EventEmitter memory leak detected. "+F.length+" "+(w+" listeners added. Use emitter.setMaxListeners() to increase limit"));O.name="MaxListenersExceededWarning",O.emitter=Q,O.type=w,O.count=F.length,s(O)}return Q}function u(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function I(Q,w,D){var k={fired:!1,wrapFn:void 0,target:Q,type:w,listener:D},x=u.bind(k);return x.listener=D,k.wrapFn=x,x}function l(Q,w,D){var k=Q._events;if(k===void 0)return[];var x=k[w];return x===void 0?[]:typeof x=="function"?D?[x.listener||x]:[x]:D?m(x):B(x,x.length)}function C(Q){var w=this._events;if(w!==void 0){var D=w[Q];if(typeof D=="function")return 1;if(D!==void 0)return D.length}return 0}function B(Q,w){for(var D=Array(w),k=0;k<w;++k)D[k]=Q[k];return D}function y(Q,w){for(;w+1<Q.length;w++)Q[w]=Q[w+1];Q.pop()}function m(Q){for(var w=Array(Q.length),D=0;D<w.length;++D)w[D]=Q[D].listener||Q[D];return w}function g(Q,w,D){typeof Q.on=="function"&&p(Q,"error",w,D)}function p(Q,w,D,k){if(typeof Q.on=="function")k.once?Q.once(w,D):Q.on(w,D);else if(typeof Q.addEventListener=="function")Q.addEventListener(w,function x(N){k.once&&Q.removeEventListener(w,x),D(N)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof Q)}var E,S=typeof Reflect=="object"?Reflect:null,b=S&&typeof S.apply=="function"?S.apply:function(Q,w,D){return Function.prototype.apply.call(Q,w,D)};E=S&&typeof S.ownKeys=="function"?S.ownKeys:Object.getOwnPropertySymbols?function(Q){return Object.getOwnPropertyNames(Q).concat(Object.getOwnPropertySymbols(Q))}:function(Q){return Object.getOwnPropertyNames(Q)};var R=Number.isNaN||function(Q){return Q!==Q};r.exports=o,r.exports.once=function(Q,w){return new Promise(function(D,k){function x(F){Q.removeListener(w,N),k(F)}function N(){typeof Q.removeListener=="function"&&Q.removeListener("error",x),D([].slice.call(arguments))}p(Q,w,N,{once:!0}),w!=="error"&&g(Q,x,{once:!0})})},o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var v=10;Object.defineProperty(o,"defaultMaxListeners",{enumerable:!0,get:function(){return v},set:function(Q){if(typeof Q!="number"||0>Q||R(Q))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+Q+".");v=Q}}),o.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},o.prototype.setMaxListeners=function(Q){if(typeof Q!="number"||0>Q||R(Q))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+Q+".");return this._maxListeners=Q,this},o.prototype.getMaxListeners=function(){return h(this)},o.prototype.emit=function(Q){for(var w=[],D=1;D<arguments.length;D++)w.push(arguments[D]);var k=Q==="error",x=this._events;if(x!==void 0)k=k&&x.error===void 0;else if(!k)return!1;if(k){var N;if(0<w.length&&(N=w[0]),N instanceof Error)throw N;var F=new Error("Unhandled error."+(N?" ("+N.message+")":""));throw F.context=N,F}var O=x[Q];if(O===void 0)return!1;if(typeof O=="function")b(O,this,w);else for(var Y=O.length,H=B(O,Y),D=0;D<Y;++D)b(H[D],this,w);return!0},o.prototype.addListener=function(Q,w){return c(this,Q,w,!1)},o.prototype.on=o.prototype.addListener,o.prototype.prependListener=function(Q,w){return c(this,Q,w,!0)},o.prototype.once=function(Q,w){return f(w),this.on(Q,I(this,Q,w)),this},o.prototype.prependOnceListener=function(Q,w){return f(w),this.prependListener(Q,I(this,Q,w)),this},o.prototype.removeListener=function(Q,w){var D,k,x,N,F;if(f(w),k=this._events,k===void 0)return this;if(D=k[Q],D===void 0)return this;if(D===w||D.listener===w)--this._eventsCount==0?this._events=Object.create(null):(delete k[Q],k.removeListener&&this.emit("removeListener",Q,D.listener||w));else if(typeof D!="function"){for(x=-1,N=D.length-1;0<=N;N--)if(D[N]===w||D[N].listener===w){F=D[N].listener,x=N;break}if(0>x)return this;x===0?D.shift():y(D,x),D.length===1&&(k[Q]=D[0]),k.removeListener!==void 0&&this.emit("removeListener",Q,F||w)}return this},o.prototype.off=o.prototype.removeListener,o.prototype.removeAllListeners=function(Q){var w,D,k;if(D=this._events,D===void 0)return this;if(D.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):D[Q]!==void 0&&(--this._eventsCount==0?this._events=Object.create(null):delete D[Q]),this;if(arguments.length===0){var x,N=Object.keys(D);for(k=0;k<N.length;++k)x=N[k],x!=="removeListener"&&this.removeAllListeners(x);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(w=D[Q],typeof w=="function")this.removeListener(Q,w);else if(w!==void 0)for(k=w.length-1;0<=k;k--)this.removeListener(Q,w[k]);return this},o.prototype.listeners=function(Q){return l(this,Q,!0)},o.prototype.rawListeners=function(Q){return l(this,Q,!1)},o.listenerCount=function(Q,w){return typeof Q.listenerCount=="function"?Q.listenerCount(w):C.call(Q,w)},o.prototype.listenerCount=C,o.prototype.eventNames=function(){return 0<this._eventsCount?E(this._events):[]}},{}],8:[function(n,r){r.exports=function(){if(typeof globalThis>"u")return null;var s={RTCPeerConnection:globalThis.RTCPeerConnection||globalThis.mozRTCPeerConnection||globalThis.webkitRTCPeerConnection,RTCSessionDescription:globalThis.RTCSessionDescription||globalThis.mozRTCSessionDescription||globalThis.webkitRTCSessionDescription,RTCIceCandidate:globalThis.RTCIceCandidate||globalThis.mozRTCIceCandidate||globalThis.webkitRTCIceCandidate};return s.RTCPeerConnection?s:null}},{}],9:[function(n,r,s){s.read=function(o,f,h,c,u){var I,l,C=8*u-c-1,B=(1<<C)-1,y=B>>1,m=-7,g=h?u-1:0,p=h?-1:1,E=o[f+g];for(g+=p,I=E&(1<<-m)-1,E>>=-m,m+=C;0<m;I=256*I+o[f+g],g+=p,m-=8);for(l=I&(1<<-m)-1,I>>=-m,m+=c;0<m;l=256*l+o[f+g],g+=p,m-=8);if(I===0)I=1-y;else{if(I===B)return l?NaN:(E?-1:1)*(1/0);l+=e(2,c),I-=y}return(E?-1:1)*l*e(2,I-c)},s.write=function(o,f,h,c,u,I){var l,C,B,y=Math.LN2,m=Math.log,g=8*I-u-1,p=(1<<g)-1,E=p>>1,S=u===23?e(2,-24)-e(2,-77):0,b=c?0:I-1,R=c?1:-1,v=0>f||f===0&&0>1/f?1:0;for(f=t(f),isNaN(f)||f===1/0?(C=isNaN(f)?1:0,l=p):(l=a(m(f)/y),1>f*(B=e(2,-l))&&(l--,B*=2),f+=1<=l+E?S/B:S*e(2,1-E),2<=f*B&&(l++,B/=2),l+E>=p?(C=0,l=p):1<=l+E?(C=(f*B-1)*e(2,u),l+=E):(C=f*e(2,E-1)*e(2,u),l=0));8<=u;o[h+b]=255&C,b+=R,C/=256,u-=8);for(l=l<<u|C,g+=u;0<g;o[h+b]=255&l,b+=R,l/=256,g-=8);o[h+b-R]|=128*v}},{}],10:[function(n,r){r.exports=typeof Object.create=="function"?function(s,o){o&&(s.super_=o,s.prototype=Object.create(o.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}))}:function(s,o){if(o){s.super_=o;var f=function(){};f.prototype=o.prototype,s.prototype=new f,s.prototype.constructor=s}}},{}],11:[function(n,r){var s=Math.round;function o(I){if(I+="",!(100<I.length)){var l=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(I);if(l){var C=parseFloat(l[1]),B=(l[2]||"ms").toLowerCase();return B==="years"||B==="year"||B==="yrs"||B==="yr"||B==="y"?315576e5*C:B==="weeks"||B==="week"||B==="w"?6048e5*C:B==="days"||B==="day"||B==="d"?864e5*C:B==="hours"||B==="hour"||B==="hrs"||B==="hr"||B==="h"?36e5*C:B==="minutes"||B==="minute"||B==="mins"||B==="min"||B==="m"?6e4*C:B==="seconds"||B==="second"||B==="secs"||B==="sec"||B==="s"?1e3*C:B==="milliseconds"||B==="millisecond"||B==="msecs"||B==="msec"||B==="ms"?C:void 0}}}function f(I){var l=t(I);return 864e5<=l?s(I/864e5)+"d":36e5<=l?s(I/36e5)+"h":6e4<=l?s(I/6e4)+"m":1e3<=l?s(I/1e3)+"s":I+"ms"}function h(I){var l=t(I);return 864e5<=l?c(I,l,864e5,"day"):36e5<=l?c(I,l,36e5,"hour"):6e4<=l?c(I,l,6e4,"minute"):1e3<=l?c(I,l,1e3,"second"):I+" ms"}function c(I,l,C,B){return s(I/C)+" "+B+(l>=1.5*C?"s":"")}var u=24*(60*6e4);r.exports=function(I,l){l=l||{};var C=typeof I;if(C=="string"&&0<I.length)return o(I);if(C==="number"&&isFinite(I))return l.long?h(I):f(I);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(I))}},{}],12:[function(n,r){function s(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function f(S){if(C===setTimeout)return setTimeout(S,0);if((C===s||!C)&&setTimeout)return C=setTimeout,setTimeout(S,0);try{return C(S,0)}catch{try{return C.call(null,S,0)}catch{return C.call(this,S,0)}}}function h(S){if(B===clearTimeout)return clearTimeout(S);if((B===o||!B)&&clearTimeout)return B=clearTimeout,clearTimeout(S);try{return B(S)}catch{try{return B.call(null,S)}catch{return B.call(this,S)}}}function c(){p&&m&&(p=!1,m.length?g=m.concat(g):E=-1,g.length&&u())}function u(){if(!p){var S=f(c);p=!0;for(var b=g.length;b;){for(m=g,g=[];++E<b;)m&&m[E].run();E=-1,b=g.length}m=null,p=!1,h(S)}}function I(S,b){this.fun=S,this.array=b}function l(){}var C,B,y=r.exports={};(function(){try{C=typeof setTimeout=="function"?setTimeout:s}catch{C=s}try{B=typeof clearTimeout=="function"?clearTimeout:o}catch{B=o}})();var m,g=[],p=!1,E=-1;y.nextTick=function(S){var b=Array(arguments.length-1);if(1<arguments.length)for(var R=1;R<arguments.length;R++)b[R-1]=arguments[R];g.push(new I(S,b)),g.length!==1||p||f(u)},I.prototype.run=function(){this.fun.apply(null,this.array)},y.title="browser",y.browser=!0,y.env={},y.argv=[],y.version="",y.versions={},y.on=l,y.addListener=l,y.once=l,y.off=l,y.removeListener=l,y.removeAllListeners=l,y.emit=l,y.prependListener=l,y.prependOnceListener=l,y.listeners=function(){return[]},y.binding=function(){throw new Error("process.binding is not supported")},y.cwd=function(){return"/"},y.chdir=function(){throw new Error("process.chdir is not supported")},y.umask=function(){return 0}},{}],13:[function(n,r){(function(s){(function(){let o;r.exports=typeof queueMicrotask=="function"?queueMicrotask.bind(typeof window>"u"?s:window):f=>(o||(o=Promise.resolve())).then(f).catch(h=>setTimeout(()=>{throw h},0))}).call(this)}).call(this,typeof global>"u"?typeof self>"u"?typeof window>"u"?{}:window:self:global)},{}],14:[function(n,r){(function(s,o){(function(){"use strict";var f=n("safe-buffer").Buffer,h=o.crypto||o.msCrypto;r.exports=h&&h.getRandomValues?function(c,u){if(c>4294967295)throw new RangeError("requested too many random bytes");var I=f.allocUnsafe(c);if(0<c)if(65536<c)for(var l=0;l<c;l+=65536)h.getRandomValues(I.slice(l,l+65536));else h.getRandomValues(I);return typeof u=="function"?s.nextTick(function(){u(null,I)}):I}:function(){throw new Error(`Secure random number generation is not supported by this browser.
2
2
  Use Chrome, Firefox or Internet Explorer 11`)}}).call(this)}).call(this,n("_process"),typeof global>"u"?typeof self>"u"?typeof window>"u"?{}:window:self:global)},{_process:12,"safe-buffer":30}],15:[function(n,r){"use strict";function s(l,C){l.prototype=Object.create(C.prototype),l.prototype.constructor=l,l.__proto__=C}function o(l,C,B){function y(g,p,E){return typeof C=="string"?C:C(g,p,E)}B||(B=Error);var m=(function(g){function p(E,S,b){return g.call(this,y(E,S,b))||this}return s(p,g),p})(B);m.prototype.name=B.name,m.prototype.code=l,I[l]=m}function f(l,C){if(Array.isArray(l)){var B=l.length;return l=l.map(function(y){return y+""}),2<B?"one of ".concat(C," ").concat(l.slice(0,B-1).join(", "),", or ")+l[B-1]:B===2?"one of ".concat(C," ").concat(l[0]," or ").concat(l[1]):"of ".concat(C," ").concat(l[0])}return"of ".concat(C," ").concat(l+"")}function h(l,C,B){return l.substr(!B||0>B?0:+B,C.length)===C}function c(l,C,B){return(B===void 0||B>l.length)&&(B=l.length),l.substring(B-C.length,B)===C}function u(l,C,B){return typeof B!="number"&&(B=0),!(B+C.length>l.length)&&l.indexOf(C,B)!==-1}var I={};o("ERR_INVALID_OPT_VALUE",function(l,C){return'The value "'+C+'" is invalid for option "'+l+'"'},TypeError),o("ERR_INVALID_ARG_TYPE",function(l,C,B){var y;typeof C=="string"&&h(C,"not ")?(y="must not be",C=C.replace(/^not /,"")):y="must be";var m;if(c(l," argument"))m="The ".concat(l," ").concat(y," ").concat(f(C,"type"));else{var g=u(l,".")?"property":"argument";m='The "'.concat(l,'" ').concat(g," ").concat(y," ").concat(f(C,"type"))}return m+=". Received type ".concat(typeof B),m},TypeError),o("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),o("ERR_METHOD_NOT_IMPLEMENTED",function(l){return"The "+l+" method is not implemented"}),o("ERR_STREAM_PREMATURE_CLOSE","Premature close"),o("ERR_STREAM_DESTROYED",function(l){return"Cannot call "+l+" after a stream was destroyed"}),o("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),o("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),o("ERR_STREAM_WRITE_AFTER_END","write after end"),o("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),o("ERR_UNKNOWN_ENCODING",function(l){return"Unknown encoding: "+l},TypeError),o("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),r.exports.codes=I},{}],16:[function(n,r){(function(s){(function(){"use strict";function o(y){return this instanceof o?(u.call(this,y),I.call(this,y),this.allowHalfOpen=!0,void(y&&(y.readable===!1&&(this.readable=!1),y.writable===!1&&(this.writable=!1),y.allowHalfOpen===!1&&(this.allowHalfOpen=!1,this.once("end",f))))):new o(y)}function f(){this._writableState.ended||s.nextTick(h,this)}function h(y){y.end()}var c=Object.keys||function(y){var m=[];for(var g in y)m.push(g);return m};r.exports=o;var u=n("./_stream_readable"),I=n("./_stream_writable");n("inherits")(o,u);for(var l,C=c(I.prototype),B=0;B<C.length;B++)l=C[B],o.prototype[l]||(o.prototype[l]=I.prototype[l]);Object.defineProperty(o.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(o.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(o.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(o.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState!==void 0&&this._writableState!==void 0&&this._readableState.destroyed&&this._writableState.destroyed},set:function(y){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=y,this._writableState.destroyed=y)}})}).call(this)}).call(this,n("_process"))},{"./_stream_readable":18,"./_stream_writable":20,_process:12,inherits:10}],17:[function(n,r){"use strict";function s(f){return this instanceof s?void o.call(this,f):new s(f)}r.exports=s;var o=n("./_stream_transform");n("inherits")(s,o),s.prototype._transform=function(f,h,c){c(null,f)}},{"./_stream_transform":19,inherits:10}],18:[function(n,r){(function(s,o){(function(){"use strict";function f(i){return K.from(i)}function h(i){return K.isBuffer(i)||i instanceof V}function c(i,A,d){return typeof i.prependListener=="function"?i.prependListener(A,d):void(i._events&&i._events[A]?Array.isArray(i._events[A])?i._events[A].unshift(d):i._events[A]=[d,i._events[A]]:i.on(A,d))}function u(i,A,d){Y=Y||n("./_stream_duplex"),i=i||{},typeof d!="boolean"&&(d=A instanceof Y),this.objectMode=!!i.objectMode,d&&(this.objectMode=this.objectMode||!!i.readableObjectMode),this.highWaterMark=kt(this,i,"readableHighWaterMark",d),this.buffer=new It,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=i.emitClose!==!1,this.autoDestroy=!!i.autoDestroy,this.destroyed=!1,this.defaultEncoding=i.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,i.encoding&&(!et&&(et=n("string_decoder/").StringDecoder),this.decoder=new et(i.encoding),this.encoding=i.encoding)}function I(i){if(Y=Y||n("./_stream_duplex"),!(this instanceof I))return new I(i);var A=this instanceof Y;this._readableState=new u(i,this,A),this.readable=!0,i&&(typeof i.read=="function"&&(this._read=i.read),typeof i.destroy=="function"&&(this._destroy=i.destroy)),X.call(this)}function l(i,A,d,_,U){H("readableAddChunk",A);var L=i._readableState;if(A===null)L.reading=!1,g(i,L);else{var W;if(U||(W=B(L,A)),W)M(i,W);else if(!(L.objectMode||A&&0<A.length))_||(L.reading=!1,S(i,L));else if(typeof A=="string"||L.objectMode||Object.getPrototypeOf(A)===K.prototype||(A=f(A)),_)L.endEmitted?M(i,new j):C(i,L,A,!0);else if(L.ended)M(i,new T);else{if(L.destroyed)return!1;L.reading=!1,L.decoder&&!d?(A=L.decoder.write(A),L.objectMode||A.length!==0?C(i,L,A,!1):S(i,L)):C(i,L,A,!1)}}return!L.ended&&(L.length<L.highWaterMark||L.length===0)}function C(i,A,d,_){A.flowing&&A.length===0&&!A.sync?(A.awaitDrain=0,i.emit("data",d)):(A.length+=A.objectMode?1:d.length,_?A.buffer.unshift(d):A.buffer.push(d),A.needReadable&&p(i)),S(i,A)}function B(i,A){var d;return h(A)||typeof A=="string"||A===void 0||i.objectMode||(d=new Dt("chunk",["string","Buffer","Uint8Array"],A)),d}function y(i){return 1073741824<=i?i=1073741824:(i--,i|=i>>>1,i|=i>>>2,i|=i>>>4,i|=i>>>8,i|=i>>>16,i++),i}function m(i,A){return 0>=i||A.length===0&&A.ended?0:A.objectMode?1:i===i?(i>A.highWaterMark&&(A.highWaterMark=y(i)),i<=A.length?i:A.ended?A.length:(A.needReadable=!0,0)):A.flowing&&A.length?A.buffer.head.data.length:A.length}function g(i,A){if(H("onEofChunk"),!A.ended){if(A.decoder){var d=A.decoder.end();d&&d.length&&(A.buffer.push(d),A.length+=A.objectMode?1:d.length)}A.ended=!0,A.sync?p(i):(A.needReadable=!1,!A.emittedReadable&&(A.emittedReadable=!0,E(i)))}}function p(i){var A=i._readableState;H("emitReadable",A.needReadable,A.emittedReadable),A.needReadable=!1,A.emittedReadable||(H("emitReadable",A.flowing),A.emittedReadable=!0,s.nextTick(E,i))}function E(i){var A=i._readableState;H("emitReadable_",A.destroyed,A.length,A.ended),!A.destroyed&&(A.length||A.ended)&&(i.emit("readable"),A.emittedReadable=!1),A.needReadable=!A.flowing&&!A.ended&&A.length<=A.highWaterMark,k(i)}function S(i,A){A.readingMore||(A.readingMore=!0,s.nextTick(b,i,A))}function b(i,A){for(;!A.reading&&!A.ended&&(A.length<A.highWaterMark||A.flowing&&A.length===0);){var d=A.length;if(H("maybeReadMore read 0"),i.read(0),d===A.length)break}A.readingMore=!1}function R(i){return function(){var A=i._readableState;H("pipeOnDrain",A.awaitDrain),A.awaitDrain&&A.awaitDrain--,A.awaitDrain===0&&P(i,"data")&&(A.flowing=!0,k(i))}}function v(i){var A=i._readableState;A.readableListening=0<i.listenerCount("readable"),A.resumeScheduled&&!A.paused?A.flowing=!0:0<i.listenerCount("data")&&i.resume()}function Q(i){H("readable nexttick read 0"),i.read(0)}function w(i,A){A.resumeScheduled||(A.resumeScheduled=!0,s.nextTick(D,i,A))}function D(i,A){H("resume",A.reading),A.reading||i.read(0),A.resumeScheduled=!1,i.emit("resume"),k(i),A.flowing&&!A.reading&&i.read(0)}function k(i){var A=i._readableState;for(H("flow",A.flowing);A.flowing&&i.read()!==null;);}function x(i,A){if(A.length===0)return null;var d;return A.objectMode?d=A.buffer.shift():!i||i>=A.length?(d=A.decoder?A.buffer.join(""):A.buffer.length===1?A.buffer.first():A.buffer.concat(A.length),A.buffer.clear()):d=A.buffer.consume(i,A.decoder),d}function N(i){var A=i._readableState;H("endReadable",A.endEmitted),A.endEmitted||(A.ended=!0,s.nextTick(F,A,i))}function F(i,A){if(H("endReadableNT",i.endEmitted,i.length),!i.endEmitted&&i.length===0&&(i.endEmitted=!0,A.readable=!1,A.emit("end"),i.autoDestroy)){var d=A._writableState;(!d||d.autoDestroy&&d.finished)&&A.destroy()}}function O(i,A){for(var d=0,_=i.length;d<_;d++)if(i[d]===A)return d;return-1}r.exports=I;var Y;I.ReadableState=u;var H,q=n("events").EventEmitter,P=function(i,A){return i.listeners(A).length},X=n("./internal/streams/stream"),K=n("buffer").Buffer,V=o.Uint8Array||function(){},tt=n("util");H=tt&&tt.debuglog?tt.debuglog("stream"):function(){};var et,at,nt,It=n("./internal/streams/buffer_list"),ut=n("./internal/streams/destroy"),mt=n("./internal/streams/state"),kt=mt.getHighWaterMark,yt=n("../errors").codes,Dt=yt.ERR_INVALID_ARG_TYPE,T=yt.ERR_STREAM_PUSH_AFTER_EOF,G=yt.ERR_METHOD_NOT_IMPLEMENTED,j=yt.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;n("inherits")(I,X);var M=ut.errorOrDestroy,J=["error","close","destroy","pause","resume"];Object.defineProperty(I.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState!==void 0&&this._readableState.destroyed},set:function(i){this._readableState&&(this._readableState.destroyed=i)}}),I.prototype.destroy=ut.destroy,I.prototype._undestroy=ut.undestroy,I.prototype._destroy=function(i,A){A(i)},I.prototype.push=function(i,A){var d,_=this._readableState;return _.objectMode?d=!0:typeof i=="string"&&(A=A||_.defaultEncoding,A!==_.encoding&&(i=K.from(i,A),A=""),d=!0),l(this,i,A,!1,d)},I.prototype.unshift=function(i){return l(this,i,null,!0,!1)},I.prototype.isPaused=function(){return this._readableState.flowing===!1},I.prototype.setEncoding=function(i){et||(et=n("string_decoder/").StringDecoder);var A=new et(i);this._readableState.decoder=A,this._readableState.encoding=this._readableState.decoder.encoding;for(var d=this._readableState.buffer.head,_="";d!==null;)_+=A.write(d.data),d=d.next;return this._readableState.buffer.clear(),_!==""&&this._readableState.buffer.push(_),this._readableState.length=_.length,this},I.prototype.read=function(i){H("read",i),i=parseInt(i,10);var A=this._readableState,d=i;if(i!==0&&(A.emittedReadable=!1),i===0&&A.needReadable&&((A.highWaterMark===0?0<A.length:A.length>=A.highWaterMark)||A.ended))return H("read: emitReadable",A.length,A.ended),A.length===0&&A.ended?N(this):p(this),null;if(i=m(i,A),i===0&&A.ended)return A.length===0&&N(this),null;var _=A.needReadable;H("need readable",_),(A.length===0||A.length-i<A.highWaterMark)&&(_=!0,H("length less than watermark",_)),A.ended||A.reading?(_=!1,H("reading or ended",_)):_&&(H("do read"),A.reading=!0,A.sync=!0,A.length===0&&(A.needReadable=!0),this._read(A.highWaterMark),A.sync=!1,!A.reading&&(i=m(d,A)));var U;return U=0<i?x(i,A):null,U===null?(A.needReadable=A.length<=A.highWaterMark,i=0):(A.length-=i,A.awaitDrain=0),A.length===0&&(!A.ended&&(A.needReadable=!0),d!==i&&A.ended&&N(this)),U!==null&&this.emit("data",U),U},I.prototype._read=function(){M(this,new G("_read()"))},I.prototype.pipe=function(i,A){function d(pe,Be){H("onunpipe"),pe===ot&&Be&&Be.hasUnpiped===!1&&(Be.hasUnpiped=!0,U())}function _(){H("onend"),i.end()}function U(){H("cleanup"),i.removeListener("close",z),i.removeListener("finish",ht),i.removeListener("drain",Ee),i.removeListener("error",W),i.removeListener("unpipe",d),ot.removeListener("end",_),ot.removeListener("end",st),ot.removeListener("data",L),xr=!0,At.awaitDrain&&(!i._writableState||i._writableState.needDrain)&&Ee()}function L(pe){H("ondata");var Be=i.write(pe);H("dest.write",Be),Be===!1&&((At.pipesCount===1&&At.pipes===i||1<At.pipesCount&&O(At.pipes,i)!==-1)&&!xr&&(H("false write response, pause",At.awaitDrain),At.awaitDrain++),ot.pause())}function W(pe){H("onerror",pe),st(),i.removeListener("error",W),P(i,"error")===0&&M(i,pe)}function z(){i.removeListener("finish",ht),st()}function ht(){H("onfinish"),i.removeListener("close",z),st()}function st(){H("unpipe"),ot.unpipe(i)}var ot=this,At=this._readableState;switch(At.pipesCount){case 0:At.pipes=i;break;case 1:At.pipes=[At.pipes,i];break;default:At.pipes.push(i)}At.pipesCount+=1,H("pipe count=%d opts=%j",At.pipesCount,A);var Ie=(!A||A.end!==!1)&&i!==s.stdout&&i!==s.stderr,Ue=Ie?_:st;At.endEmitted?s.nextTick(Ue):ot.once("end",Ue),i.on("unpipe",d);var Ee=R(ot);i.on("drain",Ee);var xr=!1;return ot.on("data",L),c(i,"error",W),i.once("close",z),i.once("finish",ht),i.emit("pipe",ot),At.flowing||(H("pipe resume"),ot.resume()),i},I.prototype.unpipe=function(i){var A=this._readableState,d={hasUnpiped:!1};if(A.pipesCount===0)return this;if(A.pipesCount===1)return i&&i!==A.pipes?this:(i||(i=A.pipes),A.pipes=null,A.pipesCount=0,A.flowing=!1,i&&i.emit("unpipe",this,d),this);if(!i){var _=A.pipes,U=A.pipesCount;A.pipes=null,A.pipesCount=0,A.flowing=!1;for(var L=0;L<U;L++)_[L].emit("unpipe",this,{hasUnpiped:!1});return this}var W=O(A.pipes,i);return W===-1?this:(A.pipes.splice(W,1),A.pipesCount-=1,A.pipesCount===1&&(A.pipes=A.pipes[0]),i.emit("unpipe",this,d),this)},I.prototype.on=function(i,A){var d=X.prototype.on.call(this,i,A),_=this._readableState;return i==="data"?(_.readableListening=0<this.listenerCount("readable"),_.flowing!==!1&&this.resume()):i=="readable"&&!_.endEmitted&&!_.readableListening&&(_.readableListening=_.needReadable=!0,_.flowing=!1,_.emittedReadable=!1,H("on readable",_.length,_.reading),_.length?p(this):!_.reading&&s.nextTick(Q,this)),d},I.prototype.addListener=I.prototype.on,I.prototype.removeListener=function(i,A){var d=X.prototype.removeListener.call(this,i,A);return i==="readable"&&s.nextTick(v,this),d},I.prototype.removeAllListeners=function(i){var A=X.prototype.removeAllListeners.apply(this,arguments);return(i==="readable"||i===void 0)&&s.nextTick(v,this),A},I.prototype.resume=function(){var i=this._readableState;return i.flowing||(H("resume"),i.flowing=!i.readableListening,w(this,i)),i.paused=!1,this},I.prototype.pause=function(){return H("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(H("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},I.prototype.wrap=function(i){var A=this,d=this._readableState,_=!1;for(var U in i.on("end",function(){if(H("wrapped end"),d.decoder&&!d.ended){var W=d.decoder.end();W&&W.length&&A.push(W)}A.push(null)}),i.on("data",function(W){if(H("wrapped data"),d.decoder&&(W=d.decoder.write(W)),!(d.objectMode&&W==null)&&(d.objectMode||W&&W.length)){var z=A.push(W);z||(_=!0,i.pause())}}),i)this[U]===void 0&&typeof i[U]=="function"&&(this[U]=(function(W){return function(){return i[W].apply(i,arguments)}})(U));for(var L=0;L<J.length;L++)i.on(J[L],this.emit.bind(this,J[L]));return this._read=function(W){H("wrapped _read",W),_&&(_=!1,i.resume())},this},typeof Symbol=="function"&&(I.prototype[Symbol.asyncIterator]=function(){return at===void 0&&(at=n("./internal/streams/async_iterator")),at(this)}),Object.defineProperty(I.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(I.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(I.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(i){this._readableState&&(this._readableState.flowing=i)}}),I._fromList=x,Object.defineProperty(I.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}}),typeof Symbol=="function"&&(I.from=function(i,A){return nt===void 0&&(nt=n("./internal/streams/from")),nt(I,i,A)})}).call(this)}).call(this,n("_process"),typeof global>"u"?typeof self>"u"?typeof window>"u"?{}:window:self:global)},{"../errors":15,"./_stream_duplex":16,"./internal/streams/async_iterator":21,"./internal/streams/buffer_list":22,"./internal/streams/destroy":23,"./internal/streams/from":25,"./internal/streams/state":27,"./internal/streams/stream":28,_process:12,buffer:3,events:7,inherits:10,"string_decoder/":31,util:2}],19:[function(n,r){"use strict";function s(y,m){var g=this._transformState;g.transforming=!1;var p=g.writecb;if(p===null)return this.emit("error",new I);g.writechunk=null,g.writecb=null,m!=null&&this.push(m),p(y);var E=this._readableState;E.reading=!1,(E.needReadable||E.length<E.highWaterMark)&&this._read(E.highWaterMark)}function o(y){return this instanceof o?(B.call(this,y),this._transformState={afterTransform:s.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,y&&(typeof y.transform=="function"&&(this._transform=y.transform),typeof y.flush=="function"&&(this._flush=y.flush)),void this.on("prefinish",f)):new o(y)}function f(){var y=this;typeof this._flush!="function"||this._readableState.destroyed?h(this,null,null):this._flush(function(m,g){h(y,m,g)})}function h(y,m,g){if(m)return y.emit("error",m);if(g!=null&&y.push(g),y._writableState.length)throw new C;if(y._transformState.transforming)throw new l;return y.push(null)}r.exports=o;var c=n("../errors").codes,u=c.ERR_METHOD_NOT_IMPLEMENTED,I=c.ERR_MULTIPLE_CALLBACK,l=c.ERR_TRANSFORM_ALREADY_TRANSFORMING,C=c.ERR_TRANSFORM_WITH_LENGTH_0,B=n("./_stream_duplex");n("inherits")(o,B),o.prototype.push=function(y,m){return this._transformState.needTransform=!1,B.prototype.push.call(this,y,m)},o.prototype._transform=function(y,m,g){g(new u("_transform()"))},o.prototype._write=function(y,m,g){var p=this._transformState;if(p.writecb=g,p.writechunk=y,p.writeencoding=m,!p.transforming){var E=this._readableState;(p.needTransform||E.needReadable||E.length<E.highWaterMark)&&this._read(E.highWaterMark)}},o.prototype._read=function(){var y=this._transformState;y.writechunk===null||y.transforming?y.needTransform=!0:(y.transforming=!0,this._transform(y.writechunk,y.writeencoding,y.afterTransform))},o.prototype._destroy=function(y,m){B.prototype._destroy.call(this,y,function(g){m(g)})}},{"../errors":15,"./_stream_duplex":16,inherits:10}],20:[function(n,r){(function(s,o){(function(){"use strict";function f(T){var G=this;this.next=null,this.entry=null,this.finish=function(){N(G,T)}}function h(T){return H.from(T)}function c(T){return H.isBuffer(T)||T instanceof q}function u(){}function I(T,G,j){F=F||n("./_stream_duplex"),T=T||{},typeof j!="boolean"&&(j=G instanceof F),this.objectMode=!!T.objectMode,j&&(this.objectMode=this.objectMode||!!T.writableObjectMode),this.highWaterMark=K(this,T,"writableHighWaterMark",j),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var M=T.decodeStrings===!1;this.decodeStrings=!M,this.defaultEncoding=T.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(J){S(G,J)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=T.emitClose!==!1,this.autoDestroy=!!T.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new f(this)}function l(T){F=F||n("./_stream_duplex");var G=this instanceof F;return G||Dt.call(l,this)?(this._writableState=new I(T,this,G),this.writable=!0,T&&(typeof T.write=="function"&&(this._write=T.write),typeof T.writev=="function"&&(this._writev=T.writev),typeof T.destroy=="function"&&(this._destroy=T.destroy),typeof T.final=="function"&&(this._final=T.final)),void Y.call(this)):new l(T)}function C(T,G){var j=new mt;yt(T,j),s.nextTick(G,j)}function B(T,G,j,M){var J;return j===null?J=new ut:typeof j!="string"&&!G.objectMode&&(J=new tt("chunk",["string","Buffer"],j)),!J||(yt(T,J),s.nextTick(M,J),!1)}function y(T,G,j){return T.objectMode||T.decodeStrings===!1||typeof G!="string"||(G=H.from(G,j)),G}function m(T,G,j,M,J,i){if(!j){var A=y(G,M,J);M!==A&&(j=!0,J="buffer",M=A)}var d=G.objectMode?1:M.length;G.length+=d;var _=G.length<G.highWaterMark;if(_||(G.needDrain=!0),G.writing||G.corked){var U=G.lastBufferedRequest;G.lastBufferedRequest={chunk:M,encoding:J,isBuf:j,callback:i,next:null},U?U.next=G.lastBufferedRequest:G.bufferedRequest=G.lastBufferedRequest,G.bufferedRequestCount+=1}else g(T,G,!1,d,M,J,i);return _}function g(T,G,j,M,J,i,A){G.writelen=M,G.writecb=A,G.writing=!0,G.sync=!0,G.destroyed?G.onwrite(new It("write")):j?T._writev(J,G.onwrite):T._write(J,i,G.onwrite),G.sync=!1}function p(T,G,j,M,J){--G.pendingcb,j?(s.nextTick(J,M),s.nextTick(k,T,G),T._writableState.errorEmitted=!0,yt(T,M)):(J(M),T._writableState.errorEmitted=!0,yt(T,M),k(T,G))}function E(T){T.writing=!1,T.writecb=null,T.length-=T.writelen,T.writelen=0}function S(T,G){var j=T._writableState,M=j.sync,J=j.writecb;if(typeof J!="function")throw new at;if(E(j),G)p(T,j,M,G,J);else{var i=Q(j)||T.destroyed;i||j.corked||j.bufferProcessing||!j.bufferedRequest||v(T,j),M?s.nextTick(b,T,j,i,J):b(T,j,i,J)}}function b(T,G,j,M){j||R(T,G),G.pendingcb--,M(),k(T,G)}function R(T,G){G.length===0&&G.needDrain&&(G.needDrain=!1,T.emit("drain"))}function v(T,G){G.bufferProcessing=!0;var j=G.bufferedRequest;if(T._writev&&j&&j.next){var M=G.bufferedRequestCount,J=Array(M),i=G.corkedRequestsFree;i.entry=j;for(var A=0,d=!0;j;)J[A]=j,j.isBuf||(d=!1),j=j.next,A+=1;J.allBuffers=d,g(T,G,!0,G.length,J,"",i.finish),G.pendingcb++,G.lastBufferedRequest=null,i.next?(G.corkedRequestsFree=i.next,i.next=null):G.corkedRequestsFree=new f(G),G.bufferedRequestCount=0}else{for(;j;){var _=j.chunk,U=j.encoding,L=j.callback,W=G.objectMode?1:_.length;if(g(T,G,!1,W,_,U,L),j=j.next,G.bufferedRequestCount--,G.writing)break}j===null&&(G.lastBufferedRequest=null)}G.bufferedRequest=j,G.bufferProcessing=!1}function Q(T){return T.ending&&T.length===0&&T.bufferedRequest===null&&!T.finished&&!T.writing}function w(T,G){T._final(function(j){G.pendingcb--,j&&yt(T,j),G.prefinished=!0,T.emit("prefinish"),k(T,G)})}function D(T,G){G.prefinished||G.finalCalled||(typeof T._final!="function"||G.destroyed?(G.prefinished=!0,T.emit("prefinish")):(G.pendingcb++,G.finalCalled=!0,s.nextTick(w,T,G)))}function k(T,G){var j=Q(G);if(j&&(D(T,G),G.pendingcb===0&&(G.finished=!0,T.emit("finish"),G.autoDestroy))){var M=T._readableState;(!M||M.autoDestroy&&M.endEmitted)&&T.destroy()}return j}function x(T,G,j){G.ending=!0,k(T,G),j&&(G.finished?s.nextTick(j):T.once("finish",j)),G.ended=!0,T.writable=!1}function N(T,G,j){var M=T.entry;for(T.entry=null;M;){var J=M.callback;G.pendingcb--,J(j),M=M.next}G.corkedRequestsFree.next=T}r.exports=l;var F;l.WritableState=I;var O={deprecate:n("util-deprecate")},Y=n("./internal/streams/stream"),H=n("buffer").Buffer,q=o.Uint8Array||function(){},P=n("./internal/streams/destroy"),X=n("./internal/streams/state"),K=X.getHighWaterMark,V=n("../errors").codes,tt=V.ERR_INVALID_ARG_TYPE,et=V.ERR_METHOD_NOT_IMPLEMENTED,at=V.ERR_MULTIPLE_CALLBACK,nt=V.ERR_STREAM_CANNOT_PIPE,It=V.ERR_STREAM_DESTROYED,ut=V.ERR_STREAM_NULL_VALUES,mt=V.ERR_STREAM_WRITE_AFTER_END,kt=V.ERR_UNKNOWN_ENCODING,yt=P.errorOrDestroy;n("inherits")(l,Y),I.prototype.getBuffer=function(){for(var T=this.bufferedRequest,G=[];T;)G.push(T),T=T.next;return G},(function(){try{Object.defineProperty(I.prototype,"buffer",{get:O.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}})();var Dt;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(Dt=Function.prototype[Symbol.hasInstance],Object.defineProperty(l,Symbol.hasInstance,{value:function(T){return!!Dt.call(this,T)||this===l&&T&&T._writableState instanceof I}})):Dt=function(T){return T instanceof this},l.prototype.pipe=function(){yt(this,new nt)},l.prototype.write=function(T,G,j){var M=this._writableState,J=!1,i=!M.objectMode&&c(T);return i&&!H.isBuffer(T)&&(T=h(T)),typeof G=="function"&&(j=G,G=null),i?G="buffer":!G&&(G=M.defaultEncoding),typeof j!="function"&&(j=u),M.ending?C(this,j):(i||B(this,M,T,j))&&(M.pendingcb++,J=m(this,M,i,T,G,j)),J},l.prototype.cork=function(){this._writableState.corked++},l.prototype.uncork=function(){var T=this._writableState;T.corked&&(T.corked--,!T.writing&&!T.corked&&!T.bufferProcessing&&T.bufferedRequest&&v(this,T))},l.prototype.setDefaultEncoding=function(T){if(typeof T=="string"&&(T=T.toLowerCase()),!(-1<["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((T+"").toLowerCase())))throw new kt(T);return this._writableState.defaultEncoding=T,this},Object.defineProperty(l.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(l.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),l.prototype._write=function(T,G,j){j(new et("_write()"))},l.prototype._writev=null,l.prototype.end=function(T,G,j){var M=this._writableState;return typeof T=="function"?(j=T,T=null,G=null):typeof G=="function"&&(j=G,G=null),T!=null&&this.write(T,G),M.corked&&(M.corked=1,this.uncork()),M.ending||x(this,M,j),this},Object.defineProperty(l.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(l.prototype,"destroyed",{enumerable:!1,get:function(){return this._writableState!==void 0&&this._writableState.destroyed},set:function(T){this._writableState&&(this._writableState.destroyed=T)}}),l.prototype.destroy=P.destroy,l.prototype._undestroy=P.undestroy,l.prototype._destroy=function(T,G){G(T)}}).call(this)}).call(this,n("_process"),typeof global>"u"?typeof self>"u"?typeof window>"u"?{}:window:self:global)},{"../errors":15,"./_stream_duplex":16,"./internal/streams/destroy":23,"./internal/streams/state":27,"./internal/streams/stream":28,_process:12,buffer:3,inherits:10,"util-deprecate":32}],21:[function(n,r){(function(s){(function(){"use strict";function o(R,v,Q){return v in R?Object.defineProperty(R,v,{value:Q,enumerable:!0,configurable:!0,writable:!0}):R[v]=Q,R}function f(R,v){return{value:R,done:v}}function h(R){var v=R[C];if(v!==null){var Q=R[E].read();Q!==null&&(R[g]=null,R[C]=null,R[B]=null,v(f(Q,!1)))}}function c(R){s.nextTick(h,R)}function u(R,v){return function(Q,w){R.then(function(){return v[m]?void Q(f(void 0,!0)):void v[p](Q,w)},w)}}var I,l=n("./end-of-stream"),C=Symbol("lastResolve"),B=Symbol("lastReject"),y=Symbol("error"),m=Symbol("ended"),g=Symbol("lastPromise"),p=Symbol("handlePromise"),E=Symbol("stream"),S=Object.getPrototypeOf(function(){}),b=Object.setPrototypeOf((I={get stream(){return this[E]},next:function(){var R=this,v=this[y];if(v!==null)return Promise.reject(v);if(this[m])return Promise.resolve(f(void 0,!0));if(this[E].destroyed)return new Promise(function(k,x){s.nextTick(function(){R[y]?x(R[y]):k(f(void 0,!0))})});var Q,w=this[g];if(w)Q=new Promise(u(w,this));else{var D=this[E].read();if(D!==null)return Promise.resolve(f(D,!1));Q=new Promise(this[p])}return this[g]=Q,Q}},o(I,Symbol.asyncIterator,function(){return this}),o(I,"return",function(){var R=this;return new Promise(function(v,Q){R[E].destroy(null,function(w){return w?void Q(w):void v(f(void 0,!0))})})}),I),S);r.exports=function(R){var v,Q=Object.create(b,(v={},o(v,E,{value:R,writable:!0}),o(v,C,{value:null,writable:!0}),o(v,B,{value:null,writable:!0}),o(v,y,{value:null,writable:!0}),o(v,m,{value:R._readableState.endEmitted,writable:!0}),o(v,p,{value:function(w,D){var k=Q[E].read();k?(Q[g]=null,Q[C]=null,Q[B]=null,w(f(k,!1))):(Q[C]=w,Q[B]=D)},writable:!0}),v));return Q[g]=null,l(R,function(w){if(w&&w.code!=="ERR_STREAM_PREMATURE_CLOSE"){var D=Q[B];return D!==null&&(Q[g]=null,Q[C]=null,Q[B]=null,D(w)),void(Q[y]=w)}var k=Q[C];k!==null&&(Q[g]=null,Q[C]=null,Q[B]=null,k(f(void 0,!0))),Q[m]=!0}),R.on("readable",c.bind(null,Q)),Q}}).call(this)}).call(this,n("_process"))},{"./end-of-stream":24,_process:12}],22:[function(n,r){"use strict";function s(g,p){var E=Object.keys(g);if(Object.getOwnPropertySymbols){var S=Object.getOwnPropertySymbols(g);p&&(S=S.filter(function(b){return Object.getOwnPropertyDescriptor(g,b).enumerable})),E.push.apply(E,S)}return E}function o(g){for(var p,E=1;E<arguments.length;E++)p=arguments[E]==null?{}:arguments[E],E%2?s(Object(p),!0).forEach(function(S){f(g,S,p[S])}):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(p)):s(Object(p)).forEach(function(S){Object.defineProperty(g,S,Object.getOwnPropertyDescriptor(p,S))});return g}function f(g,p,E){return p in g?Object.defineProperty(g,p,{value:E,enumerable:!0,configurable:!0,writable:!0}):g[p]=E,g}function h(g,p){if(!(g instanceof p))throw new TypeError("Cannot call a class as a function")}function c(g,p){for(var E,S=0;S<p.length;S++)E=p[S],E.enumerable=E.enumerable||!1,E.configurable=!0,"value"in E&&(E.writable=!0),Object.defineProperty(g,E.key,E)}function u(g,p,E){return p&&c(g.prototype,p),E&&c(g,E),g}function I(g,p,E){C.prototype.copy.call(g,p,E)}var l=n("buffer"),C=l.Buffer,B=n("util"),y=B.inspect,m=y&&y.custom||"inspect";r.exports=(function(){function g(){h(this,g),this.head=null,this.tail=null,this.length=0}return u(g,[{key:"push",value:function(p){var E={data:p,next:null};0<this.length?this.tail.next=E:this.head=E,this.tail=E,++this.length}},{key:"unshift",value:function(p){var E={data:p,next:this.head};this.length===0&&(this.tail=E),this.head=E,++this.length}},{key:"shift",value:function(){if(this.length!==0){var p=this.head.data;return this.head=this.length===1?this.tail=null:this.head.next,--this.length,p}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(p){if(this.length===0)return"";for(var E=this.head,S=""+E.data;E=E.next;)S+=p+E.data;return S}},{key:"concat",value:function(p){if(this.length===0)return C.alloc(0);for(var E=C.allocUnsafe(p>>>0),S=this.head,b=0;S;)I(S.data,E,b),b+=S.data.length,S=S.next;return E}},{key:"consume",value:function(p,E){var S;return p<this.head.data.length?(S=this.head.data.slice(0,p),this.head.data=this.head.data.slice(p)):p===this.head.data.length?S=this.shift():S=E?this._getString(p):this._getBuffer(p),S}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(p){var E=this.head,S=1,b=E.data;for(p-=b.length;E=E.next;){var R=E.data,v=p>R.length?R.length:p;if(b+=v===R.length?R:R.slice(0,p),p-=v,p===0){v===R.length?(++S,this.head=E.next?E.next:this.tail=null):(this.head=E,E.data=R.slice(v));break}++S}return this.length-=S,b}},{key:"_getBuffer",value:function(p){var E=C.allocUnsafe(p),S=this.head,b=1;for(S.data.copy(E),p-=S.data.length;S=S.next;){var R=S.data,v=p>R.length?R.length:p;if(R.copy(E,E.length-p,0,v),p-=v,p===0){v===R.length?(++b,this.head=S.next?S.next:this.tail=null):(this.head=S,S.data=R.slice(v));break}++b}return this.length-=b,E}},{key:m,value:function(p,E){return y(this,o({},E,{depth:0,customInspect:!1}))}}]),g})()},{buffer:3,util:2}],23:[function(n,r){(function(s){(function(){"use strict";function o(c,u){h(c,u),f(c)}function f(c){c._writableState&&!c._writableState.emitClose||c._readableState&&!c._readableState.emitClose||c.emit("close")}function h(c,u){c.emit("error",u)}r.exports={destroy:function(c,u){var I=this,l=this._readableState&&this._readableState.destroyed,C=this._writableState&&this._writableState.destroyed;return l||C?(u?u(c):c&&(this._writableState?!this._writableState.errorEmitted&&(this._writableState.errorEmitted=!0,s.nextTick(h,this,c)):s.nextTick(h,this,c)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(c||null,function(B){!u&&B?I._writableState?I._writableState.errorEmitted?s.nextTick(f,I):(I._writableState.errorEmitted=!0,s.nextTick(o,I,B)):s.nextTick(o,I,B):u?(s.nextTick(f,I),u(B)):s.nextTick(f,I)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(c,u){var I=c._readableState,l=c._writableState;I&&I.autoDestroy||l&&l.autoDestroy?c.destroy(u):c.emit("error",u)}}}).call(this)}).call(this,n("_process"))},{_process:12}],24:[function(n,r){"use strict";function s(u){var I=!1;return function(){if(!I){I=!0;for(var l=arguments.length,C=Array(l),B=0;B<l;B++)C[B]=arguments[B];u.apply(this,C)}}}function o(){}function f(u){return u.setHeader&&typeof u.abort=="function"}function h(u,I,l){if(typeof I=="function")return h(u,null,I);I||(I={}),l=s(l||o);var C=I.readable||I.readable!==!1&&u.readable,B=I.writable||I.writable!==!1&&u.writable,y=function(){u.writable||g()},m=u._writableState&&u._writableState.finished,g=function(){B=!1,m=!0,C||l.call(u)},p=u._readableState&&u._readableState.endEmitted,E=function(){C=!1,p=!0,B||l.call(u)},S=function(v){l.call(u,v)},b=function(){var v;return C&&!p?(u._readableState&&u._readableState.ended||(v=new c),l.call(u,v)):B&&!m?(u._writableState&&u._writableState.ended||(v=new c),l.call(u,v)):void 0},R=function(){u.req.on("finish",g)};return f(u)?(u.on("complete",g),u.on("abort",b),u.req?R():u.on("request",R)):B&&!u._writableState&&(u.on("end",y),u.on("close",y)),u.on("end",E),u.on("finish",g),I.error!==!1&&u.on("error",S),u.on("close",b),function(){u.removeListener("complete",g),u.removeListener("abort",b),u.removeListener("request",R),u.req&&u.req.removeListener("finish",g),u.removeListener("end",y),u.removeListener("close",y),u.removeListener("finish",g),u.removeListener("end",E),u.removeListener("error",S),u.removeListener("close",b)}}var c=n("../../../errors").codes.ERR_STREAM_PREMATURE_CLOSE;r.exports=h},{"../../../errors":15}],25:[function(n,r){r.exports=function(){throw new Error("Readable.from is not available in the browser")}},{}],26:[function(n,r){"use strict";function s(m){var g=!1;return function(){g||(g=!0,m.apply(void 0,arguments))}}function o(m){if(m)throw m}function f(m){return m.setHeader&&typeof m.abort=="function"}function h(m,g,p,E){E=s(E);var S=!1;m.on("close",function(){S=!0}),l===void 0&&(l=n("./end-of-stream")),l(m,{readable:g,writable:p},function(R){return R?E(R):(S=!0,void E())});var b=!1;return function(R){if(!S)return b?void 0:(b=!0,f(m)?m.abort():typeof m.destroy=="function"?m.destroy():void E(R||new y("pipe")))}}function c(m){m()}function u(m,g){return m.pipe(g)}function I(m){return m.length&&typeof m[m.length-1]=="function"?m.pop():o}var l,C=n("../../../errors").codes,B=C.ERR_MISSING_ARGS,y=C.ERR_STREAM_DESTROYED;r.exports=function(){for(var m=arguments.length,g=Array(m),p=0;p<m;p++)g[p]=arguments[p];var E=I(g);if(Array.isArray(g[0])&&(g=g[0]),2>g.length)throw new B("streams");var S,b=g.map(function(R,v){var Q=v<g.length-1;return h(R,Q,0<v,function(w){S||(S=w),w&&b.forEach(c),Q||(b.forEach(c),E(S))})});return g.reduce(u)}},{"../../../errors":15,"./end-of-stream":24}],27:[function(n,r){"use strict";function s(f,h,c){return f.highWaterMark==null?h?f[c]:null:f.highWaterMark}var o=n("../../../errors").codes.ERR_INVALID_OPT_VALUE;r.exports={getHighWaterMark:function(f,h,c,u){var I=s(h,u,c);if(I!=null){if(!(isFinite(I)&&a(I)===I)||0>I){var l=u?c:"highWaterMark";throw new o(l,I)}return a(I)}return f.objectMode?16:16384}}},{"../../../errors":15}],28:[function(n,r){r.exports=n("events").EventEmitter},{events:7}],29:[function(n,r,s){s=r.exports=n("./lib/_stream_readable.js"),s.Stream=s,s.Readable=s,s.Writable=n("./lib/_stream_writable.js"),s.Duplex=n("./lib/_stream_duplex.js"),s.Transform=n("./lib/_stream_transform.js"),s.PassThrough=n("./lib/_stream_passthrough.js"),s.finished=n("./lib/internal/streams/end-of-stream.js"),s.pipeline=n("./lib/internal/streams/pipeline.js")},{"./lib/_stream_duplex.js":16,"./lib/_stream_passthrough.js":17,"./lib/_stream_readable.js":18,"./lib/_stream_transform.js":19,"./lib/_stream_writable.js":20,"./lib/internal/streams/end-of-stream.js":24,"./lib/internal/streams/pipeline.js":26}],30:[function(n,r,s){function o(u,I){for(var l in u)I[l]=u[l]}function f(u,I,l){return c(u,I,l)}var h=n("buffer"),c=h.Buffer;c.from&&c.alloc&&c.allocUnsafe&&c.allocUnsafeSlow?r.exports=h:(o(h,s),s.Buffer=f),f.prototype=Object.create(c.prototype),o(c,f),f.from=function(u,I,l){if(typeof u=="number")throw new TypeError("Argument must not be a number");return c(u,I,l)},f.alloc=function(u,I,l){if(typeof u!="number")throw new TypeError("Argument must be a number");var C=c(u);return I===void 0?C.fill(0):typeof l=="string"?C.fill(I,l):C.fill(I),C},f.allocUnsafe=function(u){if(typeof u!="number")throw new TypeError("Argument must be a number");return c(u)},f.allocUnsafeSlow=function(u){if(typeof u!="number")throw new TypeError("Argument must be a number");return h.SlowBuffer(u)}},{buffer:3}],31:[function(n,r,s){"use strict";function o(b){if(!b)return"utf8";for(var R;;)switch(b){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return b;default:if(R)return;b=(""+b).toLowerCase(),R=!0}}function f(b){var R=o(b);if(typeof R!="string"&&(E.isEncoding===S||!S(b)))throw new Error("Unknown encoding: "+b);return R||b}function h(b){this.encoding=f(b);var R;switch(this.encoding){case"utf16le":this.text=C,this.end=B,R=4;break;case"utf8":this.fillLast=l,R=4;break;case"base64":this.text=y,this.end=m,R=3;break;default:return this.write=g,void(this.end=p)}this.lastNeed=0,this.lastTotal=0,this.lastChar=E.allocUnsafe(R)}function c(b){return 127>=b?0:b>>5==6?2:b>>4==14?3:b>>3==30?4:b>>6==2?-1:-2}function u(b,R,v){var Q=R.length-1;if(Q<v)return 0;var w=c(R[Q]);return 0<=w?(0<w&&(b.lastNeed=w-1),w):--Q<v||w===-2?0:(w=c(R[Q]),0<=w?(0<w&&(b.lastNeed=w-2),w):--Q<v||w===-2?0:(w=c(R[Q]),0<=w?(0<w&&(w===2?w=0:b.lastNeed=w-3),w):0))}function I(b,R){if((192&R[0])!=128)return b.lastNeed=0,"\uFFFD";if(1<b.lastNeed&&1<R.length){if((192&R[1])!=128)return b.lastNeed=1,"\uFFFD";if(2<b.lastNeed&&2<R.length&&(192&R[2])!=128)return b.lastNeed=2,"\uFFFD"}}function l(b){var R=this.lastTotal-this.lastNeed,v=I(this,b,R);return v===void 0?this.lastNeed<=b.length?(b.copy(this.lastChar,R,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(b.copy(this.lastChar,R,0,b.length),void(this.lastNeed-=b.length)):v}function C(b,R){if((b.length-R)%2==0){var v=b.toString("utf16le",R);if(v){var Q=v.charCodeAt(v.length-1);if(55296<=Q&&56319>=Q)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=b[b.length-2],this.lastChar[1]=b[b.length-1],v.slice(0,-1)}return v}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=b[b.length-1],b.toString("utf16le",R,b.length-1)}function B(b){var R=b&&b.length?this.write(b):"";if(this.lastNeed){var v=this.lastTotal-this.lastNeed;return R+this.lastChar.toString("utf16le",0,v)}return R}function y(b,R){var v=(b.length-R)%3;return v==0?b.toString("base64",R):(this.lastNeed=3-v,this.lastTotal=3,v==1?this.lastChar[0]=b[b.length-1]:(this.lastChar[0]=b[b.length-2],this.lastChar[1]=b[b.length-1]),b.toString("base64",R,b.length-v))}function m(b){var R=b&&b.length?this.write(b):"";return this.lastNeed?R+this.lastChar.toString("base64",0,3-this.lastNeed):R}function g(b){return b.toString(this.encoding)}function p(b){return b&&b.length?this.write(b):""}var E=n("safe-buffer").Buffer,S=E.isEncoding||function(b){switch(b=""+b,b&&b.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};s.StringDecoder=h,h.prototype.write=function(b){if(b.length===0)return"";var R,v;if(this.lastNeed){if(R=this.fillLast(b),R===void 0)return"";v=this.lastNeed,this.lastNeed=0}else v=0;return v<b.length?R?R+this.text(b,v):this.text(b,v):R||""},h.prototype.end=function(b){var R=b&&b.length?this.write(b):"";return this.lastNeed?R+"\uFFFD":R},h.prototype.text=function(b,R){var v=u(this,b,R);if(!this.lastNeed)return b.toString("utf8",R);this.lastTotal=v;var Q=b.length-(v-this.lastNeed);return b.copy(this.lastChar,0,Q),b.toString("utf8",R,Q)},h.prototype.fillLast=function(b){return this.lastNeed<=b.length?(b.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(b.copy(this.lastChar,this.lastTotal-this.lastNeed,0,b.length),void(this.lastNeed-=b.length))}},{"safe-buffer":30}],32:[function(n,r){(function(s){(function(){function o(f){try{if(!s.localStorage)return!1}catch{return!1}var h=s.localStorage[f];return h!=null&&(h+"").toLowerCase()==="true"}r.exports=function(f,h){function c(){if(!u){if(o("throwDeprecation"))throw new Error(h);o("traceDeprecation")?console.trace(h):console.warn(h),u=!0}return f.apply(this,arguments)}if(o("noDeprecation"))return f;var u=!1;return c}}).call(this)}).call(this,typeof global>"u"?typeof self>"u"?typeof window>"u"?{}:window:self:global)},{}],"/":[function(n,r){function s(m){return m.replace(/a=ice-options:trickle\s\n/g,"")}function o(m){console.warn(m)}let f=n("debug")("simple-peer"),h=n("get-browser-rtc"),c=n("randombytes"),u=n("readable-stream"),I=n("queue-microtask"),l=n("err-code"),{Buffer:C}=n("buffer"),B=65536;class y extends u.Duplex{constructor(g){if(g=Object.assign({allowHalfOpen:!1},g),super(g),this._id=c(4).toString("hex").slice(0,7),this._debug("new peer %o",g),this.channelName=g.initiator?g.channelName||c(20).toString("hex"):null,this.initiator=g.initiator||!1,this.channelConfig=g.channelConfig||y.channelConfig,this.channelNegotiated=this.channelConfig.negotiated,this.config=Object.assign({},y.config,g.config),this.offerOptions=g.offerOptions||{},this.answerOptions=g.answerOptions||{},this.sdpTransform=g.sdpTransform||(p=>p),this.streams=g.streams||(g.stream?[g.stream]:[]),this.trickle=g.trickle===void 0||g.trickle,this.allowHalfTrickle=g.allowHalfTrickle!==void 0&&g.allowHalfTrickle,this.iceCompleteTimeout=g.iceCompleteTimeout||5e3,this.destroyed=!1,this.destroying=!1,this._connected=!1,this.remoteAddress=void 0,this.remoteFamily=void 0,this.remotePort=void 0,this.localAddress=void 0,this.localFamily=void 0,this.localPort=void 0,this._wrtc=g.wrtc&&typeof g.wrtc=="object"?g.wrtc:h(),!this._wrtc)throw l(typeof window>"u"?new Error("No WebRTC support: Specify `opts.wrtc` option in this environment"):new Error("No WebRTC support: Not a supported browser"),"ERR_WEBRTC_SUPPORT");this._pcReady=!1,this._channelReady=!1,this._iceComplete=!1,this._iceCompleteTimer=null,this._channel=null,this._pendingCandidates=[],this._isNegotiating=!1,this._firstNegotiation=!0,this._batchedNegotiation=!1,this._queuedNegotiation=!1,this._sendersAwaitingStable=[],this._senderMap=new Map,this._closingInterval=null,this._remoteTracks=[],this._remoteStreams=[],this._chunk=null,this._cb=null,this._interval=null;try{this._pc=new this._wrtc.RTCPeerConnection(this.config)}catch(p){return void this.destroy(l(p,"ERR_PC_CONSTRUCTOR"))}this._isReactNativeWebrtc=typeof this._pc._peerConnectionId=="number",this._pc.oniceconnectionstatechange=()=>{this._onIceStateChange()},this._pc.onicegatheringstatechange=()=>{this._onIceStateChange()},this._pc.onconnectionstatechange=()=>{this._onConnectionStateChange()},this._pc.onsignalingstatechange=()=>{this._onSignalingStateChange()},this._pc.onicecandidate=p=>{this._onIceCandidate(p)},typeof this._pc.peerIdentity=="object"&&this._pc.peerIdentity.catch(p=>{this.destroy(l(p,"ERR_PC_PEER_IDENTITY"))}),this.initiator||this.channelNegotiated?this._setupData({channel:this._pc.createDataChannel(this.channelName,this.channelConfig)}):this._pc.ondatachannel=p=>{this._setupData(p)},this.streams&&this.streams.forEach(p=>{this.addStream(p)}),this._pc.ontrack=p=>{this._onTrack(p)},this._debug("initial negotiation"),this._needsNegotiation(),this._onFinishBound=()=>{this._onFinish()},this.once("finish",this._onFinishBound)}get bufferSize(){return this._channel&&this._channel.bufferedAmount||0}get connected(){return this._connected&&this._channel.readyState==="open"}address(){return{port:this.localPort,family:this.localFamily,address:this.localAddress}}signal(g){if(!this.destroying){if(this.destroyed)throw l(new Error("cannot signal after peer is destroyed"),"ERR_DESTROYED");if(typeof g=="string")try{g=JSON.parse(g)}catch{g={}}this._debug("signal()"),g.renegotiate&&this.initiator&&(this._debug("got request to renegotiate"),this._needsNegotiation()),g.transceiverRequest&&this.initiator&&(this._debug("got request for transceiver"),this.addTransceiver(g.transceiverRequest.kind,g.transceiverRequest.init)),g.candidate&&(this._pc.remoteDescription&&this._pc.remoteDescription.type?this._addIceCandidate(g.candidate):this._pendingCandidates.push(g.candidate)),g.sdp&&this._pc.setRemoteDescription(new this._wrtc.RTCSessionDescription(g)).then(()=>{this.destroyed||(this._pendingCandidates.forEach(p=>{this._addIceCandidate(p)}),this._pendingCandidates=[],this._pc.remoteDescription.type==="offer"&&this._createAnswer())}).catch(p=>{this.destroy(l(p,"ERR_SET_REMOTE_DESCRIPTION"))}),g.sdp||g.candidate||g.renegotiate||g.transceiverRequest||this.destroy(l(new Error("signal() called with invalid signal data"),"ERR_SIGNALING"))}}_addIceCandidate(g){let p=new this._wrtc.RTCIceCandidate(g);this._pc.addIceCandidate(p).catch(E=>{!p.address||p.address.endsWith(".local")?o("Ignoring unsupported ICE candidate."):this.destroy(l(E,"ERR_ADD_ICE_CANDIDATE"))})}send(g){if(!this.destroying){if(this.destroyed)throw l(new Error("cannot send after peer is destroyed"),"ERR_DESTROYED");this._channel.send(g)}}addTransceiver(g,p){if(!this.destroying){if(this.destroyed)throw l(new Error("cannot addTransceiver after peer is destroyed"),"ERR_DESTROYED");if(this._debug("addTransceiver()"),this.initiator)try{this._pc.addTransceiver(g,p),this._needsNegotiation()}catch(E){this.destroy(l(E,"ERR_ADD_TRANSCEIVER"))}else this.emit("signal",{type:"transceiverRequest",transceiverRequest:{kind:g,init:p}})}}addStream(g){if(!this.destroying){if(this.destroyed)throw l(new Error("cannot addStream after peer is destroyed"),"ERR_DESTROYED");this._debug("addStream()"),g.getTracks().forEach(p=>{this.addTrack(p,g)})}}addTrack(g,p){if(this.destroying)return;if(this.destroyed)throw l(new Error("cannot addTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("addTrack()");let E=this._senderMap.get(g)||new Map,S=E.get(p);if(!S)S=this._pc.addTrack(g,p),E.set(p,S),this._senderMap.set(g,E),this._needsNegotiation();else throw S.removed?l(new Error("Track has been removed. You should enable/disable tracks that you want to re-add."),"ERR_SENDER_REMOVED"):l(new Error("Track has already been added to that stream."),"ERR_SENDER_ALREADY_ADDED")}replaceTrack(g,p,E){if(this.destroying)return;if(this.destroyed)throw l(new Error("cannot replaceTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("replaceTrack()");let S=this._senderMap.get(g),b=S?S.get(E):null;if(!b)throw l(new Error("Cannot replace track that was never added."),"ERR_TRACK_NOT_ADDED");p&&this._senderMap.set(p,S),b.replaceTrack==null?this.destroy(l(new Error("replaceTrack is not supported in this browser"),"ERR_UNSUPPORTED_REPLACETRACK")):b.replaceTrack(p)}removeTrack(g,p){if(this.destroying)return;if(this.destroyed)throw l(new Error("cannot removeTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("removeSender()");let E=this._senderMap.get(g),S=E?E.get(p):null;if(!S)throw l(new Error("Cannot remove track that was never added."),"ERR_TRACK_NOT_ADDED");try{S.removed=!0,this._pc.removeTrack(S)}catch(b){b.name==="NS_ERROR_UNEXPECTED"?this._sendersAwaitingStable.push(S):this.destroy(l(b,"ERR_REMOVE_TRACK"))}this._needsNegotiation()}removeStream(g){if(!this.destroying){if(this.destroyed)throw l(new Error("cannot removeStream after peer is destroyed"),"ERR_DESTROYED");this._debug("removeSenders()"),g.getTracks().forEach(p=>{this.removeTrack(p,g)})}}_needsNegotiation(){this._debug("_needsNegotiation"),this._batchedNegotiation||(this._batchedNegotiation=!0,I(()=>{this._batchedNegotiation=!1,this.initiator||!this._firstNegotiation?(this._debug("starting batched negotiation"),this.negotiate()):this._debug("non-initiator initial negotiation request discarded"),this._firstNegotiation=!1}))}negotiate(){if(!this.destroying){if(this.destroyed)throw l(new Error("cannot negotiate after peer is destroyed"),"ERR_DESTROYED");this.initiator?this._isNegotiating?(this._queuedNegotiation=!0,this._debug("already negotiating, queueing")):(this._debug("start negotiation"),setTimeout(()=>{this._createOffer()},0)):this._isNegotiating?(this._queuedNegotiation=!0,this._debug("already negotiating, queueing")):(this._debug("requesting negotiation from initiator"),this.emit("signal",{type:"renegotiate",renegotiate:!0})),this._isNegotiating=!0}}destroy(g){this._destroy(g,()=>{})}_destroy(g,p){this.destroyed||this.destroying||(this.destroying=!0,this._debug("destroying (error: %s)",g&&(g.message||g)),I(()=>{if(this.destroyed=!0,this.destroying=!1,this._debug("destroy (error: %s)",g&&(g.message||g)),this.readable=this.writable=!1,this._readableState.ended||this.push(null),this._writableState.finished||this.end(),this._connected=!1,this._pcReady=!1,this._channelReady=!1,this._remoteTracks=null,this._remoteStreams=null,this._senderMap=null,clearInterval(this._closingInterval),this._closingInterval=null,clearInterval(this._interval),this._interval=null,this._chunk=null,this._cb=null,this._onFinishBound&&this.removeListener("finish",this._onFinishBound),this._onFinishBound=null,this._channel){try{this._channel.close()}catch{}this._channel.onmessage=null,this._channel.onopen=null,this._channel.onclose=null,this._channel.onerror=null}if(this._pc){try{this._pc.close()}catch{}this._pc.oniceconnectionstatechange=null,this._pc.onicegatheringstatechange=null,this._pc.onsignalingstatechange=null,this._pc.onicecandidate=null,this._pc.ontrack=null,this._pc.ondatachannel=null}this._pc=null,this._channel=null,g&&this.emit("error",g),this.emit("close"),p()}))}_setupData(g){if(!g.channel)return this.destroy(l(new Error("Data channel event is missing `channel` property"),"ERR_DATA_CHANNEL"));this._channel=g.channel,this._channel.binaryType="arraybuffer",typeof this._channel.bufferedAmountLowThreshold=="number"&&(this._channel.bufferedAmountLowThreshold=B),this.channelName=this._channel.label,this._channel.onmessage=E=>{this._onChannelMessage(E)},this._channel.onbufferedamountlow=()=>{this._onChannelBufferedAmountLow()},this._channel.onopen=()=>{this._onChannelOpen()},this._channel.onclose=()=>{this._onChannelClose()},this._channel.onerror=E=>{let S=E.error instanceof Error?E.error:new Error(`Datachannel error: ${E.message} ${E.filename}:${E.lineno}:${E.colno}`);this.destroy(l(S,"ERR_DATA_CHANNEL"))};let p=!1;this._closingInterval=setInterval(()=>{this._channel&&this._channel.readyState==="closing"?(p&&this._onChannelClose(),p=!0):p=!1},5e3)}_read(){}_write(g,p,E){if(this.destroyed)return E(l(new Error("cannot write after peer is destroyed"),"ERR_DATA_CHANNEL"));if(this._connected){try{this.send(g)}catch(S){return this.destroy(l(S,"ERR_DATA_CHANNEL"))}this._channel.bufferedAmount>B?(this._debug("start backpressure: bufferedAmount %d",this._channel.bufferedAmount),this._cb=E):E(null)}else this._debug("write before connect"),this._chunk=g,this._cb=E}_onFinish(){if(!this.destroyed){let g=()=>{setTimeout(()=>this.destroy(),1e3)};this._connected?g():this.once("connect",g)}}_startIceCompleteTimeout(){this.destroyed||this._iceCompleteTimer||(this._debug("started iceComplete timeout"),this._iceCompleteTimer=setTimeout(()=>{this._iceComplete||(this._iceComplete=!0,this._debug("iceComplete timeout completed"),this.emit("iceTimeout"),this.emit("_iceComplete"))},this.iceCompleteTimeout))}_createOffer(){this.destroyed||this._pc.createOffer(this.offerOptions).then(g=>{if(this.destroyed)return;this.trickle||this.allowHalfTrickle||(g.sdp=s(g.sdp)),g.sdp=this.sdpTransform(g.sdp);let p=()=>{if(!this.destroyed){let E=this._pc.localDescription||g;this._debug("signal"),this.emit("signal",{type:E.type,sdp:E.sdp})}};this._pc.setLocalDescription(g).then(()=>{this._debug("createOffer success"),this.destroyed||(this.trickle||this._iceComplete?p():this.once("_iceComplete",p))}).catch(E=>{this.destroy(l(E,"ERR_SET_LOCAL_DESCRIPTION"))})}).catch(g=>{this.destroy(l(g,"ERR_CREATE_OFFER"))})}_requestMissingTransceivers(){this._pc.getTransceivers&&this._pc.getTransceivers().forEach(g=>{g.mid||!g.sender.track||g.requested||(g.requested=!0,this.addTransceiver(g.sender.track.kind))})}_createAnswer(){this.destroyed||this._pc.createAnswer(this.answerOptions).then(g=>{if(this.destroyed)return;this.trickle||this.allowHalfTrickle||(g.sdp=s(g.sdp)),g.sdp=this.sdpTransform(g.sdp);let p=()=>{if(!this.destroyed){let E=this._pc.localDescription||g;this._debug("signal"),this.emit("signal",{type:E.type,sdp:E.sdp}),this.initiator||this._requestMissingTransceivers()}};this._pc.setLocalDescription(g).then(()=>{this.destroyed||(this.trickle||this._iceComplete?p():this.once("_iceComplete",p))}).catch(E=>{this.destroy(l(E,"ERR_SET_LOCAL_DESCRIPTION"))})}).catch(g=>{this.destroy(l(g,"ERR_CREATE_ANSWER"))})}_onConnectionStateChange(){this.destroyed||this._pc.connectionState==="failed"&&this.destroy(l(new Error("Connection failed."),"ERR_CONNECTION_FAILURE"))}_onIceStateChange(){if(this.destroyed)return;let g=this._pc.iceConnectionState,p=this._pc.iceGatheringState;this._debug("iceStateChange (connection: %s) (gathering: %s)",g,p),this.emit("iceStateChange",g,p),(g==="connected"||g==="completed")&&(this._pcReady=!0,this._maybeReady()),g==="failed"&&this.destroy(l(new Error("Ice connection failed."),"ERR_ICE_CONNECTION_FAILURE")),g==="closed"&&this.destroy(l(new Error("Ice connection closed."),"ERR_ICE_CONNECTION_CLOSED"))}getStats(g){let p=E=>(Object.prototype.toString.call(E.values)==="[object Array]"&&E.values.forEach(S=>{Object.assign(E,S)}),E);this._pc.getStats.length===0||this._isReactNativeWebrtc?this._pc.getStats().then(E=>{let S=[];E.forEach(b=>{S.push(p(b))}),g(null,S)},E=>g(E)):0<this._pc.getStats.length?this._pc.getStats(E=>{if(this.destroyed)return;let S=[];E.result().forEach(b=>{let R={};b.names().forEach(v=>{R[v]=b.stat(v)}),R.id=b.id,R.type=b.type,R.timestamp=b.timestamp,S.push(p(R))}),g(null,S)},E=>g(E)):g(null,[])}_maybeReady(){if(this._debug("maybeReady pc %s channel %s",this._pcReady,this._channelReady),this._connected||this._connecting||!this._pcReady||!this._channelReady)return;this._connecting=!0;let g=()=>{this.destroyed||this.getStats((p,E)=>{if(this.destroyed)return;p&&(E=[]);let S={},b={},R={},v=!1;E.forEach(w=>{(w.type==="remotecandidate"||w.type==="remote-candidate")&&(S[w.id]=w),(w.type==="localcandidate"||w.type==="local-candidate")&&(b[w.id]=w),(w.type==="candidatepair"||w.type==="candidate-pair")&&(R[w.id]=w)});let Q=w=>{v=!0;let D=b[w.localCandidateId];D&&(D.ip||D.address)?(this.localAddress=D.ip||D.address,this.localPort=+D.port):D&&D.ipAddress?(this.localAddress=D.ipAddress,this.localPort=+D.portNumber):typeof w.googLocalAddress=="string"&&(D=w.googLocalAddress.split(":"),this.localAddress=D[0],this.localPort=+D[1]),this.localAddress&&(this.localFamily=this.localAddress.includes(":")?"IPv6":"IPv4");let k=S[w.remoteCandidateId];k&&(k.ip||k.address)?(this.remoteAddress=k.ip||k.address,this.remotePort=+k.port):k&&k.ipAddress?(this.remoteAddress=k.ipAddress,this.remotePort=+k.portNumber):typeof w.googRemoteAddress=="string"&&(k=w.googRemoteAddress.split(":"),this.remoteAddress=k[0],this.remotePort=+k[1]),this.remoteAddress&&(this.remoteFamily=this.remoteAddress.includes(":")?"IPv6":"IPv4"),this._debug("connect local: %s:%s remote: %s:%s",this.localAddress,this.localPort,this.remoteAddress,this.remotePort)};if(E.forEach(w=>{w.type==="transport"&&w.selectedCandidatePairId&&Q(R[w.selectedCandidatePairId]),(w.type==="googCandidatePair"&&w.googActiveConnection==="true"||(w.type==="candidatepair"||w.type==="candidate-pair")&&w.selected)&&Q(w)}),!v&&(!Object.keys(R).length||Object.keys(b).length))return void setTimeout(g,100);if(this._connecting=!1,this._connected=!0,this._chunk){try{this.send(this._chunk)}catch(D){return this.destroy(l(D,"ERR_DATA_CHANNEL"))}this._chunk=null,this._debug('sent chunk from "write before connect"');let w=this._cb;this._cb=null,w(null)}typeof this._channel.bufferedAmountLowThreshold!="number"&&(this._interval=setInterval(()=>this._onInterval(),150),this._interval.unref&&this._interval.unref()),this._debug("connect"),this.emit("connect")})};g()}_onInterval(){this._cb&&this._channel&&!(this._channel.bufferedAmount>B)&&this._onChannelBufferedAmountLow()}_onSignalingStateChange(){this.destroyed||(this._pc.signalingState==="stable"&&(this._isNegotiating=!1,this._debug("flushing sender queue",this._sendersAwaitingStable),this._sendersAwaitingStable.forEach(g=>{this._pc.removeTrack(g),this._queuedNegotiation=!0}),this._sendersAwaitingStable=[],this._queuedNegotiation?(this._debug("flushing negotiation queue"),this._queuedNegotiation=!1,this._needsNegotiation()):(this._debug("negotiated"),this.emit("negotiated"))),this._debug("signalingStateChange %s",this._pc.signalingState),this.emit("signalingStateChange",this._pc.signalingState))}_onIceCandidate(g){this.destroyed||(g.candidate&&this.trickle?this.emit("signal",{type:"candidate",candidate:{candidate:g.candidate.candidate,sdpMLineIndex:g.candidate.sdpMLineIndex,sdpMid:g.candidate.sdpMid}}):!g.candidate&&!this._iceComplete&&(this._iceComplete=!0,this.emit("_iceComplete")),g.candidate&&this._startIceCompleteTimeout())}_onChannelMessage(g){if(this.destroyed)return;let p=g.data;p instanceof ArrayBuffer&&(p=C.from(p)),this.push(p)}_onChannelBufferedAmountLow(){if(!this.destroyed&&this._cb){this._debug("ending backpressure: bufferedAmount %d",this._channel.bufferedAmount);let g=this._cb;this._cb=null,g(null)}}_onChannelOpen(){this._connected||this.destroyed||(this._debug("on channel open"),this._channelReady=!0,this._maybeReady())}_onChannelClose(){this.destroyed||(this._debug("on channel close"),this.destroy())}_onTrack(g){this.destroyed||g.streams.forEach(p=>{this._debug("on track"),this.emit("track",g.track,p),this._remoteTracks.push({track:g.track,stream:p}),this._remoteStreams.some(E=>E.id===p.id)||(this._remoteStreams.push(p),I(()=>{this._debug("on stream"),this.emit("stream",p)}))})}_debug(){let g=[].slice.call(arguments);g[0]="["+this._id+"] "+g[0],f.apply(null,g)}}y.WEBRTC_SUPPORT=!!h(),y.config={iceServers:[{urls:["stun:stun.l.google.com:19302","stun:global.stun.twilio.com:3478"]}],sdpSemantics:"unified-plan"},y.channelConfig={},r.exports=y},{buffer:3,debug:4,"err-code":6,"get-browser-rtc":8,"queue-microtask":13,randombytes:14,"readable-stream":29}]},{},[])("/")})});var Nr=ms((Xo,vr)=>{"use strict";vr.exports=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}});var $e,Ft,Bt,Pt,it,St,pt,Ct,Qt,lt,Tr,Mt=Et(async()=>{typeof window>"u"&&typeof self<"u"&&(globalThis.window=self);$e=typeof self>"u";$e||(await Promise.resolve().then(()=>(Dr(),Rs))).default;Ft={AVOID_INTERVALS:!1,USE_TEST_TRANSPORTS:!1,ICE_DELAY:{min:250,max:3e3},ICE_OFFER_FAILURE_RATE:.2,ICE_ANSWER_FAILURE_RATE:.15,AVOID_FOLLOWERS_NODES:!1,AUTO_START:!0,PUBLIC_PEERS_COUNT:100,PEERS_COUNT:1860,BOOTSTRAPS_PER_PEER:10,DELAY_BETWEEN_INIT:10,RANDOM_UNICAST_PER_SEC:0,RANDOM_GOSSIP_PER_SEC:0,DIFFUSION_TEST_DELAY:1e4},Bt={DEFAULT_VERBOSE:2,CONNECTION_UPGRADE_TIMEOUT:15e3,IS_BROWSER:!$e,MANUAL_BAN_MODE:!1},Pt={PORT:8080,AUTO_KICK_DELAY:6e4,AUTO_KICK_DURATION:3e4,MAX_WS_IN_CONNS:20},it={DIFFICULTY:0,ARGON2_MEM:2**16,ARE_IDS_HEX:!0,PUBLIC_PREFIX:["0","P_"],STANDARD_PREFIX:["1","N_"],ID_LENGTH:16,PUBKEY_LENGTH:32,PRIVATEKEY_LENGTH:32,SIGNATURE_LENGTH:64},St={CENTRALIZED_STUN_SERVERS:!1,MAX_SDP_OFFERS:2,ICE_COMPLETE_TIMEOUT:1e3,SIGNAL_CREATION_TIMEOUT:8e3,SDP_OFFER_EXPIRATION:4e4,WS_CLIENT:WebSocket,WS_SERVER:$e?(await Promise.resolve().then(()=>_s(Nr(),1))).WebSocketServer:null,PEER:$e?(await import("simple-peer")).default:globalThis.window.SimplePeer},pt={PEER_LINK_DELAY:1e4,PEER_LINK_EXPIRATION:6e4,LOOP_DELAY:2500,TARGET_NEIGHBORS_COUNT:5,ON_CONNECT_DISPATCH:{DELAY:0,BROADCAST_EVENT:!1,OVER_NEIGHBORED:!0,SHARE_HISTORY:!1},ON_DISCONNECT_DISPATCH:{DELAY:0,BROADCAST_EVENT:!1},ON_UNICAST:{DIGEST_TRAVELED_ROUTE:!0}},Ct={MAX_BYTES_PER_PERIOD:2e6,MAX_HOPS:8,MAX_NODES:256,MAX_ROUTES:5,MARKERS_BYTES:{message:0,0:"message",handshake:1,1:"handshake",signal_answer:2,2:"signal_answer",signal_offer:3,3:"signal_offer",privacy:4,4:"privacy",private_message:5,5:"private_message"}},Qt={MAX_BYTES_PER_PERIOD:5e6,EXPIRATION:1e4,CACHE_DURATION:2e4,HOPS:{default:20,signal_offer:6,diffusion_test:100,over_neighbored:6},TRANSMISSION_RATE:{MIN_NEIGHBOURS_TO_APPLY_PONDERATION:2,NEIGHBOURS_PONDERATION:5,Default:1,signal_offer:.618},MARKERS_BYTES:{gossip:128,128:"gossip",signal_offer:129,129:"signal_offer",peer_connected:130,130:"peer_connected",peer_disconnected:131,131:"peer_disconnected",diffusion_test:132,132:"diffusion_test",over_neighbored:133,133:"over_neighbored"}},lt={SIMULATOR:"color: yellow; font-weight: bold;",ARBITER:"color: white;",CRYPTO_CODEX:"color: green;",GOSSIP:"color: fuchsia;",UNICAST:"color: cyan;",PEER_STORE:"color: orange;",SERVICE:"color: teal;",PUNISHER:{BAN:"color: red; font-weight: bold;",KICK:"color: darkorange; font-weight: bold;"}},Tr={SIMULATION:Ft,NODE:Bt,TRANSPORTS:St,DISCOVERY:pt,IDENTITY:it,UNICAST:Ct,GOSSIP:Qt,LOG_CSS:lt}});var tn,en,Ur=Et(async()=>{await Mt();tn=class{sandbox;SIGNAL_OFFER_TIMEOUT=3e4;SIGNAL_ANSWER_TIMEOUT=1e4;PENDING_OFFERS={};PENDING_ANSWERS={};sdpToBuild=[];signalsToDigest=[];constructor(t){this.sandbox=t}tick(){let t=Date.now();this.#e(t);let e=this.sdpToBuild;this.sdpToBuild=[];for(let{transportId:r,type:s,time:o}of e){if(o>t){this.sdpToBuild.push({transportId:r,type:s,time:o});continue}let f=this.sandbox.transportInstances[r];if(!f||f.destroying||f.destroyed)continue;let{success:h,signalData:c,reason:u}=this.#t(r,s);!h||!c?f.dispatchError(u||`Failed to build SDP for peer: ${this.id}`):f.callbacks.signal?.forEach(I=>I(c))}let n=this.signalsToDigest;this.signalsToDigest=[];for(let{signalData:r,receiverId:s}of n){let o=this.sandbox.transportInstances[s];if(!o||o.destroying||o.destroyed)continue;let{success:f,reason:h}=this.#n(r,s);f||o.dispatchError(h||`Failed to digest signal for peer: ${this.id}`)}}#e(t=Date.now()){for(let e in this.PENDING_OFFERS)for(let n in this.PENDING_OFFERS[e])t>this.PENDING_OFFERS[e][n].expiration&&delete this.PENDING_OFFERS[e][n];for(let e in this.PENDING_ANSWERS){let n=this.PENDING_ANSWERS[e];t>n.expiration&&delete this.PENDING_ANSWERS[e]}}#t(t,e){if(e!=="offer"&&e!=="answer")return{success:!1,signalData:null,reason:`Invalid signal type: ${e}.`};if(e==="answer"&&this.PENDING_ANSWERS[t])return{success:!1,signalData:null,reason:`There is already a pending answer for transport ID: ${t}`};let n=e==="offer"?this.SIGNAL_OFFER_TIMEOUT:this.SIGNAL_ANSWER_TIMEOUT||1e4,r=Math.random().toString(36).substring(2),s={transportId:t,expiration:Date.now()+n,type:e,sdp:{id:r,v:"0",o:`- ${Math.random().toString(36).substring(2)} ${Math.floor(Math.random()*1e6)} 2 IN IP4 127.0.0.1\r
3
- `,s:"-",t:"0 0",a:["group:BUNDLE..."]}};return e==="offer"&&this.PENDING_OFFERS[t]?.[r]?{success:!1,signalData:null,reason:`There is already a pending offer with the same SDP ID for transport ID: ${t} (extreme case)`}:(e==="offer"&&!this.PENDING_OFFERS[t]&&(this.PENDING_OFFERS[t]={}),e==="offer"&&(this.PENDING_OFFERS[t][r]=s),e==="answer"&&(this.PENDING_ANSWERS[t]=s),{success:!0,signalData:s,reason:"na"})}#n(t,e){let{transportId:n,type:r,sdp:s}=t;if(n===void 0)return{success:!1,reason:"Missing transportId in signal data."};if(r!=="offer"&&r!=="answer")return{success:!1,reason:`Invalid signal type: ${r}.`};if(r==="offer"&&(!this.PENDING_OFFERS[n]||!this.PENDING_OFFERS[n][s.id]))return{success:!1,reason:`No pending offer found for transport ID: ${n} with SDP ID: ${s.id}`};if(r==="answer"&&(!this.PENDING_ANSWERS[n]||this.PENDING_ANSWERS[n].sdp.id!==s.id))return{success:!1,reason:`No pending answer found for transport ID: ${n} with SDP ID: ${s.id}`};if(r==="offer"&&Math.random()<Ft.ICE_OFFER_FAILURE_RATE)return{success:!1,reason:`Simulated failure for 'offer' signal from ${n} to ${e}`};if(r==="answer"&&Math.random()<Ft.ICE_ANSWER_FAILURE_RATE)return{success:!1,reason:`Simulated failure for 'answer' signal from ${n} to ${e}`};if(r==="offer")return this.buildSDP(e,"answer"),{success:!0,reason:"na"};delete this.PENDING_OFFERS[e],delete this.PENDING_ANSWERS[n];let o=this.sandbox.linkInstances(e,n);return{success:!o,reason:o||"na"}}buildSDP(t,e){let n={min:Ft.ICE_DELAY.min,max:Ft.ICE_DELAY.max},r=Math.floor(Math.random()*(n.max-n.min+1))+n.min;this.sdpToBuild.push({transportId:t,type:e,time:Date.now()+r})}digestSignal(t,e){this.signalsToDigest.push({signalData:t,receiverId:e})}},en=class{verbose=Bt.DEFAULT_VERBOSE;wsGlobalIndex=1;tGlobalIndex=1;transportInstances={};wsConnections={};publicWsServers={};inscribeWebSocketServer(t,e){this.publicWsServers[t]=e}removeWebSocketServer(t){delete this.publicWsServers[t]}inscribeWsConnection(t){let e=(this.wsGlobalIndex++).toString();t.id=e,this.wsConnections[e]=t,this.verbose>3&&console.log(`[SANDBOX] Inscribed wsConnection: ${t.id}`)}connectToWebSocketServer(t,e,n){let r=this.wsConnections[e],s=this.publicWsServers[t];if(!r||!s||s.closing||s.clients.size>=s.maxClients)return;let o=new n(s,e);s.clients.add(o),o.init(r.id),s.callbacks.connection.forEach(f=>f(o)),r.init(o.id)}inscribeInstance(t){let e=(this.tGlobalIndex++).toString();t.id=e,this.transportInstances[e]=t,this.verbose>3&&console.log(`[SANDBOX] Inscribed transport: ${e}`)}linkInstances(t,e){let[n,r]=[this.transportInstances[t],this.transportInstances[e]];if(!n||!r)return`Missing transport instances: ${t}=>${!!n}, ${e}=>${!!r}`;if(n.initiator&&r.initiator)return`Both transport instances cannot be initiators: ${t}, ${e}`;if(n.destroying||r.destroying)return`One of the transport instances is destroying: ${t}=>${n.destroying}, ${e}=>${r.destroying}`;if(n.destroyed||r.destroyed)return`One of the transport instances is destroyed: ${t}=>${n.destroyed}, ${e}=>${r.destroyed}`;if(n.remoteId)return`Transport instance tA: ${t} is already linked to remoteId: ${n.remoteId}`;if(r.remoteId)return`Transport instance tB: ${e} is already linked to remoteId: ${r.remoteId}`;n.remoteId=e,r.remoteId=t,this.verbose>2&&console.log(`[SANDBOX] Linked transports: ${t} <-> ${e}`),n.callbacks.connect.forEach(s=>s()),r.callbacks.connect.forEach(s=>s())}sendData(t,e,n){if(t===void 0)return{success:!1,reason:`Cannot send message from id: ${t}`};if(e===void 0)return{success:!1,reason:`Cannot send message to id: ${e}`};let r=this.transportInstances[t];if(!r)return{success:!1,reason:`No transport instance found for id: ${t}`};if(!r.remoteId)return{success:!1,reason:`Transport instance ${t} is not linked to any remoteId`};if(r.id!==t)return{success:!1,reason:`Wrong id for senderInstance ${t} !== ${r.id}`};if(r.remoteId!==e)return{success:!1,reason:`Transport instance ${t} is not linked to remoteId: ${e}`};let s=this.transportInstances[e];return s?s.remoteId?s.id!==e?{success:!1,reason:`Wrong id for remoteInstance ${t} !== ${e}`}:s.remoteId!==t?{success:!1,reason:`Transport instance ${t} is not linked to remoteId: ${e}`}:(this.enqueueTransportData(t,e,n),{success:!0,reason:"na"}):{success:!1,reason:`Transport instance ${e} is not linked to any remoteId`}:{success:!1,reason:`No transport instance found for id: ${e}`}}destroyTransportAndAssociatedTransport(t){let e=this.transportInstances[t];if(!e)return;let n=e.remoteId,r=n?this.transportInstances[n]:null;this.verbose>3&&console.log(`[SANDBOX] Destroying transports: ${t}`),e&&r&&(this.verbose>2&&console.log(`[SANDBOX] Destroying linked transports: ${t} & ${n}`),delete this.transportInstances[n],r.destroy(`Remote transport instance ${t} closed the connection.`)),delete this.transportInstances[t],e.close()}batchSize=2500;messageQueueSync=[];queueIndex=0;messageQueue=new Array(1e5);queueStart=0;queueEnd=0;queueCount=0;processMessageQueueSync(){let t=this.messageQueueSync.length;if(t===0)return;let e=this.batchSize;t>this.batchSize*3&&(e=this.batchSize*1.5),t>this.batchSize*5&&(e=this.batchSize*2),t>this.batchSize*10&&(e=this.batchSize*3),t>this.batchSize*20&&(e=this.batchSize*5),e=Math.round(e);let n=Math.min(this.queueIndex+e,t);for(let s=this.queueIndex;s<n;s++){let[o,f,h,c]=this.messageQueueSync[s];o==="transport_data"?this.#e(f,h,c):o==="ws_message"&&this.#t(f,h,c)}if(this.queueIndex=n,this.queueIndex<5e3)return;let r=this.messageQueueSync.length>5e4;r&&console.warn(`[SANDBOX] Message queue is very long: ${this.messageQueueSync.length} messages pending.`),r&&(this.queueIndex+=this.batchSize),this.messageQueueSync=this.messageQueueSync.slice(this.queueIndex),this.queueIndex=0}async processMessageQueue(){if(this.queueCount===0)return;let t=this.batchSize;this.queueCount>this.batchSize*3&&(t=this.batchSize*1.5),this.queueCount>this.batchSize*5&&(t=this.batchSize*2),this.queueCount>this.batchSize*10&&(t=this.batchSize*3),this.queueCount>this.batchSize*20&&(t=this.batchSize*5);let e=Math.min(t,this.queueCount);for(let n=0;n<e;n++){let r=this.messageQueue[this.queueStart];this.queueStart=(this.queueStart+1)%this.messageQueue.length;let[s,o,f,h]=r;s==="transport_data"?this.#e(o,f,h):s==="ws_message"&&this.#t(o,f,h)}await new Promise(n=>setTimeout(n,0)),this.queueCount-=e}#e(t,e,n){let[r,s]=[this.transportInstances[t],this.transportInstances[e]];if(!r||!s||r.destroying||s.destroying){r?.close(),s?.close();return}if(r.destroyed){s.close();return}if(s.destroyed){r.close();return}for(let o of s.callbacks.data)o(n)}#t(t,e,n){let[r,s]=[this.wsConnections[t],this.wsConnections[e]];if(!s||!r||s.readyState!==1||r.readyState!==1){s?.close(),r?.close();return}if(s.onmessage)s.onmessage({data:n});else for(let o of s.callbacks.message)o(n)}enqueueTransportDataSync(t,e,n){this.messageQueueSync.push(["transport_data",t,e,n])}enqueueWsMessageSync(t,e,n){this.messageQueueSync.push(["ws_message",t,e,n])}enqueueTransportData(t,e,n){this.messageQueue[this.queueEnd]=["transport_data",t,e,n],this.queueEnd=(this.queueEnd+1)%this.messageQueue.length,this.queueCount++,this.queueCount===this.messageQueue.length&&(console.error("[SANDBOX] Message queue overflow, dropping oldest messages."),this.queueStart=(this.queueStart+this.batchSize)%this.messageQueue.length,this.queueCount-=this.batchSize)}enqueueWsMessage(t,e,n){this.messageQueue[this.queueEnd]=["ws_message",t,e,n],this.queueEnd=(this.queueEnd+1)%this.messageQueue.length,this.queueCount++,this.queueCount===this.messageQueue.length&&(console.error("[SANDBOX] Message queue overflow, dropping oldest messages."),this.queueStart=(this.queueStart+this.batchSize)%this.messageQueue.length,this.queueCount-=this.batchSize)}}});var On={};Le(On,{ICE_CANDIDATE_EMITTER:()=>Mn,SANDBOX:()=>vt,TEST_WS_EVENT_MANAGER:()=>nn,TestTransport:()=>kn,TestWsConnection:()=>rn,TestWsServer:()=>Ln});var Fn,rn,Ln,kn,vt,Mn,nn,Gn=Et(async()=>{await Mt();await Ur();Fn=class{toInit=[];toClose=[];toError=[];initTick(){if(this.toInit.length<=0)return;let t=Date.now(),e=this.toInit;this.toInit=[];for(let{connId:n,time:r}of e)r>t?this.toInit.push({connId:n,time:r}):this.#e(n)}closeTick(){if(this.toClose.length<=0)return;let t=Date.now(),e=this.toClose;this.toClose=[];for(let{wsId:n,remoteWsId:r,time:s}of e)s>t?this.toClose.push({wsId:n,remoteWsId:r,time:s}):this.#t(n,r)}cleanerTick(){let t=Date.now();for(let e of Object.values(vt.publicWsServers))for(let n of e.clients)n.readyState===3&&e.clients.delete(n)}errorTick(){if(this.toError.length<=0)return;let t=Date.now(),e=this.toError;this.toError=[];for(let{wsId:n,error:r,time:s}of e)s>t?this.toError.push({wsId:n,error:r,time:s}):vt.wsConnections[n]?.dispatchError(r)}#e(t){let e=vt.wsConnections[t];e&&vt.connectToWebSocketServer(e.url,e.id,rn)}#t(t,e){let n=vt.wsConnections[t],r=vt.wsConnections[e];n?.onclose?.(),r?.onclose?.();for(let s of n?.callbacks?.close||[])s();for(let s of r?.callbacks?.close||[])s()}scheduleInit(t,e=500){this.toInit.push({connId:t,time:Date.now()+e})}scheduleClose(t,e,n=100){this.toClose.push({wsId:t,remoteWsId:e,time:Date.now()+n})}scheduleError(t,e,n=100){this.toError.push({wsId:t,error:e,time:Date.now()+n})}},rn=class{id;isTestTransport=!0;remoteWsId=null;remoteId=!1;delayBeforeConnectionTry=500;readyState=0;url;callbacks={message:[],close:[],error:[]};onmessage;onopen;onclose;onerror;constructor(t="ws://...",e){vt.inscribeWsConnection(this),!e&&(this.url=t,nn.scheduleInit(this.id,this.delayBeforeConnectionTry))}init(t){if(!this.readyState===3||this.remoteWsId){this.close(),console.error(`WebSocket instance already closed or connected: ${this.id}`),nn.scheduleError(this.id,`Failed to connect to WebSocket server at ${this.url}`,1e3);return}this.remoteWsId=t,this.readyState=1,this.onopen&&this.onopen()}on(t,e){if(!this.callbacks[t])return console.error(`Unknown event: ${t}`);this.callbacks[t].push(e)}close(){if(this.readyState===3)return;this.readyState=3;let t=vt.wsConnections[this.remoteWsId];t&&(t.readyState=3),this.remoteWsId&&nn.scheduleClose(this.id,this.remoteWsId,100)}send(t){if(!this.remoteWsId){console.error(`No WebSocket server found for URL: ${this.url}`),this.close();return}vt.enqueueWsMessage(this.id,this.remoteWsId,t)}dispatchError(t){this.callbacks.error.forEach(e=>e(t)),this.onerror&&this.onerror(t)}},Ln=class{url;clients=new Set;maxClients=Pt.MAX_WS_IN_CONNS||20;callbacks={connection:[],close:[],error:[]};constructor(t={port,host:domain}){this.url=`ws://${t.host}:${t.port}`,vt.inscribeWebSocketServer(this.url,this)}on(t,e){if(!this.callbacks[t])return console.error(`Unknown event: ${t}`);this.callbacks[t].push(e)}close(){if(!this.closing){this.closing=!0,vt.removeWebSocketServer(this.url);for(let t of this.callbacks.close)t()}}},kn=class{destroying;destroyed;id=null;isTestTransport=!0;remoteId=null;remoteWsId=!1;callbacks={connect:[],close:[],data:[],signal:[],error:[]};initiator;trickle;wrtc;constructor(t={initiator:!1,trickle:!0,wrtc:null,timeout:5e3}){vt.inscribeInstance(this),this.initiator=t.initiator,this.trickle=t.trickle,this.wrtc=t.wrtc,this.initiator&&Mn.buildSDP(this.id,"offer")}on(t,e){this.callbacks[t]&&this.callbacks[t].push(e)}dispatchError(t){this.callbacks.error.forEach(e=>e(new Error(t)))}signal(t){if(!this.destroying){if(this.destroyed)throw new Error(`Transport instance already destroyed: ${this.id}`);if(this.remoteId)return this.dispatchError(`Transport instance already connected to a remote ID: ${this.remoteId}`);if(!t.sdp||!t.sdp.id)return this.dispatchError("Invalid remote SDP:",t);if(t.type==="answer"&&!this.initiator)return this.dispatchError("Invalid remote SDP type: expecting an answer.");if(t.type==="offer"&&this.initiator)return this.dispatchError("Invalid remote SDP type: expecting an offer.");Mn.digestSignal(t,this.id)}}send(t){let{success:e,reason:n}=vt.sendData(this.id,this.remoteId,t);e||this.destroy(n)}close(){this.destroy()}destroy(t=null){this.destroying||(this.destroying=!0,t&&this.dispatchError(t),this.callbacks.close?.forEach(e=>e()),vt.destroyTransportAndAssociatedTransport(this.id),this.destroyed=!0,this.destroying=!1)}},vt=new en,Mn=new tn(vt),nn=new Fn});function ye(a){return a instanceof Uint8Array||ArrayBuffer.isView(a)&&a.constructor.name==="Uint8Array"}function Qe(a,t=""){if(!Number.isSafeInteger(a)||a<0){let e=t&&`"${t}" `;throw new Error(`${e}expected integer >= 0, got ${a}`)}}function rt(a,t,e=""){let n=ye(a),r=a?.length,s=t!==void 0;if(!n||s&&r!==t){let o=e&&`"${e}" `,f=s?` of length ${t}`:"",h=n?`length=${r}`:`type=${typeof a}`;throw new Error(o+"expected Uint8Array"+f+", got "+h)}return a}function qn(a,t=!0){if(a.destroyed)throw new Error("Hash instance has been destroyed");if(t&&a.finished)throw new Error("Hash#digest() has already been called")}function Lr(a,t){rt(a,void 0,"digestInto() output");let e=t.outputLen;if(a.length<e)throw new Error('"digestInto() output" expected to be of length >='+e)}function Me(...a){for(let t=0;t<a.length;t++)a[t].fill(0)}function hn(a){return new DataView(a.buffer,a.byteOffset,a.byteLength)}function ie(a){if(rt(a),kr)return a.toHex();let t="";for(let e=0;e<a.length;e++)t+=Fs[a[e]];return t}function Fr(a){if(a>=jt._0&&a<=jt._9)return a-jt._0;if(a>=jt.A&&a<=jt.F)return a-(jt.A-10);if(a>=jt.a&&a<=jt.f)return a-(jt.a-10)}function se(a){if(typeof a!="string")throw new Error("hex string expected, got "+typeof a);if(kr)return Uint8Array.fromHex(a);let t=a.length,e=t/2;if(t%2)throw new Error("hex string expected, got unpadded hex of length "+t);let n=new Uint8Array(e);for(let r=0,s=0;r<e;r++,s+=2){let o=Fr(a.charCodeAt(s)),f=Fr(a.charCodeAt(s+1));if(o===void 0||f===void 0){let h=a[s]+a[s+1];throw new Error('hex string expected, got non-hex character "'+h+'" at index '+s)}n[r]=o*16+f}return n}function dt(...a){let t=0;for(let n=0;n<a.length;n++){let r=a[n];rt(r),t+=r.length}let e=new Uint8Array(t);for(let n=0,r=0;n<a.length;n++){let s=a[n];e.set(s,r),r+=s.length}return e}function Mr(a,t={}){let e=(r,s)=>a(s).update(r).digest(),n=a(void 0);return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=r=>a(r),Object.assign(e,t),Object.freeze(e)}function Nt(a=32){let t=typeof globalThis=="object"?globalThis.crypto:null;if(typeof t?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");return t.getRandomValues(new Uint8Array(a))}var kr,Fs,jt,Or,be=Et(()=>{kr=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Fs=Array.from({length:256},(a,t)=>t.toString(16).padStart(2,"0"));jt={_0:48,_9:57,A:65,F:70,a:97,f:102};Or=a=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,a])})});var un,Rt,Gr=Et(()=>{be();un=class{blockLen;outputLen;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(t,e,n,r){this.blockLen=t,this.outputLen=e,this.padOffset=n,this.isLE=r,this.buffer=new Uint8Array(t),this.view=hn(this.buffer)}update(t){qn(this),rt(t);let{view:e,buffer:n,blockLen:r}=this,s=t.length;for(let o=0;o<s;){let f=Math.min(r-this.pos,s-o);if(f===r){let h=hn(t);for(;r<=s-o;o+=r)this.process(h,o);continue}n.set(t.subarray(o,o+f),this.pos),this.pos+=f,o+=f,this.pos===r&&(this.process(e,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){qn(this),Lr(t,this),this.finished=!0;let{buffer:e,view:n,blockLen:r,isLE:s}=this,{pos:o}=this;e[o++]=128,Me(this.buffer.subarray(o)),this.padOffset>r-o&&(this.process(n,0),o=0);for(let I=o;I<r;I++)e[I]=0;n.setBigUint64(r-8,BigInt(this.length*8),s),this.process(n,0);let f=hn(t),h=this.outputLen;if(h%4)throw new Error("_sha2: outputLen must be aligned to 32bit");let c=h/4,u=this.get();if(c>u.length)throw new Error("_sha2: outputLen bigger than state");for(let I=0;I<c;I++)f.setUint32(4*I,u[I],s)}digest(){let{buffer:t,outputLen:e}=this;this.digestInto(t);let n=t.slice(0,e);return this.destroy(),n}_cloneInto(t){t||=new this.constructor,t.set(...this.get());let{blockLen:e,buffer:n,length:r,finished:s,destroyed:o,pos:f}=this;return t.destroyed=o,t.finished=s,t.length=r,t.pos=f,r%e&&t.buffer.set(n),t}clone(){return this._cloneInto()}},Rt=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209])});function Ls(a,t=!1){return t?{h:Number(a&gn),l:Number(a>>Hr&gn)}:{h:Number(a>>Hr&gn)|0,l:Number(a&gn)|0}}function Pr(a,t=!1){let e=a.length,n=new Uint32Array(e),r=new Uint32Array(e);for(let s=0;s<e;s++){let{h:o,l:f}=Ls(a[s],t);[n[s],r[s]]=[o,f]}return[n,r]}function Yt(a,t,e,n){let r=(t>>>0)+(n>>>0);return{h:a+e+(r/2**32|0)|0,l:r|0}}var gn,Hr,Kn,Jn,oe,Ae,Oe,Ge,Yr,qr,Kr,Jr,Wr,jr,Vr=Et(()=>{gn=BigInt(4294967295),Hr=BigInt(32);Kn=(a,t,e)=>a>>>e,Jn=(a,t,e)=>a<<32-e|t>>>e,oe=(a,t,e)=>a>>>e|t<<32-e,Ae=(a,t,e)=>a<<32-e|t>>>e,Oe=(a,t,e)=>a<<64-e|t>>>e-32,Ge=(a,t,e)=>a>>>e-32|t<<64-e;Yr=(a,t,e)=>(a>>>0)+(t>>>0)+(e>>>0),qr=(a,t,e,n)=>t+e+n+(a/2**32|0)|0,Kr=(a,t,e,n)=>(a>>>0)+(t>>>0)+(e>>>0)+(n>>>0),Jr=(a,t,e,n,r)=>t+e+n+r+(a/2**32|0)|0,Wr=(a,t,e,n,r)=>(a>>>0)+(t>>>0)+(e>>>0)+(n>>>0)+(r>>>0),jr=(a,t,e,n,r,s)=>t+e+n+r+s+(a/2**32|0)|0});var Xr,Ms,Os,Zt,zt,Wn,jn,ae,$r=Et(()=>{Gr();Vr();be();Xr=Pr(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(a=>BigInt(a))),Ms=Xr[0],Os=Xr[1],Zt=new Uint32Array(80),zt=new Uint32Array(80),Wn=class extends un{constructor(t){super(128,t,16,!1)}get(){let{Ah:t,Al:e,Bh:n,Bl:r,Ch:s,Cl:o,Dh:f,Dl:h,Eh:c,El:u,Fh:I,Fl:l,Gh:C,Gl:B,Hh:y,Hl:m}=this;return[t,e,n,r,s,o,f,h,c,u,I,l,C,B,y,m]}set(t,e,n,r,s,o,f,h,c,u,I,l,C,B,y,m){this.Ah=t|0,this.Al=e|0,this.Bh=n|0,this.Bl=r|0,this.Ch=s|0,this.Cl=o|0,this.Dh=f|0,this.Dl=h|0,this.Eh=c|0,this.El=u|0,this.Fh=I|0,this.Fl=l|0,this.Gh=C|0,this.Gl=B|0,this.Hh=y|0,this.Hl=m|0}process(t,e){for(let E=0;E<16;E++,e+=4)Zt[E]=t.getUint32(e),zt[E]=t.getUint32(e+=4);for(let E=16;E<80;E++){let S=Zt[E-15]|0,b=zt[E-15]|0,R=oe(S,b,1)^oe(S,b,8)^Kn(S,b,7),v=Ae(S,b,1)^Ae(S,b,8)^Jn(S,b,7),Q=Zt[E-2]|0,w=zt[E-2]|0,D=oe(Q,w,19)^Oe(Q,w,61)^Kn(Q,w,6),k=Ae(Q,w,19)^Ge(Q,w,61)^Jn(Q,w,6),x=Kr(v,k,zt[E-7],zt[E-16]),N=Jr(x,R,D,Zt[E-7],Zt[E-16]);Zt[E]=N|0,zt[E]=x|0}let{Ah:n,Al:r,Bh:s,Bl:o,Ch:f,Cl:h,Dh:c,Dl:u,Eh:I,El:l,Fh:C,Fl:B,Gh:y,Gl:m,Hh:g,Hl:p}=this;for(let E=0;E<80;E++){let S=oe(I,l,14)^oe(I,l,18)^Oe(I,l,41),b=Ae(I,l,14)^Ae(I,l,18)^Ge(I,l,41),R=I&C^~I&y,v=l&B^~l&m,Q=Wr(p,b,v,Os[E],zt[E]),w=jr(Q,g,S,R,Ms[E],Zt[E]),D=Q|0,k=oe(n,r,28)^Oe(n,r,34)^Oe(n,r,39),x=Ae(n,r,28)^Ge(n,r,34)^Ge(n,r,39),N=n&s^n&f^s&f,F=r&o^r&h^o&h;g=y|0,p=m|0,y=C|0,m=B|0,C=I|0,B=l|0,{h:I,l}=Yt(c|0,u|0,w|0,D|0),c=f|0,u=h|0,f=s|0,h=o|0,s=n|0,o=r|0;let O=Yr(D,x,F);n=qr(O,w,k,N),r=O|0}({h:n,l:r}=Yt(this.Ah|0,this.Al|0,n|0,r|0)),{h:s,l:o}=Yt(this.Bh|0,this.Bl|0,s|0,o|0),{h:f,l:h}=Yt(this.Ch|0,this.Cl|0,f|0,h|0),{h:c,l:u}=Yt(this.Dh|0,this.Dl|0,c|0,u|0),{h:I,l}=Yt(this.Eh|0,this.El|0,I|0,l|0),{h:C,l:B}=Yt(this.Fh|0,this.Fl|0,C|0,B|0),{h:y,l:m}=Yt(this.Gh|0,this.Gl|0,y|0,m|0),{h:g,l:p}=Yt(this.Hh|0,this.Hl|0,g|0,p|0),this.set(n,r,s,o,f,h,c,u,I,l,C,B,y,m,g,p)}roundClean(){Me(Zt,zt)}destroy(){Me(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},jn=class extends Wn{Ah=Rt[0]|0;Al=Rt[1]|0;Bh=Rt[2]|0;Bl=Rt[3]|0;Ch=Rt[4]|0;Cl=Rt[5]|0;Dh=Rt[6]|0;Dl=Rt[7]|0;Eh=Rt[8]|0;El=Rt[9]|0;Fh=Rt[10]|0;Fl=Rt[11]|0;Gh=Rt[12]|0;Gl=Rt[13]|0;Hh=Rt[14]|0;Hl=Rt[15]|0;constructor(){super(64)}},ae=Mr(()=>new jn,Or(3))});function dn(a,t=""){if(typeof a!="boolean"){let e=t&&`"${t}" `;throw new Error(e+"expected boolean, got type="+typeof a)}return a}function Gs(a){if(typeof a=="bigint"){if(!ln(a))throw new Error("positive bigint expected, got "+a)}else Qe(a);return a}function ce(a,t=""){if(!Number.isSafeInteger(a)){let e=t&&`"${t}" `;throw new Error(e+"expected safe integer, got type="+typeof a)}}function Zr(a){if(typeof a!="string")throw new Error("hex string expected, got "+typeof a);return a===""?Xn:BigInt("0x"+a)}function fe(a){return Zr(ie(a))}function Tt(a){return Zr(ie(ue(rt(a)).reverse()))}function he(a,t){Qe(t),a=Gs(a);let e=se(a.toString(16).padStart(t*2,"0"));if(e.length!==t)throw new Error("number too large");return e}function He(a,t){return he(a,t).reverse()}function zr(a,t){if(a.length!==t.length)return!1;let e=0;for(let n=0;n<a.length;n++)e|=a[n]^t[n];return e===0}function ue(a){return Uint8Array.from(a)}function Lt(a){return Uint8Array.from(a,(t,e)=>{let n=t.charCodeAt(0);if(t.length!==1||n>127)throw new Error(`string contains non-ASCII character "${a[e]}" with code ${n} at position ${e}`);return n})}function Hs(a,t,e){return ln(a)&&ln(t)&&ln(e)&&t<=a&&a<e}function we(a,t,e,n){if(!Hs(t,e,n))throw new Error("expected valid "+a+": "+e+" <= n < "+n+", got "+t)}function ti(a){let t;for(t=0;a>Xn;a>>=Vn,t+=1);return t}function Ht(a,t={},e={}){if(!a||typeof a!="object")throw new Error("expected valid options object");function n(s,o,f){let h=a[s];if(f&&h===void 0)return;let c=typeof h;if(c!==o||h===null)throw new Error(`param "${s}" is invalid: expected ${o}, got ${c}`)}let r=(s,o)=>Object.entries(s).forEach(([f,h])=>n(f,h,o));r(t,!1),r(e,!0)}function zn(a){let t=new WeakMap;return(e,...n)=>{let r=t.get(e);if(r!==void 0)return r;let s=a(e,...n);return t.set(e,s),s}}var Xn,Vn,ln,$n,Zn,te=Et(()=>{be();be();Xn=BigInt(0),Vn=BigInt(1);ln=a=>typeof a=="bigint"&&Xn<=a;$n=a=>(Vn<<BigInt(a))-Vn;Zn=()=>{throw new Error("not implemented")}});function ft(a,t){let e=a%t;return e>=Ut?e:t+e}function Gt(a,t,e){let n=a;for(;t-- >Ut;)n*=n,n%=e;return n}function ei(a,t){if(a===Ut)throw new Error("invert: expected non-zero number");if(t<=Ut)throw new Error("invert: expected positive modulus, got "+t);let e=ft(a,t),n=t,r=Ut,s=bt,o=bt,f=Ut;for(;e!==Ut;){let c=n/e,u=n%e,I=r-o*c,l=s-f*c;n=e,e=u,r=o,s=f,o=I,f=l}if(n!==bt)throw new Error("invert: does not exist");return ft(r,t)}function er(a,t,e){if(!a.eql(a.sqr(t),e))throw new Error("Cannot find square root")}function ai(a,t){let e=(a.ORDER+bt)/ii,n=a.pow(t,e);return er(a,n,t),n}function qs(a,t){let e=(a.ORDER-si)/oi,n=a.mul(t,ge),r=a.pow(n,e),s=a.mul(t,r),o=a.mul(a.mul(s,ge),r),f=a.mul(s,a.sub(o,a.ONE));return er(a,f,t),f}function Ks(a){let t=In(a),e=ci(a),n=e(t,t.neg(t.ONE)),r=e(t,n),s=e(t,t.neg(n)),o=(a+Ps)/Ai;return(f,h)=>{let c=f.pow(h,o),u=f.mul(c,n),I=f.mul(c,r),l=f.mul(c,s),C=f.eql(f.sqr(u),h),B=f.eql(f.sqr(I),h);c=f.cmov(c,u,C),u=f.cmov(l,I,B);let y=f.eql(f.sqr(u),h),m=f.cmov(c,u,y);return er(f,m,h),m}}function ci(a){if(a<ri)throw new Error("sqrt is not defined for small field");let t=a-bt,e=0;for(;t%ge===Ut;)t/=ge,e++;let n=ge,r=In(a);for(;ni(r,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(e===1)return ai;let s=r.pow(n,t),o=(t+bt)/ge;return function(h,c){if(h.is0(c))return c;if(ni(h,c)!==1)throw new Error("Cannot find square root");let u=e,I=h.mul(h.ONE,s),l=h.pow(c,t),C=h.pow(c,o);for(;!h.eql(l,h.ONE);){if(h.is0(l))return h.ZERO;let B=1,y=h.sqr(l);for(;!h.eql(y,h.ONE);)if(B++,y=h.sqr(y),B===u)throw new Error("Cannot find square root");let m=bt<<BigInt(u-B-1),g=h.pow(I,m);u=B,I=h.sqr(g),l=h.mul(l,I),C=h.mul(C,g)}return C}}function Js(a){return a%ii===ri?ai:a%oi===si?qs:a%Ai===Ys?Ks(a):ci(a)}function fi(a){let t={ORDER:"bigint",BYTES:"number",BITS:"number"},e=Ws.reduce((n,r)=>(n[r]="function",n),t);return Ht(a,e),a}function js(a,t,e){if(e<Ut)throw new Error("invalid exponent, negatives unsupported");if(e===Ut)return a.ONE;if(e===bt)return t;let n=a.ONE,r=t;for(;e>Ut;)e&bt&&(n=a.mul(n,r)),r=a.sqr(r),e>>=bt;return n}function me(a,t,e=!1){let n=new Array(t.length).fill(e?a.ZERO:void 0),r=t.reduce((o,f,h)=>a.is0(f)?o:(n[h]=o,a.mul(o,f)),a.ONE),s=a.inv(r);return t.reduceRight((o,f,h)=>a.is0(f)?o:(n[h]=a.mul(o,n[h]),a.mul(o,f)),s),n}function ni(a,t){let e=(a.ORDER-bt)/ge,n=a.pow(t,e),r=a.eql(n,a.ONE),s=a.eql(n,a.ZERO),o=a.eql(n,a.neg(a.ONE));if(!r&&!s&&!o)throw new Error("invalid Legendre symbol result");return r?1:s?0:-1}function Vs(a,t){t!==void 0&&Qe(t);let e=t!==void 0?t:a.toString(2).length,n=Math.ceil(e/8);return{nBitLength:e,nByteLength:n}}function In(a,t={}){return new tr(a,t)}function hi(a,t){if(!a.isOdd)throw new Error("Field doesn't have isOdd");let e=a.sqrt(t);return a.isOdd(e)?a.neg(e):e}function ui(a){if(typeof a!="bigint")throw new Error("field order must be bigint");let t=a.toString(2).length;return Math.ceil(t/8)}function nr(a){let t=ui(a);return t+Math.ceil(t/2)}function gi(a,t,e=!1){rt(a);let n=a.length,r=ui(t),s=nr(t);if(n<16||n<s||n>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+n);let o=e?Tt(a):fe(a),f=ft(o,t-bt)+bt;return e?He(f,r):he(f,r)}var Ut,bt,ge,ri,ii,si,Ps,oi,Ys,Ai,Vt,Ws,tr,Se=Et(()=>{te();Ut=BigInt(0),bt=BigInt(1),ge=BigInt(2),ri=BigInt(3),ii=BigInt(4),si=BigInt(5),Ps=BigInt(7),oi=BigInt(8),Ys=BigInt(9),Ai=BigInt(16);Vt=(a,t)=>(ft(a,t)&bt)===bt,Ws=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];tr=class{ORDER;BITS;BYTES;isLE;ZERO=Ut;ONE=bt;_lengths;_sqrt;_mod;constructor(t,e={}){if(t<=Ut)throw new Error("invalid field: expected ORDER > 0, got "+t);let n;this.isLE=!1,e!=null&&typeof e=="object"&&(typeof e.BITS=="number"&&(n=e.BITS),typeof e.sqrt=="function"&&(this.sqrt=e.sqrt),typeof e.isLE=="boolean"&&(this.isLE=e.isLE),e.allowedLengths&&(this._lengths=e.allowedLengths?.slice()),typeof e.modFromBytes=="boolean"&&(this._mod=e.modFromBytes));let{nBitLength:r,nByteLength:s}=Vs(t,n);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=t,this.BITS=r,this.BYTES=s,this._sqrt=void 0,Object.preventExtensions(this)}create(t){return ft(t,this.ORDER)}isValid(t){if(typeof t!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof t);return Ut<=t&&t<this.ORDER}is0(t){return t===Ut}isValidNot0(t){return!this.is0(t)&&this.isValid(t)}isOdd(t){return(t&bt)===bt}neg(t){return ft(-t,this.ORDER)}eql(t,e){return t===e}sqr(t){return ft(t*t,this.ORDER)}add(t,e){return ft(t+e,this.ORDER)}sub(t,e){return ft(t-e,this.ORDER)}mul(t,e){return ft(t*e,this.ORDER)}pow(t,e){return js(this,t,e)}div(t,e){return ft(t*ei(e,this.ORDER),this.ORDER)}sqrN(t){return t*t}addN(t,e){return t+e}subN(t,e){return t-e}mulN(t,e){return t*e}inv(t){return ei(t,this.ORDER)}sqrt(t){return this._sqrt||(this._sqrt=Js(this.ORDER)),this._sqrt(this,t)}toBytes(t){return this.isLE?He(t,this.BYTES):he(t,this.BYTES)}fromBytes(t,e=!1){rt(t);let{_lengths:n,BYTES:r,isLE:s,ORDER:o,_mod:f}=this;if(n){if(!n.includes(t.length)||t.length>r)throw new Error("Field.fromBytes: expected "+n+" bytes, got "+t.length);let c=new Uint8Array(r);c.set(t,s?0:c.length-t.length),t=c}if(t.length!==r)throw new Error("Field.fromBytes: expected "+r+" bytes, got "+t.length);let h=s?Tt(t):fe(t);if(f&&(h=ft(h,o)),!e&&!this.isValid(h))throw new Error("invalid field element: outside of range 0..ORDER");return h}invertBatch(t){return me(this,t)}cmov(t,e,n){return n?e:t}}});function li(a,t){let e=t.negate();return a?e:t}function Bn(a,t){let e=me(a.Fp,t.map(n=>n.Z));return t.map((n,r)=>a.fromAffine(n.toAffine(e[r])))}function pi(a,t){if(!Number.isSafeInteger(a)||a<=0||a>t)throw new Error("invalid window size, expected [1.."+t+"], got W="+a)}function rr(a,t){pi(a,t);let e=Math.ceil(t/a)+1,n=2**(a-1),r=2**a,s=$n(a),o=BigInt(a);return{windows:e,windowSize:n,mask:s,maxNumber:r,shiftBy:o}}function di(a,t,e){let{windowSize:n,mask:r,maxNumber:s,shiftBy:o}=e,f=Number(a&r),h=a>>o;f>n&&(f-=s,h+=or);let c=t*n,u=c+Math.abs(f)-1,I=f===0,l=f<0,C=t%2!==0;return{nextN:h,offset:u,isZero:I,isNeg:l,isNegF:C,offsetF:c}}function Xs(a,t){if(!Array.isArray(a))throw new Error("array expected");a.forEach((e,n)=>{if(!(e instanceof t))throw new Error("invalid point at index "+n)})}function $s(a,t){if(!Array.isArray(a))throw new Error("array of scalars expected");a.forEach((e,n)=>{if(!t.isValid(e))throw new Error("invalid scalar at index "+n)})}function sr(a){return Bi.get(a)||1}function Ii(a){if(a!==En)throw new Error("invalid wNAF")}function Ci(a,t,e){let n=a.Fn;Xs(t,a),$s(e,n);let r=t.length,s=e.length;if(r!==s)throw new Error("arrays of points and scalars must have equal length");let o=a.ZERO,f=ti(BigInt(r)),h=1;f>12?h=f-3:f>4?h=f-2:f>0&&(h=2);let c=$n(h),u=new Array(Number(c)+1).fill(o),I=Math.floor((n.BITS-1)/h)*h,l=o;for(let C=I;C>=0;C-=h){u.fill(o);for(let y=0;y<s;y++){let m=e[y],g=Number(m>>BigInt(C)&c);u[g]=u[g].add(t[y])}let B=o;for(let y=u.length-1,m=o;y>0;y--)m=m.add(u[y]),B=B.add(m);if(l=l.add(B),C!==0)for(let y=0;y<h;y++)l=l.double()}return l}function Ei(a,t,e){if(t){if(t.ORDER!==a)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return fi(t),t}else return In(a,{isLE:e})}function yi(a,t,e={},n){if(n===void 0&&(n=a==="edwards"),!t||typeof t!="object")throw new Error(`expected valid ${a} CURVE object`);for(let h of["p","n","h"]){let c=t[h];if(!(typeof c=="bigint"&&c>En))throw new Error(`CURVE.${h} must be positive bigint`)}let r=Ei(t.p,e.Fp,n),s=Ei(t.n,e.Fn,n),f=["Gx","Gy","a",a==="weierstrass"?"b":"d"];for(let h of f)if(!r.isValid(t[h]))throw new Error(`CURVE.${h} must be valid field element of CURVE.Fp`);return t=Object.freeze(Object.assign({},t)),{CURVE:t,Fp:r,Fn:s}}function Cn(a,t){return function(n){let r=a(n);return{secretKey:r,publicKey:t(r)}}}var En,or,ir,Bi,pn,yn=Et(()=>{te();Se();En=BigInt(0),or=BigInt(1);ir=new WeakMap,Bi=new WeakMap;pn=class{BASE;ZERO;Fn;bits;constructor(t,e){this.BASE=t.BASE,this.ZERO=t.ZERO,this.Fn=t.Fn,this.bits=e}_unsafeLadder(t,e,n=this.ZERO){let r=t;for(;e>En;)e&or&&(n=n.add(r)),r=r.double(),e>>=or;return n}precomputeWindow(t,e){let{windows:n,windowSize:r}=rr(e,this.bits),s=[],o=t,f=o;for(let h=0;h<n;h++){f=o,s.push(f);for(let c=1;c<r;c++)f=f.add(o),s.push(f);o=f.double()}return s}wNAF(t,e,n){if(!this.Fn.isValid(n))throw new Error("invalid scalar");let r=this.ZERO,s=this.BASE,o=rr(t,this.bits);for(let f=0;f<o.windows;f++){let{nextN:h,offset:c,isZero:u,isNeg:I,isNegF:l,offsetF:C}=di(n,f,o);n=h,u?s=s.add(li(l,e[C])):r=r.add(li(I,e[c]))}return Ii(n),{p:r,f:s}}wNAFUnsafe(t,e,n,r=this.ZERO){let s=rr(t,this.bits);for(let o=0;o<s.windows&&n!==En;o++){let{nextN:f,offset:h,isZero:c,isNeg:u}=di(n,o,s);if(n=f,!c){let I=e[h];r=r.add(u?I.negate():I)}}return Ii(n),r}getPrecomputes(t,e,n){let r=ir.get(e);return r||(r=this.precomputeWindow(e,t),t!==1&&(typeof n=="function"&&(r=n(r)),ir.set(e,r))),r}cached(t,e,n){let r=sr(t);return this.wNAF(r,this.getPrecomputes(r,t,n),e)}unsafe(t,e,n,r){let s=sr(t);return s===1?this._unsafeLadder(t,e,r):this.wNAFUnsafe(s,this.getPrecomputes(s,t,n),e,r)}createCache(t,e){pi(e,this.bits),Bi.set(t,e),ir.delete(t)}hasCache(t){return sr(t)!==1}}});function zs(a,t,e,n){let r=a.sqr(e),s=a.sqr(n),o=a.add(a.mul(t.a,r),s),f=a.add(a.ONE,a.mul(t.d,a.mul(r,s)));return a.eql(o,f)}function Qi(a,t={}){let e=yi("edwards",a,t,t.FpFnLE),{Fp:n,Fn:r}=e,s=e.CURVE,{h:o}=s;Ht(t,{},{uvRatio:"function"});let f=Ar<<BigInt(r.BYTES*8)-wt,h=m=>n.create(m),c=t.uvRatio||((m,g)=>{try{return{isValid:!0,value:n.sqrt(n.div(m,g))}}catch{return{isValid:!1,value:ee}}});if(!zs(n,s,s.Gx,s.Gy))throw new Error("bad curve params: generator point");function u(m,g,p=!1){let E=p?wt:ee;return we("coordinate "+m,g,E,f),g}function I(m){if(!(m instanceof B))throw new Error("EdwardsPoint expected")}let l=zn((m,g)=>{let{X:p,Y:E,Z:S}=m,b=m.is0();g==null&&(g=b?Zs:n.inv(S));let R=h(p*g),v=h(E*g),Q=n.mul(S,g);if(b)return{x:ee,y:wt};if(Q!==wt)throw new Error("invZ was invalid");return{x:R,y:v}}),C=zn(m=>{let{a:g,d:p}=s;if(m.is0())throw new Error("bad point: ZERO");let{X:E,Y:S,Z:b,T:R}=m,v=h(E*E),Q=h(S*S),w=h(b*b),D=h(w*w),k=h(v*g),x=h(w*h(k+Q)),N=h(D+h(p*h(v*Q)));if(x!==N)throw new Error("bad point: equation left != right (1)");let F=h(E*S),O=h(b*R);if(F!==O)throw new Error("bad point: equation left != right (2)");return!0});class B{static BASE=new B(s.Gx,s.Gy,wt,h(s.Gx*s.Gy));static ZERO=new B(ee,wt,wt,ee);static Fp=n;static Fn=r;X;Y;Z;T;constructor(g,p,E,S){this.X=u("x",g),this.Y=u("y",p),this.Z=u("z",E,!0),this.T=u("t",S),Object.freeze(this)}static CURVE(){return s}static fromAffine(g){if(g instanceof B)throw new Error("extended point not allowed");let{x:p,y:E}=g||{};return u("x",p),u("y",E),new B(p,E,wt,h(p*E))}static fromBytes(g,p=!1){let E=n.BYTES,{a:S,d:b}=s;g=ue(rt(g,E,"point")),dn(p,"zip215");let R=ue(g),v=g[E-1];R[E-1]=v&-129;let Q=Tt(R),w=p?f:n.ORDER;we("point.y",Q,ee,w);let D=h(Q*Q),k=h(D-wt),x=h(b*D-S),{isValid:N,value:F}=c(k,x);if(!N)throw new Error("bad point: invalid y coordinate");let O=(F&wt)===wt,Y=(v&128)!==0;if(!p&&F===ee&&Y)throw new Error("bad point: x=0 and x_0=1");return Y!==O&&(F=h(-F)),B.fromAffine({x:F,y:Q})}static fromHex(g,p=!1){return B.fromBytes(se(g),p)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(g=8,p=!0){return y.createCache(this,g),p||this.multiply(Ar),this}assertValidity(){C(this)}equals(g){I(g);let{X:p,Y:E,Z:S}=this,{X:b,Y:R,Z:v}=g,Q=h(p*v),w=h(b*S),D=h(E*v),k=h(R*S);return Q===w&&D===k}is0(){return this.equals(B.ZERO)}negate(){return new B(h(-this.X),this.Y,this.Z,h(-this.T))}double(){let{a:g}=s,{X:p,Y:E,Z:S}=this,b=h(p*p),R=h(E*E),v=h(Ar*h(S*S)),Q=h(g*b),w=p+E,D=h(h(w*w)-b-R),k=Q+R,x=k-v,N=Q-R,F=h(D*x),O=h(k*N),Y=h(D*N),H=h(x*k);return new B(F,O,H,Y)}add(g){I(g);let{a:p,d:E}=s,{X:S,Y:b,Z:R,T:v}=this,{X:Q,Y:w,Z:D,T:k}=g,x=h(S*Q),N=h(b*w),F=h(v*E*k),O=h(R*D),Y=h((S+b)*(Q+w)-x-N),H=O-F,q=O+F,P=h(N-p*x),X=h(Y*H),K=h(q*P),V=h(Y*P),tt=h(H*q);return new B(X,K,tt,V)}subtract(g){return this.add(g.negate())}multiply(g){if(!r.isValidNot0(g))throw new Error("invalid scalar: expected 1 <= sc < curve.n");let{p,f:E}=y.cached(this,g,S=>Bn(B,S));return Bn(B,[p,E])[0]}multiplyUnsafe(g,p=B.ZERO){if(!r.isValid(g))throw new Error("invalid scalar: expected 0 <= sc < curve.n");return g===ee?B.ZERO:this.is0()||g===wt?this:y.unsafe(this,g,E=>Bn(B,E),p)}isSmallOrder(){return this.multiplyUnsafe(o).is0()}isTorsionFree(){return y.unsafe(this,s.n).is0()}toAffine(g){return l(this,g)}clearCofactor(){return o===wt?this:this.multiplyUnsafe(o)}toBytes(){let{x:g,y:p}=this.toAffine(),E=n.toBytes(p);return E[E.length-1]|=g&wt?128:0,E}toHex(){return ie(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}let y=new pn(B,r.BITS);return B.BASE.precompute(8),B}function bi(a,t,e={}){if(typeof t!="function")throw new Error('"hash" function param is required');Ht(e,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",mapToCurve:"function"});let{prehash:n}=e,{BASE:r,Fp:s,Fn:o}=a,f=e.randomBytes||Nt,h=e.adjustScalarBytes||(Q=>Q),c=e.domain||((Q,w,D)=>{if(dn(D,"phflag"),w.length||D)throw new Error("Contexts/pre-hash are not supported");return Q});function u(Q){return o.create(Tt(Q))}function I(Q){let w=E.secretKey;rt(Q,E.secretKey,"secretKey");let D=rt(t(Q),2*w,"hashedSecretKey"),k=h(D.slice(0,w)),x=D.slice(w,2*w),N=u(k);return{head:k,prefix:x,scalar:N}}function l(Q){let{head:w,prefix:D,scalar:k}=I(Q),x=r.multiply(k),N=x.toBytes();return{head:w,prefix:D,scalar:k,point:x,pointBytes:N}}function C(Q){return l(Q).pointBytes}function B(Q=Uint8Array.of(),...w){let D=dt(...w);return u(t(c(D,rt(Q,void 0,"context"),!!n)))}function y(Q,w,D={}){Q=rt(Q,void 0,"message"),n&&(Q=n(Q));let{prefix:k,scalar:x,pointBytes:N}=l(w),F=B(D.context,k,Q),O=r.multiply(F).toBytes(),Y=B(D.context,O,N,Q),H=o.create(F+Y*x);if(!o.isValid(H))throw new Error("sign failed: invalid s");let q=dt(O,o.toBytes(H));return rt(q,E.signature,"result")}let m={zip215:!0};function g(Q,w,D,k=m){let{context:x,zip215:N}=k,F=E.signature;Q=rt(Q,F,"signature"),w=rt(w,void 0,"message"),D=rt(D,E.publicKey,"publicKey"),N!==void 0&&dn(N,"zip215"),n&&(w=n(w));let O=F/2,Y=Q.subarray(0,O),H=Tt(Q.subarray(O,F)),q,P,X;try{q=a.fromBytes(D,N),P=a.fromBytes(Y,N),X=r.multiplyUnsafe(H)}catch{return!1}if(!N&&q.isSmallOrder())return!1;let K=B(x,P.toBytes(),q.toBytes(),w);return P.add(q.multiplyUnsafe(K)).subtract(X).clearCofactor().is0()}let p=s.BYTES,E={secretKey:p,publicKey:p,signature:2*p,seed:p};function S(Q=f(E.seed)){return rt(Q,E.seed,"seed")}function b(Q){return ye(Q)&&Q.length===o.BYTES}function R(Q,w){try{return!!a.fromBytes(Q,w)}catch{return!1}}let v={getExtendedPublicKey:l,randomSecretKey:S,isValidSecretKey:b,isValidPublicKey:R,toMontgomery(Q){let{y:w}=a.fromBytes(Q),D=E.publicKey,k=D===32;if(!k&&D!==57)throw new Error("only defined for 25519 and 448");let x=k?s.div(wt+w,wt-w):s.div(w-wt,w+wt);return s.toBytes(x)},toMontgomerySecret(Q){let w=E.secretKey;rt(Q,w);let D=t(Q.subarray(0,w));return h(D).subarray(0,w)}};return Object.freeze({keygen:Cn(S,C),getPublicKey:C,sign:y,verify:g,utils:v,Point:a,lengths:E})}var ee,wt,Ar,Zs,Qn,wi=Et(()=>{te();yn();ee=BigInt(0),wt=BigInt(1),Ar=BigInt(2),Zs=BigInt(8);Qn=class{static BASE;static ZERO;static Fp;static Fn;ep;constructor(t){this.ep=t}static fromBytes(t){Zn()}static fromHex(t){Zn()}get x(){return this.toAffine().x}get y(){return this.toAffine().y}clearCofactor(){return this}assertValidity(){this.ep.assertValidity()}toAffine(t){return this.ep.toAffine(t)}toHex(){return ie(this.toBytes())}toString(){return this.toHex()}isTorsionFree(){return!0}isSmallOrder(){return!1}add(t){return this.assertSame(t),this.init(this.ep.add(t.ep))}subtract(t){return this.assertSame(t),this.init(this.ep.subtract(t.ep))}multiply(t){return this.init(this.ep.multiply(t))}multiplyUnsafe(t){return this.init(this.ep.multiplyUnsafe(t))}double(){return this.init(this.ep.double())}negate(){return this.init(this.ep.negate())}precompute(t,e){return this.init(this.ep.precompute(t,e))}}});function ne(a,t){if(ce(a),ce(t),a<0||a>=1<<8*t)throw new Error("invalid I2OSP input: "+a);let e=Array.from({length:t}).fill(0);for(let n=t-1;n>=0;n--)e[n]=a&255,a>>>=8;return new Uint8Array(e)}function eo(a,t){let e=new Uint8Array(a.length);for(let n=0;n<a.length;n++)e[n]=a[n]^t[n];return e}function mi(a){if(!ye(a)&&typeof a!="string")throw new Error("DST must be Uint8Array or ascii string");return typeof a=="string"?Lt(a):a}function bn(a,t,e,n){rt(a),ce(e),t=mi(t),t.length>255&&(t=n(dt(Lt("H2C-OVERSIZE-DST-"),t)));let{outputLen:r,blockLen:s}=n,o=Math.ceil(e/r);if(e>65535||o>255)throw new Error("expand_message_xmd: invalid lenInBytes");let f=dt(t,ne(t.length,1)),h=ne(0,s),c=ne(e,2),u=new Array(o),I=n(dt(h,a,c,ne(0,1),f));u[0]=n(dt(I,ne(1,1),f));for(let C=1;C<=o;C++){let B=[eo(I,u[C-1]),ne(C+1,1),f];u[C]=n(dt(...B))}return dt(...u).slice(0,e)}function no(a,t,e,n,r){if(rt(a),ce(e),t=mi(t),t.length>255){let s=Math.ceil(2*n/8);t=r.create({dkLen:s}).update(Lt("H2C-OVERSIZE-DST-")).update(t).digest()}if(e>65535||t.length>255)throw new Error("expand_message_xof: invalid lenInBytes");return r.create({dkLen:e}).update(a).update(ne(e,2)).update(t).update(ne(t.length,1)).digest()}function ar(a,t,e){Ht(e,{p:"bigint",m:"number",k:"number",hash:"function"});let{p:n,k:r,m:s,hash:o,expand:f,DST:h}=e;ce(o.outputLen,"valid hash"),rt(a),ce(t);let c=n.toString(2).length,u=Math.ceil((c+r)/8),I=t*s*u,l;if(f==="xmd")l=bn(a,h,I,o);else if(f==="xof")l=no(a,h,I,r,o);else if(f==="_internal_pass")l=a;else throw new Error('expand must be "xmd" or "xof"');let C=new Array(t);for(let B=0;B<t;B++){let y=new Array(s);for(let m=0;m<s;m++){let g=u*(m+B*s),p=l.subarray(g,g+u);y[m]=ft(to(p),n)}C[B]=y}return C}function Si(a,t,e){if(typeof t!="function")throw new Error("mapToCurve() must be defined");function n(s){return a.fromAffine(t(s))}function r(s){let o=s.clearCofactor();return o.equals(a.ZERO)?a.ZERO:(o.assertValidity(),o)}return{defaults:Object.freeze(e),Point:a,hashToCurve(s,o){let f=Object.assign({},e,o),h=ar(s,2,f),c=n(h[0]),u=n(h[1]);return r(c.add(u))},encodeToCurve(s,o){let f=e.encodeDST?{DST:e.encodeDST}:{},h=Object.assign({},e,f,o),c=ar(s,1,h),u=n(c[0]);return r(u)},mapToCurve(s){if(e.m===1){if(typeof s!="bigint")throw new Error("expected bigint (m=1)");return r(n([s]))}if(!Array.isArray(s))throw new Error("expected array of bigints");for(let o of s)if(typeof o!="bigint")throw new Error("expected array of bigints");return r(n(s))},hashToScalar(s,o){let f=a.Fn.ORDER,h=Object.assign({},e,{p:f,m:1,DST:Pe},o);return ar(s,1,h)[0][0]}}}var to,Pe,cr=Et(()=>{te();Se();to=fe;Pe=Lt("HashToScalar-")});function ro(a){return Ht(a,{adjustScalarBytes:"function",powPminus2:"function"}),Object.freeze({...a})}function _i(a){let t=ro(a),{P:e,type:n,adjustScalarBytes:r,powPminus2:s,randomBytes:o}=t,f=n==="x25519";if(!f&&n!=="x448")throw new Error("invalid type");let h=o||Nt,c=f?255:448,u=f?32:56,I=BigInt(f?9:5),l=BigInt(f?121665:39081),C=f?wn**BigInt(254):wn**BigInt(447),B=f?BigInt(8)*wn**BigInt(251)-_e:BigInt(4)*wn**BigInt(445)-_e,y=C+B+_e,m=F=>ft(F,e),g=p(I);function p(F){return He(m(F),u)}function E(F){let O=ue(rt(F,u,"uCoordinate"));return f&&(O[31]&=127),m(Tt(O))}function S(F){return Tt(r(ue(rt(F,u,"scalar"))))}function b(F,O){let Y=D(E(O),S(F));if(Y===Ye)throw new Error("invalid private or public key received");return p(Y)}function R(F){return b(F,g)}let v=R,Q=b;function w(F,O,Y){let H=m(F*(O-Y));return O=m(O-H),Y=m(Y+H),{x_2:O,x_3:Y}}function D(F,O){we("u",F,Ye,e),we("scalar",O,C,y);let Y=O,H=F,q=_e,P=Ye,X=F,K=_e,V=Ye;for(let et=BigInt(c-1);et>=Ye;et--){let at=Y>>et&_e;V^=at,{x_2:q,x_3:X}=w(V,q,X),{x_2:P,x_3:K}=w(V,P,K),V=at;let nt=q+P,It=m(nt*nt),ut=q-P,mt=m(ut*ut),kt=It-mt,yt=X+K,Dt=X-K,T=m(Dt*nt),G=m(yt*ut),j=T+G,M=T-G;X=m(j*j),K=m(H*m(M*M)),q=m(It*mt),P=m(kt*(It+m(l*kt)))}({x_2:q,x_3:X}=w(V,q,X)),{x_2:P,x_3:K}=w(V,P,K);let tt=s(P);return m(q*tt)}let k={secretKey:u,publicKey:u,seed:u},x=(F=h(u))=>(rt(F,k.seed,"seed"),F),N={randomSecretKey:x};return Object.freeze({keygen:Cn(x,v),getSharedSecret:Q,getPublicKey:v,scalarMult:b,scalarMultBase:R,utils:N,GuBytes:g.slice(),lengths:k})}var Ye,_e,wn,Ri=Et(()=>{te();yn();Se();Ye=BigInt(0),_e=BigInt(1),wn=BigInt(2)});function xi(a){Ht(a,{name:"string",hash:"function",hashToScalar:"function",hashToGroup:"function"});let{name:t,Point:e,hash:n}=a,{Fn:r}=e,s=(x,N)=>a.hashToGroup(x,{DST:dt(Lt("HashToGroup-"),N)}),o=(x,N)=>a.hashToScalar(x,{DST:dt(Pe,N)}),f=(x=Nt)=>{let N=gi(x(nr(r.ORDER)),r.ORDER,r.isLE);return r.isLE?Tt(N):fe(N)},h=(x,N)=>Ci(e,x,N),c=x=>dt(Lt("OPRFV1-"),new Uint8Array([x]),Lt("-"+t)),u=c(0),I=c(1),l=c(2);function C(...x){let N=[];for(let F of x)typeof F=="number"?N.push(he(F,2)):typeof F=="string"?N.push(Lt(F)):(rt(F),N.push(he(F.length,2),F));return dt(...N)}let B=(...x)=>n(C(...x,"Finalize"));function y(x,N,F,O){let Y=x.toBytes(),H=n(C(Y,dt(Lt("Seed-"),O))),q=[];for(let P=0;P<N.length;P++){let X=N[P].toBytes(),K=F[P].toBytes(),V=o(C(H,P,X,K,"Composite"),O);q.push(V)}return q}function m(x,N,F,O){let Y=y(x,N,F,O),H=h(N,Y),q=h(F,Y);return{M:H,Z:q}}function g(x,N,F,O,Y){let H=y(N,F,O,Y),q=h(F,H),P=q.multiply(x);return{M:q,Z:P}}function p(x,N,F,O,Y,H){let[q,P,X,K,V]=[x,N,F,O,Y].map(tt=>tt.toBytes());return o(C(q,P,X,K,V,"Challenge"),H)}function E(x,N,F,O,Y,H){let{M:q,Z:P}=g(N,F,O,Y,x),X=f(H),K=e.BASE.multiply(X),V=q.multiply(X),tt=p(F,q,P,K,V,x),et=r.sub(X,r.mul(tt,N));return dt(...[tt,et].map(at=>r.toBytes(at)))}function S(x,N,F,O,Y){rt(Y,2*r.BYTES);let{M:H,Z:q}=m(N,F,O,x),[P,X]=[Y.subarray(0,r.BYTES),Y.subarray(r.BYTES)].map(et=>r.fromBytes(et)),K=e.BASE.multiply(X).add(N.multiply(P)),V=H.multiply(X).add(q.multiply(P)),tt=p(N,H,q,K,V,x);if(!r.eql(P,tt))throw new Error("proof verification failed")}function b(){let x=f(),N=e.BASE.multiply(x);return{secretKey:r.toBytes(x),publicKey:N.toBytes()}}function R(x,N,F){let O=dt(Lt("DeriveKeyPair"),x),Y=dt(N,C(F),Uint8Array.of(0));for(let H=0;H<=255;H++){Y[Y.length-1]=H;let q=a.hashToScalar(Y,{DST:O});if(!r.is0(q))return{secretKey:r.toBytes(q),publicKey:e.BASE.multiply(q).toBytes()}}throw new Error("Cannot derive key")}function v(x,N,F=Nt){let O=f(F),Y=s(N,x);if(Y.equals(e.ZERO))throw new Error("Input point at infinity");let H=Y.multiply(O);return{blind:r.toBytes(O),blinded:H.toBytes()}}function Q(x,N,F){let O=r.fromBytes(N),Y=s(F,x);if(Y.equals(e.ZERO))throw new Error("Input point at infinity");let H=Y.multiply(O).toBytes();return B(F,H)}let w={generateKeyPair:b,deriveKeyPair:(x,N)=>R(u,x,N),blind:(x,N=Nt)=>v(u,x,N),blindEvaluate(x,N){let F=r.fromBytes(x);return e.fromBytes(N).multiply(F).toBytes()},finalize(x,N,F){let O=r.fromBytes(N),H=e.fromBytes(F).multiply(r.inv(O)).toBytes();return B(x,H)},evaluate:(x,N)=>Q(u,x,N)};return Object.freeze({name:t,oprf:w,voprf:{generateKeyPair:b,deriveKeyPair:(x,N)=>R(I,x,N),blind:(x,N=Nt)=>v(I,x,N),blindEvaluateBatch(x,N,F,O=Nt){if(!Array.isArray(F))throw new Error("expected array");let Y=r.fromBytes(x),H=e.fromBytes(N),q=F.map(e.fromBytes),P=q.map(K=>K.multiply(Y)),X=E(I,Y,H,q,P,O);return{evaluated:P.map(K=>K.toBytes()),proof:X}},blindEvaluate(x,N,F,O=Nt){let Y=this.blindEvaluateBatch(x,N,[F],O);return{evaluated:Y.evaluated[0],proof:Y.proof}},finalizeBatch(x,N,F){if(!Array.isArray(x))throw new Error("expected array");let O=e.fromBytes(N),Y=x.map(q=>q.blinded).map(e.fromBytes),H=x.map(q=>q.evaluated).map(e.fromBytes);return S(I,O,Y,H,F),x.map(q=>w.finalize(q.input,q.blind,q.evaluated))},finalize(x,N,F,O,Y,H){return this.finalizeBatch([{input:x,blind:N,evaluated:F,blinded:O}],Y,H)[0]},evaluate:(x,N)=>Q(I,x,N)},poprf:x=>{let N=o(C("Info",x),l),F=e.BASE.multiply(N);return{generateKeyPair:b,deriveKeyPair:(O,Y)=>R(l,O,Y),blind(O,Y,H=Nt){let q=e.fromBytes(Y),P=F.add(q);if(P.equals(e.ZERO))throw new Error("tweakedKey point at infinity");let X=f(H),K=s(O,l);if(K.equals(e.ZERO))throw new Error("Input point at infinity");let V=K.multiply(X);return{blind:r.toBytes(X),blinded:V.toBytes(),tweakedKey:P.toBytes()}},blindEvaluateBatch(O,Y,H=Nt){if(!Array.isArray(Y))throw new Error("expected array");let q=r.fromBytes(O),P=r.add(q,N),X=r.inv(P),K=Y.map(e.fromBytes),V=K.map(at=>at.multiply(X)),tt=e.BASE.multiply(P),et=E(l,P,tt,V,K,H);return{evaluated:V.map(at=>at.toBytes()),proof:et}},blindEvaluate(O,Y,H=Nt){let q=this.blindEvaluateBatch(O,[Y],H);return{evaluated:q.evaluated[0],proof:q.proof}},finalizeBatch(O,Y,H){if(!Array.isArray(O))throw new Error("expected array");let q=O.map(P=>P.evaluated).map(e.fromBytes);return S(l,e.fromBytes(H),q,O.map(P=>P.blinded).map(e.fromBytes),Y),O.map((P,X)=>{let K=r.fromBytes(P.blind),V=q[X].multiply(r.inv(K)).toBytes();return B(P.input,x,V)})},finalize(O,Y,H,q,P,X){return this.finalizeBatch([{input:O,blind:Y,evaluated:H,blinded:q}],P,X)[0]},evaluate(O,Y){let H=r.fromBytes(O),q=s(Y,l);if(q.equals(e.ZERO))throw new Error("Input point at infinity");let P=r.add(H,N),X=r.inv(P),K=q.multiply(X).toBytes();return B(Y,x,K)}}},__tests:{Fn:r}})}var Di=Et(()=>{te();yn();cr();Se();});var Hi={};Le(Hi,{ED25519_TORSION_SUBGROUP:()=>Qo,_map_to_curve_elligator2_curve25519:()=>Gi,ed25519:()=>so,ed25519_hasher:()=>go,ed25519ctx:()=>oo,ed25519ph:()=>Ao,ristretto255:()=>Co,ristretto255_hasher:()=>Sn,ristretto255_oprf:()=>yo,x25519:()=>ao});function Li(a){let t=BigInt(10),e=BigInt(20),n=BigInt(40),r=BigInt(80),s=Kt,f=a*a%s*a%s,h=Gt(f,mn,s)*f%s,c=Gt(h,qt,s)*a%s,u=Gt(c,Fi,s)*c%s,I=Gt(u,t,s)*u%s,l=Gt(I,e,s)*I%s,C=Gt(l,n,s)*l%s,B=Gt(C,r,s)*C%s,y=Gt(B,r,s)*C%s,m=Gt(y,t,s)*u%s;return{pow_p_5_8:Gt(m,mn,s)*a%s,b2:f}}function ki(a){return a[0]&=248,a[31]&=127,a[31]|=64,a}function dr(a,t){let e=Kt,n=ft(t*t*t,e),r=ft(n*n*t,e),s=Li(a*r).pow_p_5_8,o=ft(a*n*s,e),f=ft(t*o*o,e),h=o,c=ft(o*fr,e),u=f===a,I=f===ft(-a,e),l=f===ft(-a*fr,e);return u&&(o=h),(I||l)&&(o=c),Vt(o,e)&&(o=ft(-o,e)),{isValid:u||I,value:o}}function Oi(a,t,e){if(t.length>255)throw new Error("Context is too big");return dt(Lt("SigEd25519 no Ed25519 collisions"),new Uint8Array([e?1:0,t.length]),t,a)}function Ir(a){return bi(Xt,ae,Object.assign({adjustScalarBytes:ki},a))}function Gi(a){let t=(Kt-Fi)/gr,e=BigInt(486662),n=$.sqr(a);n=$.mul(n,mn);let r=$.add(n,$.ONE),s=$.neg(e),o=$.sqr(r),f=$.mul(o,r),h=$.mul(n,e);h=$.mul(h,s),h=$.add(h,o),h=$.mul(h,s);let c=$.sqr(f);o=$.sqr(c),c=$.mul(c,f),c=$.mul(c,h),o=$.mul(o,c);let u=$.pow(o,t);u=$.mul(u,c);let I=$.mul(u,vi);o=$.sqr(u),o=$.mul(o,f);let l=$.eql(o,h),C=$.cmov(I,u,l),B=$.mul(s,n),y=$.mul(u,a);y=$.mul(y,fo);let m=$.mul(y,vi),g=$.mul(h,n);o=$.sqr(y),o=$.mul(o,f);let p=$.eql(o,g),E=$.cmov(m,y,p);o=$.sqr(C),o=$.mul(o,f);let S=$.eql(o,h),b=$.cmov(B,s,S),R=$.cmov(E,C,S),v=$.isOdd(R);return R=$.cmov(R,$.neg(R),S!==v),{xMn:b,xMd:r,yMn:R,yMd:qt}}function uo(a){let{xMn:t,xMd:e,yMn:n,yMd:r}=Gi(a),s=$.mul(t,r);s=$.mul(s,ho);let o=$.mul(e,n),f=$.sub(t,e),h=$.add(t,e),c=$.mul(o,h),u=$.eql(c,$.ZERO);s=$.cmov(s,$.ZERO,u),o=$.cmov(o,$.ONE,u),f=$.cmov(f,$.ONE,u),h=$.cmov(h,$.ONE,u);let[I,l]=me($,[o,h],!0);return{x:$.mul(s,I),y:$.mul(f,l)}}function Ti(a){let{d:t}=lr,e=Kt,n=g=>$.create(g),r=n(hr*a*a),s=n((r+qt)*Eo),o=BigInt(-1),f=n((o-t*r)*n(r+t)),{isValid:h,value:c}=dr(s,f),u=n(c*a);Vt(u,e)||(u=n(-u)),h||(c=u),h||(o=r);let I=n(o*(r-qt)*po-f),l=c*c,C=n((c+c)*f),B=n(I*lo),y=n(qt-l),m=n(qt+l);return new Xt(n(C*m),n(y*B),n(B*m),n(C*y))}var io,qt,mn,Ui,Fi,gr,Kt,lr,fr,Xt,$,Mi,so,oo,Ao,ao,co,fo,vi,ho,go,hr,lo,Io,Eo,po,Ni,Bo,ur,Re,Co,Sn,yo,Qo,Pi=Et(()=>{$r();be();wi();cr();Se();Ri();Di();te();io=BigInt(0),qt=BigInt(1),mn=BigInt(2),Ui=BigInt(3),Fi=BigInt(5),gr=BigInt(8),Kt=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),lr={p:Kt,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:gr,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};fr=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");Xt=Qi(lr,{uvRatio:dr}),$=Xt.Fp,Mi=Xt.Fn;so=Ir({}),oo=Ir({domain:Oi}),Ao=Ir({domain:Oi,prehash:ae}),ao=(()=>{let a=Kt;return _i({P:a,type:"x25519",powPminus2:t=>{let{pow_p_5_8:e,b2:n}=Li(t);return ft(Gt(e,Ui,a)*n,a)},adjustScalarBytes:ki})})(),co=(Kt+Ui)/gr,fo=$.pow(mn,co),vi=$.sqrt($.neg($.ONE));ho=hi($,$.neg(BigInt(486664)));go=Si(Xt,a=>uo(a[0]),{DST:"edwards25519_XMD:SHA-512_ELL2_RO_",encodeDST:"edwards25519_XMD:SHA-512_ELL2_NU_",p:Kt,m:1,k:128,expand:"xmd",hash:ae}),hr=fr,lo=BigInt("25063068953384623474111414158702152701244531502492656460079210482610430750235"),Io=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),Eo=BigInt("1159843021668779879193775521855586647937357759715417654439879720876111806838"),po=BigInt("40440834346308536858101042469323190826248399146238708352240133220865137265952"),Ni=a=>dr(qt,a),Bo=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),ur=a=>$.create(Tt(a)&Bo);Re=class a extends Qn{static BASE=new a(Xt.BASE);static ZERO=new a(Xt.ZERO);static Fp=$;static Fn=Mi;constructor(t){super(t)}static fromAffine(t){return new a(Xt.fromAffine(t))}assertSame(t){if(!(t instanceof a))throw new Error("RistrettoPoint expected")}init(t){return new a(t)}static fromBytes(t){rt(t,32);let{a:e,d:n}=lr,r=Kt,s=S=>$.create(S),o=ur(t);if(!zr($.toBytes(o),t)||Vt(o,r))throw new Error("invalid ristretto255 encoding 1");let f=s(o*o),h=s(qt+e*f),c=s(qt-e*f),u=s(h*h),I=s(c*c),l=s(e*n*u-I),{isValid:C,value:B}=Ni(s(l*I)),y=s(B*c),m=s(B*y*l),g=s((o+o)*y);Vt(g,r)&&(g=s(-g));let p=s(h*m),E=s(g*p);if(!C||Vt(E,r)||p===io)throw new Error("invalid ristretto255 encoding 2");return new a(new Xt(g,p,qt,E))}static fromHex(t){return a.fromBytes(se(t))}toBytes(){let{X:t,Y:e,Z:n,T:r}=this.ep,s=Kt,o=m=>$.create(m),f=o(o(n+e)*o(n-e)),h=o(t*e),c=o(h*h),{value:u}=Ni(o(f*c)),I=o(u*f),l=o(u*h),C=o(I*l*r),B;if(Vt(r*C,s)){let m=o(e*hr),g=o(t*hr);t=m,e=g,B=o(I*Io)}else B=l;Vt(t*C,s)&&(e=o(-e));let y=o((n-e)*B);return Vt(y,s)&&(y=o(-y)),$.toBytes(y)}equals(t){this.assertSame(t);let{X:e,Y:n}=this.ep,{X:r,Y:s}=t.ep,o=c=>$.create(c),f=o(e*s)===o(n*r),h=o(n*s)===o(e*r);return f||h}is0(){return this.equals(a.ZERO)}},Co={Point:Re},Sn={Point:Re,hashToCurve(a,t){let e=t?.DST||"ristretto255_XMD:SHA-512_R255MAP_RO_",n=bn(a,e,64,ae);return Sn.deriveToCurve(n)},hashToScalar(a,t={DST:Pe}){let e=bn(a,t.DST,64,ae);return Mi.create(Tt(e))},deriveToCurve(a){rt(a,64);let t=ur(a.subarray(0,32)),e=Ti(t),n=ur(a.subarray(32,64)),r=Ti(n);return new Re(e.add(r))}},yo=xi({name:"ristretto255-SHA512",Point:Re,hash:ae,hashToGroup:Sn.hashToCurve,hashToScalar:Sn.hashToScalar}),Qo=["0100000000000000000000000000000000000000000000000000000000000000","c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a","0000000000000000000000000000000000000000000000000000000000000080","26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05","ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f","26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85","0000000000000000000000000000000000000000000000000000000000000000","c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa"]});var Zi={};Le(Zi,{abool:()=>qe,abytes:()=>gt,aexists:()=>_n,anumber:()=>le,aoutput:()=>Er,bytesToHex:()=>pr,bytesToNumberBE:()=>mo,bytesToUtf8:()=>_o,checkOpts:()=>Cr,clean:()=>Wt,complexOverlapBytes:()=>Ro,concatBytes:()=>Ke,copyBytes:()=>de,createView:()=>Ki,equalBytes:()=>yr,getOutput:()=>xn,hexToBytes:()=>ji,hexToNumber:()=>Br,isAligned32:()=>$i,isBytes:()=>qi,isLE:()=>Ji,managedNonce:()=>xo,numberToBytesBE:()=>Vi,overlapBytes:()=>Xi,randomBytes:()=>Dn,u32:()=>Jt,u64Lengths:()=>Qr,u8:()=>bo,utf8ToBytes:()=>So,wrapCipher:()=>Rn});function qi(a){return a instanceof Uint8Array||ArrayBuffer.isView(a)&&a.constructor.name==="Uint8Array"}function qe(a){if(typeof a!="boolean")throw new Error(`boolean expected, not ${a}`)}function le(a){if(!Number.isSafeInteger(a)||a<0)throw new Error("positive integer expected, got "+a)}function gt(a,t,e=""){let n=qi(a),r=a?.length,s=t!==void 0;if(!n||s&&r!==t){let o=e&&`"${e}" `,f=s?` of length ${t}`:"",h=n?`length=${r}`:`type=${typeof a}`;throw new Error(o+"expected Uint8Array"+f+", got "+h)}return a}function _n(a,t=!0){if(a.destroyed)throw new Error("Hash instance has been destroyed");if(t&&a.finished)throw new Error("Hash#digest() has already been called")}function Er(a,t){gt(a,void 0,"output");let e=t.outputLen;if(a.length<e)throw new Error("digestInto() expects output buffer of length at least "+e)}function bo(a){return new Uint8Array(a.buffer,a.byteOffset,a.byteLength)}function Jt(a){return new Uint32Array(a.buffer,a.byteOffset,Math.floor(a.byteLength/4))}function Wt(...a){for(let t=0;t<a.length;t++)a[t].fill(0)}function Ki(a){return new DataView(a.buffer,a.byteOffset,a.byteLength)}function pr(a){if(gt(a),Wi)return a.toHex();let t="";for(let e=0;e<a.length;e++)t+=wo[a[e]];return t}function Yi(a){if(a>=$t._0&&a<=$t._9)return a-$t._0;if(a>=$t.A&&a<=$t.F)return a-($t.A-10);if(a>=$t.a&&a<=$t.f)return a-($t.a-10)}function ji(a){if(typeof a!="string")throw new Error("hex string expected, got "+typeof a);if(Wi)return Uint8Array.fromHex(a);let t=a.length,e=t/2;if(t%2)throw new Error("hex string expected, got unpadded hex of length "+t);let n=new Uint8Array(e);for(let r=0,s=0;r<e;r++,s+=2){let o=Yi(a.charCodeAt(s)),f=Yi(a.charCodeAt(s+1));if(o===void 0||f===void 0){let h=a[s]+a[s+1];throw new Error('hex string expected, got non-hex character "'+h+'" at index '+s)}n[r]=o*16+f}return n}function Br(a){if(typeof a!="string")throw new Error("hex string expected, got "+typeof a);return BigInt(a===""?"0":"0x"+a)}function mo(a){return Br(pr(a))}function Vi(a,t){return ji(a.toString(16).padStart(t*2,"0"))}function So(a){if(typeof a!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(a))}function _o(a){return new TextDecoder().decode(a)}function Xi(a,t){return a.buffer===t.buffer&&a.byteOffset<t.byteOffset+t.byteLength&&t.byteOffset<a.byteOffset+a.byteLength}function Ro(a,t){if(Xi(a,t)&&a.byteOffset<t.byteOffset)throw new Error("complex overlap of input and output is not supported")}function Ke(...a){let t=0;for(let n=0;n<a.length;n++){let r=a[n];gt(r),t+=r.length}let e=new Uint8Array(t);for(let n=0,r=0;n<a.length;n++){let s=a[n];e.set(s,r),r+=s.length}return e}function Cr(a,t){if(t==null||typeof t!="object")throw new Error("options must be defined");return Object.assign(a,t)}function yr(a,t){if(a.length!==t.length)return!1;let e=0;for(let n=0;n<a.length;n++)e|=a[n]^t[n];return e===0}function xn(a,t,e=!0){if(t===void 0)return new Uint8Array(a);if(t.length!==a)throw new Error('"output" expected Uint8Array of length '+a+", got: "+t.length);if(e&&!$i(t))throw new Error("invalid output, must be aligned");return t}function Qr(a,t,e){qe(e);let n=new Uint8Array(16),r=Ki(n);return r.setBigUint64(0,BigInt(t),e),r.setBigUint64(8,BigInt(a),e),n}function $i(a){return a.byteOffset%4===0}function de(a){return Uint8Array.from(a)}function Dn(a=32){let t=typeof globalThis=="object"?globalThis.crypto:null;if(typeof t?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");return t.getRandomValues(new Uint8Array(a))}function xo(a,t=Dn){let{nonceLength:e}=a;le(e);let n=(r,s)=>{let o=Ke(r,s);return s.fill(0),o};return((r,...s)=>({encrypt(o){gt(o);let f=t(e),h=a(r,f,...s).encrypt(o);return h instanceof Promise?h.then(c=>n(f,c)):n(f,h)},decrypt(o){gt(o);let f=o.subarray(0,e),h=o.subarray(e);return a(r,f,...s).decrypt(h)}}))}var Ji,Wi,wo,$t,Rn,xe=Et(()=>{Ji=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68,Wi=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",wo=Array.from({length:256},(a,t)=>t.toString(16).padStart(2,"0"));$t={_0:48,_9:57,A:65,F:70,a:97,f:102};Rn=(a,t)=>{function e(n,...r){if(gt(n,void 0,"key"),!Ji)throw new Error("Non little-endian hardware is not yet supported");if(a.nonceLength!==void 0){let u=r[0];gt(u,a.varSizeNonce?void 0:a.nonceLength,"nonce")}let s=a.tagLength;s&&r[1]!==void 0&&gt(r[1],void 0,"AAD");let o=t(n,...r),f=(u,I)=>{if(I!==void 0){if(u!==2)throw new Error("cipher output not supported");gt(I,void 0,"output")}},h=!1;return{encrypt(u,I){if(h)throw new Error("cannot encrypt() twice with same key + nonce");return h=!0,gt(u),f(o.encrypt.length,I),o.encrypt(u,I)},decrypt(u,I){if(gt(u),s&&u.length<s)throw new Error('"ciphertext" expected length bigger than tagLength='+s);return f(o.decrypt.length,I),o.decrypt(u,I)}}}return Object.assign(e,a),e}});function Z(a,t){return a<<t|a>>>32-t}function br(a){return a.byteOffset%4===0}function Fo(a,t,e,n,r,s,o,f){let h=r.length,c=new Uint8Array(vn),u=Jt(c),I=br(r)&&br(s),l=I?Jt(r):zi,C=I?Jt(s):zi;for(let B=0;B<h;o++){if(a(t,e,n,u,o,f),o>=es)throw new Error("arx: counter overflow");let y=Math.min(vn,h-B);if(I&&y===vn){let m=B/4;if(B%4!==0)throw new Error("arx: invalid block position");for(let g=0,p;g<Uo;g++)p=m+g,C[p]=l[p]^u[g];B+=vn;continue}for(let m=0,g;m<y;m++)g=B+m,s[g]=r[g]^c[m];B+=y}}function De(a,t){let{allowShortKeys:e,extendNonceFn:n,counterLength:r,counterRight:s,rounds:o}=Cr({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},t);if(typeof a!="function")throw new Error("core must be a function");return le(r),le(o),qe(s),qe(e),(f,h,c,u,I=0)=>{gt(f,void 0,"key"),gt(h,void 0,"nonce"),gt(c,void 0,"data");let l=c.length;if(u===void 0&&(u=new Uint8Array(l)),gt(u,void 0,"output"),le(I),I<0||I>=es)throw new Error("arx: counter overflow");if(u.length<l)throw new Error(`arx: output (${u.length}) is shorter than data (${l})`);let C=[],B=f.length,y,m;if(B===32)C.push(y=de(f)),m=To;else if(B===16&&e)y=new Uint8Array(32),y.set(f),y.set(f,16),m=No,C.push(y);else throw gt(f,32,"arx key"),new Error("invalid key size");br(h)||C.push(h=de(h));let g=Jt(y);if(n){if(h.length!==24)throw new Error("arx: extended nonce must be 24 bytes");n(m,g,Jt(h.subarray(0,16)),g),h=h.subarray(16)}let p=16-r;if(p!==h.length)throw new Error(`arx: nonce must be ${p} or 16 bytes`);if(p!==12){let S=new Uint8Array(12);S.set(h,s?0:12-h.length),h=S,C.push(h)}let E=Jt(h);return Fo(a,m,g,E,c,u,I,o),Wt(...C),u}}var ts,Do,vo,No,To,vn,Uo,es,zi,wr,mr,ns=Et(()=>{xe();ts=a=>Uint8Array.from(a.split(""),t=>t.charCodeAt(0)),Do=ts("expand 16-byte k"),vo=ts("expand 32-byte k"),No=Jt(Do),To=Jt(vo);vn=64,Uo=16,es=2**32-1,zi=Uint32Array.of();wr=class a{blockLen;keyLen;nonceLen;state;buf;key;nonce;pos;ctr;cipher;constructor(t,e,n,r,s){this.cipher=t,this.blockLen=e,this.keyLen=n,this.nonceLen=r,this.state=new Uint8Array(this.keyLen+this.nonceLen),this.reseed(s),this.ctr=0,this.pos=this.blockLen,this.buf=new Uint8Array(this.blockLen),this.key=this.state.subarray(0,this.keyLen),this.nonce=this.state.subarray(this.keyLen)}reseed(t){if(gt(t),!t||t.length===0)throw new Error("entropy required");for(let e=0;e<t.length;e++)this.state[e%this.state.length]^=t[e];this.ctr=0,this.pos=this.blockLen}addEntropy(t){this.state.set(this.randomBytes(this.state.length)),this.reseed(t)}randomBytes(t){if(le(t),t===0)return new Uint8Array(0);let e=new Uint8Array(t),n=0;if(this.pos<this.blockLen){let o=Math.min(t,this.blockLen-this.pos);if(e.set(this.buf.subarray(this.pos,this.pos+o),0),this.pos+=o,n+=o,n===t)return e}let r=Math.floor((t-n)/this.blockLen);if(r>0){let o=r*this.blockLen,f=e.subarray(n,n+o);this.cipher(this.key,this.nonce,f,f,this.ctr),this.ctr+=r,n+=o}let s=t-n;return s>0&&(this.buf.fill(0),this.cipher(this.key,this.nonce,this.buf,this.buf,this.ctr++),e.set(this.buf.subarray(0,s),n),this.pos=s),e}clone(){return new a(this.cipher,this.blockLen,this.keyLen,this.nonceLen,this.randomBytes(this.state.length))}clean(){this.pos=0,this.ctr=0,this.buf.fill(0),this.state.fill(0)}},mr=(a,t,e,n)=>(r=Dn(32))=>new wr(a,t,e,n,r)});function xt(a,t){return a[t++]&255|(a[t++]&255)<<8}function Lo(a){let t=(n,r)=>a(r).update(n).digest(),e=a(new Uint8Array(32));return t.outputLen=e.outputLen,t.blockLen=e.blockLen,t.create=n=>a(n),t}var Sr,rs,is=Et(()=>{xe();Sr=class{blockLen=16;outputLen=16;buffer=new Uint8Array(16);r=new Uint16Array(10);h=new Uint16Array(10);pad=new Uint16Array(8);pos=0;finished=!1;constructor(t){t=de(gt(t,32,"key"));let e=xt(t,0),n=xt(t,2),r=xt(t,4),s=xt(t,6),o=xt(t,8),f=xt(t,10),h=xt(t,12),c=xt(t,14);this.r[0]=e&8191,this.r[1]=(e>>>13|n<<3)&8191,this.r[2]=(n>>>10|r<<6)&7939,this.r[3]=(r>>>7|s<<9)&8191,this.r[4]=(s>>>4|o<<12)&255,this.r[5]=o>>>1&8190,this.r[6]=(o>>>14|f<<2)&8191,this.r[7]=(f>>>11|h<<5)&8065,this.r[8]=(h>>>8|c<<8)&8191,this.r[9]=c>>>5&127;for(let u=0;u<8;u++)this.pad[u]=xt(t,16+2*u)}process(t,e,n=!1){let r=n?0:2048,{h:s,r:o}=this,f=o[0],h=o[1],c=o[2],u=o[3],I=o[4],l=o[5],C=o[6],B=o[7],y=o[8],m=o[9],g=xt(t,e+0),p=xt(t,e+2),E=xt(t,e+4),S=xt(t,e+6),b=xt(t,e+8),R=xt(t,e+10),v=xt(t,e+12),Q=xt(t,e+14),w=s[0]+(g&8191),D=s[1]+((g>>>13|p<<3)&8191),k=s[2]+((p>>>10|E<<6)&8191),x=s[3]+((E>>>7|S<<9)&8191),N=s[4]+((S>>>4|b<<12)&8191),F=s[5]+(b>>>1&8191),O=s[6]+((b>>>14|R<<2)&8191),Y=s[7]+((R>>>11|v<<5)&8191),H=s[8]+((v>>>8|Q<<8)&8191),q=s[9]+(Q>>>5|r),P=0,X=P+w*f+D*(5*m)+k*(5*y)+x*(5*B)+N*(5*C);P=X>>>13,X&=8191,X+=F*(5*l)+O*(5*I)+Y*(5*u)+H*(5*c)+q*(5*h),P+=X>>>13,X&=8191;let K=P+w*h+D*f+k*(5*m)+x*(5*y)+N*(5*B);P=K>>>13,K&=8191,K+=F*(5*C)+O*(5*l)+Y*(5*I)+H*(5*u)+q*(5*c),P+=K>>>13,K&=8191;let V=P+w*c+D*h+k*f+x*(5*m)+N*(5*y);P=V>>>13,V&=8191,V+=F*(5*B)+O*(5*C)+Y*(5*l)+H*(5*I)+q*(5*u),P+=V>>>13,V&=8191;let tt=P+w*u+D*c+k*h+x*f+N*(5*m);P=tt>>>13,tt&=8191,tt+=F*(5*y)+O*(5*B)+Y*(5*C)+H*(5*l)+q*(5*I),P+=tt>>>13,tt&=8191;let et=P+w*I+D*u+k*c+x*h+N*f;P=et>>>13,et&=8191,et+=F*(5*m)+O*(5*y)+Y*(5*B)+H*(5*C)+q*(5*l),P+=et>>>13,et&=8191;let at=P+w*l+D*I+k*u+x*c+N*h;P=at>>>13,at&=8191,at+=F*f+O*(5*m)+Y*(5*y)+H*(5*B)+q*(5*C),P+=at>>>13,at&=8191;let nt=P+w*C+D*l+k*I+x*u+N*c;P=nt>>>13,nt&=8191,nt+=F*h+O*f+Y*(5*m)+H*(5*y)+q*(5*B),P+=nt>>>13,nt&=8191;let It=P+w*B+D*C+k*l+x*I+N*u;P=It>>>13,It&=8191,It+=F*c+O*h+Y*f+H*(5*m)+q*(5*y),P+=It>>>13,It&=8191;let ut=P+w*y+D*B+k*C+x*l+N*I;P=ut>>>13,ut&=8191,ut+=F*u+O*c+Y*h+H*f+q*(5*m),P+=ut>>>13,ut&=8191;let mt=P+w*m+D*y+k*B+x*C+N*l;P=mt>>>13,mt&=8191,mt+=F*I+O*u+Y*c+H*h+q*f,P+=mt>>>13,mt&=8191,P=(P<<2)+P|0,P=P+X|0,X=P&8191,P=P>>>13,K+=P,s[0]=X,s[1]=K,s[2]=V,s[3]=tt,s[4]=et,s[5]=at,s[6]=nt,s[7]=It,s[8]=ut,s[9]=mt}finalize(){let{h:t,pad:e}=this,n=new Uint16Array(10),r=t[1]>>>13;t[1]&=8191;for(let f=2;f<10;f++)t[f]+=r,r=t[f]>>>13,t[f]&=8191;t[0]+=r*5,r=t[0]>>>13,t[0]&=8191,t[1]+=r,r=t[1]>>>13,t[1]&=8191,t[2]+=r,n[0]=t[0]+5,r=n[0]>>>13,n[0]&=8191;for(let f=1;f<10;f++)n[f]=t[f]+r,r=n[f]>>>13,n[f]&=8191;n[9]-=8192;let s=(r^1)-1;for(let f=0;f<10;f++)n[f]&=s;s=~s;for(let f=0;f<10;f++)t[f]=t[f]&s|n[f];t[0]=(t[0]|t[1]<<13)&65535,t[1]=(t[1]>>>3|t[2]<<10)&65535,t[2]=(t[2]>>>6|t[3]<<7)&65535,t[3]=(t[3]>>>9|t[4]<<4)&65535,t[4]=(t[4]>>>12|t[5]<<1|t[6]<<14)&65535,t[5]=(t[6]>>>2|t[7]<<11)&65535,t[6]=(t[7]>>>5|t[8]<<8)&65535,t[7]=(t[8]>>>8|t[9]<<5)&65535;let o=t[0]+e[0];t[0]=o&65535;for(let f=1;f<8;f++)o=(t[f]+e[f]|0)+(o>>>16)|0,t[f]=o&65535;Wt(n)}update(t){_n(this),gt(t),t=de(t);let{buffer:e,blockLen:n}=this,r=t.length;for(let s=0;s<r;){let o=Math.min(n-this.pos,r-s);if(o===n){for(;n<=r-s;s+=n)this.process(t,s);continue}e.set(t.subarray(s,s+o),this.pos),this.pos+=o,s+=o,this.pos===n&&(this.process(e,0,!1),this.pos=0)}return this}destroy(){Wt(this.h,this.r,this.buffer,this.pad)}digestInto(t){_n(this),Er(t,this),this.finished=!0;let{buffer:e,h:n}=this,{pos:r}=this;if(r){for(e[r++]=1;r<16;r++)e[r]=0;this.process(e,0,!0)}this.finalize();let s=0;for(let o=0;o<8;o++)t[s++]=n[o]>>>0,t[s++]=n[o]>>>8;return t}digest(){let{buffer:t,outputLen:e}=this;this.digestInto(t);let n=t.slice(0,e);return this.destroy(),n}};rs=Lo(a=>new Sr(a))});var us={};Le(us,{_poly1305_aead:()=>_r,chacha12:()=>ko,chacha20:()=>cs,chacha20orig:()=>as,chacha20poly1305:()=>Go,chacha8:()=>hs,hchacha:()=>As,rngChacha20:()=>Po,rngChacha8:()=>Yo,xchacha20:()=>fs,xchacha20poly1305:()=>Ho});function Je(a,t,e,n,r,s=20){let o=a[0],f=a[1],h=a[2],c=a[3],u=t[0],I=t[1],l=t[2],C=t[3],B=t[4],y=t[5],m=t[6],g=t[7],p=r,E=e[0],S=e[1],b=e[2],R=o,v=f,Q=h,w=c,D=u,k=I,x=l,N=C,F=B,O=y,Y=m,H=g,q=p,P=E,X=S,K=b;for(let tt=0;tt<s;tt+=2)R=R+D|0,q=Z(q^R,16),F=F+q|0,D=Z(D^F,12),R=R+D|0,q=Z(q^R,8),F=F+q|0,D=Z(D^F,7),v=v+k|0,P=Z(P^v,16),O=O+P|0,k=Z(k^O,12),v=v+k|0,P=Z(P^v,8),O=O+P|0,k=Z(k^O,7),Q=Q+x|0,X=Z(X^Q,16),Y=Y+X|0,x=Z(x^Y,12),Q=Q+x|0,X=Z(X^Q,8),Y=Y+X|0,x=Z(x^Y,7),w=w+N|0,K=Z(K^w,16),H=H+K|0,N=Z(N^H,12),w=w+N|0,K=Z(K^w,8),H=H+K|0,N=Z(N^H,7),R=R+k|0,K=Z(K^R,16),Y=Y+K|0,k=Z(k^Y,12),R=R+k|0,K=Z(K^R,8),Y=Y+K|0,k=Z(k^Y,7),v=v+x|0,q=Z(q^v,16),H=H+q|0,x=Z(x^H,12),v=v+x|0,q=Z(q^v,8),H=H+q|0,x=Z(x^H,7),Q=Q+N|0,P=Z(P^Q,16),F=F+P|0,N=Z(N^F,12),Q=Q+N|0,P=Z(P^Q,8),F=F+P|0,N=Z(N^F,7),w=w+D|0,X=Z(X^w,16),O=O+X|0,D=Z(D^O,12),w=w+D|0,X=Z(X^w,8),O=O+X|0,D=Z(D^O,7);let V=0;n[V++]=o+R|0,n[V++]=f+v|0,n[V++]=h+Q|0,n[V++]=c+w|0,n[V++]=u+D|0,n[V++]=I+k|0,n[V++]=l+x|0,n[V++]=C+N|0,n[V++]=B+F|0,n[V++]=y+O|0,n[V++]=m+Y|0,n[V++]=g+H|0,n[V++]=p+q|0,n[V++]=E+P|0,n[V++]=S+X|0,n[V++]=b+K|0}function As(a,t,e,n){let r=a[0],s=a[1],o=a[2],f=a[3],h=t[0],c=t[1],u=t[2],I=t[3],l=t[4],C=t[5],B=t[6],y=t[7],m=e[0],g=e[1],p=e[2],E=e[3];for(let b=0;b<20;b+=2)r=r+h|0,m=Z(m^r,16),l=l+m|0,h=Z(h^l,12),r=r+h|0,m=Z(m^r,8),l=l+m|0,h=Z(h^l,7),s=s+c|0,g=Z(g^s,16),C=C+g|0,c=Z(c^C,12),s=s+c|0,g=Z(g^s,8),C=C+g|0,c=Z(c^C,7),o=o+u|0,p=Z(p^o,16),B=B+p|0,u=Z(u^B,12),o=o+u|0,p=Z(p^o,8),B=B+p|0,u=Z(u^B,7),f=f+I|0,E=Z(E^f,16),y=y+E|0,I=Z(I^y,12),f=f+I|0,E=Z(E^f,8),y=y+E|0,I=Z(I^y,7),r=r+c|0,E=Z(E^r,16),B=B+E|0,c=Z(c^B,12),r=r+c|0,E=Z(E^r,8),B=B+E|0,c=Z(c^B,7),s=s+u|0,m=Z(m^s,16),y=y+m|0,u=Z(u^y,12),s=s+u|0,m=Z(m^s,8),y=y+m|0,u=Z(u^y,7),o=o+I|0,g=Z(g^o,16),l=l+g|0,I=Z(I^l,12),o=o+I|0,g=Z(g^o,8),l=l+g|0,I=Z(I^l,7),f=f+h|0,p=Z(p^f,16),C=C+p|0,h=Z(h^C,12),f=f+h|0,p=Z(p^f,8),C=C+p|0,h=Z(h^C,7);let S=0;n[S++]=r,n[S++]=s,n[S++]=o,n[S++]=f,n[S++]=m,n[S++]=g,n[S++]=p,n[S++]=E}function os(a,t,e,n,r){r!==void 0&&gt(r,void 0,"AAD");let s=a(t,e,Oo),o=Qr(n.length,r?r.length:0,!0),f=rs.create(s);r&&ss(f,r),ss(f,n),f.update(o);let h=f.digest();return Wt(s,o),h}var as,cs,fs,hs,ko,Mo,ss,Oo,_r,Go,Ho,Po,Yo,gs=Et(()=>{ns();is();xe();as=De(Je,{counterRight:!1,counterLength:8,allowShortKeys:!0}),cs=De(Je,{counterRight:!1,counterLength:4,allowShortKeys:!1}),fs=De(Je,{counterRight:!1,counterLength:8,extendNonceFn:As,allowShortKeys:!1}),hs=De(Je,{counterRight:!1,counterLength:4,rounds:8}),ko=De(Je,{counterRight:!1,counterLength:4,rounds:12}),Mo=new Uint8Array(16),ss=(a,t)=>{a.update(t);let e=t.length%16;e&&a.update(Mo.subarray(e))},Oo=new Uint8Array(32);_r=a=>(t,e,n)=>({encrypt(s,o){let f=s.length;o=xn(f+16,o,!1),o.set(s);let h=o.subarray(0,-16);a(t,e,h,h,1);let c=os(a,t,e,h,n);return o.set(c,f),Wt(c),o},decrypt(s,o){o=xn(s.length-16,o,!1);let f=s.subarray(0,-16),h=s.subarray(-16),c=os(a,t,e,f,n);if(!yr(h,c))throw new Error("invalid tag");return o.set(s.subarray(0,-16)),a(t,e,o,o,1),Wt(c),o}}),Go=Rn({blockSize:64,nonceLength:12,tagLength:16},_r(cs)),Ho=Rn({blockSize:64,nonceLength:24,tagLength:16},_r(fs)),Po=mr(as,64,32,8),Yo=mr(hs,64,32,12)});var ls={};Le(ls,{default:()=>Ko});var qo,Ko,ds=Et(()=>{qo=(()=>{var a,t,e={773(s,o,f){var h,c=typeof self<"u"&&self.Module!==void 0?self.Module:{},u={};for(h in c)c.hasOwnProperty(h)&&(u[h]=c[h]);var I,l,C,B,y=[];I=typeof window=="object",l=typeof importScripts=="function",C=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",B=!I&&!C&&!l;var m,g,p,E,S,b="";C?(b=l?f(967).dirname(b)+"/":"//",m=function(M,J){return E||(E=f(145)),S||(S=f(967)),M=S.normalize(M),E.readFileSync(M,J?null:"utf8")},p=function(M){var J=m(M,!0);return J.buffer||(J=new Uint8Array(J)),D(J.buffer),J},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),y=process.argv.slice(2),s.exports=c,process.on("uncaughtException",function(M){if(!(M instanceof G))throw M}),process.on("unhandledRejection",V),c.inspect=function(){return"[Emscripten Module object]"}):B?(typeof read<"u"&&(m=function(M){return read(M)}),p=function(M){var J;return typeof readbuffer=="function"?new Uint8Array(readbuffer(M)):(D(typeof(J=read(M,"binary"))=="object"),J)},typeof scriptArgs<"u"?y=scriptArgs:arguments!==void 0&&(y=arguments),typeof print<"u"&&(typeof console>"u"&&(console={}),console.log=print,console.warn=console.error=typeof printErr<"u"?printErr:print)):(I||l)&&(l?b=self.location.href:typeof document<"u"&&document.currentScript&&(b=document.currentScript.src),b=b.indexOf("blob:")!==0?b.substr(0,b.lastIndexOf("/")+1):"",m=function(M){var J=new XMLHttpRequest;return J.open("GET",M,!1),J.send(null),J.responseText},l&&(p=function(M){var J=new XMLHttpRequest;return J.open("GET",M,!1),J.responseType="arraybuffer",J.send(null),new Uint8Array(J.response)}),g=function(M,J,i){var A=new XMLHttpRequest;A.open("GET",M,!0),A.responseType="arraybuffer",A.onload=function(){A.status==200||A.status==0&&A.response?J(A.response):i()},A.onerror=i,A.send(null)}),c.print||console.log.bind(console);var R,v,Q=c.printErr||console.warn.bind(console);for(h in u)u.hasOwnProperty(h)&&(c[h]=u[h]);u=null,c.arguments&&(y=c.arguments),c.thisProgram&&c.thisProgram,c.quit&&c.quit,c.wasmBinary&&(R=c.wasmBinary),c.noExitRuntime,typeof WebAssembly!="object"&&V("no native wasm support detected");var w=!1;function D(M,J){M||V("Assertion failed: "+J)}var k,x,N=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function F(M){k=M,c.HEAP8=new Int8Array(M),c.HEAP16=new Int16Array(M),c.HEAP32=new Int32Array(M),c.HEAPU8=x=new Uint8Array(M),c.HEAPU16=new Uint16Array(M),c.HEAPU32=new Uint32Array(M),c.HEAPF32=new Float32Array(M),c.HEAPF64=new Float64Array(M)}c.INITIAL_MEMORY;var O,Y=[],H=[],q=[],P=0,X=null,K=null;function V(M){throw c.onAbort&&c.onAbort(M),Q(M+=""),w=!0,M="abort("+M+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(M)}function tt(M){return M.startsWith("data:application/octet-stream;base64,")}function et(M){return M.startsWith("file://")}c.preloadedImages={},c.preloadedAudios={};var at,nt="argon2.wasm";function It(M){try{if(M==nt&&R)return new Uint8Array(R);if(p)return p(M);throw"both async and sync fetching of the wasm failed"}catch(J){V(J)}}function ut(M){for(;M.length>0;){var J=M.shift();if(typeof J!="function"){var i=J.func;typeof i=="number"?J.arg===void 0?O.get(i)():O.get(i)(J.arg):i(J.arg===void 0?null:J.arg)}else J(c)}}function mt(M){try{return v.grow(M-k.byteLength+65535>>>16),F(v.buffer),1}catch{}}tt(nt)||(at=nt,nt=c.locateFile?c.locateFile(at,b):b+at);var kt,yt={a:function(M,J,i){x.copyWithin(M,J,J+i)},b:function(M){var J,i=x.length;if((M>>>=0)>2147418112)return!1;for(var A=1;A<=4;A*=2){var d=i*(1+.2/A);if(d=Math.min(d,M+100663296),mt(Math.min(2147418112,((J=Math.max(M,d))%65536>0&&(J+=65536-J%65536),J))))return!0}return!1}},Dt=((function(){var M={a:yt};function J(d,_){var U,L=d.exports;c.asm=L,F((v=c.asm.c).buffer),O=c.asm.k,U=c.asm.d,H.unshift(U),(function(W){if(P--,c.monitorRunDependencies&&c.monitorRunDependencies(P),P==0&&(X!==null&&(clearInterval(X),X=null),K)){var z=K;K=null,z()}})()}function i(d){J(d.instance)}function A(d){return(function(){if(!R&&(I||l)){if(typeof fetch=="function"&&!et(nt))return fetch(nt,{credentials:"same-origin"}).then(function(_){if(!_.ok)throw"failed to load wasm binary file at '"+nt+"'";return _.arrayBuffer()}).catch(function(){return It(nt)});if(g)return new Promise(function(_,U){g(nt,function(L){_(new Uint8Array(L))},U)})}return Promise.resolve().then(function(){return It(nt)})})().then(function(_){return WebAssembly.instantiate(_,M)}).then(d,function(_){Q("failed to asynchronously prepare wasm: "+_),V(_)})}if(P++,c.monitorRunDependencies&&c.monitorRunDependencies(P),c.instantiateWasm)try{return c.instantiateWasm(M,J)}catch(d){return Q("Module.instantiateWasm callback failed with error: "+d),!1}R||typeof WebAssembly.instantiateStreaming!="function"||tt(nt)||et(nt)||typeof fetch!="function"?A(i):fetch(nt,{credentials:"same-origin"}).then(function(d){return WebAssembly.instantiateStreaming(d,M).then(i,function(_){return Q("wasm streaming compile failed: "+_),Q("falling back to ArrayBuffer instantiation"),A(i)})})})(),c.___wasm_call_ctors=function(){return(c.___wasm_call_ctors=c.asm.d).apply(null,arguments)},c._argon2_hash=function(){return(c._argon2_hash=c.asm.e).apply(null,arguments)},c._malloc=function(){return(Dt=c._malloc=c.asm.f).apply(null,arguments)}),T=(c._free=function(){return(c._free=c.asm.g).apply(null,arguments)},c._argon2_verify=function(){return(c._argon2_verify=c.asm.h).apply(null,arguments)},c._argon2_error_message=function(){return(c._argon2_error_message=c.asm.i).apply(null,arguments)},c._argon2_encodedlen=function(){return(c._argon2_encodedlen=c.asm.j).apply(null,arguments)},c._argon2_hash_ext=function(){return(c._argon2_hash_ext=c.asm.l).apply(null,arguments)},c._argon2_verify_ext=function(){return(c._argon2_verify_ext=c.asm.m).apply(null,arguments)},c.stackAlloc=function(){return(T=c.stackAlloc=c.asm.n).apply(null,arguments)});function G(M){this.name="ExitStatus",this.message="Program terminated with exit("+M+")",this.status=M}function j(M){function J(){kt||(kt=!0,c.calledRun=!0,w||(ut(H),c.onRuntimeInitialized&&c.onRuntimeInitialized(),(function(){var i;if(c.postRun)for(typeof c.postRun=="function"&&(c.postRun=[c.postRun]);c.postRun.length;)i=c.postRun.shift(),q.unshift(i);ut(q)})()))}M=M||y,P>0||((function(){var i;if(c.preRun)for(typeof c.preRun=="function"&&(c.preRun=[c.preRun]);c.preRun.length;)i=c.preRun.shift(),Y.unshift(i);ut(Y)})(),P>0||(c.setStatus?(c.setStatus("Running..."),setTimeout(function(){setTimeout(function(){c.setStatus("")},1),J()},1)):J()))}if(c.allocate=function(M,J){var i;return i=J==1?T(M.length):Dt(M.length),M.subarray||M.slice?x.set(M,i):x.set(new Uint8Array(M),i),i},c.UTF8ToString=function(M,J){return M?(function(i,A,d){for(var _=A+d,U=A;i[U]&&!(U>=_);)++U;if(U-A>16&&i.subarray&&N)return N.decode(i.subarray(A,U));for(var L="";A<U;){var W=i[A++];if(128&W){var z=63&i[A++];if((224&W)!=192){var ht=63&i[A++];if((W=(240&W)==224?(15&W)<<12|z<<6|ht:(7&W)<<18|z<<12|ht<<6|63&i[A++])<65536)L+=String.fromCharCode(W);else{var st=W-65536;L+=String.fromCharCode(55296|st>>10,56320|1023&st)}}else L+=String.fromCharCode((31&W)<<6|z)}else L+=String.fromCharCode(W)}return L})(x,M,J):""},c.ALLOC_NORMAL=0,K=function M(){kt||j(),kt||(K=M)},c.run=j,c.preInit)for(typeof c.preInit=="function"&&(c.preInit=[c.preInit]);c.preInit.length>0;)c.preInit.pop()();j(),s.exports=c,c.unloadRuntime=function(){typeof self<"u"&&delete self.Module,c=v=O=k=x=void 0,delete s.exports}},631:function(s,o,f){var h,c;typeof self<"u",(c=typeof(h=function(){let u=typeof self<"u"?self:this,I={Argon2d:0,Argon2i:1,Argon2id:2};function l(g){if(l._promise)return l._promise;if(l._module)return Promise.resolve(l._module);let p;return p=u.process&&u.process.versions&&u.process.versions.node?C().then(E=>new Promise(S=>{E.postRun=()=>S(E)})):(u.loadArgon2WasmBinary?u.loadArgon2WasmBinary():Promise.resolve(f(721)).then(E=>(function(S){let b=atob(S),R=new Uint8Array(new ArrayBuffer(b.length));for(let v=0;v<b.length;v++)R[v]=b.charCodeAt(v);return R})(E))).then(E=>{var S,b;return S=E,b=g?(function(R){let v=32767;return new WebAssembly.Memory({initial:Math.min(Math.max(Math.ceil(1024*R/65536),256)+256,v),maximum:v})})(g):void 0,new Promise(R=>(u.Module={wasmBinary:S,wasmMemory:b,postRun(){R(Module)}},C()))}),l._promise=p,p.then(E=>(l._module=E,delete l._promise,E))}function C(){return u.loadArgon2WasmModule?u.loadArgon2WasmModule():Promise.resolve(f(773))}function B(g,p){return g.allocate(p,"i8",g.ALLOC_NORMAL)}function y(g,p){return B(g,new Uint8Array([...p,0]))}function m(g){if(typeof g!="string")return g;if(typeof TextEncoder=="function")return new TextEncoder().encode(g);if(typeof Buffer=="function")return Buffer.from(g);throw Error("Don't know how to encode UTF8")}return{ArgonType:I,hash:function(g){let p=g.mem||1024;return l(p).then(E=>{let S=g.time||1,b=g.parallelism||1,R=m(g.pass),v=y(E,R),Q=R.length,w=m(g.salt),D=y(E,w),k=w.length,x=g.type||I.Argon2d,N=E.allocate(Array(g.hashLen||24),"i8",E.ALLOC_NORMAL),F=g.secret?B(E,g.secret):0,O=g.secret?g.secret.byteLength:0,Y=g.ad?B(E,g.ad):0,H=g.ad?g.ad.byteLength:0,q=g.hashLen||24,P=E._argon2_encodedlen(S,p,b,k,q,x),X=E.allocate(Array(P+1),"i8",E.ALLOC_NORMAL),K,V,tt;try{V=E._argon2_hash_ext(S,p,b,v,Q,D,k,N,q,X,P,x,F,O,Y,H,19)}catch(et){K=et}if(V!==0||K){try{K||(K=E.UTF8ToString(E._argon2_error_message(V)))}catch{}tt={message:K,code:V}}else{let et="",at=new Uint8Array(q);for(let nt=0;nt<q;nt++){let It=E.HEAP8[N+nt];at[nt]=It,et+=("0"+(255&It).toString(16)).slice(-2)}tt={hash:at,hashHex:et,encoded:E.UTF8ToString(X)}}try{E._free(v),E._free(D),E._free(N),E._free(X),Y&&E._free(Y),F&&E._free(F)}catch{}if(K)throw tt;return tt})},verify:function(g){return l().then(p=>{let E=m(g.pass),S=y(p,E),b=E.length,R=g.secret?B(p,g.secret):0,v=g.secret?g.secret.byteLength:0,Q=g.ad?B(p,g.ad):0,w=g.ad?g.ad.byteLength:0,D=y(p,m(g.encoded)),k,x,N,F=g.type;if(F===void 0){let O=g.encoded.split("$")[1];O&&(F=I[O=O.replace("a","A")]||I.Argon2d)}try{x=p._argon2_verify_ext(D,S,b,R,v,Q,w,F)}catch(O){k=O}if(x||k){try{k||(k=p.UTF8ToString(p._argon2_error_message(x)))}catch{}N={message:k,code:x}}try{p._free(S),p._free(D)}catch{}if(k)throw N;return N})},unloadRuntime:function(){l._module&&(l._module.unloadRuntime(),delete l._promise,delete l._module)}}})=="function"?h.apply(o,[]):h)===void 0||(s.exports=c)},721:function(s,o){s.exports="AGFzbQEAAAABkwESYAN/f38Bf2ABfwF/YAJ/fwBgAn9/AX9gAX8AYAR/f39/AX9gA39/fwBgBH9/f38AYAJ/fgBgAn5/AX5gAn5+AX5gBX9/f39/AGAGf3x/f39/AX9gAABgCH9/f39/f39/AX9gEX9/f39/f39/f39/f39/f39/AX9gBn9/f39/fwF/YA1/f39/f39/f39/f39/AX8CDQIBYQFhAAABYQFiAAEDPDsJCgIAAAIEAQEAAQsGAQAHAAIBAwICAwIIBQECAwEHDQMBBgQGAQEFBQEAAAIEAAAIAQAODwQQAQURAwQFAXABAwMFBwEBgAL//wEGCQF/AUGQo8ACCwcxDAFjAgABZAAhAWUAOwFmAAkBZwAIAWgAOgFpADkBagA4AWsBAAFsADYBbQA1AW4AMwkIAQBBAQsCCzQKwbMBOwgAIAAgAa2KCx4AIAAgAXwgAEIBhkL+////H4MgAUL/////D4N+fAsXAEHwHCgCAEUgAEVyRQRAIAAgARAdCwuDBAEDfyACQYAETwRAIAAgASACEAAaIAAPCyAAIAJqIQMCQCAAIAFzQQNxRQRAAkAgAEEDcUUEQCAAIQIMAQsgAkEBSARAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAkEDcUUNASACIANJDQALCwJAIANBfHEiBEHAAEkNACACIARBQGoiBUsNAANAIAIgASgCADYCACACIAEoAgQ2AgQgAiABKAIINgIIIAIgASgCDDYCDCACIAEoAhA2AhAgAiABKAIUNgIUIAIgASgCGDYCGCACIAEoAhw2AhwgAiABKAIgNgIgIAIgASgCJDYCJCACIAEoAig2AiggAiABKAIsNgIsIAIgASgCMDYCMCACIAEoAjQ2AjQgAiABKAI4NgI4IAIgASgCPDYCPCABQUBrIQEgAkFAayICIAVNDQALCyACIARPDQEDQCACIAEoAgA2AgAgAUEEaiEBIAJBBGoiAiAESQ0ACwwBCyADQQRJBEAgACECDAELIAAgA0EEayIESwRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAiABLQABOgABIAIgAS0AAjoAAiACIAEtAAM6AAMgAUEEaiEBIAJBBGoiAiAETQ0ACwsgAiADSQRAA0AgAiABLQAAOgAAIAFBAWohASACQQFqIgIgA0cNAAsLIAALzwEBA38CQCACRQ0AQX8hAyAARSABRXINACAAKQNQQgBSDQACQCAAKALgASIDIAJqQYEBSQ0AIABB4ABqIgUgA2ogAUGAASADayIEEAUaIABCgAEQGiAAIAUQGUEAIQMgAEEANgLgASABIARqIQEgAiAEayICQYEBSQ0AA0AgAEKAARAaIAAgARAZIAFBgAFqIQEgAkGAAWsiAkGAAUsNAAsgACgC4AEhAwsgACADakHgAGogASACEAUaIAAgACgC4AEgAmo2AuABQQAhAwsgAwsJACAAIAE2AAALpwwBB38CQCAARQ0AIABBCGsiAyAAQQRrKAIAIgFBeHEiAGohBQJAIAFBAXENACABQQNxRQ0BIAMgAygCACIBayIDQbAfKAIASQ0BIAAgAWohACADQbQfKAIARwRAIAFB/wFNBEAgAygCCCICIAFBA3YiBEEDdEHIH2pGGiACIAMoAgwiAUYEQEGgH0GgHygCAEF+IAR3cTYCAAwDCyACIAE2AgwgASACNgIIDAILIAMoAhghBgJAIAMgAygCDCIBRwRAIAMoAggiAiABNgIMIAEgAjYCCAwBCwJAIANBFGoiAigCACIEDQAgA0EQaiICKAIAIgQNAEEAIQEMAQsDQCACIQcgBCIBQRRqIgIoAgAiBA0AIAFBEGohAiABKAIQIgQNAAsgB0EANgIACyAGRQ0BAkAgAyADKAIcIgJBAnRB0CFqIgQoAgBGBEAgBCABNgIAIAENAUGkH0GkHygCAEF+IAJ3cTYCAAwDCyAGQRBBFCAGKAIQIANGG2ogATYCACABRQ0CCyABIAY2AhggAygCECICBEAgASACNgIQIAIgATYCGAsgAygCFCICRQ0BIAEgAjYCFCACIAE2AhgMAQsgBSgCBCIBQQNxQQNHDQBBqB8gADYCACAFIAFBfnE2AgQgAyAAQQFyNgIEIAAgA2ogADYCAA8LIAMgBU8NACAFKAIEIgFBAXFFDQACQCABQQJxRQRAIAVBuB8oAgBGBEBBuB8gAzYCAEGsH0GsHygCACAAaiIANgIAIAMgAEEBcjYCBCADQbQfKAIARw0DQagfQQA2AgBBtB9BADYCAA8LIAVBtB8oAgBGBEBBtB8gAzYCAEGoH0GoHygCACAAaiIANgIAIAMgAEEBcjYCBCAAIANqIAA2AgAPCyABQXhxIABqIQACQCABQf8BTQRAIAUoAggiAiABQQN2IgRBA3RByB9qRhogAiAFKAIMIgFGBEBBoB9BoB8oAgBBfiAEd3E2AgAMAgsgAiABNgIMIAEgAjYCCAwBCyAFKAIYIQYCQCAFIAUoAgwiAUcEQCAFKAIIIgJBsB8oAgBJGiACIAE2AgwgASACNgIIDAELAkAgBUEUaiICKAIAIgQNACAFQRBqIgIoAgAiBA0AQQAhAQwBCwNAIAIhByAEIgFBFGoiAigCACIEDQAgAUEQaiECIAEoAhAiBA0ACyAHQQA2AgALIAZFDQACQCAFIAUoAhwiAkECdEHQIWoiBCgCAEYEQCAEIAE2AgAgAQ0BQaQfQaQfKAIAQX4gAndxNgIADAILIAZBEEEUIAYoAhAgBUYbaiABNgIAIAFFDQELIAEgBjYCGCAFKAIQIgIEQCABIAI2AhAgAiABNgIYCyAFKAIUIgJFDQAgASACNgIUIAIgATYCGAsgAyAAQQFyNgIEIAAgA2ogADYCACADQbQfKAIARw0BQagfIAA2AgAPCyAFIAFBfnE2AgQgAyAAQQFyNgIEIAAgA2ogADYCAAsgAEH/AU0EQCAAQQN2IgFBA3RByB9qIQACf0GgHygCACICQQEgAXQiAXFFBEBBoB8gASACcjYCACAADAELIAAoAggLIQIgACADNgIIIAIgAzYCDCADIAA2AgwgAyACNgIIDwtBHyECIANCADcCECAAQf///wdNBEAgAEEIdiIBIAFBgP4/akEQdkEIcSIBdCICIAJBgOAfakEQdkEEcSICdCIEIARBgIAPakEQdkECcSIEdEEPdiABIAJyIARyayIBQQF0IAAgAUEVanZBAXFyQRxqIQILIAMgAjYCHCACQQJ0QdAhaiEBAkACQAJAQaQfKAIAIgRBASACdCIHcUUEQEGkHyAEIAdyNgIAIAEgAzYCACADIAE2AhgMAQsgAEEAQRkgAkEBdmsgAkEfRht0IQIgASgCACEBA0AgASIEKAIEQXhxIABGDQIgAkEddiEBIAJBAXQhAiAEIAFBBHFqIgdBEGooAgAiAQ0ACyAHIAM2AhAgAyAENgIYCyADIAM2AgwgAyADNgIIDAELIAQoAggiACADNgIMIAQgAzYCCCADQQA2AhggAyAENgIMIAMgADYCCAtBwB9BwB8oAgBBAWsiAEF/IAAbNgIACwuULQEMfyMAQRBrIgwkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAQfQBTQRAQaAfKAIAIgVBECAAQQtqQXhxIABBC0kbIghBA3YiAnYiAUEDcQRAIAFBf3NBAXEgAmoiA0EDdCIBQdAfaigCACIEQQhqIQACQCAEKAIIIgIgAUHIH2oiAUYEQEGgHyAFQX4gA3dxNgIADAELIAIgATYCDCABIAI2AggLIAQgA0EDdCIBQQNyNgIEIAEgBGoiASABKAIEQQFyNgIEDA0LIAhBqB8oAgAiCk0NASABBEACQEECIAJ0IgBBACAAa3IgASACdHEiAEEAIABrcUEBayIAIABBDHZBEHEiAnYiAUEFdkEIcSIAIAJyIAEgAHYiAUECdkEEcSIAciABIAB2IgFBAXZBAnEiAHIgASAAdiIBQQF2QQFxIgByIAEgAHZqIgNBA3QiAEHQH2ooAgAiBCgCCCIBIABByB9qIgBGBEBBoB8gBUF+IAN3cSIFNgIADAELIAEgADYCDCAAIAE2AggLIARBCGohACAEIAhBA3I2AgQgBCAIaiICIANBA3QiASAIayIDQQFyNgIEIAEgBGogAzYCACAKBEAgCkEDdiIBQQN0QcgfaiEHQbQfKAIAIQQCfyAFQQEgAXQiAXFFBEBBoB8gASAFcjYCACAHDAELIAcoAggLIQEgByAENgIIIAEgBDYCDCAEIAc2AgwgBCABNgIIC0G0HyACNgIAQagfIAM2AgAMDQtBpB8oAgAiBkUNASAGQQAgBmtxQQFrIgAgAEEMdkEQcSICdiIBQQV2QQhxIgAgAnIgASAAdiIBQQJ2QQRxIgByIAEgAHYiAUEBdkECcSIAciABIAB2IgFBAXZBAXEiAHIgASAAdmpBAnRB0CFqKAIAIgEoAgRBeHEgCGshAyABIQIDQAJAIAIoAhAiAEUEQCACKAIUIgBFDQELIAAoAgRBeHEgCGsiAiADIAIgA0kiAhshAyAAIAEgAhshASAAIQIMAQsLIAEgCGoiCSABTQ0CIAEoAhghCyABIAEoAgwiBEcEQCABKAIIIgBBsB8oAgBJGiAAIAQ2AgwgBCAANgIIDAwLIAFBFGoiAigCACIARQRAIAEoAhAiAEUNBCABQRBqIQILA0AgAiEHIAAiBEEUaiICKAIAIgANACAEQRBqIQIgBCgCECIADQALIAdBADYCAAwLC0F/IQggAEG/f0sNACAAQQtqIgBBeHEhCEGkHygCACIJRQ0AQQAgCGshAwJAAkACQAJ/QQAgCEGAAkkNABpBHyAIQf///wdLDQAaIABBCHYiACAAQYD+P2pBEHZBCHEiAnQiACAAQYDgH2pBEHZBBHEiAXQiACAAQYCAD2pBEHZBAnEiAHRBD3YgASACciAAcmsiAEEBdCAIIABBFWp2QQFxckEcagsiBUECdEHQIWooAgAiAkUEQEEAIQAMAQtBACEAIAhBAEEZIAVBAXZrIAVBH0YbdCEBA0ACQCACKAIEQXhxIAhrIgcgA08NACACIQQgByIDDQBBACEDIAIhAAwDCyAAIAIoAhQiByAHIAIgAUEddkEEcWooAhAiAkYbIAAgBxshACABQQF0IQEgAg0ACwsgACAEckUEQEEAIQRBAiAFdCIAQQAgAGtyIAlxIgBFDQMgAEEAIABrcUEBayIAIABBDHZBEHEiAnYiAUEFdkEIcSIAIAJyIAEgAHYiAUECdkEEcSIAciABIAB2IgFBAXZBAnEiAHIgASAAdiIBQQF2QQFxIgByIAEgAHZqQQJ0QdAhaigCACEACyAARQ0BCwNAIAAoAgRBeHEgCGsiASADSSECIAEgAyACGyEDIAAgBCACGyEEIAAoAhAiAQR/IAEFIAAoAhQLIgANAAsLIARFDQAgA0GoHygCACAIa08NACAEIAhqIgYgBE0NASAEKAIYIQUgBCAEKAIMIgFHBEAgBCgCCCIAQbAfKAIASRogACABNgIMIAEgADYCCAwKCyAEQRRqIgIoAgAiAEUEQCAEKAIQIgBFDQQgBEEQaiECCwNAIAIhByAAIgFBFGoiAigCACIADQAgAUEQaiECIAEoAhAiAA0ACyAHQQA2AgAMCQsgCEGoHygCACICTQRAQbQfKAIAIQMCQCACIAhrIgFBEE8EQEGoHyABNgIAQbQfIAMgCGoiADYCACAAIAFBAXI2AgQgAiADaiABNgIAIAMgCEEDcjYCBAwBC0G0H0EANgIAQagfQQA2AgAgAyACQQNyNgIEIAIgA2oiACAAKAIEQQFyNgIECyADQQhqIQAMCwsgCEGsHygCACIGSQRAQawfIAYgCGsiATYCAEG4H0G4HygCACICIAhqIgA2AgAgACABQQFyNgIEIAIgCEEDcjYCBCACQQhqIQAMCwtBACEAIAhBL2oiCQJ/QfgiKAIABEBBgCMoAgAMAQtBhCNCfzcCAEH8IkKAoICAgIAENwIAQfgiIAxBDGpBcHFB2KrVqgVzNgIAQYwjQQA2AgBB3CJBADYCAEGAIAsiAWoiBUEAIAFrIgdxIgIgCE0NCkHYIigCACIEBEBB0CIoAgAiAyACaiIBIANNIAEgBEtyDQsLQdwiLQAAQQRxDQUCQAJAQbgfKAIAIgMEQEHgIiEAA0AgAyAAKAIAIgFPBEAgASAAKAIEaiADSw0DCyAAKAIIIgANAAsLQQAQDCIBQX9GDQYgAiEFQfwiKAIAIgNBAWsiACABcQRAIAIgAWsgACABakEAIANrcWohBQsgBSAITSAFQf7///8HS3INBkHYIigCACIEBEBB0CIoAgAiAyAFaiIAIANNIAAgBEtyDQcLIAUQDCIAIAFHDQEMCAsgBSAGayAHcSIFQf7///8HSw0FIAUQDCIBIAAoAgAgACgCBGpGDQQgASEACyAAQX9GIAhBMGogBU1yRQRAQYAjKAIAIgEgCSAFa2pBACABa3EiAUH+////B0sEQCAAIQEMCAsgARAMQX9HBEAgASAFaiEFIAAhAQwIC0EAIAVrEAwaDAULIAAiAUF/Rw0GDAQLAAtBACEEDAcLQQAhAQwFCyABQX9HDQILQdwiQdwiKAIAQQRyNgIACyACQf7///8HSw0BIAIQDCIBQX9GQQAQDCIAQX9GciAAIAFNcg0BIAAgAWsiBSAIQShqTQ0BC0HQIkHQIigCACAFaiIANgIAQdQiKAIAIABJBEBB1CIgADYCAAsCQAJAAkBBuB8oAgAiBwRAQeAiIQADQCABIAAoAgAiAyAAKAIEIgJqRg0CIAAoAggiAA0ACwwCC0GwHygCACIAQQAgACABTRtFBEBBsB8gATYCAAtBACEAQeQiIAU2AgBB4CIgATYCAEHAH0F/NgIAQcQfQfgiKAIANgIAQewiQQA2AgADQCAAQQN0IgNB0B9qIANByB9qIgI2AgAgA0HUH2ogAjYCACAAQQFqIgBBIEcNAAtBrB8gBUEoayIDQXggAWtBB3FBACABQQhqQQdxGyIAayICNgIAQbgfIAAgAWoiADYCACAAIAJBAXI2AgQgASADakEoNgIEQbwfQYgjKAIANgIADAILIAAtAAxBCHEgAyAHS3IgASAHTXINACAAIAIgBWo2AgRBuB8gB0F4IAdrQQdxQQAgB0EIakEHcRsiAGoiAjYCAEGsH0GsHygCACAFaiIBIABrIgA2AgAgAiAAQQFyNgIEIAEgB2pBKDYCBEG8H0GIIygCADYCAAwBC0GwHygCACABSwRAQbAfIAE2AgALIAEgBWohAkHgIiEAAkACQAJAAkACQAJAA0AgAiAAKAIARwRAIAAoAggiAA0BDAILCyAALQAMQQhxRQ0BC0HgIiEAA0AgByAAKAIAIgJPBEAgAiAAKAIEaiIEIAdLDQMLIAAoAgghAAwACwALIAAgATYCACAAIAAoAgQgBWo2AgQgAUF4IAFrQQdxQQAgAUEIakEHcRtqIgkgCEEDcjYCBCACQXggAmtBB3FBACACQQhqQQdxG2oiBSAIIAlqIgZrIQIgBSAHRgRAQbgfIAY2AgBBrB9BrB8oAgAgAmoiADYCACAGIABBAXI2AgQMAwsgBUG0HygCAEYEQEG0HyAGNgIAQagfQagfKAIAIAJqIgA2AgAgBiAAQQFyNgIEIAAgBmogADYCAAwDCyAFKAIEIgBBA3FBAUYEQCAAQXhxIQcCQCAAQf8BTQRAIAUoAggiAyAAQQN2IgBBA3RByB9qRhogAyAFKAIMIgFGBEBBoB9BoB8oAgBBfiAAd3E2AgAMAgsgAyABNgIMIAEgAzYCCAwBCyAFKAIYIQgCQCAFIAUoAgwiAUcEQCAFKAIIIgAgATYCDCABIAA2AggMAQsCQCAFQRRqIgAoAgAiAw0AIAVBEGoiACgCACIDDQBBACEBDAELA0AgACEEIAMiAUEUaiIAKAIAIgMNACABQRBqIQAgASgCECIDDQALIARBADYCAAsgCEUNAAJAIAUgBSgCHCIDQQJ0QdAhaiIAKAIARgRAIAAgATYCACABDQFBpB9BpB8oAgBBfiADd3E2AgAMAgsgCEEQQRQgCCgCECAFRhtqIAE2AgAgAUUNAQsgASAINgIYIAUoAhAiAARAIAEgADYCECAAIAE2AhgLIAUoAhQiAEUNACABIAA2AhQgACABNgIYCyAFIAdqIQUgAiAHaiECCyAFIAUoAgRBfnE2AgQgBiACQQFyNgIEIAIgBmogAjYCACACQf8BTQRAIAJBA3YiAEEDdEHIH2ohAgJ/QaAfKAIAIgFBASAAdCIAcUUEQEGgHyAAIAFyNgIAIAIMAQsgAigCCAshACACIAY2AgggACAGNgIMIAYgAjYCDCAGIAA2AggMAwtBHyEAIAJB////B00EQCACQQh2IgAgAEGA/j9qQRB2QQhxIgN0IgAgAEGA4B9qQRB2QQRxIgF0IgAgAEGAgA9qQRB2QQJxIgB0QQ92IAEgA3IgAHJrIgBBAXQgAiAAQRVqdkEBcXJBHGohAAsgBiAANgIcIAZCADcCECAAQQJ0QdAhaiEEAkBBpB8oAgAiA0EBIAB0IgFxRQRAQaQfIAEgA3I2AgAgBCAGNgIAIAYgBDYCGAwBCyACQQBBGSAAQQF2ayAAQR9GG3QhACAEKAIAIQEDQCABIgMoAgRBeHEgAkYNAyAAQR12IQEgAEEBdCEAIAMgAUEEcWoiBCgCECIBDQALIAQgBjYCECAGIAM2AhgLIAYgBjYCDCAGIAY2AggMAgtBrB8gBUEoayIDQXggAWtBB3FBACABQQhqQQdxGyIAayICNgIAQbgfIAAgAWoiADYCACAAIAJBAXI2AgQgASADakEoNgIEQbwfQYgjKAIANgIAIAcgBEEnIARrQQdxQQAgBEEna0EHcRtqQS9rIgAgACAHQRBqSRsiAkEbNgIEIAJB6CIpAgA3AhAgAkHgIikCADcCCEHoIiACQQhqNgIAQeQiIAU2AgBB4CIgATYCAEHsIkEANgIAIAJBGGohAANAIABBBzYCBCAAQQhqIQEgAEEEaiEAIAEgBEkNAAsgAiAHRg0DIAIgAigCBEF+cTYCBCAHIAIgB2siBEEBcjYCBCACIAQ2AgAgBEH/AU0EQCAEQQN2IgBBA3RByB9qIQICf0GgHygCACIBQQEgAHQiAHFFBEBBoB8gACABcjYCACACDAELIAIoAggLIQAgAiAHNgIIIAAgBzYCDCAHIAI2AgwgByAANgIIDAQLQR8hACAHQgA3AhAgBEH///8HTQRAIARBCHYiACAAQYD+P2pBEHZBCHEiAnQiACAAQYDgH2pBEHZBBHEiAXQiACAAQYCAD2pBEHZBAnEiAHRBD3YgASACciAAcmsiAEEBdCAEIABBFWp2QQFxckEcaiEACyAHIAA2AhwgAEECdEHQIWohAwJAQaQfKAIAIgJBASAAdCIBcUUEQEGkHyABIAJyNgIAIAMgBzYCACAHIAM2AhgMAQsgBEEAQRkgAEEBdmsgAEEfRht0IQAgAygCACEBA0AgASICKAIEQXhxIARGDQQgAEEddiEBIABBAXQhACACIAFBBHFqIgMoAhAiAQ0ACyADIAc2AhAgByACNgIYCyAHIAc2AgwgByAHNgIIDAMLIAMoAggiACAGNgIMIAMgBjYCCCAGQQA2AhggBiADNgIMIAYgADYCCAsgCUEIaiEADAULIAIoAggiACAHNgIMIAIgBzYCCCAHQQA2AhggByACNgIMIAcgADYCCAtBrB8oAgAiACAITQ0AQawfIAAgCGsiATYCAEG4H0G4HygCACICIAhqIgA2AgAgACABQQFyNgIEIAIgCEEDcjYCBCACQQhqIQAMAwtB3B5BMDYCAEEAIQAMAgsCQCAFRQ0AAkAgBCgCHCICQQJ0QdAhaiIAKAIAIARGBEAgACABNgIAIAENAUGkHyAJQX4gAndxIgk2AgAMAgsgBUEQQRQgBSgCECAERhtqIAE2AgAgAUUNAQsgASAFNgIYIAQoAhAiAARAIAEgADYCECAAIAE2AhgLIAQoAhQiAEUNACABIAA2AhQgACABNgIYCwJAIANBD00EQCAEIAMgCGoiAEEDcjYCBCAAIARqIgAgACgCBEEBcjYCBAwBCyAEIAhBA3I2AgQgBiADQQFyNgIEIAMgBmogAzYCACADQf8BTQRAIANBA3YiAEEDdEHIH2ohAgJ/QaAfKAIAIgFBASAAdCIAcUUEQEGgHyAAIAFyNgIAIAIMAQsgAigCCAshACACIAY2AgggACAGNgIMIAYgAjYCDCAGIAA2AggMAQtBHyEAIANB////B00EQCADQQh2IgAgAEGA/j9qQRB2QQhxIgJ0IgAgAEGA4B9qQRB2QQRxIgF0IgAgAEGAgA9qQRB2QQJxIgB0QQ92IAEgAnIgAHJrIgBBAXQgAyAAQRVqdkEBcXJBHGohAAsgBiAANgIcIAZCADcCECAAQQJ0QdAhaiECAkACQCAJQQEgAHQiAXFFBEBBpB8gASAJcjYCACACIAY2AgAgBiACNgIYDAELIANBAEEZIABBAXZrIABBH0YbdCEAIAIoAgAhCANAIAgiASgCBEF4cSADRg0CIABBHXYhAiAAQQF0IQAgASACQQRxaiICKAIQIggNAAsgAiAGNgIQIAYgATYCGAsgBiAGNgIMIAYgBjYCCAwBCyABKAIIIgAgBjYCDCABIAY2AgggBkEANgIYIAYgATYCDCAGIAA2AggLIARBCGohAAwBCwJAIAtFDQACQCABKAIcIgJBAnRB0CFqIgAoAgAgAUYEQCAAIAQ2AgAgBA0BQaQfIAZBfiACd3E2AgAMAgsgC0EQQRQgCygCECABRhtqIAQ2AgAgBEUNAQsgBCALNgIYIAEoAhAiAARAIAQgADYCECAAIAQ2AhgLIAEoAhQiAEUNACAEIAA2AhQgACAENgIYCwJAIANBD00EQCABIAMgCGoiAEEDcjYCBCAAIAFqIgAgACgCBEEBcjYCBAwBCyABIAhBA3I2AgQgCSADQQFyNgIEIAMgCWogAzYCACAKBEAgCkEDdiIAQQN0QcgfaiEEQbQfKAIAIQICf0EBIAB0IgAgBXFFBEBBoB8gACAFcjYCACAEDAELIAQoAggLIQAgBCACNgIIIAAgAjYCDCACIAQ2AgwgAiAANgIIC0G0HyAJNgIAQagfIAM2AgALIAFBCGohAAsgDEEQaiQAIAALfwEDfyAAIQECQCAAQQNxBEADQCABLQAARQ0CIAFBAWoiAUEDcQ0ACwsDQCABIgJBBGohASACKAIAIgNBf3MgA0GBgoQIa3FBgIGChHhxRQ0ACyADQf8BcUUEQCACIABrDwsDQCACLQABIQMgAkEBaiIBIQIgAw0ACwsgASAAawvyAgICfwF+AkAgAkUNACAAIAJqIgNBAWsgAToAACAAIAE6AAAgAkEDSQ0AIANBAmsgAToAACAAIAE6AAEgA0EDayABOgAAIAAgAToAAiACQQdJDQAgA0EEayABOgAAIAAgAToAAyACQQlJDQAgAEEAIABrQQNxIgRqIgMgAUH/AXFBgYKECGwiATYCACADIAIgBGtBfHEiBGoiAkEEayABNgIAIARBCUkNACADIAE2AgggAyABNgIEIAJBCGsgATYCACACQQxrIAE2AgAgBEEZSQ0AIAMgATYCGCADIAE2AhQgAyABNgIQIAMgATYCDCACQRBrIAE2AgAgAkEUayABNgIAIAJBGGsgATYCACACQRxrIAE2AgAgBCADQQRxQRhyIgRrIgJBIEkNACABrUKBgICAEH4hBSADIARqIQEDQCABIAU3AxggASAFNwMQIAEgBTcDCCABIAU3AwAgAUEgaiEBIAJBIGsiAkEfSw0ACwsgAAtPAQJ/QdgeKAIAIgEgAEEDakF8cSICaiEAAkAgAkEAIAAgAU0bDQAgAD8AQRB0SwRAIAAQAUUNAQtB2B4gADYCACABDwtB3B5BMDYCAEF/C20BAX8jAEGAAmsiBSQAIARBgMAEcSACIANMckUEQCAFIAFB/wFxIAIgA2siAkGAAiACQYACSSIBGxALGiABRQRAA0AgACAFQYACEA4gAkGAAmsiAkH/AUsNAAsLIAAgBSACEA4LIAVBgAJqJAALnQIBA38gAC0AAEEgcUUEQAJAIAEhBAJAIAIgACIBKAIQIgAEfyAABQJ/IAEiACABLQBKIgNBAWsgA3I6AEogASgCACIDQQhxBEAgACADQSByNgIAQX8MAQsgAEIANwIEIAAgACgCLCIDNgIcIAAgAzYCFCAAIAMgACgCMGo2AhBBAAsNASABKAIQCyABKAIUIgVrSwRAIAEgBCACIAEoAiQRAAAaDAILAn8gASwAS0F/SgRAIAIhAANAIAIgACIDRQ0CGiAEIANBAWsiAGotAABBCkcNAAsgASAEIAMgASgCJBEAACADSQ0CIAMgBGohBCABKAIUIQUgAiADawwBCyACCyEAIAUgBCAAEAUaIAEgASgCFCAAajYCFAsLCwsKACAAQTBrQQpJC2MBAn8gAkUEQEEADwsCfyAALQAAIgMEQANAAkACQCABLQAAIgRFDQAgAkEBayICRQ0AIAMgBEYNAQsgAwwDCyABQQFqIQEgAC0AASEDIABBAWohACADDQALC0EACyABLQAAawucDQIQfhB/IwBBgBBrIhQkACAUQYAIaiABEBcgFEGACGogABAWIBQgFEGACGoQFyADBEAgFCACEBYLQQAhAEEAIQEDQCAUQYAIaiABQQd0IgNBwAByaiIVKQMAIBRBgAhqIANB4AByaiIWKQMAIBRBgAhqIANqIhcpAwAgFEGACGogA0EgcmoiGCkDACIIEAMiBIVBIBACIgUQAyIGIAiFQRgQAiEIIAggBiAFIAQgCBADIgeFQRAQAiIKEAMiEYVBPxACIQggFEGACGogA0HIAHJqIhkpAwAgFEGACGogA0HoAHJqIhopAwAgFEGACGogA0EIcmoiGykDACAUQYAIaiADQShyaiIcKQMAIgQQAyIFhUEgEAIiBhADIgsgBIVBGBACIQQgBCALIAYgBSAEEAMiC4VBEBACIhIQAyIThUE/EAIhBCAUQYAIaiADQdAAcmoiHSkDACAUQYAIaiADQfAAcmoiHikDACAUQYAIaiADQRByaiIfKQMAIBRBgAhqIANBMHJqIiApAwAiBRADIgaFQSAQAiIMEAMiDSAFhUEYEAIhBSAFIA0gDCAGIAUQAyINhUEQEAIiDBADIg6FQT8QAiEFIBRBgAhqIANB2AByaiIhKQMAIBRBgAhqIANB+AByaiIiKQMAIBRBgAhqIANBGHJqIiMpAwAgFEGACGogA0E4cmoiAykDACIGEAMiD4VBIBACIgkQAyIQIAaFQRgQAiEGIAYgECAJIA8gBhADIg+FQRAQAiIJEAMiEIVBPxACIQYgFyAHIAQQAyIHIAQgDiAHIAmFQSAQAiIHEAMiDoVBGBACIgQQAyIJNwMAICIgByAJhUEQEAIiBzcDACAdIA4gBxADIgc3AwAgHCAEIAeFQT8QAjcDACAbIAsgBRADIgQgBSAQIAQgCoVBIBACIgQQAyIHhUEYEAIiBRADIgo3AwAgFiAEIAqFQRAQAiIENwMAICEgByAEEAMiBDcDACAgIAQgBYVBPxACNwMAIB8gDSAGEAMiBCAGIBEgBCAShUEgEAIiBBADIgWFQRgQAiIGEAMiBzcDACAaIAQgB4VBEBACIgQ3AwAgFSAFIAQQAyIENwMAIAMgBCAGhUE/EAI3AwAgIyAPIAgQAyIEIAggEyAEIAyFQSAQAiIEEAMiBYVBGBACIggQAyIGNwMAIB4gBCAGhUEQEAIiBDcDACAZIAUgBBADIgQ3AwAgGCAEIAiFQT8QAjcDACABQQFqIgFBCEcNAAsDQCAAQQR0IgMgFEGACGpqIgEiFUGABGopAwAgASkDgAYgASkDACABKQOAAiIIEAMiBIVBIBACIgUQAyIGIAiFQRgQAiEIIAggBiAFIAQgCBADIgeFQRAQAiIKEAMiEYVBPxACIQggASkDiAQgASkDiAYgFEGACGogA0EIcmoiAykDACABKQOIAiIEEAMiBYVBIBACIgYQAyILIASFQRgQAiEEIAQgCyAGIAUgBBADIguFQRAQAiISEAMiE4VBPxACIQQgASkDgAUgASkDgAcgASkDgAEgASkDgAMiBRADIgaFQSAQAiIMEAMiDSAFhUEYEAIhBSAFIA0gDCAGIAUQAyINhUEQEAIiDBADIg6FQT8QAiEFIAEpA4gFIAEpA4gHIAEpA4gBIAEpA4gDIgYQAyIPhUEgEAIiCRADIhAgBoVBGBACIQYgBiAQIAkgDyAGEAMiD4VBEBACIgkQAyIQhUE/EAIhBiABIAcgBBADIgcgBCAOIAcgCYVBIBACIgcQAyIOhUEYEAIiBBADIgk3AwAgASAHIAmFQRAQAiIHNwOIByABIA4gBxADIgc3A4AFIAEgBCAHhUE/EAI3A4gCIAMgCyAFEAMiBCAFIBAgBCAKhUEgEAIiBBADIgeFQRgQAiIFEAMiCjcDACABIAQgCoVBEBACIgQ3A4AGIAEgByAEEAMiBDcDiAUgASAEIAWFQT8QAjcDgAMgASANIAYQAyIEIAYgESAEIBKFQSAQAiIEEAMiBYVBGBACIgYQAyIHNwOAASABIAQgB4VBEBACIgQ3A4gGIBUgBSAEEAMiBDcDgAQgASAEIAaFQT8QAjcDiAMgASAPIAgQAyIEIAggEyAEIAyFQSAQAiIEEAMiBYVBGBACIggQAyIGNwOIASABIAQgBoVBEBACIgQ3A4AHIAEgBSAEEAMiBDcDiAQgASAEIAiFQT8QAjcDgAIgAEEBaiIAQQhHDQALIAIgFBAXIAIgFEGACGoQFiAUQYAQaiQAC8MBAQN/IwBBQGoiAyQAIANBAEHAABALIQRBfyEDAkAgAEUgAUVyDQAgACgC5AEgAksNACAAKQNQQgBSDQAgACAANQLgARAaIAAQJUEAIQMgAEHgAGoiAiAAKALgASIFakEAQYABIAVrEAsaIAAgAhAZA0AgBCADQQN0IgVqIAAgBWopAwAQMiADQQFqIgNBCEcNAAsgASAEIAAoAuQBEAUaIARBwAAQBCACQYABEAQgAEHAABAEQQAhAwsgBEFAayQAIAML1AMBBn8jAEEQayIEJAAgBCABNgIMIwBBoAFrIgMkACADQQhqQYAYQZABEAUaIAMgADYCNCADIAA2AhwgA0F+IABrIgJB/////wcgAkH/////B0kbIgU2AjggAyAAIAVqIgA2AiQgAyAANgIYIANBCGohACMAQdABayICJAAgAiABNgLMASACQaABakEAQSgQCxogAiACKALMATYCyAECQEEAIAJByAFqIAJB0ABqIAJBoAFqEBtBAEgNACAAKAJMQQBOIQYgACgCACEBIAAsAEpBAEwEQCAAIAFBX3E2AgALIAFBIHEhBwJ/IAAoAjAEQCAAIAJByAFqIAJB0ABqIAJBoAFqEBsMAQsgAEHQADYCMCAAIAJB0ABqNgIQIAAgAjYCHCAAIAI2AhQgACgCLCEBIAAgAjYCLCAAIAJByAFqIAJB0ABqIAJBoAFqEBsgAUUNABogAEEAQQAgACgCJBEAABogAEEANgIwIAAgATYCLCAAQQA2AhwgAEEANgIQIAAoAhQaIABBADYCFEEACxogACAAKAIAIAdyNgIAIAZFDQALIAJB0AFqJAAgBQRAIAMoAhwiACAAIAMoAhhGa0EAOgAACyADQaABaiQAIARBEGokAAs0AQF/QQEhAQJAIABBCkkNAEECIQEDQCAAQeQASQ0BIAFBAWohASAAQQpuIQAMAAsACyABC4UBAQd/AkAgAC0AACIGQTBrQf8BcUEJSw0AIAYhAgNAIAQhByADQZmz5swBSw0BIAJB/wFxQTBrIgIgA0EKbCIEQX9zSw0BIAIgBGohAyAAIAdBAWoiBGoiCC0AACICQTBrQf8BcUEKSQ0ACyAGQTBGQQAgBxsNACABIAM2AgAgCCEFCyAFCzEBA38DQCAAIAJBA3QiA2oiBCAEKQMAIAEgA2opAwCFNwMAIAJBAWoiAkGAAUcNAAsLDAAgACABQYAIEAUaC14BAn8jAEFAaiICJABBfyEDAkAgAEUNACABQQFrQcAATwRAIAAQNwwBCyACQQE6AAMgAkGAAjsAASACIAE6AAAgAkEEckEAQTwQCxogACACEDwhAwsgAkFAayQAIAMLpAoCA38RfiMAQYACayIDJAADQCACQQN0IgQgA0GAAWpqIAEgBGopAAA3AwAgAkEBaiICQRBHDQALIAMgAEHAABAFIQEgACkDWEL5wvibkaOz8NsAhSELIAApA1BC6/qG2r+19sEfhSEMIAApA0hCn9j52cKR2oKbf4UhDSAAKQNAQtGFmu/6z5SH0QCFIQ5C8e30+KWn/aelfyEPQqvw0/Sv7ry3PCESQrvOqqbY0Ouzu38hEEKIkvOd/8z5hOoAIQVBACEDIAEpAzghBiABKQMYIRQgASkDMCEHIAEpAxAhFSABKQMoIQggASkDCCERIAEpAyAhCSABKQMAIQoDQCAJIAUgDiABQYABaiADQQZ0IgJBwAhqKAIAQQN0aikDACAJIAp8fCIKhUEgEAIiDnwiE4VBGBACIQUgBSATIA4gAUGAAWogAkHECGooAgBBA3RqKQMAIAUgCnx8IgqFQRAQAiIOfCIThUE/EAIhCSAIIBAgDSABQYABaiACQcgIaigCAEEDdGopAwAgCCARfHwiEYVBIBACIg18IhCFQRgQAiEFIAUgECANIAFBgAFqIAJBzAhqKAIAQQN0aikDACAFIBF8fCIRhUEQEAIiDXwiEIVBPxACIQUgEiAMIAFBgAFqIAJB0AhqKAIAQQN0aikDACAHIBV8fCIIhUEgEAIiDHwiEiAHhUEYEAIhByAHIBIgDCABQYABaiACQdQIaigCAEEDdGopAwAgByAIfHwiFYVBEBACIgx8IgiFQT8QAiEHIA8gCyABQYABaiACQdgIaigCAEEDdGopAwAgBiAUfHwiEoVBIBACIgt8Ig8gBoVBGBACIQYgBiALIAFBgAFqIAJB3AhqKAIAQQN0aikDACAGIBJ8fCIUhUEQEAIiCyAPfCIPhUE/EAIhBiAFIAggCyABQYABaiACQeAIaigCAEEDdGopAwAgBSAKfHwiCoVBIBACIgt8IgiFQRgQAiEFIAUgCCALIAFBgAFqIAJB5AhqKAIAQQN0aikDACAFIAp8fCIKhUEQEAIiC3wiEoVBPxACIQggByAPIA4gAUGAAWogAkHoCGooAgBBA3RqKQMAIAcgEXx8Ig+FQSAQAiIOfCIRhUEYEAIhBSAFIBEgDiABQYABaiACQewIaigCAEEDdGopAwAgBSAPfHwiEYVBEBACIg58Ig+FQT8QAiEHIAYgDSABQYABaiACQfAIaigCAEEDdGopAwAgBiAVfHwiBYVBIBACIg0gE3wiE4VBGBACIQYgBiATIA0gAUGAAWogAkH0CGooAgBBA3RqKQMAIAUgBnx8IhWFQRAQAiINfCIFhUE/EAIhBiAJIBAgDCABQYABaiACQfgIaigCAEEDdGopAwAgCSAUfHwiEIVBIBACIgx8IhOFQRgQAiEJIAkgEyAMIAFBgAFqIAJB/AhqKAIAQQN0aikDACAJIBB8fCIUhUEQEAIiDHwiEIVBPxACIQkgA0EBaiIDQQxHDQALIAEgDjcDYCABIAk3AyAgASANNwNoIAEgCDcDKCABIBE3AwggASAQNwNIIAEgDDcDcCABIAc3AzAgASAVNwMQIAEgEjcDUCABIAs3A3ggASAGNwM4IAEgFDcDGCABIA83A1ggASAFNwNAIAEgCjcDACAAIAogACkDAIUgBYU3AwBBASECA0AgACACQQN0IgNqIgQgASADaiIDKQMAIAQpAwCFIANBQGspAwCFNwMAIAJBAWoiAkEIRw0ACyABQYACaiQACyYBAX4gACABIAApA0AiAXwiAjcDQCAAIAApA0ggASACVq18NwNIC6AUAhB/An4jAEHQAGsiBiQAIAZByg42AkwgBkE3aiETIAZBOGohEANAAkAgDkEASA0AQf////8HIA5rIARIBEBB3B5BPTYCAEF/IQ4MAQsgBCAOaiEOCyAGKAJMIgchBAJAAkACQAJAAkACQAJAAkAgBgJ/AkAgBy0AACIFBEADQAJAAkAgBUH/AXEiBUUEQCAEIQUMAQsgBUElRw0BIAQhBQNAIAQtAAFBJUcNASAGIARBAmoiCDYCTCAFQQFqIQUgBC0AAiELIAghBCALQSVGDQALCyAFIAdrIQQgAARAIAAgByAEEA4LIAQNDSAGKAJMLAABEA8hBSAGKAJMIQQgBUUNAyAELQACQSRHDQMgBCwAAUEwayEPQQEhESAEQQNqDAQLIAYgBEEBaiIINgJMIAQtAAEhBSAIIQQMAAsACyAOIQwgAA0IIBFFDQJBASEEA0AgAyAEQQJ0aigCACIABEAgAiAEQQN0aiAAIAEQJEEBIQwgBEEBaiIEQQpHDQEMCgsLQQEhDCAEQQpPDQgDQCADIARBAnRqKAIADQggBEEBaiIEQQpHDQALDAgLQX8hDyAEQQFqCyIENgJMQQAhCAJAIAQsAAAiDUEgayIFQR9LDQBBASAFdCIFQYnRBHFFDQADQAJAIAYgBEEBaiIINgJMIAQsAAEiDUEgayIEQSBPDQBBASAEdCIEQYnRBHFFDQAgBCAFciEFIAghBAwBCwsgCCEEIAUhCAsCQCANQSpGBEAgBgJ/AkAgBCwAARAPRQ0AIAYoAkwiBC0AAkEkRw0AIAQsAAFBAnQgA2pBwAFrQQo2AgAgBCwAAUEDdCACakGAA2soAgAhCkEBIREgBEEDagwBCyARDQhBACERQQAhCiAABEAgASABKAIAIgRBBGo2AgAgBCgCACEKCyAGKAJMQQFqCyIENgJMIApBf0oNAUEAIAprIQogCEGAwAByIQgMAQsgBkHMAGoQIyIKQQBIDQYgBigCTCEEC0F/IQkCQCAELQAAQS5HDQAgBC0AAUEqRgRAAkAgBCwAAhAPRQ0AIAYoAkwiBC0AA0EkRw0AIAQsAAJBAnQgA2pBwAFrQQo2AgAgBCwAAkEDdCACakGAA2soAgAhCSAGIARBBGoiBDYCTAwCCyARDQcgAAR/IAEgASgCACIEQQRqNgIAIAQoAgAFQQALIQkgBiAGKAJMQQJqIgQ2AkwMAQsgBiAEQQFqNgJMIAZBzABqECMhCSAGKAJMIQQLQQAhBQNAIAUhEkF/IQwgBCwAAEHBAGtBOUsNByAGIARBAWoiDTYCTCAELAAAIQUgDSEEIAUgEkE6bGpBzxhqLQAAIgVBAWtBCEkNAAsgBUETRg0CIAVFDQYgD0EATgRAIAMgD0ECdGogBTYCACAGIAIgD0EDdGopAwA3A0AMBAsgAA0BC0EAIQwMBQsgBkFAayAFIAEQJCAGKAJMIQ0MAgsgD0F/Sg0DC0EAIQQgAEUNBAsgCEH//3txIgsgCCAIQYDAAHEbIQVBACEMQcAOIQ8gECEIAkACQAJAAn8CQAJAAkACQAJ/AkACQAJAAkACQAJAAkAgDUEBaywAACIEQV9xIAQgBEEPcUEDRhsgBCASGyIEQdgAaw4hBBISEhISEhISDhIPBg4ODhIGEhISEgIFAxISCRIBEhIEAAsCQCAEQcEAaw4HDhILEg4ODgALIARB0wBGDQkMEQsgBikDQCEUQcAODAULQQAhBAJAAkACQAJAAkACQAJAIBJB/wFxDggAAQIDBBcFBhcLIAYoAkAgDjYCAAwWCyAGKAJAIA42AgAMFQsgBigCQCAOrDcDAAwUCyAGKAJAIA47AQAMEwsgBigCQCAOOgAADBILIAYoAkAgDjYCAAwRCyAGKAJAIA6sNwMADBALIAlBCCAJQQhLGyEJIAVBCHIhBUH4ACEECyAQIQcgBEEgcSELIAYpA0AiFFBFBEADQCAHQQFrIgcgFKdBD3FB4BxqLQAAIAtyOgAAIBRCD1YhDSAUQgSIIRQgDQ0ACwsgBUEIcUUgBikDQFByDQMgBEEEdkHADmohD0ECIQwMAwsgECEEIAYpA0AiFFBFBEADQCAEQQFrIgQgFKdBB3FBMHI6AAAgFEIHViEHIBRCA4ghFCAHDQALCyAEIQcgBUEIcUUNAiAJIBAgB2siBEEBaiAEIAlIGyEJDAILIAYpA0AiFEJ/VwRAIAZCACAUfSIUNwNAQQEhDEHADgwBCyAFQYAQcQRAQQEhDEHBDgwBC0HCDkHADiAFQQFxIgwbCyEPIBAhBAJAIBRCgICAgBBUBEAgFCEVDAELA0AgBEEBayIEIBQgFEIKgCIVQgp+fadBMHI6AAAgFEL/////nwFWIQcgFSEUIAcNAAsLIBWnIgcEQANAIARBAWsiBCAHIAdBCm4iC0EKbGtBMHI6AAAgB0EJSyENIAshByANDQALCyAEIQcLIAVB//97cSAFIAlBf0obIQUgBikDQCIUQgBSIAlyRQRAQQAhCSAQIQcMCgsgCSAUUCAQIAdraiIEIAQgCUgbIQkMCQsCfyAJIgRBAEchCAJAAkACQCAGKAJAIgVB4xYgBRsiByIFQQNxRSAERXINAANAIAUtAABFDQIgBEEBayIEQQBHIQggBUEBaiIFQQNxRQ0BIAQNAAsLIAhFDQELAkAgBS0AAEUgBEEESXINAANAIAUoAgAiCEF/cyAIQYGChAhrcUGAgYKEeHENASAFQQRqIQUgBEEEayIEQQNLDQALCyAERQ0AA0AgBSAFLQAARQ0CGiAFQQFqIQUgBEEBayIEDQALC0EACyIEIAcgCWogBBshCCALIQUgBCAHayAJIAQbIQkMCAsgCQRAIAYoAkAMAgtBACEEIABBICAKQQAgBRANDAILIAZBADYCDCAGIAYpA0A+AgggBiAGQQhqNgJAQX8hCSAGQQhqCyEIQQAhBAJAA0AgCCgCACIHRQ0BIAZBBGogBxAiIgdBAEgiCyAHIAkgBGtLckUEQCAIQQRqIQggCSAEIAdqIgRLDQEMAgsLQX8hDCALDQULIABBICAKIAQgBRANIARFBEBBACEEDAELQQAhCCAGKAJAIQ0DQCANKAIAIgdFDQEgBkEEaiAHECIiByAIaiIIIARKDQEgACAGQQRqIAcQDiANQQRqIQ0gBCAISw0ACwsgAEEgIAogBCAFQYDAAHMQDSAKIAQgBCAKSBshBAwFCyAAIAYrA0AgCiAJIAUgBEEAEQwAIQQMBAsgBiAGKQNAPAA3QQEhCSATIQcgCyEFDAILQX8hDAsgBkHQAGokACAMDwsgAEEgIAwgCCAHayILIAkgCSALSBsiCWoiCCAKIAggCkobIgQgCCAFEA0gACAPIAwQDiAAQTAgBCAIIAVBgIAEcxANIABBMCAJIAtBABANIAAgByALEA4gAEEgIAQgCCAFQYDAAHMQDQwACwALkwIBAn8gAEUEQEFnDwsgACgCAEUEQEF/DwsCQAJ/QX4gACgCBEEESQ0AGiAAKAIIRQRAQW4gACgCDA0BGgsgACgCFCEBIAAoAhBFDQFBeiABQQhJDQAaIAAoAhhFBEBBbCAAKAIcDQEaCyAAKAIgRQRAQWsgACgCJA0BGgtBciAAKAIsIgFBCEkNABpBcSABQYCAgAFLDQAaQXIgASAAKAIwIgJBA3RJDQAaIAAoAihFBEBBdA8LIAJFBEBBcA8LQW8gAkH///8HSw0AGiAAKAI0IgFFBEBBZA8LQWMgAUH///8HSw0AGiAAKAJAIQECQCAAKAI8BEAgAQ0BQWkPC0FoIAENARoLQQALDwtBbUF6IAEbCzgBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMQQAgAigCCEH8FygCABEAABogAkEQaiQAC4MSAhN/An4jAEEwayIJJAACQCAAEBwiBA0AQWYhBCABQQJLDQAgACgCLCEDIAAoAjAhBCAAKAI4IQIgCUEANgIAIAkgAjYCBCAAKAIoIQIgCSAENgIYIAkgAjYCCCAJIARBA3QiAiADIAIgA0sbIARBAnQiAm4iAzYCECAJIANBAnQ2AhQgCSACIANsNgIMIAAoAjQhAyAJIAE2AiAgCSADNgIcIAMgBEsEQCAJIAQ2AhwLIwBB0ABrIgskAEFnIQQCQCAJIgFFIAAiA0VyDQAgASADNgIoIAMhBSABKAIMIQZBaiECAkAgASIERQ0AIAatQgqGIhVCIIinDQAgFachAgJAIAUoAjwiBQRAIAQgAiAFEQMAGiAEKAIAIQIMAQsgBCACEAkiAjYCAAtBAEFqIAIbIQILIAIiBA0AIAEoAiAhBSMAQYACayICJAAgA0UgCyIERXJFBEAgAkEQakHAABAYGiACQQxqIAMoAjAQByACQRBqIAJBDGpBBBAGGiACQQxqIAMoAgQQByACQRBqIAJBDGpBBBAGGiACQQxqIAMoAiwQByACQRBqIAJBDGpBBBAGGiACQQxqIAMoAigQByACQRBqIAJBDGpBBBAGGiACQQxqIAMoAjgQByACQRBqIAJBDGpBBBAGGiACQQxqIAUQByACQRBqIAJBDGpBBBAGGiACQQxqIAMoAgwQByACQRBqIAJBDGpBBBAGGgJAIAMoAggiBUUNACACQRBqIAUgAygCDBAGGiADLQBEQQFxRQ0AIAMoAgggAygCDBAdIANBADYCDAsgAkEMaiADKAIUEAcgAkEQaiACQQxqQQQQBhogAygCECIFBEAgAkEQaiAFIAMoAhQQBhoLIAJBDGogAygCHBAHIAJBEGogAkEMakEEEAYaAkAgAygCGCIFRQ0AIAJBEGogBSADKAIcEAYaIAMtAERBAnFFDQAgAygCGCADKAIcEB0gA0EANgIcCyACQQxqIAMoAiQQByACQRBqIAJBDGpBBBAGGiADKAIgIgUEQCACQRBqIAUgAygCJBAGGgsgAkEQaiAEQcAAEBIaCyACQYACaiQAIAtBQGtBCBAEQQAhAiMAQYAIayIDJAAgASgCGARAIARBxABqIQYgBEFAayEFA0AgBUEAEAcgBiACEAcgA0GACCAEQcgAECAgASgCACABKAIUIAJsQQp0aiADEC4gBUEBEAcgA0GACCAEQcgAECAgASgCACABKAIUIAJsQQp0akGACGogAxAuIAJBAWoiAiABKAIYSQ0ACwsgA0GACBAEIANBgAhqJAAgC0HIABAEQQAhBAsgC0HQAGokACAEDQBBZyEEAkAgCUUNACABKAIYRQ0AIwBBIGsiBSQAIAEiCygCCARAIAsoAhghBANAIAQhA0EAIQ8DQEEAIRBBACECIAMEQANAIAUgDzoAGCAFQQA2AhwgBSAFKQMYNwMIIAUgEjYCECAFIBA2AhQgBSAFKQMQNwMAIAUhBEEAIREjAEGAGGsiByQAAkAgCyIDRQ0AAkACQAJAAn8CfwJAAkACQCADKAIgQQFrDgICAQALIAQoAgAhCEEADAMLIAQoAgANA0EAIAQtAAgiDEECSQ0BGiAELQAIIghFQQF0IQwMBQsgBC0ACCEMIAQoAgALIQggBxAvIAdBgAhqEC8gByAIrTcDgAggBDUCBCEVIAcgDK1C/wGDNwOQCCAHIBU3A4gIIAcgAzUCDDcDmAggByADNQIINwOgCCAHIAM1AiA3A6gIQQELIREgCEUNAQsgBC0ACCEIQQAhDAwBCyAELQAIIghFQQF0IQwgCCARRXINACAHQYAQaiAHQYAIaiAHECZBAiEMQQAhCAsgDCADKAIQIgZPDQBBfyADKAIUIgJBAWsgAiAEKAIEbCAMaiAGIAhB/wFxbGoiCCACcBsgCGohBgNAIAhBAWsgBiAIIAJwQQFGGyEOAn8gEQRAIAxB/wBxIgJFBEAgB0GAEGogB0GACGogBxAmCyAHQYAQaiACQQN0agwBCyADKAIAIA5BCnRqCyECIAMoAhghCiACKQMAIRUgBCAMNgIMIAMhBiAVpyEUIBVCIIinIApwrSIVIBUgBDUCBCIVIAQtAAgbIAQoAgAbIhYgFVEhCgJ+IAQiAigCAEUEQCACLQAIIg1FBEAgAigCDEEBayEKQgAMAgsgBigCECANbCENIAIoAgwhAiAKBEAgAiANakEBayEKQgAMAgsgDSACRWshCkIADAELIAYoAhAhDSAGKAIUIRMCfyAKBEAgAigCDCATIA1Bf3NqagwBCyATIA1rIAIoAgxFawshCkIAIAItAAgiAkEDRg0AGiANIAJBAWpsrQshFSAVIApBAWutfCAKrSAUrSIVIBV+QiCIfkIgiH0gBjUCFIKnIQYgAygCACICIAMoAhQgFqdsQQp0aiAGQQp0aiEGIAIgCEEKdGohCgJAIAMoAgRBEEYEQCACIA5BCnRqIAYgCkEAEBEMAQsgAiAOQQp0aiECIAQoAgBFBEAgAiAGIApBABARDAELIAIgBiAKQQEQEQsgDEEBaiIMIAMoAhBPDQEgCEEBaiEIIA5BAWohBiADKAIUIQIMAAsACyAHQYAYaiQAIAsoAhgiBCECIBBBAWoiECAESQ0ACwsgAiEDIA9BAWoiD0EERw0ACyASQQFqIhIgCygCCEkNAAsLIAVBIGokAEEAIQQLIAQNACMAQYAQayIDJAAgAEUgCUVyRQRAIANBgAhqIAEoAgAgASgCFEEKdGpBgAhrEBcgASgCGEECTwRAQQEhBANAIANBgAhqIAEoAgAgASgCFCICIAIgBGxqQQp0akGACGsQFiAEQQFqIgQgASgCGEkNAAsLIAMiAkGACGohC0EAIQQDQCACIARBA3QiBWogBSALaikDABAyIARBAWoiBEGAAUcNAAsgACgCACAAKAIEIANBgAgQICADQYAIakGACBAEIANBgAgQBCABKAIAIgQgASgCDEEKdCIBEAQCQCAAKAJAIgAEQCAEIAEgABECAAwBCyAEEAgLCyADQYAQaiQAQQAhBAsgCUEwaiQAIAQLJwEBfwJAAkACQAJAIAAOAwABAgMLQdATDwtBixEPC0GeEyEBCyABC48DAQF/IwBBgANrIgQkACAEQQA2AowBIARBjAFqIAEQBwJAIAFBwABNBEAgBEGQAWogARAYQQBIDQEgBEGQAWogBEGMAWpBBBAGQQBIDQEgBEGQAWogAiADEAZBAEgNASAEQZABaiAAIAEQEhoMAQsgBEGQAWpBwAAQGEEASA0AIARBkAFqIARBjAFqQQQQBkEASA0AIARBkAFqIAIgAxAGQQBIDQAgBEGQAWogBEFAa0HAABASQQBIDQAgACAEKQNANwAAIAAgBCkDSDcACCAAIAQpA1g3ABggACAEKQNQNwAQIABBIGohACABQSBrIgJBwQBPBEADQCAEIARBQGtBwAAQBSIBQUBrQcAAIAEQMUEASA0CIAAgASkDQDcAACAAIAEpA0g3AAggACAEKQNYNwAYIAAgBCkDUDcAECAAQSBqIQAgAkEgayICQcAASw0ACwsgBCAEQUBrQcAAEAUiAUFAayACIAEQMUEASA0AIAAgAUFAayACEAUaCyAEQZABakHwARAEIARBgANqJAALAwABC5kCACAARQRAQQAPCwJ/AkAgAAR/IAFB/wBNDQECQEGgHigCACgCAEUEQCABQYB/cUGAvwNGDQMMAQsgAUH/D00EQCAAIAFBP3FBgAFyOgABIAAgAUEGdkHAAXI6AABBAgwECyABQYCwA09BACABQYBAcUGAwANHG0UEQCAAIAFBP3FBgAFyOgACIAAgAUEMdkHgAXI6AAAgACABQQZ2QT9xQYABcjoAAUEDDAQLIAFBgIAEa0H//z9NBEAgACABQT9xQYABcjoAAyAAIAFBEnZB8AFyOgAAIAAgAUEGdkE/cUGAAXI6AAIgACABQQx2QT9xQYABcjoAAUEEDAQLC0HcHkEZNgIAQX8FQQELDAELIAAgAToAAEEBCwtQAQN/AkAgACgCACwAABAPRQRADAELA0AgACgCACICLAAAIQMgACACQQFqNgIAIAEgA2pBMGshASACLAABEA9FDQEgAUEKbCEBDAALAAsgAQu7AgACQCABQRRLDQACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDgoAAQIDBAUGBwgJCgsgAiACKAIAIgFBBGo2AgAgACABKAIANgIADwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFB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AUHjFEEDEBANACABQQNqIANBDGoQFSIBRQ0AIAAgAygCDDYCKCABQecUQQMQEA0AIAFBA2ogA0EMahAVIgFFDQAgACADKAIMIgQ2AjAgACAENgI0IAEtAABBJEcNACADIAc2AgwgACgCECADQQxqIAFBAWoQLCIBRQ0AIAAgAygCDDYCFCABLQAAQSRHDQAgAyAGNgIMIAAoAgAgA0EMaiABQQFqECwiAUUNACAAIAMoAgw2AgQgAEEANgJEIABCADcCPCAAQgA3AhggAEIANwIgIAAQHCICDQBBYEEAIAEtAAAbIQILIANBEGokACACCykBAn8DQCAAIAJBA3QiA2ogASADaikAADcDACACQQFqIgJBgAFHDQALCwwAIABBAEGACBALGgtlAQJ/IAAgAhAeIgIEfyACBUFdQQACfyAAKAIAIQRBACECIAAoAgQiAAR/A0AgAyACIARqLQAAIAEgAmotAABzciEDIAJBAWoiAiAARw0ACyADQQFrQQh2QQFxQQFrBUEACwsbCwtdAQJ/IwBB8AFrIgMkAEF/IQQCQCACRSAARSABRXJyIAFBwABLcg0AIAMgARAYQQBIDQAgAyACQcAAEAZBAEgNACADIAAgARASIQQLIANB8AEQBCADQfABaiQAIAQLCQAgACABNwAACxAAIwAgAGtBcHEiACQAIAALMwEBfyAAKAIUIgMgASACIAAoAhAgA2siASABIAJLGyIBEAUaIAAgACgCFCABajYCFCACC9oBAQR/IwBB0ABrIggkAAJAIABFBEBBYCEADAELIAggABAKIgk2AgwgCCAJNgIcIAggCRAJIgo2AhggCCAJEAkiCzYCCEEAIQkCQAJAIApFIAtFcg0AIAggAjYCFCAIIAE2AhAgCEEIaiAAIAcQLSIADQEgCCgCCCEJIAggCCgCDBAJIgA2AgggAEUNACAIIAY2AiwgCCAFNgIoIAggBDYCJCAIIAM2AiAgCEEIaiAJIAcQMCEADAELQWohAAsgCCgCGBAIIAgoAggQCCAJEAgLIAhB0ABqJAAgAAuQAgEDfyMAQdAAayIRJABBfiETAkAgCEEESQ0AIAgQCSISRQRAQWohEwwBCyARQQA2AkwgEUIANwJEIBEgAjYCPCARIAI2AjggESABNgI0IBEgADYCMCARIA82AiwgESAONgIoIBEgDTYCJCAR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IGxvbmcgb3IgdG9vIHNob3J0AE1pc3NpbmcgYXJndW1lbnRzAFRvbyBtYW55IGxhbmVzAFRvbyBmZXcgbGFuZXMAVG9vIG1hbnkgdGhyZWFkcwBOb3QgZW5vdWdoIHRocmVhZHMATWVtb3J5IGFsbG9jYXRpb24gZXJyb3IATWVtb3J5IGNvc3QgaXMgdG9vIHNtYWxsAFRpbWUgY29zdCBpcyB0b28gc21hbGwAYXJnb24yaQBBcmdvbjJpAFRoZSBwYXNzd29yZCBkb2VzIG5vdCBtYXRjaCB0aGUgc3VwcGxpZWQgaGFzaABPdXRwdXQgcG9pbnRlciBtaXNtYXRjaABPdXRwdXQgaXMgdG9vIGxvbmcAU2FsdCBpcyB0b28gbG9uZwBTZWNyZXQgaXMgdG9vIGxvbmcAUGFzc3dvcmQgaXMgdG9vIGxvbmcAQXNzb2NpYXRlZCBkYXRhIGlzIHRvbyBsb25nAFRocmVhZGluZyBmYWlsdXJlAE1lbW9yeSBjb3N0IGlzIHRvbyBsYXJnZQBUaW1lIGNvc3QgaXMgdG9vIGxhcmdlAFVua25vd24gZXJyb3IgY29kZQBhcmdvbjJpZABBcmdvbjJpZABFbmNvZGluZyBmYWlsZWQARGVjb2RpbmcgZmFpbGVkAGFyZ29uMmQAQXJnb24yZABBcmdvbjJfQ29udGV4dCBjb250ZXh0IGlzIE5VTEwAT3V0cHV0IHBvaW50ZXIgaXMgTlVMTABUaGUgYWxsb2NhdGUgbWVtb3J5IGNhbGxiYWNrIGlzIE5VTEwAVGhlIGZyZWUgbWVtb3J5IGNhbGxiYWNrIGlzIE5VTEwAT0sAJHY9ACx0PQAscD0AJG09AFRoZXJlIGlzIG5vIHN1Y2ggdmVyc2lvbiBvZiBBcmdvbjIAU2FsdCBwb2ludGVyIGlzIE5VTEwsIGJ1dCBzYWx0IGxlbmd0aCBpcyBub3QgMABTZWNyZXQgcG9pbnRlciBpcyBOVUxMLCBidXQgc2VjcmV0IGxlbmd0aCBpcyBub3QgMABQYXNzd29yZCBwb2ludGVyIGlzIE5VTEwsIGJ1dCBwYXNzd29yZCBsZW5ndGggaXMgbm90IDAAQXNzb2NpYXRlZCBkYXRhIHBvaW50ZXIgaXMgTlVMTCwgYnV0IGFkIGxlbmd0aCBpcyBub3QgMAAobnVsbCkAAACbCAAAuwcAAEkJAADACQAAsAkAAPAHAAAfCAAAMAgAAMkIAABvCgAA4AkAABYKAAA7CgAAQwgAACsLAADBCgAAkgoAAPQKAAACCAAAEQgAAFsJAABbCAAAdAkAAHQIAAAFCQAAdAcAAC0JAACeBwAA9AgAAGIHAAAYCQAAiAcAAOEIAABOBwAA/wkAAFwKAAABAEGkGAsBAgBByxgLBf//////AEGQGQtBEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAEACQsLAAAJBgsAAAsABhEAAAAREREAQeEZCyELAAAAAAAAAAARAAoKERERAAoAAAIACQsAAAAJAAsAAAsAQZsaCwEMAEGnGgsVDAAAAAAMAAAAAAkMAAAAAAAMAAAMAEHVGgsBDgBB4RoLFQ0AAAAEDQAAAAAJDgAAAAAADgAADgBBjxsLARAAQZsbCx4PAAAAAA8AAAAACRAAAAAAABAAABAAABIAAAASEhIAQdIbCw4SAAAAEhISAAAAAAAACQBBgxwLAQsAQY8cCxUKAAAAAAoAAAAACQsAAAAAAAsAAAsAQb0cCwEMAEHJHAsnDAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAwMTIzNDU2Nzg5QUJDREVGAEHwHAsBAQBBoB4LAogPAEHYHgsDkBFQ"},145(){},967(){}},n={};function r(s){var o=n[s];if(o!==void 0)return o.exports;var f=n[s]={exports:{}};return e[s].call(f.exports,f,f.exports,r),f.exports}return r(631)})(),Ko=qo});var Un=class a{verbose=0;mockMode=!1;static#e=null;proxyUrl=null;#t=null;#n=!1;#r=0;#i=["time.google.com","time.cloudflare.com","pool.ntp.org"];constructor(){if(a.#e)return a.#e;a.#e=this}static get instance(){return a.#e||new a}static get time(){return a.instance.time}get time(){return this.mockMode?Date.now():this.#t===null?null:Date.now()+Math.round(this.#t)}async sync(t){if(t!==void 0&&(this.verbose=t),this.mockMode)return Date.now();if(this.#n){for(;this.#n;)await new Promise(e=>setTimeout(e,50));return this.time}this.#n=!0;try{let e=await this.#s();return e.length===0?(console.warn("[Clock] All NTP sources failed, using local time"),this.#t=0,this.time):(this.#t=this.#a(e),this.#r=Date.now(),e.length<this.#i.length&&setTimeout(()=>this.#c(),100),this.time)}catch(e){return console.error("[Clock] Sync failed:",e),this.#t=0,this.time}finally{this.#n=!1}}get status(){return this.mockMode?{synchronized:!0,syncing:!1,offset:0,lastSync:Date.now(),age:0}:{synchronized:this.#t!==null,syncing:this.#n,offset:this.#t,lastSync:this.#r,age:this.#r?Date.now()-this.#r:null}}async#s(){if(this.proxyUrl){let r=await this.#A();return r?[r]:[]}let t=this.#i.map(r=>this.#o(r)),e=await Promise.allSettled(t),n=[];for(let r of e)r.status==="fulfilled"&&n.push(r.value);return n}async#o(t){let e=new AbortController,n=setTimeout(()=>e.abort(),2e3);try{let r=Date.now(),s=await fetch(`https://${t}`,{method:"HEAD",signal:e.signal,cache:"no-cache"}),o=(Date.now()-r)/2;if(!s.ok)throw new Error(`HTTP ${s.status}`);let f=new Date(s.headers.get("date")).getTime();if(isNaN(f))throw new Error("Invalid date header");return{source:t,serverTime:f+o,localTime:Date.now(),latency:o*2}}finally{clearTimeout(n)}}async#A(){let t=new AbortController,e=setTimeout(()=>t.abort(),2e3);try{let n=Date.now(),r=await fetch(this.proxyUrl,{signal:t.signal}),s=(Date.now()-n)/2;return{source:"proxy",serverTime:(await r.json()).time+s,localTime:Date.now(),latency:s*2}}finally{clearTimeout(e)}}#a(t){if(t.length===1)return t[0].serverTime-t[0].localTime;t.sort((r,s)=>r.latency-s.latency);let e=[];for(let r of t)e.push(r.serverTime-r.localTime);e.sort((r,s)=>r-s);let n=Math.floor(e.length/2);return e.length%2===0?(e[n-1]+e[n])/2:e[n]}async#c(){if(!this.#n)try{let t=await this.#s();if(t.length===0)return;let e=this.#a(t);Math.abs(e-this.#t)>100&&(this.#t=e)}catch(t){this.verbose&&console.warn("[Clock] Background refine failed:",t)}}},ct=Un.instance;await Mt();await Mt();var xs=1e4,Ds=36e5,_t={VALID_SIGNATURE:1e4,VALID_POW:3e5,UNICAST_RELAYED:5e3,WRONG_SIGNATURE:-6e5,WRONG_POW:-1e8,WRONG_SERIALIZATION:-6e4,GOSSIP_FLOOD:-6e4,UNICAST_FLOOD:-3e4,HOPS_EXCEEDED:-3e5,UNICAST_INVALID_ROUTE:-6e4,FAILED_HANDSHAKE:-6e5,WRONG_LENGTH:-6e5},Ze=class{id;cryptoCodex;verbose;trustBalances={};manualBanList=new Set;bytesCounters={gossip:{},unicast:{}};bytesCounterResetIn=0;constructor(t,e,n=0){this.id=t,this.cryptoCodex=e,this.verbose=n}tick(){for(let t in this.trustBalances){let e=this.trustBalances[t];e!==0&&(e=e<0?Math.min(0,e+1e3):Math.max(0,e-100))}this.bytesCounterResetIn-=1e3,!(this.bytesCounterResetIn>0)&&(this.bytesCounterResetIn=xs,this.bytesCounters={gossip:{},unicast:{}})}countPeerAction(t,e){if(_t[e])return this.adjustTrust(t,_t[e])}adjustTrust(t,e,n="na"){t!==this.id&&(e&&(this.trustBalances[t]=Math.min(Ds,(this.trustBalances[t]||0)+e)),e&&this.verbose>3&&console.log(`%c(Arbiter: ${this.id}) ${t} +${e}ms (${n}). Updated: ${this.trustBalances[t]}ms.`,lt.ARBITER),this.isBanished(t)&&this.verbose>1&&console.log(`%c(Arbiter: ${this.id}) Peer ${t} is now banished.`,lt.ARBITER))}setBanished(t){this.manualBanList.has(t)||this.manualBanList.add(t)}isBanished(t){return Bt.MANUAL_BAN_MODE?this.manualBanList.has(t):(this.trustBalances[t]||0)<0}countMessageBytes(t,e,n){this.bytesCounters[n][t]||(this.bytesCounters[n][t]=0),this.bytesCounters[n][t]+=e;let[r,s]=n==="gossip"?[Qt.MAX_BYTES_PER_PERIOD,_t.GOSSIP_FLOOD]:[Ct.MAX_BYTES_PER_PERIOD,_t.UNICAST_FLOOD];return this.bytesCounters[n][t]<r?!0:this.adjustTrust(t,s,`Message ${n} flood detected`)}async digestMessage(t,e,n,r=.01){let{senderId:s,pubkey:o,topic:f,expectedEnd:h}=e;if(!(!this.#e(t,e,n)||!this.#t(t,f?"gossip":"unicast",n,h)||!(f?this.#n(t,e):this.#r(t,e)))&&!(this.isBanished(t)||this.isBanished(s)))return this.trustBalances[s]>_t.VALID_POW||Math.random()<r&&await this.#i(s,o),!0}#e(t,e,n){try{let{pubkey:r,signature:s,signatureStart:o}=e,f=n.subarray(0,o);if(!this.cryptoCodex.verifySignature(r,f,s))throw new Error("Gossip signature invalid");return this.adjustTrust(t,_t.VALID_SIGNATURE,"Gossip signature valid"),!0}catch(r){this.verbose>1&&console.error(`%c(Arbiter: ${this.id}) Error during signature verification from ${t}: ${r.stack}`,lt.ARBITER),this.verbose>2&&console.log(`%c(Arbiter) signatureControl() error details: ${e}`,lt.ARBITER)}this.adjustTrust(t,_t.WRONG_SIGNATURE,"Gossip signature invalid")}#t(t,e,n,r){if(!r||n.length===r)return!0;this.adjustTrust(t,_t.WRONG_LENGTH,`${e} message length mismatch`)}#n(t,e){if(e.HOPS<=(Qt.HOPS[e.topic]||Qt.HOPS.default))return!0;this.adjustTrust(t,_t.HOPS_EXCEEDED,"Gossip HOPS exceeded")}#r(t,e){if(e.route.length<=Ct.MAX_HOPS)return!0;this.adjustTrust(t,_t.HOPS_EXCEEDED,"Unicast HOPS exceeded")}async#i(t,e){await this.cryptoCodex.pubkeyDifficultyCheck(e)?this.adjustTrust(t,_t.VALID_POW,"Gossip PoW valid"):this.adjustTrust(t,_t.WRONG_POW,"Gossip PoW invalid")}};await Mt();var vs;function Ce(a,t=0){let e=typeof a=="string"?(vs??=new TextEncoder).encode(a):a,n=e,r=t+374761393&4294967295,s=0;if(n.length>=16){let f=[t+2654435761+2246822519&4294967295,t+2246822519&4294967295,t+0&4294967295,t-2654435761&4294967295],h=e,c=h.length-16,u=0;for(s=0;(s&4294967280)<=c;s+=4){let I=s,l=h[I+0]+(h[I+1]<<8),C=h[I+2]+(h[I+3]<<8),B=l*2246822519+(C*2246822519<<16),y=f[u]+B&4294967295;y=y<<13|y>>>19;let m=y&65535,g=y>>>16;f[u]=m*2654435761+(g*2654435761<<16)&4294967295,u=u+1&3}r=(f[0]<<1|f[0]>>>31)+(f[1]<<7|f[1]>>>25)+(f[2]<<12|f[2]>>>20)+(f[3]<<18|f[3]>>>14)&4294967295}r=r+e.length&4294967295;let o=e.length-4;for(;s<=o;s+=4){let f=s,h=n[f+0]+(n[f+1]<<8),c=n[f+2]+(n[f+3]<<8),u=h*3266489917+(c*3266489917<<16);r=r+u&4294967295,r=r<<17|r>>>15,r=(r&65535)*668265263+((r>>>16)*668265263<<16)&4294967295}for(;s<n.length;++s){let f=n[s];r=r+f*374761393,r=r<<11|r>>>21,r=(r&65535)*2654435761+((r>>>16)*2654435761<<16)&4294967295}return r=r^r>>>15,r=((r&65535)*2246822519&4294967295)+((r>>>16)*2246822519<<16),r=r^r>>>13,r=((r&65535)*3266489917&4294967295)+((r>>>16)*3266489917<<16),r=r^r>>>16,r<0?r+4294967296:r}var ze=class{id;wrtc;verbose;stunUrls;constructor(t,e,n=0){this.id=t,this.verbose=n,this.stunUrls=e}onSignalAnswer=null;onConnect=null;offerInstanceByExpiration={};creatingOffer=!1;offerCreationTimeout=null;offersToCreate=St.MAX_SDP_OFFERS;offers={};assignTransportWrtc(t){this.wrtc=t}tick(){let t=ct.time;for(let s in this.offerInstanceByExpiration){let o=this.offerInstanceByExpiration[s];t<s||(o?.destroy(),delete this.offerInstanceByExpiration[s],this.creatingOffer=!1)}for(let s in this.offers){let o=this.offers[s];if(o.offererInstance.destroyed){delete this.offers[s];continue}if(o.isUsed){delete this.offers[s];continue}o.timestamp+St.SDP_OFFER_EXPIRATION>t||(o.offererInstance?.destroy(),delete this.offers[s])}let e=0;for(let s in this.offers){e++;let o=this.offers[s];if(o.isDigestingOneAnswer){o.isDigestingOneAnswer=!1;continue}if(o.offererInstance.destroyed)continue;let f=o.answers.filter(u=>!u.used);if(!f.length)continue;let h=f.reduce((u,I)=>u.timestamp>I.timestamp?u:I);if(!h)continue;h.used=!0;let c=t-h.timestamp;c>Bt.CONNECTION_UPGRADE_TIMEOUT/2||(o.offererInstance.signal(h.signal),o.isDigestingOneAnswer=!0,this.verbose>2&&console.log(`(${this.id}) Using answer from ${h.peerId} for offer ${s} (received since ${c} ms)`))}if(this.creatingOffer||e>=this.offersToCreate)return;this.creatingOffer=!0;let n=t+(St.SIGNAL_CREATION_TIMEOUT||8e3),r=this.#e(n);this.offerInstanceByExpiration[n]=r}#e(t){let e=St.ICE_COMPLETE_TIMEOUT||1e3,n=new St.PEER({initiator:!0,trickle:!1,iceCompleteTimeout:e,wrtc:this.wrtc,config:{iceServers:this.stunUrls}});return n.on("error",r=>this.#n(r)),n.on("signal",r=>{let{candidate:s,type:o}=r;if(!r||s)throw new Error("Unexpected signal data from offerer instance: "+JSON.stringify(r));if(o!=="offer")throw new Error("Unexpected signal type from offerer instance: "+o);delete this.offerInstanceByExpiration[t];let f=Ce(JSON.stringify(r));n.on("connect",()=>{this.offers[f]&&(this.offers[f].isUsed=!0),this.onConnect(void 0,n)}),this.offers[f]={timestamp:ct.time,sentCounter:0,signal:r,offererInstance:n,answers:[],answerers:{},isUsed:!1},this.creatingOffer=!1}),n}#t(t,e="",n=2,r="includes"){return r[0]==="i"&&!t.message.includes(e)?!1:t.message.startsWith(e)?(this.verbose>=n&&console.info(`%cOfferManager => ${t.message}`,lt.PEER_STORE),!0):!1}#n=t=>{this.verbose<1||this.#t(t,"Ice connection failed",2)||this.#t(t,"Connection failed",2)||this.#t(t,"Remote transport instance",3,"startsWith")||this.#t(t,"Simulated failure",4,"startsWith")||this.#t(t,"No peer found",4,"startsWith")||this.#t(t,"Missing transport instance",2,"startsWith")||this.#t(t,"Failed to create answer",2,"startsWith")||this.#t(t,"Transport instance",3,"startsWith")||this.#t(t,"cannot signal after peer is destroyed",3,"startsWith")||this.#t(t,"No pending",3)||this.#t(t,"is already linked",3)||this.#t(t,"There is already a pending",3)||this.#t(t,"closed the connection",3)||this.#t(t,"No transport instance found for id:",3)||this.verbose>0&&console.error("transportInstance ERROR => ",t.stack)};bestReadyOffer(t=0,e=!0){let n=null,r=null,s=null;for(let o in this.offers){let f=this.offers[o],{isUsed:h,sentCounter:c,signal:u,timestamp:I}=f;if(h||c>t)continue;let l=ct.time-I;if(!(e&&l>St.SDP_OFFER_EXPIRATION/2)&&!(s&&l>s)){n=f,r=o,s=l;break}}return{offerHash:r,readyOffer:n,since:s}}addSignalAnswer(t,e,n,r){!e||e.type!=="answer"||!n||!this.offers[n]||this.offers[n].answerers[t]||(this.offers[n].answerers[t]=!0,this.offers[n].answers.push({peerId:t,signal:e,timestamp:r}),this.verbose>3&&console.log(`(OfferManager) Added answer from ${t} for offer ${n}`))}getTransportInstanceForSignal(t,e,n){try{if(!e||!e.type||!e.sdp)throw new Error("Wrong remote SDP provided");let{type:r,sdp:s}=e;if(r!=="offer"&&r!=="answer")throw new Error("Invalid remote SDP type");if(r==="offer"&&!s)throw new Error("No SDP in the remote SDP offer");if(r==="answer"&&!s)throw new Error("No SDP in the remote SDP answer");if(r==="answer"){let h=n?this.offers[n]?.offererInstance:null;if(!h)throw new Error("No pending offer found for the given offer hash to accept the answer");return h}let o=St.ICE_COMPLETE_TIMEOUT||1e3,f=new St.PEER({initiator:!1,trickle:!1,iceCompleteTimeout:o,wrtc:this.wrtc,config:{iceServers:this.stunUrls}});return f.on("error",h=>this.#n(h)),f.on("signal",h=>this.onSignalAnswer(t,h,n)),f.on("connect",()=>this.onConnect(t,f)),f}catch(r){if(r.message.startsWith("No pending offer found")&&this.verbose<2)return null;if(this.verbose>1&&r.message.startsWith("No pending offer found"))return console.info(`%c${r.message}`,lt.PEER_STORE);this.verbose>0&&console.error(r.stack)}}destroy(){for(let t in this.offers)this.offers[t].offererInstance?.destroy()}};await Mt();var{SANDBOX:gA,ICE_CANDIDATE_EMITTER:lA,TEST_WS_EVENT_MANAGER:dA}=Ft.USE_TEST_TRANSPORTS?await Gn().then(()=>On):{},Hn=class{neighbors;connectionsCount;constructor(t={}){this.neighbors=t,this.connectionsCount=Object.keys(t).length}setNeighbor(t,e=ct.time){this.neighbors[t]||this.connectionsCount++,this.neighbors[t]=e}unsetNeighbor(t){this.neighbors[t]&&this.connectionsCount--,delete this.neighbors[t]}};var re=class{peerId;transportInstance;isWebSocket;direction;pendingUntil;connStartTime;constructor(t,e,n,r=!1){this.peerId=t,this.transportInstance=e,this.isWebSocket=r,this.direction=n,this.pendingUntil=ct.time+Bt.CONNECTION_UPGRADE_TIMEOUT}setConnected(){this.connStartTime=ct.time,this.pendingUntil=0}getConnectionDuration(){return this.connStartTime?ct.time-this.connStartTime:0}close(){this.isWebSocket?this.transportInstance?.close():this.transportInstance?.destroy()}},sn=class{id;cryptoCodex;offerManager;arbiter;verbose;isDestroy=!1;neighborsList=[];connecting={};connected={};known={};knownCount=0;privacy={};kick={};callbacks={connect:[(t,e)=>this.#e(t,e)],disconnect:[(t,e)=>this.#t(t,e)],signal:[],data:[]};constructor(t,e,n,r,s=0){this.id=t,this.cryptoCodex=e,this.offerManager=n,this.arbiter=r,this.verbose=s,this.offerManager.onSignalAnswer=(o,f,h)=>{if(!(this.isDestroy||this.isKicked(o)||this.arbiter.isBanished(o)))for(let c of this.callbacks.signal)c(o,{signal:f,offerHash:h})},this.offerManager.onConnect=(o,f)=>{if(this.isDestroy)return f?.destroy();if(o===this.id)throw new Error(`Refusing to connect to self (${this.id}).`);let h=o;if(f.on("close",()=>{if(h)for(let c of this.callbacks.disconnect)c(h,f.initiator?"out":"in")}),f.on("data",c=>{if(h)for(let u of this.callbacks.data)u(h,c);else{let u=new Uint8Array(c);if(u[0]>127)return;let{route:I,type:l,neighborsList:C}=e.readUnicastMessage(u)||{};if(l!=="handshake"||I.length!==2||I[1]!==this.id)return;h=I[0],this.digestPeerNeighbors(h,C);for(let B of this.callbacks.connect)B(h,"out")}}),o)for(let c of this.callbacks.connect)c(o,"in")}}get publicNeighborsList(){return this.neighborsList.filter(t=>this.cryptoCodex.isPublicNode(t))}get standardNeighborsList(){return this.neighborsList.filter(t=>!this.cryptoCodex.isPublicNode(t))}#e(t,e){if(!this.connecting[t]?.[e])return this.verbose>=3?console.info(`%cPeer with ID ${t} is not connecting.`,lt.PEER_STORE):null;let n=this.connecting[t][e];if(this.#n(t,"connecting",e),this.isKicked(t))return this.verbose>=3&&console.info(`%c(${this.id}) Connect => Peer with ID ${t} is kicked. => close()`,lt.PEER_STORE),n.close();if(this.connected[t])return this.verbose>1&&console.warn(`%c(${this.id}) Connect => Peer with ID ${t} is already connected. => close()`,lt.PEER_STORE),n.close();n.setConnected(),this.connected[t]=n,this.neighborsList.push(t),this.#r(this.id,t)}#t(t,e){this.#n(t,"connected",e)}#n(t,e="both",n="both"){if(!t&&t===this.id)return;let[r,s]=[this.connecting[t],this.connected[t]];if(!r&&!s||(e!=="connecting"&&(s?.direction===n||n==="both")&&(s?.close(),delete this.connected[t],this.neighborsList=Object.keys(this.connected),this.#i(this.id,t)),e==="connected"))return;let o=n==="both"?["out","in"]:[n];for(let f of o)delete r?.[f];this.connecting[t]?.in||this.connecting[t]?.out||delete this.connecting[t]}#r(t="toto",e="tutu"){for(let n of[t,e])this.known[n]||(this.known[n]=new Hn,this.knownCount++),this.known[n].setNeighbor(n===t?e:t)}#i(t="toto",e="tutu"){for(let n of[t,e])this.known[n]&&(this.known[n].unsetNeighbor(n===t?e:t),!(this.known[n].connectionsCount>0)&&(delete this.known[n],this.knownCount--))}cleanupExpired(t=!0){let e=ct.time;for(let n of["in","out"])for(let r in this.connecting){if(!this.connecting[r][n])continue;let s=this.connected[r]?1e4:0;this.connecting[r][n].pendingUntil+s>e||(this.verbose>=4&&!this.connected[r]&&console.info(`%c(${this.id}) Pending ${n} connection to peer ${r} expired.`,lt.PEER_STORE),this.verbose>0&&this.connected[r]?.direction===n&&console.info(`%c(${this.id}) Pending ${n} connection to peer ${r} expired (already connected WARNING!).`,"color: white;"),this.connecting[r]?.out?.isWebSocket&&this.connecting[r].out.close(),this.connecting[r]?.in?.close(),this.#n(r,"connecting",n))}t&&(this.neighborsList=Object.keys(this.connected),this.digestPeerNeighbors(this.id,this.neighborsList))}on(t,e){if(!this.callbacks[t])throw new Error(`Unknown callback type: ${t}`);this.callbacks[t].push(e)}getUpdatedPeerConnectionsCount(t,e=!0){let n=ct.time,r=0,s=this.known[t]?.neighbors||{};for(let o in s){if(o!==this.id&&n-s[o]>pt.PEER_LINK_EXPIRATION){this.#i(t,o);continue}e?r++:this.cryptoCodex.isPublicNode(o)||r++}return r}addConnectingPeer(t,e,n){if(t===this.id)throw new Error(`Refusing to connect to self (${this.id}).`);let r=e.type==="offer"?"in":"out";if(this.connecting[t]?.[r])return;let s=this.offerManager.getTransportInstanceForSignal(t,e,n);return s?(this.connecting[t]||(this.connecting[t]={}),this.connecting[t][r]=new re(t,s,r),!0):this.verbose>3?console.info(`%cFailed to get transport instance for signal from ${t}.`,lt.PEER_STORE):null}assignSignal(t,e,n,r=ct.time){let s=this.connecting[t]?.[e.type==="offer"?"in":"out"];try{if(s?.isWebSocket)throw new Error(`Cannot assign signal for ID ${t}. (WebSocket)`);e.type==="answer"?this.offerManager.addSignalAnswer(t,e,n,r):s.transportInstance.signal(e)}catch(o){console.error(`Error signaling ${e?.type} for ${t}:`,o.stack)}}kickPeer(t,e=6e4,n){e&&(this.kick[t]=ct.time+e),this.#n(t,"both"),this.verbose>1&&console.log(`%c(${this.id}) Kicked peer ${t} for ${e/1e3}s. ${n?"| Reason: "+n:""}`,"color: green;")}isKicked(t){return this.kick[t]&&this.kick[t]>ct.time}digestValidRoute(t=[]){for(let e=1;e<t.length;e++)this.#r(t[e-1],t[e])}digestPeerNeighbors(t,e=[]){if(!(!t||!Array.isArray(e))){for(let n in this.known[t]?.neighbors||{})e.includes(n)||this.#i(t,n);for(let n of e)this.#r(t,n)}}destroy(){this.isDestroy=!0;for(let[t,e]of Object.entries(this.connected))this.#n(t),e.close();for(let[t,e]of Object.entries(this.connecting))this.#n(t),e.in?.close(),e.out?.close();this.offerManager.destroy()}};await Mt();var on=class{cache={};peerStore;constructor(t,e){this.id=t,this.peerStore=e}buildRoutes(t,e=5,n=3,r=1728,s=!0,o=3){if(this.id===t)throw new Error("Cannot build route to self");if(this.peerStore.connected[t])return{routes:[{path:[this.id,t]}],success:!0,nodesExplored:1};if(!this.peerStore.known[t])return this.#n(t);if(this.cache[t]&&this.#e(this.cache[t]))return{routes:this.cache[t],success:!0,nodesExplored:0};let f=this.#r(t,n,r,o);if(!f.success)return{routes:[],success:!1,nodesExplored:f.nodesExplored};let c=this.#t(f.paths,s).slice(0,e);return this.cache[t]=c,{routes:c,success:!0,nodesExplored:f.nodesExplored}}#e(t){for(let{path:e}of t)for(let n=1;n<e.length;n++){let r=e[n-1],s=e[n];if(r===this.id)if(this.peerStore.connected[s]){if(!this.peerStore.known[r]?.neighbors?.[s])return!1}else return!1}return!0}#t(t,e){let n=[];for(let r of t)n.push({path:r,hops:r.length-1});return e&&n.sort((r,s)=>r.hops-s.hops),n}#n(t){let e=[],n=this.peerStore.neighborsList,r=[...Array(n.length).keys()].sort(()=>Math.random()-.5);for(let s of r)e.push({path:[this.id,n[s],t],hops:0,score:0});return e.length===0?{routes:[],success:!1,nodesExplored:0}:{routes:e,success:"blind",nodesExplored:e.length}}#r(t,e,n,r){let s=[],o=0,f=[{node:this.id,path:[this.id],pathSet:new Set([this.id]),depth:0}],h=new Map;h.set(this.id,[this.id]);let c=[{node:t,path:[t],pathSet:new Set([t]),depth:0}],u=new Map;u.set(t,[t]);let I=Math.ceil(e/2);for(;(f.length>0||c.length>0)&&o<n;){if(f.length>0){let l=this.#i(f,h,u,I);for(let C of l){let B=this.#s(h.get(C),u.get(C));if(s.push(B),!(B.length-1>r))return{success:!0,paths:s,nodesExplored:o}}o++}if(c.length>0){let l=this.#i(c,u,h,I);for(let C of l){let B=this.#s(h.get(C),u.get(C));if(s.push(B),!(B.length-1>r))return{success:!0,paths:s,nodesExplored:o}}o++}}return{success:s.length>0,paths:s,nodesExplored:o}}#i(t,e,n,r){if(t.length===0)return[];let{node:s,path:o,pathSet:f,depth:h}=t.shift();if(h>=r)return[];let c=[];function u(I){if(f.has(I))return;let l=h+1;if(n.has(I)&&c.push(I),e.has(I))return;let C=[...o,I],B=new Set(f).add(I);e.set(I,C),t.push({node:I,path:C,pathSet:B,depth:l})}if(s===this.id)for(let I of this.peerStore.neighborsList)u(I);else for(let I in this.peerStore.known[s]?.neighbors||{})u(I);return c}#s(t,e){let n=t.length+e.length-1,r=new Array(n),s=0;for(let o of t)r[s++]=o;for(let o=e.length-2;o>=0;o--)r[s++]=e[o];return r}};var Ns=on,ke=class{type="message";timestamp;neighborsList;route;pubkey;data;signature;signatureStart;expectedEnd;rerouterPubkey;newRoute;rerouterSignature;get senderId(){return this.newRoute?this.newRoute[0]:this.route[0]}get isRerouted(){return this.rerouterPubkey&&this.newRoute&&this.rerouterSignature}getRerouterId(){if(this.newRoute)return this.newRoute[0]}constructor(t,e,n,r,s,o,f,h,c,u,I,l){this.type=t,this.timestamp=e,this.neighborsList=n,this.route=r,this.pubkey=s,this.data=o,this.signature=f,this.signatureStart=h,this.expectedEnd=c,this.rerouterPubkey=u,this.newRoute=I,this.rerouterSignature=l}getSenderId(){return this.route[0]}getTargetId(){return this.route[this.route.length-1]}extractRouteInfo(t="toto"){let e=this.newRoute||this.route,n=[],r=-1;for(let c=0;c<e.length;c++)if(n.push(e[c]),e[c]===t){r=c;break}let s=this.senderId,o=e[e.length-1],f=r>0?e[r-1]:null,h=r!==-1?e[r+1]:null;return{traveledRoute:n,selfPosition:r,senderId:s,targetId:o,prevId:f,nextId:h,routeLength:e.length}}},An=class{callbacks={message_handle:[]};id;cryptoCodex;arbiter;peerStore;verbose;pathFinder;maxHops=Ct.MAX_HOPS;maxRoutes=Ct.MAX_ROUTES;maxNodes=Ct.MAX_NODES;constructor(t,e,n,r,s=0){this.id=t,this.cryptoCodex=e,this.arbiter=n,this.peerStore=r,this.verbose=s,this.pathFinder=new Ns(this.id,this.peerStore)}on(t,e){this.callbacks[t]?this.callbacks[t].push(e):this.callbacks[t]=[e]}sendUnicast(t,e,n="message",r=1){if(t===this.id)return!1;let s=this.pathFinder.buildRoutes(t,this.maxRoutes,this.maxHops,this.maxNodes,!0);if(!s.success)return!1;let o=n==="private_message"?this.peerStore.privacy[t]?.sharedSecret:void 0,f=s.success==="blind"?1:r;for(let h=0;h<Math.min(f,s.routes.length);h++){let c=s.routes[h].path;if(c.length>Ct.MAX_HOPS+1){this.verbose>1&&console.warn(`Cannot send unicast message to ${t} as route exceeds maxHops (${Ct.MAX_HOPS}). BFS incurred.`);continue}let u=this.cryptoCodex.createUnicastMessage(n,e,c,this.peerStore.neighborsList,o);this.#e(c[1],u)}return!0}#e(t,e){if(this.id===t)return{success:!1,reason:"Cannot send message to self."};let n=this.peerStore.connected[t]?.transportInstance;if(!n)return{success:!1,reason:`Transport instance is not available for peer ${t}.`};try{return n.send(e),{success:!0}}catch(r){this.peerStore.kickPeer(t,0,"send-error"),this.verbose>0&&console.error(`Error sending message to ${t}:`,r.message)}return{success:!1,reason:`Error sending message to ${t}.`}}async handleDirectMessage(t,e){if(this.arbiter.isBanished(t))return this.verbose>=3?console.info(`%cReceived direct message from banned peer ${t}, ignoring.`,"color: red;"):null;if(!this.arbiter.countMessageBytes(t,e.byteLength,"unicast"))return;let n=this.cryptoCodex.readUnicastMessage(e,this.peerStore);if(!n)return this.arbiter.countPeerAction(t,"WRONG_SERIALIZATION");if(!await this.arbiter.digestMessage(t,n,e)||this.arbiter.isBanished(t)||this.arbiter.isBanished(n.senderId))return;let{traveledRoute:s,selfPosition:o,senderId:f,targetId:h,prevId:c,nextId:u}=n.extractRouteInfo(this.id);if(t===f&&t===this.id)throw new Error("DirectMessage senderId and from are both self id !!");for(let C of this.callbacks.message_handle||[])C();if(o===-1)return this.arbiter.adjustTrust(t,_t.UNICAST_INVALID_ROUTE,"Self not in route");if(c&&t!==c)return this.arbiter.adjustTrust(t,_t.UNICAST_INVALID_ROUTE,"Previous hop id does not match actual from id");if(f===this.id)return this.arbiter.adjustTrust(t,_t.UNICAST_INVALID_ROUTE,"SenderId is self id");if(this.verbose>3&&console.log(f===t?`(${this.id}) Direct ${n.type} from ${f}: ${n.data}`:`(${this.id}) Direct ${n.type} from ${f} (lastRelay: ${t}): ${n.data}`),this.peerStore.digestPeerNeighbors(f,n.neighborsList),t!==f&&this.arbiter.adjustTrust(t,_t.UNICAST_RELAYED,"Relayed unicast message"),pt.ON_UNICAST.DIGEST_TRAVELED_ROUTE&&this.peerStore.digestValidRoute(s),this.id===h){for(let C of this.callbacks[n.type]||[])C(n);return}if(!u)throw new Error('Needs to tranmit message but no "nextId" provied!');let{success:I,reason:l}=this.#e(u,e);if(!I&&!n.rerouterSignature){let C=this.pathFinder.buildRoutes(h,this.maxRoutes,this.maxHops,this.maxNodes,!0);if(!C.success)return;let B=C.routes[0].path;if(B.length>Ct.MAX_HOPS+1){this.verbose>1&&console.warn(`Cannot re-route unicast message to ${h} as new route exceeds maxHops (${Ct.MAX_HOPS}).`);return}let y=this.cryptoCodex.createReroutedUnicastMessage(e,B),m=B[o+1];this.#e(m,y)}}};await Mt();var an=class{topic="gossip";timestamp;neighborsList;HOPS;senderId;pubkey;data;signature;signatureStart;expectedEnd;constructor(t,e,n,r,s,o,f,h,c,u){this.topic=t,this.timestamp=e,this.neighborsList=n,this.HOPS=r,this.senderId=s,this.pubkey=o,this.data=f,this.signature=h,this.signatureStart=c,this.expectedEnd=u}},Pn=class{cryptoCodex;xxHash32UsageCount=0;seenTimeouts={};cache=[];cleanupFrequency=100;cleanupIn=100;cleanupDurationWarning=10;constructor(t){this.cryptoCodex=t}getGossipHistoryByTime(t="asc"){let e=this.cache.map(n=>({senderId:n.senderId,topic:n.topic,data:n.serializedMessage}));return t==="asc"?e:e.reverse()}addMessage(t){let e=ct.time,{marker:n,neighLength:r,timestamp:s,dataLength:o,pubkey:f,associatedId:h}=this.cryptoCodex.readBufferHeader(t),c=Qt.MARKERS_BYTES[n];if(typeof c!="string")throw new Error(`Wrong topic byte: ${n}`);if(e===null||e-s>Qt.EXPIRATION||!h)return;let u=t.subarray(0,47+r+o),I=Ce(u).toString();if(this.xxHash32UsageCount++,this.seenTimeouts[I])return;let l=e+Qt.CACHE_DURATION;return this.cache.push({hash:I,senderId:h,topic:c,serializedMessage:t,timestamp:s,expiration:l}),this.seenTimeouts[I]=l,--this.cleanupIn<=0&&this.#e(e),{hash:I,isNew:!this.seenTimeouts[I]}}#e(t=ct.time||0){let e=-1;for(let n=0;n<this.cache.length;n++)this.cache[n].expiration<=t?delete this.seenTimeouts[this.cache[n].hash]:e===-1&&(e=n);e>0?this.cache=this.cache.slice(e):e===-1&&(this.cache=[]),this.cleanupIn=this.cleanupFrequency}},cn=class{callbacks={message_handle:[]};id;cryptoCodex;arbiter;peerStore;verbose;bloomFilter;constructor(t,e,n,r,s=0){this.id=t,this.cryptoCodex=e,this.arbiter=n,this.peerStore=r,this.verbose=s,this.bloomFilter=new Pn(e)}on(t,e){this.callbacks[t]?this.callbacks[t].push(e):this.callbacks[t]=[e]}broadcastToAll(t,e="gossip",n){let r=n||Qt.HOPS[e]||Qt.HOPS.default,s=this.cryptoCodex.createGossipMessage(e,t,r,this.peerStore.neighborsList);if(this.bloomFilter.addMessage(s)){this.verbose>3&&console.log(`(${this.id}) Gossip ${e}, to ${JSON.stringify(this.peerStore.neighborsList)}: ${t}`);for(let o of this.peerStore.neighborsList)this.#e(o,s)}}#e(t,e){if(t===this.id)throw new Error(`Refusing to send a gossip message to self (${this.id}).`);let n=this.peerStore.connected[t]?.transportInstance;if(!n)return{success:!1,reason:`Transport instance is not available for peer ${t}.`};try{n.send(e)}catch{this.peerStore.connected[t]?.close()}}sendGossipHistoryToPeer(t){let e=this.bloomFilter.getGossipHistoryByTime("asc");for(let n of e)this.#e(t,n.data)}async handleGossipMessage(t,e){if(this.arbiter.isBanished(t))return this.verbose>=3?console.info(`%cReceived gossip message from banned peer ${t}, ignoring.`,"color: red;"):null;if(!this.arbiter.countMessageBytes(t,e.byteLength,"gossip"))return;for(let g of this.callbacks.message_handle||[])g(e);if(!this.bloomFilter.addMessage(e))return;let n=this.cryptoCodex.readGossipMessage(e);if(!n)return this.arbiter.countPeerAction(t,"WRONG_SERIALIZATION");if(!await this.arbiter.digestMessage(t,n,e)||this.arbiter.isBanished(t)||this.arbiter.isBanished(n.senderId))return;let{topic:s,timestamp:o,neighborsList:f,HOPS:h,senderId:c,data:u}=n;if(c===this.id)throw new Error(`#${this.id}#${t}# Received our own message back from peer ${t}.`);this.verbose>3&&console.log(c===t?`(${this.id}) Gossip ${s} from ${c}: ${u}`:`(${this.id}) Gossip ${s} from ${c} (by: ${t}): ${u}`),this.peerStore.digestPeerNeighbors(c,f);for(let g of this.callbacks[s]||[])g(n);if(h<1)return;let I=this.peerStore.neighborsList.length,l=Math.max(1,I/Qt.TRANSMISSION_RATE.NEIGHBOURS_PONDERATION),C=Qt.TRANSMISSION_RATE[s]||Qt.TRANSMISSION_RATE.default,B=Math.pow(C,l),y=I<Qt.TRANSMISSION_RATE.MIN_NEIGHBOURS_TO_APPLY_PONDERATION,m=this.cryptoCodex.decrementGossipHops(e);for(let g of this.peerStore.neighborsList)if(g!==t){if(!y&&Math.random()>B)continue;this.#e(g,m)}}};await Mt();var{SANDBOX:vA,ICE_CANDIDATE_EMITTER:NA,TEST_WS_EVENT_MANAGER:TA}=Ft.USE_TEST_TRANSPORTS?await Gn().then(()=>On):{},Yn=class{maxOffers=30;offers=[];orderingBy="neighborsCount";get size(){return this.offers.length}updateOrderingBy(t=!1){this.orderingBy=t?"overlap":"neighborsCount"}removeOlderThan(t=1e3){this.offers=this.offers.filter(e=>e.timestamp+t>=ct.time)}get bestOfferInfo(){let{senderId:t,overlap:e,neighborsCount:n,data:r,timestamp:s}=this.offers.shift()||{};return{senderId:t,data:r,timestamp:s,value:this.orderingBy==="overlap"?e:n}}pushSortTrim(t,e={min:.2,max:.8}){let{min:n,max:r}=e;Math.random()<Math.min(n,this.offers.size/this.maxOffers*r)||(this.offers.push(t),this.offers.length!==1&&(this.offers.sort((s,o)=>this.orderingBy==="overlap"?s.overlap-o.overlap:o.neighborsCount-s.neighborsCount),this.size>this.maxOffers&&this.offers.pop()))}},fn=class{verbose;id;cryptoCodex;gossip;messager;peerStore;bootstraps;offersQueue=new Yn;connectedBootstraps=new Set;connectedBootstrapIds=new Set;services;NEIGHBORS_TARGET;HALF_TARGET;TWICE_TARGET;setNeighborsTarget(t=pt.TARGET_NEIGHBORS_COUNT){this.NEIGHBORS_TARGET=t,this.HALF_TARGET=Math.ceil(this.NEIGHBORS_TARGET/2),this.TWICE_TARGET=this.NEIGHBORS_TARGET*2}automation={incomingOffer:!0,incomingAnswer:!0,spreadOffers:!0,connectBootstraps:!0};phase=0;nextBootstrapIndex=0;maxBonus=Bt.CONNECTION_UPGRADE_TIMEOUT*.2;get isPublicNode(){return!!this.services?.publicUrl}constructor(t,e,n,r,s,o,f=1){this.setNeighborsTarget(pt.TARGET_NEIGHBORS_COUNT),this.verbose=f,this.id=t,this.cryptoCodex=e,this.gossip=n,this.messager=r,this.peerStore=s,this.bootstraps=[...o].sort(()=>Math.random()-.5),this.nextBootstrapIndex=Math.random()*this.bootstraps.length|0}tick(){let{neighborsCount:t,nonPublicNeighborsCount:e,isEnough:n,isTooMany:r,isHalfReached:s}=this.#e,o=e>=this.NEIGHBORS_TARGET/3?1:St.MAX_SDP_OFFERS;if(this.peerStore.offerManager.offersToCreate=n?0:o,this.isPublicNode){this.services.freePublicNodeByKickingPeers();return}if(r)return Math.random()>.05?this.#A():null;n?Math.random()>.05&&this.#o():this.#o(),this.phase=this.phase?0:1,this.phase===0&&this.tryConnectNextBootstrap(t,e),this.phase===1&&this.#s(e,s)}handleIncomingSignal(t,e){if(this.isPublicNode||!t||this.peerStore.isKicked(t)||e.signal?.type!=="offer"&&e.signal?.type!=="answer")return;let{signal:n,offerHash:r}=e||{},{connected:s,nonPublicNeighborsCount:o,isTooMany:f,isHalfReached:h}=this.#e;if(f||s[t])return;if(n.type==="answer"){if(!this.automation.incomingAnswer||this.peerStore.addConnectingPeer(t,n,r)!==!0)return;let l=Math.abs(o-this.#t(t).nonPublicCount),C=this.maxBonus/this.NEIGHBORS_TARGET,B=Math.round(Math.min(this.maxBonus,l*C));return this.peerStore.assignSignal(t,n,r,ct.time+B)}if(!this.automation.incomingOffer||o>this.TWICE_TARGET)return;let{overlap:c,nonPublicCount:u}=this.#t(t);if(u>this.TWICE_TARGET)return;let I={senderId:t,data:e,overlap:c,neighborsCount:u,timestamp:ct.time};this.offersQueue.updateOrderingBy(h),this.offersQueue.pushSortTrim(I)}tryConnectNextBootstrap(t=0,e=0){if(!this.automation.connectBootstraps||this.bootstraps.length===0)return;let n=t-e,r=0;for(let o in this.peerStore.connecting)r++;if(this.NEIGHBORS_TARGET||t){if(n>=this.HALF_TARGET)return;if(t>=this.NEIGHBORS_TARGET)return;if(r+e>this.TWICE_TARGET)return}let s=this.bootstraps[this.nextBootstrapIndex++%this.bootstraps.length];this.connectedBootstraps.has(s)||this.#i(s)}get#e(){return{connected:this.peerStore.connected,neighborsCount:this.peerStore.neighborsList.length,nonPublicNeighborsCount:this.peerStore.standardNeighborsList.length,isEnough:this.peerStore.standardNeighborsList.length>=this.NEIGHBORS_TARGET,isTooMany:this.peerStore.standardNeighborsList.length>this.NEIGHBORS_TARGET,isHalfReached:this.peerStore.standardNeighborsList.length>=this.HALF_TARGET}}#t(t="toto"){let e=this.peerStore.known[t]?.neighbors||{},n={overlap:0,nonPublicCount:0,p1nCount:this.peerStore.getUpdatedPeerConnectionsCount(t)};for(let r in e)this.cryptoCodex.isPublicNode(r)||n.nonPublicCount++;for(let r of this.peerStore.standardNeighborsList)e[r]&&n.overlap++;return n}#n(t=[]){return t.map(e=>({id:e,...this.#t(e)}))}#r(t){let e=typeof window<"u",r=e&&window.location.protocol==="https:"?"wss://":"ws://",s=t.endsWith("/ws"),o=e&&!s?window.location.host:t;return t.startsWith("ws")?t:`${r}${o}`}#i(t="localhost:8080"){let e=null,n=!1,r=new St.WS_CLIENT(this.#r(t));r.binaryType="arraybuffer",this.verbose>1&&(r.onerror=s=>console.warn("WebSocket error:",s.stack)),r.onopen=()=>{this.connectedBootstraps.add(t),r.onclose=()=>{if(this.connectedBootstraps.delete(t),!n){this.connectedBootstrapIds.delete(e);for(let s of this.peerStore.callbacks.disconnect)s(e,"out")}},r.onmessage=s=>{if(e)for(let o of this.peerStore.callbacks.data)o(e,s.data);else{let o=new Uint8Array(s.data);if(o[0]>127)return;let f=this.cryptoCodex.readUnicastMessage(o);if(!f)return;let{route:h,type:c,neighborsList:u}=f;if(c!=="handshake"||h.length!==2)return;let{signatureStart:I,pubkey:l,signature:C}=f,B=o.subarray(0,I);if(!this.cryptoCodex.verifySignature(l,B,C))return;if(e=h[0],this.connectedBootstrapIds.has(e))return n=!0,this.bootstraps=this.bootstraps.filter(y=>y!==t),r.close();this.connectedBootstrapIds.add(e),this.peerStore.digestPeerNeighbors(e,u),this.peerStore.connecting[e]?.in?.close(),this.peerStore.connecting[e]||(this.peerStore.connecting[e]={}),this.peerStore.connecting[e].out=new re(e,r,"out",!0);for(let y of this.peerStore.callbacks.connect)y(e,"out")}},r.send(this.cryptoCodex.createUnicastMessage("handshake",null,[this.id,this.id],this.peerStore.neighborsList))}}#s(t=0,e=!1){if(!this.automation.spreadOffers||!this.peerStore.neighborsList.length)return;let r=Object.keys(this.peerStore.connecting).length+t,{offerHash:s,readyOffer:o}=this.peerStore.offerManager.bestReadyOffer(0,!0);if(!s||!o)return;if(!e&&r<=this.TWICE_TARGET){this.gossip.broadcastToAll({signal:o.signal,offerHash:s},"signal_offer"),o.sentCounter++;return}let f=null;for(let B of this.#n(this.peerStore.standardNeighborsList)){let y=B[e?"overlap":"nonPublicCount"];f===null&&(f=y),e&&y<f&&(f=y),!e&&y<=f&&(f=y)}let h=100,c=1e3,u=this.peerStore.knownCount,I=Math.max(Math.min(c/u,u/c),.127),l=[];for(let B in this.peerStore.known){if(Math.random()>I)continue;if(--c<=0)break;if(B===this.id||this.cryptoCodex.isPublicNode(B)||this.peerStore.isKicked(B))continue;if(this.peerStore.connected[B]||this.peerStore.connecting[B])continue;let{overlap:y,nonPublicCount:m}=this.#t(B);if(!(m>this.NEIGHBORS_TARGET)&&(f===null&&(f=e?y:m),!(e&&y>f)&&!(!e&&m<f)&&(l.push(B),--h<=0)))break}if(!l.length)return;let C=new Map;for(let B=0;B<Math.min(l.length,100);B++){let y=l[Math.floor(Math.random()*l.length)];if(!C.has(y)&&(C.size===0&&o.sentCounter++,C.set(y,!0),this.messager.sendUnicast(y,{signal:o.signal,offerHash:s},"signal_offer"),C.size>=12))break}}#o(){let t=null,e=Object.keys(this.peerStore.connecting).length;this.offersQueue.updateOrderingBy(this.#e.isHalfReached),this.offersQueue.removeOlderThan(St.SDP_OFFER_EXPIRATION/2);for(let n=0;n<this.offersQueue.size;n++){let{senderId:r,data:s,timestamp:o,value:f}=this.offersQueue.bestOfferInfo;if(!r||!s||!o)break;if(!(this.peerStore.connected[r]||this.peerStore.isKicked(r))&&!this.peerStore.connecting[r]?.in){if(t=t===null?f:t,t!==f)break;this.peerStore.addConnectingPeer(r,s.signal,s.offerHash)===!0&&(this.peerStore.assignSignal(r,s.signal,s.offerHash,o),e++)}}}#A(){let e=this.#n(this.peerStore.standardNeighborsList).sort((n,r)=>r.overlap-n.overlap||r.nonPublicCount-n.nonPublicCount);this.peerStore.kickPeer(e[0].id,6e4,"improveTopology")}};await Mt();var Ts={1:0,2:1,3:2,4:3,5:4,6:5,7:6,8:7,9:8,A:9,B:10,C:11,D:12,E:13,F:14,G:15,H:16,J:17,K:18,L:19,M:20,N:21,P:22,Q:23,R:24,S:25,T:26,U:27,V:28,W:29,X:30,Y:31,Z:32,a:33,b:34,c:35,d:36,e:37,f:38,g:39,h:40,i:41,j:42,k:43,m:44,n:45,o:46,p:47,q:48,r:49,s:50,t:51,u:52,v:53,w:54,x:55,y:56,z:57},Us=["1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","m","n","o","p","q","r","s","t","u","v","w","x","y","z"],Ot=class a{IS_BROWSER=typeof self<"u";FROMBASE64_AVAILABLE=typeof Uint8Array.fromBase64=="function";textEncoder=new TextEncoder;textDecoder=new TextDecoder;buffer2=new ArrayBuffer(2);view2=new DataView(this.buffer2);buffer4=new ArrayBuffer(4);view4=new DataView(this.buffer4);buffer6=new ArrayBuffer(6);view6=new DataView(this.buffer6);buffer8=new ArrayBuffer(8);view8=new DataView(this.buffer8);hexMap={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15};numberTo2Bytes(t){return this.view2.setUint16(0,t,!0),new Uint8Array(this.buffer2)}numberTo4Bytes(t){return this.view4.setUint32(0,t,!0),new Uint8Array(this.buffer4)}numberTo6Bytes(t){return this.view6.setUint32(0,t%4294967296,!0),this.view6.setUint16(4,Math.floor(t/4294967296),!0),new Uint8Array(this.buffer6)}numberTo8Bytes(t){return this.view8.setBigUint64(0,BigInt(t),!0),new Uint8Array(this.buffer8)}stringToBytes(t="toto"){return this.textEncoder.encode(t)}hexToBytes(t){let e=t.length/2,n=new Uint8Array(e);for(let r=0,s=0;r<e;++r,s+=2)n[r]=(this.hexMap[t[s]]<<4)+this.hexMap[t[s+1]];return n}base64toBytes(t){if(!this.IS_BROWSER)return new Uint8Array(Buffer.from(t,"base64"));if(this.FROMBASE64_AVAILABLE)return Uint8Array.fromBase64(t);let e=atob(t),n=new Uint8Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);return n}bytes2ToNumber(t){for(let e=0;e<2;e++)this.view2.setUint8(e,t[e]);return this.view2.getUint16(0,!0)}bytes4ToNumber(t){for(let e=0;e<4;e++)this.view4.setUint8(e,t[e]);return this.view4.getUint32(0,!0)}bytes6ToNumber(t){for(let e=0;e<6;e++)this.view6.setUint8(e,t[e]);return this.view6.getUint32(0,!0)+this.view6.getUint16(4,!0)*4294967296}bytes8ToNumber(t){for(let e=0;e<8;e++)this.view8.setUint8(e,t[e]);return Number(this.view8.getBigUint64(0,!0))}bytesToString(t){return this.textDecoder.decode(t)}static bytesToHex(t,e=0){let n="";for(let r of t)n+=r<16?`0${r.toString(16)}`:r.toString(16);return e>0&&(n=n.padStart(e,"0")),n}bytesToHex(t,e=0){return a.bytesToHex(t,e)}static uint32ToB58(t,e=6){if(t===0)return"1";let n="";for(;t>0;)n=Us[t%58]+n,t=Math.floor(t/58);return n.padStart(e,"1")}static b58ToUint32(t){let e=0;for(let n of t)e=e*58+Ts[n];return e}static hexToBigInt(t){return BigInt("0x"+t)}static hexToBits(t="ffffff",e="string"){let n=[];if(e==="arrayOfNumbers")for(let r=0;r<t.length;r++)n.push(...parseInt(t[r],16).toString(2).padStart(4,"0").split("").map(s=>parseInt(s,10)));else for(let r=0;r<t.length;r++)n.push(parseInt(t[r],16).toString(2).padStart(4,"0"));return e==="string"?n.join(""):n}static bytesToBits(t,e="string"){return this.hexToBits(this.bytesToHex(t),e)}static ipToInt(t="192.168.0.1"){return t.split(".").reduce((e,n)=>(e<<8)+parseInt(n,10),0)}};var Rr=typeof self<"u",{ed25519:Ne,x25519:We}=await Promise.resolve().then(()=>(Pi(),Hi)),{chacha20poly1305:je,xchacha20poly1305:Is}=await Promise.resolve().then(()=>(gs(),us)),{randomBytes:Ve}=await Promise.resolve().then(()=>(xe(),Zi));var ve=class{converter=new Ot;argon2;hash=async(t,e,n=2**16,r=1,s=1,o=2,f=32)=>{let h=this.#e(t,e,r,n,s,o,f),c=await this.getArgon2Lib(),u=Rr?await c.hash(h):await c.hash(t,h);if(!u)return!1;let I=u.encoded||u,l=this.#t(I);return l||!1};async getArgon2Lib(){if(this.argon2)return this.argon2;if(!Rr)try{let e=await import("argon2");this.argon2=e}catch{throw new Error("Please install argon2 package: npm install argon2")}if(this.argon2)return this.argon2;try{if(argon2)return console.log("Argon2 loaded as a global variable"),this.argon2=argon2,this.argon2}catch{}if(this.argon2)return this.argon2;console.log("trying import argon2 ES6 and inject in window");let t=await Promise.resolve().then(()=>(ds(),ls));return window.argon2=t.default,this.argon2=t.default,this.argon2}#e(t="averylongpassword123456",e="saltsaltsaltsaltsalt",n=1,r=2**10,s=1,o=2,f=32){if(typeof e!="string")throw new Error("salt must be a string");let h=e.padEnd(64,"0").substring(0,64);return{type:o,pass:t,parallelism:s,time:n,timeCost:n,mem:r,memoryCost:r,hashLen:f,hashLength:f,salt:Rr?h:Buffer.from(h)}}#t(t="$argon2id$v=19$m=1048576,t=1,p=1$c2FsdHNhbHRzYWx0c2FsdHNhbHQ$UamPN/XTTX4quPewQNw4/s3y1JJeS22cRroh5l7OTMM"){let e=t.split("$").pop(),n=this.converter.base64toBytes(e),r=this.converter.bytesToHex(n),s=Ot.hexToBits(r,"string");return{encoded:t,hash:n,hex:r,bitsString:s}}};xe();var Te=class a{argon2=new ve;converter=new Ot;AVOID_CRYPTO=!0;verbose=Bt.DEFAULT_VERBOSE;id;publicKey;privateKey;get idLength(){return it.ARE_IDS_HEX?it.ID_LENGTH/2:it.ID_LENGTH}constructor(t,e=Bt.DEFAULT_VERBOSE){if(this.privateKey=new Uint8Array(32).fill(0),this.publicKey=new Uint8Array(32).fill(0),this.verbose=e,!t)return;this.id=t.padEnd(it.ID_LENGTH," ").slice(0,it.ID_LENGTH);let n=new TextEncoder().encode(this.id);for(let r=0;r<it.ID_LENGTH;r++)this.publicKey[r]=n[r]}static async createCryptoCodex(t,e){let n=new a(void 0,Bt.DEFAULT_VERBOSE),r=e?typeof e=="string"?n.converter.hexToBytes(e):e:void 0;return await n.generate(t,r),n}static isPublicNode(t){let e=t[1]==="_"?t:Ot.hexToBits(t[0]);if(typeof e!="string")throw new Error("idStr isn't string!");return e.startsWith(it.PUBLIC_PREFIX[0])||e.startsWith(it.PUBLIC_PREFIX[1])}isPublicNode(t){return a.isPublicNode(t)}async generate(t,e){if(this.id)return;let n=e||await a.generateNewSybilIdentity(t,this.verbose>0);if(await this.#t(n,t),this.AVOID_CRYPTO=!1,!this.id)throw new Error("Failed to generate identity")}async pubkeyDifficultyCheck(t){if(this.AVOID_CRYPTO||!it.DIFFICULTY)return!0;let e=typeof t=="string"?t:this.converter.bytesToHex(t,it.PUBKEY_LENGTH),{bitsString:n}=await this.argon2.hash(e,"HiveP2P",it.ARGON2_MEM)||{};if(n&&n.startsWith("0".repeat(it.DIFFICULTY)))return!0}#e(t){return it.ARE_IDS_HEX?this.converter.bytesToHex(t.slice(0,this.idLength),it.ID_LENGTH):this.converter.bytesToString(t.slice(0,it.ID_LENGTH))}async#t(t,e){let{secretKey:n,publicKey:r}=Ne.keygen(t),s=this.#e(r);if(e&&!this.isPublicNode(s))throw new Error("Seed does not produce a public node identity.");if(!e&&this.isPublicNode(s))throw new Error("Seed does not produce a private node identity.");if(!await this.pubkeyDifficultyCheck(r))throw new Error("Seed does not meet difficulty requirements.");this.id=s,this.privateKey=n,this.publicKey=r}static async generateNewSybilIdentity(t,e=!0){let n=new a,r=2**it.DIFFICULTY*128;for(let s=0;s<r;s++){let o=Ve(32);try{await n.#t(o,t)}catch{continue}return e&&console.log(`Generated new ${t?"public":"private"} identity after ${s+1} iterations.`),o}throw new Error(`Failed to generate identity after ${r} iterations. Try lowering the difficulty.`)}generateEphemeralX25519Keypair(t){let e=t?this.converter.hexToBytes(t):void 0,{secretKey:n,publicKey:r}=We.keygen(e);return{myPub:r,myPriv:n}}computeX25519SharedSecret(t,e){return We.getSharedSecret(t,e)}encryptData(t,e){if(!e)throw new Error("Cannot encrypt data without shared secret.");let n=Ve(12),s=je(e,n).encrypt(t);return Ke(n,s)}decryptData(t,e){if(!e)throw new Error("Cannot decrypt data without shared secret.");let n=t.slice(0,12);return je(e,n).decrypt(t.slice(12))}signBufferViewAndAppendSignature(t,e,n=t.length-it.SIGNATURE_LENGTH){if(this.AVOID_CRYPTO)return;let r=t.subarray(0,n),s=Ne.sign(r,e);t.set(s,n)}createGossipMessage(t,e,n=3,r=[],s=ct.time){let o=Qt.MARKERS_BYTES[t];if(typeof o!="number")throw new Error(`Failed to create gossip message: wrong topic '${t}'.`);if(typeof s!="number")throw new Error("Wrong timestamp type!");let f=this.#n(r),{dataCode:h,dataBytes:c}=this.#r(e),u=47+f.length+c.length+it.SIGNATURE_LENGTH+1,I=new ArrayBuffer(u),l=new Uint8Array(I);return this.#i(l,o,h,r.length,s,c,this.publicKey),l.set(f,47),l.set(c,47+f.length),l.set([Math.min(255,n)],u-1),this.signBufferViewAndAppendSignature(l,this.privateKey,u-it.SIGNATURE_LENGTH-1),l}decrementGossipHops(t){let e=new Uint8Array(t),n=t[t.length-1];return e[t.length-1]=Math.max(0,n-1),e}createUnicastMessage(t,e,n,r=[],s,o=ct.time){let f=Ct.MARKERS_BYTES[t];if(typeof f!="number")throw new Error(`Failed to create gossip message: wrong type '${t}'.`);if(typeof o!="number")throw new Error("Wrong timestamp type!");if(n.length<2)throw new Error("Failed to create unicast message: route must have at least 2 nodes (next hop and target).");if(n.length>Ct.MAX_HOPS+1)throw new Error(`Failed to create unicast message: route exceeds max hops (${Ct.MAX_HOPS}).`);let h=this.#n(r),{dataCode:c,dataBytes:u}=this.#r(e),I=s?this.encryptData(u,s):u,l=this.#n(n),C=47+h.length+1+l.length+I.length+it.SIGNATURE_LENGTH,B=new ArrayBuffer(C),y=new Uint8Array(B);this.#i(y,f,c,r.length,o,I,this.publicKey);let m=h.length+I.length;return y.set(h,47),y.set(I,47+h.length),y.set([n.length],47+m),y.set(l,48+m),this.signBufferViewAndAppendSignature(y,this.privateKey,C-it.SIGNATURE_LENGTH),y}createReroutedUnicastMessage(t,e){if(e.length<2)throw new Error("Failed to create rerouted unicast message: route must have at least 2 nodes (next hop and target).");if(e.length>Ct.MAX_HOPS+1)throw new Error(`Failed to create rerouted unicast message: route exceeds max hops (${Ct.MAX_HOPS}).`);let n=e.map(f=>this.converter.stringToBytes(f)),r=t.length+32+it.ID_LENGTH*n.length+it.SIGNATURE_LENGTH,s=new ArrayBuffer(r),o=new Uint8Array(s);o.set(t,0),o.set(this.publicKey,t.length);for(let f=0;f<n.length;f++)o.set(n[f],t.length+32+f*it.ID_LENGTH);return this.signBufferViewAndAppendSignature(o,this.privateKey,r-it.SIGNATURE_LENGTH),o}#n(t){return it.ARE_IDS_HEX?this.converter.hexToBytes(t.join("")):this.converter.stringToBytes(t.join(""))}#r(t){return typeof t=="string"?{dataCode:1,dataBytes:this.converter.stringToBytes(t)}:t instanceof Uint8Array?{dataCode:2,dataBytes:t}:{dataCode:3,dataBytes:this.converter.stringToBytes(JSON.stringify(t))}}#i(t,e,n,r,s,o,f){let h=this.converter.numberTo8Bytes(s),c=this.converter.numberTo4Bytes(o.length);t.set([e],0),t.set([n],1),t.set([r],2),t.set(h,3),t.set(c,11),t.set(f,15)}verifySignature(t,e,n){return this.AVOID_CRYPTO?!0:Ne.verify(n,e,t)}readBufferHeader(t,e=!0){let n=t[0],r=t[1],s=t[2],o=t.slice(3,11),f=t.slice(11,15),h=t.slice(15,47),c=e?this.#e(h):null,u=s*this.idLength,I=this.converter.bytes8ToNumber(o),l=this.converter.bytes4ToNumber(f);return{marker:n,dataCode:r,neighLength:u,timestamp:I,dataLength:l,pubkey:h,associatedId:c}}readGossipMessage(t){this.verbose>3&&console.log(`%creadGossipMessage ${t.byteLength} bytes`,lt.CRYPTO_CODEX),this.verbose>4&&console.log(`%c${t}`,lt.CRYPTO_CODEX);let e;try{let{marker:n,dataCode:r,neighLength:s,timestamp:o,dataLength:f,pubkey:h,associatedId:c}=this.readBufferHeader(t);if(e=Qt.MARKERS_BYTES[n],typeof e!="string")throw new Error(`Failed to deserialize gossip message: unknown marker byte ${t[0]}.`);if(typeof c!="string")throw new Error("Wrong associatedId tyoe!");let u=s+f,I=this.#s(t.slice(47,47+s)),l=this.#o(r,t.slice(47+s,47+u)),C=47+u,B=t.slice(C,C+it.SIGNATURE_LENGTH),y=t[t.length-1],m=C+it.SIGNATURE_LENGTH+1;return new an(e,o,I,y,c,h,l,B,C,m)}catch(n){this.verbose>1&&console.warn(`Error deserializing ${e||"unknown"} gossip message:`,n.stack)}return null}readUnicastMessage(t,e){this.verbose>3&&console.log(`%creadUnicastMessage ${t.byteLength} bytes`,lt.CRYPTO_CODEX),this.verbose>4&&console.log(`%c${t}`,lt.CRYPTO_CODEX);let n;try{let{marker:r,dataCode:s,neighLength:o,timestamp:f,dataLength:h,pubkey:c}=this.readBufferHeader(t,!1);if(n=Ct.MARKERS_BYTES[r],typeof n!="string")throw new Error(`Failed to deserialize unicast message: unknown marker byte ${t[0]}.`);let u=o+h,I=this.#s(t.slice(47,47+o)),C=t[47+u]*this.idLength,B=47+u+1+C,y=t.slice(47+u+1,B),m=this.#s(y),g=m[m.length-1],p=n==="private_message"&&this.id===g?this.decryptData(t.slice(47+o,47+u),e.privacy[this.#e(c)]?.sharedSecret):t.slice(47+o,47+u),E=this.id===g?this.#o(s,p):p,S=B+it.SIGNATURE_LENGTH,b=t.slice(B,S);if(!(t.length>S))return new ke(n,f,I,m,c,E,b,B,S);let v=t.slice(S,S+32),Q=this.#s(t.slice(S+32,t.length-it.SIGNATURE_LENGTH)),w=t.slice(t.length-it.SIGNATURE_LENGTH);return new ke(n,f,I,m,c,E,b,B,t.length,v,Q,w)}catch(r){this.verbose>1&&console.warn(`Error deserializing ${n||"unknown"} unicast message:`,r.stack)}return null}#s(t){let e=[],n=this.idLength;if(t.length%n!==0)throw new Error("Failed to parse ids: invalid serialized length.");for(let r=0;r<t.length/n;r++){let s=t.slice(r*n,(r+1)*n);it.ARE_IDS_HEX?e.push(this.converter.bytesToHex(s,it.ID_LENGTH)):e.push(this.converter.bytesToString(s))}return e}#o(t,e){if(t===1)return this.converter.bytesToString(e);if(t===2)return e;if(t===3)return JSON.parse(this.converter.bytesToString(e));throw new Error(`Failed to parse data: unknown data code '${t}'.`)}};await Mt();var Jo=Bt.IS_BROWSER?null:await import("dgram"),Nn=class{id;verbose;maxKick;peerStore;cryptoCodex;publicUrl;constructor(t,e,n=3,r=1){this.id=t.id,this.verbose=r,this.maxKick=n,this.peerStore=e,this.cryptoCodex=t}start(t="localhost",e=Pt.PORT){this.publicUrl=`ws://${t}:${e}`,this.#e(t,e),Ft.USE_TEST_TRANSPORTS||this.#t(t,e+1)}freePublicNodeByKickingPeers(){let t=Math.min(this.maxKick,this.peerStore.neighborsList.length-pt.TARGET_NEIGHBORS_COUNT);if(t<=0)return;let e=0,n=Pt.AUTO_KICK_DELAY;for(let r in this.peerStore.connected){let s=this.peerStore.connected[r],o=this.peerStore.getUpdatedPeerConnectionsCount(r,!1);if(o>pt.TARGET_NEIGHBORS_COUNT){if(this.peerStore.kickPeer(r,Pt.AUTO_KICK_DURATION,"freePublicNode"),this.peerStore.neighborsList.length<=pt.TARGET_NEIGHBORS_COUNT)break;continue}if(!(s.getConnectionDuration()<(o>2?n:n*2))&&(this.peerStore.kickPeer(r,Pt.AUTO_KICK_DURATION,"freePublicNode"),++e>=t))break}}#e(t="localhost",e=Pt.PORT){this.wsServer=new St.WS_SERVER({port:e,host:t}),this.verbose>1&&this.wsServer.on("error",n=>console.warn(`WebSocket error on Node #${this.id}:`,n)),this.wsServer.on("connection",n=>{n.on("close",()=>{if(r)for(let s of this.peerStore.callbacks.disconnect)s(r,"in")}),this.verbose>1&&n.on("error",s=>console.warn(`WebSocket error on Node #${this.id} with peer ${r}:`,s.stack));let r;n.on("message",s=>{if(r)for(let o of this.peerStore.callbacks.data)o(r,s);else{let o=new Uint8Array(s);if(o[0]>127)return;let f=this.cryptoCodex.readUnicastMessage(o);if(!f)return;let{route:h,type:c,neighborsList:u}=f;if(c!=="handshake"||h.length!==2)return;let{signatureStart:I,pubkey:l,signature:C}=f,B=o.subarray(0,I);if(!this.cryptoCodex.verifySignature(l,B,C))return;r=h[0],this.peerStore.digestPeerNeighbors(r,u),this.peerStore.connecting[r]?.out?.close(),this.peerStore.connecting[r]||(this.peerStore.connecting[r]={}),this.peerStore.connecting[r].in=new re(r,n,"in",!0);for(let y of this.peerStore.callbacks.connect)y(r,"in")}}),n.send(this.cryptoCodex.createUnicastMessage("handshake",null,[this.id,this.id],this.peerStore.neighborsList))})}#t(t="localhost",e=Pt.PORT+1){this.stunServer=Jo.createSocket("udp4"),this.stunServer.on("message",(n,r)=>{this.verbose>2&&console.log(`%cSTUN message from ${r.address}:${r.port} - ${n.toString("hex")}`,lt.SERVICE),this.#n(n)&&this.stunServer.send(this.#r(n,r),r.port,r.address)}),this.stunServer.bind(e,t),this.verbose>2&&console.log(`%cSTUN server listening on ${t}:${e}`,lt.SERVICE)}#n(t){if(t.length<20)return!1;let e=t.readUInt16BE(0),n=t.readUInt32BE(4);return e===1&&n===554869826}#r(t,e){let n=t.subarray(8,20),r=Buffer.allocUnsafe(32);return r.writeUInt16BE(257,0),r.writeUInt16BE(12,2),r.writeUInt32BE(554869826,4),n.copy(r,8),r.writeUInt16BE(1,20),r.writeUInt16BE(8,22),r.writeUInt16BE(1,24),r.writeUInt16BE(e.port,26),r.writeUInt32BE(Ot.ipToInt(e.address),28),this.verbose>2&&console.log(`%cSTUN Response: client will discover IP ${e.address}:${e.port}`,"color: green;"),r}static deriveSTUNServers(t){let e=[];for(let n of t){if(!n.includes(":")||n.endsWith("/ws")||n.endsWith("/wss"))continue;let r=n.replace("ws://","stun:");r.replace("wss://","stun:"),r.includes("stun:")&&e.push({urls:r})}return St.CENTRALIZED_STUN_SERVERS&&(e.push({urls:"stun:stun.l.google.com:5349"}),e.push({urls:"stun:stun.l.google.com:19302"}),e.push({urls:"stun:stun1.l.google.com:3478"}),e.push({urls:"stun:stun1.l.google.com:5349"})),e}};async function Es(a={}){let t=a.verbose!==void 0?a.verbose:Bt.DEFAULT_VERBOSE,e=a.cryptoCodex||new Te(void 0,t),n=ct.sync(t);e.publicKey||await e.generate(!1),a.autoStart!==!1&&await n;let r=new Xe(e,a.bootstraps||[],t);return a.autoStart!==!1&&await r.start(),r}var Xe=class{started=!1;id;cryptoCodex;verbose;offerManager;arbiter;peerStore;messager;gossip;topologist;services;constructor(t,e=[],n=Bt.DEFAULT_VERBOSE){this.verbose=n,this.topologist?.services&&(this.topologist.services.verbose=n),this.cryptoCodex=t,this.id=this.cryptoCodex.id;let r=Nn.deriveSTUNServers(e||[]);this.offerManager=new ze(this.id,r,n),this.arbiter=new Ze(this.id,t,n),this.peerStore=new sn(this.id,this.cryptoCodex,this.offerManager,this.arbiter,n),this.messager=new An(this.id,this.cryptoCodex,this.arbiter,this.peerStore,n),this.gossip=new cn(this.id,this.cryptoCodex,this.arbiter,this.peerStore,n),this.topologist=new fn(this.id,this.cryptoCodex,this.gossip,this.messager,this.peerStore,e||[]);let{arbiter:s,peerStore:o,messager:f,gossip:h,topologist:c}=this;o.on("signal",(u,I)=>this.sendMessage(u,I,{type:"signal_answer"})),o.on("connect",(u,I)=>this.#e(u,I)),o.on("disconnect",(u,I)=>this.#t(u,I)),o.on("data",(u,I)=>this.#n(u,I)),f.on("signal_answer",u=>c.handleIncomingSignal(u.senderId,u.data)),f.on("signal_offer",u=>c.handleIncomingSignal(u.senderId,u.data)),f.on("privacy",u=>this.#i(u)),h.on("signal_offer",u=>c.handleIncomingSignal(u.senderId,u.data)),n>2&&console.log(`Node initialized: ${this.id}`)}#e=(t,e)=>{let n=this.cryptoCodex.isPublicNode(t);if(this.publicUrl)return;this.verbose>(this.publicUrl||n?3:2)&&console.log(`(${this.id}) ${e==="in"?"Incoming":"Outgoing"} connection established with peer ${t}`),(!n&&!this.cryptoCodex.isPublicNode(this.id)||e==="in")&&this.sendMessage(t,this.id,"handshake");let s=this.peerStore.neighborsList.length>=pt.TARGET_NEIGHBORS_COUNT+this.halfTarget,o=()=>{pt.ON_CONNECT_DISPATCH.OVER_NEIGHBORED&&s&&this.broadcast([],{type:"over_neighbored"}),pt.ON_CONNECT_DISPATCH.SHARE_HISTORY&&this.peerStore.getUpdatedPeerConnectionsCount(t)<=1&&this.gossip.sendGossipHistoryToPeer(t)};pt.ON_CONNECT_DISPATCH.DELAY?setTimeout(o,pt.ON_CONNECT_DISPATCH.DELAY):o()};#t=(t,e)=>{if(!this.peerStore.neighborsList.length){for(let s in this.peerStore.connecting)this.peerStore.kickPeer(s,0,"no_neighbors_left");for(let s in this.offerManager.offers)this.offerManager.offers[s].timestamp=0}let n=this.cryptoCodex.isPublicNode(t);if(this.peerStore.connected[t])return;this.verbose>(this.publicUrl||n?3:2)&&console.log(`(${this.id}) ${e==="in"?"Incoming":"Outgoing"} connection closed with peer ${t}`)};#n=(t,e)=>{let n=new Uint8Array(e);n[0]>127?this.gossip.handleGossipMessage(t,n):this.messager.handleDirectMessage(t,n)};get publicUrl(){return this.services?.publicUrl}get time(){return ct.time}async#r(){if(!(typeof RTCPeerConnection<"u"))return(await import("wrtc")).default}async start(){let t=await this.#r();return this.offerManager.assignTransportWrtc(t),await ct.sync(this.verbose),this.started=!0,Ft.AVOID_INTERVALS||(this.arbiterInterval=setInterval(()=>this.arbiter.tick(),1e3),this.peerStoreInterval=setInterval(()=>{this.peerStore.cleanupExpired(),this.peerStore.offerManager.tick()},2500),this.publicUrl)||(this.enhancerInterval=setInterval(()=>this.topologist.tick(),pt.LOOP_DELAY),this.topologist.tryConnectNextBootstrap()),!0}broadcast(t,e={}){let{topic:n,HOPS:r}=e;return this.gossip.broadcastToAll(t,n,r)}async sendMessage(t,e,n={}){let{type:r,spread:s}=n,o=r==="private_message"?await this.getPeerPrivacy(t):null;return o&&!o?.sharedSecret?(this.verbose>1&&console.warn(`Cannot send encrypted message to ${t} as shared secret could not be established.`),!1):this.messager.sendUnicast(t,e,r,s)}async sendPrivateMessage(t,e,n={}){let r={...n,type:"private_message"};return this.sendMessage(t,e,r)}async getPeerPrivacy(t,e=20){let n=this.peerStore.privacy[t];n||(this.peerStore.privacy[t]=this.cryptoCodex.generateEphemeralX25519Keypair(),n=this.peerStore.privacy[t]);let r=1;for(;!n?.sharedSecret&&e-- >0;)r--<=0&&(this.messager.sendUnicast(t,n.myPub,"privacy"),r=5),await new Promise(s=>setTimeout(s,100)),n=this.peerStore.privacy[t];return n}#i(t){let{senderId:e,data:n}=t;if(!(n instanceof Uint8Array)){this.verbose>1&&console.warn(`Received invalid privacy message from ${e}, expected peer public key as Uint8Array.`);return}this.peerStore.privacy[e]?.sharedSecret||(this.peerStore.privacy[e]||(this.peerStore.privacy[e]=this.cryptoCodex.generateEphemeralX25519Keypair()),this.peerStore.privacy[e].peerPub=n,this.peerStore.privacy[e].sharedSecret=this.cryptoCodex.computeX25519SharedSecret(this.peerStore.privacy[e].myPriv,n),this.messager.sendUnicast(e,this.peerStore.privacy[e].myPub,"privacy"))}async tryConnectToPeer(t="toto",e=10){if(!this.peerStore.connected[t])do{let{offerHash:n,readyOffer:r}=this.peerStore.offerManager.bestReadyOffer(100,!1);if(!n||!r)await new Promise(s=>setTimeout(s,1e3));else{this.messager.sendUnicast(t,{signal:r.signal,offerHash:n},"signal_offer");return}}while(e-- >0)}destroy(){this.enhancerInterval&&clearInterval(this.enhancerInterval),this.enhancerInterval=null,this.peerStoreInterval&&clearInterval(this.peerStoreInterval),this.peerStoreInterval=null,this.peerStore.destroy(),this.wsServer&&this.wsServer.close(),this.stunServer&&this.stunServer.close()}onPeerConnect(t){this.peerStore.on("connect",t)}onPeerDisconnect(t){this.peerStore.on("disconnect",t)}onMessageData(t,e=!0){this.messager.on("message",t),e&&this.messager.on("private_message",t)}onPrivateMessageData(t){this.messager.on("private_message",t)}onGossipData(t){this.gossip.on("gossip",t)}onSignalOffer(t){this.messager.on("signal_offer",t),this.gossip.on("signal_offer",t)}onSignalAnswer(t){this.messager.on("signal_answer",t)}kickPeer(t,e="kicked_by_node"){this.peerStore.kickPeer(t,0,e)}banPeer(t,e=6e4,n="banished_by_node"){this.arbiter.trustBalances[t]=0,this.arbiter.adjustTrust(t,-e,n)}};await Mt();function ps(a,t){for(let e in t)t[e]&&typeof t[e]=="object"&&!Array.isArray(t[e])?(a[e]=a[e]||{},ps(a[e],t[e])):a[e]=t[e]}var Bs={CLOCK:ct,CONFIG:Tr,Converter:Ot,mergeConfig:ps,Node:Xe,createNode:Es,CryptoCodex:Te,ed25519:Ne,x25519:We,chacha20poly1305:je,xchacha20poly1305:Is,randomBytes:Ve,Argon2Unified:ve,xxHash32:Ce};var Dc=Bs;typeof window<"u"&&(window.HiveP2P=Bs);export{ve as Argon2Unified,ct as CLOCK,Tr as CONFIG,Ot as Converter,Te as CryptoCodex,Xe as Node,je as chacha20poly1305,Es as createNode,Dc as default,Ne as ed25519,ps as mergeConfig,Ve as randomBytes,We as x25519,Is as xchacha20poly1305,Ce as xxHash32};
3
+ `,s:"-",t:"0 0",a:["group:BUNDLE..."]}};return e==="offer"&&this.PENDING_OFFERS[t]?.[r]?{success:!1,signalData:null,reason:`There is already a pending offer with the same SDP ID for transport ID: ${t} (extreme case)`}:(e==="offer"&&!this.PENDING_OFFERS[t]&&(this.PENDING_OFFERS[t]={}),e==="offer"&&(this.PENDING_OFFERS[t][r]=s),e==="answer"&&(this.PENDING_ANSWERS[t]=s),{success:!0,signalData:s,reason:"na"})}#n(t,e){let{transportId:n,type:r,sdp:s}=t;if(n===void 0)return{success:!1,reason:"Missing transportId in signal data."};if(r!=="offer"&&r!=="answer")return{success:!1,reason:`Invalid signal type: ${r}.`};if(r==="offer"&&(!this.PENDING_OFFERS[n]||!this.PENDING_OFFERS[n][s.id]))return{success:!1,reason:`No pending offer found for transport ID: ${n} with SDP ID: ${s.id}`};if(r==="answer"&&(!this.PENDING_ANSWERS[n]||this.PENDING_ANSWERS[n].sdp.id!==s.id))return{success:!1,reason:`No pending answer found for transport ID: ${n} with SDP ID: ${s.id}`};if(r==="offer"&&Math.random()<Ft.ICE_OFFER_FAILURE_RATE)return{success:!1,reason:`Simulated failure for 'offer' signal from ${n} to ${e}`};if(r==="answer"&&Math.random()<Ft.ICE_ANSWER_FAILURE_RATE)return{success:!1,reason:`Simulated failure for 'answer' signal from ${n} to ${e}`};if(r==="offer")return this.buildSDP(e,"answer"),{success:!0,reason:"na"};delete this.PENDING_OFFERS[e],delete this.PENDING_ANSWERS[n];let o=this.sandbox.linkInstances(e,n);return{success:!o,reason:o||"na"}}buildSDP(t,e){let n={min:Ft.ICE_DELAY.min,max:Ft.ICE_DELAY.max},r=Math.floor(Math.random()*(n.max-n.min+1))+n.min;this.sdpToBuild.push({transportId:t,type:e,time:Date.now()+r})}digestSignal(t,e){this.signalsToDigest.push({signalData:t,receiverId:e})}},en=class{verbose=Bt.DEFAULT_VERBOSE;wsGlobalIndex=1;tGlobalIndex=1;transportInstances={};wsConnections={};publicWsServers={};inscribeWebSocketServer(t,e){this.publicWsServers[t]=e}removeWebSocketServer(t){delete this.publicWsServers[t]}inscribeWsConnection(t){let e=(this.wsGlobalIndex++).toString();t.id=e,this.wsConnections[e]=t,this.verbose>3&&console.log(`[SANDBOX] Inscribed wsConnection: ${t.id}`)}connectToWebSocketServer(t,e,n){let r=this.wsConnections[e],s=this.publicWsServers[t];if(!r||!s||s.closing||s.clients.size>=s.maxClients)return;let o=new n(s,e);s.clients.add(o),o.init(r.id),s.callbacks.connection.forEach(f=>f(o)),r.init(o.id)}inscribeInstance(t){let e=(this.tGlobalIndex++).toString();t.id=e,this.transportInstances[e]=t,this.verbose>3&&console.log(`[SANDBOX] Inscribed transport: ${e}`)}linkInstances(t,e){let[n,r]=[this.transportInstances[t],this.transportInstances[e]];if(!n||!r)return`Missing transport instances: ${t}=>${!!n}, ${e}=>${!!r}`;if(n.initiator&&r.initiator)return`Both transport instances cannot be initiators: ${t}, ${e}`;if(n.destroying||r.destroying)return`One of the transport instances is destroying: ${t}=>${n.destroying}, ${e}=>${r.destroying}`;if(n.destroyed||r.destroyed)return`One of the transport instances is destroyed: ${t}=>${n.destroyed}, ${e}=>${r.destroyed}`;if(n.remoteId)return`Transport instance tA: ${t} is already linked to remoteId: ${n.remoteId}`;if(r.remoteId)return`Transport instance tB: ${e} is already linked to remoteId: ${r.remoteId}`;n.remoteId=e,r.remoteId=t,this.verbose>2&&console.log(`[SANDBOX] Linked transports: ${t} <-> ${e}`),n.callbacks.connect.forEach(s=>s()),r.callbacks.connect.forEach(s=>s())}sendData(t,e,n){if(t===void 0)return{success:!1,reason:`Cannot send message from id: ${t}`};if(e===void 0)return{success:!1,reason:`Cannot send message to id: ${e}`};let r=this.transportInstances[t];if(!r)return{success:!1,reason:`No transport instance found for id: ${t}`};if(!r.remoteId)return{success:!1,reason:`Transport instance ${t} is not linked to any remoteId`};if(r.id!==t)return{success:!1,reason:`Wrong id for senderInstance ${t} !== ${r.id}`};if(r.remoteId!==e)return{success:!1,reason:`Transport instance ${t} is not linked to remoteId: ${e}`};let s=this.transportInstances[e];return s?s.remoteId?s.id!==e?{success:!1,reason:`Wrong id for remoteInstance ${t} !== ${e}`}:s.remoteId!==t?{success:!1,reason:`Transport instance ${t} is not linked to remoteId: ${e}`}:(this.enqueueTransportData(t,e,n),{success:!0,reason:"na"}):{success:!1,reason:`Transport instance ${e} is not linked to any remoteId`}:{success:!1,reason:`No transport instance found for id: ${e}`}}destroyTransportAndAssociatedTransport(t){let e=this.transportInstances[t];if(!e)return;let n=e.remoteId,r=n?this.transportInstances[n]:null;this.verbose>3&&console.log(`[SANDBOX] Destroying transports: ${t}`),e&&r&&(this.verbose>2&&console.log(`[SANDBOX] Destroying linked transports: ${t} & ${n}`),delete this.transportInstances[n],r.destroy(`Remote transport instance ${t} closed the connection.`)),delete this.transportInstances[t],e.close()}batchSize=2500;messageQueueSync=[];queueIndex=0;messageQueue=new Array(1e5);queueStart=0;queueEnd=0;queueCount=0;processMessageQueueSync(){let t=this.messageQueueSync.length;if(t===0)return;let e=this.batchSize;t>this.batchSize*3&&(e=this.batchSize*1.5),t>this.batchSize*5&&(e=this.batchSize*2),t>this.batchSize*10&&(e=this.batchSize*3),t>this.batchSize*20&&(e=this.batchSize*5),e=Math.round(e);let n=Math.min(this.queueIndex+e,t);for(let s=this.queueIndex;s<n;s++){let[o,f,h,c]=this.messageQueueSync[s];o==="transport_data"?this.#e(f,h,c):o==="ws_message"&&this.#t(f,h,c)}if(this.queueIndex=n,this.queueIndex<5e3)return;let r=this.messageQueueSync.length>5e4;r&&console.warn(`[SANDBOX] Message queue is very long: ${this.messageQueueSync.length} messages pending.`),r&&(this.queueIndex+=this.batchSize),this.messageQueueSync=this.messageQueueSync.slice(this.queueIndex),this.queueIndex=0}async processMessageQueue(){if(this.queueCount===0)return;let t=this.batchSize;this.queueCount>this.batchSize*3&&(t=this.batchSize*1.5),this.queueCount>this.batchSize*5&&(t=this.batchSize*2),this.queueCount>this.batchSize*10&&(t=this.batchSize*3),this.queueCount>this.batchSize*20&&(t=this.batchSize*5);let e=Math.min(t,this.queueCount);for(let n=0;n<e;n++){let r=this.messageQueue[this.queueStart];this.queueStart=(this.queueStart+1)%this.messageQueue.length;let[s,o,f,h]=r;s==="transport_data"?this.#e(o,f,h):s==="ws_message"&&this.#t(o,f,h)}await new Promise(n=>setTimeout(n,0)),this.queueCount-=e}#e(t,e,n){let[r,s]=[this.transportInstances[t],this.transportInstances[e]];if(!r||!s||r.destroying||s.destroying){r?.close(),s?.close();return}if(r.destroyed){s.close();return}if(s.destroyed){r.close();return}for(let o of s.callbacks.data)o(n)}#t(t,e,n){let[r,s]=[this.wsConnections[t],this.wsConnections[e]];if(!s||!r||s.readyState!==1||r.readyState!==1){s?.close(),r?.close();return}if(s.onmessage)s.onmessage({data:n});else for(let o of s.callbacks.message)o(n)}enqueueTransportDataSync(t,e,n){this.messageQueueSync.push(["transport_data",t,e,n])}enqueueWsMessageSync(t,e,n){this.messageQueueSync.push(["ws_message",t,e,n])}enqueueTransportData(t,e,n){this.messageQueue[this.queueEnd]=["transport_data",t,e,n],this.queueEnd=(this.queueEnd+1)%this.messageQueue.length,this.queueCount++,this.queueCount===this.messageQueue.length&&(console.error("[SANDBOX] Message queue overflow, dropping oldest messages."),this.queueStart=(this.queueStart+this.batchSize)%this.messageQueue.length,this.queueCount-=this.batchSize)}enqueueWsMessage(t,e,n){this.messageQueue[this.queueEnd]=["ws_message",t,e,n],this.queueEnd=(this.queueEnd+1)%this.messageQueue.length,this.queueCount++,this.queueCount===this.messageQueue.length&&(console.error("[SANDBOX] Message queue overflow, dropping oldest messages."),this.queueStart=(this.queueStart+this.batchSize)%this.messageQueue.length,this.queueCount-=this.batchSize)}}});var On={};Le(On,{ICE_CANDIDATE_EMITTER:()=>Mn,SANDBOX:()=>vt,TEST_WS_EVENT_MANAGER:()=>nn,TestTransport:()=>kn,TestWsConnection:()=>rn,TestWsServer:()=>Ln});var Fn,rn,Ln,kn,vt,Mn,nn,Gn=Et(async()=>{await Mt();await Ur();Fn=class{toInit=[];toClose=[];toError=[];initTick(){if(this.toInit.length<=0)return;let t=Date.now(),e=this.toInit;this.toInit=[];for(let{connId:n,time:r}of e)r>t?this.toInit.push({connId:n,time:r}):this.#e(n)}closeTick(){if(this.toClose.length<=0)return;let t=Date.now(),e=this.toClose;this.toClose=[];for(let{wsId:n,remoteWsId:r,time:s}of e)s>t?this.toClose.push({wsId:n,remoteWsId:r,time:s}):this.#t(n,r)}cleanerTick(){let t=Date.now();for(let e of Object.values(vt.publicWsServers))for(let n of e.clients)n.readyState===3&&e.clients.delete(n)}errorTick(){if(this.toError.length<=0)return;let t=Date.now(),e=this.toError;this.toError=[];for(let{wsId:n,error:r,time:s}of e)s>t?this.toError.push({wsId:n,error:r,time:s}):vt.wsConnections[n]?.dispatchError(r)}#e(t){let e=vt.wsConnections[t];e&&vt.connectToWebSocketServer(e.url,e.id,rn)}#t(t,e){let n=vt.wsConnections[t],r=vt.wsConnections[e];n?.onclose?.(),r?.onclose?.();for(let s of n?.callbacks?.close||[])s();for(let s of r?.callbacks?.close||[])s()}scheduleInit(t,e=500){this.toInit.push({connId:t,time:Date.now()+e})}scheduleClose(t,e,n=100){this.toClose.push({wsId:t,remoteWsId:e,time:Date.now()+n})}scheduleError(t,e,n=100){this.toError.push({wsId:t,error:e,time:Date.now()+n})}},rn=class{id;isTestTransport=!0;remoteWsId=null;remoteId=!1;delayBeforeConnectionTry=500;readyState=0;url;callbacks={message:[],close:[],error:[]};onmessage;onopen;onclose;onerror;constructor(t="ws://...",e){vt.inscribeWsConnection(this),!e&&(this.url=t,nn.scheduleInit(this.id,this.delayBeforeConnectionTry))}init(t){if(!this.readyState===3||this.remoteWsId){this.close(),console.error(`WebSocket instance already closed or connected: ${this.id}`),nn.scheduleError(this.id,`Failed to connect to WebSocket server at ${this.url}`,1e3);return}this.remoteWsId=t,this.readyState=1,this.onopen&&this.onopen()}on(t,e){if(!this.callbacks[t])return console.error(`Unknown event: ${t}`);this.callbacks[t].push(e)}close(){if(this.readyState===3)return;this.readyState=3;let t=vt.wsConnections[this.remoteWsId];t&&(t.readyState=3),this.remoteWsId&&nn.scheduleClose(this.id,this.remoteWsId,100)}send(t){if(!this.remoteWsId){console.error(`No WebSocket server found for URL: ${this.url}`),this.close();return}vt.enqueueWsMessage(this.id,this.remoteWsId,t)}dispatchError(t){this.callbacks.error.forEach(e=>e(t)),this.onerror&&this.onerror(t)}},Ln=class{url;clients=new Set;maxClients=Pt.MAX_WS_IN_CONNS||20;callbacks={connection:[],close:[],error:[]};constructor(t={port,host:domain}){this.url=`ws://${t.host}:${t.port}`,vt.inscribeWebSocketServer(this.url,this)}on(t,e){if(!this.callbacks[t])return console.error(`Unknown event: ${t}`);this.callbacks[t].push(e)}close(){if(!this.closing){this.closing=!0,vt.removeWebSocketServer(this.url);for(let t of this.callbacks.close)t()}}},kn=class{destroying;destroyed;id=null;isTestTransport=!0;remoteId=null;remoteWsId=!1;callbacks={connect:[],close:[],data:[],signal:[],error:[]};initiator;trickle;wrtc;constructor(t={initiator:!1,trickle:!0,wrtc:null,timeout:5e3}){vt.inscribeInstance(this),this.initiator=t.initiator,this.trickle=t.trickle,this.wrtc=t.wrtc,this.initiator&&Mn.buildSDP(this.id,"offer")}on(t,e){this.callbacks[t]&&this.callbacks[t].push(e)}dispatchError(t){this.callbacks.error.forEach(e=>e(new Error(t)))}signal(t){if(!this.destroying){if(this.destroyed)throw new Error(`Transport instance already destroyed: ${this.id}`);if(this.remoteId)return this.dispatchError(`Transport instance already connected to a remote ID: ${this.remoteId}`);if(!t.sdp||!t.sdp.id)return this.dispatchError("Invalid remote SDP:",t);if(t.type==="answer"&&!this.initiator)return this.dispatchError("Invalid remote SDP type: expecting an answer.");if(t.type==="offer"&&this.initiator)return this.dispatchError("Invalid remote SDP type: expecting an offer.");Mn.digestSignal(t,this.id)}}send(t){let{success:e,reason:n}=vt.sendData(this.id,this.remoteId,t);e||this.destroy(n)}close(){this.destroy()}destroy(t=null){this.destroying||(this.destroying=!0,t&&this.dispatchError(t),this.callbacks.close?.forEach(e=>e()),vt.destroyTransportAndAssociatedTransport(this.id),this.destroyed=!0,this.destroying=!1)}},vt=new en,Mn=new tn(vt),nn=new Fn});function ye(a){return a instanceof Uint8Array||ArrayBuffer.isView(a)&&a.constructor.name==="Uint8Array"}function Qe(a,t=""){if(!Number.isSafeInteger(a)||a<0){let e=t&&`"${t}" `;throw new Error(`${e}expected integer >= 0, got ${a}`)}}function rt(a,t,e=""){let n=ye(a),r=a?.length,s=t!==void 0;if(!n||s&&r!==t){let o=e&&`"${e}" `,f=s?` of length ${t}`:"",h=n?`length=${r}`:`type=${typeof a}`;throw new Error(o+"expected Uint8Array"+f+", got "+h)}return a}function qn(a,t=!0){if(a.destroyed)throw new Error("Hash instance has been destroyed");if(t&&a.finished)throw new Error("Hash#digest() has already been called")}function Lr(a,t){rt(a,void 0,"digestInto() output");let e=t.outputLen;if(a.length<e)throw new Error('"digestInto() output" expected to be of length >='+e)}function Me(...a){for(let t=0;t<a.length;t++)a[t].fill(0)}function hn(a){return new DataView(a.buffer,a.byteOffset,a.byteLength)}function ie(a){if(rt(a),kr)return a.toHex();let t="";for(let e=0;e<a.length;e++)t+=Fs[a[e]];return t}function Fr(a){if(a>=jt._0&&a<=jt._9)return a-jt._0;if(a>=jt.A&&a<=jt.F)return a-(jt.A-10);if(a>=jt.a&&a<=jt.f)return a-(jt.a-10)}function se(a){if(typeof a!="string")throw new Error("hex string expected, got "+typeof a);if(kr)return Uint8Array.fromHex(a);let t=a.length,e=t/2;if(t%2)throw new Error("hex string expected, got unpadded hex of length "+t);let n=new Uint8Array(e);for(let r=0,s=0;r<e;r++,s+=2){let o=Fr(a.charCodeAt(s)),f=Fr(a.charCodeAt(s+1));if(o===void 0||f===void 0){let h=a[s]+a[s+1];throw new Error('hex string expected, got non-hex character "'+h+'" at index '+s)}n[r]=o*16+f}return n}function dt(...a){let t=0;for(let n=0;n<a.length;n++){let r=a[n];rt(r),t+=r.length}let e=new Uint8Array(t);for(let n=0,r=0;n<a.length;n++){let s=a[n];e.set(s,r),r+=s.length}return e}function Mr(a,t={}){let e=(r,s)=>a(s).update(r).digest(),n=a(void 0);return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=r=>a(r),Object.assign(e,t),Object.freeze(e)}function Nt(a=32){let t=typeof globalThis=="object"?globalThis.crypto:null;if(typeof t?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");return t.getRandomValues(new Uint8Array(a))}var kr,Fs,jt,Or,be=Et(()=>{kr=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Fs=Array.from({length:256},(a,t)=>t.toString(16).padStart(2,"0"));jt={_0:48,_9:57,A:65,F:70,a:97,f:102};Or=a=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,a])})});var un,Rt,Gr=Et(()=>{be();un=class{blockLen;outputLen;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(t,e,n,r){this.blockLen=t,this.outputLen=e,this.padOffset=n,this.isLE=r,this.buffer=new Uint8Array(t),this.view=hn(this.buffer)}update(t){qn(this),rt(t);let{view:e,buffer:n,blockLen:r}=this,s=t.length;for(let o=0;o<s;){let f=Math.min(r-this.pos,s-o);if(f===r){let h=hn(t);for(;r<=s-o;o+=r)this.process(h,o);continue}n.set(t.subarray(o,o+f),this.pos),this.pos+=f,o+=f,this.pos===r&&(this.process(e,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){qn(this),Lr(t,this),this.finished=!0;let{buffer:e,view:n,blockLen:r,isLE:s}=this,{pos:o}=this;e[o++]=128,Me(this.buffer.subarray(o)),this.padOffset>r-o&&(this.process(n,0),o=0);for(let I=o;I<r;I++)e[I]=0;n.setBigUint64(r-8,BigInt(this.length*8),s),this.process(n,0);let f=hn(t),h=this.outputLen;if(h%4)throw new Error("_sha2: outputLen must be aligned to 32bit");let c=h/4,u=this.get();if(c>u.length)throw new Error("_sha2: outputLen bigger than state");for(let I=0;I<c;I++)f.setUint32(4*I,u[I],s)}digest(){let{buffer:t,outputLen:e}=this;this.digestInto(t);let n=t.slice(0,e);return this.destroy(),n}_cloneInto(t){t||=new this.constructor,t.set(...this.get());let{blockLen:e,buffer:n,length:r,finished:s,destroyed:o,pos:f}=this;return t.destroyed=o,t.finished=s,t.length=r,t.pos=f,r%e&&t.buffer.set(n),t}clone(){return this._cloneInto()}},Rt=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209])});function Ls(a,t=!1){return t?{h:Number(a&gn),l:Number(a>>Hr&gn)}:{h:Number(a>>Hr&gn)|0,l:Number(a&gn)|0}}function Pr(a,t=!1){let e=a.length,n=new Uint32Array(e),r=new Uint32Array(e);for(let s=0;s<e;s++){let{h:o,l:f}=Ls(a[s],t);[n[s],r[s]]=[o,f]}return[n,r]}function Yt(a,t,e,n){let r=(t>>>0)+(n>>>0);return{h:a+e+(r/2**32|0)|0,l:r|0}}var gn,Hr,Kn,Jn,oe,Ae,Oe,Ge,Yr,qr,Kr,Jr,Wr,jr,Vr=Et(()=>{gn=BigInt(4294967295),Hr=BigInt(32);Kn=(a,t,e)=>a>>>e,Jn=(a,t,e)=>a<<32-e|t>>>e,oe=(a,t,e)=>a>>>e|t<<32-e,Ae=(a,t,e)=>a<<32-e|t>>>e,Oe=(a,t,e)=>a<<64-e|t>>>e-32,Ge=(a,t,e)=>a>>>e-32|t<<64-e;Yr=(a,t,e)=>(a>>>0)+(t>>>0)+(e>>>0),qr=(a,t,e,n)=>t+e+n+(a/2**32|0)|0,Kr=(a,t,e,n)=>(a>>>0)+(t>>>0)+(e>>>0)+(n>>>0),Jr=(a,t,e,n,r)=>t+e+n+r+(a/2**32|0)|0,Wr=(a,t,e,n,r)=>(a>>>0)+(t>>>0)+(e>>>0)+(n>>>0)+(r>>>0),jr=(a,t,e,n,r,s)=>t+e+n+r+s+(a/2**32|0)|0});var Xr,Ms,Os,Zt,zt,Wn,jn,ae,$r=Et(()=>{Gr();Vr();be();Xr=Pr(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(a=>BigInt(a))),Ms=Xr[0],Os=Xr[1],Zt=new Uint32Array(80),zt=new Uint32Array(80),Wn=class extends un{constructor(t){super(128,t,16,!1)}get(){let{Ah:t,Al:e,Bh:n,Bl:r,Ch:s,Cl:o,Dh:f,Dl:h,Eh:c,El:u,Fh:I,Fl:l,Gh:C,Gl:B,Hh:y,Hl:m}=this;return[t,e,n,r,s,o,f,h,c,u,I,l,C,B,y,m]}set(t,e,n,r,s,o,f,h,c,u,I,l,C,B,y,m){this.Ah=t|0,this.Al=e|0,this.Bh=n|0,this.Bl=r|0,this.Ch=s|0,this.Cl=o|0,this.Dh=f|0,this.Dl=h|0,this.Eh=c|0,this.El=u|0,this.Fh=I|0,this.Fl=l|0,this.Gh=C|0,this.Gl=B|0,this.Hh=y|0,this.Hl=m|0}process(t,e){for(let E=0;E<16;E++,e+=4)Zt[E]=t.getUint32(e),zt[E]=t.getUint32(e+=4);for(let E=16;E<80;E++){let S=Zt[E-15]|0,b=zt[E-15]|0,R=oe(S,b,1)^oe(S,b,8)^Kn(S,b,7),v=Ae(S,b,1)^Ae(S,b,8)^Jn(S,b,7),Q=Zt[E-2]|0,w=zt[E-2]|0,D=oe(Q,w,19)^Oe(Q,w,61)^Kn(Q,w,6),k=Ae(Q,w,19)^Ge(Q,w,61)^Jn(Q,w,6),x=Kr(v,k,zt[E-7],zt[E-16]),N=Jr(x,R,D,Zt[E-7],Zt[E-16]);Zt[E]=N|0,zt[E]=x|0}let{Ah:n,Al:r,Bh:s,Bl:o,Ch:f,Cl:h,Dh:c,Dl:u,Eh:I,El:l,Fh:C,Fl:B,Gh:y,Gl:m,Hh:g,Hl:p}=this;for(let E=0;E<80;E++){let S=oe(I,l,14)^oe(I,l,18)^Oe(I,l,41),b=Ae(I,l,14)^Ae(I,l,18)^Ge(I,l,41),R=I&C^~I&y,v=l&B^~l&m,Q=Wr(p,b,v,Os[E],zt[E]),w=jr(Q,g,S,R,Ms[E],Zt[E]),D=Q|0,k=oe(n,r,28)^Oe(n,r,34)^Oe(n,r,39),x=Ae(n,r,28)^Ge(n,r,34)^Ge(n,r,39),N=n&s^n&f^s&f,F=r&o^r&h^o&h;g=y|0,p=m|0,y=C|0,m=B|0,C=I|0,B=l|0,{h:I,l}=Yt(c|0,u|0,w|0,D|0),c=f|0,u=h|0,f=s|0,h=o|0,s=n|0,o=r|0;let O=Yr(D,x,F);n=qr(O,w,k,N),r=O|0}({h:n,l:r}=Yt(this.Ah|0,this.Al|0,n|0,r|0)),{h:s,l:o}=Yt(this.Bh|0,this.Bl|0,s|0,o|0),{h:f,l:h}=Yt(this.Ch|0,this.Cl|0,f|0,h|0),{h:c,l:u}=Yt(this.Dh|0,this.Dl|0,c|0,u|0),{h:I,l}=Yt(this.Eh|0,this.El|0,I|0,l|0),{h:C,l:B}=Yt(this.Fh|0,this.Fl|0,C|0,B|0),{h:y,l:m}=Yt(this.Gh|0,this.Gl|0,y|0,m|0),{h:g,l:p}=Yt(this.Hh|0,this.Hl|0,g|0,p|0),this.set(n,r,s,o,f,h,c,u,I,l,C,B,y,m,g,p)}roundClean(){Me(Zt,zt)}destroy(){Me(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},jn=class extends Wn{Ah=Rt[0]|0;Al=Rt[1]|0;Bh=Rt[2]|0;Bl=Rt[3]|0;Ch=Rt[4]|0;Cl=Rt[5]|0;Dh=Rt[6]|0;Dl=Rt[7]|0;Eh=Rt[8]|0;El=Rt[9]|0;Fh=Rt[10]|0;Fl=Rt[11]|0;Gh=Rt[12]|0;Gl=Rt[13]|0;Hh=Rt[14]|0;Hl=Rt[15]|0;constructor(){super(64)}},ae=Mr(()=>new jn,Or(3))});function dn(a,t=""){if(typeof a!="boolean"){let e=t&&`"${t}" `;throw new Error(e+"expected boolean, got type="+typeof a)}return a}function Gs(a){if(typeof a=="bigint"){if(!ln(a))throw new Error("positive bigint expected, got "+a)}else Qe(a);return a}function ce(a,t=""){if(!Number.isSafeInteger(a)){let e=t&&`"${t}" `;throw new Error(e+"expected safe integer, got type="+typeof a)}}function Zr(a){if(typeof a!="string")throw new Error("hex string expected, got "+typeof a);return a===""?Xn:BigInt("0x"+a)}function fe(a){return Zr(ie(a))}function Tt(a){return Zr(ie(ue(rt(a)).reverse()))}function he(a,t){Qe(t),a=Gs(a);let e=se(a.toString(16).padStart(t*2,"0"));if(e.length!==t)throw new Error("number too large");return e}function He(a,t){return he(a,t).reverse()}function zr(a,t){if(a.length!==t.length)return!1;let e=0;for(let n=0;n<a.length;n++)e|=a[n]^t[n];return e===0}function ue(a){return Uint8Array.from(a)}function Lt(a){return Uint8Array.from(a,(t,e)=>{let n=t.charCodeAt(0);if(t.length!==1||n>127)throw new Error(`string contains non-ASCII character "${a[e]}" with code ${n} at position ${e}`);return n})}function Hs(a,t,e){return ln(a)&&ln(t)&&ln(e)&&t<=a&&a<e}function we(a,t,e,n){if(!Hs(t,e,n))throw new Error("expected valid "+a+": "+e+" <= n < "+n+", got "+t)}function ti(a){let t;for(t=0;a>Xn;a>>=Vn,t+=1);return t}function Ht(a,t={},e={}){if(!a||typeof a!="object")throw new Error("expected valid options object");function n(s,o,f){let h=a[s];if(f&&h===void 0)return;let c=typeof h;if(c!==o||h===null)throw new Error(`param "${s}" is invalid: expected ${o}, got ${c}`)}let r=(s,o)=>Object.entries(s).forEach(([f,h])=>n(f,h,o));r(t,!1),r(e,!0)}function zn(a){let t=new WeakMap;return(e,...n)=>{let r=t.get(e);if(r!==void 0)return r;let s=a(e,...n);return t.set(e,s),s}}var Xn,Vn,ln,$n,Zn,te=Et(()=>{be();be();Xn=BigInt(0),Vn=BigInt(1);ln=a=>typeof a=="bigint"&&Xn<=a;$n=a=>(Vn<<BigInt(a))-Vn;Zn=()=>{throw new Error("not implemented")}});function ft(a,t){let e=a%t;return e>=Ut?e:t+e}function Gt(a,t,e){let n=a;for(;t-- >Ut;)n*=n,n%=e;return n}function ei(a,t){if(a===Ut)throw new Error("invert: expected non-zero number");if(t<=Ut)throw new Error("invert: expected positive modulus, got "+t);let e=ft(a,t),n=t,r=Ut,s=bt,o=bt,f=Ut;for(;e!==Ut;){let c=n/e,u=n%e,I=r-o*c,l=s-f*c;n=e,e=u,r=o,s=f,o=I,f=l}if(n!==bt)throw new Error("invert: does not exist");return ft(r,t)}function er(a,t,e){if(!a.eql(a.sqr(t),e))throw new Error("Cannot find square root")}function ai(a,t){let e=(a.ORDER+bt)/ii,n=a.pow(t,e);return er(a,n,t),n}function qs(a,t){let e=(a.ORDER-si)/oi,n=a.mul(t,ge),r=a.pow(n,e),s=a.mul(t,r),o=a.mul(a.mul(s,ge),r),f=a.mul(s,a.sub(o,a.ONE));return er(a,f,t),f}function Ks(a){let t=In(a),e=ci(a),n=e(t,t.neg(t.ONE)),r=e(t,n),s=e(t,t.neg(n)),o=(a+Ps)/Ai;return(f,h)=>{let c=f.pow(h,o),u=f.mul(c,n),I=f.mul(c,r),l=f.mul(c,s),C=f.eql(f.sqr(u),h),B=f.eql(f.sqr(I),h);c=f.cmov(c,u,C),u=f.cmov(l,I,B);let y=f.eql(f.sqr(u),h),m=f.cmov(c,u,y);return er(f,m,h),m}}function ci(a){if(a<ri)throw new Error("sqrt is not defined for small field");let t=a-bt,e=0;for(;t%ge===Ut;)t/=ge,e++;let n=ge,r=In(a);for(;ni(r,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(e===1)return ai;let s=r.pow(n,t),o=(t+bt)/ge;return function(h,c){if(h.is0(c))return c;if(ni(h,c)!==1)throw new Error("Cannot find square root");let u=e,I=h.mul(h.ONE,s),l=h.pow(c,t),C=h.pow(c,o);for(;!h.eql(l,h.ONE);){if(h.is0(l))return h.ZERO;let B=1,y=h.sqr(l);for(;!h.eql(y,h.ONE);)if(B++,y=h.sqr(y),B===u)throw new Error("Cannot find square root");let m=bt<<BigInt(u-B-1),g=h.pow(I,m);u=B,I=h.sqr(g),l=h.mul(l,I),C=h.mul(C,g)}return C}}function Js(a){return a%ii===ri?ai:a%oi===si?qs:a%Ai===Ys?Ks(a):ci(a)}function fi(a){let t={ORDER:"bigint",BYTES:"number",BITS:"number"},e=Ws.reduce((n,r)=>(n[r]="function",n),t);return Ht(a,e),a}function js(a,t,e){if(e<Ut)throw new Error("invalid exponent, negatives unsupported");if(e===Ut)return a.ONE;if(e===bt)return t;let n=a.ONE,r=t;for(;e>Ut;)e&bt&&(n=a.mul(n,r)),r=a.sqr(r),e>>=bt;return n}function me(a,t,e=!1){let n=new Array(t.length).fill(e?a.ZERO:void 0),r=t.reduce((o,f,h)=>a.is0(f)?o:(n[h]=o,a.mul(o,f)),a.ONE),s=a.inv(r);return t.reduceRight((o,f,h)=>a.is0(f)?o:(n[h]=a.mul(o,n[h]),a.mul(o,f)),s),n}function ni(a,t){let e=(a.ORDER-bt)/ge,n=a.pow(t,e),r=a.eql(n,a.ONE),s=a.eql(n,a.ZERO),o=a.eql(n,a.neg(a.ONE));if(!r&&!s&&!o)throw new Error("invalid Legendre symbol result");return r?1:s?0:-1}function Vs(a,t){t!==void 0&&Qe(t);let e=t!==void 0?t:a.toString(2).length,n=Math.ceil(e/8);return{nBitLength:e,nByteLength:n}}function In(a,t={}){return new tr(a,t)}function hi(a,t){if(!a.isOdd)throw new Error("Field doesn't have isOdd");let e=a.sqrt(t);return a.isOdd(e)?a.neg(e):e}function ui(a){if(typeof a!="bigint")throw new Error("field order must be bigint");let t=a.toString(2).length;return Math.ceil(t/8)}function nr(a){let t=ui(a);return t+Math.ceil(t/2)}function gi(a,t,e=!1){rt(a);let n=a.length,r=ui(t),s=nr(t);if(n<16||n<s||n>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+n);let o=e?Tt(a):fe(a),f=ft(o,t-bt)+bt;return e?He(f,r):he(f,r)}var Ut,bt,ge,ri,ii,si,Ps,oi,Ys,Ai,Vt,Ws,tr,Se=Et(()=>{te();Ut=BigInt(0),bt=BigInt(1),ge=BigInt(2),ri=BigInt(3),ii=BigInt(4),si=BigInt(5),Ps=BigInt(7),oi=BigInt(8),Ys=BigInt(9),Ai=BigInt(16);Vt=(a,t)=>(ft(a,t)&bt)===bt,Ws=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];tr=class{ORDER;BITS;BYTES;isLE;ZERO=Ut;ONE=bt;_lengths;_sqrt;_mod;constructor(t,e={}){if(t<=Ut)throw new Error("invalid field: expected ORDER > 0, got "+t);let n;this.isLE=!1,e!=null&&typeof e=="object"&&(typeof e.BITS=="number"&&(n=e.BITS),typeof e.sqrt=="function"&&(this.sqrt=e.sqrt),typeof e.isLE=="boolean"&&(this.isLE=e.isLE),e.allowedLengths&&(this._lengths=e.allowedLengths?.slice()),typeof e.modFromBytes=="boolean"&&(this._mod=e.modFromBytes));let{nBitLength:r,nByteLength:s}=Vs(t,n);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=t,this.BITS=r,this.BYTES=s,this._sqrt=void 0,Object.preventExtensions(this)}create(t){return ft(t,this.ORDER)}isValid(t){if(typeof t!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof t);return Ut<=t&&t<this.ORDER}is0(t){return t===Ut}isValidNot0(t){return!this.is0(t)&&this.isValid(t)}isOdd(t){return(t&bt)===bt}neg(t){return ft(-t,this.ORDER)}eql(t,e){return t===e}sqr(t){return ft(t*t,this.ORDER)}add(t,e){return ft(t+e,this.ORDER)}sub(t,e){return ft(t-e,this.ORDER)}mul(t,e){return ft(t*e,this.ORDER)}pow(t,e){return js(this,t,e)}div(t,e){return ft(t*ei(e,this.ORDER),this.ORDER)}sqrN(t){return t*t}addN(t,e){return t+e}subN(t,e){return t-e}mulN(t,e){return t*e}inv(t){return ei(t,this.ORDER)}sqrt(t){return this._sqrt||(this._sqrt=Js(this.ORDER)),this._sqrt(this,t)}toBytes(t){return this.isLE?He(t,this.BYTES):he(t,this.BYTES)}fromBytes(t,e=!1){rt(t);let{_lengths:n,BYTES:r,isLE:s,ORDER:o,_mod:f}=this;if(n){if(!n.includes(t.length)||t.length>r)throw new Error("Field.fromBytes: expected "+n+" bytes, got "+t.length);let c=new Uint8Array(r);c.set(t,s?0:c.length-t.length),t=c}if(t.length!==r)throw new Error("Field.fromBytes: expected "+r+" bytes, got "+t.length);let h=s?Tt(t):fe(t);if(f&&(h=ft(h,o)),!e&&!this.isValid(h))throw new Error("invalid field element: outside of range 0..ORDER");return h}invertBatch(t){return me(this,t)}cmov(t,e,n){return n?e:t}}});function li(a,t){let e=t.negate();return a?e:t}function Bn(a,t){let e=me(a.Fp,t.map(n=>n.Z));return t.map((n,r)=>a.fromAffine(n.toAffine(e[r])))}function pi(a,t){if(!Number.isSafeInteger(a)||a<=0||a>t)throw new Error("invalid window size, expected [1.."+t+"], got W="+a)}function rr(a,t){pi(a,t);let e=Math.ceil(t/a)+1,n=2**(a-1),r=2**a,s=$n(a),o=BigInt(a);return{windows:e,windowSize:n,mask:s,maxNumber:r,shiftBy:o}}function di(a,t,e){let{windowSize:n,mask:r,maxNumber:s,shiftBy:o}=e,f=Number(a&r),h=a>>o;f>n&&(f-=s,h+=or);let c=t*n,u=c+Math.abs(f)-1,I=f===0,l=f<0,C=t%2!==0;return{nextN:h,offset:u,isZero:I,isNeg:l,isNegF:C,offsetF:c}}function Xs(a,t){if(!Array.isArray(a))throw new Error("array expected");a.forEach((e,n)=>{if(!(e instanceof t))throw new Error("invalid point at index "+n)})}function $s(a,t){if(!Array.isArray(a))throw new Error("array of scalars expected");a.forEach((e,n)=>{if(!t.isValid(e))throw new Error("invalid scalar at index "+n)})}function sr(a){return Bi.get(a)||1}function Ii(a){if(a!==En)throw new Error("invalid wNAF")}function Ci(a,t,e){let n=a.Fn;Xs(t,a),$s(e,n);let r=t.length,s=e.length;if(r!==s)throw new Error("arrays of points and scalars must have equal length");let o=a.ZERO,f=ti(BigInt(r)),h=1;f>12?h=f-3:f>4?h=f-2:f>0&&(h=2);let c=$n(h),u=new Array(Number(c)+1).fill(o),I=Math.floor((n.BITS-1)/h)*h,l=o;for(let C=I;C>=0;C-=h){u.fill(o);for(let y=0;y<s;y++){let m=e[y],g=Number(m>>BigInt(C)&c);u[g]=u[g].add(t[y])}let B=o;for(let y=u.length-1,m=o;y>0;y--)m=m.add(u[y]),B=B.add(m);if(l=l.add(B),C!==0)for(let y=0;y<h;y++)l=l.double()}return l}function Ei(a,t,e){if(t){if(t.ORDER!==a)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return fi(t),t}else return In(a,{isLE:e})}function yi(a,t,e={},n){if(n===void 0&&(n=a==="edwards"),!t||typeof t!="object")throw new Error(`expected valid ${a} CURVE object`);for(let h of["p","n","h"]){let c=t[h];if(!(typeof c=="bigint"&&c>En))throw new Error(`CURVE.${h} must be positive bigint`)}let r=Ei(t.p,e.Fp,n),s=Ei(t.n,e.Fn,n),f=["Gx","Gy","a",a==="weierstrass"?"b":"d"];for(let h of f)if(!r.isValid(t[h]))throw new Error(`CURVE.${h} must be valid field element of CURVE.Fp`);return t=Object.freeze(Object.assign({},t)),{CURVE:t,Fp:r,Fn:s}}function Cn(a,t){return function(n){let r=a(n);return{secretKey:r,publicKey:t(r)}}}var En,or,ir,Bi,pn,yn=Et(()=>{te();Se();En=BigInt(0),or=BigInt(1);ir=new WeakMap,Bi=new WeakMap;pn=class{BASE;ZERO;Fn;bits;constructor(t,e){this.BASE=t.BASE,this.ZERO=t.ZERO,this.Fn=t.Fn,this.bits=e}_unsafeLadder(t,e,n=this.ZERO){let r=t;for(;e>En;)e&or&&(n=n.add(r)),r=r.double(),e>>=or;return n}precomputeWindow(t,e){let{windows:n,windowSize:r}=rr(e,this.bits),s=[],o=t,f=o;for(let h=0;h<n;h++){f=o,s.push(f);for(let c=1;c<r;c++)f=f.add(o),s.push(f);o=f.double()}return s}wNAF(t,e,n){if(!this.Fn.isValid(n))throw new Error("invalid scalar");let r=this.ZERO,s=this.BASE,o=rr(t,this.bits);for(let f=0;f<o.windows;f++){let{nextN:h,offset:c,isZero:u,isNeg:I,isNegF:l,offsetF:C}=di(n,f,o);n=h,u?s=s.add(li(l,e[C])):r=r.add(li(I,e[c]))}return Ii(n),{p:r,f:s}}wNAFUnsafe(t,e,n,r=this.ZERO){let s=rr(t,this.bits);for(let o=0;o<s.windows&&n!==En;o++){let{nextN:f,offset:h,isZero:c,isNeg:u}=di(n,o,s);if(n=f,!c){let I=e[h];r=r.add(u?I.negate():I)}}return Ii(n),r}getPrecomputes(t,e,n){let r=ir.get(e);return r||(r=this.precomputeWindow(e,t),t!==1&&(typeof n=="function"&&(r=n(r)),ir.set(e,r))),r}cached(t,e,n){let r=sr(t);return this.wNAF(r,this.getPrecomputes(r,t,n),e)}unsafe(t,e,n,r){let s=sr(t);return s===1?this._unsafeLadder(t,e,r):this.wNAFUnsafe(s,this.getPrecomputes(s,t,n),e,r)}createCache(t,e){pi(e,this.bits),Bi.set(t,e),ir.delete(t)}hasCache(t){return sr(t)!==1}}});function zs(a,t,e,n){let r=a.sqr(e),s=a.sqr(n),o=a.add(a.mul(t.a,r),s),f=a.add(a.ONE,a.mul(t.d,a.mul(r,s)));return a.eql(o,f)}function Qi(a,t={}){let e=yi("edwards",a,t,t.FpFnLE),{Fp:n,Fn:r}=e,s=e.CURVE,{h:o}=s;Ht(t,{},{uvRatio:"function"});let f=Ar<<BigInt(r.BYTES*8)-wt,h=m=>n.create(m),c=t.uvRatio||((m,g)=>{try{return{isValid:!0,value:n.sqrt(n.div(m,g))}}catch{return{isValid:!1,value:ee}}});if(!zs(n,s,s.Gx,s.Gy))throw new Error("bad curve params: generator point");function u(m,g,p=!1){let E=p?wt:ee;return we("coordinate "+m,g,E,f),g}function I(m){if(!(m instanceof B))throw new Error("EdwardsPoint expected")}let l=zn((m,g)=>{let{X:p,Y:E,Z:S}=m,b=m.is0();g==null&&(g=b?Zs:n.inv(S));let R=h(p*g),v=h(E*g),Q=n.mul(S,g);if(b)return{x:ee,y:wt};if(Q!==wt)throw new Error("invZ was invalid");return{x:R,y:v}}),C=zn(m=>{let{a:g,d:p}=s;if(m.is0())throw new Error("bad point: ZERO");let{X:E,Y:S,Z:b,T:R}=m,v=h(E*E),Q=h(S*S),w=h(b*b),D=h(w*w),k=h(v*g),x=h(w*h(k+Q)),N=h(D+h(p*h(v*Q)));if(x!==N)throw new Error("bad point: equation left != right (1)");let F=h(E*S),O=h(b*R);if(F!==O)throw new Error("bad point: equation left != right (2)");return!0});class B{static BASE=new B(s.Gx,s.Gy,wt,h(s.Gx*s.Gy));static ZERO=new B(ee,wt,wt,ee);static Fp=n;static Fn=r;X;Y;Z;T;constructor(g,p,E,S){this.X=u("x",g),this.Y=u("y",p),this.Z=u("z",E,!0),this.T=u("t",S),Object.freeze(this)}static CURVE(){return s}static fromAffine(g){if(g instanceof B)throw new Error("extended point not allowed");let{x:p,y:E}=g||{};return u("x",p),u("y",E),new B(p,E,wt,h(p*E))}static fromBytes(g,p=!1){let E=n.BYTES,{a:S,d:b}=s;g=ue(rt(g,E,"point")),dn(p,"zip215");let R=ue(g),v=g[E-1];R[E-1]=v&-129;let Q=Tt(R),w=p?f:n.ORDER;we("point.y",Q,ee,w);let D=h(Q*Q),k=h(D-wt),x=h(b*D-S),{isValid:N,value:F}=c(k,x);if(!N)throw new Error("bad point: invalid y coordinate");let O=(F&wt)===wt,Y=(v&128)!==0;if(!p&&F===ee&&Y)throw new Error("bad point: x=0 and x_0=1");return Y!==O&&(F=h(-F)),B.fromAffine({x:F,y:Q})}static fromHex(g,p=!1){return B.fromBytes(se(g),p)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(g=8,p=!0){return y.createCache(this,g),p||this.multiply(Ar),this}assertValidity(){C(this)}equals(g){I(g);let{X:p,Y:E,Z:S}=this,{X:b,Y:R,Z:v}=g,Q=h(p*v),w=h(b*S),D=h(E*v),k=h(R*S);return Q===w&&D===k}is0(){return this.equals(B.ZERO)}negate(){return new B(h(-this.X),this.Y,this.Z,h(-this.T))}double(){let{a:g}=s,{X:p,Y:E,Z:S}=this,b=h(p*p),R=h(E*E),v=h(Ar*h(S*S)),Q=h(g*b),w=p+E,D=h(h(w*w)-b-R),k=Q+R,x=k-v,N=Q-R,F=h(D*x),O=h(k*N),Y=h(D*N),H=h(x*k);return new B(F,O,H,Y)}add(g){I(g);let{a:p,d:E}=s,{X:S,Y:b,Z:R,T:v}=this,{X:Q,Y:w,Z:D,T:k}=g,x=h(S*Q),N=h(b*w),F=h(v*E*k),O=h(R*D),Y=h((S+b)*(Q+w)-x-N),H=O-F,q=O+F,P=h(N-p*x),X=h(Y*H),K=h(q*P),V=h(Y*P),tt=h(H*q);return new B(X,K,tt,V)}subtract(g){return this.add(g.negate())}multiply(g){if(!r.isValidNot0(g))throw new Error("invalid scalar: expected 1 <= sc < curve.n");let{p,f:E}=y.cached(this,g,S=>Bn(B,S));return Bn(B,[p,E])[0]}multiplyUnsafe(g,p=B.ZERO){if(!r.isValid(g))throw new Error("invalid scalar: expected 0 <= sc < curve.n");return g===ee?B.ZERO:this.is0()||g===wt?this:y.unsafe(this,g,E=>Bn(B,E),p)}isSmallOrder(){return this.multiplyUnsafe(o).is0()}isTorsionFree(){return y.unsafe(this,s.n).is0()}toAffine(g){return l(this,g)}clearCofactor(){return o===wt?this:this.multiplyUnsafe(o)}toBytes(){let{x:g,y:p}=this.toAffine(),E=n.toBytes(p);return E[E.length-1]|=g&wt?128:0,E}toHex(){return ie(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}let y=new pn(B,r.BITS);return B.BASE.precompute(8),B}function bi(a,t,e={}){if(typeof t!="function")throw new Error('"hash" function param is required');Ht(e,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",mapToCurve:"function"});let{prehash:n}=e,{BASE:r,Fp:s,Fn:o}=a,f=e.randomBytes||Nt,h=e.adjustScalarBytes||(Q=>Q),c=e.domain||((Q,w,D)=>{if(dn(D,"phflag"),w.length||D)throw new Error("Contexts/pre-hash are not supported");return Q});function u(Q){return o.create(Tt(Q))}function I(Q){let w=E.secretKey;rt(Q,E.secretKey,"secretKey");let D=rt(t(Q),2*w,"hashedSecretKey"),k=h(D.slice(0,w)),x=D.slice(w,2*w),N=u(k);return{head:k,prefix:x,scalar:N}}function l(Q){let{head:w,prefix:D,scalar:k}=I(Q),x=r.multiply(k),N=x.toBytes();return{head:w,prefix:D,scalar:k,point:x,pointBytes:N}}function C(Q){return l(Q).pointBytes}function B(Q=Uint8Array.of(),...w){let D=dt(...w);return u(t(c(D,rt(Q,void 0,"context"),!!n)))}function y(Q,w,D={}){Q=rt(Q,void 0,"message"),n&&(Q=n(Q));let{prefix:k,scalar:x,pointBytes:N}=l(w),F=B(D.context,k,Q),O=r.multiply(F).toBytes(),Y=B(D.context,O,N,Q),H=o.create(F+Y*x);if(!o.isValid(H))throw new Error("sign failed: invalid s");let q=dt(O,o.toBytes(H));return rt(q,E.signature,"result")}let m={zip215:!0};function g(Q,w,D,k=m){let{context:x,zip215:N}=k,F=E.signature;Q=rt(Q,F,"signature"),w=rt(w,void 0,"message"),D=rt(D,E.publicKey,"publicKey"),N!==void 0&&dn(N,"zip215"),n&&(w=n(w));let O=F/2,Y=Q.subarray(0,O),H=Tt(Q.subarray(O,F)),q,P,X;try{q=a.fromBytes(D,N),P=a.fromBytes(Y,N),X=r.multiplyUnsafe(H)}catch{return!1}if(!N&&q.isSmallOrder())return!1;let K=B(x,P.toBytes(),q.toBytes(),w);return P.add(q.multiplyUnsafe(K)).subtract(X).clearCofactor().is0()}let p=s.BYTES,E={secretKey:p,publicKey:p,signature:2*p,seed:p};function S(Q=f(E.seed)){return rt(Q,E.seed,"seed")}function b(Q){return ye(Q)&&Q.length===o.BYTES}function R(Q,w){try{return!!a.fromBytes(Q,w)}catch{return!1}}let v={getExtendedPublicKey:l,randomSecretKey:S,isValidSecretKey:b,isValidPublicKey:R,toMontgomery(Q){let{y:w}=a.fromBytes(Q),D=E.publicKey,k=D===32;if(!k&&D!==57)throw new Error("only defined for 25519 and 448");let x=k?s.div(wt+w,wt-w):s.div(w-wt,w+wt);return s.toBytes(x)},toMontgomerySecret(Q){let w=E.secretKey;rt(Q,w);let D=t(Q.subarray(0,w));return h(D).subarray(0,w)}};return Object.freeze({keygen:Cn(S,C),getPublicKey:C,sign:y,verify:g,utils:v,Point:a,lengths:E})}var ee,wt,Ar,Zs,Qn,wi=Et(()=>{te();yn();ee=BigInt(0),wt=BigInt(1),Ar=BigInt(2),Zs=BigInt(8);Qn=class{static BASE;static ZERO;static Fp;static Fn;ep;constructor(t){this.ep=t}static fromBytes(t){Zn()}static fromHex(t){Zn()}get x(){return this.toAffine().x}get y(){return this.toAffine().y}clearCofactor(){return this}assertValidity(){this.ep.assertValidity()}toAffine(t){return this.ep.toAffine(t)}toHex(){return ie(this.toBytes())}toString(){return this.toHex()}isTorsionFree(){return!0}isSmallOrder(){return!1}add(t){return this.assertSame(t),this.init(this.ep.add(t.ep))}subtract(t){return this.assertSame(t),this.init(this.ep.subtract(t.ep))}multiply(t){return this.init(this.ep.multiply(t))}multiplyUnsafe(t){return this.init(this.ep.multiplyUnsafe(t))}double(){return this.init(this.ep.double())}negate(){return this.init(this.ep.negate())}precompute(t,e){return this.init(this.ep.precompute(t,e))}}});function ne(a,t){if(ce(a),ce(t),a<0||a>=1<<8*t)throw new Error("invalid I2OSP input: "+a);let e=Array.from({length:t}).fill(0);for(let n=t-1;n>=0;n--)e[n]=a&255,a>>>=8;return new Uint8Array(e)}function eo(a,t){let e=new Uint8Array(a.length);for(let n=0;n<a.length;n++)e[n]=a[n]^t[n];return e}function mi(a){if(!ye(a)&&typeof a!="string")throw new Error("DST must be Uint8Array or ascii string");return typeof a=="string"?Lt(a):a}function bn(a,t,e,n){rt(a),ce(e),t=mi(t),t.length>255&&(t=n(dt(Lt("H2C-OVERSIZE-DST-"),t)));let{outputLen:r,blockLen:s}=n,o=Math.ceil(e/r);if(e>65535||o>255)throw new Error("expand_message_xmd: invalid lenInBytes");let f=dt(t,ne(t.length,1)),h=ne(0,s),c=ne(e,2),u=new Array(o),I=n(dt(h,a,c,ne(0,1),f));u[0]=n(dt(I,ne(1,1),f));for(let C=1;C<=o;C++){let B=[eo(I,u[C-1]),ne(C+1,1),f];u[C]=n(dt(...B))}return dt(...u).slice(0,e)}function no(a,t,e,n,r){if(rt(a),ce(e),t=mi(t),t.length>255){let s=Math.ceil(2*n/8);t=r.create({dkLen:s}).update(Lt("H2C-OVERSIZE-DST-")).update(t).digest()}if(e>65535||t.length>255)throw new Error("expand_message_xof: invalid lenInBytes");return r.create({dkLen:e}).update(a).update(ne(e,2)).update(t).update(ne(t.length,1)).digest()}function ar(a,t,e){Ht(e,{p:"bigint",m:"number",k:"number",hash:"function"});let{p:n,k:r,m:s,hash:o,expand:f,DST:h}=e;ce(o.outputLen,"valid hash"),rt(a),ce(t);let c=n.toString(2).length,u=Math.ceil((c+r)/8),I=t*s*u,l;if(f==="xmd")l=bn(a,h,I,o);else if(f==="xof")l=no(a,h,I,r,o);else if(f==="_internal_pass")l=a;else throw new Error('expand must be "xmd" or "xof"');let C=new Array(t);for(let B=0;B<t;B++){let y=new Array(s);for(let m=0;m<s;m++){let g=u*(m+B*s),p=l.subarray(g,g+u);y[m]=ft(to(p),n)}C[B]=y}return C}function Si(a,t,e){if(typeof t!="function")throw new Error("mapToCurve() must be defined");function n(s){return a.fromAffine(t(s))}function r(s){let o=s.clearCofactor();return o.equals(a.ZERO)?a.ZERO:(o.assertValidity(),o)}return{defaults:Object.freeze(e),Point:a,hashToCurve(s,o){let f=Object.assign({},e,o),h=ar(s,2,f),c=n(h[0]),u=n(h[1]);return r(c.add(u))},encodeToCurve(s,o){let f=e.encodeDST?{DST:e.encodeDST}:{},h=Object.assign({},e,f,o),c=ar(s,1,h),u=n(c[0]);return r(u)},mapToCurve(s){if(e.m===1){if(typeof s!="bigint")throw new Error("expected bigint (m=1)");return r(n([s]))}if(!Array.isArray(s))throw new Error("expected array of bigints");for(let o of s)if(typeof o!="bigint")throw new Error("expected array of bigints");return r(n(s))},hashToScalar(s,o){let f=a.Fn.ORDER,h=Object.assign({},e,{p:f,m:1,DST:Pe},o);return ar(s,1,h)[0][0]}}}var to,Pe,cr=Et(()=>{te();Se();to=fe;Pe=Lt("HashToScalar-")});function ro(a){return Ht(a,{adjustScalarBytes:"function",powPminus2:"function"}),Object.freeze({...a})}function _i(a){let t=ro(a),{P:e,type:n,adjustScalarBytes:r,powPminus2:s,randomBytes:o}=t,f=n==="x25519";if(!f&&n!=="x448")throw new Error("invalid type");let h=o||Nt,c=f?255:448,u=f?32:56,I=BigInt(f?9:5),l=BigInt(f?121665:39081),C=f?wn**BigInt(254):wn**BigInt(447),B=f?BigInt(8)*wn**BigInt(251)-_e:BigInt(4)*wn**BigInt(445)-_e,y=C+B+_e,m=F=>ft(F,e),g=p(I);function p(F){return He(m(F),u)}function E(F){let O=ue(rt(F,u,"uCoordinate"));return f&&(O[31]&=127),m(Tt(O))}function S(F){return Tt(r(ue(rt(F,u,"scalar"))))}function b(F,O){let Y=D(E(O),S(F));if(Y===Ye)throw new Error("invalid private or public key received");return p(Y)}function R(F){return b(F,g)}let v=R,Q=b;function w(F,O,Y){let H=m(F*(O-Y));return O=m(O-H),Y=m(Y+H),{x_2:O,x_3:Y}}function D(F,O){we("u",F,Ye,e),we("scalar",O,C,y);let Y=O,H=F,q=_e,P=Ye,X=F,K=_e,V=Ye;for(let et=BigInt(c-1);et>=Ye;et--){let at=Y>>et&_e;V^=at,{x_2:q,x_3:X}=w(V,q,X),{x_2:P,x_3:K}=w(V,P,K),V=at;let nt=q+P,It=m(nt*nt),ut=q-P,mt=m(ut*ut),kt=It-mt,yt=X+K,Dt=X-K,T=m(Dt*nt),G=m(yt*ut),j=T+G,M=T-G;X=m(j*j),K=m(H*m(M*M)),q=m(It*mt),P=m(kt*(It+m(l*kt)))}({x_2:q,x_3:X}=w(V,q,X)),{x_2:P,x_3:K}=w(V,P,K);let tt=s(P);return m(q*tt)}let k={secretKey:u,publicKey:u,seed:u},x=(F=h(u))=>(rt(F,k.seed,"seed"),F),N={randomSecretKey:x};return Object.freeze({keygen:Cn(x,v),getSharedSecret:Q,getPublicKey:v,scalarMult:b,scalarMultBase:R,utils:N,GuBytes:g.slice(),lengths:k})}var Ye,_e,wn,Ri=Et(()=>{te();yn();Se();Ye=BigInt(0),_e=BigInt(1),wn=BigInt(2)});function xi(a){Ht(a,{name:"string",hash:"function",hashToScalar:"function",hashToGroup:"function"});let{name:t,Point:e,hash:n}=a,{Fn:r}=e,s=(x,N)=>a.hashToGroup(x,{DST:dt(Lt("HashToGroup-"),N)}),o=(x,N)=>a.hashToScalar(x,{DST:dt(Pe,N)}),f=(x=Nt)=>{let N=gi(x(nr(r.ORDER)),r.ORDER,r.isLE);return r.isLE?Tt(N):fe(N)},h=(x,N)=>Ci(e,x,N),c=x=>dt(Lt("OPRFV1-"),new Uint8Array([x]),Lt("-"+t)),u=c(0),I=c(1),l=c(2);function C(...x){let N=[];for(let F of x)typeof F=="number"?N.push(he(F,2)):typeof F=="string"?N.push(Lt(F)):(rt(F),N.push(he(F.length,2),F));return dt(...N)}let B=(...x)=>n(C(...x,"Finalize"));function y(x,N,F,O){let Y=x.toBytes(),H=n(C(Y,dt(Lt("Seed-"),O))),q=[];for(let P=0;P<N.length;P++){let X=N[P].toBytes(),K=F[P].toBytes(),V=o(C(H,P,X,K,"Composite"),O);q.push(V)}return q}function m(x,N,F,O){let Y=y(x,N,F,O),H=h(N,Y),q=h(F,Y);return{M:H,Z:q}}function g(x,N,F,O,Y){let H=y(N,F,O,Y),q=h(F,H),P=q.multiply(x);return{M:q,Z:P}}function p(x,N,F,O,Y,H){let[q,P,X,K,V]=[x,N,F,O,Y].map(tt=>tt.toBytes());return o(C(q,P,X,K,V,"Challenge"),H)}function E(x,N,F,O,Y,H){let{M:q,Z:P}=g(N,F,O,Y,x),X=f(H),K=e.BASE.multiply(X),V=q.multiply(X),tt=p(F,q,P,K,V,x),et=r.sub(X,r.mul(tt,N));return dt(...[tt,et].map(at=>r.toBytes(at)))}function S(x,N,F,O,Y){rt(Y,2*r.BYTES);let{M:H,Z:q}=m(N,F,O,x),[P,X]=[Y.subarray(0,r.BYTES),Y.subarray(r.BYTES)].map(et=>r.fromBytes(et)),K=e.BASE.multiply(X).add(N.multiply(P)),V=H.multiply(X).add(q.multiply(P)),tt=p(N,H,q,K,V,x);if(!r.eql(P,tt))throw new Error("proof verification failed")}function b(){let x=f(),N=e.BASE.multiply(x);return{secretKey:r.toBytes(x),publicKey:N.toBytes()}}function R(x,N,F){let O=dt(Lt("DeriveKeyPair"),x),Y=dt(N,C(F),Uint8Array.of(0));for(let H=0;H<=255;H++){Y[Y.length-1]=H;let q=a.hashToScalar(Y,{DST:O});if(!r.is0(q))return{secretKey:r.toBytes(q),publicKey:e.BASE.multiply(q).toBytes()}}throw new Error("Cannot derive key")}function v(x,N,F=Nt){let O=f(F),Y=s(N,x);if(Y.equals(e.ZERO))throw new Error("Input point at infinity");let H=Y.multiply(O);return{blind:r.toBytes(O),blinded:H.toBytes()}}function Q(x,N,F){let O=r.fromBytes(N),Y=s(F,x);if(Y.equals(e.ZERO))throw new Error("Input point at infinity");let H=Y.multiply(O).toBytes();return B(F,H)}let w={generateKeyPair:b,deriveKeyPair:(x,N)=>R(u,x,N),blind:(x,N=Nt)=>v(u,x,N),blindEvaluate(x,N){let F=r.fromBytes(x);return e.fromBytes(N).multiply(F).toBytes()},finalize(x,N,F){let O=r.fromBytes(N),H=e.fromBytes(F).multiply(r.inv(O)).toBytes();return B(x,H)},evaluate:(x,N)=>Q(u,x,N)};return Object.freeze({name:t,oprf:w,voprf:{generateKeyPair:b,deriveKeyPair:(x,N)=>R(I,x,N),blind:(x,N=Nt)=>v(I,x,N),blindEvaluateBatch(x,N,F,O=Nt){if(!Array.isArray(F))throw new Error("expected array");let Y=r.fromBytes(x),H=e.fromBytes(N),q=F.map(e.fromBytes),P=q.map(K=>K.multiply(Y)),X=E(I,Y,H,q,P,O);return{evaluated:P.map(K=>K.toBytes()),proof:X}},blindEvaluate(x,N,F,O=Nt){let Y=this.blindEvaluateBatch(x,N,[F],O);return{evaluated:Y.evaluated[0],proof:Y.proof}},finalizeBatch(x,N,F){if(!Array.isArray(x))throw new Error("expected array");let O=e.fromBytes(N),Y=x.map(q=>q.blinded).map(e.fromBytes),H=x.map(q=>q.evaluated).map(e.fromBytes);return S(I,O,Y,H,F),x.map(q=>w.finalize(q.input,q.blind,q.evaluated))},finalize(x,N,F,O,Y,H){return this.finalizeBatch([{input:x,blind:N,evaluated:F,blinded:O}],Y,H)[0]},evaluate:(x,N)=>Q(I,x,N)},poprf:x=>{let N=o(C("Info",x),l),F=e.BASE.multiply(N);return{generateKeyPair:b,deriveKeyPair:(O,Y)=>R(l,O,Y),blind(O,Y,H=Nt){let q=e.fromBytes(Y),P=F.add(q);if(P.equals(e.ZERO))throw new Error("tweakedKey point at infinity");let X=f(H),K=s(O,l);if(K.equals(e.ZERO))throw new Error("Input point at infinity");let V=K.multiply(X);return{blind:r.toBytes(X),blinded:V.toBytes(),tweakedKey:P.toBytes()}},blindEvaluateBatch(O,Y,H=Nt){if(!Array.isArray(Y))throw new Error("expected array");let q=r.fromBytes(O),P=r.add(q,N),X=r.inv(P),K=Y.map(e.fromBytes),V=K.map(at=>at.multiply(X)),tt=e.BASE.multiply(P),et=E(l,P,tt,V,K,H);return{evaluated:V.map(at=>at.toBytes()),proof:et}},blindEvaluate(O,Y,H=Nt){let q=this.blindEvaluateBatch(O,[Y],H);return{evaluated:q.evaluated[0],proof:q.proof}},finalizeBatch(O,Y,H){if(!Array.isArray(O))throw new Error("expected array");let q=O.map(P=>P.evaluated).map(e.fromBytes);return S(l,e.fromBytes(H),q,O.map(P=>P.blinded).map(e.fromBytes),Y),O.map((P,X)=>{let K=r.fromBytes(P.blind),V=q[X].multiply(r.inv(K)).toBytes();return B(P.input,x,V)})},finalize(O,Y,H,q,P,X){return this.finalizeBatch([{input:O,blind:Y,evaluated:H,blinded:q}],P,X)[0]},evaluate(O,Y){let H=r.fromBytes(O),q=s(Y,l);if(q.equals(e.ZERO))throw new Error("Input point at infinity");let P=r.add(H,N),X=r.inv(P),K=q.multiply(X).toBytes();return B(Y,x,K)}}},__tests:{Fn:r}})}var Di=Et(()=>{te();yn();cr();Se();});var Hi={};Le(Hi,{ED25519_TORSION_SUBGROUP:()=>Qo,_map_to_curve_elligator2_curve25519:()=>Gi,ed25519:()=>so,ed25519_hasher:()=>go,ed25519ctx:()=>oo,ed25519ph:()=>Ao,ristretto255:()=>Co,ristretto255_hasher:()=>Sn,ristretto255_oprf:()=>yo,x25519:()=>ao});function Li(a){let t=BigInt(10),e=BigInt(20),n=BigInt(40),r=BigInt(80),s=Kt,f=a*a%s*a%s,h=Gt(f,mn,s)*f%s,c=Gt(h,qt,s)*a%s,u=Gt(c,Fi,s)*c%s,I=Gt(u,t,s)*u%s,l=Gt(I,e,s)*I%s,C=Gt(l,n,s)*l%s,B=Gt(C,r,s)*C%s,y=Gt(B,r,s)*C%s,m=Gt(y,t,s)*u%s;return{pow_p_5_8:Gt(m,mn,s)*a%s,b2:f}}function ki(a){return a[0]&=248,a[31]&=127,a[31]|=64,a}function dr(a,t){let e=Kt,n=ft(t*t*t,e),r=ft(n*n*t,e),s=Li(a*r).pow_p_5_8,o=ft(a*n*s,e),f=ft(t*o*o,e),h=o,c=ft(o*fr,e),u=f===a,I=f===ft(-a,e),l=f===ft(-a*fr,e);return u&&(o=h),(I||l)&&(o=c),Vt(o,e)&&(o=ft(-o,e)),{isValid:u||I,value:o}}function Oi(a,t,e){if(t.length>255)throw new Error("Context is too big");return dt(Lt("SigEd25519 no Ed25519 collisions"),new Uint8Array([e?1:0,t.length]),t,a)}function Ir(a){return bi(Xt,ae,Object.assign({adjustScalarBytes:ki},a))}function Gi(a){let t=(Kt-Fi)/gr,e=BigInt(486662),n=$.sqr(a);n=$.mul(n,mn);let r=$.add(n,$.ONE),s=$.neg(e),o=$.sqr(r),f=$.mul(o,r),h=$.mul(n,e);h=$.mul(h,s),h=$.add(h,o),h=$.mul(h,s);let c=$.sqr(f);o=$.sqr(c),c=$.mul(c,f),c=$.mul(c,h),o=$.mul(o,c);let u=$.pow(o,t);u=$.mul(u,c);let I=$.mul(u,vi);o=$.sqr(u),o=$.mul(o,f);let l=$.eql(o,h),C=$.cmov(I,u,l),B=$.mul(s,n),y=$.mul(u,a);y=$.mul(y,fo);let m=$.mul(y,vi),g=$.mul(h,n);o=$.sqr(y),o=$.mul(o,f);let p=$.eql(o,g),E=$.cmov(m,y,p);o=$.sqr(C),o=$.mul(o,f);let S=$.eql(o,h),b=$.cmov(B,s,S),R=$.cmov(E,C,S),v=$.isOdd(R);return R=$.cmov(R,$.neg(R),S!==v),{xMn:b,xMd:r,yMn:R,yMd:qt}}function uo(a){let{xMn:t,xMd:e,yMn:n,yMd:r}=Gi(a),s=$.mul(t,r);s=$.mul(s,ho);let o=$.mul(e,n),f=$.sub(t,e),h=$.add(t,e),c=$.mul(o,h),u=$.eql(c,$.ZERO);s=$.cmov(s,$.ZERO,u),o=$.cmov(o,$.ONE,u),f=$.cmov(f,$.ONE,u),h=$.cmov(h,$.ONE,u);let[I,l]=me($,[o,h],!0);return{x:$.mul(s,I),y:$.mul(f,l)}}function Ti(a){let{d:t}=lr,e=Kt,n=g=>$.create(g),r=n(hr*a*a),s=n((r+qt)*Eo),o=BigInt(-1),f=n((o-t*r)*n(r+t)),{isValid:h,value:c}=dr(s,f),u=n(c*a);Vt(u,e)||(u=n(-u)),h||(c=u),h||(o=r);let I=n(o*(r-qt)*po-f),l=c*c,C=n((c+c)*f),B=n(I*lo),y=n(qt-l),m=n(qt+l);return new Xt(n(C*m),n(y*B),n(B*m),n(C*y))}var io,qt,mn,Ui,Fi,gr,Kt,lr,fr,Xt,$,Mi,so,oo,Ao,ao,co,fo,vi,ho,go,hr,lo,Io,Eo,po,Ni,Bo,ur,Re,Co,Sn,yo,Qo,Pi=Et(()=>{$r();be();wi();cr();Se();Ri();Di();te();io=BigInt(0),qt=BigInt(1),mn=BigInt(2),Ui=BigInt(3),Fi=BigInt(5),gr=BigInt(8),Kt=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),lr={p:Kt,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:gr,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};fr=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");Xt=Qi(lr,{uvRatio:dr}),$=Xt.Fp,Mi=Xt.Fn;so=Ir({}),oo=Ir({domain:Oi}),Ao=Ir({domain:Oi,prehash:ae}),ao=(()=>{let a=Kt;return _i({P:a,type:"x25519",powPminus2:t=>{let{pow_p_5_8:e,b2:n}=Li(t);return ft(Gt(e,Ui,a)*n,a)},adjustScalarBytes:ki})})(),co=(Kt+Ui)/gr,fo=$.pow(mn,co),vi=$.sqrt($.neg($.ONE));ho=hi($,$.neg(BigInt(486664)));go=Si(Xt,a=>uo(a[0]),{DST:"edwards25519_XMD:SHA-512_ELL2_RO_",encodeDST:"edwards25519_XMD:SHA-512_ELL2_NU_",p:Kt,m:1,k:128,expand:"xmd",hash:ae}),hr=fr,lo=BigInt("25063068953384623474111414158702152701244531502492656460079210482610430750235"),Io=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),Eo=BigInt("1159843021668779879193775521855586647937357759715417654439879720876111806838"),po=BigInt("40440834346308536858101042469323190826248399146238708352240133220865137265952"),Ni=a=>dr(qt,a),Bo=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),ur=a=>$.create(Tt(a)&Bo);Re=class a extends Qn{static BASE=new a(Xt.BASE);static ZERO=new a(Xt.ZERO);static Fp=$;static Fn=Mi;constructor(t){super(t)}static fromAffine(t){return new a(Xt.fromAffine(t))}assertSame(t){if(!(t instanceof a))throw new Error("RistrettoPoint expected")}init(t){return new a(t)}static fromBytes(t){rt(t,32);let{a:e,d:n}=lr,r=Kt,s=S=>$.create(S),o=ur(t);if(!zr($.toBytes(o),t)||Vt(o,r))throw new Error("invalid ristretto255 encoding 1");let f=s(o*o),h=s(qt+e*f),c=s(qt-e*f),u=s(h*h),I=s(c*c),l=s(e*n*u-I),{isValid:C,value:B}=Ni(s(l*I)),y=s(B*c),m=s(B*y*l),g=s((o+o)*y);Vt(g,r)&&(g=s(-g));let p=s(h*m),E=s(g*p);if(!C||Vt(E,r)||p===io)throw new Error("invalid ristretto255 encoding 2");return new a(new Xt(g,p,qt,E))}static fromHex(t){return a.fromBytes(se(t))}toBytes(){let{X:t,Y:e,Z:n,T:r}=this.ep,s=Kt,o=m=>$.create(m),f=o(o(n+e)*o(n-e)),h=o(t*e),c=o(h*h),{value:u}=Ni(o(f*c)),I=o(u*f),l=o(u*h),C=o(I*l*r),B;if(Vt(r*C,s)){let m=o(e*hr),g=o(t*hr);t=m,e=g,B=o(I*Io)}else B=l;Vt(t*C,s)&&(e=o(-e));let y=o((n-e)*B);return Vt(y,s)&&(y=o(-y)),$.toBytes(y)}equals(t){this.assertSame(t);let{X:e,Y:n}=this.ep,{X:r,Y:s}=t.ep,o=c=>$.create(c),f=o(e*s)===o(n*r),h=o(n*s)===o(e*r);return f||h}is0(){return this.equals(a.ZERO)}},Co={Point:Re},Sn={Point:Re,hashToCurve(a,t){let e=t?.DST||"ristretto255_XMD:SHA-512_R255MAP_RO_",n=bn(a,e,64,ae);return Sn.deriveToCurve(n)},hashToScalar(a,t={DST:Pe}){let e=bn(a,t.DST,64,ae);return Mi.create(Tt(e))},deriveToCurve(a){rt(a,64);let t=ur(a.subarray(0,32)),e=Ti(t),n=ur(a.subarray(32,64)),r=Ti(n);return new Re(e.add(r))}},yo=xi({name:"ristretto255-SHA512",Point:Re,hash:ae,hashToGroup:Sn.hashToCurve,hashToScalar:Sn.hashToScalar}),Qo=["0100000000000000000000000000000000000000000000000000000000000000","c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a","0000000000000000000000000000000000000000000000000000000000000080","26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05","ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f","26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85","0000000000000000000000000000000000000000000000000000000000000000","c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa"]});var Zi={};Le(Zi,{abool:()=>qe,abytes:()=>gt,aexists:()=>_n,anumber:()=>le,aoutput:()=>Er,bytesToHex:()=>pr,bytesToNumberBE:()=>mo,bytesToUtf8:()=>_o,checkOpts:()=>Cr,clean:()=>Wt,complexOverlapBytes:()=>Ro,concatBytes:()=>Ke,copyBytes:()=>de,createView:()=>Ki,equalBytes:()=>yr,getOutput:()=>xn,hexToBytes:()=>ji,hexToNumber:()=>Br,isAligned32:()=>$i,isBytes:()=>qi,isLE:()=>Ji,managedNonce:()=>xo,numberToBytesBE:()=>Vi,overlapBytes:()=>Xi,randomBytes:()=>Dn,u32:()=>Jt,u64Lengths:()=>Qr,u8:()=>bo,utf8ToBytes:()=>So,wrapCipher:()=>Rn});function qi(a){return a instanceof Uint8Array||ArrayBuffer.isView(a)&&a.constructor.name==="Uint8Array"}function qe(a){if(typeof a!="boolean")throw new Error(`boolean expected, not ${a}`)}function le(a){if(!Number.isSafeInteger(a)||a<0)throw new Error("positive integer expected, got "+a)}function gt(a,t,e=""){let n=qi(a),r=a?.length,s=t!==void 0;if(!n||s&&r!==t){let o=e&&`"${e}" `,f=s?` of length ${t}`:"",h=n?`length=${r}`:`type=${typeof a}`;throw new Error(o+"expected Uint8Array"+f+", got "+h)}return a}function _n(a,t=!0){if(a.destroyed)throw new Error("Hash instance has been destroyed");if(t&&a.finished)throw new Error("Hash#digest() has already been called")}function Er(a,t){gt(a,void 0,"output");let e=t.outputLen;if(a.length<e)throw new Error("digestInto() expects output buffer of length at least "+e)}function bo(a){return new Uint8Array(a.buffer,a.byteOffset,a.byteLength)}function Jt(a){return new Uint32Array(a.buffer,a.byteOffset,Math.floor(a.byteLength/4))}function Wt(...a){for(let t=0;t<a.length;t++)a[t].fill(0)}function Ki(a){return new DataView(a.buffer,a.byteOffset,a.byteLength)}function pr(a){if(gt(a),Wi)return a.toHex();let t="";for(let e=0;e<a.length;e++)t+=wo[a[e]];return t}function Yi(a){if(a>=$t._0&&a<=$t._9)return a-$t._0;if(a>=$t.A&&a<=$t.F)return a-($t.A-10);if(a>=$t.a&&a<=$t.f)return a-($t.a-10)}function ji(a){if(typeof a!="string")throw new Error("hex string expected, got "+typeof a);if(Wi)return Uint8Array.fromHex(a);let t=a.length,e=t/2;if(t%2)throw new Error("hex string expected, got unpadded hex of length "+t);let n=new Uint8Array(e);for(let r=0,s=0;r<e;r++,s+=2){let o=Yi(a.charCodeAt(s)),f=Yi(a.charCodeAt(s+1));if(o===void 0||f===void 0){let h=a[s]+a[s+1];throw new Error('hex string expected, got non-hex character "'+h+'" at index '+s)}n[r]=o*16+f}return n}function Br(a){if(typeof a!="string")throw new Error("hex string expected, got "+typeof a);return BigInt(a===""?"0":"0x"+a)}function mo(a){return Br(pr(a))}function Vi(a,t){return ji(a.toString(16).padStart(t*2,"0"))}function So(a){if(typeof a!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(a))}function _o(a){return new TextDecoder().decode(a)}function Xi(a,t){return a.buffer===t.buffer&&a.byteOffset<t.byteOffset+t.byteLength&&t.byteOffset<a.byteOffset+a.byteLength}function Ro(a,t){if(Xi(a,t)&&a.byteOffset<t.byteOffset)throw new Error("complex overlap of input and output is not supported")}function Ke(...a){let t=0;for(let n=0;n<a.length;n++){let r=a[n];gt(r),t+=r.length}let e=new Uint8Array(t);for(let n=0,r=0;n<a.length;n++){let s=a[n];e.set(s,r),r+=s.length}return e}function Cr(a,t){if(t==null||typeof t!="object")throw new Error("options must be defined");return Object.assign(a,t)}function yr(a,t){if(a.length!==t.length)return!1;let e=0;for(let n=0;n<a.length;n++)e|=a[n]^t[n];return e===0}function xn(a,t,e=!0){if(t===void 0)return new Uint8Array(a);if(t.length!==a)throw new Error('"output" expected Uint8Array of length '+a+", got: "+t.length);if(e&&!$i(t))throw new Error("invalid output, must be aligned");return t}function Qr(a,t,e){qe(e);let n=new Uint8Array(16),r=Ki(n);return r.setBigUint64(0,BigInt(t),e),r.setBigUint64(8,BigInt(a),e),n}function $i(a){return a.byteOffset%4===0}function de(a){return Uint8Array.from(a)}function Dn(a=32){let t=typeof globalThis=="object"?globalThis.crypto:null;if(typeof t?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");return t.getRandomValues(new Uint8Array(a))}function xo(a,t=Dn){let{nonceLength:e}=a;le(e);let n=(r,s)=>{let o=Ke(r,s);return s.fill(0),o};return((r,...s)=>({encrypt(o){gt(o);let f=t(e),h=a(r,f,...s).encrypt(o);return h instanceof Promise?h.then(c=>n(f,c)):n(f,h)},decrypt(o){gt(o);let f=o.subarray(0,e),h=o.subarray(e);return a(r,f,...s).decrypt(h)}}))}var Ji,Wi,wo,$t,Rn,xe=Et(()=>{Ji=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68,Wi=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",wo=Array.from({length:256},(a,t)=>t.toString(16).padStart(2,"0"));$t={_0:48,_9:57,A:65,F:70,a:97,f:102};Rn=(a,t)=>{function e(n,...r){if(gt(n,void 0,"key"),!Ji)throw new Error("Non little-endian hardware is not yet supported");if(a.nonceLength!==void 0){let u=r[0];gt(u,a.varSizeNonce?void 0:a.nonceLength,"nonce")}let s=a.tagLength;s&&r[1]!==void 0&&gt(r[1],void 0,"AAD");let o=t(n,...r),f=(u,I)=>{if(I!==void 0){if(u!==2)throw new Error("cipher output not supported");gt(I,void 0,"output")}},h=!1;return{encrypt(u,I){if(h)throw new Error("cannot encrypt() twice with same key + nonce");return h=!0,gt(u),f(o.encrypt.length,I),o.encrypt(u,I)},decrypt(u,I){if(gt(u),s&&u.length<s)throw new Error('"ciphertext" expected length bigger than tagLength='+s);return f(o.decrypt.length,I),o.decrypt(u,I)}}}return Object.assign(e,a),e}});function Z(a,t){return a<<t|a>>>32-t}function br(a){return a.byteOffset%4===0}function Fo(a,t,e,n,r,s,o,f){let h=r.length,c=new Uint8Array(vn),u=Jt(c),I=br(r)&&br(s),l=I?Jt(r):zi,C=I?Jt(s):zi;for(let B=0;B<h;o++){if(a(t,e,n,u,o,f),o>=es)throw new Error("arx: counter overflow");let y=Math.min(vn,h-B);if(I&&y===vn){let m=B/4;if(B%4!==0)throw new Error("arx: invalid block position");for(let g=0,p;g<Uo;g++)p=m+g,C[p]=l[p]^u[g];B+=vn;continue}for(let m=0,g;m<y;m++)g=B+m,s[g]=r[g]^c[m];B+=y}}function De(a,t){let{allowShortKeys:e,extendNonceFn:n,counterLength:r,counterRight:s,rounds:o}=Cr({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},t);if(typeof a!="function")throw new Error("core must be a function");return le(r),le(o),qe(s),qe(e),(f,h,c,u,I=0)=>{gt(f,void 0,"key"),gt(h,void 0,"nonce"),gt(c,void 0,"data");let l=c.length;if(u===void 0&&(u=new Uint8Array(l)),gt(u,void 0,"output"),le(I),I<0||I>=es)throw new Error("arx: counter overflow");if(u.length<l)throw new Error(`arx: output (${u.length}) is shorter than data (${l})`);let C=[],B=f.length,y,m;if(B===32)C.push(y=de(f)),m=To;else if(B===16&&e)y=new Uint8Array(32),y.set(f),y.set(f,16),m=No,C.push(y);else throw gt(f,32,"arx key"),new Error("invalid key size");br(h)||C.push(h=de(h));let g=Jt(y);if(n){if(h.length!==24)throw new Error("arx: extended nonce must be 24 bytes");n(m,g,Jt(h.subarray(0,16)),g),h=h.subarray(16)}let p=16-r;if(p!==h.length)throw new Error(`arx: nonce must be ${p} or 16 bytes`);if(p!==12){let S=new Uint8Array(12);S.set(h,s?0:12-h.length),h=S,C.push(h)}let E=Jt(h);return Fo(a,m,g,E,c,u,I,o),Wt(...C),u}}var ts,Do,vo,No,To,vn,Uo,es,zi,wr,mr,ns=Et(()=>{xe();ts=a=>Uint8Array.from(a.split(""),t=>t.charCodeAt(0)),Do=ts("expand 16-byte k"),vo=ts("expand 32-byte k"),No=Jt(Do),To=Jt(vo);vn=64,Uo=16,es=2**32-1,zi=Uint32Array.of();wr=class a{blockLen;keyLen;nonceLen;state;buf;key;nonce;pos;ctr;cipher;constructor(t,e,n,r,s){this.cipher=t,this.blockLen=e,this.keyLen=n,this.nonceLen=r,this.state=new Uint8Array(this.keyLen+this.nonceLen),this.reseed(s),this.ctr=0,this.pos=this.blockLen,this.buf=new Uint8Array(this.blockLen),this.key=this.state.subarray(0,this.keyLen),this.nonce=this.state.subarray(this.keyLen)}reseed(t){if(gt(t),!t||t.length===0)throw new Error("entropy required");for(let e=0;e<t.length;e++)this.state[e%this.state.length]^=t[e];this.ctr=0,this.pos=this.blockLen}addEntropy(t){this.state.set(this.randomBytes(this.state.length)),this.reseed(t)}randomBytes(t){if(le(t),t===0)return new Uint8Array(0);let e=new Uint8Array(t),n=0;if(this.pos<this.blockLen){let o=Math.min(t,this.blockLen-this.pos);if(e.set(this.buf.subarray(this.pos,this.pos+o),0),this.pos+=o,n+=o,n===t)return e}let r=Math.floor((t-n)/this.blockLen);if(r>0){let o=r*this.blockLen,f=e.subarray(n,n+o);this.cipher(this.key,this.nonce,f,f,this.ctr),this.ctr+=r,n+=o}let s=t-n;return s>0&&(this.buf.fill(0),this.cipher(this.key,this.nonce,this.buf,this.buf,this.ctr++),e.set(this.buf.subarray(0,s),n),this.pos=s),e}clone(){return new a(this.cipher,this.blockLen,this.keyLen,this.nonceLen,this.randomBytes(this.state.length))}clean(){this.pos=0,this.ctr=0,this.buf.fill(0),this.state.fill(0)}},mr=(a,t,e,n)=>(r=Dn(32))=>new wr(a,t,e,n,r)});function xt(a,t){return a[t++]&255|(a[t++]&255)<<8}function Lo(a){let t=(n,r)=>a(r).update(n).digest(),e=a(new Uint8Array(32));return t.outputLen=e.outputLen,t.blockLen=e.blockLen,t.create=n=>a(n),t}var Sr,rs,is=Et(()=>{xe();Sr=class{blockLen=16;outputLen=16;buffer=new Uint8Array(16);r=new Uint16Array(10);h=new Uint16Array(10);pad=new Uint16Array(8);pos=0;finished=!1;constructor(t){t=de(gt(t,32,"key"));let e=xt(t,0),n=xt(t,2),r=xt(t,4),s=xt(t,6),o=xt(t,8),f=xt(t,10),h=xt(t,12),c=xt(t,14);this.r[0]=e&8191,this.r[1]=(e>>>13|n<<3)&8191,this.r[2]=(n>>>10|r<<6)&7939,this.r[3]=(r>>>7|s<<9)&8191,this.r[4]=(s>>>4|o<<12)&255,this.r[5]=o>>>1&8190,this.r[6]=(o>>>14|f<<2)&8191,this.r[7]=(f>>>11|h<<5)&8065,this.r[8]=(h>>>8|c<<8)&8191,this.r[9]=c>>>5&127;for(let u=0;u<8;u++)this.pad[u]=xt(t,16+2*u)}process(t,e,n=!1){let r=n?0:2048,{h:s,r:o}=this,f=o[0],h=o[1],c=o[2],u=o[3],I=o[4],l=o[5],C=o[6],B=o[7],y=o[8],m=o[9],g=xt(t,e+0),p=xt(t,e+2),E=xt(t,e+4),S=xt(t,e+6),b=xt(t,e+8),R=xt(t,e+10),v=xt(t,e+12),Q=xt(t,e+14),w=s[0]+(g&8191),D=s[1]+((g>>>13|p<<3)&8191),k=s[2]+((p>>>10|E<<6)&8191),x=s[3]+((E>>>7|S<<9)&8191),N=s[4]+((S>>>4|b<<12)&8191),F=s[5]+(b>>>1&8191),O=s[6]+((b>>>14|R<<2)&8191),Y=s[7]+((R>>>11|v<<5)&8191),H=s[8]+((v>>>8|Q<<8)&8191),q=s[9]+(Q>>>5|r),P=0,X=P+w*f+D*(5*m)+k*(5*y)+x*(5*B)+N*(5*C);P=X>>>13,X&=8191,X+=F*(5*l)+O*(5*I)+Y*(5*u)+H*(5*c)+q*(5*h),P+=X>>>13,X&=8191;let K=P+w*h+D*f+k*(5*m)+x*(5*y)+N*(5*B);P=K>>>13,K&=8191,K+=F*(5*C)+O*(5*l)+Y*(5*I)+H*(5*u)+q*(5*c),P+=K>>>13,K&=8191;let V=P+w*c+D*h+k*f+x*(5*m)+N*(5*y);P=V>>>13,V&=8191,V+=F*(5*B)+O*(5*C)+Y*(5*l)+H*(5*I)+q*(5*u),P+=V>>>13,V&=8191;let tt=P+w*u+D*c+k*h+x*f+N*(5*m);P=tt>>>13,tt&=8191,tt+=F*(5*y)+O*(5*B)+Y*(5*C)+H*(5*l)+q*(5*I),P+=tt>>>13,tt&=8191;let et=P+w*I+D*u+k*c+x*h+N*f;P=et>>>13,et&=8191,et+=F*(5*m)+O*(5*y)+Y*(5*B)+H*(5*C)+q*(5*l),P+=et>>>13,et&=8191;let at=P+w*l+D*I+k*u+x*c+N*h;P=at>>>13,at&=8191,at+=F*f+O*(5*m)+Y*(5*y)+H*(5*B)+q*(5*C),P+=at>>>13,at&=8191;let nt=P+w*C+D*l+k*I+x*u+N*c;P=nt>>>13,nt&=8191,nt+=F*h+O*f+Y*(5*m)+H*(5*y)+q*(5*B),P+=nt>>>13,nt&=8191;let It=P+w*B+D*C+k*l+x*I+N*u;P=It>>>13,It&=8191,It+=F*c+O*h+Y*f+H*(5*m)+q*(5*y),P+=It>>>13,It&=8191;let ut=P+w*y+D*B+k*C+x*l+N*I;P=ut>>>13,ut&=8191,ut+=F*u+O*c+Y*h+H*f+q*(5*m),P+=ut>>>13,ut&=8191;let mt=P+w*m+D*y+k*B+x*C+N*l;P=mt>>>13,mt&=8191,mt+=F*I+O*u+Y*c+H*h+q*f,P+=mt>>>13,mt&=8191,P=(P<<2)+P|0,P=P+X|0,X=P&8191,P=P>>>13,K+=P,s[0]=X,s[1]=K,s[2]=V,s[3]=tt,s[4]=et,s[5]=at,s[6]=nt,s[7]=It,s[8]=ut,s[9]=mt}finalize(){let{h:t,pad:e}=this,n=new Uint16Array(10),r=t[1]>>>13;t[1]&=8191;for(let f=2;f<10;f++)t[f]+=r,r=t[f]>>>13,t[f]&=8191;t[0]+=r*5,r=t[0]>>>13,t[0]&=8191,t[1]+=r,r=t[1]>>>13,t[1]&=8191,t[2]+=r,n[0]=t[0]+5,r=n[0]>>>13,n[0]&=8191;for(let f=1;f<10;f++)n[f]=t[f]+r,r=n[f]>>>13,n[f]&=8191;n[9]-=8192;let s=(r^1)-1;for(let f=0;f<10;f++)n[f]&=s;s=~s;for(let f=0;f<10;f++)t[f]=t[f]&s|n[f];t[0]=(t[0]|t[1]<<13)&65535,t[1]=(t[1]>>>3|t[2]<<10)&65535,t[2]=(t[2]>>>6|t[3]<<7)&65535,t[3]=(t[3]>>>9|t[4]<<4)&65535,t[4]=(t[4]>>>12|t[5]<<1|t[6]<<14)&65535,t[5]=(t[6]>>>2|t[7]<<11)&65535,t[6]=(t[7]>>>5|t[8]<<8)&65535,t[7]=(t[8]>>>8|t[9]<<5)&65535;let o=t[0]+e[0];t[0]=o&65535;for(let f=1;f<8;f++)o=(t[f]+e[f]|0)+(o>>>16)|0,t[f]=o&65535;Wt(n)}update(t){_n(this),gt(t),t=de(t);let{buffer:e,blockLen:n}=this,r=t.length;for(let s=0;s<r;){let o=Math.min(n-this.pos,r-s);if(o===n){for(;n<=r-s;s+=n)this.process(t,s);continue}e.set(t.subarray(s,s+o),this.pos),this.pos+=o,s+=o,this.pos===n&&(this.process(e,0,!1),this.pos=0)}return this}destroy(){Wt(this.h,this.r,this.buffer,this.pad)}digestInto(t){_n(this),Er(t,this),this.finished=!0;let{buffer:e,h:n}=this,{pos:r}=this;if(r){for(e[r++]=1;r<16;r++)e[r]=0;this.process(e,0,!0)}this.finalize();let s=0;for(let o=0;o<8;o++)t[s++]=n[o]>>>0,t[s++]=n[o]>>>8;return t}digest(){let{buffer:t,outputLen:e}=this;this.digestInto(t);let n=t.slice(0,e);return this.destroy(),n}};rs=Lo(a=>new Sr(a))});var us={};Le(us,{_poly1305_aead:()=>_r,chacha12:()=>ko,chacha20:()=>cs,chacha20orig:()=>as,chacha20poly1305:()=>Go,chacha8:()=>hs,hchacha:()=>As,rngChacha20:()=>Po,rngChacha8:()=>Yo,xchacha20:()=>fs,xchacha20poly1305:()=>Ho});function Je(a,t,e,n,r,s=20){let o=a[0],f=a[1],h=a[2],c=a[3],u=t[0],I=t[1],l=t[2],C=t[3],B=t[4],y=t[5],m=t[6],g=t[7],p=r,E=e[0],S=e[1],b=e[2],R=o,v=f,Q=h,w=c,D=u,k=I,x=l,N=C,F=B,O=y,Y=m,H=g,q=p,P=E,X=S,K=b;for(let tt=0;tt<s;tt+=2)R=R+D|0,q=Z(q^R,16),F=F+q|0,D=Z(D^F,12),R=R+D|0,q=Z(q^R,8),F=F+q|0,D=Z(D^F,7),v=v+k|0,P=Z(P^v,16),O=O+P|0,k=Z(k^O,12),v=v+k|0,P=Z(P^v,8),O=O+P|0,k=Z(k^O,7),Q=Q+x|0,X=Z(X^Q,16),Y=Y+X|0,x=Z(x^Y,12),Q=Q+x|0,X=Z(X^Q,8),Y=Y+X|0,x=Z(x^Y,7),w=w+N|0,K=Z(K^w,16),H=H+K|0,N=Z(N^H,12),w=w+N|0,K=Z(K^w,8),H=H+K|0,N=Z(N^H,7),R=R+k|0,K=Z(K^R,16),Y=Y+K|0,k=Z(k^Y,12),R=R+k|0,K=Z(K^R,8),Y=Y+K|0,k=Z(k^Y,7),v=v+x|0,q=Z(q^v,16),H=H+q|0,x=Z(x^H,12),v=v+x|0,q=Z(q^v,8),H=H+q|0,x=Z(x^H,7),Q=Q+N|0,P=Z(P^Q,16),F=F+P|0,N=Z(N^F,12),Q=Q+N|0,P=Z(P^Q,8),F=F+P|0,N=Z(N^F,7),w=w+D|0,X=Z(X^w,16),O=O+X|0,D=Z(D^O,12),w=w+D|0,X=Z(X^w,8),O=O+X|0,D=Z(D^O,7);let V=0;n[V++]=o+R|0,n[V++]=f+v|0,n[V++]=h+Q|0,n[V++]=c+w|0,n[V++]=u+D|0,n[V++]=I+k|0,n[V++]=l+x|0,n[V++]=C+N|0,n[V++]=B+F|0,n[V++]=y+O|0,n[V++]=m+Y|0,n[V++]=g+H|0,n[V++]=p+q|0,n[V++]=E+P|0,n[V++]=S+X|0,n[V++]=b+K|0}function As(a,t,e,n){let r=a[0],s=a[1],o=a[2],f=a[3],h=t[0],c=t[1],u=t[2],I=t[3],l=t[4],C=t[5],B=t[6],y=t[7],m=e[0],g=e[1],p=e[2],E=e[3];for(let b=0;b<20;b+=2)r=r+h|0,m=Z(m^r,16),l=l+m|0,h=Z(h^l,12),r=r+h|0,m=Z(m^r,8),l=l+m|0,h=Z(h^l,7),s=s+c|0,g=Z(g^s,16),C=C+g|0,c=Z(c^C,12),s=s+c|0,g=Z(g^s,8),C=C+g|0,c=Z(c^C,7),o=o+u|0,p=Z(p^o,16),B=B+p|0,u=Z(u^B,12),o=o+u|0,p=Z(p^o,8),B=B+p|0,u=Z(u^B,7),f=f+I|0,E=Z(E^f,16),y=y+E|0,I=Z(I^y,12),f=f+I|0,E=Z(E^f,8),y=y+E|0,I=Z(I^y,7),r=r+c|0,E=Z(E^r,16),B=B+E|0,c=Z(c^B,12),r=r+c|0,E=Z(E^r,8),B=B+E|0,c=Z(c^B,7),s=s+u|0,m=Z(m^s,16),y=y+m|0,u=Z(u^y,12),s=s+u|0,m=Z(m^s,8),y=y+m|0,u=Z(u^y,7),o=o+I|0,g=Z(g^o,16),l=l+g|0,I=Z(I^l,12),o=o+I|0,g=Z(g^o,8),l=l+g|0,I=Z(I^l,7),f=f+h|0,p=Z(p^f,16),C=C+p|0,h=Z(h^C,12),f=f+h|0,p=Z(p^f,8),C=C+p|0,h=Z(h^C,7);let S=0;n[S++]=r,n[S++]=s,n[S++]=o,n[S++]=f,n[S++]=m,n[S++]=g,n[S++]=p,n[S++]=E}function os(a,t,e,n,r){r!==void 0&&gt(r,void 0,"AAD");let s=a(t,e,Oo),o=Qr(n.length,r?r.length:0,!0),f=rs.create(s);r&&ss(f,r),ss(f,n),f.update(o);let h=f.digest();return Wt(s,o),h}var as,cs,fs,hs,ko,Mo,ss,Oo,_r,Go,Ho,Po,Yo,gs=Et(()=>{ns();is();xe();as=De(Je,{counterRight:!1,counterLength:8,allowShortKeys:!0}),cs=De(Je,{counterRight:!1,counterLength:4,allowShortKeys:!1}),fs=De(Je,{counterRight:!1,counterLength:8,extendNonceFn:As,allowShortKeys:!1}),hs=De(Je,{counterRight:!1,counterLength:4,rounds:8}),ko=De(Je,{counterRight:!1,counterLength:4,rounds:12}),Mo=new Uint8Array(16),ss=(a,t)=>{a.update(t);let e=t.length%16;e&&a.update(Mo.subarray(e))},Oo=new Uint8Array(32);_r=a=>(t,e,n)=>({encrypt(s,o){let f=s.length;o=xn(f+16,o,!1),o.set(s);let h=o.subarray(0,-16);a(t,e,h,h,1);let c=os(a,t,e,h,n);return o.set(c,f),Wt(c),o},decrypt(s,o){o=xn(s.length-16,o,!1);let f=s.subarray(0,-16),h=s.subarray(-16),c=os(a,t,e,f,n);if(!yr(h,c))throw new Error("invalid tag");return o.set(s.subarray(0,-16)),a(t,e,o,o,1),Wt(c),o}}),Go=Rn({blockSize:64,nonceLength:12,tagLength:16},_r(cs)),Ho=Rn({blockSize:64,nonceLength:24,tagLength:16},_r(fs)),Po=mr(as,64,32,8),Yo=mr(hs,64,32,12)});var ls={};Le(ls,{default:()=>Ko});var qo,Ko,ds=Et(()=>{qo=(()=>{var a,t,e={773(s,o,f){var h,c=typeof self<"u"&&self.Module!==void 0?self.Module:{},u={};for(h in c)c.hasOwnProperty(h)&&(u[h]=c[h]);var I,l,C,B,y=[];I=typeof window=="object",l=typeof importScripts=="function",C=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",B=!I&&!C&&!l;var m,g,p,E,S,b="";C?(b=l?f(967).dirname(b)+"/":"//",m=function(M,J){return E||(E=f(145)),S||(S=f(967)),M=S.normalize(M),E.readFileSync(M,J?null:"utf8")},p=function(M){var J=m(M,!0);return J.buffer||(J=new Uint8Array(J)),D(J.buffer),J},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),y=process.argv.slice(2),s.exports=c,process.on("uncaughtException",function(M){if(!(M instanceof G))throw M}),process.on("unhandledRejection",V),c.inspect=function(){return"[Emscripten Module object]"}):B?(typeof read<"u"&&(m=function(M){return read(M)}),p=function(M){var J;return typeof readbuffer=="function"?new Uint8Array(readbuffer(M)):(D(typeof(J=read(M,"binary"))=="object"),J)},typeof scriptArgs<"u"?y=scriptArgs:arguments!==void 0&&(y=arguments),typeof print<"u"&&(typeof console>"u"&&(console={}),console.log=print,console.warn=console.error=typeof printErr<"u"?printErr:print)):(I||l)&&(l?b=self.location.href:typeof document<"u"&&document.currentScript&&(b=document.currentScript.src),b=b.indexOf("blob:")!==0?b.substr(0,b.lastIndexOf("/")+1):"",m=function(M){var J=new XMLHttpRequest;return J.open("GET",M,!1),J.send(null),J.responseText},l&&(p=function(M){var J=new XMLHttpRequest;return J.open("GET",M,!1),J.responseType="arraybuffer",J.send(null),new Uint8Array(J.response)}),g=function(M,J,i){var A=new XMLHttpRequest;A.open("GET",M,!0),A.responseType="arraybuffer",A.onload=function(){A.status==200||A.status==0&&A.response?J(A.response):i()},A.onerror=i,A.send(null)}),c.print||console.log.bind(console);var R,v,Q=c.printErr||console.warn.bind(console);for(h in u)u.hasOwnProperty(h)&&(c[h]=u[h]);u=null,c.arguments&&(y=c.arguments),c.thisProgram&&c.thisProgram,c.quit&&c.quit,c.wasmBinary&&(R=c.wasmBinary),c.noExitRuntime,typeof WebAssembly!="object"&&V("no native wasm support detected");var w=!1;function D(M,J){M||V("Assertion failed: "+J)}var k,x,N=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function F(M){k=M,c.HEAP8=new Int8Array(M),c.HEAP16=new Int16Array(M),c.HEAP32=new Int32Array(M),c.HEAPU8=x=new Uint8Array(M),c.HEAPU16=new Uint16Array(M),c.HEAPU32=new Uint32Array(M),c.HEAPF32=new Float32Array(M),c.HEAPF64=new Float64Array(M)}c.INITIAL_MEMORY;var O,Y=[],H=[],q=[],P=0,X=null,K=null;function V(M){throw c.onAbort&&c.onAbort(M),Q(M+=""),w=!0,M="abort("+M+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(M)}function tt(M){return M.startsWith("data:application/octet-stream;base64,")}function et(M){return M.startsWith("file://")}c.preloadedImages={},c.preloadedAudios={};var at,nt="argon2.wasm";function It(M){try{if(M==nt&&R)return new Uint8Array(R);if(p)return p(M);throw"both async and sync fetching of the wasm failed"}catch(J){V(J)}}function ut(M){for(;M.length>0;){var J=M.shift();if(typeof J!="function"){var i=J.func;typeof i=="number"?J.arg===void 0?O.get(i)():O.get(i)(J.arg):i(J.arg===void 0?null:J.arg)}else J(c)}}function mt(M){try{return v.grow(M-k.byteLength+65535>>>16),F(v.buffer),1}catch{}}tt(nt)||(at=nt,nt=c.locateFile?c.locateFile(at,b):b+at);var kt,yt={a:function(M,J,i){x.copyWithin(M,J,J+i)},b:function(M){var J,i=x.length;if((M>>>=0)>2147418112)return!1;for(var A=1;A<=4;A*=2){var d=i*(1+.2/A);if(d=Math.min(d,M+100663296),mt(Math.min(2147418112,((J=Math.max(M,d))%65536>0&&(J+=65536-J%65536),J))))return!0}return!1}},Dt=((function(){var M={a:yt};function J(d,_){var U,L=d.exports;c.asm=L,F((v=c.asm.c).buffer),O=c.asm.k,U=c.asm.d,H.unshift(U),(function(W){if(P--,c.monitorRunDependencies&&c.monitorRunDependencies(P),P==0&&(X!==null&&(clearInterval(X),X=null),K)){var z=K;K=null,z()}})()}function i(d){J(d.instance)}function A(d){return(function(){if(!R&&(I||l)){if(typeof fetch=="function"&&!et(nt))return fetch(nt,{credentials:"same-origin"}).then(function(_){if(!_.ok)throw"failed to load wasm binary file at '"+nt+"'";return _.arrayBuffer()}).catch(function(){return It(nt)});if(g)return new Promise(function(_,U){g(nt,function(L){_(new Uint8Array(L))},U)})}return Promise.resolve().then(function(){return It(nt)})})().then(function(_){return WebAssembly.instantiate(_,M)}).then(d,function(_){Q("failed to asynchronously prepare wasm: "+_),V(_)})}if(P++,c.monitorRunDependencies&&c.monitorRunDependencies(P),c.instantiateWasm)try{return c.instantiateWasm(M,J)}catch(d){return Q("Module.instantiateWasm callback failed with error: "+d),!1}R||typeof WebAssembly.instantiateStreaming!="function"||tt(nt)||et(nt)||typeof fetch!="function"?A(i):fetch(nt,{credentials:"same-origin"}).then(function(d){return WebAssembly.instantiateStreaming(d,M).then(i,function(_){return Q("wasm streaming compile failed: "+_),Q("falling back to ArrayBuffer instantiation"),A(i)})})})(),c.___wasm_call_ctors=function(){return(c.___wasm_call_ctors=c.asm.d).apply(null,arguments)},c._argon2_hash=function(){return(c._argon2_hash=c.asm.e).apply(null,arguments)},c._malloc=function(){return(Dt=c._malloc=c.asm.f).apply(null,arguments)}),T=(c._free=function(){return(c._free=c.asm.g).apply(null,arguments)},c._argon2_verify=function(){return(c._argon2_verify=c.asm.h).apply(null,arguments)},c._argon2_error_message=function(){return(c._argon2_error_message=c.asm.i).apply(null,arguments)},c._argon2_encodedlen=function(){return(c._argon2_encodedlen=c.asm.j).apply(null,arguments)},c._argon2_hash_ext=function(){return(c._argon2_hash_ext=c.asm.l).apply(null,arguments)},c._argon2_verify_ext=function(){return(c._argon2_verify_ext=c.asm.m).apply(null,arguments)},c.stackAlloc=function(){return(T=c.stackAlloc=c.asm.n).apply(null,arguments)});function G(M){this.name="ExitStatus",this.message="Program terminated with exit("+M+")",this.status=M}function j(M){function J(){kt||(kt=!0,c.calledRun=!0,w||(ut(H),c.onRuntimeInitialized&&c.onRuntimeInitialized(),(function(){var i;if(c.postRun)for(typeof c.postRun=="function"&&(c.postRun=[c.postRun]);c.postRun.length;)i=c.postRun.shift(),q.unshift(i);ut(q)})()))}M=M||y,P>0||((function(){var i;if(c.preRun)for(typeof c.preRun=="function"&&(c.preRun=[c.preRun]);c.preRun.length;)i=c.preRun.shift(),Y.unshift(i);ut(Y)})(),P>0||(c.setStatus?(c.setStatus("Running..."),setTimeout(function(){setTimeout(function(){c.setStatus("")},1),J()},1)):J()))}if(c.allocate=function(M,J){var i;return i=J==1?T(M.length):Dt(M.length),M.subarray||M.slice?x.set(M,i):x.set(new Uint8Array(M),i),i},c.UTF8ToString=function(M,J){return M?(function(i,A,d){for(var _=A+d,U=A;i[U]&&!(U>=_);)++U;if(U-A>16&&i.subarray&&N)return N.decode(i.subarray(A,U));for(var L="";A<U;){var W=i[A++];if(128&W){var z=63&i[A++];if((224&W)!=192){var ht=63&i[A++];if((W=(240&W)==224?(15&W)<<12|z<<6|ht:(7&W)<<18|z<<12|ht<<6|63&i[A++])<65536)L+=String.fromCharCode(W);else{var st=W-65536;L+=String.fromCharCode(55296|st>>10,56320|1023&st)}}else L+=String.fromCharCode((31&W)<<6|z)}else L+=String.fromCharCode(W)}return L})(x,M,J):""},c.ALLOC_NORMAL=0,K=function M(){kt||j(),kt||(K=M)},c.run=j,c.preInit)for(typeof c.preInit=="function"&&(c.preInit=[c.preInit]);c.preInit.length>0;)c.preInit.pop()();j(),s.exports=c,c.unloadRuntime=function(){typeof self<"u"&&delete self.Module,c=v=O=k=x=void 0,delete s.exports}},631:function(s,o,f){var h,c;typeof self<"u",(c=typeof(h=function(){let u=typeof self<"u"?self:this,I={Argon2d:0,Argon2i:1,Argon2id:2};function l(g){if(l._promise)return l._promise;if(l._module)return Promise.resolve(l._module);let p;return p=u.process&&u.process.versions&&u.process.versions.node?C().then(E=>new Promise(S=>{E.postRun=()=>S(E)})):(u.loadArgon2WasmBinary?u.loadArgon2WasmBinary():Promise.resolve(f(721)).then(E=>(function(S){let b=atob(S),R=new Uint8Array(new ArrayBuffer(b.length));for(let v=0;v<b.length;v++)R[v]=b.charCodeAt(v);return R})(E))).then(E=>{var S,b;return S=E,b=g?(function(R){let v=32767;return new WebAssembly.Memory({initial:Math.min(Math.max(Math.ceil(1024*R/65536),256)+256,v),maximum:v})})(g):void 0,new Promise(R=>(u.Module={wasmBinary:S,wasmMemory:b,postRun(){R(Module)}},C()))}),l._promise=p,p.then(E=>(l._module=E,delete l._promise,E))}function C(){return u.loadArgon2WasmModule?u.loadArgon2WasmModule():Promise.resolve(f(773))}function B(g,p){return g.allocate(p,"i8",g.ALLOC_NORMAL)}function y(g,p){return B(g,new Uint8Array([...p,0]))}function m(g){if(typeof g!="string")return g;if(typeof TextEncoder=="function")return new TextEncoder().encode(g);if(typeof Buffer=="function")return Buffer.from(g);throw Error("Don't know how to encode UTF8")}return{ArgonType:I,hash:function(g){let p=g.mem||1024;return l(p).then(E=>{let S=g.time||1,b=g.parallelism||1,R=m(g.pass),v=y(E,R),Q=R.length,w=m(g.salt),D=y(E,w),k=w.length,x=g.type||I.Argon2d,N=E.allocate(Array(g.hashLen||24),"i8",E.ALLOC_NORMAL),F=g.secret?B(E,g.secret):0,O=g.secret?g.secret.byteLength:0,Y=g.ad?B(E,g.ad):0,H=g.ad?g.ad.byteLength:0,q=g.hashLen||24,P=E._argon2_encodedlen(S,p,b,k,q,x),X=E.allocate(Array(P+1),"i8",E.ALLOC_NORMAL),K,V,tt;try{V=E._argon2_hash_ext(S,p,b,v,Q,D,k,N,q,X,P,x,F,O,Y,H,19)}catch(et){K=et}if(V!==0||K){try{K||(K=E.UTF8ToString(E._argon2_error_message(V)))}catch{}tt={message:K,code:V}}else{let et="",at=new Uint8Array(q);for(let nt=0;nt<q;nt++){let It=E.HEAP8[N+nt];at[nt]=It,et+=("0"+(255&It).toString(16)).slice(-2)}tt={hash:at,hashHex:et,encoded:E.UTF8ToString(X)}}try{E._free(v),E._free(D),E._free(N),E._free(X),Y&&E._free(Y),F&&E._free(F)}catch{}if(K)throw tt;return tt})},verify:function(g){return l().then(p=>{let E=m(g.pass),S=y(p,E),b=E.length,R=g.secret?B(p,g.secret):0,v=g.secret?g.secret.byteLength:0,Q=g.ad?B(p,g.ad):0,w=g.ad?g.ad.byteLength:0,D=y(p,m(g.encoded)),k,x,N,F=g.type;if(F===void 0){let O=g.encoded.split("$")[1];O&&(F=I[O=O.replace("a","A")]||I.Argon2d)}try{x=p._argon2_verify_ext(D,S,b,R,v,Q,w,F)}catch(O){k=O}if(x||k){try{k||(k=p.UTF8ToString(p._argon2_error_message(x)))}catch{}N={message:k,code:x}}try{p._free(S),p._free(D)}catch{}if(k)throw N;return N})},unloadRuntime:function(){l._module&&(l._module.unloadRuntime(),delete l._promise,delete l._module)}}})=="function"?h.apply(o,[]):h)===void 0||(s.exports=c)},721:function(s,o){s.exports="AGFzbQEAAAABkwESYAN/f38Bf2ABfwF/YAJ/fwBgAn9/AX9gAX8AYAR/f39/AX9gA39/fwBgBH9/f38AYAJ/fgBgAn5/AX5gAn5+AX5gBX9/f39/AGAGf3x/f39/AX9gAABgCH9/f39/f39/AX9gEX9/f39/f39/f39/f39/f39/AX9gBn9/f39/fwF/YA1/f39/f39/f39/f39/AX8CDQIBYQFhAAABYQFiAAEDPDsJCgIAAAIEAQEAAQsGAQAHAAIBAwICAwIIBQECAwEHDQMBBgQGAQEFBQEAAAIEAAAIAQAODwQQAQURAwQFAXABAwMFBwEBgAL//wEGCQF/AUGQo8ACCwcxDAFjAgABZAAhAWUAOwFmAAkBZwAIAWgAOgFpADkBagA4AWsBAAFsADYBbQA1AW4AMwkIAQBBAQsCCzQKwbMBOwgAIAAgAa2KCx4AIAAgAXwgAEIBhkL+////H4MgAUL/////D4N+fAsXAEHwHCgCAEUgAEVyRQRAIAAgARAdCwuDBAEDfyACQYAETwRAIAAgASACEAAaIAAPCyAAIAJqIQMCQCAAIAFzQQNxRQRAAkAgAEEDcUUEQCAAIQIMAQsgAkEBSARAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAkEDcUUNASACIANJDQALCwJAIANBfHEiBEHAAEkNACACIARBQGoiBUsNAANAIAIgASgCADYCACACIAEoAgQ2AgQgAiABKAIINgIIIAIgASgCDDYCDCACIAEoAhA2AhAgAiABKAIUNgIUIAIgASgCGDYCGCACIAEoAhw2AhwgAiABKAIgNgIgIAIgASgCJDYCJCACIAEoAig2AiggAiABKAIsNgIsIAIgASgCMDYCMCACIAEoAjQ2AjQgAiABKAI4NgI4IAIgASgCPDYCPCABQUBrIQEgAkFAayICIAVNDQALCyACIARPDQEDQCACIAEoAgA2AgAgAUEEaiEBIAJBBGoiAiAESQ0ACwwBCyADQQRJBEAgACECDAELIAAgA0EEayIESwRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAiABLQABOgABIAIgAS0AAjoAAiACIAEtAAM6AAMgAUEEaiEBIAJBBGoiAiAETQ0ACwsgAiADSQRAA0AgAiABLQAAOgAAIAFBAWohASACQQFqIgIgA0cNAAsLIAALzwEBA38CQCACRQ0AQX8hAyAARSABRXINACAAKQNQQgBSDQACQCAAKALgASIDIAJqQYEBSQ0AIABB4ABqIgUgA2ogAUGAASADayIEEAUaIABCgAEQGiAAIAUQGUEAIQMgAEEANgLgASABIARqIQEgAiAEayICQYEBSQ0AA0AgAEKAARAaIAAgARAZIAFBgAFqIQEgAkGAAWsiAkGAAUsNAAsgACgC4AEhAwsgACADakHgAGogASACEAUaIAAgACgC4AEgAmo2AuABQQAhAwsgAwsJACAAIAE2AAALpwwBB38CQCAARQ0AIABBCGsiAyAAQQRrKAIAIgFBeHEiAGohBQJAIAFBAXENACABQQNxRQ0BIAMgAygCACIBayIDQbAfKAIASQ0BIAAgAWohACADQbQfKAIARwRAIAFB/wFNBEAgAygCCCICIAFBA3YiBEEDdEHIH2pGGiACIAMoAgwiAUYEQEGgH0GgHygCAEF+IAR3cTYCAAwDCyACIAE2AgwgASACNgIIDAILIAMoAhghBgJAIAMgAygCDCIBRwRAIAMoAggiAiABNgIMIAEgAjYCCAwBCwJAIANBFGoiAigCACIEDQAgA0EQaiICKAIAIgQNAEEAIQEMAQsDQCACIQcgBCIBQRRqIgIoAgAiBA0AIAFBEGohAiABKAIQIgQNAAsgB0EANgIACyAGRQ0BAkAgAyADKAIcIgJBAnRB0CFqIgQoAgBGBEAgBCABNgIAIAENAUGkH0GkHygCAEF+IAJ3cTYCAAwDCyAGQRBBFCAGKAIQIANGG2ogATYCACABRQ0CCyABIAY2AhggAygCECICBEAgASACNgIQIAIgATYCGAsgAygCFCICRQ0BIAEgAjYCFCACIAE2AhgMAQsgBSgCBCIBQQNxQQNHDQBBqB8gADYCACAFIAFBfnE2AgQgAyAAQQFyNgIEIAAgA2ogADYCAA8LIAMgBU8NACAFKAIEIgFBAXFFDQACQCABQQJxRQRAIAVBuB8oAgBGBEBBuB8gAzYCAEGsH0GsHygCACAAaiIANgIAIAMgAEEBcjYCBCADQbQfKAIARw0DQagfQQA2AgBBtB9BADYCAA8LIAVBtB8oAgBGBEBBtB8gAzYCAEGoH0GoHygCACAAaiIANgIAIAMgAEEBcjYCBCAAIANqIAA2AgAPCyABQXhxIABqIQACQCABQf8BTQRAIAUoAggiAiABQQN2IgRBA3RByB9qRhogAiAFKAIMIgFGBEBBoB9BoB8oAgBBfiAEd3E2AgAMAgsgAiABNgIMIAEgAjYCCAwBCyAFKAIYIQYCQCAFIAUoAgwiAUcEQCAFKAIIIgJBsB8oAgBJGiACIAE2AgwgASACNgIIDAELAkAgBUEUaiICKAIAIgQNACAFQRBqIgIoAgAiBA0AQQAhAQwBCwNAIAIhByAEIgFBFGoiAigCACIEDQAgAUEQaiECIAEoAhAiBA0ACyAHQQA2AgALIAZFDQACQCAFIAUoAhwiAkECdEHQIWoiBCgCAEYEQCAEIAE2AgAgAQ0BQaQfQaQfKAIAQX4gAndxNgIADAILIAZBEEEUIAYoAhAgBUYbaiABNgIAIAFFDQELIAEgBjYCGCAFKAIQIgIEQCABIAI2AhAgAiABNgIYCyAFKAIUIgJFDQAgASACNgIUIAIgATYCGAsgAyAAQQFyNgIEIAAgA2ogADYCACADQbQfKAIARw0BQagfIAA2AgAPCyAFIAFBfnE2AgQgAyAAQQFyNgIEIAAgA2ogADYCAAsgAEH/AU0EQCAAQQN2IgFBA3RByB9qIQACf0GgHygCACICQQEgAXQiAXFFBEBBoB8gASACcjYCACAADAELIAAoAggLIQIgACADNgIIIAIgAzYCDCADIAA2AgwgAyACNgIIDwtBHyECIANCADcCECAAQf///wdNBEAgAEEIdiIBIAFBgP4/akEQdkEIcSIBdCICIAJBgOAfakEQdkEEcSICdCIEIARBgIAPakEQdkECcSIEdEEPdiABIAJyIARyayIBQQF0IAAgAUEVanZBAXFyQRxqIQILIAMgAjYCHCACQQJ0QdAhaiEBAkACQAJAQaQfKAIAIgRBASACdCIHcUUEQEGkHyAEIAdyNgIAIAEgAzYCACADIAE2AhgMAQsgAEEAQRkgAkEBdmsgAkEfRht0IQIgASgCACEBA0AgASIEKAIEQXhxIABGDQIgAkEddiEBIAJBAXQhAiAEIAFBBHFqIgdBEGooAgAiAQ0ACyAHIAM2AhAgAyAENgIYCyADIAM2AgwgAyADNgIIDAELIAQoAggiACADNgIMIAQgAzYCCCADQQA2AhggAyAENgIMIAMgADYCCAtBwB9BwB8oAgBBAWsiAEF/IAAbNgIACwuULQEMfyMAQRBrIgwkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAQfQBTQRAQaAfKAIAIgVBECAAQQtqQXhxIABBC0kbIghBA3YiAnYiAUEDcQRAIAFBf3NBAXEgAmoiA0EDdCIBQdAfaigCACIEQQhqIQACQCAEKAIIIgIgAUHIH2oiAUYEQEGgHyAFQX4gA3dxNgIADAELIAIgATYCDCABIAI2AggLIAQgA0EDdCIBQQNyNgIEIAEgBGoiASABKAIEQQFyNgIEDA0LIAhBqB8oAgAiCk0NASABBEACQEECIAJ0IgBBACAAa3IgASACdHEiAEEAIABrcUEBayIAIABBDHZBEHEiAnYiAUEFdkEIcSIAIAJyIAEgAHYiAUECdkEEcSIAciABIAB2IgFBAXZBAnEiAHIgASAAdiIBQQF2QQFxIgByIAEgAHZqIgNBA3QiAEHQH2ooAgAiBCgCCCIBIABByB9qIgBGBEBBoB8gBUF+IAN3cSIFNgIADAELIAEgADYCDCAAIAE2AggLIARBCGohACAEIAhBA3I2AgQgBCAIaiICIANBA3QiASAIayIDQQFyNgIEIAEgBGogAzYCACAKBEAgCkEDdiIBQQN0QcgfaiEHQbQfKAIAIQQCfyAFQQEgAXQiAXFFBEBBoB8gASAFcjYCACAHDAELIAcoAggLIQEgByAENgIIIAEgBDYCDCAEIAc2AgwgBCABNgIIC0G0HyACNgIAQagfIAM2AgAMDQtBpB8oAgAiBkUNASAGQQAgBmtxQQFrIgAgAEEMdkEQcSICdiIBQQV2QQhxIgAgAnIgASAAdiIBQQJ2QQRxIgByIAEgAHYiAUEBdkECcSIAciABIAB2IgFBAXZBAXEiAHIgASAAdmpBAnRB0CFqKAIAIgEoAgRBeHEgCGshAyABIQIDQAJAIAIoAhAiAEUEQCACKAIUIgBFDQELIAAoAgRBeHEgCGsiAiADIAIgA0kiAhshAyAAIAEgAhshASAAIQIMAQsLIAEgCGoiCSABTQ0CIAEoAhghCyABIAEoAgwiBEcEQCABKAIIIgBBsB8oAgBJGiAAIAQ2AgwgBCAANgIIDAwLIAFBFGoiAigCACIARQRAIAEoAhAiAEUNBCABQRBqIQILA0AgAiEHIAAiBEEUaiICKAIAIgANACAEQRBqIQIgBCgCECIADQALIAdBADYCAAwLC0F/IQggAEG/f0sNACAAQQtqIgBBeHEhCEGkHygCACIJRQ0AQQAgCGshAwJAAkACQAJ/QQAgCEGAAkkNABpBHyAIQf///wdLDQAaIABBCHYiACAAQYD+P2pBEHZBCHEiAnQiACAAQYDgH2pBEHZBBHEiAXQiACAAQYCAD2pBEHZBAnEiAHRBD3YgASACciAAcmsiAEEBdCAIIABBFWp2QQFxckEcagsiBUECdEHQIWooAgAiAkUEQEEAIQAMAQtBACEAIAhBAEEZIAVBAXZrIAVBH0YbdCEBA0ACQCACKAIEQXhxIAhrIgcgA08NACACIQQgByIDDQBBACEDIAIhAAwDCyAAIAIoAhQiByAHIAIgAUEddkEEcWooAhAiAkYbIAAgBxshACABQQF0IQEgAg0ACwsgACAEckUEQEEAIQRBAiAFdCIAQQAgAGtyIAlxIgBFDQMgAEEAIABrcUEBayIAIABBDHZBEHEiAnYiAUEFdkEIcSIAIAJyIAEgAHYiAUECdkEEcSIAciABIAB2IgFBAXZBAnEiAHIgASAAdiIBQQF2QQFxIgByIAEgAHZqQQJ0QdAhaigCACEACyAARQ0BCwNAIAAoAgRBeHEgCGsiASADSSECIAEgAyACGyEDIAAgBCACGyEEIAAoAhAiAQR/IAEFIAAoAhQLIgANAAsLIARFDQAgA0GoHygCACAIa08NACAEIAhqIgYgBE0NASAEKAIYIQUgBCAEKAIMIgFHBEAgBCgCCCIAQbAfKAIASRogACABNgIMIAEgADYCCAwKCyAEQRRqIgIoAgAiAEUEQCAEKAIQIgBFDQQgBEEQaiECCwNAIAIhByAAIgFBFGoiAigCACIADQAgAUEQaiECIAEoAhAiAA0ACyAHQQA2AgAMCQsgCEGoHygCACICTQRAQbQfKAIAIQMCQCACIAhrIgFBEE8EQEGoHyABNgIAQbQfIAMgCGoiADYCACAAIAFBAXI2AgQgAiADaiABNgIAIAMgCEEDcjYCBAwBC0G0H0EANgIAQagfQQA2AgAgAyACQQNyNgIEIAIgA2oiACAAKAIEQQFyNgIECyADQQhqIQAMCwsgCEGsHygCACIGSQRAQawfIAYgCGsiATYCAEG4H0G4HygCACICIAhqIgA2AgAgACABQQFyNgIEIAIgCEEDcjYCBCACQQhqIQAMCwtBACEAIAhBL2oiCQJ/QfgiKAIABEBBgCMoAgAMAQtBhCNCfzcCAEH8IkKAoICAgIAENwIAQfgiIAxBDGpBcHFB2KrVqgVzNgIAQYwjQQA2AgBB3CJBADYCAEGAIAsiAWoiBUEAIAFrIgdxIgIgCE0NCkHYIigCACIEBEBB0CIoAgAiAyACaiIBIANNIAEgBEtyDQsLQdwiLQAAQQRxDQUCQAJAQbgfKAIAIgMEQEHgIiEAA0AgAyAAKAIAIgFPBEAgASAAKAIEaiADSw0DCyAAKAIIIgANAAsLQQAQDCIBQX9GDQYgAiEFQfwiKAIAIgNBAWsiACABcQRAIAIgAWsgACABakEAIANrcWohBQsgBSAITSAFQf7///8HS3INBkHYIigCACIEBEBB0CIoAgAiAyAFaiIAIANNIAAgBEtyDQcLIAUQDCIAIAFHDQEMCAsgBSAGayAHcSIFQf7///8HSw0FIAUQDCIBIAAoAgAgACgCBGpGDQQgASEACyAAQX9GIAhBMGogBU1yRQRAQYAjKAIAIgEgCSAFa2pBACABa3EiAUH+////B0sEQCAAIQEMCAsgARAMQX9HBEAgASAFaiEFIAAhAQwIC0EAIAVrEAwaDAULIAAiAUF/Rw0GDAQLAAtBACEEDAcLQQAhAQwFCyABQX9HDQILQdwiQdwiKAIAQQRyNgIACyACQf7///8HSw0BIAIQDCIBQX9GQQAQDCIAQX9GciAAIAFNcg0BIAAgAWsiBSAIQShqTQ0BC0HQIkHQIigCACAFaiIANgIAQdQiKAIAIABJBEBB1CIgADYCAAsCQAJAAkBBuB8oAgAiBwRAQeAiIQADQCABIAAoAgAiAyAAKAIEIgJqRg0CIAAoAggiAA0ACwwCC0GwHygCACIAQQAgACABTRtFBEBBsB8gATYCAAtBACEAQeQiIAU2AgBB4CIgATYCAEHAH0F/NgIAQcQfQfgiKAIANgIAQewiQQA2AgADQCAAQQN0IgNB0B9qIANByB9qIgI2AgAgA0HUH2ogAjYCACAAQQFqIgBBIEcNAAtBrB8gBUEoayIDQXggAWtBB3FBACABQQhqQQdxGyIAayICNgIAQbgfIAAgAWoiADYCACAAIAJBAXI2AgQgASADakEoNgIEQbwfQYgjKAIANgIADAILIAAtAAxBCHEgAyAHS3IgASAHTXINACAAIAIgBWo2AgRBuB8gB0F4IAdrQQdxQQAgB0EIakEHcRsiAGoiAjYCAEGsH0GsHygCACAFaiIBIABrIgA2AgAgAiAAQQFyNgIEIAEgB2pBKDYCBEG8H0GIIygCADYCAAwBC0GwHygCACABSwRAQbAfIAE2AgALIAEgBWohAkHgIiEAAkACQAJAAkACQAJAA0AgAiAAKAIARwRAIAAoAggiAA0BDAILCyAALQAMQQhxRQ0BC0HgIiEAA0AgByAAKAIAIgJPBEAgAiAAKAIEaiIEIAdLDQMLIAAoAgghAAwACwALIAAgATYCACAAIAAoAgQgBWo2AgQgAUF4IAFrQQdxQQAgAUEIakEHcRtqIgkgCEEDcjYCBCACQXggAmtBB3FBACACQQhqQQdxG2oiBSAIIAlqIgZrIQIgBSAHRgRAQbgfIAY2AgBBrB9BrB8oAgAgAmoiADYCACAGIABBAXI2AgQMAwsgBUG0HygCAEYEQEG0HyAGNgIAQagfQagfKAIAIAJqIgA2AgAgBiAAQQFyNgIEIAAgBmogADYCAAwDCyAFKAIEIgBBA3FBAUYEQCAAQXhxIQcCQCAAQf8BTQRAIAUoAggiAyAAQQN2IgBBA3RByB9qRhogAyAFKAIMIgFGBEBBoB9BoB8oAgBBfiAAd3E2AgAMAgsgAyABNgIMIAEgAzYCCAwBCyAFKAIYIQgCQCAFIAUoAgwiAUcEQCAFKAIIIgAgATYCDCABIAA2AggMAQsCQCAFQRRqIgAoAgAiAw0AIAVBEGoiACgCACIDDQBBACEBDAELA0AgACEEIAMiAUEUaiIAKAIAIgMNACABQRBqIQAgASgCECIDDQALIARBADYCAAsgCEUNAAJAIAUgBSgCHCIDQQJ0QdAhaiIAKAIARgRAIAAgATYCACABDQFBpB9BpB8oAgBBfiADd3E2AgAMAgsgCEEQQRQgCCgCECAFRhtqIAE2AgAgAUUNAQsgASAINgIYIAUoAhAiAARAIAEgADYCECAAIAE2AhgLIAUoAhQiAEUNACABIAA2AhQgACABNgIYCyAFIAdqIQUgAiAHaiECCyAFIAUoAgRBfnE2AgQgBiACQQFyNgIEIAIgBmogAjYCACACQf8BTQRAIAJBA3YiAEEDdEHIH2ohAgJ/QaAfKAIAIgFBASAAdCIAcUUEQEGgHyAAIAFyNgIAIAIMAQsgAigCCAshACACIAY2AgggACAGNgIMIAYgAjYCDCAGIAA2AggMAwtBHyEAIAJB////B00EQCACQQh2IgAgAEGA/j9qQRB2QQhxIgN0IgAgAEGA4B9qQRB2QQRxIgF0IgAgAEGAgA9qQRB2QQJxIgB0QQ92IAEgA3IgAHJrIgBBAXQgAiAAQRVqdkEBcXJBHGohAAsgBiAANgIcIAZCADcCECAAQQJ0QdAhaiEEAkBBpB8oAgAiA0EBIAB0IgFxRQRAQaQfIAEgA3I2AgAgBCAGNgIAIAYgBDYCGAwBCyACQQBBGSAAQQF2ayAAQR9GG3QhACAEKAIAIQEDQCABIgMoAgRBeHEgAkYNAyAAQR12IQEgAEEBdCEAIAMgAUEEcWoiBCgCECIBDQALIAQgBjYCECAGIAM2AhgLIAYgBjYCDCAGIAY2AggMAgtBrB8gBUEoayIDQXggAWtBB3FBACABQQhqQQdxGyIAayICNgIAQbgfIAAgAWoiADYCACAAIAJBAXI2AgQgASADakEoNgIEQbwfQYgjKAIANgIAIAcgBEEnIARrQQdxQQAgBEEna0EHcRtqQS9rIgAgACAHQRBqSRsiAkEbNgIEIAJB6CIpAgA3AhAgAkHgIikCADcCCEHoIiACQQhqNgIAQeQiIAU2AgBB4CIgATYCAEHsIkEANgIAIAJBGGohAANAIABBBzYCBCAAQQhqIQEgAEEEaiEAIAEgBEkNAAsgAiAHRg0DIAIgAigCBEF+cTYCBCAHIAIgB2siBEEBcjYCBCACIAQ2AgAgBEH/AU0EQCAEQQN2IgBBA3RByB9qIQICf0GgHygCACIBQQEgAHQiAHFFBEBBoB8gACABcjYCACACDAELIAIoAggLIQAgAiAHNgIIIAAgBzYCDCAHIAI2AgwgByAANgIIDAQLQR8hACAHQgA3AhAgBEH///8HTQRAIARBCHYiACAAQYD+P2pBEHZBCHEiAnQiACAAQYDgH2pBEHZBBHEiAXQiACAAQYCAD2pBEHZBAnEiAHRBD3YgASACciAAcmsiAEEBdCAEIABBFWp2QQFxckEcaiEACyAHIAA2AhwgAEECdEHQIWohAwJAQaQfKAIAIgJBASAAdCIBcUUEQEGkHyABIAJyNgIAIAMgBzYCACAHIAM2AhgMAQsgBEEAQRkgAEEBdmsgAEEfRht0IQAgAygCACEBA0AgASICKAIEQXhxIARGDQQgAEEddiEBIABBAXQhACACIAFBBHFqIgMoAhAiAQ0ACyADIAc2AhAgByACNgIYCyAHIAc2AgwgByAHNgIIDAMLIAMoAggiACAGNgIMIAMgBjYCCCAGQQA2AhggBiADNgIMIAYgADYCCAsgCUEIaiEADAULIAIoAggiACAHNgIMIAIgBzYCCCAHQQA2AhggByACNgIMIAcgADYCCAtBrB8oAgAiACAITQ0AQawfIAAgCGsiATYCAEG4H0G4HygCACICIAhqIgA2AgAgACABQQFyNgIEIAIgCEEDcjYCBCACQQhqIQAMAwtB3B5BMDYCAEEAIQAMAgsCQCAFRQ0AAkAgBCgCHCICQQJ0QdAhaiIAKAIAIARGBEAgACABNgIAIAENAUGkHyAJQX4gAndxIgk2AgAMAgsgBUEQQRQgBSgCECAERhtqIAE2AgAgAUUNAQsgASAFNgIYIAQoAhAiAARAIAEgADYCECAAIAE2AhgLIAQoAhQiAEUNACABIAA2AhQgACABNgIYCwJAIANBD00EQCAEIAMgCGoiAEEDcjYCBCAAIARqIgAgACgCBEEBcjYCBAwBCyAEIAhBA3I2AgQgBiADQQFyNgIEIAMgBmogAzYCACADQf8BTQRAIANBA3YiAEEDdEHIH2ohAgJ/QaAfKAIAIgFBASAAdCIAcUUEQEGgHyAAIAFyNgIAIAIMAQsgAigCCAshACACIAY2AgggACAGNgIMIAYgAjYCDCAGIAA2AggMAQtBHyEAIANB////B00EQCADQQh2IgAgAEGA/j9qQRB2QQhxIgJ0IgAgAEGA4B9qQRB2QQRxIgF0IgAgAEGAgA9qQRB2QQJxIgB0QQ92IAEgAnIgAHJrIgBBAXQgAyAAQRVqdkEBcXJBHGohAAsgBiAANgIcIAZCADcCECAAQQJ0QdAhaiECAkACQCAJQQEgAHQiAXFFBEBBpB8gASAJcjYCACACIAY2AgAgBiACNgIYDAELIANBAEEZIABBAXZrIABBH0YbdCEAIAIoAgAhCANAIAgiASgCBEF4cSADRg0CIABBHXYhAiAAQQF0IQAgASACQQRxaiICKAIQIggNAAsgAiAGNgIQIAYgATYCGAsgBiAGNgIMIAYgBjYCCAwBCyABKAIIIgAgBjYCDCABIAY2AgggBkEANgIYIAYgATYCDCAGIAA2AggLIARBCGohAAwBCwJAIAtFDQACQCABKAIcIgJBAnRB0CFqIgAoAgAgAUYEQCAAIAQ2AgAgBA0BQaQfIAZBfiACd3E2AgAMAgsgC0EQQRQgCygCECABRhtqIAQ2AgAgBEUNAQsgBCALNgIYIAEoAhAiAARAIAQgADYCECAAIAQ2AhgLIAEoAhQiAEUNACAEIAA2AhQgACAENgIYCwJAIANBD00EQCABIAMgCGoiAEEDcjYCBCAAIAFqIgAgACgCBEEBcjYCBAwBCyABIAhBA3I2AgQgCSADQQFyNgIEIAMgCWogAzYCACAKBEAgCkEDdiIAQQN0QcgfaiEEQbQfKAIAIQICf0EBIAB0IgAgBXFFBEBBoB8gACAFcjYCACAEDAELIAQoAggLIQAgBCACNgIIIAAgAjYCDCACIAQ2AgwgAiAANgIIC0G0HyAJNgIAQagfIAM2AgALIAFBCGohAAsgDEEQaiQAIAALfwEDfyAAIQECQCAAQQNxBEADQCABLQAARQ0CIAFBAWoiAUEDcQ0ACwsDQCABIgJBBGohASACKAIAIgNBf3MgA0GBgoQIa3FBgIGChHhxRQ0ACyADQf8BcUUEQCACIABrDwsDQCACLQABIQMgAkEBaiIBIQIgAw0ACwsgASAAawvyAgICfwF+AkAgAkUNACAAIAJqIgNBAWsgAToAACAAIAE6AAAgAkEDSQ0AIANBAmsgAToAACAAIAE6AAEgA0EDayABOgAAIAAgAToAAiACQQdJDQAgA0EEayABOgAAIAAgAToAAyACQQlJDQAgAEEAIABrQQNxIgRqIgMgAUH/AXFBgYKECGwiATYCACADIAIgBGtBfHEiBGoiAkEEayABNgIAIARBCUkNACADIAE2AgggAyABNgIEIAJBCGsgATYCACACQQxrIAE2AgAgBEEZSQ0AIAMgATYCGCADIAE2AhQgAyABNgIQIAMgATYCDCACQRBrIAE2AgAgAkEUayABNgIAIAJBGGsgATYCACACQRxrIAE2AgAgBCADQQRxQRhyIgRrIgJBIEkNACABrUKBgICAEH4hBSADIARqIQEDQCABIAU3AxggASAFNwMQIAEgBTcDCCABIAU3AwAgAUEgaiEBIAJBIGsiAkEfSw0ACwsgAAtPAQJ/QdgeKAIAIgEgAEEDakF8cSICaiEAAkAgAkEAIAAgAU0bDQAgAD8AQRB0SwRAIAAQAUUNAQtB2B4gADYCACABDwtB3B5BMDYCAEF/C20BAX8jAEGAAmsiBSQAIARBgMAEcSACIANMckUEQCAFIAFB/wFxIAIgA2siAkGAAiACQYACSSIBGxALGiABRQRAA0AgACAFQYACEA4gAkGAAmsiAkH/AUsNAAsLIAAgBSACEA4LIAVBgAJqJAALnQIBA38gAC0AAEEgcUUEQAJAIAEhBAJAIAIgACIBKAIQIgAEfyAABQJ/IAEiACABLQBKIgNBAWsgA3I6AEogASgCACIDQQhxBEAgACADQSByNgIAQX8MAQsgAEIANwIEIAAgACgCLCIDNgIcIAAgAzYCFCAAIAMgACgCMGo2AhBBAAsNASABKAIQCyABKAIUIgVrSwRAIAEgBCACIAEoAiQRAAAaDAILAn8gASwAS0F/SgRAIAIhAANAIAIgACIDRQ0CGiAEIANBAWsiAGotAABBCkcNAAsgASAEIAMgASgCJBEAACADSQ0CIAMgBGohBCABKAIUIQUgAiADawwBCyACCyEAIAUgBCAAEAUaIAEgASgCFCAAajYCFAsLCwsKACAAQTBrQQpJC2MBAn8gAkUEQEEADwsCfyAALQAAIgMEQANAAkACQCABLQAAIgRFDQAgAkEBayICRQ0AIAMgBEYNAQsgAwwDCyABQQFqIQEgAC0AASEDIABBAWohACADDQALC0EACyABLQAAawucDQIQfhB/IwBBgBBrIhQkACAUQYAIaiABEBcgFEGACGogABAWIBQgFEGACGoQFyADBEAgFCACEBYLQQAhAEEAIQEDQCAUQYAIaiABQQd0IgNBwAByaiIVKQMAIBRBgAhqIANB4AByaiIWKQMAIBRBgAhqIANqIhcpAwAgFEGACGogA0EgcmoiGCkDACIIEAMiBIVBIBACIgUQAyIGIAiFQRgQAiEIIAggBiAFIAQgCBADIgeFQRAQAiIKEAMiEYVBPxACIQggFEGACGogA0HIAHJqIhkpAwAgFEGACGogA0HoAHJqIhopAwAgFEGACGogA0EIcmoiGykDACAUQYAIaiADQShyaiIcKQMAIgQQAyIFhUEgEAIiBhADIgsgBIVBGBACIQQgBCALIAYgBSAEEAMiC4VBEBACIhIQAyIThUE/EAIhBCAUQYAIaiADQdAAcmoiHSkDACAUQYAIaiADQfAAcmoiHikDACAUQYAIaiADQRByaiIfKQMAIBRBgAhqIANBMHJqIiApAwAiBRADIgaFQSAQAiIMEAMiDSAFhUEYEAIhBSAFIA0gDCAGIAUQAyINhUEQEAIiDBADIg6FQT8QAiEFIBRBgAhqIANB2AByaiIhKQMAIBRBgAhqIANB+AByaiIiKQMAIBRBgAhqIANBGHJqIiMpAwAgFEGACGogA0E4cmoiAykDACIGEAMiD4VBIBACIgkQAyIQIAaFQRgQAiEGIAYgECAJIA8gBhADIg+FQRAQAiIJEAMiEIVBPxACIQYgFyAHIAQQAyIHIAQgDiAHIAmFQSAQAiIHEAMiDoVBGBACIgQQAyIJNwMAICIgByAJhUEQEAIiBzcDACAdIA4gBxADIgc3AwAgHCAEIAeFQT8QAjcDACAbIAsgBRADIgQgBSAQIAQgCoVBIBACIgQQAyIHhUEYEAIiBRADIgo3AwAgFiAEIAqFQRAQAiIENwMAICEgByAEEAMiBDcDACAgIAQgBYVBPxACNwMAIB8gDSAGEAMiBCAGIBEgBCAShUEgEAIiBBADIgWFQRgQAiIGEAMiBzcDACAaIAQgB4VBEBACIgQ3AwAgFSAFIAQQAyIENwMAIAMgBCAGhUE/EAI3AwAgIyAPIAgQAyIEIAggEyAEIAyFQSAQAiIEEAMiBYVBGBACIggQAyIGNwMAIB4gBCAGhUEQEAIiBDcDACAZIAUgBBADIgQ3AwAgGCAEIAiFQT8QAjcDACABQQFqIgFBCEcNAAsDQCAAQQR0IgMgFEGACGpqIgEiFUGABGopAwAgASkDgAYgASkDACABKQOAAiIIEAMiBIVBIBACIgUQAyIGIAiFQRgQAiEIIAggBiAFIAQgCBADIgeFQRAQAiIKEAMiEYVBPxACIQggASkDiAQgASkDiAYgFEGACGogA0EIcmoiAykDACABKQOIAiIEEAMiBYVBIBACIgYQAyILIASFQRgQAiEEIAQgCyAGIAUgBBADIguFQRAQAiISEAMiE4VBPxACIQQgASkDgAUgASkDgAcgASkDgAEgASkDgAMiBRADIgaFQSAQAiIMEAMiDSAFhUEYEAIhBSAFIA0gDCAGIAUQAyINhUEQEAIiDBADIg6FQT8QAiEFIAEpA4gFIAEpA4gHIAEpA4gBIAEpA4gDIgYQAyIPhUEgEAIiCRADIhAgBoVBGBACIQYgBiAQIAkgDyAGEAMiD4VBEBACIgkQAyIQhUE/EAIhBiABIAcgBBADIgcgBCAOIAcgCYVBIBACIgcQAyIOhUEYEAIiBBADIgk3AwAgASAHIAmFQRAQAiIHNwOIByABIA4gBxADIgc3A4AFIAEgBCAHhUE/EAI3A4gCIAMgCyAFEAMiBCAFIBAgBCAKhUEgEAIiBBADIgeFQRgQAiIFEAMiCjcDACABIAQgCoVBEBACIgQ3A4AGIAEgByAEEAMiBDcDiAUgASAEIAWFQT8QAjcDgAMgASANIAYQAyIEIAYgESAEIBKFQSAQAiIEEAMiBYVBGBACIgYQAyIHNwOAASABIAQgB4VBEBACIgQ3A4gGIBUgBSAEEAMiBDcDgAQgASAEIAaFQT8QAjcDiAMgASAPIAgQAyIEIAggEyAEIAyFQSAQAiIEEAMiBYVBGBACIggQAyIGNwOIASABIAQgBoVBEBACIgQ3A4AHIAEgBSAEEAMiBDcDiAQgASAEIAiFQT8QAjcDgAIgAEEBaiIAQQhHDQALIAIgFBAXIAIgFEGACGoQFiAUQYAQaiQAC8MBAQN/IwBBQGoiAyQAIANBAEHAABALIQRBfyEDAkAgAEUgAUVyDQAgACgC5AEgAksNACAAKQNQQgBSDQAgACAANQLgARAaIAAQJUEAIQMgAEHgAGoiAiAAKALgASIFakEAQYABIAVrEAsaIAAgAhAZA0AgBCADQQN0IgVqIAAgBWopAwAQMiADQQFqIgNBCEcNAAsgASAEIAAoAuQBEAUaIARBwAAQBCACQYABEAQgAEHAABAEQQAhAwsgBEFAayQAIAML1AMBBn8jAEEQayIEJAAgBCABNgIMIwBBoAFrIgMkACADQQhqQYAYQZABEAUaIAMgADYCNCADIAA2AhwgA0F+IABrIgJB/////wcgAkH/////B0kbIgU2AjggAyAAIAVqIgA2AiQgAyAANgIYIANBCGohACMAQdABayICJAAgAiABNgLMASACQaABakEAQSgQCxogAiACKALMATYCyAECQEEAIAJByAFqIAJB0ABqIAJBoAFqEBtBAEgNACAAKAJMQQBOIQYgACgCACEBIAAsAEpBAEwEQCAAIAFBX3E2AgALIAFBIHEhBwJ/IAAoAjAEQCAAIAJByAFqIAJB0ABqIAJBoAFqEBsMAQsgAEHQADYCMCAAIAJB0ABqNgIQIAAgAjYCHCAAIAI2AhQgACgCLCEBIAAgAjYCLCAAIAJByAFqIAJB0ABqIAJBoAFqEBsgAUUNABogAEEAQQAgACgCJBEAABogAEEANgIwIAAgATYCLCAAQQA2AhwgAEEANgIQIAAoAhQaIABBADYCFEEACxogACAAKAIAIAdyNgIAIAZFDQALIAJB0AFqJAAgBQRAIAMoAhwiACAAIAMoAhhGa0EAOgAACyADQaABaiQAIARBEGokAAs0AQF/QQEhAQJAIABBCkkNAEECIQEDQCAAQeQASQ0BIAFBAWohASAAQQpuIQAMAAsACyABC4UBAQd/AkAgAC0AACIGQTBrQf8BcUEJSw0AIAYhAgNAIAQhByADQZmz5swBSw0BIAJB/wFxQTBrIgIgA0EKbCIEQX9zSw0BIAIgBGohAyAAIAdBAWoiBGoiCC0AACICQTBrQf8BcUEKSQ0ACyAGQTBGQQAgBxsNACABIAM2AgAgCCEFCyAFCzEBA38DQCAAIAJBA3QiA2oiBCAEKQMAIAEgA2opAwCFNwMAIAJBAWoiAkGAAUcNAAsLDAAgACABQYAIEAUaC14BAn8jAEFAaiICJABBfyEDAkAgAEUNACABQQFrQcAATwRAIAAQNwwBCyACQQE6AAMgAkGAAjsAASACIAE6AAAgAkEEckEAQTwQCxogACACEDwhAwsgAkFAayQAIAMLpAoCA38RfiMAQYACayIDJAADQCACQQN0IgQgA0GAAWpqIAEgBGopAAA3AwAgAkEBaiICQRBHDQALIAMgAEHAABAFIQEgACkDWEL5wvibkaOz8NsAhSELIAApA1BC6/qG2r+19sEfhSEMIAApA0hCn9j52cKR2oKbf4UhDSAAKQNAQtGFmu/6z5SH0QCFIQ5C8e30+KWn/aelfyEPQqvw0/Sv7ry3PCESQrvOqqbY0Ouzu38hEEKIkvOd/8z5hOoAIQVBACEDIAEpAzghBiABKQMYIRQgASkDMCEHIAEpAxAhFSABKQMoIQggASkDCCERIAEpAyAhCSABKQMAIQoDQCAJIAUgDiABQYABaiADQQZ0IgJBwAhqKAIAQQN0aikDACAJIAp8fCIKhUEgEAIiDnwiE4VBGBACIQUgBSATIA4gAUGAAWogAkHECGooAgBBA3RqKQMAIAUgCnx8IgqFQRAQAiIOfCIThUE/EAIhCSAIIBAgDSABQYABaiACQcgIaigCAEEDdGopAwAgCCARfHwiEYVBIBACIg18IhCFQRgQAiEFIAUgECANIAFBgAFqIAJBzAhqKAIAQQN0aikDACAFIBF8fCIRhUEQEAIiDXwiEIVBPxACIQUgEiAMIAFBgAFqIAJB0AhqKAIAQQN0aikDACAHIBV8fCIIhUEgEAIiDHwiEiAHhUEYEAIhByAHIBIgDCABQYABaiACQdQIaigCAEEDdGopAwAgByAIfHwiFYVBEBACIgx8IgiFQT8QAiEHIA8gCyABQYABaiACQdgIaigCAEEDdGopAwAgBiAUfHwiEoVBIBACIgt8Ig8gBoVBGBACIQYgBiALIAFBgAFqIAJB3AhqKAIAQQN0aikDACAGIBJ8fCIUhUEQEAIiCyAPfCIPhUE/EAIhBiAFIAggCyABQYABaiACQeAIaigCAEEDdGopAwAgBSAKfHwiCoVBIBACIgt8IgiFQRgQAiEFIAUgCCALIAFBgAFqIAJB5AhqKAIAQQN0aikDACAFIAp8fCIKhUEQEAIiC3wiEoVBPxACIQggByAPIA4gAUGAAWogAkHoCGooAgBBA3RqKQMAIAcgEXx8Ig+FQSAQAiIOfCIRhUEYEAIhBSAFIBEgDiABQYABaiACQewIaigCAEEDdGopAwAgBSAPfHwiEYVBEBACIg58Ig+FQT8QAiEHIAYgDSABQYABaiACQfAIaigCAEEDdGopAwAgBiAVfHwiBYVBIBACIg0gE3wiE4VBGBACIQYgBiATIA0gAUGAAWogAkH0CGooAgBBA3RqKQMAIAUgBnx8IhWFQRAQAiINfCIFhUE/EAIhBiAJIBAgDCABQYABaiACQfgIaigCAEEDdGopAwAgCSAUfHwiEIVBIBACIgx8IhOFQRgQAiEJIAkgEyAMIAFBgAFqIAJB/AhqKAIAQQN0aikDACAJIBB8fCIUhUEQEAIiDHwiEIVBPxACIQkgA0EBaiIDQQxHDQALIAEgDjcDYCABIAk3AyAgASANNwNoIAEgCDcDKCABIBE3AwggASAQNwNIIAEgDDcDcCABIAc3AzAgASAVNwMQIAEgEjcDUCABIAs3A3ggASAGNwM4IAEgFDcDGCABIA83A1ggASAFNwNAIAEgCjcDACAAIAogACkDAIUgBYU3AwBBASECA0AgACACQQN0IgNqIgQgASADaiIDKQMAIAQpAwCFIANBQGspAwCFNwMAIAJBAWoiAkEIRw0ACyABQYACaiQACyYBAX4gACABIAApA0AiAXwiAjcDQCAAIAApA0ggASACVq18NwNIC6AUAhB/An4jAEHQAGsiBiQAIAZByg42AkwgBkE3aiETIAZBOGohEANAAkAgDkEASA0AQf////8HIA5rIARIBEBB3B5BPTYCAEF/IQ4MAQsgBCAOaiEOCyAGKAJMIgchBAJAAkACQAJAAkACQAJAAkAgBgJ/AkAgBy0AACIFBEADQAJAAkAgBUH/AXEiBUUEQCAEIQUMAQsgBUElRw0BIAQhBQNAIAQtAAFBJUcNASAGIARBAmoiCDYCTCAFQQFqIQUgBC0AAiELIAghBCALQSVGDQALCyAFIAdrIQQgAARAIAAgByAEEA4LIAQNDSAGKAJMLAABEA8hBSAGKAJMIQQgBUUNAyAELQACQSRHDQMgBCwAAUEwayEPQQEhESAEQQNqDAQLIAYgBEEBaiIINgJMIAQtAAEhBSAIIQQMAAsACyAOIQwgAA0IIBFFDQJBASEEA0AgAyAEQQJ0aigCACIABEAgAiAEQQN0aiAAIAEQJEEBIQwgBEEBaiIEQQpHDQEMCgsLQQEhDCAEQQpPDQgDQCADIARBAnRqKAIADQggBEEBaiIEQQpHDQALDAgLQX8hDyAEQQFqCyIENgJMQQAhCAJAIAQsAAAiDUEgayIFQR9LDQBBASAFdCIFQYnRBHFFDQADQAJAIAYgBEEBaiIINgJMIAQsAAEiDUEgayIEQSBPDQBBASAEdCIEQYnRBHFFDQAgBCAFciEFIAghBAwBCwsgCCEEIAUhCAsCQCANQSpGBEAgBgJ/AkAgBCwAARAPRQ0AIAYoAkwiBC0AAkEkRw0AIAQsAAFBAnQgA2pBwAFrQQo2AgAgBCwAAUEDdCACakGAA2soAgAhCkEBIREgBEEDagwBCyARDQhBACERQQAhCiAABEAgASABKAIAIgRBBGo2AgAgBCgCACEKCyAGKAJMQQFqCyIENgJMIApBf0oNAUEAIAprIQogCEGAwAByIQgMAQsgBkHMAGoQIyIKQQBIDQYgBigCTCEEC0F/IQkCQCAELQAAQS5HDQAgBC0AAUEqRgRAAkAgBCwAAhAPRQ0AIAYoAkwiBC0AA0EkRw0AIAQsAAJBAnQgA2pBwAFrQQo2AgAgBCwAAkEDdCACakGAA2soAgAhCSAGIARBBGoiBDYCTAwCCyARDQcgAAR/IAEgASgCACIEQQRqNgIAIAQoAgAFQQALIQkgBiAGKAJMQQJqIgQ2AkwMAQsgBiAEQQFqNgJMIAZBzABqECMhCSAGKAJMIQQLQQAhBQNAIAUhEkF/IQwgBCwAAEHBAGtBOUsNByAGIARBAWoiDTYCTCAELAAAIQUgDSEEIAUgEkE6bGpBzxhqLQAAIgVBAWtBCEkNAAsgBUETRg0CIAVFDQYgD0EATgRAIAMgD0ECdGogBTYCACAGIAIgD0EDdGopAwA3A0AMBAsgAA0BC0EAIQwMBQsgBkFAayAFIAEQJCAGKAJMIQ0MAgsgD0F/Sg0DC0EAIQQgAEUNBAsgCEH//3txIgsgCCAIQYDAAHEbIQVBACEMQcAOIQ8gECEIAkACQAJAAn8CQAJAAkACQAJ/AkACQAJAAkACQAJAAkAgDUEBaywAACIEQV9xIAQgBEEPcUEDRhsgBCASGyIEQdgAaw4hBBISEhISEhISDhIPBg4ODhIGEhISEgIFAxISCRIBEhIEAAsCQCAEQcEAaw4HDhILEg4ODgALIARB0wBGDQkMEQsgBikDQCEUQcAODAULQQAhBAJAAkACQAJAAkACQAJAIBJB/wFxDggAAQIDBBcFBhcLIAYoAkAgDjYCAAwWCyAGKAJAIA42AgAMFQsgBigCQCAOrDcDAAwUCyAGKAJAIA47AQAMEwsgBigCQCAOOgAADBILIAYoAkAgDjYCAAwRCyAGKAJAIA6sNwMADBALIAlBCCAJQQhLGyEJIAVBCHIhBUH4ACEECyAQIQcgBEEgcSELIAYpA0AiFFBFBEADQCAHQQFrIgcgFKdBD3FB4BxqLQAAIAtyOgAAIBRCD1YhDSAUQgSIIRQgDQ0ACwsgBUEIcUUgBikDQFByDQMgBEEEdkHADmohD0ECIQwMAwsgECEEIAYpA0AiFFBFBEADQCAEQQFrIgQgFKdBB3FBMHI6AAAgFEIHViEHIBRCA4ghFCAHDQALCyAEIQcgBUEIcUUNAiAJIBAgB2siBEEBaiAEIAlIGyEJDAILIAYpA0AiFEJ/VwRAIAZCACAUfSIUNwNAQQEhDEHADgwBCyAFQYAQcQRAQQEhDEHBDgwBC0HCDkHADiAFQQFxIgwbCyEPIBAhBAJAIBRCgICAgBBUBEAgFCEVDAELA0AgBEEBayIEIBQgFEIKgCIVQgp+fadBMHI6AAAgFEL/////nwFWIQcgFSEUIAcNAAsLIBWnIgcEQANAIARBAWsiBCAHIAdBCm4iC0EKbGtBMHI6AAAgB0EJSyENIAshByANDQALCyAEIQcLIAVB//97cSAFIAlBf0obIQUgBikDQCIUQgBSIAlyRQRAQQAhCSAQIQcMCgsgCSAUUCAQIAdraiIEIAQgCUgbIQkMCQsCfyAJIgRBAEchCAJAAkACQCAGKAJAIgVB4xYgBRsiByIFQQNxRSAERXINAANAIAUtAABFDQIgBEEBayIEQQBHIQggBUEBaiIFQQNxRQ0BIAQNAAsLIAhFDQELAkAgBS0AAEUgBEEESXINAANAIAUoAgAiCEF/cyAIQYGChAhrcUGAgYKEeHENASAFQQRqIQUgBEEEayIEQQNLDQALCyAERQ0AA0AgBSAFLQAARQ0CGiAFQQFqIQUgBEEBayIEDQALC0EACyIEIAcgCWogBBshCCALIQUgBCAHayAJIAQbIQkMCAsgCQRAIAYoAkAMAgtBACEEIABBICAKQQAgBRANDAILIAZBADYCDCAGIAYpA0A+AgggBiAGQQhqNgJAQX8hCSAGQQhqCyEIQQAhBAJAA0AgCCgCACIHRQ0BIAZBBGogBxAiIgdBAEgiCyAHIAkgBGtLckUEQCAIQQRqIQggCSAEIAdqIgRLDQEMAgsLQX8hDCALDQULIABBICAKIAQgBRANIARFBEBBACEEDAELQQAhCCAGKAJAIQ0DQCANKAIAIgdFDQEgBkEEaiAHECIiByAIaiIIIARKDQEgACAGQQRqIAcQDiANQQRqIQ0gBCAISw0ACwsgAEEgIAogBCAFQYDAAHMQDSAKIAQgBCAKSBshBAwFCyAAIAYrA0AgCiAJIAUgBEEAEQwAIQQMBAsgBiAGKQNAPAA3QQEhCSATIQcgCyEFDAILQX8hDAsgBkHQAGokACAMDwsgAEEgIAwgCCAHayILIAkgCSALSBsiCWoiCCAKIAggCkobIgQgCCAFEA0gACAPIAwQDiAAQTAgBCAIIAVBgIAEcxANIABBMCAJIAtBABANIAAgByALEA4gAEEgIAQgCCAFQYDAAHMQDQwACwALkwIBAn8gAEUEQEFnDwsgACgCAEUEQEF/DwsCQAJ/QX4gACgCBEEESQ0AGiAAKAIIRQRAQW4gACgCDA0BGgsgACgCFCEBIAAoAhBFDQFBeiABQQhJDQAaIAAoAhhFBEBBbCAAKAIcDQEaCyAAKAIgRQRAQWsgACgCJA0BGgtBciAAKAIsIgFBCEkNABpBcSABQYCAgAFLDQAaQXIgASAAKAIwIgJBA3RJDQAaIAAoAihFBEBBdA8LIAJFBEBBcA8LQW8gAkH///8HSw0AGiAAKAI0IgFFBEBBZA8LQWMgAUH///8HSw0AGiAAKAJAIQECQCAAKAI8BEAgAQ0BQWkPC0FoIAENARoLQQALDwtBbUF6IAEbCzgBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMQQAgAigCCEH8FygCABEAABogAkEQaiQAC4MSAhN/An4jAEEwayIJJAACQCAAEBwiBA0AQWYhBCABQQJLDQAgACgCLCEDIAAoAjAhBCAAKAI4IQIgCUEANgIAIAkgAjYCBCAAKAIoIQIgCSAENgIYIAkgAjYCCCAJIARBA3QiAiADIAIgA0sbIARBAnQiAm4iAzYCECAJIANBAnQ2AhQgCSACIANsNgIMIAAoAjQhAyAJIAE2AiAgCSADNgIcIAMgBEsEQCAJIAQ2AhwLIwBB0ABrIgskAEFnIQQCQCAJIgFFIAAiA0VyDQAgASADNgIoIAMhBSABKAIMIQZBaiECAkAgASIERQ0AIAatQgqGIhVCIIinDQAgFachAgJAIAUoAjwiBQRAIAQgAiAFEQMAGiAEKAIAIQIMAQsgBCACEAkiAjYCAAtBAEFqIAIbIQILIAIiBA0AIAEoAiAhBSMAQYACayICJAAgA0UgCyIERXJFBEAgAkEQakHAABAYGiACQQxqIAMoAjAQByACQRBqIAJBDGpBBBAGGiACQQxqIAMoAgQQByACQRBqIAJBDGpBBBAGGiACQQxqIAMoAiwQByACQRBqIAJBDGpBBBAGGiACQQxqIAMoAigQByACQRBqIAJBDGpBBBAGGiACQQxqIAMoAjgQByACQRBqIAJBDGpBBBAGGiACQQxqIAUQByACQRBqIAJBDGpBBBAGGiACQQxqIAMoAgwQByACQRBqIAJBDGpBBBAGGgJAIAMoAggiBUUNACACQRBqIAUgAygCDBAGGiADLQBEQQFxRQ0AIAMoAgggAygCDBAdIANBADYCDAsgAkEMaiADKAIUEAcgAkEQaiACQQxqQQQQBhogAygCECIFBEAgAkEQaiAFIAMoAhQQBhoLIAJBDGogAygCHBAHIAJBEGogAkEMakEEEAYaAkAgAygCGCIFRQ0AIAJBEGogBSADKAIcEAYaIAMtAERBAnFFDQAgAygCGCADKAIcEB0gA0EANgIcCyACQQxqIAMoAiQQByACQRBqIAJBDGpBBBAGGiADKAIgIgUEQCACQRBqIAUgAygCJBAGGgsgAkEQaiAEQcAAEBIaCyACQYACaiQAIAtBQGtBCBAEQQAhAiMAQYAIayIDJAAgASgCGARAIARBxABqIQYgBEFAayEFA0AgBUEAEAcgBiACEAcgA0GACCAEQcgAECAgASgCACABKAIUIAJsQQp0aiADEC4gBUEBEAcgA0GACCAEQcgAECAgASgCACABKAIUIAJsQQp0akGACGogAxAuIAJBAWoiAiABKAIYSQ0ACwsgA0GACBAEIANBgAhqJAAgC0HIABAEQQAhBAsgC0HQAGokACAEDQBBZyEEAkAgCUUNACABKAIYRQ0AIwBBIGsiBSQAIAEiCygCCARAIAsoAhghBANAIAQhA0EAIQ8DQEEAIRBBACECIAMEQANAIAUgDzoAGCAFQQA2AhwgBSAFKQMYNwMIIAUgEjYCECAFIBA2AhQgBSAFKQMQNwMAIAUhBEEAIREjAEGAGGsiByQAAkAgCyIDRQ0AAkACQAJAAn8CfwJAAkACQCADKAIgQQFrDgICAQALIAQoAgAhCEEADAMLIAQoAgANA0EAIAQtAAgiDEECSQ0BGiAELQAIIghFQQF0IQwMBQsgBC0ACCEMIAQoAgALIQggBxAvIAdBgAhqEC8gByAIrTcDgAggBDUCBCEVIAcgDK1C/wGDNwOQCCAHIBU3A4gIIAcgAzUCDDcDmAggByADNQIINwOgCCAHIAM1AiA3A6gIQQELIREgCEUNAQsgBC0ACCEIQQAhDAwBCyAELQAIIghFQQF0IQwgCCARRXINACAHQYAQaiAHQYAIaiAHECZBAiEMQQAhCAsgDCADKAIQIgZPDQBBfyADKAIUIgJBAWsgAiAEKAIEbCAMaiAGIAhB/wFxbGoiCCACcBsgCGohBgNAIAhBAWsgBiAIIAJwQQFGGyEOAn8gEQRAIAxB/wBxIgJFBEAgB0GAEGogB0GACGogBxAmCyAHQYAQaiACQQN0agwBCyADKAIAIA5BCnRqCyECIAMoAhghCiACKQMAIRUgBCAMNgIMIAMhBiAVpyEUIBVCIIinIApwrSIVIBUgBDUCBCIVIAQtAAgbIAQoAgAbIhYgFVEhCgJ+IAQiAigCAEUEQCACLQAIIg1FBEAgAigCDEEBayEKQgAMAgsgBigCECANbCENIAIoAgwhAiAKBEAgAiANakEBayEKQgAMAgsgDSACRWshCkIADAELIAYoAhAhDSAGKAIUIRMCfyAKBEAgAigCDCATIA1Bf3NqagwBCyATIA1rIAIoAgxFawshCkIAIAItAAgiAkEDRg0AGiANIAJBAWpsrQshFSAVIApBAWutfCAKrSAUrSIVIBV+QiCIfkIgiH0gBjUCFIKnIQYgAygCACICIAMoAhQgFqdsQQp0aiAGQQp0aiEGIAIgCEEKdGohCgJAIAMoAgRBEEYEQCACIA5BCnRqIAYgCkEAEBEMAQsgAiAOQQp0aiECIAQoAgBFBEAgAiAGIApBABARDAELIAIgBiAKQQEQEQsgDEEBaiIMIAMoAhBPDQEgCEEBaiEIIA5BAWohBiADKAIUIQIMAAsACyAHQYAYaiQAIAsoAhgiBCECIBBBAWoiECAESQ0ACwsgAiEDIA9BAWoiD0EERw0ACyASQQFqIhIgCygCCEkNAAsLIAVBIGokAEEAIQQLIAQNACMAQYAQayIDJAAgAEUgCUVyRQRAIANBgAhqIAEoAgAgASgCFEEKdGpBgAhrEBcgASgCGEECTwRAQQEhBANAIANBgAhqIAEoAgAgASgCFCICIAIgBGxqQQp0akGACGsQFiAEQQFqIgQgASgCGEkNAAsLIAMiAkGACGohC0EAIQQDQCACIARBA3QiBWogBSALaikDABAyIARBAWoiBEGAAUcNAAsgACgCACAAKAIEIANBgAgQICADQYAIakGACBAEIANBgAgQBCABKAIAIgQgASgCDEEKdCIBEAQCQCAAKAJAIgAEQCAEIAEgABECAAwBCyAEEAgLCyADQYAQaiQAQQAhBAsgCUEwaiQAIAQLJwEBfwJAAkACQAJAIAAOAwABAgMLQdATDwtBixEPC0GeEyEBCyABC48DAQF/IwBBgANrIgQkACAEQQA2AowBIARBjAFqIAEQBwJAIAFBwABNBEAgBEGQAWogARAYQQBIDQEgBEGQAWogBEGMAWpBBBAGQQBIDQEgBEGQAWogAiADEAZBAEgNASAEQZABaiAAIAEQEhoMAQsgBEGQAWpBwAAQGEEASA0AIARBkAFqIARBjAFqQQQQBkEASA0AIARBkAFqIAIgAxAGQQBIDQAgBEGQAWogBEFAa0HAABASQQBIDQAgACAEKQNANwAAIAAgBCkDSDcACCAAIAQpA1g3ABggACAEKQNQNwAQIABBIGohACABQSBrIgJBwQBPBEADQCAEIARBQGtBwAAQBSIBQUBrQcAAIAEQMUEASA0CIAAgASkDQDcAACAAIAEpA0g3AAggACAEKQNYNwAYIAAgBCkDUDcAECAAQSBqIQAgAkEgayICQcAASw0ACwsgBCAEQUBrQcAAEAUiAUFAayACIAEQMUEASA0AIAAgAUFAayACEAUaCyAEQZABakHwARAEIARBgANqJAALAwABC5kCACAARQRAQQAPCwJ/AkAgAAR/IAFB/wBNDQECQEGgHigCACgCAEUEQCABQYB/cUGAvwNGDQMMAQsgAUH/D00EQCAAIAFBP3FBgAFyOgABIAAgAUEGdkHAAXI6AABBAgwECyABQYCwA09BACABQYBAcUGAwANHG0UEQCAAIAFBP3FBgAFyOgACIAAgAUEMdkHgAXI6AAAgACABQQZ2QT9xQYABcjoAAUEDDAQLIAFBgIAEa0H//z9NBEAgACABQT9xQYABcjoAAyAAIAFBEnZB8AFyOgAAIAAgAUEGdkE/cUGAAXI6AAIgACABQQx2QT9xQYABcjoAAUEEDAQLC0HcHkEZNgIAQX8FQQELDAELIAAgAToAAEEBCwtQAQN/AkAgACgCACwAABAPRQRADAELA0AgACgCACICLAAAIQMgACACQQFqNgIAIAEgA2pBMGshASACLAABEA9FDQEgAUEKbCEBDAALAAsgAQu7AgACQCABQRRLDQACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDgoAAQIDBAUGBwgJCgsgAiACKAIAIgFBBGo2AgAgACABKAIANgIADwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFB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AUHjFEEDEBANACABQQNqIANBDGoQFSIBRQ0AIAAgAygCDDYCKCABQecUQQMQEA0AIAFBA2ogA0EMahAVIgFFDQAgACADKAIMIgQ2AjAgACAENgI0IAEtAABBJEcNACADIAc2AgwgACgCECADQQxqIAFBAWoQLCIBRQ0AIAAgAygCDDYCFCABLQAAQSRHDQAgAyAGNgIMIAAoAgAgA0EMaiABQQFqECwiAUUNACAAIAMoAgw2AgQgAEEANgJEIABCADcCPCAAQgA3AhggAEIANwIgIAAQHCICDQBBYEEAIAEtAAAbIQILIANBEGokACACCykBAn8DQCAAIAJBA3QiA2ogASADaikAADcDACACQQFqIgJBgAFHDQALCwwAIABBAEGACBALGgtlAQJ/IAAgAhAeIgIEfyACBUFdQQACfyAAKAIAIQRBACECIAAoAgQiAAR/A0AgAyACIARqLQAAIAEgAmotAABzciEDIAJBAWoiAiAARw0ACyADQQFrQQh2QQFxQQFrBUEACwsbCwtdAQJ/IwBB8AFrIgMkAEF/IQQCQCACRSAARSABRXJyIAFBwABLcg0AIAMgARAYQQBIDQAgAyACQcAAEAZBAEgNACADIAAgARASIQQLIANB8AEQBCADQfABaiQAIAQLCQAgACABNwAACxAAIwAgAGtBcHEiACQAIAALMwEBfyAAKAIUIgMgASACIAAoAhAgA2siASABIAJLGyIBEAUaIAAgACgCFCABajYCFCACC9oBAQR/IwBB0ABrIggkAAJAIABFBEBBYCEADAELIAggABAKIgk2AgwgCCAJNgIcIAggCRAJIgo2AhggCCAJEAkiCzYCCEEAIQkCQAJAIApFIAtFcg0AIAggAjYCFCAIIAE2AhAgCEEIaiAAIAcQLSIADQEgCCgCCCEJIAggCCgCDBAJIgA2AgggAEUNACAIIAY2AiwgCCAFNgIoIAggBDYCJCAIIAM2AiAgCEEIaiAJIAcQMCEADAELQWohAAsgCCgCGBAIIAgoAggQCCAJEAgLIAhB0ABqJAAgAAuQAgEDfyMAQdAAayIRJABBfiETAkAgCEEESQ0AIAgQCSISRQRAQWohEwwBCyARQQA2AkwgEUIANwJEIBEgAjYCPCARIAI2AjggESABNgI0IBEgADYCMCARIA82AiwgESAONgIoIBEgDTYCJCAR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IGxvbmcgb3IgdG9vIHNob3J0AE1pc3NpbmcgYXJndW1lbnRzAFRvbyBtYW55IGxhbmVzAFRvbyBmZXcgbGFuZXMAVG9vIG1hbnkgdGhyZWFkcwBOb3QgZW5vdWdoIHRocmVhZHMATWVtb3J5IGFsbG9jYXRpb24gZXJyb3IATWVtb3J5IGNvc3QgaXMgdG9vIHNtYWxsAFRpbWUgY29zdCBpcyB0b28gc21hbGwAYXJnb24yaQBBcmdvbjJpAFRoZSBwYXNzd29yZCBkb2VzIG5vdCBtYXRjaCB0aGUgc3VwcGxpZWQgaGFzaABPdXRwdXQgcG9pbnRlciBtaXNtYXRjaABPdXRwdXQgaXMgdG9vIGxvbmcAU2FsdCBpcyB0b28gbG9uZwBTZWNyZXQgaXMgdG9vIGxvbmcAUGFzc3dvcmQgaXMgdG9vIGxvbmcAQXNzb2NpYXRlZCBkYXRhIGlzIHRvbyBsb25nAFRocmVhZGluZyBmYWlsdXJlAE1lbW9yeSBjb3N0IGlzIHRvbyBsYXJnZQBUaW1lIGNvc3QgaXMgdG9vIGxhcmdlAFVua25vd24gZXJyb3IgY29kZQBhcmdvbjJpZABBcmdvbjJpZABFbmNvZGluZyBmYWlsZWQARGVjb2RpbmcgZmFpbGVkAGFyZ29uMmQAQXJnb24yZABBcmdvbjJfQ29udGV4dCBjb250ZXh0IGlzIE5VTEwAT3V0cHV0IHBvaW50ZXIgaXMgTlVMTABUaGUgYWxsb2NhdGUgbWVtb3J5IGNhbGxiYWNrIGlzIE5VTEwAVGhlIGZyZWUgbWVtb3J5IGNhbGxiYWNrIGlzIE5VTEwAT0sAJHY9ACx0PQAscD0AJG09AFRoZXJlIGlzIG5vIHN1Y2ggdmVyc2lvbiBvZiBBcmdvbjIAU2FsdCBwb2ludGVyIGlzIE5VTEwsIGJ1dCBzYWx0IGxlbmd0aCBpcyBub3QgMABTZWNyZXQgcG9pbnRlciBpcyBOVUxMLCBidXQgc2VjcmV0IGxlbmd0aCBpcyBub3QgMABQYXNzd29yZCBwb2ludGVyIGlzIE5VTEwsIGJ1dCBwYXNzd29yZCBsZW5ndGggaXMgbm90IDAAQXNzb2NpYXRlZCBkYXRhIHBvaW50ZXIgaXMgTlVMTCwgYnV0IGFkIGxlbmd0aCBpcyBub3QgMAAobnVsbCkAAACbCAAAuwcAAEkJAADACQAAsAkAAPAHAAAfCAAAMAgAAMkIAABvCgAA4AkAABYKAAA7CgAAQwgAACsLAADBCgAAkgoAAPQKAAACCAAAEQgAAFsJAABbCAAAdAkAAHQIAAAFCQAAdAcAAC0JAACeBwAA9AgAAGIHAAAYCQAAiAcAAOEIAABOBwAA/wkAAFwKAAABAEGkGAsBAgBByxgLBf//////AEGQGQtBEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAEACQsLAAAJBgsAAAsABhEAAAAREREAQeEZCyELAAAAAAAAAAARAAoKERERAAoAAAIACQsAAAAJAAsAAAsAQZsaCwEMAEGnGgsVDAAAAAAMAAAAAAkMAAAAAAAMAAAMAEHVGgsBDgBB4RoLFQ0AAAAEDQAAAAAJDgAAAAAADgAADgBBjxsLARAAQZsbCx4PAAAAAA8AAAAACRAAAAAAABAAABAAABIAAAASEhIAQdIbCw4SAAAAEhISAAAAAAAACQBBgxwLAQsAQY8cCxUKAAAAAAoAAAAACQsAAAAAAAsAAAsAQb0cCwEMAEHJHAsnDAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAwMTIzNDU2Nzg5QUJDREVGAEHwHAsBAQBBoB4LAogPAEHYHgsDkBFQ"},145(){},967(){}},n={};function r(s){var o=n[s];if(o!==void 0)return o.exports;var f=n[s]={exports:{}};return e[s].call(f.exports,f,f.exports,r),f.exports}return r(631)})(),Ko=qo});var Un=class a{verbose=0;mockMode=!1;static#e=null;proxyUrl=null;#t=null;#n=!1;#r=0;#i=["time.google.com","time.cloudflare.com","pool.ntp.org"];constructor(){if(a.#e)return a.#e;a.#e=this}static get instance(){return a.#e||new a}static get time(){return a.instance.time}get time(){return this.mockMode?Date.now():this.#t===null?null:Date.now()+Math.round(this.#t)}async sync(t){if(t!==void 0&&(this.verbose=t),this.mockMode)return Date.now();if(this.#n){for(;this.#n;)await new Promise(e=>setTimeout(e,50));return this.time}this.#n=!0;try{let e=await this.#s();return e.length===0?(console.warn("[Clock] All NTP sources failed, using local time"),this.#t=0,this.time):(this.#t=this.#a(e),this.#r=Date.now(),e.length<this.#i.length&&setTimeout(()=>this.#c(),100),this.time)}catch(e){return console.error("[Clock] Sync failed:",e),this.#t=0,this.time}finally{this.#n=!1}}get status(){return this.mockMode?{synchronized:!0,syncing:!1,offset:0,lastSync:Date.now(),age:0}:{synchronized:this.#t!==null,syncing:this.#n,offset:this.#t,lastSync:this.#r,age:this.#r?Date.now()-this.#r:null}}async#s(){if(this.proxyUrl){let r=await this.#A();return r?[r]:[]}let t=this.#i.map(r=>this.#o(r)),e=await Promise.allSettled(t),n=[];for(let r of e)r.status==="fulfilled"&&n.push(r.value);return n}async#o(t){let e=new AbortController,n=setTimeout(()=>e.abort(),2e3);try{let r=Date.now(),s=await fetch(`https://${t}`,{method:"HEAD",signal:e.signal,cache:"no-cache"}),o=(Date.now()-r)/2;if(!s.ok)throw new Error(`HTTP ${s.status}`);let f=new Date(s.headers.get("date")).getTime();if(isNaN(f))throw new Error("Invalid date header");return{source:t,serverTime:f+o,localTime:Date.now(),latency:o*2}}finally{clearTimeout(n)}}async#A(){let t=new AbortController,e=setTimeout(()=>t.abort(),2e3);try{let n=Date.now(),r=await fetch(this.proxyUrl,{signal:t.signal}),s=(Date.now()-n)/2;return{source:"proxy",serverTime:(await r.json()).time+s,localTime:Date.now(),latency:s*2}}finally{clearTimeout(e)}}#a(t){if(t.length===1)return t[0].serverTime-t[0].localTime;t.sort((r,s)=>r.latency-s.latency);let e=[];for(let r of t)e.push(r.serverTime-r.localTime);e.sort((r,s)=>r-s);let n=Math.floor(e.length/2);return e.length%2===0?(e[n-1]+e[n])/2:e[n]}async#c(){if(!this.#n)try{let t=await this.#s();if(t.length===0)return;let e=this.#a(t);Math.abs(e-this.#t)>100&&(this.#t=e)}catch(t){this.verbose&&console.warn("[Clock] Background refine failed:",t)}}},ct=Un.instance;await Mt();await Mt();var xs=1e4,Ds=36e5,_t={VALID_SIGNATURE:1e4,VALID_POW:3e5,UNICAST_RELAYED:5e3,WRONG_SIGNATURE:-6e5,WRONG_POW:-1e8,WRONG_SERIALIZATION:-6e4,GOSSIP_FLOOD:-6e4,UNICAST_FLOOD:-3e4,HOPS_EXCEEDED:-3e5,UNICAST_INVALID_ROUTE:-6e4,FAILED_HANDSHAKE:-6e5,WRONG_LENGTH:-6e5},Ze=class{id;cryptoCodex;verbose;trustBalances={};manualBanList=new Set;bytesCounters={gossip:{},unicast:{}};bytesCounterResetIn=0;constructor(t,e,n=0){this.id=t,this.cryptoCodex=e,this.verbose=n}tick(){for(let t in this.trustBalances){let e=this.trustBalances[t];e!==0&&(e=e<0?Math.min(0,e+1e3):Math.max(0,e-100))}this.bytesCounterResetIn-=1e3,!(this.bytesCounterResetIn>0)&&(this.bytesCounterResetIn=xs,this.bytesCounters={gossip:{},unicast:{}})}countPeerAction(t,e){if(_t[e])return this.adjustTrust(t,_t[e])}adjustTrust(t,e,n="na"){t!==this.id&&(e&&(this.trustBalances[t]=Math.min(Ds,(this.trustBalances[t]||0)+e)),e&&this.verbose>3&&console.log(`%c(Arbiter: ${this.id}) ${t} +${e}ms (${n}). Updated: ${this.trustBalances[t]}ms.`,lt.ARBITER),this.isBanished(t)&&this.verbose>1&&console.log(`%c(Arbiter: ${this.id}) Peer ${t} is now banished.`,lt.ARBITER))}setBanished(t){this.manualBanList.has(t)||this.manualBanList.add(t)}isBanished(t){return Bt.MANUAL_BAN_MODE?this.manualBanList.has(t):(this.trustBalances[t]||0)<0}countMessageBytes(t,e,n){this.bytesCounters[n][t]||(this.bytesCounters[n][t]=0),this.bytesCounters[n][t]+=e;let[r,s]=n==="gossip"?[Qt.MAX_BYTES_PER_PERIOD,_t.GOSSIP_FLOOD]:[Ct.MAX_BYTES_PER_PERIOD,_t.UNICAST_FLOOD];return this.bytesCounters[n][t]<r?!0:this.adjustTrust(t,s,`Message ${n} flood detected`)}async digestMessage(t,e,n,r=.01){let{senderId:s,pubkey:o,topic:f,expectedEnd:h}=e;if(!(!this.#e(t,e,n)||!this.#t(t,f?"gossip":"unicast",n,h)||!(f?this.#n(t,e):this.#r(t,e)))&&!(this.isBanished(t)||this.isBanished(s)))return this.trustBalances[s]>_t.VALID_POW||Math.random()<r&&await this.#i(s,o),!0}#e(t,e,n){try{let{pubkey:r,signature:s,signatureStart:o}=e,f=n.subarray(0,o);if(!this.cryptoCodex.verifySignature(r,f,s))throw new Error("Gossip signature invalid");return this.adjustTrust(t,_t.VALID_SIGNATURE,"Gossip signature valid"),!0}catch(r){this.verbose>1&&console.error(`%c(Arbiter: ${this.id}) Error during signature verification from ${t}: ${r.stack}`,lt.ARBITER),this.verbose>2&&console.log(`%c(Arbiter) signatureControl() error details: ${e}`,lt.ARBITER)}this.adjustTrust(t,_t.WRONG_SIGNATURE,"Gossip signature invalid")}#t(t,e,n,r){if(!r||n.length===r)return!0;this.adjustTrust(t,_t.WRONG_LENGTH,`${e} message length mismatch`)}#n(t,e){if(e.HOPS<=(Qt.HOPS[e.topic]||Qt.HOPS.default))return!0;this.adjustTrust(t,_t.HOPS_EXCEEDED,"Gossip HOPS exceeded")}#r(t,e){if(e.route.length<=Ct.MAX_HOPS)return!0;this.adjustTrust(t,_t.HOPS_EXCEEDED,"Unicast HOPS exceeded")}async#i(t,e){await this.cryptoCodex.pubkeyDifficultyCheck(e)?this.adjustTrust(t,_t.VALID_POW,"Gossip PoW valid"):this.adjustTrust(t,_t.WRONG_POW,"Gossip PoW invalid")}};await Mt();var vs;function Ce(a,t=0){let e=typeof a=="string"?(vs??=new TextEncoder).encode(a):a,n=e,r=t+374761393&4294967295,s=0;if(n.length>=16){let f=[t+2654435761+2246822519&4294967295,t+2246822519&4294967295,t+0&4294967295,t-2654435761&4294967295],h=e,c=h.length-16,u=0;for(s=0;(s&4294967280)<=c;s+=4){let I=s,l=h[I+0]+(h[I+1]<<8),C=h[I+2]+(h[I+3]<<8),B=l*2246822519+(C*2246822519<<16),y=f[u]+B&4294967295;y=y<<13|y>>>19;let m=y&65535,g=y>>>16;f[u]=m*2654435761+(g*2654435761<<16)&4294967295,u=u+1&3}r=(f[0]<<1|f[0]>>>31)+(f[1]<<7|f[1]>>>25)+(f[2]<<12|f[2]>>>20)+(f[3]<<18|f[3]>>>14)&4294967295}r=r+e.length&4294967295;let o=e.length-4;for(;s<=o;s+=4){let f=s,h=n[f+0]+(n[f+1]<<8),c=n[f+2]+(n[f+3]<<8),u=h*3266489917+(c*3266489917<<16);r=r+u&4294967295,r=r<<17|r>>>15,r=(r&65535)*668265263+((r>>>16)*668265263<<16)&4294967295}for(;s<n.length;++s){let f=n[s];r=r+f*374761393,r=r<<11|r>>>21,r=(r&65535)*2654435761+((r>>>16)*2654435761<<16)&4294967295}return r=r^r>>>15,r=((r&65535)*2246822519&4294967295)+((r>>>16)*2246822519<<16),r=r^r>>>13,r=((r&65535)*3266489917&4294967295)+((r>>>16)*3266489917<<16),r=r^r>>>16,r<0?r+4294967296:r}var ze=class{id;wrtc;verbose;stunUrls;constructor(t,e,n=0){this.id=t,this.verbose=n,this.stunUrls=e}onSignalAnswer=null;onConnect=null;offerInstanceByExpiration={};creatingOffer=!1;offerCreationTimeout=null;offersToCreate=St.MAX_SDP_OFFERS;offers={};assignTransportWrtc(t){this.wrtc=t}tick(){let t=ct.time;for(let s in this.offerInstanceByExpiration){let o=this.offerInstanceByExpiration[s];t<s||(o?.destroy(),delete this.offerInstanceByExpiration[s],this.creatingOffer=!1)}for(let s in this.offers){let o=this.offers[s];if(o.offererInstance.destroyed){delete this.offers[s];continue}if(o.isUsed){delete this.offers[s];continue}o.timestamp+St.SDP_OFFER_EXPIRATION>t||(o.offererInstance?.destroy(),delete this.offers[s])}let e=0;for(let s in this.offers){e++;let o=this.offers[s];if(o.isDigestingOneAnswer){o.isDigestingOneAnswer=!1;continue}if(o.offererInstance.destroyed)continue;let f=o.answers.filter(u=>!u.used);if(!f.length)continue;let h=f.reduce((u,I)=>u.timestamp>I.timestamp?u:I);if(!h)continue;h.used=!0;let c=t-h.timestamp;c>Bt.CONNECTION_UPGRADE_TIMEOUT/2||(o.offererInstance.signal(h.signal),o.isDigestingOneAnswer=!0,this.verbose>2&&console.log(`(${this.id}) Using answer from ${h.peerId} for offer ${s} (received since ${c} ms)`))}if(this.creatingOffer||e>=this.offersToCreate)return;this.creatingOffer=!0;let n=t+(St.SIGNAL_CREATION_TIMEOUT||8e3),r=this.#e(n);this.offerInstanceByExpiration[n]=r}#e(t){let e=St.ICE_COMPLETE_TIMEOUT||1e3,n=new St.PEER({initiator:!0,trickle:!1,iceCompleteTimeout:e,wrtc:this.wrtc,config:{iceServers:this.stunUrls}});return n.on("error",r=>this.#n(r)),n.on("signal",r=>{let{candidate:s,type:o}=r;if(!r||s)throw new Error("Unexpected signal data from offerer instance: "+JSON.stringify(r));if(o!=="offer")throw new Error("Unexpected signal type from offerer instance: "+o);delete this.offerInstanceByExpiration[t];let f=Ce(JSON.stringify(r));n.on("connect",()=>{this.offers[f]&&(this.offers[f].isUsed=!0),this.onConnect(void 0,n)}),this.offers[f]={timestamp:ct.time,sentCounter:0,signal:r,offererInstance:n,answers:[],answerers:{},isUsed:!1},this.creatingOffer=!1}),n}#t(t,e="",n=2,r="includes"){return r[0]==="i"&&!t.message.includes(e)?!1:t.message.startsWith(e)?(this.verbose>=n&&console.info(`%cOfferManager => ${t.message}`,lt.PEER_STORE),!0):!1}#n=t=>{this.verbose<1||this.#t(t,"Ice connection failed",2)||this.#t(t,"Connection failed",2)||this.#t(t,"Remote transport instance",3,"startsWith")||this.#t(t,"Simulated failure",4,"startsWith")||this.#t(t,"No peer found",4,"startsWith")||this.#t(t,"Missing transport instance",2,"startsWith")||this.#t(t,"Failed to create answer",2,"startsWith")||this.#t(t,"Transport instance",3,"startsWith")||this.#t(t,"cannot signal after peer is destroyed",3,"startsWith")||this.#t(t,"No pending",3)||this.#t(t,"is already linked",3)||this.#t(t,"There is already a pending",3)||this.#t(t,"closed the connection",3)||this.#t(t,"No transport instance found for id:",3)||this.verbose>0&&console.error("transportInstance ERROR => ",t.stack)};bestReadyOffer(t=0,e=!0){let n=null,r=null,s=null;for(let o in this.offers){let f=this.offers[o],{isUsed:h,sentCounter:c,signal:u,timestamp:I}=f;if(h||c>t)continue;let l=ct.time-I;if(!(e&&l>St.SDP_OFFER_EXPIRATION/2)&&!(s&&l>s)){n=f,r=o,s=l;break}}return{offerHash:r,readyOffer:n,since:s}}addSignalAnswer(t,e,n,r){!e||e.type!=="answer"||!n||!this.offers[n]||this.offers[n].answerers[t]||(this.offers[n].answerers[t]=!0,this.offers[n].answers.push({peerId:t,signal:e,timestamp:r}),this.verbose>3&&console.log(`(OfferManager) Added answer from ${t} for offer ${n}`))}getTransportInstanceForSignal(t,e,n){try{if(!e||!e.type||!e.sdp)throw new Error("Wrong remote SDP provided");let{type:r,sdp:s}=e;if(r!=="offer"&&r!=="answer")throw new Error("Invalid remote SDP type");if(r==="offer"&&!s)throw new Error("No SDP in the remote SDP offer");if(r==="answer"&&!s)throw new Error("No SDP in the remote SDP answer");if(r==="answer"){let h=n?this.offers[n]?.offererInstance:null;if(!h)throw new Error("No pending offer found for the given offer hash to accept the answer");return h}let o=St.ICE_COMPLETE_TIMEOUT||1e3,f=new St.PEER({initiator:!1,trickle:!1,iceCompleteTimeout:o,wrtc:this.wrtc,config:{iceServers:this.stunUrls}});return f.on("error",h=>this.#n(h)),f.on("signal",h=>this.onSignalAnswer(t,h,n)),f.on("connect",()=>this.onConnect(t,f)),f}catch(r){if(r.message.startsWith("No pending offer found")&&this.verbose<2)return null;if(this.verbose>1&&r.message.startsWith("No pending offer found"))return console.info(`%c${r.message}`,lt.PEER_STORE);this.verbose>0&&console.error(r.stack)}}destroy(){for(let t in this.offers)this.offers[t].offererInstance?.destroy()}};await Mt();var{SANDBOX:gA,ICE_CANDIDATE_EMITTER:lA,TEST_WS_EVENT_MANAGER:dA}=Ft.USE_TEST_TRANSPORTS?await Gn().then(()=>On):{},Hn=class{neighbors;connectionsCount;constructor(t={}){this.neighbors=t,this.connectionsCount=Object.keys(t).length}setNeighbor(t,e=ct.time){this.neighbors[t]||this.connectionsCount++,this.neighbors[t]=e}unsetNeighbor(t){this.neighbors[t]&&this.connectionsCount--,delete this.neighbors[t]}};var re=class{peerId;transportInstance;isWebSocket;direction;pendingUntil;connStartTime;constructor(t,e,n,r=!1){this.peerId=t,this.transportInstance=e,this.isWebSocket=r,this.direction=n,this.pendingUntil=ct.time+Bt.CONNECTION_UPGRADE_TIMEOUT}setConnected(){this.connStartTime=ct.time,this.pendingUntil=0}getConnectionDuration(){return this.connStartTime?ct.time-this.connStartTime:0}close(){this.isWebSocket?this.transportInstance?.close():this.transportInstance?.destroy()}},sn=class{id;cryptoCodex;offerManager;arbiter;verbose;isDestroy=!1;neighborsList=[];connecting={};connected={};known={};knownCount=0;privacy={};kick={};callbacks={connect:[(t,e)=>this.#e(t,e)],disconnect:[(t,e)=>this.#t(t,e)],signal:[],data:[]};constructor(t,e,n,r,s=0){this.id=t,this.cryptoCodex=e,this.offerManager=n,this.arbiter=r,this.verbose=s,this.offerManager.onSignalAnswer=(o,f,h)=>{if(!(this.isDestroy||this.isKicked(o)||this.arbiter.isBanished(o)))for(let c of this.callbacks.signal)c(o,{signal:f,offerHash:h})},this.offerManager.onConnect=(o,f)=>{if(this.isDestroy)return f?.destroy();if(o===this.id)throw new Error(`Refusing to connect to self (${this.id}).`);let h=o;if(f.on("close",()=>{if(h)for(let c of this.callbacks.disconnect)c(h,f.initiator?"out":"in")}),f.on("data",c=>{if(h)for(let u of this.callbacks.data)u(h,c);else{let u=new Uint8Array(c);if(u[0]>127)return;let{route:I,type:l,neighborsList:C}=e.readUnicastMessage(u)||{};if(l!=="handshake"||I.length!==2||I[1]!==this.id)return;h=I[0],this.digestPeerNeighbors(h,C);for(let B of this.callbacks.connect)B(h,"out")}}),o)for(let c of this.callbacks.connect)c(o,"in")}}get publicNeighborsList(){return this.neighborsList.filter(t=>this.cryptoCodex.isPublicNode(t))}get standardNeighborsList(){return this.neighborsList.filter(t=>!this.cryptoCodex.isPublicNode(t))}#e(t,e){if(!this.connecting[t]?.[e])return this.verbose>=3?console.info(`%cPeer with ID ${t} is not connecting.`,lt.PEER_STORE):null;let n=this.connecting[t][e];if(this.#n(t,"connecting",e),this.isKicked(t))return this.verbose>=3&&console.info(`%c(${this.id}) Connect => Peer with ID ${t} is kicked. => close()`,lt.PEER_STORE),n.close();if(this.connected[t])return this.verbose>1&&console.warn(`%c(${this.id}) Connect => Peer with ID ${t} is already connected. => close()`,lt.PEER_STORE),n.close();n.setConnected(),this.connected[t]=n,this.neighborsList.push(t),this.#r(this.id,t)}#t(t,e){this.#n(t,"connected",e)}#n(t,e="both",n="both"){if(!t&&t===this.id)return;let[r,s]=[this.connecting[t],this.connected[t]];if(!r&&!s||(e!=="connecting"&&(s?.direction===n||n==="both")&&(s?.close(),delete this.connected[t],this.neighborsList=Object.keys(this.connected),this.#i(this.id,t)),e==="connected"))return;let o=n==="both"?["out","in"]:[n];for(let f of o)delete r?.[f];this.connecting[t]?.in||this.connecting[t]?.out||delete this.connecting[t]}#r(t="toto",e="tutu"){for(let n of[t,e])this.known[n]||(this.known[n]=new Hn,this.knownCount++),this.known[n].setNeighbor(n===t?e:t)}#i(t="toto",e="tutu"){for(let n of[t,e])this.known[n]&&(this.known[n].unsetNeighbor(n===t?e:t),!(this.known[n].connectionsCount>0)&&(delete this.known[n],this.knownCount--))}cleanupExpired(t=!0){let e=ct.time;for(let n of["in","out"])for(let r in this.connecting){if(!this.connecting[r][n])continue;let s=this.connected[r]?1e4:0;this.connecting[r][n].pendingUntil+s>e||(this.verbose>=4&&!this.connected[r]&&console.info(`%c(${this.id}) Pending ${n} connection to peer ${r} expired.`,lt.PEER_STORE),this.verbose>0&&this.connected[r]?.direction===n&&console.info(`%c(${this.id}) Pending ${n} connection to peer ${r} expired (already connected WARNING!).`,"color: white;"),this.connecting[r]?.out?.isWebSocket&&this.connecting[r].out.close(),this.connecting[r]?.in?.close(),this.#n(r,"connecting",n))}t&&(this.neighborsList=Object.keys(this.connected),this.digestPeerNeighbors(this.id,this.neighborsList))}on(t,e){if(!this.callbacks[t])throw new Error(`Unknown callback type: ${t}`);this.callbacks[t].push(e)}getUpdatedPeerConnectionsCount(t,e=!0){let n=ct.time,r=0,s=this.known[t]?.neighbors||{};for(let o in s){if(o!==this.id&&n-s[o]>pt.PEER_LINK_EXPIRATION){this.#i(t,o);continue}e?r++:this.cryptoCodex.isPublicNode(o)||r++}return r}addConnectingPeer(t,e,n){if(t===this.id)throw new Error(`Refusing to connect to self (${this.id}).`);let r=e.type==="offer"?"in":"out";if(this.connecting[t]?.[r])return;let s=this.offerManager.getTransportInstanceForSignal(t,e,n);return s?(this.connecting[t]||(this.connecting[t]={}),this.connecting[t][r]=new re(t,s,r),!0):this.verbose>3?console.info(`%cFailed to get transport instance for signal from ${t}.`,lt.PEER_STORE):null}assignSignal(t,e,n,r=ct.time){let s=this.connecting[t]?.[e.type==="offer"?"in":"out"];try{if(s?.isWebSocket)throw new Error(`Cannot assign signal for ID ${t}. (WebSocket)`);e.type==="answer"?this.offerManager.addSignalAnswer(t,e,n,r):s.transportInstance.signal(e)}catch(o){console.error(`Error signaling ${e?.type} for ${t}:`,o.stack)}}kickPeer(t,e=6e4,n){e&&(this.kick[t]=ct.time+e),this.#n(t,"both"),this.verbose>1&&console.log(`%c(${this.id}) Kicked peer ${t} for ${e/1e3}s. ${n?"| Reason: "+n:""}`,"color: green;")}isKicked(t){return this.kick[t]&&this.kick[t]>ct.time}digestValidRoute(t=[]){for(let e=1;e<t.length;e++)this.#r(t[e-1],t[e])}digestPeerNeighbors(t,e=[]){if(!(!t||!Array.isArray(e))){for(let n in this.known[t]?.neighbors||{})e.includes(n)||this.#i(t,n);for(let n of e)this.#r(t,n)}}destroy(){this.isDestroy=!0;for(let[t,e]of Object.entries(this.connected))this.#n(t),e.close();for(let[t,e]of Object.entries(this.connecting))this.#n(t),e.in?.close(),e.out?.close();this.offerManager.destroy()}};await Mt();var on=class{cache={};peerStore;constructor(t,e){this.id=t,this.peerStore=e}buildRoutes(t,e=5,n=3,r=1728,s=!0,o=3){if(this.id===t)throw new Error("Cannot build route to self");if(this.peerStore.connected[t])return{routes:[{path:[this.id,t]}],success:!0,nodesExplored:1};if(!this.peerStore.known[t])return this.#n(t);if(this.cache[t]&&this.#e(this.cache[t]))return{routes:this.cache[t],success:!0,nodesExplored:0};let f=this.#r(t,n,r,o);if(!f.success)return{routes:[],success:!1,nodesExplored:f.nodesExplored};let c=this.#t(f.paths,s).slice(0,e);return this.cache[t]=c,{routes:c,success:!0,nodesExplored:f.nodesExplored}}#e(t){for(let{path:e}of t)for(let n=1;n<e.length;n++){let r=e[n-1],s=e[n];if(r===this.id)if(this.peerStore.connected[s]){if(!this.peerStore.known[r]?.neighbors?.[s])return!1}else return!1}return!0}#t(t,e){let n=[];for(let r of t)n.push({path:r,hops:r.length-1});return e&&n.sort((r,s)=>r.hops-s.hops),n}#n(t){let e=[],n=this.peerStore.neighborsList,r=[...Array(n.length).keys()].sort(()=>Math.random()-.5);for(let s of r)e.push({path:[this.id,n[s],t],hops:0,score:0});return e.length===0?{routes:[],success:!1,nodesExplored:0}:{routes:e,success:"blind",nodesExplored:e.length}}#r(t,e,n,r){let s=[],o=0,f=[{node:this.id,path:[this.id],pathSet:new Set([this.id]),depth:0}],h=new Map;h.set(this.id,[this.id]);let c=[{node:t,path:[t],pathSet:new Set([t]),depth:0}],u=new Map;u.set(t,[t]);let I=Math.ceil(e/2);for(;(f.length>0||c.length>0)&&o<n;){if(f.length>0){let l=this.#i(f,h,u,I);for(let C of l){let B=this.#s(h.get(C),u.get(C));if(s.push(B),!(B.length-1>r))return{success:!0,paths:s,nodesExplored:o}}o++}if(c.length>0){let l=this.#i(c,u,h,I);for(let C of l){let B=this.#s(h.get(C),u.get(C));if(s.push(B),!(B.length-1>r))return{success:!0,paths:s,nodesExplored:o}}o++}}return{success:s.length>0,paths:s,nodesExplored:o}}#i(t,e,n,r){if(t.length===0)return[];let{node:s,path:o,pathSet:f,depth:h}=t.shift();if(h>=r)return[];let c=[];function u(I){if(f.has(I))return;let l=h+1;if(n.has(I)&&c.push(I),e.has(I))return;let C=[...o,I],B=new Set(f).add(I);e.set(I,C),t.push({node:I,path:C,pathSet:B,depth:l})}if(s===this.id)for(let I of this.peerStore.neighborsList)u(I);else for(let I in this.peerStore.known[s]?.neighbors||{})u(I);return c}#s(t,e){let n=t.length+e.length-1,r=new Array(n),s=0;for(let o of t)r[s++]=o;for(let o=e.length-2;o>=0;o--)r[s++]=e[o];return r}};var Ns=on,ke=class{type="message";timestamp;neighborsList;route;pubkey;data;signature;signatureStart;expectedEnd;rerouterPubkey;newRoute;rerouterSignature;get senderId(){return this.newRoute?this.newRoute[0]:this.route[0]}get isRerouted(){return this.rerouterPubkey&&this.newRoute&&this.rerouterSignature}getRerouterId(){if(this.newRoute)return this.newRoute[0]}constructor(t,e,n,r,s,o,f,h,c,u,I,l){this.type=t,this.timestamp=e,this.neighborsList=n,this.route=r,this.pubkey=s,this.data=o,this.signature=f,this.signatureStart=h,this.expectedEnd=c,this.rerouterPubkey=u,this.newRoute=I,this.rerouterSignature=l}getSenderId(){return this.route[0]}getTargetId(){return this.route[this.route.length-1]}extractRouteInfo(t="toto"){let e=this.newRoute||this.route,n=[],r=-1;for(let c=0;c<e.length;c++)if(n.push(e[c]),e[c]===t){r=c;break}let s=this.senderId,o=e[e.length-1],f=r>0?e[r-1]:null,h=r!==-1?e[r+1]:null;return{traveledRoute:n,selfPosition:r,senderId:s,targetId:o,prevId:f,nextId:h,routeLength:e.length}}},An=class{callbacks={message_handle:[]};id;cryptoCodex;arbiter;peerStore;verbose;pathFinder;maxHops=Ct.MAX_HOPS;maxRoutes=Ct.MAX_ROUTES;maxNodes=Ct.MAX_NODES;constructor(t,e,n,r,s=0){this.id=t,this.cryptoCodex=e,this.arbiter=n,this.peerStore=r,this.verbose=s,this.pathFinder=new Ns(this.id,this.peerStore)}on(t,e){this.callbacks[t]?this.callbacks[t].push(e):this.callbacks[t]=[e]}sendUnicast(t,e,n="message",r=1){if(t===this.id)return!1;let s=this.pathFinder.buildRoutes(t,this.maxRoutes,this.maxHops,this.maxNodes,!0);if(!s.success)return!1;let o=n==="private_message"?this.peerStore.privacy[t]?.sharedSecret:void 0,f=s.success==="blind"?1:r;for(let h=0;h<Math.min(f,s.routes.length);h++){let c=s.routes[h].path;if(c.length>Ct.MAX_HOPS+1){this.verbose>1&&console.warn(`Cannot send unicast message to ${t} as route exceeds maxHops (${Ct.MAX_HOPS}). BFS incurred.`);continue}let u=this.cryptoCodex.createUnicastMessage(n,e,c,this.peerStore.neighborsList,o);this.#e(c[1],u)}return!0}#e(t,e){if(this.id===t)return{success:!1,reason:"Cannot send message to self."};let n=this.peerStore.connected[t]?.transportInstance;if(!n)return{success:!1,reason:`Transport instance is not available for peer ${t}.`};try{return n.send(e),{success:!0}}catch(r){this.peerStore.kickPeer(t,0,"send-error"),this.verbose>0&&console.error(`Error sending message to ${t}:`,r.message)}return{success:!1,reason:`Error sending message to ${t}.`}}async handleDirectMessage(t,e){if(this.arbiter.isBanished(t))return this.verbose>=3?console.info(`%cReceived direct message from banned peer ${t}, ignoring.`,"color: red;"):null;if(!this.arbiter.countMessageBytes(t,e.byteLength,"unicast"))return;let n=this.cryptoCodex.readUnicastMessage(e,this.peerStore);if(!n)return this.arbiter.countPeerAction(t,"WRONG_SERIALIZATION");if(!await this.arbiter.digestMessage(t,n,e)||this.arbiter.isBanished(t)||this.arbiter.isBanished(n.senderId))return;let{traveledRoute:s,selfPosition:o,senderId:f,targetId:h,prevId:c,nextId:u}=n.extractRouteInfo(this.id);if(t===f&&t===this.id)throw new Error("DirectMessage senderId and from are both self id !!");for(let C of this.callbacks.message_handle||[])C();if(o===-1)return this.arbiter.adjustTrust(t,_t.UNICAST_INVALID_ROUTE,"Self not in route");if(c&&t!==c)return this.arbiter.adjustTrust(t,_t.UNICAST_INVALID_ROUTE,"Previous hop id does not match actual from id");if(f===this.id)return this.arbiter.adjustTrust(t,_t.UNICAST_INVALID_ROUTE,"SenderId is self id");if(this.verbose>3&&console.log(f===t?`(${this.id}) Direct ${n.type} from ${f}: ${n.data}`:`(${this.id}) Direct ${n.type} from ${f} (lastRelay: ${t}): ${n.data}`),this.peerStore.digestPeerNeighbors(f,n.neighborsList),t!==f&&this.arbiter.adjustTrust(t,_t.UNICAST_RELAYED,"Relayed unicast message"),pt.ON_UNICAST.DIGEST_TRAVELED_ROUTE&&this.peerStore.digestValidRoute(s),this.id===h){for(let C of this.callbacks[n.type]||[])C(n);return}if(!u)throw new Error('Needs to tranmit message but no "nextId" provied!');let{success:I,reason:l}=this.#e(u,e);if(!I&&!n.rerouterSignature){let C=this.pathFinder.buildRoutes(h,this.maxRoutes,this.maxHops,this.maxNodes,!0);if(!C.success)return;let B=C.routes[0].path;if(B.length>Ct.MAX_HOPS+1){this.verbose>1&&console.warn(`Cannot re-route unicast message to ${h} as new route exceeds maxHops (${Ct.MAX_HOPS}).`);return}let y=this.cryptoCodex.createReroutedUnicastMessage(e,B),m=B[o+1];this.#e(m,y)}}};await Mt();var an=class{topic="gossip";timestamp;neighborsList;HOPS;senderId;pubkey;data;signature;signatureStart;expectedEnd;constructor(t,e,n,r,s,o,f,h,c,u){this.topic=t,this.timestamp=e,this.neighborsList=n,this.HOPS=r,this.senderId=s,this.pubkey=o,this.data=f,this.signature=h,this.signatureStart=c,this.expectedEnd=u}},Pn=class{cryptoCodex;xxHash32UsageCount=0;seenTimeouts={};cache=[];cleanupFrequency=100;cleanupIn=100;cleanupDurationWarning=10;constructor(t){this.cryptoCodex=t}getGossipHistoryByTime(t="asc"){let e=this.cache.map(n=>({senderId:n.senderId,topic:n.topic,data:n.serializedMessage}));return t==="asc"?e:e.reverse()}addMessage(t){let e=ct.time,{marker:n,neighLength:r,timestamp:s,dataLength:o,pubkey:f,associatedId:h}=this.cryptoCodex.readBufferHeader(t),c=Qt.MARKERS_BYTES[n];if(typeof c!="string")throw new Error(`Wrong topic byte: ${n}`);if(e===null||e-s>Qt.EXPIRATION||!h)return;let u=t.subarray(0,47+r+o),I=Ce(u).toString();if(this.xxHash32UsageCount++,this.seenTimeouts[I])return;let l=e+Qt.CACHE_DURATION;return this.cache.push({hash:I,senderId:h,topic:c,serializedMessage:t,timestamp:s,expiration:l}),this.seenTimeouts[I]=l,--this.cleanupIn<=0&&this.#e(e),{hash:I,isNew:!this.seenTimeouts[I]}}#e(t=ct.time||0){let e=-1;for(let n=0;n<this.cache.length;n++)this.cache[n].expiration<=t?delete this.seenTimeouts[this.cache[n].hash]:e===-1&&(e=n);e>0?this.cache=this.cache.slice(e):e===-1&&(this.cache=[]),this.cleanupIn=this.cleanupFrequency}},cn=class{callbacks={message_handle:[]};id;cryptoCodex;arbiter;peerStore;verbose;bloomFilter;constructor(t,e,n,r,s=0){this.id=t,this.cryptoCodex=e,this.arbiter=n,this.peerStore=r,this.verbose=s,this.bloomFilter=new Pn(e)}on(t,e){this.callbacks[t]?this.callbacks[t].push(e):this.callbacks[t]=[e]}broadcastToAll(t,e="gossip",n){let r=n||Qt.HOPS[e]||Qt.HOPS.default,s=this.cryptoCodex.createGossipMessage(e,t,r,this.peerStore.neighborsList);if(this.bloomFilter.addMessage(s)){this.verbose>3&&console.log(`(${this.id}) Gossip ${e}, to ${JSON.stringify(this.peerStore.neighborsList)}: ${t}`);for(let o of this.peerStore.neighborsList)this.#e(o,s)}}#e(t,e){if(t===this.id)throw new Error(`Refusing to send a gossip message to self (${this.id}).`);let n=this.peerStore.connected[t]?.transportInstance;if(!n)return{success:!1,reason:`Transport instance is not available for peer ${t}.`};try{n.send(e)}catch{this.peerStore.connected[t]?.close()}}sendGossipHistoryToPeer(t){let e=this.bloomFilter.getGossipHistoryByTime("asc");for(let n of e)this.#e(t,n.data)}async handleGossipMessage(t,e){if(this.arbiter.isBanished(t))return this.verbose>=3?console.info(`%cReceived gossip message from banned peer ${t}, ignoring.`,"color: red;"):null;if(!this.arbiter.countMessageBytes(t,e.byteLength,"gossip"))return;for(let g of this.callbacks.message_handle||[])g(e);if(!this.bloomFilter.addMessage(e))return;let n=this.cryptoCodex.readGossipMessage(e);if(!n)return this.arbiter.countPeerAction(t,"WRONG_SERIALIZATION");if(!await this.arbiter.digestMessage(t,n,e)||this.arbiter.isBanished(t)||this.arbiter.isBanished(n.senderId))return;let{topic:s,timestamp:o,neighborsList:f,HOPS:h,senderId:c,data:u}=n;if(c===this.id)throw new Error(`#${this.id}#${t}# Received our own message back from peer ${t}.`);this.verbose>3&&console.log(c===t?`(${this.id}) Gossip ${s} from ${c}: ${u}`:`(${this.id}) Gossip ${s} from ${c} (by: ${t}): ${u}`),this.peerStore.digestPeerNeighbors(c,f);for(let g of this.callbacks[s]||[])g(n);if(h<1)return;let I=this.peerStore.neighborsList.length,l=Math.max(1,I/Qt.TRANSMISSION_RATE.NEIGHBOURS_PONDERATION),C=Qt.TRANSMISSION_RATE[s]||Qt.TRANSMISSION_RATE.default,B=Math.pow(C,l),y=I<Qt.TRANSMISSION_RATE.MIN_NEIGHBOURS_TO_APPLY_PONDERATION,m=this.cryptoCodex.decrementGossipHops(e);for(let g of this.peerStore.neighborsList)if(g!==t){if(!y&&Math.random()>B)continue;this.#e(g,m)}}};await Mt();var{SANDBOX:vA,ICE_CANDIDATE_EMITTER:NA,TEST_WS_EVENT_MANAGER:TA}=Ft.USE_TEST_TRANSPORTS?await Gn().then(()=>On):{},Yn=class{maxOffers=30;offers=[];orderingBy="neighborsCount";get size(){return this.offers.length}updateOrderingBy(t=!1){this.orderingBy=t?"overlap":"neighborsCount"}removeOlderThan(t=1e3){this.offers=this.offers.filter(e=>e.timestamp+t>=ct.time)}get bestOfferInfo(){let{senderId:t,overlap:e,neighborsCount:n,data:r,timestamp:s}=this.offers.shift()||{};return{senderId:t,data:r,timestamp:s,value:this.orderingBy==="overlap"?e:n}}pushSortTrim(t,e={min:.2,max:.8}){let{min:n,max:r}=e;Math.random()<Math.min(n,this.offers.size/this.maxOffers*r)||(this.offers.push(t),this.offers.length!==1&&(this.offers.sort((s,o)=>this.orderingBy==="overlap"?s.overlap-o.overlap:o.neighborsCount-s.neighborsCount),this.size>this.maxOffers&&this.offers.pop()))}},fn=class{verbose;id;cryptoCodex;gossip;messager;peerStore;bootstraps;offersQueue=new Yn;connectedBootstraps=new Set;connectedBootstrapIds=new Set;services;NEIGHBORS_TARGET;HALF_TARGET;TWICE_TARGET;setNeighborsTarget(t=pt.TARGET_NEIGHBORS_COUNT){this.NEIGHBORS_TARGET=t,this.HALF_TARGET=Math.ceil(this.NEIGHBORS_TARGET/2),this.TWICE_TARGET=this.NEIGHBORS_TARGET*2}automation={incomingOffer:!0,incomingAnswer:!0,spreadOffers:!0,connectBootstraps:!0};phase=0;nextBootstrapIndex=0;maxBonus=Bt.CONNECTION_UPGRADE_TIMEOUT*.2;get isPublicNode(){return!!this.services?.publicUrl}constructor(t,e,n,r,s,o,f=1){this.setNeighborsTarget(pt.TARGET_NEIGHBORS_COUNT),this.verbose=f,this.id=t,this.cryptoCodex=e,this.gossip=n,this.messager=r,this.peerStore=s,this.bootstraps=[...o].sort(()=>Math.random()-.5),this.nextBootstrapIndex=Math.random()*this.bootstraps.length|0}tick(){let{neighborsCount:t,nonPublicNeighborsCount:e,isEnough:n,isTooMany:r,isHalfReached:s}=this.#e,o=e>=this.NEIGHBORS_TARGET/3?1:St.MAX_SDP_OFFERS;if(this.peerStore.offerManager.offersToCreate=n?0:o,this.isPublicNode){this.services.freePublicNodeByKickingPeers();return}if(r)return Math.random()>.05?this.#A():null;n?Math.random()>.05&&this.#o():this.#o(),this.phase=this.phase?0:1,this.phase===0&&this.tryConnectNextBootstrap(t,e),this.phase===1&&this.#s(e,s)}handleIncomingSignal(t,e){if(this.isPublicNode||!t||this.peerStore.isKicked(t)||e.signal?.type!=="offer"&&e.signal?.type!=="answer")return;let{signal:n,offerHash:r}=e||{},{connected:s,nonPublicNeighborsCount:o,isTooMany:f,isHalfReached:h}=this.#e;if(f||s[t])return;if(n.type==="answer"){if(!this.automation.incomingAnswer||this.peerStore.addConnectingPeer(t,n,r)!==!0)return;let l=Math.abs(o-this.#t(t).nonPublicCount),C=this.maxBonus/this.NEIGHBORS_TARGET,B=Math.round(Math.min(this.maxBonus,l*C));return this.peerStore.assignSignal(t,n,r,ct.time+B)}if(!this.automation.incomingOffer||o>this.TWICE_TARGET)return;let{overlap:c,nonPublicCount:u}=this.#t(t);if(u>this.TWICE_TARGET)return;let I={senderId:t,data:e,overlap:c,neighborsCount:u,timestamp:ct.time};this.offersQueue.updateOrderingBy(h),this.offersQueue.pushSortTrim(I)}tryConnectNextBootstrap(t=0,e=0){if(!this.automation.connectBootstraps||this.bootstraps.length===0)return;let n=t-e,r=0;for(let o in this.peerStore.connecting)r++;if(this.NEIGHBORS_TARGET||t){if(n>=this.HALF_TARGET)return;if(t>=this.NEIGHBORS_TARGET)return;if(r+e>this.TWICE_TARGET)return}let s=this.bootstraps[this.nextBootstrapIndex++%this.bootstraps.length];this.connectedBootstraps.has(s)||this.#i(s)}get#e(){return{connected:this.peerStore.connected,neighborsCount:this.peerStore.neighborsList.length,nonPublicNeighborsCount:this.peerStore.standardNeighborsList.length,isEnough:this.peerStore.standardNeighborsList.length>=this.NEIGHBORS_TARGET,isTooMany:this.peerStore.standardNeighborsList.length>this.NEIGHBORS_TARGET,isHalfReached:this.peerStore.standardNeighborsList.length>=this.HALF_TARGET}}#t(t="toto"){let e=this.peerStore.known[t]?.neighbors||{},n={overlap:0,nonPublicCount:0,p1nCount:this.peerStore.getUpdatedPeerConnectionsCount(t)};for(let r in e)this.cryptoCodex.isPublicNode(r)||n.nonPublicCount++;for(let r of this.peerStore.standardNeighborsList)e[r]&&n.overlap++;return n}#n(t=[]){return t.map(e=>({id:e,...this.#t(e)}))}#r(t){let e=typeof window<"u",r=e&&window.location.protocol==="https:"?"wss://":"ws://",s=t.endsWith("/ws"),o=e&&!s?window.location.host:t;return t.startsWith("ws")?t:`${r}${o}`}#i(t="localhost:8080"){let e=null,n=!1,r=new St.WS_CLIENT(this.#r(t));r.binaryType="arraybuffer",this.verbose>1&&(r.onerror=s=>console.warn("WebSocket error:",s.stack)),r.onopen=()=>{this.connectedBootstraps.add(t),r.onclose=()=>{if(this.connectedBootstraps.delete(t),!n){this.connectedBootstrapIds.delete(e);for(let s of this.peerStore.callbacks.disconnect)s(e,"out")}},r.onmessage=s=>{if(e)for(let o of this.peerStore.callbacks.data)o(e,s.data);else{let o=new Uint8Array(s.data);if(o[0]>127)return;let f=this.cryptoCodex.readUnicastMessage(o);if(!f)return;let{route:h,type:c,neighborsList:u}=f;if(c!=="handshake"||h.length!==2)return;let{signatureStart:I,pubkey:l,signature:C}=f,B=o.subarray(0,I);if(!this.cryptoCodex.verifySignature(l,B,C))return;if(e=h[0],this.connectedBootstrapIds.has(e))return n=!0,this.bootstraps=this.bootstraps.filter(y=>y!==t),r.close();this.connectedBootstrapIds.add(e),this.peerStore.digestPeerNeighbors(e,u),this.peerStore.connecting[e]?.in?.close(),this.peerStore.connecting[e]||(this.peerStore.connecting[e]={}),this.peerStore.connecting[e].out=new re(e,r,"out",!0);for(let y of this.peerStore.callbacks.connect)y(e,"out")}},r.send(this.cryptoCodex.createUnicastMessage("handshake",null,[this.id,this.id],this.peerStore.neighborsList))}}#s(t=0,e=!1){if(!this.automation.spreadOffers||!this.peerStore.neighborsList.length)return;let r=Object.keys(this.peerStore.connecting).length+t,{offerHash:s,readyOffer:o}=this.peerStore.offerManager.bestReadyOffer(0,!0);if(!s||!o)return;if(!e&&r<=this.TWICE_TARGET){this.gossip.broadcastToAll({signal:o.signal,offerHash:s},"signal_offer"),o.sentCounter++;return}let f=null;for(let B of this.#n(this.peerStore.standardNeighborsList)){let y=B[e?"overlap":"nonPublicCount"];f===null&&(f=y),e&&y<f&&(f=y),!e&&y<=f&&(f=y)}let h=100,c=1e3,u=this.peerStore.knownCount,I=Math.max(Math.min(c/u,u/c),.127),l=[];for(let B in this.peerStore.known){if(Math.random()>I)continue;if(--c<=0)break;if(B===this.id||this.cryptoCodex.isPublicNode(B)||this.peerStore.isKicked(B))continue;if(this.peerStore.connected[B]||this.peerStore.connecting[B])continue;let{overlap:y,nonPublicCount:m}=this.#t(B);if(!(m>this.NEIGHBORS_TARGET)&&(f===null&&(f=e?y:m),!(e&&y>f)&&!(!e&&m<f)&&(l.push(B),--h<=0)))break}if(!l.length)return;let C=new Map;for(let B=0;B<Math.min(l.length,100);B++){let y=l[Math.floor(Math.random()*l.length)];if(!C.has(y)&&(C.size===0&&o.sentCounter++,C.set(y,!0),this.messager.sendUnicast(y,{signal:o.signal,offerHash:s},"signal_offer"),C.size>=12))break}}#o(){let t=null,e=Object.keys(this.peerStore.connecting).length;this.offersQueue.updateOrderingBy(this.#e.isHalfReached),this.offersQueue.removeOlderThan(St.SDP_OFFER_EXPIRATION/2);for(let n=0;n<this.offersQueue.size;n++){let{senderId:r,data:s,timestamp:o,value:f}=this.offersQueue.bestOfferInfo;if(!r||!s||!o)break;if(!(this.peerStore.connected[r]||this.peerStore.isKicked(r))&&!this.peerStore.connecting[r]?.in){if(t=t===null?f:t,t!==f)break;this.peerStore.addConnectingPeer(r,s.signal,s.offerHash)===!0&&(this.peerStore.assignSignal(r,s.signal,s.offerHash,o),e++)}}}#A(){let e=this.#n(this.peerStore.standardNeighborsList).sort((n,r)=>r.overlap-n.overlap||r.nonPublicCount-n.nonPublicCount);this.peerStore.kickPeer(e[0].id,6e4,"improveTopology")}};await Mt();var Ts={1:0,2:1,3:2,4:3,5:4,6:5,7:6,8:7,9:8,A:9,B:10,C:11,D:12,E:13,F:14,G:15,H:16,J:17,K:18,L:19,M:20,N:21,P:22,Q:23,R:24,S:25,T:26,U:27,V:28,W:29,X:30,Y:31,Z:32,a:33,b:34,c:35,d:36,e:37,f:38,g:39,h:40,i:41,j:42,k:43,m:44,n:45,o:46,p:47,q:48,r:49,s:50,t:51,u:52,v:53,w:54,x:55,y:56,z:57},Us=["1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","m","n","o","p","q","r","s","t","u","v","w","x","y","z"],Ot=class a{IS_BROWSER=typeof self<"u";FROMBASE64_AVAILABLE=typeof Uint8Array.fromBase64=="function";textEncoder=new TextEncoder;textDecoder=new TextDecoder;buffer2=new ArrayBuffer(2);view2=new DataView(this.buffer2);buffer4=new ArrayBuffer(4);view4=new DataView(this.buffer4);buffer6=new ArrayBuffer(6);view6=new DataView(this.buffer6);buffer8=new ArrayBuffer(8);view8=new DataView(this.buffer8);hexMap={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15};numberTo2Bytes(t){return this.view2.setUint16(0,t,!0),new Uint8Array(this.buffer2)}numberTo4Bytes(t){return this.view4.setUint32(0,t,!0),new Uint8Array(this.buffer4)}numberTo6Bytes(t){return this.view6.setUint32(0,t%4294967296,!0),this.view6.setUint16(4,Math.floor(t/4294967296),!0),new Uint8Array(this.buffer6)}numberTo8Bytes(t){return this.view8.setBigUint64(0,BigInt(t),!0),new Uint8Array(this.buffer8)}stringToBytes(t="toto"){return this.textEncoder.encode(t)}hexToBytes(t){let e=t.length/2,n=new Uint8Array(e);for(let r=0,s=0;r<e;++r,s+=2)n[r]=(this.hexMap[t[s]]<<4)+this.hexMap[t[s+1]];return n}base64toBytes(t){if(!this.IS_BROWSER)return new Uint8Array(Buffer.from(t,"base64"));if(this.FROMBASE64_AVAILABLE)return Uint8Array.fromBase64(t);let e=atob(t),n=new Uint8Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);return n}bytes2ToNumber(t){for(let e=0;e<2;e++)this.view2.setUint8(e,t[e]);return this.view2.getUint16(0,!0)}bytes4ToNumber(t){for(let e=0;e<4;e++)this.view4.setUint8(e,t[e]);return this.view4.getUint32(0,!0)}bytes6ToNumber(t){for(let e=0;e<6;e++)this.view6.setUint8(e,t[e]);return this.view6.getUint32(0,!0)+this.view6.getUint16(4,!0)*4294967296}bytes8ToNumber(t){for(let e=0;e<8;e++)this.view8.setUint8(e,t[e]);return Number(this.view8.getBigUint64(0,!0))}bytesToString(t){return this.textDecoder.decode(t)}static bytesToHex(t,e=0){let n="";for(let r of t)n+=r<16?`0${r.toString(16)}`:r.toString(16);return e>0&&(n=n.padStart(e,"0")),n}bytesToHex(t,e=0){return a.bytesToHex(t,e)}static uint32ToB58(t,e=6){if(t===0)return"1";let n="";for(;t>0;)n=Us[t%58]+n,t=Math.floor(t/58);return n.padStart(e,"1")}static b58ToUint32(t){let e=0;for(let n of t)e=e*58+Ts[n];return e}static hexToBigInt(t){return BigInt("0x"+t)}static hexToBits(t="ffffff",e="string"){let n=[];if(e==="arrayOfNumbers")for(let r=0;r<t.length;r++)n.push(...parseInt(t[r],16).toString(2).padStart(4,"0").split("").map(s=>parseInt(s,10)));else for(let r=0;r<t.length;r++)n.push(parseInt(t[r],16).toString(2).padStart(4,"0"));return e==="string"?n.join(""):n}static bytesToBits(t,e="string"){return this.hexToBits(this.bytesToHex(t),e)}static ipToInt(t="192.168.0.1"){return t.split(".").reduce((e,n)=>(e<<8)+parseInt(n,10),0)}};var Rr=typeof self<"u",{ed25519:Ne,x25519:We}=await Promise.resolve().then(()=>(Pi(),Hi)),{chacha20poly1305:je,xchacha20poly1305:Is}=await Promise.resolve().then(()=>(gs(),us)),{randomBytes:Ve}=await Promise.resolve().then(()=>(xe(),Zi));var ve=class{converter=new Ot;argon2;hash=async(t,e,n=2**16,r=1,s=1,o=2,f=32)=>{let h=this.#e(t,e,r,n,s,o,f),c=await this.getArgon2Lib(),u=Rr?await c.hash(h):await c.hash(t,h);if(!u)return!1;let I=u.encoded||u,l=this.#t(I);return l||!1};async getArgon2Lib(){if(this.argon2)return this.argon2;if(!Rr)try{let e=await import("argon2");this.argon2=e}catch{throw new Error("Please install argon2 package: npm install argon2")}if(this.argon2)return this.argon2;try{if(argon2)return console.log("Argon2 loaded as a global variable"),this.argon2=argon2,this.argon2}catch{}if(this.argon2)return this.argon2;console.log("trying import argon2 ES6 and inject in window");let t=await Promise.resolve().then(()=>(ds(),ls));return window.argon2=t.default,this.argon2=t.default,this.argon2}#e(t="averylongpassword123456",e="saltsaltsaltsaltsalt",n=1,r=2**10,s=1,o=2,f=32){if(typeof e!="string")throw new Error("salt must be a string");let h=e.padEnd(64,"0").substring(0,64);return{type:o,pass:t,parallelism:s,time:n,timeCost:n,mem:r,memoryCost:r,hashLen:f,hashLength:f,salt:Rr?h:Buffer.from(h)}}#t(t="$argon2id$v=19$m=1048576,t=1,p=1$c2FsdHNhbHRzYWx0c2FsdHNhbHQ$UamPN/XTTX4quPewQNw4/s3y1JJeS22cRroh5l7OTMM"){let e=t.split("$").pop(),n=this.converter.base64toBytes(e),r=this.converter.bytesToHex(n),s=Ot.hexToBits(r,"string");return{encoded:t,hash:n,hex:r,bitsString:s}}};xe();var Te=class a{argon2=new ve;converter=new Ot;AVOID_CRYPTO=!0;verbose=Bt.DEFAULT_VERBOSE;id;publicKey;privateKey;get idLength(){return it.ARE_IDS_HEX?it.ID_LENGTH/2:it.ID_LENGTH}constructor(t,e=Bt.DEFAULT_VERBOSE){if(this.verbose=e,!t)return;this.id=t.padEnd(it.ID_LENGTH," ").slice(0,it.ID_LENGTH),this.privateKey=new Uint8Array(32).fill(0),this.publicKey=new Uint8Array(32).fill(0);let n=new TextEncoder().encode(this.id);for(let r=0;r<it.ID_LENGTH;r++)this.publicKey[r]=n[r]}static async createCryptoCodex(t,e){let n=new a(void 0,Bt.DEFAULT_VERBOSE),r=e?typeof e=="string"?n.converter.hexToBytes(e):e:void 0;return await n.generate(t,r),n}static isPublicNode(t){let e=t[1]==="_"?t:Ot.hexToBits(t[0]);if(typeof e!="string")throw new Error("idStr isn't string!");return e.startsWith(it.PUBLIC_PREFIX[0])||e.startsWith(it.PUBLIC_PREFIX[1])}isPublicNode(t){return a.isPublicNode(t)}async generate(t,e){if(this.id)return;let n=e||await a.generateNewSybilIdentity(t,this.verbose>0);if(await this.#t(n,t),this.AVOID_CRYPTO=!1,!this.id)throw new Error("Failed to generate identity")}async pubkeyDifficultyCheck(t){if(this.AVOID_CRYPTO||!it.DIFFICULTY)return!0;let e=typeof t=="string"?t:this.converter.bytesToHex(t,it.PUBKEY_LENGTH),{bitsString:n}=await this.argon2.hash(e,"HiveP2P",it.ARGON2_MEM)||{};if(n&&n.startsWith("0".repeat(it.DIFFICULTY)))return!0}#e(t){return it.ARE_IDS_HEX?this.converter.bytesToHex(t.slice(0,this.idLength),it.ID_LENGTH):this.converter.bytesToString(t.slice(0,it.ID_LENGTH))}async#t(t,e){let{secretKey:n,publicKey:r}=Ne.keygen(t),s=this.#e(r);if(e&&!this.isPublicNode(s))throw new Error("Seed does not produce a public node identity.");if(!e&&this.isPublicNode(s))throw new Error("Seed does not produce a private node identity.");if(!await this.pubkeyDifficultyCheck(r))throw new Error("Seed does not meet difficulty requirements.");this.id=s,this.privateKey=new Uint8Array(n),this.publicKey=new Uint8Array(r)}static async generateNewSybilIdentity(t,e=!0){let n=new a,r=2**it.DIFFICULTY*128;for(let s=0;s<r;s++){let o=Ve(32);try{await n.#t(o,t)}catch{continue}return e&&console.log(`Generated new ${t?"public":"private"} identity after ${s+1} iterations.`),o}throw new Error(`Failed to generate identity after ${r} iterations. Try lowering the difficulty.`)}generateEphemeralX25519Keypair(t){let e=t?this.converter.hexToBytes(t):void 0,{secretKey:n,publicKey:r}=We.keygen(e);return{myPub:r,myPriv:n}}computeX25519SharedSecret(t,e){return We.getSharedSecret(t,e)}encryptData(t,e){if(!e)throw new Error("Cannot encrypt data without shared secret.");let n=Ve(12),s=je(e,n).encrypt(t);return Ke(n,s)}decryptData(t,e){if(!e)throw new Error("Cannot decrypt data without shared secret.");let n=t.slice(0,12);return je(e,n).decrypt(t.slice(12))}signBufferViewAndAppendSignature(t,e,n=t.length-it.SIGNATURE_LENGTH){if(this.AVOID_CRYPTO)return;let r=t.subarray(0,n),s=Ne.sign(r,e);t.set(s,n)}createGossipMessage(t,e,n=3,r=[],s=ct.time){let o=Qt.MARKERS_BYTES[t];if(typeof o!="number")throw new Error(`Failed to create gossip message: wrong topic '${t}'.`);if(typeof s!="number")throw new Error("Wrong timestamp type!");if(!this.publicKey||!this.privateKey)throw new Error("KeyPair not initialized!");let f=this.#n(r),{dataCode:h,dataBytes:c}=this.#r(e),u=47+f.length+c.length+it.SIGNATURE_LENGTH+1,I=new ArrayBuffer(u),l=new Uint8Array(I);return this.#i(l,o,h,r.length,s,c,this.publicKey),l.set(f,47),l.set(c,47+f.length),l.set([Math.min(255,n)],u-1),this.signBufferViewAndAppendSignature(l,this.privateKey,u-it.SIGNATURE_LENGTH-1),l}decrementGossipHops(t){let e=new Uint8Array(t),n=t[t.length-1];return e[t.length-1]=Math.max(0,n-1),e}createUnicastMessage(t,e,n,r=[],s,o=ct.time){let f=Ct.MARKERS_BYTES[t];if(typeof f!="number")throw new Error(`Failed to create gossip message: wrong type '${t}'.`);if(typeof o!="number")throw new Error("Wrong timestamp type!");if(!this.publicKey||!this.privateKey)throw new Error("KeyPair not initialized!");if(n.length<2)throw new Error("Failed to create unicast message: route must have at least 2 nodes (next hop and target).");if(n.length>Ct.MAX_HOPS+1)throw new Error(`Failed to create unicast message: route exceeds max hops (${Ct.MAX_HOPS}).`);let h=this.#n(r),{dataCode:c,dataBytes:u}=this.#r(e),I=s?this.encryptData(u,s):u,l=this.#n(n),C=47+h.length+1+l.length+I.length+it.SIGNATURE_LENGTH,B=new ArrayBuffer(C),y=new Uint8Array(B);this.#i(y,f,c,r.length,o,I,this.publicKey);let m=h.length+I.length;return y.set(h,47),y.set(I,47+h.length),y.set([n.length],47+m),y.set(l,48+m),this.signBufferViewAndAppendSignature(y,this.privateKey,C-it.SIGNATURE_LENGTH),y}createReroutedUnicastMessage(t,e){if(!this.publicKey||!this.privateKey)throw new Error("KeyPair not initialized!");if(e.length<2)throw new Error("Failed to create rerouted unicast message: route must have at least 2 nodes (next hop and target).");if(e.length>Ct.MAX_HOPS+1)throw new Error(`Failed to create rerouted unicast message: route exceeds max hops (${Ct.MAX_HOPS}).`);let n=e.map(f=>this.converter.stringToBytes(f)),r=t.length+32+it.ID_LENGTH*n.length+it.SIGNATURE_LENGTH,s=new ArrayBuffer(r),o=new Uint8Array(s);o.set(t,0),o.set(this.publicKey,t.length);for(let f=0;f<n.length;f++)o.set(n[f],t.length+32+f*it.ID_LENGTH);return this.signBufferViewAndAppendSignature(o,this.privateKey,r-it.SIGNATURE_LENGTH),o}#n(t){return it.ARE_IDS_HEX?this.converter.hexToBytes(t.join("")):this.converter.stringToBytes(t.join(""))}#r(t){return typeof t=="string"?{dataCode:1,dataBytes:this.converter.stringToBytes(t)}:t instanceof Uint8Array?{dataCode:2,dataBytes:t}:{dataCode:3,dataBytes:this.converter.stringToBytes(JSON.stringify(t))}}#i(t,e,n,r,s,o,f){let h=this.converter.numberTo8Bytes(s),c=this.converter.numberTo4Bytes(o.length);t.set([e],0),t.set([n],1),t.set([r],2),t.set(h,3),t.set(c,11),t.set(f,15)}verifySignature(t,e,n){return this.AVOID_CRYPTO?!0:Ne.verify(n,e,t)}readBufferHeader(t,e=!0){let n=t[0],r=t[1],s=t[2],o=t.slice(3,11),f=t.slice(11,15),h=t.slice(15,47),c=e?this.#e(h):null,u=s*this.idLength,I=this.converter.bytes8ToNumber(o),l=this.converter.bytes4ToNumber(f);return{marker:n,dataCode:r,neighLength:u,timestamp:I,dataLength:l,pubkey:h,associatedId:c}}readGossipMessage(t){this.verbose>3&&console.log(`%creadGossipMessage ${t.byteLength} bytes`,lt.CRYPTO_CODEX),this.verbose>4&&console.log(`%c${t}`,lt.CRYPTO_CODEX);let e;try{let{marker:n,dataCode:r,neighLength:s,timestamp:o,dataLength:f,pubkey:h,associatedId:c}=this.readBufferHeader(t);if(e=Qt.MARKERS_BYTES[n],typeof e!="string")throw new Error(`Failed to deserialize gossip message: unknown marker byte ${t[0]}.`);if(typeof c!="string")throw new Error("Wrong associatedId tyoe!");let u=s+f,I=this.#s(t.slice(47,47+s)),l=this.#o(r,t.slice(47+s,47+u)),C=47+u,B=t.slice(C,C+it.SIGNATURE_LENGTH),y=t[t.length-1],m=C+it.SIGNATURE_LENGTH+1;return new an(e,o,I,y,c,h,l,B,C,m)}catch(n){this.verbose>1&&console.warn(`Error deserializing ${e||"unknown"} gossip message:`,n.stack)}return null}readUnicastMessage(t,e){this.verbose>3&&console.log(`%creadUnicastMessage ${t.byteLength} bytes`,lt.CRYPTO_CODEX),this.verbose>4&&console.log(`%c${t}`,lt.CRYPTO_CODEX);let n;try{let{marker:r,dataCode:s,neighLength:o,timestamp:f,dataLength:h,pubkey:c}=this.readBufferHeader(t,!1);if(n=Ct.MARKERS_BYTES[r],typeof n!="string")throw new Error(`Failed to deserialize unicast message: unknown marker byte ${t[0]}.`);let u=o+h,I=this.#s(t.slice(47,47+o)),C=t[47+u]*this.idLength,B=47+u+1+C,y=t.slice(47+u+1,B),m=this.#s(y),g=m[m.length-1],p=n==="private_message"&&this.id===g?this.decryptData(t.slice(47+o,47+u),e.privacy[this.#e(c)]?.sharedSecret):t.slice(47+o,47+u),E=this.id===g?this.#o(s,p):p,S=B+it.SIGNATURE_LENGTH,b=t.slice(B,S);if(!(t.length>S))return new ke(n,f,I,m,c,E,b,B,S);let v=t.slice(S,S+32),Q=this.#s(t.slice(S+32,t.length-it.SIGNATURE_LENGTH)),w=t.slice(t.length-it.SIGNATURE_LENGTH);return new ke(n,f,I,m,c,E,b,B,t.length,v,Q,w)}catch(r){this.verbose>1&&console.warn(`Error deserializing ${n||"unknown"} unicast message:`,r.stack)}return null}#s(t){let e=[],n=this.idLength;if(t.length%n!==0)throw new Error("Failed to parse ids: invalid serialized length.");for(let r=0;r<t.length/n;r++){let s=t.slice(r*n,(r+1)*n);it.ARE_IDS_HEX?e.push(this.converter.bytesToHex(s,it.ID_LENGTH)):e.push(this.converter.bytesToString(s))}return e}#o(t,e){if(t===1)return this.converter.bytesToString(e);if(t===2)return e;if(t===3)return JSON.parse(this.converter.bytesToString(e));throw new Error(`Failed to parse data: unknown data code '${t}'.`)}};await Mt();var Jo=Bt.IS_BROWSER?null:await import("dgram"),Nn=class{id;verbose;maxKick;peerStore;cryptoCodex;publicUrl;constructor(t,e,n=3,r=1){this.id=t.id,this.verbose=r,this.maxKick=n,this.peerStore=e,this.cryptoCodex=t}start(t="localhost",e=Pt.PORT){this.publicUrl=`ws://${t}:${e}`,this.#e(t,e),Ft.USE_TEST_TRANSPORTS||this.#t(t,e+1)}freePublicNodeByKickingPeers(){let t=Math.min(this.maxKick,this.peerStore.neighborsList.length-pt.TARGET_NEIGHBORS_COUNT);if(t<=0)return;let e=0,n=Pt.AUTO_KICK_DELAY;for(let r in this.peerStore.connected){let s=this.peerStore.connected[r],o=this.peerStore.getUpdatedPeerConnectionsCount(r,!1);if(o>pt.TARGET_NEIGHBORS_COUNT){if(this.peerStore.kickPeer(r,Pt.AUTO_KICK_DURATION,"freePublicNode"),this.peerStore.neighborsList.length<=pt.TARGET_NEIGHBORS_COUNT)break;continue}if(!(s.getConnectionDuration()<(o>2?n:n*2))&&(this.peerStore.kickPeer(r,Pt.AUTO_KICK_DURATION,"freePublicNode"),++e>=t))break}}#e(t="localhost",e=Pt.PORT){this.wsServer=new St.WS_SERVER({port:e,host:t}),this.verbose>1&&this.wsServer.on("error",n=>console.warn(`WebSocket error on Node #${this.id}:`,n)),this.wsServer.on("connection",n=>{n.on("close",()=>{if(r)for(let s of this.peerStore.callbacks.disconnect)s(r,"in")}),this.verbose>1&&n.on("error",s=>console.warn(`WebSocket error on Node #${this.id} with peer ${r}:`,s.stack));let r;n.on("message",s=>{if(r)for(let o of this.peerStore.callbacks.data)o(r,s);else{let o=new Uint8Array(s);if(o[0]>127)return;let f=this.cryptoCodex.readUnicastMessage(o);if(!f)return;let{route:h,type:c,neighborsList:u}=f;if(c!=="handshake"||h.length!==2)return;let{signatureStart:I,pubkey:l,signature:C}=f,B=o.subarray(0,I);if(!this.cryptoCodex.verifySignature(l,B,C))return;r=h[0],this.peerStore.digestPeerNeighbors(r,u),this.peerStore.connecting[r]?.out?.close(),this.peerStore.connecting[r]||(this.peerStore.connecting[r]={}),this.peerStore.connecting[r].in=new re(r,n,"in",!0);for(let y of this.peerStore.callbacks.connect)y(r,"in")}}),n.send(this.cryptoCodex.createUnicastMessage("handshake",null,[this.id,this.id],this.peerStore.neighborsList))})}#t(t="localhost",e=Pt.PORT+1){this.stunServer=Jo.createSocket("udp4"),this.stunServer.on("message",(n,r)=>{this.verbose>2&&console.log(`%cSTUN message from ${r.address}:${r.port} - ${n.toString("hex")}`,lt.SERVICE),this.#n(n)&&this.stunServer.send(this.#r(n,r),r.port,r.address)}),this.stunServer.bind(e,t),this.verbose>2&&console.log(`%cSTUN server listening on ${t}:${e}`,lt.SERVICE)}#n(t){if(t.length<20)return!1;let e=t.readUInt16BE(0),n=t.readUInt32BE(4);return e===1&&n===554869826}#r(t,e){let n=t.subarray(8,20),r=Buffer.allocUnsafe(32);return r.writeUInt16BE(257,0),r.writeUInt16BE(12,2),r.writeUInt32BE(554869826,4),n.copy(r,8),r.writeUInt16BE(1,20),r.writeUInt16BE(8,22),r.writeUInt16BE(1,24),r.writeUInt16BE(e.port,26),r.writeUInt32BE(Ot.ipToInt(e.address),28),this.verbose>2&&console.log(`%cSTUN Response: client will discover IP ${e.address}:${e.port}`,"color: green;"),r}static deriveSTUNServers(t){let e=[];for(let n of t){if(!n.includes(":")||n.endsWith("/ws")||n.endsWith("/wss"))continue;let r=n.replace("ws://","stun:");r.replace("wss://","stun:"),r.includes("stun:")&&e.push({urls:r})}return St.CENTRALIZED_STUN_SERVERS&&(e.push({urls:"stun:stun.l.google.com:5349"}),e.push({urls:"stun:stun.l.google.com:19302"}),e.push({urls:"stun:stun1.l.google.com:3478"}),e.push({urls:"stun:stun1.l.google.com:5349"})),e}};async function Es(a={}){let t=a.verbose!==void 0?a.verbose:Bt.DEFAULT_VERBOSE,e=a.cryptoCodex||new Te(void 0,t),n=ct.sync(t);e.publicKey||await e.generate(!1),a.autoStart!==!1&&await n;let r=new Xe(e,a.bootstraps||[],t);return a.autoStart!==!1&&await r.start(),r}var Xe=class{started=!1;id;cryptoCodex;verbose;offerManager;arbiter;peerStore;messager;gossip;topologist;services;constructor(t,e=[],n=Bt.DEFAULT_VERBOSE){this.verbose=n,this.topologist?.services&&(this.topologist.services.verbose=n),this.cryptoCodex=t,this.id=this.cryptoCodex.id;let r=Nn.deriveSTUNServers(e||[]);this.offerManager=new ze(this.id,r,n),this.arbiter=new Ze(this.id,t,n),this.peerStore=new sn(this.id,this.cryptoCodex,this.offerManager,this.arbiter,n),this.messager=new An(this.id,this.cryptoCodex,this.arbiter,this.peerStore,n),this.gossip=new cn(this.id,this.cryptoCodex,this.arbiter,this.peerStore,n),this.topologist=new fn(this.id,this.cryptoCodex,this.gossip,this.messager,this.peerStore,e||[]);let{arbiter:s,peerStore:o,messager:f,gossip:h,topologist:c}=this;o.on("signal",(u,I)=>this.sendMessage(u,I,{type:"signal_answer"})),o.on("connect",(u,I)=>this.#e(u,I)),o.on("disconnect",(u,I)=>this.#t(u,I)),o.on("data",(u,I)=>this.#n(u,I)),f.on("signal_answer",u=>c.handleIncomingSignal(u.senderId,u.data)),f.on("signal_offer",u=>c.handleIncomingSignal(u.senderId,u.data)),f.on("privacy",u=>this.#i(u)),h.on("signal_offer",u=>c.handleIncomingSignal(u.senderId,u.data)),n>2&&console.log(`Node initialized: ${this.id}`)}#e=(t,e)=>{let n=this.cryptoCodex.isPublicNode(t);if(this.publicUrl)return;this.verbose>(this.publicUrl||n?3:2)&&console.log(`(${this.id}) ${e==="in"?"Incoming":"Outgoing"} connection established with peer ${t}`),(!n&&!this.cryptoCodex.isPublicNode(this.id)||e==="in")&&this.sendMessage(t,this.id,"handshake");let s=this.peerStore.neighborsList.length>=pt.TARGET_NEIGHBORS_COUNT+this.halfTarget,o=()=>{pt.ON_CONNECT_DISPATCH.OVER_NEIGHBORED&&s&&this.broadcast([],{type:"over_neighbored"}),pt.ON_CONNECT_DISPATCH.SHARE_HISTORY&&this.peerStore.getUpdatedPeerConnectionsCount(t)<=1&&this.gossip.sendGossipHistoryToPeer(t)};pt.ON_CONNECT_DISPATCH.DELAY?setTimeout(o,pt.ON_CONNECT_DISPATCH.DELAY):o()};#t=(t,e)=>{if(!this.peerStore.neighborsList.length){for(let s in this.peerStore.connecting)this.peerStore.kickPeer(s,0,"no_neighbors_left");for(let s in this.offerManager.offers)this.offerManager.offers[s].timestamp=0}let n=this.cryptoCodex.isPublicNode(t);if(this.peerStore.connected[t])return;this.verbose>(this.publicUrl||n?3:2)&&console.log(`(${this.id}) ${e==="in"?"Incoming":"Outgoing"} connection closed with peer ${t}`)};#n=(t,e)=>{let n=new Uint8Array(e);n[0]>127?this.gossip.handleGossipMessage(t,n):this.messager.handleDirectMessage(t,n)};get publicUrl(){return this.services?.publicUrl}get time(){return ct.time}async#r(){if(!(typeof RTCPeerConnection<"u"))return(await import("wrtc")).default}async start(){let t=await this.#r();return this.offerManager.assignTransportWrtc(t),await ct.sync(this.verbose),this.started=!0,Ft.AVOID_INTERVALS||(this.arbiterInterval=setInterval(()=>this.arbiter.tick(),1e3),this.peerStoreInterval=setInterval(()=>{this.peerStore.cleanupExpired(),this.peerStore.offerManager.tick()},2500),this.publicUrl)||(this.enhancerInterval=setInterval(()=>this.topologist.tick(),pt.LOOP_DELAY),this.topologist.tryConnectNextBootstrap()),!0}broadcast(t,e={}){let{topic:n,HOPS:r}=e;return this.gossip.broadcastToAll(t,n,r)}async sendMessage(t,e,n={}){let{type:r,spread:s}=n,o=r==="private_message"?await this.getPeerPrivacy(t):null;return o&&!o?.sharedSecret?(this.verbose>1&&console.warn(`Cannot send encrypted message to ${t} as shared secret could not be established.`),!1):this.messager.sendUnicast(t,e,r,s)}async sendPrivateMessage(t,e,n={}){let r={...n,type:"private_message"};return this.sendMessage(t,e,r)}async getPeerPrivacy(t,e=20){let n=this.peerStore.privacy[t];n||(this.peerStore.privacy[t]=this.cryptoCodex.generateEphemeralX25519Keypair(),n=this.peerStore.privacy[t]);let r=1;for(;!n?.sharedSecret&&e-- >0;)r--<=0&&(this.messager.sendUnicast(t,n.myPub,"privacy"),r=5),await new Promise(s=>setTimeout(s,100)),n=this.peerStore.privacy[t];return n}#i(t){let{senderId:e,data:n}=t;if(!(n instanceof Uint8Array)){this.verbose>1&&console.warn(`Received invalid privacy message from ${e}, expected peer public key as Uint8Array.`);return}this.peerStore.privacy[e]?.sharedSecret||(this.peerStore.privacy[e]||(this.peerStore.privacy[e]=this.cryptoCodex.generateEphemeralX25519Keypair()),this.peerStore.privacy[e].peerPub=n,this.peerStore.privacy[e].sharedSecret=this.cryptoCodex.computeX25519SharedSecret(this.peerStore.privacy[e].myPriv,n),this.messager.sendUnicast(e,this.peerStore.privacy[e].myPub,"privacy"))}async tryConnectToPeer(t="toto",e=10){if(!this.peerStore.connected[t])do{let{offerHash:n,readyOffer:r}=this.peerStore.offerManager.bestReadyOffer(100,!1);if(!n||!r)await new Promise(s=>setTimeout(s,1e3));else{this.messager.sendUnicast(t,{signal:r.signal,offerHash:n},"signal_offer");return}}while(e-- >0)}destroy(){this.enhancerInterval&&clearInterval(this.enhancerInterval),this.enhancerInterval=null,this.peerStoreInterval&&clearInterval(this.peerStoreInterval),this.peerStoreInterval=null,this.peerStore.destroy(),this.wsServer&&this.wsServer.close(),this.stunServer&&this.stunServer.close()}onPeerConnect(t){this.peerStore.on("connect",t)}onPeerDisconnect(t){this.peerStore.on("disconnect",t)}onMessageData(t,e=!0){this.messager.on("message",t),e&&this.messager.on("private_message",t)}onPrivateMessageData(t){this.messager.on("private_message",t)}onGossipData(t){this.gossip.on("gossip",t)}onSignalOffer(t){this.messager.on("signal_offer",t),this.gossip.on("signal_offer",t)}onSignalAnswer(t){this.messager.on("signal_answer",t)}kickPeer(t,e="kicked_by_node"){this.peerStore.kickPeer(t,0,e)}banPeer(t,e=6e4,n="banished_by_node"){this.arbiter.trustBalances[t]=0,this.arbiter.adjustTrust(t,-e,n)}};await Mt();function ps(a,t){for(let e in t)t[e]&&typeof t[e]=="object"&&!Array.isArray(t[e])?(a[e]=a[e]||{},ps(a[e],t[e])):a[e]=t[e]}var Bs={CLOCK:ct,CONFIG:Tr,Converter:Ot,mergeConfig:ps,Node:Xe,createNode:Es,CryptoCodex:Te,ed25519:Ne,x25519:We,chacha20poly1305:je,xchacha20poly1305:Is,randomBytes:Ve,Argon2Unified:ve,xxHash32:Ce};var Dc=Bs;typeof window<"u"&&(window.HiveP2P=Bs);export{ve as Argon2Unified,ct as CLOCK,Tr as CONFIG,Ot as Converter,Te as CryptoCodex,Xe as Node,je as chacha20poly1305,Es as createNode,Dc as default,Ne as ed25519,ps as mergeConfig,Ve as randomBytes,We as x25519,Is as xchacha20poly1305,Ce as xxHash32};
4
4
  /*!
5
5
  * The buffer module from node.js, for the browser.
6
6
  *