@helia/http 3.0.12-e27aa2de → 3.0.12

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.
package/dist/index.min.js CHANGED
@@ -1,16 +1,16 @@
1
1
  (function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.HeliaHttp = factory()}(typeof self !== 'undefined' ? self : this, function () {
2
- "use strict";var HeliaHttp=(()=>{var CE=Object.create;var va=Object.defineProperty;var TE=Object.getOwnPropertyDescriptor;var BE=Object.getOwnPropertyNames;var LE=Object.getPrototypeOf,PE=Object.prototype.hasOwnProperty;var gr=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Ae=(r,e)=>{for(var t in e)va(r,t,{get:e[t],enumerable:!0})},gg=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of BE(e))!PE.call(r,o)&&o!==t&&va(r,o,{get:()=>e[o],enumerable:!(n=TE(e,o))||n.enumerable});return r};var pn=(r,e,t)=>(t=r!=null?CE(LE(r)):{},gg(e||!r||!r.__esModule?va(t,"default",{value:r,enumerable:!0}):t,r)),DE=r=>gg(va({},"__esModule",{value:!0}),r);var V0=gr(fi=>{(function(){var r,e,t,n,o,s,i,a;a=function(c){var l,u,f,d;return l=(c&255<<24)>>>24,u=(c&255<<16)>>>16,f=(c&65280)>>>8,d=c&255,[l,u,f,d].join(".")},i=function(c){var l,u,f,d,h,p;for(l=[],f=d=0;d<=3&&c.length!==0;f=++d){if(f>0){if(c[0]!==".")throw new Error("Invalid IP");c=c.substring(1)}p=e(c),h=p[0],u=p[1],c=c.substring(u),l.push(h)}if(c.length!==0)throw new Error("Invalid IP");switch(l.length){case 1:if(l[0]>4294967295)throw new Error("Invalid IP");return l[0]>>>0;case 2:if(l[0]>255||l[1]>16777215)throw new Error("Invalid IP");return(l[0]<<24|l[1])>>>0;case 3:if(l[0]>255||l[1]>255||l[2]>65535)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2])>>>0;case 4:if(l[0]>255||l[1]>255||l[2]>255||l[3]>255)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2]<<8|l[3])>>>0;default:throw new Error("Invalid IP")}},t=function(c){return c.charCodeAt(0)},n=t("0"),s=t("a"),o=t("A"),e=function(c){var l,u,f,d,h;for(d=0,l=10,u="9",f=0,c.length>1&&c[f]==="0"&&(c[f+1]==="x"||c[f+1]==="X"?(f+=2,l=16):"0"<=c[f+1]&&c[f+1]<="9"&&(f++,l=8,u="7")),h=f;f<c.length;){if("0"<=c[f]&&c[f]<=u)d=d*l+(t(c[f])-n)>>>0;else if(l===16)if("a"<=c[f]&&c[f]<="f")d=d*l+(10+t(c[f])-s)>>>0;else if("A"<=c[f]&&c[f]<="F")d=d*l+(10+t(c[f])-o)>>>0;else break;else break;if(d>4294967295)throw new Error("too large");f++}if(f===h)throw new Error("empty octet");return[d,f]},r=(function(){function c(l,u){var f,d,h,p;if(typeof l!="string")throw new Error("Missing `net' parameter");if(u||(p=l.split("/",2),l=p[0],u=p[1]),u||(u=32),typeof u=="string"&&u.indexOf(".")>-1){try{this.maskLong=i(u)}catch(g){throw f=g,new Error("Invalid mask: "+u)}for(d=h=32;h>=0;d=--h)if(this.maskLong===4294967295<<32-d>>>0){this.bitmask=d;break}}else if(u||u===0)this.bitmask=parseInt(u,10),this.maskLong=0,this.bitmask>0&&(this.maskLong=4294967295<<32-this.bitmask>>>0);else throw new Error("Invalid mask: empty");try{this.netLong=(i(l)&this.maskLong)>>>0}catch(g){throw f=g,new Error("Invalid net address: "+l)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+u);this.size=Math.pow(2,32-this.bitmask),this.base=a(this.netLong),this.mask=a(this.maskLong),this.hostmask=a(~this.maskLong),this.first=this.bitmask<=30?a(this.netLong+1):this.base,this.last=this.bitmask<=30?a(this.netLong+this.size-2):a(this.netLong+this.size-1),this.broadcast=this.bitmask<=30?a(this.netLong+this.size-1):void 0}return c.prototype.contains=function(l){return typeof l=="string"&&(l.indexOf("/")>0||l.split(".").length!==4)&&(l=new c(l)),l instanceof c?this.contains(l.base)&&this.contains(l.broadcast||l.last):(i(l)&this.maskLong)>>>0===(this.netLong&this.maskLong)>>>0},c.prototype.next=function(l){return l==null&&(l=1),new c(a(this.netLong+this.size*l),this.mask)},c.prototype.forEach=function(l){var u,f,d;for(d=i(this.first),f=i(this.last),u=0;d<=f;)l(a(d),d,u),u++,d++},c.prototype.toString=function(){return this.base+"/"+this.bitmask},c})(),fi.ip2long=i,fi.long2ip=a,fi.Netmask=r}).call(fi)});var yb=gr((rR,Ip)=>{"use strict";var yI=Object.prototype.hasOwnProperty,ot="~";function Li(){}Object.create&&(Li.prototype=Object.create(null),new Li().__proto__||(ot=!1));function wI(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function gb(r,e,t,n,o){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new wI(t,n||r,o),i=ot?ot+e:e;return r._events[i]?r._events[i].fn?r._events[i]=[r._events[i],s]:r._events[i].push(s):(r._events[i]=s,r._eventsCount++),r}function Xc(r,e){--r._eventsCount===0?r._events=new Li:delete r._events[e]}function Qe(){this._events=new Li,this._eventsCount=0}Qe.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)yI.call(t,n)&&e.push(ot?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};Qe.prototype.listeners=function(e){var t=ot?ot+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var o=0,s=n.length,i=new Array(s);o<s;o++)i[o]=n[o].fn;return i};Qe.prototype.listenerCount=function(e){var t=ot?ot+e:e,n=this._events[t];return n?n.fn?1:n.length:0};Qe.prototype.emit=function(e,t,n,o,s,i){var a=ot?ot+e:e;if(!this._events[a])return!1;var c=this._events[a],l=arguments.length,u,f;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,o),!0;case 5:return c.fn.call(c.context,t,n,o,s),!0;case 6:return c.fn.call(c.context,t,n,o,s,i),!0}for(f=1,u=new Array(l-1);f<l;f++)u[f-1]=arguments[f];c.fn.apply(c.context,u)}else{var d=c.length,h;for(f=0;f<d;f++)switch(c[f].once&&this.removeListener(e,c[f].fn,void 0,!0),l){case 1:c[f].fn.call(c[f].context);break;case 2:c[f].fn.call(c[f].context,t);break;case 3:c[f].fn.call(c[f].context,t,n);break;case 4:c[f].fn.call(c[f].context,t,n,o);break;default:if(!u)for(h=1,u=new Array(l-1);h<l;h++)u[h-1]=arguments[h];c[f].fn.apply(c[f].context,u)}}return!0};Qe.prototype.on=function(e,t,n){return gb(this,e,t,n,!1)};Qe.prototype.once=function(e,t,n){return gb(this,e,t,n,!0)};Qe.prototype.removeListener=function(e,t,n,o){var s=ot?ot+e:e;if(!this._events[s])return this;if(!t)return Xc(this,s),this;var i=this._events[s];if(i.fn)i.fn===t&&(!o||i.once)&&(!n||i.context===n)&&Xc(this,s);else{for(var a=0,c=[],l=i.length;a<l;a++)(i[a].fn!==t||o&&!i[a].once||n&&i[a].context!==n)&&c.push(i[a]);c.length?this._events[s]=c.length===1?c[0]:c:Xc(this,s)}return this};Qe.prototype.removeAllListeners=function(e){var t;return e?(t=ot?ot+e:e,this._events[t]&&Xc(this,t)):(this._events=new Li,this._eventsCount=0),this};Qe.prototype.off=Qe.prototype.removeListener;Qe.prototype.addListener=Qe.prototype.on;Qe.prefixed=ot;Qe.EventEmitter=Qe;typeof Ip<"u"&&(Ip.exports=Qe)});var vb=gr((IR,xb)=>{xb.exports=function(r){if(!r)throw Error("hashlru must have a max value, of type number, greater than 0");var e=0,t=Object.create(null),n=Object.create(null);function o(s,i){t[s]=i,e++,e>=r&&(e=0,n=t,t=Object.create(null))}return{has:function(s){return t[s]!==void 0||n[s]!==void 0},remove:function(s){t[s]!==void 0&&(t[s]=void 0),n[s]!==void 0&&(n[s]=void 0)},get:function(s){var i=t[s];if(i!==void 0)return i;if((i=n[s])!==void 0)return o(s,i),i},set:function(s,i){t[s]!==void 0?t[s]=i:o(s,i)},clear:function(){t=Object.create(null),n=Object.create(null)}}}});var Em=gr((yU,vm)=>{var gU=(function(){typeof vm<"u"&&(vm.exports=g);var r=86400,e=3200,t=146097*e/400,n=r*t,o=1e3*n,s=864e13,i=4294967296,a=1e6,c="000000000",l=Math.trunc||function(x){var v=x-x%1;return v==0&&(x<0||x===0&&1/x!=1/0)?-0:v},u=g.prototype,f=(g.fromDate=function(x){return new g(+x)},g.fromInt64BE=D(0,1,2,3,0,4),g.fromInt64LE=D(3,2,1,0,4,0),g.fromString=function(N){var v,P=new g,N=(N+="").replace(/^\s*[+\-]?\d+/,function(E){var E=+E,A=1970+(E-1970)%400;return P.year=E-A,A}).replace(/(?:Z|([+\-]\d{2}):?(\d{2}))$/,function(C,E,A){return E<0&&(A*=-1),v=6e4*(60*+E+ +A),""}).replace(/\.\d+$/,function(C){return P.nano=+(C+c).substr(1,9),""}).split(/\D+/);if(1<N.length?N[1]--:N[1]=0,P.time=v=Date.UTC.apply(Date,N)-(v||0),isNaN(v))throw new TypeError("Invalid Date");return w(P)},g.fromTimeT=function(x){return T(x,0)},u.year=0,u.time=0,u.nano=0,u.addNano=function(x){return this.nano+=+x||0,this},u.getNano=function(){var x=w(this);return(x.time%1e3*a+ +x.nano+1e9)%1e9},u.getTimeT=function(){var v=w(this),x=Math.floor(v.time/1e3),v=v.year;return v&&(x+=v*t*r/e),x},u.getYear=function(){return this.toDate().getUTCFullYear()+this.year},u.toDate=function(){return b(w(this).time)},u.toJSON=function(){return this.toString().replace(/0{1,6}Z$/,"Z")},u.toString=function(x){var v=this,P=v.toDate(),N={H:function(){return Y(P.getUTCHours())},L:function(){return G(P.getUTCMilliseconds(),3)},M:function(){return Y(P.getUTCMinutes())},N:function(){return G(v.getNano(),9)},S:function(){return Y(P.getUTCSeconds())},Y:function(){var C=v.getYear();return 999999<C?"+"+C:9999<C?"+"+G(C,6):0<=C?G(C,4):-999999<=C?"-"+G(-C,6):C},a:function(){return h[P.getUTCDay()]},b:function(){return d[P.getUTCMonth()]},d:function(){return Y(P.getUTCDate())},e:function(){return(function(C){return(9<C?"":" ")+(0|C)})(P.getUTCDate())},m:function(){return Y(P.getUTCMonth()+1)}};return(function C(E){return E.replace(/%./g,function(A){var _=A[1],y=p[_],_=N[_];return y?C(y):_?_():A})})(x||f)},u.writeInt64BE=S(0,1,2,3,0,4),u.writeInt64LE=S(3,2,1,0,4,0),"%Y-%m-%dT%H:%M:%S.%NZ"),d=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],h=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],p={"%":"%",F:"%Y-%m-%d",n:`
3
- `,R:"%H:%M",T:"%H:%M:%S",t:" ",X:"%T",Z:"GMT",z:"+0000"};return g;function g(x,v,P){var N=this;if(!(N instanceof g))return new g(x,v,P);N.time=+x||0,N.nano=+v||0,N.year=+P||0,w(N)}function w(x){var v,P,N,C=x.year,E=x.time,A=x.nano,y=((A<0||a<=A)&&(A-=(P=Math.floor(A/a))*a,E+=P,P=1),C%e);return(E<-s||s<E||y)&&((v=l(E/o))&&(C+=v*e,E-=v*o),(N=b(E)).setUTCFullYear(y+N.getUTCFullYear()),N=(E=+N)+(v=l((C-=y)/e))*o,v&&-s<=N&&N<=s&&(C-=v*e,E=N),P=1),P&&(x.year=C,x.time=E,x.nano=A),x}function b(x){var v=new Date(0);return v.setTime(x),v}function T(C,N){C=+C||0;var P=l((N=(N|0)*i)/n)+l(C/n),N=N%n+C%n,C=l(N/n);return C&&(P+=C,N-=C*n),new g(1e3*N,0,P*e)}function S(x,v,P,N,C,E){return function(y,_){var O=w(this);y=y||new Array(8),K(y,_|=0);var $=Math.floor(O.time/1e3),O=O.year*(t*r/e),R=l(O/i)+l($/i),O=O%i+$%i,$=Math.floor(O/i);return $&&(R+=$,O-=$*i),A(y,_+C,R),A(y,_+E,O),y};function A(y,_,R){y[_+x]=R>>24&255,y[_+v]=R>>16&255,y[_+P]=R>>8&255,y[_+N]=255&R}}function D(x,v,P,N,C,E){return function(y,_){K(y,_|=0);var R=A(y,_+C);return T(A(y,_+E),R)};function A(y,_){return 16777216*y[_+x]+(y[_+v]<<16|y[_+P]<<8|y[_+N])}}function K(x,v){if(x=x&&x.length,x==null)throw new TypeError("Invalid Buffer");if(x<v+8)throw new RangeError("Out of range")}function Y(x){return(9<x?"":"0")+(0|x)}function G(x,v){return(c+(0|x)).substr(-v)}})()});var _v=gr((Pq,kv)=>{"use strict";function rC(r){return r>=55296&&r<=56319}function nC(r){return r>=56320&&r<=57343}kv.exports=function(e,t,n){if(typeof t!="string")throw new Error("Input must be string");for(var o=t.length,s=0,i,a,c=0;c<o;c+=1){if(i=t.charCodeAt(c),a=t[c],rC(i)&&nC(t.charCodeAt(c+1))&&(c+=1,a+=t[c]),s+=e(a),s===n)return t.slice(0,c+1);if(s>n)return t.slice(0,c-a.length+1)}return t}});var Tv=gr((Dq,Cv)=>{"use strict";function oC(r){return r>=55296&&r<=56319}function sC(r){return r>=56320&&r<=57343}Cv.exports=function(e){if(typeof e!="string")throw new Error("Input must be string");for(var t=e.length,n=0,o=null,s=null,i=0;i<t;i++)o=e.charCodeAt(i),sC(o)?s!=null&&oC(s)?n+=1:n+=3:o<=127?n+=1:o>=128&&o<=2047?n+=2:o>=2048&&o<=65535&&(n+=3),s=o;return n}});var Lv=gr((Nq,Bv)=>{"use strict";var iC=_v(),aC=Tv();Bv.exports=iC.bind(null,aC)});var Nv=gr((Rq,Dv)=>{"use strict";var cC=Lv(),lC=/[\/\?<>\\:\*\|"]/g,uC=/[\x00-\x1f\x80-\x9f]/g,fC=/^\.+$/,dC=/^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i,hC=/[\. ]+$/;function Pv(r,e){if(typeof r!="string")throw new Error("Input must be string");var t=r.replace(lC,e).replace(uC,e).replace(fC,e).replace(dC,e).replace(hC,e);return cC(t,255)}Dv.exports=function(r,e){var t=e&&e.replacement||"",n=Pv(r,t);return t===""?n:Pv(n,"")}});var Rv=gr(xs=>{"use strict";var mC="[object ArrayBuffer]",Dr=class r{static isArrayBuffer(e){return Object.prototype.toString.call(e)===mC}static toArrayBuffer(e){return this.isArrayBuffer(e)?e:e.byteLength===e.buffer.byteLength||e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:this.toUint8Array(e.buffer).slice(e.byteOffset,e.byteOffset+e.byteLength).buffer}static toUint8Array(e){return this.toView(e,Uint8Array)}static toView(e,t){if(e.constructor===t)return e;if(this.isArrayBuffer(e))return new t(e);if(this.isArrayBufferView(e))return new t(e.buffer,e.byteOffset,e.byteLength);throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'")}static isBufferSource(e){return this.isArrayBufferView(e)||this.isArrayBuffer(e)}static isArrayBufferView(e){return ArrayBuffer.isView(e)||e&&this.isArrayBuffer(e.buffer)}static isEqual(e,t){let n=r.toUint8Array(e),o=r.toUint8Array(t);if(n.length!==o.byteLength)return!1;for(let s=0;s<n.length;s++)if(n[s]!==o[s])return!1;return!0}static concat(...e){let t;Array.isArray(e[0])&&!(e[1]instanceof Function)||Array.isArray(e[0])&&e[1]instanceof Function?t=e[0]:e[e.length-1]instanceof Function?t=e.slice(0,e.length-1):t=e;let n=0;for(let i of t)n+=i.byteLength;let o=new Uint8Array(n),s=0;for(let i of t){let a=this.toUint8Array(i);o.set(a,s),s+=a.length}return e[e.length-1]instanceof Function?this.toView(o,e[e.length-1]):o.buffer}},sg="string",gC=/^[0-9a-f\s]+$/i,yC=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,wC=/^[a-zA-Z0-9-_]+$/,Zu=class{static fromString(e){let t=unescape(encodeURIComponent(e)),n=new Uint8Array(t.length);for(let o=0;o<t.length;o++)n[o]=t.charCodeAt(o);return n.buffer}static toString(e){let t=Dr.toUint8Array(e),n="";for(let s=0;s<t.length;s++)n+=String.fromCharCode(t[s]);return decodeURIComponent(escape(n))}},Pt=class{static toString(e,t=!1){let n=Dr.toArrayBuffer(e),o=new DataView(n),s="";for(let i=0;i<n.byteLength;i+=2){let a=o.getUint16(i,t);s+=String.fromCharCode(a)}return s}static fromString(e,t=!1){let n=new ArrayBuffer(e.length*2),o=new DataView(n);for(let s=0;s<e.length;s++)o.setUint16(s*2,e.charCodeAt(s),t);return n}},Xu=class r{static isHex(e){return typeof e===sg&&gC.test(e)}static isBase64(e){return typeof e===sg&&yC.test(e)}static isBase64Url(e){return typeof e===sg&&wC.test(e)}static ToString(e,t="utf8"){let n=Dr.toUint8Array(e);switch(t.toLowerCase()){case"utf8":return this.ToUtf8String(n);case"binary":return this.ToBinary(n);case"hex":return this.ToHex(n);case"base64":return this.ToBase64(n);case"base64url":return this.ToBase64Url(n);case"utf16le":return Pt.toString(n,!0);case"utf16":case"utf16be":return Pt.toString(n);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromString(e,t="utf8"){if(!e)return new ArrayBuffer(0);switch(t.toLowerCase()){case"utf8":return this.FromUtf8String(e);case"binary":return this.FromBinary(e);case"hex":return this.FromHex(e);case"base64":return this.FromBase64(e);case"base64url":return this.FromBase64Url(e);case"utf16le":return Pt.fromString(e,!0);case"utf16":case"utf16be":return Pt.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){let t=Dr.toUint8Array(e);if(typeof btoa<"u"){let n=this.ToString(t,"binary");return btoa(n)}else return Buffer.from(t).toString("base64")}static FromBase64(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64(t))throw new TypeError("Argument 'base64Text' is not Base64 encoded");return typeof atob<"u"?this.FromBinary(atob(t)):new Uint8Array(Buffer.from(t,"base64")).buffer}static FromBase64Url(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64Url(t))throw new TypeError("Argument 'base64url' is not Base64Url encoded");return this.FromBase64(this.Base64Padding(t.replace(/\-/g,"+").replace(/\_/g,"/")))}static ToBase64Url(e){return this.ToBase64(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=/g,"")}static FromUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.FromBinary(e);case"utf8":return Zu.fromString(e);case"utf16":case"utf16be":return Pt.fromString(e);case"utf16le":case"usc2":return Pt.fromString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.ToBinary(e);case"utf8":return Zu.toString(e);case"utf16":case"utf16be":return Pt.toString(e);case"utf16le":case"usc2":return Pt.toString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromBinary(e){let t=e.length,n=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=e.charCodeAt(o);return n.buffer}static ToBinary(e){let t=Dr.toUint8Array(e),n="";for(let o=0;o<t.length;o++)n+=String.fromCharCode(t[o]);return n}static ToHex(e){let t=Dr.toUint8Array(e),n="",o=t.length;for(let s=0;s<o;s++){let i=t[s];i<16&&(n+="0"),n+=i.toString(16)}return n}static FromHex(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isHex(t))throw new TypeError("Argument 'hexString' is not HEX encoded");t.length%2&&(t=`0${t}`);let n=new Uint8Array(t.length/2);for(let o=0;o<t.length;o=o+2){let s=t.slice(o,o+2);n[o/2]=parseInt(s,16)}return n.buffer}static ToUtf16String(e,t=!1){return Pt.toString(e,t)}static FromUtf16String(e,t=!1){return Pt.fromString(e,t)}static Base64Padding(e){let t=4-e.length%4;if(t<4)for(let n=0;n<t;n++)e+="=";return e}static formatString(e){return e?.replace(/[\n\r\t ]/g,"")||""}};Xu.DEFAULT_UTF8_ENCODING="utf8";function bC(r,...e){let t=arguments[0];for(let n=1;n<arguments.length;n++){let o=arguments[n];for(let s in o)t[s]=o[s]}return t}function xC(...r){let e=r.map(o=>o.byteLength).reduce((o,s)=>o+s),t=new Uint8Array(e),n=0;return r.map(o=>new Uint8Array(o)).forEach(o=>{for(let s of o)t[n++]=s}),t.buffer}function vC(r,e){if(!(r&&e)||r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let o=0;o<r.byteLength;o++)if(t[o]!==n[o])return!1;return!0}xs.BufferSourceConverter=Dr;xs.Convert=Xu;xs.assign=bC;xs.combine=xC;xs.isEqual=vC});var UC={};Ae(UC,{DEFAULT_SESSION_MAX_PROVIDERS:()=>Up,DEFAULT_SESSION_MIN_PROVIDERS:()=>Op,InsufficientProvidersError:()=>Ri,InvalidCodecError:()=>Fp,NoRoutersAvailableError:()=>cn,UnknownCodecError:()=>Oi,UnknownHashAlgorithmError:()=>Mi,createHeliaHTTP:()=>OC,heliaDefaults:()=>_E});var yg=Symbol.for("@libp2p/connection");var mn=Symbol.for("@libp2p/content-routing");var dt=class extends Error{static name="AbortError";constructor(e="The operation was aborted"){super(e),this.name="AbortError"}};var k=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}},uo=class extends Error{static name="InvalidPublicKeyError";constructor(e="Invalid public key"){super(e),this.name="InvalidPublicKeyError"}},Ss=class extends Error{static name="InvalidPrivateKeyError";constructor(e="Invalid private key"){super(e),this.name="InvalidPrivateKeyError"}};var gn=class extends Error{static name="ConnectionClosedError";constructor(e="The connection is closed"){super(e),this.name="ConnectionClosedError"}};var ke=class extends Error{static name="NotFoundError";constructor(e="Not found"){super(e),this.name="NotFoundError"}},fo=class extends Error{static name="InvalidPeerIdError";constructor(e="Invalid PeerID"){super(e),this.name="InvalidPeerIdError"}},$r=class extends Error{static name="InvalidMultiaddrError";constructor(e="Invalid multiaddr"){super(e),this.name="InvalidMultiaddrError"}},Ea=class extends Error{static name="InvalidCIDError";constructor(e="Invalid CID"){super(e),this.name="InvalidCIDError"}},Vr=class extends Error{static name="InvalidMultihashError";constructor(e="Invalid Multihash"){super(e),this.name="InvalidMultihashError"}},Aa=class extends Error{static name="UnsupportedProtocolError";constructor(e="Unsupported protocol error"){super(e),this.name="UnsupportedProtocolError"}},Sa=class extends Error{static name="InvalidMessageError";constructor(e="Invalid message"){super(e),this.name="InvalidMessageError"}};var Ia=class extends Error{static name="TimeoutError";constructor(e="Timed out"){super(e),this.name="TimeoutError"}},yr=class extends Error{static name="NotStartedError";constructor(e="Not started"){super(e),this.name="NotStartedError"}};var ho=class extends Error{static name="DialError";constructor(e="Dial error"){super(e),this.name="DialError"}};var Is=class extends Error{static name="LimitedConnectionError";constructor(e="Limited connection"){super(e),this.name="LimitedConnectionError"}},ka=class extends Error{static name="TooManyInboundProtocolStreamsError";constructor(e="Too many inbound protocol streams"){super(e),this.name="TooManyInboundProtocolStreamsError"}},_a=class extends Error{static name="TooManyOutboundProtocolStreamsError";constructor(e="Too many outbound protocol streams"){super(e),this.name="TooManyOutboundProtocolStreamsError"}},Dt=class extends Error{static name="UnsupportedKeyTypeError";constructor(e="Unsupported key type"){super(e),this.name="UnsupportedKeyTypeError"}};var Ca=class extends Event{error;local;constructor(e,t,n){super("close",n),this.error=t,this.local=e}};var qf=Symbol.for("@libp2p/peer-discovery");var Ta=Symbol.for("@libp2p/peer-id");function tr(r){return!!r?.[Ta]}var yn=Symbol.for("@libp2p/peer-routing");var zf="keep-alive";function Ba(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function rr(...r){let e=[];for(let t of r)Ba(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStart!=null&&await t.beforeStart()})),await Promise.all(e.map(async t=>{await t.start()})),await Promise.all(e.map(async t=>{t.afterStart!=null&&await t.afterStart()}))}async function nr(...r){let e=[];for(let t of r)Ba(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStop!=null&&await t.beforeStop()})),await Promise.all(e.map(async t=>{await t.stop()})),await Promise.all(e.map(async t=>{t.afterStop!=null&&await t.afterStop()}))}var YC=Symbol.for("@libp2p/transport");var ks;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(ks||(ks={}));var _e=class extends EventTarget{#e=new Map;constructor(){super()}listenerCount(e){let t=this.#e.get(e);return t==null?0:t.length}addEventListener(e,t,n){super.addEventListener(e,t,n);let o=this.#e.get(e);o==null&&(o=[],this.#e.set(e,o)),o.push({callback:t,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(e,t,n){super.removeEventListener(e.toString(),t??null,n);let o=this.#e.get(e);o!=null&&(o=o.filter(({callback:s})=>s!==t),this.#e.set(e,o))}dispatchEvent(e){let t=super.dispatchEvent(e),n=this.#e.get(e.type);return n==null||(n=n.filter(({once:o})=>!o),this.#e.set(e.type,n)),t}safeDispatchEvent(e,t={}){return this.dispatchEvent(new CustomEvent(e,t))}};var wn=Symbol.for("@libp2p/service-capabilities"),Gf=Symbol.for("@libp2p/service-dependencies");function pe(r){let e=new globalThis.AbortController;function t(){e.abort();for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",t)}for(let s of r){if(s?.aborted===!0){t();break}s?.addEventListener!=null&&s.addEventListener("abort",t)}function n(){for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",t)}let o=e.signal;return o.clear=n,o}var W=class extends Event{type;detail;constructor(e,t){super(e),this.type=e,this.detail=t}};var _s=class extends Error{constructor(e="An error occurred while signing a message"){super(e),this.name="SigningError"}},Cs=class extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}},La=class extends Error{constructor(e="Missing Web Crypto API"){super(e),this.name="WebCryptoMissingError"}};var wg={get(r=globalThis){let e=r.crypto;if(e?.subtle==null)throw new La("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return e}};var Se=wg;var Jf={};Ae(Jf,{base58btc:()=>le,base58flickr:()=>$E});var BT=new Uint8Array(0);function bg(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function Nt(r){if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")}function xg(r){return new TextEncoder().encode(r)}function vg(r){return new TextDecoder().decode(r)}function NE(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(t[i]!==255)throw new TypeError(s+" is ambiguous");t[i]=o}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function f(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var g=0,w=0,b=0,T=p.length;b!==T&&p[b]===0;)b++,g++;for(var S=(T-b)*u+1>>>0,D=new Uint8Array(S);b!==T;){for(var K=p[b],Y=0,G=S-1;(K!==0||Y<w)&&G!==-1;G--,Y++)K+=256*D[G]>>>0,D[G]=K%a>>>0,K=K/a>>>0;if(K!==0)throw new Error("Non-zero carry");w=Y,b++}for(var x=S-w;x!==S&&D[x]===0;)x++;for(var v=c.repeat(g);x<S;++x)v+=r.charAt(D[x]);return v}function d(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var g=0;if(p[g]!==" "){for(var w=0,b=0;p[g]===c;)w++,g++;for(var T=(p.length-g)*l+1>>>0,S=new Uint8Array(T);p[g];){var D=t[p.charCodeAt(g)];if(D===255)return;for(var K=0,Y=T-1;(D!==0||K<b)&&Y!==-1;Y--,K++)D+=a*S[Y]>>>0,S[Y]=D%256>>>0,D=D/256>>>0;if(D!==0)throw new Error("Non-zero carry");b=K,g++}if(p[g]!==" "){for(var G=T-b;G!==T&&S[G]===0;)G++;for(var x=new Uint8Array(w+(T-G)),v=w;G!==T;)x[v++]=S[G++];return x}}}function h(p){var g=d(p);if(g)return g;throw new Error(`Non-${e} character`)}return{encode:f,decodeUnsafe:d,decode:h}}var RE=NE,ME=RE,Eg=ME;var jf=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},Yf=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let o=t.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Ag(this,e)}},Zf=class{decoders;constructor(e){this.decoders=e}or(e){return Ag(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function Ag(r,e){return new Zf({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var Xf=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new jf(e,t,n),this.decoder=new Yf(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function po({name:r,prefix:e,encode:t,decode:n}){return new Xf(r,e,t,n)}function Kr({name:r,prefix:e,alphabet:t}){let{encode:n,decode:o}=Eg(t,r);return po({prefix:e,name:r,encode:n,decode:s=>Nt(o(s))})}function OE(r,e,t,n){let o=r.length;for(;r[o-1]==="=";)--o;let s=new Uint8Array(o*t/8|0),i=0,a=0,c=0;for(let l=0;l<o;++l){let u=e[r[l]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<t|u,i+=t,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=t||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function UE(r,e,t){let n=e[e.length-1]==="=",o=(1<<t)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<t-i]),n)for(;(s.length*t&7)!==0;)s+="=";return s}function FE(r){let e={};for(let t=0;t<r.length;++t)e[r[t]]=t;return e}function xe({name:r,prefix:e,bitsPerChar:t,alphabet:n}){let o=FE(n);return po({prefix:e,name:r,encode(s){return UE(s,n,t)},decode(s){return OE(s,o,t,r)}})}var le=Kr({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),$E=Kr({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Qf={};Ae(Qf,{base32:()=>Te,base32hex:()=>qE,base32hexpad:()=>GE,base32hexpadupper:()=>WE,base32hexupper:()=>zE,base32pad:()=>KE,base32padupper:()=>HE,base32upper:()=>VE,base32z:()=>jE});var Te=xe({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),VE=xe({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),KE=xe({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),HE=xe({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),qE=xe({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),zE=xe({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),GE=xe({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),WE=xe({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),jE=xe({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var ed={};Ae(ed,{base36:()=>or,base36upper:()=>YE});var or=Kr({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),YE=Kr({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var ZE=kg,Sg=128,XE=127,JE=~XE,QE=Math.pow(2,31);function kg(r,e,t){e=e||[],t=t||0;for(var n=t;r>=QE;)e[t++]=r&255|Sg,r/=128;for(;r&JE;)e[t++]=r&255|Sg,r>>>=7;return e[t]=r|0,kg.bytes=t-n+1,e}var e1=td,t1=128,Ig=127;function td(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw td.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&Ig)<<o:(i&Ig)*Math.pow(2,o),o+=7}while(i>=t1);return td.bytes=s-n,t}var r1=Math.pow(2,7),n1=Math.pow(2,14),o1=Math.pow(2,21),s1=Math.pow(2,28),i1=Math.pow(2,35),a1=Math.pow(2,42),c1=Math.pow(2,49),l1=Math.pow(2,56),u1=Math.pow(2,63),f1=function(r){return r<r1?1:r<n1?2:r<o1?3:r<s1?4:r<i1?5:r<a1?6:r<c1?7:r<l1?8:r<u1?9:10},d1={encode:ZE,decode:e1,encodingLength:f1},h1=d1,Ts=h1;function Bs(r,e=0){return[Ts.decode(r,e),Ts.decode.bytes]}function mo(r,e,t=0){return Ts.encode(r,e,t),e}function go(r){return Ts.encodingLength(r)}function sr(r,e){let t=e.byteLength,n=go(r),o=n+go(t),s=new Uint8Array(o+t);return mo(r,s,0),mo(t,s,n),s.set(e,o),new yo(r,t,e,s)}function ht(r){let e=Nt(r),[t,n]=Bs(e),[o,s]=Bs(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new yo(t,o,i,e)}function _g(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&bg(r.bytes,t.bytes)}}var yo=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};function Cg(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return m1(t,rd(r),e??le.encoder);default:return g1(t,rd(r),e??Te.encoder)}}var Tg=new WeakMap;function rd(r){let e=Tg.get(r);if(e==null){let t=new Map;return Tg.set(r,t),t}return e}var H=class r{code;version;multihash;bytes;"/";constructor(e,t,n,o){this.code=t,this.version=e,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==Ls)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==y1)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=sr(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&_g(e.multihash,n.multihash)}toString(e){return Cg(this,e)}toJSON(){return{"/":Cg(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:o,multihash:s,bytes:i}=t;return new r(n,o,s,i??Bg(n,o,s.bytes))}else if(t[w1]===!0){let{version:n,multihash:o,code:s}=t,i=ht(o);return r.create(n,s,i)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==Ls)throw new Error(`Version 0 CID must use dag-pb (code: ${Ls}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=Bg(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Ls,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=Nt(e.subarray(n,n+t.multihashSize));if(o.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=o.subarray(t.multihashSize-t.digestSize),i=new yo(t.multihashCode,t.digestSize,s,o);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[f,d]=Bs(e.subarray(t));return t+=d,f},o=n(),s=Ls;if(o===18?(o=0,t=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=t,a=n(),c=n(),l=t+c,u=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:u,size:l}}static parse(e,t){let[n,o]=p1(e,t),s=r.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return rd(s).set(n,e),s}};function p1(r,e){switch(r[0]){case"Q":{let t=e??le;return[le.prefix,t.decode(`${le.prefix}${r}`)]}case le.prefix:{let t=e??le;return[le.prefix,t.decode(r)]}case Te.prefix:{let t=e??Te;return[Te.prefix,t.decode(r)]}case or.prefix:{let t=e??or;return[or.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function m1(r,e,t){let{prefix:n}=t;if(n!==le.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let o=e.get(n);if(o==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return o}function g1(r,e,t){let{prefix:n}=t,o=e.get(n);if(o==null){let s=t.encode(r);return e.set(n,s),s}else return o}var Ls=112,y1=18;function Bg(r,e,t){let n=go(r),o=n+go(e),s=new Uint8Array(o+t.byteLength);return mo(r,s,0),mo(e,s,n),s.set(t,o),s}var w1=Symbol.for("@ipld/js-cid/CID");var nd={};Ae(nd,{identity:()=>Ge});var Lg=0,b1="identity",Pg=Nt;function x1(r,e){if(e?.truncate!=null&&e.truncate!==r.byteLength){if(e.truncate<0||e.truncate>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,e.truncate)}return sr(Lg,Pg(r))}var Ge={code:Lg,name:b1,encode:Pg,digest:x1};function X(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function ve(r=0){return new Uint8Array(r)}function We(r=0){return new Uint8Array(r)}function Ce(r,e){e==null&&(e=r.reduce((o,s)=>o+s.length,0));let t=We(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return t}var Ng=Symbol.for("@achingbrain/uint8arraylist");function Dg(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let o=t+n.byteLength;if(e<o)return{buf:n,index:e-t};t=o}throw new RangeError("index is out of bounds")}function wo(r){return!!r?.[Ng]}var se=class r{bufs;length;[Ng]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(wo(n))t+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(wo(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=Dg(this.bufs,e);return t.buf[t.index]}set(e,t){let n=Dg(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(wo(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:o}=this._subList(e,t);return Ce(n,o)}subarray(e,t){let{bufs:n,length:o}=this._subList(e,t);return n.length===1?n[0]:Ce(n,o)}sublist(e,t){let{bufs:n,length:o}=this._subList(e,t),s=new r;return s.length=o,s.bufs=[...n],s}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:this.bufs,length:this.length};let n=[],o=0;for(let s=0;s<this.bufs.length;s++){let i=this.bufs[s],a=o,c=a+i.byteLength;if(o=c,e>=c)continue;let l=e>=a&&e<c,u=t>a&&t<=c;if(l&&u){if(e===a&&t===c){n.push(i);break}let f=e-a;n.push(i.subarray(f,f+(t-e)));break}if(l){if(e===0){n.push(i);continue}n.push(i.subarray(e-a));continue}if(u){if(t===c){n.push(i);break}n.push(i.subarray(0,t-a));break}n.push(i)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!wo(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");let s=256,i=new Int32Array(s);for(let f=0;f<s;f++)i[f]=-1;for(let f=0;f<o;f++)i[n[f]]=f;let a=i,c=this.byteLength-n.byteLength,l=n.byteLength-1,u;for(let f=t;f<=c;f+=u){u=0;for(let d=l;d>=0;d--){let h=this.get(f+d);if(n[d]!==h){u=Math.max(1,d-a[h]);break}}if(u===0)return f}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=We(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let o=ve(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,t,n),this.write(o,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let o=ve(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,t,n),this.write(o,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let o=ve(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,t,n),this.write(o,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=We(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let o=ve(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,t,n),this.write(o,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let o=ve(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,t,n),this.write(o,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let o=ve(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,t,n),this.write(o,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let o=ve(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,t,n),this.write(o,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let o=ve(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,t,n),this.write(o,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!X(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((o,s)=>o+s.byteLength,0)),n.length=t,n}};var od={};Ae(od,{base10:()=>v1});var v1=Kr({prefix:"9",name:"base10",alphabet:"0123456789"});var sd={};Ae(sd,{base16:()=>E1,base16upper:()=>A1});var E1=xe({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),A1=xe({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var id={};Ae(id,{base2:()=>S1});var S1=xe({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var ad={};Ae(ad,{base256emoji:()=>T1});var Rg=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),I1=Rg.reduce((r,e,t)=>(r[t]=e,r),[]),k1=Rg.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function _1(r){return r.reduce((e,t)=>(e+=I1[t],e),"")}function C1(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let o=k1[n];if(o==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var T1=po({prefix:"\u{1F680}",name:"base256emoji",encode:_1,decode:C1});var ld={};Ae(ld,{base64:()=>je,base64pad:()=>B1,base64url:()=>cd,base64urlpad:()=>L1});var je=xe({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),B1=xe({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),cd=xe({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),L1=xe({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var ud={};Ae(ud,{base8:()=>P1});var P1=xe({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var fd={};Ae(fd,{identity:()=>D1});var D1=po({prefix:"\0",name:"identity",encode:r=>vg(r),decode:r=>xg(r)});var Da={};Ae(Da,{code:()=>dd,decode:()=>U1,encode:()=>O1,name:()=>M1});var N1=new TextEncoder,R1=new TextDecoder,M1="json",dd=512;function O1(r){return N1.encode(JSON.stringify(r))}function U1(r){return JSON.parse(R1.decode(r))}var Ds={};Ae(Ds,{code:()=>Ps,decode:()=>V1,encode:()=>$1,name:()=>F1});var F1="raw",Ps=85;function $1(r){return Nt(r)}function V1(r){return Nt(r)}var md={};Ae(md,{sha256:()=>Rt,sha512:()=>Na});var K1=20;function pd({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:o}){return new hd(r,e,t,n,o)}var hd=class{name;code;encode;minDigestLength;maxDigestLength;constructor(e,t,n,o,s){this.name=e,this.code=t,this.encode=n,this.minDigestLength=o??K1,this.maxDigestLength=s}digest(e,t){if(t?.truncate!=null){if(t.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&t.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){let n=this.encode(e);return n instanceof Uint8Array?Mg(n,this.code,t?.truncate):n.then(o=>Mg(o,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}};function Mg(r,e,t){if(t!=null&&t!==r.byteLength){if(t>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,t)}return sr(e,r)}function Ug(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var Rt=pd({name:"sha2-256",code:18,encode:Ug("SHA-256")}),Na=pd({name:"sha2-512",code:19,encode:Ug("SHA-512")});var Ns={...fd,...id,...ud,...od,...sd,...Qf,...ed,...Jf,...ld,...ad},S8={...md,...nd};function $g(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var Fg=$g("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),gd=$g("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=We(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),H1={utf8:Fg,"utf-8":Fg,hex:Ns.base16,latin1:gd,ascii:gd,binary:gd,...Ns},Ra=H1;function B(r,e="utf8"){let t=Ra[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function M(r,e="utf8"){let t=Ra[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}var q1=parseInt("11111",2),yd=parseInt("10000000",2),z1=parseInt("01111111",2),Vg={0:Rs,1:Rs,2:G1,3:Y1,4:Z1,5:j1,6:W1,16:Rs,22:Rs,48:Rs};function At(r,e={offset:0}){let t=r[e.offset]&q1;if(e.offset++,Vg[t]!=null)return Vg[t](r,e);throw new Error("No decoder for tag "+t)}function Ms(r,e){let t=0;if((r[e.offset]&yd)===yd){let n=r[e.offset]&z1,o="0x";e.offset++;for(let s=0;s<n;s++,e.offset++)o+=r[e.offset].toString(16).padStart(2,"0");t=parseInt(o,16)}else t=r[e.offset],e.offset++;return t}function Rs(r,e){Ms(r,e);let t=[];for(;!(e.offset>=r.byteLength);){let n=At(r,e);if(n===null)break;t.push(n)}return t}function G1(r,e){let t=Ms(r,e),n=e.offset,o=e.offset+t,s=[];for(let i=n;i<o;i++)i===n&&r[i]===0||s.push(r[i]);return e.offset+=t,Uint8Array.from(s)}function W1(r,e){let t=Ms(r,e),n=e.offset+t,o=r[e.offset];e.offset++;let s=0,i=0;o<40?(s=0,i=o):o<80?(s=1,i=o-40):(s=2,i=o-80);let a=`${s}.${i}`,c=[];for(;e.offset<n;){let l=r[e.offset];if(e.offset++,c.push(l&127),l<128){c.reverse();let u=0;for(let f=0;f<c.length;f++)u+=c[f]<<f*7;a+=`.${u}`,c=[]}}return a}function j1(r,e){return e.offset++,null}function Y1(r,e){let t=Ms(r,e),n=r[e.offset];e.offset++;let o=r.subarray(e.offset,e.offset+t-1);if(e.offset+=t,n!==0)throw new Error("Unused bits in bit string is unimplemented");return o}function Z1(r,e){let t=Ms(r,e),n=r.subarray(e.offset,e.offset+t);return e.offset+=t,n}function X1(r){let e=r.toString(16);e.length%2===1&&(e="0"+e);let t=new se;for(let n=0;n<e.length;n+=2)t.append(Uint8Array.from([parseInt(`${e[n]}${e[n+1]}`,16)]));return t}function Ma(r){if(r.byteLength<128)return Uint8Array.from([r.byteLength]);let e=X1(r.byteLength);return new se(Uint8Array.from([e.byteLength|yd]),e)}function rt(r){let e=new se,t=128;return(r.subarray()[0]&t)===t&&e.append(Uint8Array.from([0])),e.append(r),new se(Uint8Array.from([2]),Ma(e),e)}function Os(r){let e=Uint8Array.from([0]),t=new se(e,r);return new se(Uint8Array.from([3]),Ma(t),t)}function Kg(r){return new se(Uint8Array.from([4]),Ma(r),r)}function Mt(r,e=48){let t=new se;for(let n of r)t.append(n);return new se(Uint8Array.from([e]),Ma(t),t)}var Hg="1.2.840.10045.3.1.7",qg="1.3.132.0.34",zg="1.3.132.0.35";async function Gg(r="P-256"){let e=await crypto.subtle.generateKey({name:"ECDSA",namedCurve:r},!0,["sign","verify"]);return{publicKey:await crypto.subtle.exportKey("jwk",e.publicKey),privateKey:await crypto.subtle.exportKey("jwk",e.privateKey)}}async function Wg(r,e,t){let n=await crypto.subtle.importKey("jwk",r,{name:"ECDSA",namedCurve:r.crv??"P-256"},!1,["sign"]);t?.signal?.throwIfAborted();let o=await crypto.subtle.sign({name:"ECDSA",hash:{name:"SHA-256"}},n,e.subarray());return t?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function jg(r,e,t,n){let o=await crypto.subtle.importKey("jwk",r,{name:"ECDSA",namedCurve:r.crv??"P-256"},!1,["verify"]);n?.signal?.throwIfAborted();let s=await crypto.subtle.verify({name:"ECDSA",hash:{name:"SHA-256"}},o,e,t.subarray());return n?.signal?.throwIfAborted(),s}var J1=Uint8Array.from([6,8,42,134,72,206,61,3,1,7]),Q1=Uint8Array.from([6,5,43,129,4,0,34]),eA=Uint8Array.from([6,5,43,129,4,0,35]),Yg={ext:!0,kty:"EC",crv:"P-256"},Zg={ext:!0,kty:"EC",crv:"P-384"},Xg={ext:!0,kty:"EC",crv:"P-521"},bo=32,xo=48,vo=66;function Jg(r){let e=At(r);return wd(e)}function wd(r){let e=r[1],t=M(e,"base64url"),n=r[2][1][0],o=1,s,i;if(e.byteLength===bo)return s=M(n.subarray(o,o+bo),"base64url"),i=M(n.subarray(o+bo),"base64url"),new xn({...Yg,key_ops:["sign"],d:t,x:s,y:i});if(e.byteLength===xo)return s=M(n.subarray(o,o+xo),"base64url"),i=M(n.subarray(o+xo),"base64url"),new xn({...Zg,key_ops:["sign"],d:t,x:s,y:i});if(e.byteLength===vo)return s=M(n.subarray(o,o+vo),"base64url"),i=M(n.subarray(o+vo),"base64url"),new xn({...Xg,key_ops:["sign"],d:t,x:s,y:i});throw new k(`Private key length was wrong length, got ${e.byteLength}, expected 32, 48 or 66`)}function bd(r){let e=At(r);return Qg(e)}function Qg(r){let e=r[1][1][0],t=1,n,o;if(e.byteLength===bo*2+1)return n=M(e.subarray(t,t+bo),"base64url"),o=M(e.subarray(t+bo),"base64url"),new bn({...Yg,key_ops:["verify"],x:n,y:o});if(e.byteLength===xo*2+1)return n=M(e.subarray(t,t+xo),"base64url"),o=M(e.subarray(t+xo),"base64url"),new bn({...Zg,key_ops:["verify"],x:n,y:o});if(e.byteLength===vo*2+1)return n=M(e.subarray(t,t+vo),"base64url"),o=M(e.subarray(t+vo),"base64url"),new bn({...Xg,key_ops:["verify"],x:n,y:o});throw new k(`coordinates were wrong length, got ${e.byteLength}, expected 65, 97 or 133`)}function ey(r){return Mt([rt(Uint8Array.from([1])),Kg(B(r.d??"","base64url")),Mt([ry(r.crv)],160),Mt([Os(new se(Uint8Array.from([4]),B(r.x??"","base64url"),B(r.y??"","base64url")))],161)]).subarray()}function ty(r){return Mt([rt(Uint8Array.from([1])),Mt([ry(r.crv)],160),Mt([Os(new se(Uint8Array.from([4]),B(r.x??"","base64url"),B(r.y??"","base64url")))],161)]).subarray()}function ry(r){if(r==="P-256")return J1;if(r==="P-384")return Q1;if(r==="P-521")return eA;throw new k(`Invalid curve ${r}`)}async function ny(r="P-256"){let e=await Gg(r);return new xn(e.privateKey)}var bn=class{type="ECDSA";jwk;_raw;constructor(e){this.jwk=e}get raw(){return this._raw==null&&(this._raw=ty(this.jwk)),this._raw}toMultihash(){return Ge.digest(St(this))}toCID(){return H.createV1(114,this.toMultihash())}toString(){return le.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:X(this.raw,e.raw)}async verify(e,t,n){return jg(this.jwk,t,e,n)}},xn=class{type="ECDSA";jwk;publicKey;_raw;constructor(e){this.jwk=e,this.publicKey=new bn({crv:e.crv,ext:e.ext,key_ops:["verify"],kty:"EC",x:e.x,y:e.y})}get raw(){return this._raw==null&&(this._raw=ey(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:X(this.raw,e.raw)}async sign(e,t){return Wg(this.jwk,e,t)}};function vn(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function it(r,e=""){if(!Number.isSafeInteger(r)||r<0){let t=e&&`"${e}" `;throw new Error(`${t}expected integer >= 0, got ${r}`)}}function J(r,e,t=""){let n=vn(r),o=r?.length,s=e!==void 0;if(!n||s&&o!==e){let i=t&&`"${t}" `,a=s?` of length ${e}`:"",c=n?`length=${o}`:`type=${typeof r}`;throw new Error(i+"expected Uint8Array"+a+", got "+c)}return r}function Eo(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash must wrapped by utils.createHasher");it(r.outputLen),it(r.blockLen)}function Ao(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function sy(r,e){J(r,void 0,"digestInto() output");let t=e.outputLen;if(r.length<t)throw new Error('"digestInto() output" expected to be of length >='+t)}function at(...r){for(let e=0;e<r.length;e++)r[e].fill(0)}function En(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function Ot(r,e){return r<<32-e|r>>>e}function Oa(r,e){return r<<e|r>>>32-e>>>0}var iy=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",tA=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function br(r){if(J(r),iy)return r.toHex();let e="";for(let t=0;t<r.length;t++)e+=tA[r[t]];return e}var wr={_0:48,_9:57,A:65,F:70,a:97,f:102};function oy(r){if(r>=wr._0&&r<=wr._9)return r-wr._0;if(r>=wr.A&&r<=wr.F)return r-(wr.A-10);if(r>=wr.a&&r<=wr.f)return r-(wr.a-10)}function xr(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);if(iy)return Uint8Array.fromHex(r);let e=r.length,t=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(t);for(let o=0,s=0;o<t;o++,s+=2){let i=oy(r.charCodeAt(s)),a=oy(r.charCodeAt(s+1));if(i===void 0||a===void 0){let c=r[s]+r[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}n[o]=i*16+a}return n}var rA=async()=>{};async function ay(r,e,t){let n=Date.now();for(let o=0;o<r;o++){t(o);let s=Date.now()-n;s>=0&&s<e||(await rA(),n+=s)}}function nA(r){if(typeof r!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}function xd(r,e=""){return typeof r=="string"?nA(r):J(r,void 0,e)}function ct(...r){let e=0;for(let n=0;n<r.length;n++){let o=r[n];J(o),e+=o.length}let t=new Uint8Array(e);for(let n=0,o=0;n<r.length;n++){let s=r[n];t.set(s,o),o+=s.length}return t}function cy(r,e){if(e!==void 0&&{}.toString.call(e)!=="[object Object]")throw new Error("options must be object or undefined");return Object.assign(r,e)}function Us(r,e={}){let t=(o,s)=>r(s).update(o).digest(),n=r(void 0);return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=o=>r(o),Object.assign(t,e),Object.freeze(t)}function Hr(r=32){let e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");return e.getRandomValues(new Uint8Array(r))}var vd=r=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,r])});function Ua(r,e,t){return r&e^~r&t}function Fa(r,e,t){return r&e^r&t^e&t}var An=class{blockLen;outputLen;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,t,n,o){this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(e),this.view=En(this.buffer)}update(e){Ao(this),J(e);let{view:t,buffer:n,blockLen:o}=this,s=e.length;for(let i=0;i<s;){let a=Math.min(o-this.pos,s-i);if(a===o){let c=En(e);for(;o<=s-i;i+=o)this.process(c,i);continue}n.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Ao(this),sy(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:o,isLE:s}=this,{pos:i}=this;t[i++]=128,at(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(n,0),i=0);for(let f=i;f<o;f++)t[f]=0;n.setBigUint64(o-8,BigInt(this.length*8),s),this.process(n,0);let a=En(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen must be aligned to 32bit");let l=c/4,u=this.get();if(l>u.length)throw new Error("_sha2: outputLen bigger than state");for(let f=0;f<l;f++)a.setUint32(4*f,u[f],s)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||=new this.constructor,e.set(...this.get());let{blockLen:t,buffer:n,length:o,finished:s,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=s,e.length=o,e.pos=a,o%t&&e.buffer.set(n),e}clone(){return this._cloneInto()}},vr=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var Me=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]);var $a=BigInt(4294967295),ly=BigInt(32);function oA(r,e=!1){return e?{h:Number(r&$a),l:Number(r>>ly&$a)}:{h:Number(r>>ly&$a)|0,l:Number(r&$a)|0}}function uy(r,e=!1){let t=r.length,n=new Uint32Array(t),o=new Uint32Array(t);for(let s=0;s<t;s++){let{h:i,l:a}=oA(r[s],e);[n[s],o[s]]=[i,a]}return[n,o]}var Ed=(r,e,t)=>r>>>t,Ad=(r,e,t)=>r<<32-t|e>>>t,Sn=(r,e,t)=>r>>>t|e<<32-t,In=(r,e,t)=>r<<32-t|e>>>t,Fs=(r,e,t)=>r<<64-t|e>>>t-32,$s=(r,e,t)=>r>>>t-32|e<<64-t;function ar(r,e,t,n){let o=(e>>>0)+(n>>>0);return{h:r+t+(o/2**32|0)|0,l:o|0}}var fy=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),dy=(r,e,t,n)=>e+t+n+(r/2**32|0)|0,hy=(r,e,t,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0),py=(r,e,t,n,o)=>e+t+n+o+(r/2**32|0)|0,my=(r,e,t,n,o)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(o>>>0),gy=(r,e,t,n,o,s)=>e+t+n+o+s+(r/2**32|0)|0;var iA=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),qr=new Uint32Array(64),Sd=class extends An{constructor(e){super(64,e,8,!1)}get(){let{A:e,B:t,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[e,t,n,o,s,i,a,c]}set(e,t,n,o,s,i,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,t){for(let f=0;f<16;f++,t+=4)qr[f]=e.getUint32(t,!1);for(let f=16;f<64;f++){let d=qr[f-15],h=qr[f-2],p=Ot(d,7)^Ot(d,18)^d>>>3,g=Ot(h,17)^Ot(h,19)^h>>>10;qr[f]=g+qr[f-7]+p+qr[f-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:l,H:u}=this;for(let f=0;f<64;f++){let d=Ot(a,6)^Ot(a,11)^Ot(a,25),h=u+d+Ua(a,c,l)+iA[f]+qr[f]|0,g=(Ot(n,2)^Ot(n,13)^Ot(n,22))+Fa(n,o,s)|0;u=l,l=c,c=a,a=i+h|0,i=s,s=o,o=n,n=h+g|0}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,u=u+this.H|0,this.set(n,o,s,i,a,c,l,u)}roundClean(){at(qr)}destroy(){this.set(0,0,0,0,0,0,0,0),at(this.buffer)}},Id=class extends Sd{A=vr[0]|0;B=vr[1]|0;C=vr[2]|0;D=vr[3]|0;E=vr[4]|0;F=vr[5]|0;G=vr[6]|0;H=vr[7]|0;constructor(){super(32)}};var yy=uy(["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(r=>BigInt(r))),aA=yy[0],cA=yy[1],zr=new Uint32Array(80),Gr=new Uint32Array(80),kd=class extends An{constructor(e){super(128,e,16,!1)}get(){let{Ah:e,Al:t,Bh:n,Bl:o,Ch:s,Cl:i,Dh:a,Dl:c,Eh:l,El:u,Fh:f,Fl:d,Gh:h,Gl:p,Hh:g,Hl:w}=this;return[e,t,n,o,s,i,a,c,l,u,f,d,h,p,g,w]}set(e,t,n,o,s,i,a,c,l,u,f,d,h,p,g,w){this.Ah=e|0,this.Al=t|0,this.Bh=n|0,this.Bl=o|0,this.Ch=s|0,this.Cl=i|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=u|0,this.Fh=f|0,this.Fl=d|0,this.Gh=h|0,this.Gl=p|0,this.Hh=g|0,this.Hl=w|0}process(e,t){for(let S=0;S<16;S++,t+=4)zr[S]=e.getUint32(t),Gr[S]=e.getUint32(t+=4);for(let S=16;S<80;S++){let D=zr[S-15]|0,K=Gr[S-15]|0,Y=Sn(D,K,1)^Sn(D,K,8)^Ed(D,K,7),G=In(D,K,1)^In(D,K,8)^Ad(D,K,7),x=zr[S-2]|0,v=Gr[S-2]|0,P=Sn(x,v,19)^Fs(x,v,61)^Ed(x,v,6),N=In(x,v,19)^$s(x,v,61)^Ad(x,v,6),C=hy(G,N,Gr[S-7],Gr[S-16]),E=py(C,Y,P,zr[S-7],zr[S-16]);zr[S]=E|0,Gr[S]=C|0}let{Ah:n,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:l,Dl:u,Eh:f,El:d,Fh:h,Fl:p,Gh:g,Gl:w,Hh:b,Hl:T}=this;for(let S=0;S<80;S++){let D=Sn(f,d,14)^Sn(f,d,18)^Fs(f,d,41),K=In(f,d,14)^In(f,d,18)^$s(f,d,41),Y=f&h^~f&g,G=d&p^~d&w,x=my(T,K,G,cA[S],Gr[S]),v=gy(x,b,D,Y,aA[S],zr[S]),P=x|0,N=Sn(n,o,28)^Fs(n,o,34)^Fs(n,o,39),C=In(n,o,28)^$s(n,o,34)^$s(n,o,39),E=n&s^n&a^s&a,A=o&i^o&c^i&c;b=g|0,T=w|0,g=h|0,w=p|0,h=f|0,p=d|0,{h:f,l:d}=ar(l|0,u|0,v|0,P|0),l=a|0,u=c|0,a=s|0,c=i|0,s=n|0,i=o|0;let y=fy(P,C,A);n=dy(y,v,N,E),o=y|0}({h:n,l:o}=ar(this.Ah|0,this.Al|0,n|0,o|0)),{h:s,l:i}=ar(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=ar(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:u}=ar(this.Dh|0,this.Dl|0,l|0,u|0),{h:f,l:d}=ar(this.Eh|0,this.El|0,f|0,d|0),{h,l:p}=ar(this.Fh|0,this.Fl|0,h|0,p|0),{h:g,l:w}=ar(this.Gh|0,this.Gl|0,g|0,w|0),{h:b,l:T}=ar(this.Hh|0,this.Hl|0,b|0,T|0),this.set(n,o,s,i,a,c,l,u,f,d,h,p,g,w,b,T)}roundClean(){at(zr,Gr)}destroy(){at(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},_d=class extends kd{Ah=Me[0]|0;Al=Me[1]|0;Bh=Me[2]|0;Bl=Me[3]|0;Ch=Me[4]|0;Cl=Me[5]|0;Dh=Me[6]|0;Dl=Me[7]|0;Eh=Me[8]|0;El=Me[9]|0;Fh=Me[10]|0;Fl=Me[11]|0;Gh=Me[12]|0;Gl=Me[13]|0;Hh=Me[14]|0;Hl=Me[15]|0;constructor(){super(64)}};var Wr=Us(()=>new Id,vd(1));var jr=Us(()=>new _d,vd(3));var Td=BigInt(0),Cd=BigInt(1);function Er(r,e=""){if(typeof r!="boolean"){let t=e&&`"${e}" `;throw new Error(t+"expected boolean, got type="+typeof r)}return r}function wy(r){if(typeof r=="bigint"){if(!Va(r))throw new Error("positive bigint expected, got "+r)}else it(r);return r}function Vs(r){let e=wy(r).toString(16);return e.length&1?"0"+e:e}function by(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return r===""?Td:BigInt("0x"+r)}function So(r){return by(br(r))}function kn(r){return by(br(Ha(J(r)).reverse()))}function Ka(r,e){it(e),r=wy(r);let t=xr(r.toString(16).padStart(e*2,"0"));if(t.length!==e)throw new Error("number too large");return t}function Bd(r,e){return Ka(r,e).reverse()}function Ha(r){return Uint8Array.from(r)}var Va=r=>typeof r=="bigint"&&Td<=r;function lA(r,e,t){return Va(r)&&Va(e)&&Va(t)&&e<=r&&r<t}function Ks(r,e,t,n){if(!lA(e,t,n))throw new Error("expected valid "+r+": "+t+" <= n < "+n+", got "+e)}function Ld(r){let e;for(e=0;r>Td;r>>=Cd,e+=1);return e}var Hs=r=>(Cd<<BigInt(r))-Cd;function xy(r,e,t){if(it(r,"hashLen"),it(e,"qByteLen"),typeof t!="function")throw new Error("hmacFn must be a function");let n=w=>new Uint8Array(w),o=Uint8Array.of(),s=Uint8Array.of(0),i=Uint8Array.of(1),a=1e3,c=n(r),l=n(r),u=0,f=()=>{c.fill(1),l.fill(0),u=0},d=(...w)=>t(l,ct(c,...w)),h=(w=o)=>{l=d(s,w),c=d(),w.length!==0&&(l=d(i,w),c=d())},p=()=>{if(u++>=a)throw new Error("drbg: tried max amount of iterations");let w=0,b=[];for(;w<e;){c=d();let T=c.slice();b.push(T),w+=c.length}return ct(...b)};return(w,b)=>{f(),h(w);let T;for(;!(T=b(p()));)h();return f(),T}}function Yr(r,e={},t={}){if(!r||typeof r!="object")throw new Error("expected valid options object");function n(s,i,a){let c=r[s];if(a&&c===void 0)return;let l=typeof c;if(l!==i||c===null)throw new Error(`param "${s}" is invalid: expected ${i}, got ${l}`)}let o=(s,i)=>Object.entries(s).forEach(([a,c])=>n(a,c,i));o(e,!1),o(t,!0)}function Io(r){let e=new WeakMap;return(t,...n)=>{let o=e.get(t);if(o!==void 0)return o;let s=r(t,...n);return e.set(t,s),s}}var nt=BigInt(0),Be=BigInt(1),_n=BigInt(2),Ay=BigInt(3),Sy=BigInt(4),Iy=BigInt(5),uA=BigInt(7),ky=BigInt(8),fA=BigInt(9),_y=BigInt(16);function Ee(r,e){let t=r%e;return t>=nt?t:e+t}function me(r,e,t){let n=r;for(;e-- >nt;)n*=n,n%=t;return n}function vy(r,e){if(r===nt)throw new Error("invert: expected non-zero number");if(e<=nt)throw new Error("invert: expected positive modulus, got "+e);let t=Ee(r,e),n=e,o=nt,s=Be,i=Be,a=nt;for(;t!==nt;){let l=n/t,u=n%t,f=o-i*l,d=s-a*l;n=t,t=u,o=i,s=a,i=f,a=d}if(n!==Be)throw new Error("invert: does not exist");return Ee(o,e)}function Dd(r,e,t){if(!r.eql(r.sqr(e),t))throw new Error("Cannot find square root")}function Cy(r,e){let t=(r.ORDER+Be)/Sy,n=r.pow(e,t);return Dd(r,n,e),n}function dA(r,e){let t=(r.ORDER-Iy)/ky,n=r.mul(e,_n),o=r.pow(n,t),s=r.mul(e,o),i=r.mul(r.mul(s,_n),o),a=r.mul(s,r.sub(i,r.ONE));return Dd(r,a,e),a}function hA(r){let e=ko(r),t=Ty(r),n=t(e,e.neg(e.ONE)),o=t(e,n),s=t(e,e.neg(n)),i=(r+uA)/_y;return(a,c)=>{let l=a.pow(c,i),u=a.mul(l,n),f=a.mul(l,o),d=a.mul(l,s),h=a.eql(a.sqr(u),c),p=a.eql(a.sqr(f),c);l=a.cmov(l,u,h),u=a.cmov(d,f,p);let g=a.eql(a.sqr(u),c),w=a.cmov(l,u,g);return Dd(a,w,c),w}}function Ty(r){if(r<Ay)throw new Error("sqrt is not defined for small field");let e=r-Be,t=0;for(;e%_n===nt;)e/=_n,t++;let n=_n,o=ko(r);for(;Ey(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(t===1)return Cy;let s=o.pow(n,e),i=(e+Be)/_n;return function(c,l){if(c.is0(l))return l;if(Ey(c,l)!==1)throw new Error("Cannot find square root");let u=t,f=c.mul(c.ONE,s),d=c.pow(l,e),h=c.pow(l,i);for(;!c.eql(d,c.ONE);){if(c.is0(d))return c.ZERO;let p=1,g=c.sqr(d);for(;!c.eql(g,c.ONE);)if(p++,g=c.sqr(g),p===u)throw new Error("Cannot find square root");let w=Be<<BigInt(u-p-1),b=c.pow(f,w);u=p,f=c.sqr(b),d=c.mul(d,f),h=c.mul(h,b)}return h}}function pA(r){return r%Sy===Ay?Cy:r%ky===Iy?dA:r%_y===fA?hA(r):Ty(r)}var By=(r,e)=>(Ee(r,e)&Be)===Be,mA=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Nd(r){let e={ORDER:"bigint",BYTES:"number",BITS:"number"},t=mA.reduce((n,o)=>(n[o]="function",n),e);return Yr(r,t),r}function gA(r,e,t){if(t<nt)throw new Error("invalid exponent, negatives unsupported");if(t===nt)return r.ONE;if(t===Be)return e;let n=r.ONE,o=e;for(;t>nt;)t&Be&&(n=r.mul(n,o)),o=r.sqr(o),t>>=Be;return n}function qs(r,e,t=!1){let n=new Array(e.length).fill(t?r.ZERO:void 0),o=e.reduce((i,a,c)=>r.is0(a)?i:(n[c]=i,r.mul(i,a)),r.ONE),s=r.inv(o);return e.reduceRight((i,a,c)=>r.is0(a)?i:(n[c]=r.mul(i,n[c]),r.mul(i,a)),s),n}function Ey(r,e){let t=(r.ORDER-Be)/_n,n=r.pow(e,t),o=r.eql(n,r.ONE),s=r.eql(n,r.ZERO),i=r.eql(n,r.neg(r.ONE));if(!o&&!s&&!i)throw new Error("invalid Legendre symbol result");return o?1:s?0:-1}function yA(r,e){e!==void 0&&it(e);let t=e!==void 0?e:r.toString(2).length,n=Math.ceil(t/8);return{nBitLength:t,nByteLength:n}}var Pd=class{ORDER;BITS;BYTES;isLE;ZERO=nt;ONE=Be;_lengths;_sqrt;_mod;constructor(e,t={}){if(e<=nt)throw new Error("invalid field: expected ORDER > 0, got "+e);let n;this.isLE=!1,t!=null&&typeof t=="object"&&(typeof t.BITS=="number"&&(n=t.BITS),typeof t.sqrt=="function"&&(this.sqrt=t.sqrt),typeof t.isLE=="boolean"&&(this.isLE=t.isLE),t.allowedLengths&&(this._lengths=t.allowedLengths?.slice()),typeof t.modFromBytes=="boolean"&&(this._mod=t.modFromBytes));let{nBitLength:o,nByteLength:s}=yA(e,n);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=e,this.BITS=o,this.BYTES=s,this._sqrt=void 0,Object.preventExtensions(this)}create(e){return Ee(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof e);return nt<=e&&e<this.ORDER}is0(e){return e===nt}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&Be)===Be}neg(e){return Ee(-e,this.ORDER)}eql(e,t){return e===t}sqr(e){return Ee(e*e,this.ORDER)}add(e,t){return Ee(e+t,this.ORDER)}sub(e,t){return Ee(e-t,this.ORDER)}mul(e,t){return Ee(e*t,this.ORDER)}pow(e,t){return gA(this,e,t)}div(e,t){return Ee(e*vy(t,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,t){return e+t}subN(e,t){return e-t}mulN(e,t){return e*t}inv(e){return vy(e,this.ORDER)}sqrt(e){return this._sqrt||(this._sqrt=pA(this.ORDER)),this._sqrt(this,e)}toBytes(e){return this.isLE?Bd(e,this.BYTES):Ka(e,this.BYTES)}fromBytes(e,t=!1){J(e);let{_lengths:n,BYTES:o,isLE:s,ORDER:i,_mod:a}=this;if(n){if(!n.includes(e.length)||e.length>o)throw new Error("Field.fromBytes: expected "+n+" bytes, got "+e.length);let l=new Uint8Array(o);l.set(e,s?0:l.length-e.length),e=l}if(e.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+e.length);let c=s?kn(e):So(e);if(a&&(c=Ee(c,i)),!t&&!this.isValid(c))throw new Error("invalid field element: outside of range 0..ORDER");return c}invertBatch(e){return qs(this,e)}cmov(e,t,n){return n?t:e}};function ko(r,e={}){return new Pd(r,e)}function Ly(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let e=r.toString(2).length;return Math.ceil(e/8)}function Rd(r){let e=Ly(r);return e+Math.ceil(e/2)}function Md(r,e,t=!1){J(r);let n=r.length,o=Ly(e),s=Rd(e);if(n<16||n<s||n>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+n);let i=t?kn(r):So(r),a=Ee(i,e-Be)+Be;return t?Bd(a,o):Ka(a,o)}var _o=BigInt(0),Cn=BigInt(1);function zs(r,e){let t=e.negate();return r?t:e}function Tn(r,e){let t=qs(r.Fp,e.map(n=>n.Z));return e.map((n,o)=>r.fromAffine(n.toAffine(t[o])))}function Ry(r,e){if(!Number.isSafeInteger(r)||r<=0||r>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+r)}function Od(r,e){Ry(r,e);let t=Math.ceil(e/r)+1,n=2**(r-1),o=2**r,s=Hs(r),i=BigInt(r);return{windows:t,windowSize:n,mask:s,maxNumber:o,shiftBy:i}}function Py(r,e,t){let{windowSize:n,mask:o,maxNumber:s,shiftBy:i}=t,a=Number(r&o),c=r>>i;a>n&&(a-=s,c+=Cn);let l=e*n,u=l+Math.abs(a)-1,f=a===0,d=a<0,h=e%2!==0;return{nextN:c,offset:u,isZero:f,isNeg:d,isNegF:h,offsetF:l}}var Ud=new WeakMap,My=new WeakMap;function Fd(r){return My.get(r)||1}function Dy(r){if(r!==_o)throw new Error("invalid wNAF")}var Co=class{BASE;ZERO;Fn;bits;constructor(e,t){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=t}_unsafeLadder(e,t,n=this.ZERO){let o=e;for(;t>_o;)t&Cn&&(n=n.add(o)),o=o.double(),t>>=Cn;return n}precomputeWindow(e,t){let{windows:n,windowSize:o}=Od(t,this.bits),s=[],i=e,a=i;for(let c=0;c<n;c++){a=i,s.push(a);for(let l=1;l<o;l++)a=a.add(i),s.push(a);i=a.double()}return s}wNAF(e,t,n){if(!this.Fn.isValid(n))throw new Error("invalid scalar");let o=this.ZERO,s=this.BASE,i=Od(e,this.bits);for(let a=0;a<i.windows;a++){let{nextN:c,offset:l,isZero:u,isNeg:f,isNegF:d,offsetF:h}=Py(n,a,i);n=c,u?s=s.add(zs(d,t[h])):o=o.add(zs(f,t[l]))}return Dy(n),{p:o,f:s}}wNAFUnsafe(e,t,n,o=this.ZERO){let s=Od(e,this.bits);for(let i=0;i<s.windows&&n!==_o;i++){let{nextN:a,offset:c,isZero:l,isNeg:u}=Py(n,i,s);if(n=a,!l){let f=t[c];o=o.add(u?f.negate():f)}}return Dy(n),o}getPrecomputes(e,t,n){let o=Ud.get(t);return o||(o=this.precomputeWindow(t,e),e!==1&&(typeof n=="function"&&(o=n(o)),Ud.set(t,o))),o}cached(e,t,n){let o=Fd(e);return this.wNAF(o,this.getPrecomputes(o,e,n),t)}unsafe(e,t,n,o){let s=Fd(e);return s===1?this._unsafeLadder(e,t,o):this.wNAFUnsafe(s,this.getPrecomputes(s,e,n),t,o)}createCache(e,t){Ry(t,this.bits),My.set(e,t),Ud.delete(e)}hasCache(e){return Fd(e)!==1}};function Oy(r,e,t,n){let o=e,s=r.ZERO,i=r.ZERO;for(;t>_o||n>_o;)t&Cn&&(s=s.add(o)),n&Cn&&(i=i.add(o)),o=o.double(),t>>=Cn,n>>=Cn;return{p1:s,p2:i}}function Ny(r,e,t){if(e){if(e.ORDER!==r)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return Nd(e),e}else return ko(r,{isLE:t})}function qa(r,e,t={},n){if(n===void 0&&(n=r==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${r} CURVE object`);for(let c of["p","n","h"]){let l=e[c];if(!(typeof l=="bigint"&&l>_o))throw new Error(`CURVE.${c} must be positive bigint`)}let o=Ny(e.p,t.Fp,n),s=Ny(e.n,t.Fn,n),a=["Gx","Gy","a",r==="weierstrass"?"b":"d"];for(let c of a)if(!o.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:s}}function za(r,e){return function(n){let o=r(n);return{secretKey:o,publicKey:e(o)}}}var Zr=BigInt(0),Le=BigInt(1),$d=BigInt(2),wA=BigInt(8);function bA(r,e,t,n){let o=r.sqr(t),s=r.sqr(n),i=r.add(r.mul(e.a,o),s),a=r.add(r.ONE,r.mul(e.d,r.mul(o,s)));return r.eql(i,a)}function Uy(r,e={}){let t=qa("edwards",r,e,e.FpFnLE),{Fp:n,Fn:o}=t,s=t.CURVE,{h:i}=s;Yr(e,{},{uvRatio:"function"});let a=$d<<BigInt(o.BYTES*8)-Le,c=w=>n.create(w),l=e.uvRatio||((w,b)=>{try{return{isValid:!0,value:n.sqrt(n.div(w,b))}}catch{return{isValid:!1,value:Zr}}});if(!bA(n,s,s.Gx,s.Gy))throw new Error("bad curve params: generator point");function u(w,b,T=!1){let S=T?Le:Zr;return Ks("coordinate "+w,b,S,a),b}function f(w){if(!(w instanceof p))throw new Error("EdwardsPoint expected")}let d=Io((w,b)=>{let{X:T,Y:S,Z:D}=w,K=w.is0();b==null&&(b=K?wA:n.inv(D));let Y=c(T*b),G=c(S*b),x=n.mul(D,b);if(K)return{x:Zr,y:Le};if(x!==Le)throw new Error("invZ was invalid");return{x:Y,y:G}}),h=Io(w=>{let{a:b,d:T}=s;if(w.is0())throw new Error("bad point: ZERO");let{X:S,Y:D,Z:K,T:Y}=w,G=c(S*S),x=c(D*D),v=c(K*K),P=c(v*v),N=c(G*b),C=c(v*c(N+x)),E=c(P+c(T*c(G*x)));if(C!==E)throw new Error("bad point: equation left != right (1)");let A=c(S*D),y=c(K*Y);if(A!==y)throw new Error("bad point: equation left != right (2)");return!0});class p{static BASE=new p(s.Gx,s.Gy,Le,c(s.Gx*s.Gy));static ZERO=new p(Zr,Le,Le,Zr);static Fp=n;static Fn=o;X;Y;Z;T;constructor(b,T,S,D){this.X=u("x",b),this.Y=u("y",T),this.Z=u("z",S,!0),this.T=u("t",D),Object.freeze(this)}static CURVE(){return s}static fromAffine(b){if(b instanceof p)throw new Error("extended point not allowed");let{x:T,y:S}=b||{};return u("x",T),u("y",S),new p(T,S,Le,c(T*S))}static fromBytes(b,T=!1){let S=n.BYTES,{a:D,d:K}=s;b=Ha(J(b,S,"point")),Er(T,"zip215");let Y=Ha(b),G=b[S-1];Y[S-1]=G&-129;let x=kn(Y),v=T?a:n.ORDER;Ks("point.y",x,Zr,v);let P=c(x*x),N=c(P-Le),C=c(K*P-D),{isValid:E,value:A}=l(N,C);if(!E)throw new Error("bad point: invalid y coordinate");let y=(A&Le)===Le,_=(G&128)!==0;if(!T&&A===Zr&&_)throw new Error("bad point: x=0 and x_0=1");return _!==y&&(A=c(-A)),p.fromAffine({x:A,y:x})}static fromHex(b,T=!1){return p.fromBytes(xr(b),T)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(b=8,T=!0){return g.createCache(this,b),T||this.multiply($d),this}assertValidity(){h(this)}equals(b){f(b);let{X:T,Y:S,Z:D}=this,{X:K,Y,Z:G}=b,x=c(T*G),v=c(K*D),P=c(S*G),N=c(Y*D);return x===v&&P===N}is0(){return this.equals(p.ZERO)}negate(){return new p(c(-this.X),this.Y,this.Z,c(-this.T))}double(){let{a:b}=s,{X:T,Y:S,Z:D}=this,K=c(T*T),Y=c(S*S),G=c($d*c(D*D)),x=c(b*K),v=T+S,P=c(c(v*v)-K-Y),N=x+Y,C=N-G,E=x-Y,A=c(P*C),y=c(N*E),_=c(P*E),R=c(C*N);return new p(A,y,R,_)}add(b){f(b);let{a:T,d:S}=s,{X:D,Y:K,Z:Y,T:G}=this,{X:x,Y:v,Z:P,T:N}=b,C=c(D*x),E=c(K*v),A=c(G*S*N),y=c(Y*P),_=c((D+K)*(x+v)-C-E),R=y-A,O=y+A,$=c(E-T*C),V=c(_*R),z=c(O*$),Z=c(_*$),ye=c(R*O);return new p(V,z,ye,Z)}subtract(b){return this.add(b.negate())}multiply(b){if(!o.isValidNot0(b))throw new Error("invalid scalar: expected 1 <= sc < curve.n");let{p:T,f:S}=g.cached(this,b,D=>Tn(p,D));return Tn(p,[T,S])[0]}multiplyUnsafe(b,T=p.ZERO){if(!o.isValid(b))throw new Error("invalid scalar: expected 0 <= sc < curve.n");return b===Zr?p.ZERO:this.is0()||b===Le?this:g.unsafe(this,b,S=>Tn(p,S),T)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}isTorsionFree(){return g.unsafe(this,s.n).is0()}toAffine(b){return d(this,b)}clearCofactor(){return i===Le?this:this.multiplyUnsafe(i)}toBytes(){let{x:b,y:T}=this.toAffine(),S=n.toBytes(T);return S[S.length-1]|=b&Le?128:0,S}toHex(){return br(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}let g=new Co(p,o.BITS);return p.BASE.precompute(8),p}function Fy(r,e,t={}){if(typeof e!="function")throw new Error('"hash" function param is required');Yr(t,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",mapToCurve:"function"});let{prehash:n}=t,{BASE:o,Fp:s,Fn:i}=r,a=t.randomBytes||Hr,c=t.adjustScalarBytes||(x=>x),l=t.domain||((x,v,P)=>{if(Er(P,"phflag"),v.length||P)throw new Error("Contexts/pre-hash are not supported");return x});function u(x){return i.create(kn(x))}function f(x){let v=S.secretKey;J(x,S.secretKey,"secretKey");let P=J(e(x),2*v,"hashedSecretKey"),N=c(P.slice(0,v)),C=P.slice(v,2*v),E=u(N);return{head:N,prefix:C,scalar:E}}function d(x){let{head:v,prefix:P,scalar:N}=f(x),C=o.multiply(N),E=C.toBytes();return{head:v,prefix:P,scalar:N,point:C,pointBytes:E}}function h(x){return d(x).pointBytes}function p(x=Uint8Array.of(),...v){let P=ct(...v);return u(e(l(P,J(x,void 0,"context"),!!n)))}function g(x,v,P={}){x=J(x,void 0,"message"),n&&(x=n(x));let{prefix:N,scalar:C,pointBytes:E}=d(v),A=p(P.context,N,x),y=o.multiply(A).toBytes(),_=p(P.context,y,E,x),R=i.create(A+_*C);if(!i.isValid(R))throw new Error("sign failed: invalid s");let O=ct(y,i.toBytes(R));return J(O,S.signature,"result")}let w={zip215:!0};function b(x,v,P,N=w){let{context:C,zip215:E}=N,A=S.signature;x=J(x,A,"signature"),v=J(v,void 0,"message"),P=J(P,S.publicKey,"publicKey"),E!==void 0&&Er(E,"zip215"),n&&(v=n(v));let y=A/2,_=x.subarray(0,y),R=kn(x.subarray(y,A)),O,$,V;try{O=r.fromBytes(P,E),$=r.fromBytes(_,E),V=o.multiplyUnsafe(R)}catch{return!1}if(!E&&O.isSmallOrder())return!1;let z=p(C,$.toBytes(),O.toBytes(),v);return $.add(O.multiplyUnsafe(z)).subtract(V).clearCofactor().is0()}let T=s.BYTES,S={secretKey:T,publicKey:T,signature:2*T,seed:T};function D(x=a(S.seed)){return J(x,S.seed,"seed")}function K(x){return vn(x)&&x.length===i.BYTES}function Y(x,v){try{return!!r.fromBytes(x,v)}catch{return!1}}let G={getExtendedPublicKey:d,randomSecretKey:D,isValidSecretKey:K,isValidPublicKey:Y,toMontgomery(x){let{y:v}=r.fromBytes(x),P=S.publicKey,N=P===32;if(!N&&P!==57)throw new Error("only defined for 25519 and 448");let C=N?s.div(Le+v,Le-v):s.div(v-Le,v+Le);return s.toBytes(C)},toMontgomerySecret(x){let v=S.secretKey;J(x,v);let P=e(x.subarray(0,v));return c(P).subarray(0,v)}};return Object.freeze({keygen:za(D,h),getPublicKey:h,sign:g,verify:b,utils:G,Point:r,lengths:S})}var xA=BigInt(1),$y=BigInt(2);var vA=BigInt(5),EA=BigInt(8),Vd=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),AA={p:Vd,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:EA,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function SA(r){let e=BigInt(10),t=BigInt(20),n=BigInt(40),o=BigInt(80),s=Vd,a=r*r%s*r%s,c=me(a,$y,s)*a%s,l=me(c,xA,s)*r%s,u=me(l,vA,s)*l%s,f=me(u,e,s)*u%s,d=me(f,t,s)*f%s,h=me(d,n,s)*d%s,p=me(h,o,s)*h%s,g=me(p,o,s)*h%s,w=me(g,e,s)*u%s;return{pow_p_5_8:me(w,$y,s)*r%s,b2:a}}function IA(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}var Vy=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function kA(r,e){let t=Vd,n=Ee(e*e*e,t),o=Ee(n*n*e,t),s=SA(r*o).pow_p_5_8,i=Ee(r*n*s,t),a=Ee(e*i*i,t),c=i,l=Ee(i*Vy,t),u=a===r,f=a===Ee(-r,t),d=a===Ee(-r*Vy,t);return u&&(i=c),(f||d)&&(i=l),By(i,t)&&(i=Ee(-i,t)),{isValid:u||f,value:i}}var _A=Uy(AA,{uvRatio:kA});function CA(r){return Fy(_A,jr,Object.assign({adjustScalarBytes:IA},r))}var Gs=CA({});var Bn=32,pt=64,Kd=32;var To,Ky=(async()=>{try{return await Se.get().subtle.generateKey({name:"Ed25519"},!0,["sign","verify"]),!0}catch{return!1}})();function Hy(){let r=Gs.utils.randomSecretKey(),e=Gs.getPublicKey(r);return{privateKey:DA(r,e),publicKey:e}}async function TA(r,e){let t;r.length===pt?t=r.subarray(0,32):t=r;let n={crv:"Ed25519",kty:"OKP",x:M(r.subarray(32),"base64url"),d:M(t,"base64url"),ext:!0,key_ops:["sign"]},o=await Se.get().subtle.importKey("jwk",n,{name:"Ed25519"},!0,["sign"]),s=await Se.get().subtle.sign({name:"Ed25519"},o,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(s,0,s.byteLength)}function BA(r,e){let t=r.subarray(0,Kd);return Gs.sign(e instanceof Uint8Array?e:e.subarray(),t)}async function qy(r,e){return To==null&&(To=await Ky),To?TA(r,e):BA(r,e)}async function LA(r,e,t){if(r.buffer instanceof ArrayBuffer){let n=await Se.get().subtle.importKey("raw",r.buffer,{name:"Ed25519"},!1,["verify"]);return await Se.get().subtle.verify({name:"Ed25519"},n,e,t instanceof Uint8Array?t:t.subarray())}throw new TypeError("WebCrypto does not support SharedArrayBuffer for Ed25519 keys")}function PA(r,e,t){return Gs.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}async function zy(r,e,t){return To==null&&(To=await Ky),To?LA(r,e,t):PA(r,e,t)}function DA(r,e){let t=new Uint8Array(pt);for(let n=0;n<Kd;n++)t[n]=r[n],t[Kd+n]=e[n];return t}function Bo(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var Ws=class{type="Ed25519";raw;constructor(e){this.raw=Po(e,Bn)}toMultihash(){return Ge.digest(St(this))}toCID(){return H.createV1(114,this.toMultihash())}toString(){return le.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:X(this.raw,e.raw)}verify(e,t,n){n?.signal?.throwIfAborted();let o=zy(this.raw,t,e);return Bo(o)?o.then(s=>(n?.signal?.throwIfAborted(),s)):o}},Lo=class{type="Ed25519";raw;publicKey;constructor(e,t){this.raw=Po(e,pt),this.publicKey=new Ws(t)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:X(this.raw,e.raw)}sign(e,t){t?.signal?.throwIfAborted();let n=qy(this.raw,e);return Bo(n)?n.then(o=>(t?.signal?.throwIfAborted(),o)):(t?.signal?.throwIfAborted(),n)}};function Hd(r){if(r.length>pt){r=Po(r,pt+Bn);let n=r.subarray(0,pt),o=r.subarray(pt,r.length);return new Lo(n,o)}r=Po(r,pt);let e=r.subarray(0,pt),t=r.subarray(Bn);return new Lo(e,t)}function qd(r){return r=Po(r,Bn),new Ws(r)}async function Wy(){let{privateKey:r,publicKey:e}=Hy();return new Lo(r,e)}function Po(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new k(`Key must be a Uint8Array of length ${e}, got ${r.length}`);return r}var NA=Math.pow(2,7),RA=Math.pow(2,14),MA=Math.pow(2,21),zd=Math.pow(2,28),Gd=Math.pow(2,35),Wd=Math.pow(2,42),jd=Math.pow(2,49),ie=128,Ye=127;function Pe(r){if(r<NA)return 1;if(r<RA)return 2;if(r<MA)return 3;if(r<zd)return 4;if(r<Gd)return 5;if(r<Wd)return 6;if(r<jd)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Do(r,e,t=0){switch(Pe(r)){case 8:e[t++]=r&255|ie,r/=128;case 7:e[t++]=r&255|ie,r/=128;case 6:e[t++]=r&255|ie,r/=128;case 5:e[t++]=r&255|ie,r/=128;case 4:e[t++]=r&255|ie,r>>>=7;case 3:e[t++]=r&255|ie,r>>>=7;case 2:e[t++]=r&255|ie,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function OA(r,e,t=0){switch(Pe(r)){case 8:e.set(t++,r&255|ie),r/=128;case 7:e.set(t++,r&255|ie),r/=128;case 6:e.set(t++,r&255|ie),r/=128;case 5:e.set(t++,r&255|ie),r/=128;case 4:e.set(t++,r&255|ie),r>>>=7;case 3:e.set(t++,r&255|ie),r>>>=7;case 2:e.set(t++,r&255|ie),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function Yd(r,e){let t=r[e],n=0;if(n+=t&Ye,t<ie||(t=r[e+1],n+=(t&Ye)<<7,t<ie)||(t=r[e+2],n+=(t&Ye)<<14,t<ie)||(t=r[e+3],n+=(t&Ye)<<21,t<ie)||(t=r[e+4],n+=(t&Ye)*zd,t<ie)||(t=r[e+5],n+=(t&Ye)*Gd,t<ie)||(t=r[e+6],n+=(t&Ye)*Wd,t<ie)||(t=r[e+7],n+=(t&Ye)*jd,t<ie))return n;throw new RangeError("Could not decode varint")}function UA(r,e){let t=r.get(e),n=0;if(n+=t&Ye,t<ie||(t=r.get(e+1),n+=(t&Ye)<<7,t<ie)||(t=r.get(e+2),n+=(t&Ye)<<14,t<ie)||(t=r.get(e+3),n+=(t&Ye)<<21,t<ie)||(t=r.get(e+4),n+=(t&Ye)*zd,t<ie)||(t=r.get(e+5),n+=(t&Ye)*Gd,t<ie)||(t=r.get(e+6),n+=(t&Ye)*Wd,t<ie)||(t=r.get(e+7),n+=(t&Ye)*jd,t<ie))return n;throw new RangeError("Could not decode varint")}function Xr(r,e,t=0){return e==null&&(e=We(Pe(r))),e instanceof Uint8Array?Do(r,e,t):OA(r,e,t)}function Ln(r,e=0){return r instanceof Uint8Array?Yd(r,e):UA(r,e)}var Zd=new Float32Array([-0]),Jr=new Uint8Array(Zd.buffer);function jy(r,e,t){Zd[0]=r,e[t]=Jr[0],e[t+1]=Jr[1],e[t+2]=Jr[2],e[t+3]=Jr[3]}function Yy(r,e){return Jr[0]=r[e],Jr[1]=r[e+1],Jr[2]=r[e+2],Jr[3]=r[e+3],Zd[0]}var Xd=new Float64Array([-0]),Ze=new Uint8Array(Xd.buffer);function Zy(r,e,t){Xd[0]=r,e[t]=Ze[0],e[t+1]=Ze[1],e[t+2]=Ze[2],e[t+3]=Ze[3],e[t+4]=Ze[4],e[t+5]=Ze[5],e[t+6]=Ze[6],e[t+7]=Ze[7]}function Xy(r,e){return Ze[0]=r[e],Ze[1]=r[e+1],Ze[2]=r[e+2],Ze[3]=r[e+3],Ze[4]=r[e+4],Ze[5]=r[e+5],Ze[6]=r[e+6],Ze[7]=r[e+7],Xd[0]}var FA=BigInt(Number.MAX_SAFE_INTEGER),$A=BigInt(Number.MIN_SAFE_INTEGER),mt=class r{lo;hi;constructor(e,t){this.lo=e|0,this.hi=t|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(t+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(BigInt(t)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){let e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){let e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){let e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?t===0?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return Pn;if(e<FA&&e>$A)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,o=e-(n<<32n);return t&&(n=~n|0n,o=~o|0n,++o>Jy&&(o=0n,++n>Jy&&(n=0n))),new r(Number(o),Number(n))}static fromNumber(e){if(e===0)return Pn;let t=e<0;t&&(e=-e);let n=e>>>0,o=(e-n)/4294967296>>>0;return t&&(o=~o>>>0,n=~n>>>0,++n>4294967295&&(n=0,++o>4294967295&&(o=0))),new r(n,o)}static from(e){return typeof e=="number"?r.fromNumber(e):typeof e=="bigint"?r.fromBigInt(e):typeof e=="string"?r.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new r(e.low>>>0,e.high>>>0):Pn}},Pn=new mt(0,0);Pn.toBigInt=function(){return 0n};Pn.zzEncode=Pn.zzDecode=function(){return this};Pn.length=function(){return 1};var Jy=4294967296n;function Qy(r){let e=0,t=0;for(let n=0;n<r.length;++n)t=r.charCodeAt(n),t<128?e+=1:t<2048?e+=2:(t&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function e0(r,e,t){if(t-e<1)return"";let o,s=[],i=0,a;for(;e<t;)a=r[e++],a<128?s[i++]=a:a>191&&a<224?s[i++]=(a&31)<<6|r[e++]&63:a>239&&a<365?(a=((a&7)<<18|(r[e++]&63)<<12|(r[e++]&63)<<6|r[e++]&63)-65536,s[i++]=55296+(a>>10),s[i++]=56320+(a&1023)):s[i++]=(a&15)<<12|(r[e++]&63)<<6|r[e++]&63,i>8191&&((o??(o=[])).push(String.fromCharCode.apply(String,s)),i=0);return o!=null?(i>0&&o.push(String.fromCharCode.apply(String,s.slice(0,i))),o.join("")):String.fromCharCode.apply(String,s.slice(0,i))}function Jd(r,e,t){let n=t,o,s;for(let i=0;i<r.length;++i)o=r.charCodeAt(i),o<128?e[t++]=o:o<2048?(e[t++]=o>>6|192,e[t++]=o&63|128):(o&64512)===55296&&((s=r.charCodeAt(i+1))&64512)===56320?(o=65536+((o&1023)<<10)+(s&1023),++i,e[t++]=o>>18|240,e[t++]=o>>12&63|128,e[t++]=o>>6&63|128,e[t++]=o&63|128):(e[t++]=o>>12|224,e[t++]=o>>6&63|128,e[t++]=o&63|128);return t-n}function Ut(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function Ga(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var Qd=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(e){this.buf=e,this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,Ut(this,10);return e}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw Ut(this,4);return Ga(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw Ut(this,4);return Ga(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw Ut(this,4);let e=Yy(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw Ut(this,4);let e=Xy(this.buf,this.pos);return this.pos+=8,e}bytes(){let e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw Ut(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return e0(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw Ut(this,e);this.pos+=e}else do if(this.pos>=this.len)throw Ut(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new mt(0,0),t=0;if(this.len-this.pos>4){for(;t<4;++t)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw Ut(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<t*7)>>>0,e}if(this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw Ut(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw Ut(this,8);let e=Ga(this.buf,this.pos+=4),t=Ga(this.buf,this.pos+=4);return new mt(e,t)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let e=Yd(this.buf,this.pos);return this.pos+=Pe(e),e}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}};function eh(r){return new Qd(r instanceof Uint8Array?r:r.subarray())}function Oe(r,e,t){let n=eh(r);return e.decode(n,void 0,t)}function th(r){let e=r??8192,t=e>>>1,n,o=e;return function(i){if(i<1||i>t)return We(i);o+i>e&&(n=We(e),o=0);let a=n.subarray(o,o+=i);return(o&7)!==0&&(o=(o|7)+1),a}}var Dn=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function rh(){}var oh=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},VA=th();function KA(r){return globalThis.Buffer!=null?We(r):VA(r)}var Zs=class{len;head;tail;states;constructor(){this.len=0,this.head=new Dn(rh,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new Dn(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new sh((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(Wa,10,mt.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=mt.fromBigInt(e);return this._push(Wa,t.length(),t)}uint64Number(e){return this._push(Do,Pe(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){let t=mt.fromBigInt(e).zzEncode();return this._push(Wa,t.length(),t)}sint64Number(e){let t=mt.fromNumber(e).zzEncode();return this._push(Wa,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(nh,1,e?1:0)}fixed32(e){return this._push(Ys,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=mt.fromBigInt(e);return this._push(Ys,4,t.lo)._push(Ys,4,t.hi)}fixed64Number(e){let t=mt.fromNumber(e);return this._push(Ys,4,t.lo)._push(Ys,4,t.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push(jy,4,e)}double(e){return this._push(Zy,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(nh,1,0):this.uint32(t)._push(qA,t,e)}string(e){let t=Qy(e);return t!==0?this.uint32(t)._push(Jd,t,e):this._push(nh,1,0)}fork(){return this.states=new oh(this),this.head=this.tail=new Dn(rh,0,0),this.len=0,this}reset(){return this.states!=null?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new Dn(rh,0,0),this.len=0),this}ldelim(){let e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=t,this.len+=n),this}finish(){let e=this.head.next,t=KA(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function nh(r,e,t){e[t]=r&255}function HA(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var sh=class extends Dn{next;constructor(e,t){super(HA,e,t),this.next=void 0}};function Wa(r,e,t){for(;r.hi!==0;)e[t++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)e[t++]=r.lo&127|128,r.lo=r.lo>>>7;e[t++]=r.lo}function Ys(r,e,t){e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24}function qA(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(Zs.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(zA,e,r),this},Zs.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(GA,e,r),this});function zA(r,e,t){e.set(r,t)}function GA(r,e,t){r.length<40?Jd(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(B(r),t)}function ih(){return new Zs}function Ue(r,e){let t=ih();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var No;(function(r){r[r.VARINT=0]="VARINT",r[r.BIT64=1]="BIT64",r[r.LENGTH_DELIMITED=2]="LENGTH_DELIMITED",r[r.START_GROUP=3]="START_GROUP",r[r.END_GROUP=4]="END_GROUP",r[r.BIT32=5]="BIT32"})(No||(No={}));function ja(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function Xs(r){function e(o){if(r[o.toString()]==null)throw new Error("Invalid enum value");return r[o]}let t=function(s,i){let a=e(s);i.int32(a)},n=function(s){let i=s.int32();return e(i)};return ja("enum",No.VARINT,t,n)}function Fe(r,e){return ja("message",No.LENGTH_DELIMITED,r,e)}var Nn=class extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"},Js=class extends Error{code="ERR_MAX_SIZE";name="MaxSizeError"};var ue;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.secp256k1="secp256k1",r.ECDSA="ECDSA"})(ue||(ue={}));var ah;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.secp256k1=2]="secp256k1",r[r.ECDSA=3]="ECDSA"})(ah||(ah={}));(function(r){r.codec=()=>Xs(ah)})(ue||(ue={}));var cr;(function(r){let e;r.codec=()=>(e==null&&(e=Fe((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),ue.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.Type=ue.codec().decode(t);break}case 2:{s.Data=t.bytes();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>Ue(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(cr||(cr={}));var Qs;(function(r){let e;r.codec=()=>(e==null&&(e=Fe((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),ue.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.Type=ue.codec().decode(t);break}case 2:{s.Data=t.bytes();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>Ue(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(Qs||(Qs={}));function Ft(r){if(isNaN(r)||r<=0)throw new k("random bytes length must be a Number bigger than 0");return Hr(r)}var ti={};Ae(ti,{MAX_RSA_KEY_SIZE:()=>ch,generateRSAKeyPair:()=>yh,jwkToJWKKeyPair:()=>s0,jwkToPkcs1:()=>ZA,jwkToPkix:()=>dh,jwkToRSAPrivateKey:()=>gh,pkcs1MessageToJwk:()=>uh,pkcs1MessageToRSAPrivateKey:()=>Ya,pkcs1ToJwk:()=>YA,pkcs1ToRSAPrivateKey:()=>hh,pkixMessageToJwk:()=>fh,pkixMessageToRSAPublicKey:()=>mh,pkixToJwk:()=>XA,pkixToRSAPublicKey:()=>ph});var Ro=class{type="RSA";jwk;_raw;_multihash;constructor(e,t){this.jwk=e,this._multihash=t}get raw(){return this._raw==null&&(this._raw=ti.jwkToPkix(this.jwk)),this._raw}toMultihash(){return this._multihash}toCID(){return H.createV1(114,this._multihash)}toString(){return le.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:X(this.raw,e.raw)}verify(e,t,n){return o0(this.jwk,t,e,n)}},ei=class{type="RSA";jwk;_raw;publicKey;constructor(e,t){this.jwk=e,this.publicKey=t}get raw(){return this._raw==null&&(this._raw=ti.jwkToPkcs1(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:X(this.raw,e.raw)}sign(e,t){return n0(this.jwk,e,t)}};var ch=8192,lh=18,WA=1062,jA=Uint8Array.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);function YA(r){let e=At(r);return uh(e)}function uh(r){return{n:M(r[1],"base64url"),e:M(r[2],"base64url"),d:M(r[3],"base64url"),p:M(r[4],"base64url"),q:M(r[5],"base64url"),dp:M(r[6],"base64url"),dq:M(r[7],"base64url"),qi:M(r[8],"base64url"),kty:"RSA"}}function ZA(r){if(r.n==null||r.e==null||r.d==null||r.p==null||r.q==null||r.dp==null||r.dq==null||r.qi==null)throw new k("JWK was missing components");return Mt([rt(Uint8Array.from([0])),rt(B(r.n,"base64url")),rt(B(r.e,"base64url")),rt(B(r.d,"base64url")),rt(B(r.p,"base64url")),rt(B(r.q,"base64url")),rt(B(r.dp,"base64url")),rt(B(r.dq,"base64url")),rt(B(r.qi,"base64url"))]).subarray()}function XA(r){let e=At(r,{offset:0});return fh(e)}function fh(r){let e=At(r[1],{offset:0});return{kty:"RSA",n:M(e[0],"base64url"),e:M(e[1],"base64url")}}function dh(r){if(r.n==null||r.e==null)throw new k("JWK was missing components");return Mt([jA,Os(Mt([rt(B(r.n,"base64url")),rt(B(r.e,"base64url"))]))]).subarray()}function hh(r){let e=At(r);return Ya(e)}function Ya(r){let e=uh(r);return gh(e)}function ph(r,e){if(r.byteLength>=WA)throw new uo("Key size is too large");let t=At(r,{offset:0});return mh(t,r,e)}function mh(r,e,t){let n=fh(r);if(t==null){let o=Wr(cr.encode({Type:ue.RSA,Data:e}));t=sr(lh,o)}return new Ro(n,t)}function gh(r){if(a0(r)>ch)throw new k("Key size is too large");let e=s0(r),t=Wr(cr.encode({Type:ue.RSA,Data:dh(e.publicKey)})),n=sr(lh,t);return new ei(e.privateKey,new Ro(e.publicKey,n))}async function yh(r){if(r>ch)throw new k("Key size is too large");let e=await i0(r),t=Wr(cr.encode({Type:ue.RSA,Data:dh(e.publicKey)})),n=sr(lh,t);return new ei(e.privateKey,new Ro(e.publicKey,n))}function s0(r){if(r==null)throw new k("Missing key parameter");return{privateKey:r,publicKey:{kty:r.kty,n:r.n,e:r.e}}}async function i0(r,e){let t=await Se.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]);e?.signal?.throwIfAborted();let n=await JA(t,e);return{privateKey:n[0],publicKey:n[1]}}async function n0(r,e,t){let n=await Se.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]);t?.signal?.throwIfAborted();let o=await Se.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},n,e instanceof Uint8Array?e:e.subarray());return t?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function o0(r,e,t,n){let o=await Se.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);n?.signal?.throwIfAborted();let s=await Se.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},o,e,t instanceof Uint8Array?t:t.subarray());return n?.signal?.throwIfAborted(),s}async function JA(r,e){if(r.privateKey==null||r.publicKey==null)throw new k("Private and public key are required");let t=await Promise.all([Se.get().subtle.exportKey("jwk",r.privateKey),Se.get().subtle.exportKey("jwk",r.publicKey)]);return e?.signal?.throwIfAborted(),t}function a0(r){if(r.kty!=="RSA")throw new k("invalid key type");if(r.n==null)throw new k("invalid key modulus");return B(r.n,"base64url").length*8}var Za=class{oHash;iHash;blockLen;outputLen;finished=!1;destroyed=!1;constructor(e,t){if(Eo(e),J(t,void 0,"key"),this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let n=this.blockLen,o=new Uint8Array(n);o.set(t.length>n?e.create().update(t).digest():t);for(let s=0;s<o.length;s++)o[s]^=54;this.iHash.update(o),this.oHash=e.create();for(let s=0;s<o.length;s++)o[s]^=106;this.oHash.update(o),at(o)}update(e){return Ao(this),this.iHash.update(e),this}digestInto(e){Ao(this),J(e,this.outputLen,"output"),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||=Object.create(Object.getPrototypeOf(this),{});let{oHash:t,iHash:n,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},ri=(r,e,t)=>new Za(r,e).update(t).digest();ri.create=(r,e)=>new Za(r,e);var c0=(r,e)=>(r+(r>=0?e:-e)/l0)/e;function QA(r,e,t){let[[n,o],[s,i]]=e,a=c0(i*r,t),c=c0(-o*r,t),l=r-a*n-c*s,u=-a*o-c*i,f=l<Ar,d=u<Ar;f&&(l=-l),d&&(u=-u);let h=Hs(Math.ceil(Ld(t)/2))+Mo;if(l<Ar||l>=h||u<Ar||u>=h)throw new Error("splitScalar (endomorphism): failed, k="+r);return{k1neg:f,k1:l,k2neg:d,k2:u}}function bh(r){if(!["compact","recovered","der"].includes(r))throw new Error('Signature format must be "compact", "recovered", or "der"');return r}function wh(r,e){let t={};for(let n of Object.keys(e))t[n]=r[n]===void 0?e[n]:r[n];return Er(t.lowS,"lowS"),Er(t.prehash,"prehash"),t.format!==void 0&&bh(t.format),t}var xh=class extends Error{constructor(e=""){super(e)}},Qr={Err:xh,_tlv:{encode:(r,e)=>{let{Err:t}=Qr;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length&1)throw new t("tlv.encode: unpadded data");let n=e.length/2,o=Vs(n);if(o.length/2&128)throw new t("tlv.encode: long form length too big");let s=n>127?Vs(o.length/2|128):"";return Vs(r)+s+o+e},decode(r,e){let{Err:t}=Qr,n=0;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length<2||e[n++]!==r)throw new t("tlv.decode: wrong tlv");let o=e[n++],s=!!(o&128),i=0;if(!s)i=o;else{let c=o&127;if(!c)throw new t("tlv.decode(long): indefinite length not supported");if(c>4)throw new t("tlv.decode(long): byte length is too big");let l=e.subarray(n,n+c);if(l.length!==c)throw new t("tlv.decode: length bytes not complete");if(l[0]===0)throw new t("tlv.decode(long): zero leftmost byte");for(let u of l)i=i<<8|u;if(n+=c,i<128)throw new t("tlv.decode(long): not minimal encoding")}let a=e.subarray(n,n+i);if(a.length!==i)throw new t("tlv.decode: wrong value length");return{v:a,l:e.subarray(n+i)}}},_int:{encode(r){let{Err:e}=Qr;if(r<Ar)throw new e("integer: negative integers are not allowed");let t=Vs(r);if(Number.parseInt(t[0],16)&8&&(t="00"+t),t.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return t},decode(r){let{Err:e}=Qr;if(r[0]&128)throw new e("invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return So(r)}},toSig(r){let{Err:e,_int:t,_tlv:n}=Qr,o=J(r,void 0,"signature"),{v:s,l:i}=n.decode(48,o);if(i.length)throw new e("invalid signature: left bytes after parsing");let{v:a,l:c}=n.decode(2,s),{v:l,l:u}=n.decode(2,c);if(u.length)throw new e("invalid signature: left bytes after parsing");return{r:t.decode(a),s:t.decode(l)}},hexFromSig(r){let{_tlv:e,_int:t}=Qr,n=e.encode(2,t.encode(r.r)),o=e.encode(2,t.encode(r.s)),s=n+o;return e.encode(48,s)}},Ar=BigInt(0),Mo=BigInt(1),l0=BigInt(2),Xa=BigInt(3),e2=BigInt(4);function u0(r,e={}){let t=qa("weierstrass",r,e),{Fp:n,Fn:o}=t,s=t.CURVE,{h:i,n:a}=s;Yr(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object"});let{endo:c}=e;if(c&&(!n.is0(s.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');let l=d0(n,o);function u(){if(!n.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function f(C,E,A){let{x:y,y:_}=E.toAffine(),R=n.toBytes(y);if(Er(A,"isCompressed"),A){u();let O=!n.isOdd(_);return ct(f0(O),R)}else return ct(Uint8Array.of(4),R,n.toBytes(_))}function d(C){J(C,void 0,"Point");let{publicKey:E,publicKeyUncompressed:A}=l,y=C.length,_=C[0],R=C.subarray(1);if(y===E&&(_===2||_===3)){let O=n.fromBytes(R);if(!n.isValid(O))throw new Error("bad point: is not on curve, wrong x");let $=g(O),V;try{V=n.sqrt($)}catch(ye){let he=ye instanceof Error?": "+ye.message:"";throw new Error("bad point: is not on curve, sqrt error"+he)}u();let z=n.isOdd(V);return(_&1)===1!==z&&(V=n.neg(V)),{x:O,y:V}}else if(y===A&&_===4){let O=n.BYTES,$=n.fromBytes(R.subarray(0,O)),V=n.fromBytes(R.subarray(O,O*2));if(!w($,V))throw new Error("bad point: is not on curve");return{x:$,y:V}}else throw new Error(`bad point: got length ${y}, expected compressed=${E} or uncompressed=${A}`)}let h=e.toBytes||f,p=e.fromBytes||d;function g(C){let E=n.sqr(C),A=n.mul(E,C);return n.add(n.add(A,n.mul(C,s.a)),s.b)}function w(C,E){let A=n.sqr(E),y=g(C);return n.eql(A,y)}if(!w(s.Gx,s.Gy))throw new Error("bad curve params: generator point");let b=n.mul(n.pow(s.a,Xa),e2),T=n.mul(n.sqr(s.b),BigInt(27));if(n.is0(n.add(b,T)))throw new Error("bad curve params: a or b");function S(C,E,A=!1){if(!n.isValid(E)||A&&n.is0(E))throw new Error(`bad point coordinate ${C}`);return E}function D(C){if(!(C instanceof v))throw new Error("Weierstrass Point expected")}function K(C){if(!c||!c.basises)throw new Error("no endo");return QA(C,c.basises,o.ORDER)}let Y=Io((C,E)=>{let{X:A,Y:y,Z:_}=C;if(n.eql(_,n.ONE))return{x:A,y};let R=C.is0();E==null&&(E=R?n.ONE:n.inv(_));let O=n.mul(A,E),$=n.mul(y,E),V=n.mul(_,E);if(R)return{x:n.ZERO,y:n.ZERO};if(!n.eql(V,n.ONE))throw new Error("invZ was invalid");return{x:O,y:$}}),G=Io(C=>{if(C.is0()){if(e.allowInfinityPoint&&!n.is0(C.Y))return;throw new Error("bad point: ZERO")}let{x:E,y:A}=C.toAffine();if(!n.isValid(E)||!n.isValid(A))throw new Error("bad point: x or y not field elements");if(!w(E,A))throw new Error("bad point: equation left != right");if(!C.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function x(C,E,A,y,_){return A=new v(n.mul(A.X,C),A.Y,A.Z),E=zs(y,E),A=zs(_,A),E.add(A)}class v{static BASE=new v(s.Gx,s.Gy,n.ONE);static ZERO=new v(n.ZERO,n.ONE,n.ZERO);static Fp=n;static Fn=o;X;Y;Z;constructor(E,A,y){this.X=S("x",E),this.Y=S("y",A,!0),this.Z=S("z",y),Object.freeze(this)}static CURVE(){return s}static fromAffine(E){let{x:A,y}=E||{};if(!E||!n.isValid(A)||!n.isValid(y))throw new Error("invalid affine point");if(E instanceof v)throw new Error("projective point not allowed");return n.is0(A)&&n.is0(y)?v.ZERO:new v(A,y,n.ONE)}static fromBytes(E){let A=v.fromAffine(p(J(E,void 0,"point")));return A.assertValidity(),A}static fromHex(E){return v.fromBytes(xr(E))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(E=8,A=!0){return N.createCache(this,E),A||this.multiply(Xa),this}assertValidity(){G(this)}hasEvenY(){let{y:E}=this.toAffine();if(!n.isOdd)throw new Error("Field doesn't support isOdd");return!n.isOdd(E)}equals(E){D(E);let{X:A,Y:y,Z:_}=this,{X:R,Y:O,Z:$}=E,V=n.eql(n.mul(A,$),n.mul(R,_)),z=n.eql(n.mul(y,$),n.mul(O,_));return V&&z}negate(){return new v(this.X,n.neg(this.Y),this.Z)}double(){let{a:E,b:A}=s,y=n.mul(A,Xa),{X:_,Y:R,Z:O}=this,$=n.ZERO,V=n.ZERO,z=n.ZERO,Z=n.mul(_,_),ye=n.mul(R,R),he=n.mul(O,O),ne=n.mul(_,R);return ne=n.add(ne,ne),z=n.mul(_,O),z=n.add(z,z),$=n.mul(E,z),V=n.mul(y,he),V=n.add($,V),$=n.sub(ye,V),V=n.add(ye,V),V=n.mul($,V),$=n.mul(ne,$),z=n.mul(y,z),he=n.mul(E,he),ne=n.sub(Z,he),ne=n.mul(E,ne),ne=n.add(ne,z),z=n.add(Z,Z),Z=n.add(z,Z),Z=n.add(Z,he),Z=n.mul(Z,ne),V=n.add(V,Z),he=n.mul(R,O),he=n.add(he,he),Z=n.mul(he,ne),$=n.sub($,Z),z=n.mul(he,ye),z=n.add(z,z),z=n.add(z,z),new v($,V,z)}add(E){D(E);let{X:A,Y:y,Z:_}=this,{X:R,Y:O,Z:$}=E,V=n.ZERO,z=n.ZERO,Z=n.ZERO,ye=s.a,he=n.mul(s.b,Xa),ne=n.mul(A,R),we=n.mul(y,O),Re=n.mul(_,$),er=n.add(A,y),be=n.add(R,O);er=n.mul(er,be),be=n.add(ne,we),er=n.sub(er,be),be=n.add(A,_);let ze=n.add(R,$);return be=n.mul(be,ze),ze=n.add(ne,Re),be=n.sub(be,ze),ze=n.add(y,_),V=n.add(O,$),ze=n.mul(ze,V),V=n.add(we,Re),ze=n.sub(ze,V),Z=n.mul(ye,be),V=n.mul(he,Re),Z=n.add(V,Z),V=n.sub(we,Z),Z=n.add(we,Z),z=n.mul(V,Z),we=n.add(ne,ne),we=n.add(we,ne),Re=n.mul(ye,Re),be=n.mul(he,be),we=n.add(we,Re),Re=n.sub(ne,Re),Re=n.mul(ye,Re),be=n.add(be,Re),ne=n.mul(we,be),z=n.add(z,ne),ne=n.mul(ze,be),V=n.mul(er,V),V=n.sub(V,ne),ne=n.mul(er,we),Z=n.mul(ze,Z),Z=n.add(Z,ne),new v(V,z,Z)}subtract(E){return this.add(E.negate())}is0(){return this.equals(v.ZERO)}multiply(E){let{endo:A}=e;if(!o.isValidNot0(E))throw new Error("invalid scalar: out of range");let y,_,R=O=>N.cached(this,O,$=>Tn(v,$));if(A){let{k1neg:O,k1:$,k2neg:V,k2:z}=K(E),{p:Z,f:ye}=R($),{p:he,f:ne}=R(z);_=ye.add(ne),y=x(A.beta,Z,he,O,V)}else{let{p:O,f:$}=R(E);y=O,_=$}return Tn(v,[y,_])[0]}multiplyUnsafe(E){let{endo:A}=e,y=this;if(!o.isValid(E))throw new Error("invalid scalar: out of range");if(E===Ar||y.is0())return v.ZERO;if(E===Mo)return y;if(N.hasCache(this))return this.multiply(E);if(A){let{k1neg:_,k1:R,k2neg:O,k2:$}=K(E),{p1:V,p2:z}=Oy(v,y,R,$);return x(A.beta,V,z,_,O)}else return N.unsafe(y,E)}toAffine(E){return Y(this,E)}isTorsionFree(){let{isTorsionFree:E}=e;return i===Mo?!0:E?E(v,this):N.unsafe(this,a).is0()}clearCofactor(){let{clearCofactor:E}=e;return i===Mo?this:E?E(v,this):this.multiplyUnsafe(i)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}toBytes(E=!0){return Er(E,"isCompressed"),this.assertValidity(),h(v,this,E)}toHex(E=!0){return br(this.toBytes(E))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}let P=o.BITS,N=new Co(v,e.endo?Math.ceil(P/2):P);return v.BASE.precompute(8),v}function f0(r){return Uint8Array.of(r?2:3)}function d0(r,e){return{secretKey:e.BYTES,publicKey:1+r.BYTES,publicKeyUncompressed:1+2*r.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function t2(r,e={}){let{Fn:t}=r,n=e.randomBytes||Hr,o=Object.assign(d0(r.Fp,t),{seed:Rd(t.ORDER)});function s(h){try{let p=t.fromBytes(h);return t.isValidNot0(p)}catch{return!1}}function i(h,p){let{publicKey:g,publicKeyUncompressed:w}=o;try{let b=h.length;return p===!0&&b!==g||p===!1&&b!==w?!1:!!r.fromBytes(h)}catch{return!1}}function a(h=n(o.seed)){return Md(J(h,o.seed,"seed"),t.ORDER)}function c(h,p=!0){return r.BASE.multiply(t.fromBytes(h)).toBytes(p)}function l(h){let{secretKey:p,publicKey:g,publicKeyUncompressed:w}=o;if(!vn(h)||"_lengths"in t&&t._lengths||p===g)return;let b=J(h,void 0,"key").length;return b===g||b===w}function u(h,p,g=!0){if(l(h)===!0)throw new Error("first arg must be private key");if(l(p)===!1)throw new Error("second arg must be public key");let w=t.fromBytes(h);return r.fromBytes(p).multiply(w).toBytes(g)}let f={isValidSecretKey:s,isValidPublicKey:i,randomSecretKey:a},d=za(a,c);return Object.freeze({getPublicKey:c,getSharedSecret:u,keygen:d,Point:r,utils:f,lengths:o})}function h0(r,e,t={}){Eo(e),Yr(t,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"}),t=Object.assign({},t);let n=t.randomBytes||Hr,o=t.hmac||((A,y)=>ri(e,A,y)),{Fp:s,Fn:i}=r,{ORDER:a,BITS:c}=i,{keygen:l,getPublicKey:u,getSharedSecret:f,utils:d,lengths:h}=t2(r,t),p={prehash:!0,lowS:typeof t.lowS=="boolean"?t.lowS:!0,format:"compact",extraEntropy:!1},g=a*l0<s.ORDER;function w(A){let y=a>>Mo;return A>y}function b(A,y){if(!i.isValidNot0(y))throw new Error(`invalid signature ${A}: out of range 1..Point.Fn.ORDER`);return y}function T(){if(g)throw new Error('"recovered" sig type is not supported for cofactor >2 curves')}function S(A,y){bh(y);let _=h.signature,R=y==="compact"?_:y==="recovered"?_+1:void 0;return J(A,R)}class D{r;s;recovery;constructor(y,_,R){if(this.r=b("r",y),this.s=b("s",_),R!=null){if(T(),![0,1,2,3].includes(R))throw new Error("invalid recovery id");this.recovery=R}Object.freeze(this)}static fromBytes(y,_=p.format){S(y,_);let R;if(_==="der"){let{r:z,s:Z}=Qr.toSig(J(y));return new D(z,Z)}_==="recovered"&&(R=y[0],_="compact",y=y.subarray(1));let O=h.signature/2,$=y.subarray(0,O),V=y.subarray(O,O*2);return new D(i.fromBytes($),i.fromBytes(V),R)}static fromHex(y,_){return this.fromBytes(xr(y),_)}assertRecovery(){let{recovery:y}=this;if(y==null)throw new Error("invalid recovery id: must be present");return y}addRecoveryBit(y){return new D(this.r,this.s,y)}recoverPublicKey(y){let{r:_,s:R}=this,O=this.assertRecovery(),$=O===2||O===3?_+a:_;if(!s.isValid($))throw new Error("invalid recovery id: sig.r+curve.n != R.x");let V=s.toBytes($),z=r.fromBytes(ct(f0((O&1)===0),V)),Z=i.inv($),ye=Y(J(y,void 0,"msgHash")),he=i.create(-ye*Z),ne=i.create(R*Z),we=r.BASE.multiplyUnsafe(he).add(z.multiplyUnsafe(ne));if(we.is0())throw new Error("invalid recovery: point at infinify");return we.assertValidity(),we}hasHighS(){return w(this.s)}toBytes(y=p.format){if(bh(y),y==="der")return xr(Qr.hexFromSig(this));let{r:_,s:R}=this,O=i.toBytes(_),$=i.toBytes(R);return y==="recovered"?(T(),ct(Uint8Array.of(this.assertRecovery()),O,$)):ct(O,$)}toHex(y){return br(this.toBytes(y))}}let K=t.bits2int||function(y){if(y.length>8192)throw new Error("input is too large");let _=So(y),R=y.length*8-c;return R>0?_>>BigInt(R):_},Y=t.bits2int_modN||function(y){return i.create(K(y))},G=Hs(c);function x(A){return Ks("num < 2^"+c,A,Ar,G),i.toBytes(A)}function v(A,y){return J(A,void 0,"message"),y?J(e(A),void 0,"prehashed message"):A}function P(A,y,_){let{lowS:R,prehash:O,extraEntropy:$}=wh(_,p);A=v(A,O);let V=Y(A),z=i.fromBytes(y);if(!i.isValidNot0(z))throw new Error("invalid private key");let Z=[x(z),x(V)];if($!=null&&$!==!1){let we=$===!0?n(h.secretKey):$;Z.push(J(we,void 0,"extraEntropy"))}let ye=ct(...Z),he=V;function ne(we){let Re=K(we);if(!i.isValidNot0(Re))return;let er=i.inv(Re),be=r.BASE.multiply(Re).toAffine(),ze=i.create(be.x);if(ze===Ar)return;let xa=i.create(er*i.create(he+ze*z));if(xa===Ar)return;let pg=(be.x===ze?0:2)|Number(be.y&Mo),mg=xa;return R&&w(xa)&&(mg=i.neg(xa),pg^=1),new D(ze,mg,g?void 0:pg)}return{seed:ye,k2sig:ne}}function N(A,y,_={}){let{seed:R,k2sig:O}=P(A,y,_);return xy(e.outputLen,i.BYTES,o)(R,O).toBytes(_.format)}function C(A,y,_,R={}){let{lowS:O,prehash:$,format:V}=wh(R,p);if(_=J(_,void 0,"publicKey"),y=v(y,$),!vn(A)){let z=A instanceof D?", use sig.toBytes()":"";throw new Error("verify expects Uint8Array signature"+z)}S(A,V);try{let z=D.fromBytes(A,V),Z=r.fromBytes(_);if(O&&z.hasHighS())return!1;let{r:ye,s:he}=z,ne=Y(y),we=i.inv(he),Re=i.create(ne*we),er=i.create(ye*we),be=r.BASE.multiplyUnsafe(Re).add(Z.multiplyUnsafe(er));return be.is0()?!1:i.create(be.x)===ye}catch{return!1}}function E(A,y,_={}){let{prehash:R}=wh(_,p);return y=v(y,R),D.fromBytes(A,"recovered").recoverPublicKey(y).toBytes()}return Object.freeze({keygen:l,getPublicKey:u,getSharedSecret:f,utils:d,lengths:h,Point:r,sign:N,verify:C,recoverPublicKey:E,Signature:D,hash:e})}var Eh={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},r2={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]};var p0=BigInt(2);function n2(r){let e=Eh.p,t=BigInt(3),n=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%e,u=l*l*r%e,f=me(u,t,e)*u%e,d=me(f,t,e)*u%e,h=me(d,p0,e)*l%e,p=me(h,o,e)*h%e,g=me(p,s,e)*p%e,w=me(g,a,e)*g%e,b=me(w,c,e)*w%e,T=me(b,a,e)*g%e,S=me(T,t,e)*u%e,D=me(S,i,e)*p%e,K=me(D,n,e)*l%e,Y=me(K,p0,e);if(!vh.eql(vh.sqr(Y),r))throw new Error("Cannot find square root");return Y}var vh=ko(Eh.p,{sqrt:n2}),o2=u0(Eh,{Fp:vh,endo:r2}),$t=h0(o2,Wr);var m0=32;function g0(r,e,t){let n=Rt.digest(e instanceof Uint8Array?e:e.subarray());if(Bo(n))return n.then(({digest:o})=>(t?.signal?.throwIfAborted(),$t.sign(o,r,{prehash:!1,format:"der"}))).catch(o=>{throw o.name==="AbortError"?o:new _s(String(o))});try{return $t.sign(n.digest,r,{prehash:!1,format:"der"})}catch(o){throw new _s(String(o))}}function y0(r,e,t,n){let o=Rt.digest(t instanceof Uint8Array?t:t.subarray());if(Bo(o))return o.then(({digest:s})=>(n?.signal?.throwIfAborted(),$t.verify(e,s,r,{prehash:!1,format:"der"}))).catch(s=>{throw s.name==="AbortError"?s:new Cs(String(s))});try{return n?.signal?.throwIfAborted(),$t.verify(e,o.digest,r,{prehash:!1,format:"der"})}catch(s){throw new Cs(String(s))}}var ni=class{type="secp256k1";raw;_key;constructor(e){this._key=x0(e),this.raw=w0(this._key)}toMultihash(){return Ge.digest(St(this))}toCID(){return H.createV1(114,this.toMultihash())}toString(){return le.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:X(this.raw,e.raw)}verify(e,t,n){return y0(this._key,t,e,n)}},oi=class{type="secp256k1";raw;publicKey;constructor(e,t){this.raw=b0(e),this.publicKey=new ni(t??v0(e))}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:X(this.raw,e.raw)}sign(e,t){return g0(this.raw,e,t)}};function Ah(r){return new oi(r)}function Sh(r){return new ni(r)}async function E0(){let r=s2();return new oi(r)}function w0(r){return $t.Point.fromBytes(r).toBytes()}function b0(r){try{return $t.getPublicKey(r,!0),r}catch(e){throw new Ss(String(e))}}function x0(r){try{return $t.Point.fromBytes(r),r}catch(e){throw new uo(String(e))}}function v0(r){try{return $t.getPublicKey(r,!0)}catch(e){throw new Ss(String(e))}}function s2(){return $t.utils.randomSecretKey()}async function Ja(r,e){if(r==="Ed25519")return Wy();if(r==="secp256k1")return E0();if(r==="RSA")return yh(i2(e));if(r==="ECDSA")return ny(a2(e));throw new Dt}function en(r,e){let{Type:t,Data:n}=cr.decode(r),o=n??new Uint8Array;switch(t){case ue.RSA:return ph(o,e);case ue.Ed25519:return qd(o);case ue.secp256k1:return Sh(o);case ue.ECDSA:return bd(o);default:throw new Dt}}function Qa(r){let{Type:e,Data:t}=cr.decode(r.digest),n=t??new Uint8Array;switch(e){case ue.Ed25519:return qd(n);case ue.secp256k1:return Sh(n);case ue.ECDSA:return bd(n);default:throw new Dt}}function St(r){return cr.encode({Type:ue[r.type],Data:r.raw})}function A0(r){let e=Qs.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case ue.RSA:return hh(t);case ue.Ed25519:return Hd(t);case ue.secp256k1:return Ah(t);case ue.ECDSA:return Jg(t);default:throw new Dt}}function S0(r){if(r.byteLength===pt)return Hd(r);if(r.byteLength===m0)return Ah(r);let e=At(r),t=e[2]?.[0];if(t===Hg||t===qg||t===zg)return wd(e);if(e.length>8)return Ya(e);throw new k("Could not extract private key from raw bytes")}function Rn(r){return Qs.encode({Type:ue[r.type],Data:r.raw})}function i2(r){return r==null?2048:parseInt(r,10)}function a2(r){if(r==="P-256"||r==null)return"P-256";if(r==="P-384")return"P-384";if(r==="P-521")return"P-521";throw new k("Unsupported curve, should be P-256, P-384 or P-521")}var si=Uint32Array.from([1732584193,4023233417,2562383102,271733878,3285377520]),tn=new Uint32Array(80),Ih=class extends An{A=si[0]|0;B=si[1]|0;C=si[2]|0;D=si[3]|0;E=si[4]|0;constructor(){super(64,20,8,!1)}get(){let{A:e,B:t,C:n,D:o,E:s}=this;return[e,t,n,o,s]}set(e,t,n,o,s){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=s|0}process(e,t){for(let c=0;c<16;c++,t+=4)tn[c]=e.getUint32(t,!1);for(let c=16;c<80;c++)tn[c]=Oa(tn[c-3]^tn[c-8]^tn[c-14]^tn[c-16],1);let{A:n,B:o,C:s,D:i,E:a}=this;for(let c=0;c<80;c++){let l,u;c<20?(l=Ua(o,s,i),u=1518500249):c<40?(l=o^s^i,u=1859775393):c<60?(l=Fa(o,s,i),u=2400959708):(l=o^s^i,u=3395469782);let f=Oa(n,5)+l+a+u+tn[c]|0;a=i,i=s,s=Oa(o,30),o=n,n=f}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,this.set(n,o,s,i,a)}roundClean(){at(tn)}destroy(){this.set(0,0,0,0,0),at(this.buffer)}},I0=Us(()=>new Ih);function k0(r,e,t,n){Eo(r);let o=cy({dkLen:32,asyncTick:10},n),{c:s,dkLen:i,asyncTick:a}=o;if(it(s,"c"),it(i,"dkLen"),it(a,"asyncTick"),s<1)throw new Error("iterations (c) must be >= 1");let c=xd(e,"password"),l=xd(t,"salt"),u=new Uint8Array(i),f=ri.create(r,c),d=f._cloneInto().update(l);return{c:s,dkLen:i,asyncTick:a,DK:u,PRF:f,PRFSalt:d}}function _0(r,e,t,n,o){return r.destroy(),e.destroy(),n&&n.destroy(),at(o),t}function C0(r,e,t,n){let{c:o,dkLen:s,DK:i,PRF:a,PRFSalt:c}=k0(r,e,t,n),l,u=new Uint8Array(4),f=En(u),d=new Uint8Array(a.outputLen);for(let h=1,p=0;p<s;h++,p+=a.outputLen){let g=i.subarray(p,p+a.outputLen);f.setInt32(0,h,!1),(l=c._cloneInto(l)).update(u).digestInto(d),g.set(d.subarray(0,g.length));for(let w=1;w<o;w++){a._cloneInto(l).update(d).digestInto(d);for(let b=0;b<g.length;b++)g[b]^=d[b]}}return _0(a,c,i,l,d)}async function ec(r,e,t,n){let{c:o,dkLen:s,asyncTick:i,DK:a,PRF:c,PRFSalt:l}=k0(r,e,t,n),u,f=new Uint8Array(4),d=En(f),h=new Uint8Array(c.outputLen);for(let p=1,g=0;g<s;p++,g+=c.outputLen){let w=a.subarray(g,g+c.outputLen);d.setInt32(0,p,!1),(u=l._cloneInto(u)).update(f).digestInto(h),w.set(h.subarray(0,w.length)),await ay(o-1,i,()=>{c._cloneInto(u).update(h).digestInto(h);for(let b=0;b<w.length;b++)w[b]^=h[b]})}return _0(c,l,a,u,h)}var T0={sha1:I0,"sha2-256":Wr,"sha2-512":jr};function ii(r,e,t,n,o){if(o!=="sha1"&&o!=="sha2-256"&&o!=="sha2-512"){let a=Object.keys(T0).join(" / ");throw new k(`Hash '${o}' is unknown or not supported. Must be ${a}`)}let s=T0[o],i=C0(s,r,e,{c:t,dkLen:n});return je.encode(i).substring(1)}var kh={32:16777619n,64:1099511628211n,128:309485009821345068724781371n,256:374144419156711147060143317175368453031918731002211n,512:35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759n,1024:5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573n},B0={32:2166136261n,64:14695981039346656037n,128:144066263297769815596495629667062367629n,256:100029257958052580907070968620625704837092796014241193945225284501741471925557n,512:9659303129496669498009435400716310466090418745672637896108374329434462657994582932197716438449813051892206539805784495328239340083876191928701583869517785n,1024:14197795064947621068722070641403218320880622795441933960878474914617582723252296732303717722150864096521202355549365628174669108571814760471015076148029755969804077320157692458563003215304957150157403644460363550505412711285966361610267868082893823963790439336411086884584107735010676915n},L0=new globalThis.TextEncoder;function c2(r,e){let t=kh[e],n=B0[e];for(let o=0;o<r.length;o++)n^=BigInt(r[o]),n=BigInt.asUintN(e,n*t);return n}function l2(r,e,t){if(t.length===0)throw new Error("The `utf8Buffer` option must have a length greater than zero");let n=kh[e],o=B0[e],s=r;for(;s.length>0;){let i=L0.encodeInto(s,t);s=s.slice(i.read);for(let a=0;a<i.written;a++)o^=BigInt(t[a]),o=BigInt.asUintN(e,o*n)}return o}function _h(r,{size:e=32,utf8Buffer:t}={}){if(!kh[e])throw new Error("The `size` option must be one of 32, 64, 128, 256, 512, or 1024");if(typeof r=="string"){if(t)return l2(r,e,t);r=L0.encode(r)}return c2(r,e)}var ai={hash:r=>Number(_h(r,{size:32})),hashV:(r,e)=>u2(ai.hash(r,e))};function u2(r){let e=r.toString(16);return e.length%2===1&&(e=`0${e}`),B(e,"base16")}var Ch=64,Vt=class{fp;h;seed;constructor(e,t,n,o=2){if(o>Ch)throw new TypeError("Invalid Fingerprint Size");let s=t.hashV(e,n),i=ve(o);for(let a=0;a<i.length;a++)i[a]=s[a];i.length===0&&(i[0]=7),this.fp=i,this.h=t,this.seed=n}hash(){return this.h.hash(this.fp,this.seed)}equals(e){return e?.fp instanceof Uint8Array?X(this.fp,e.fp):!1}};function Mn(r,e){return Math.floor(Math.random()*(e-r))+r}var On=class{contents;constructor(e){this.contents=new Array(e).fill(null)}has(e){if(!(e instanceof Vt))throw new TypeError("Invalid Fingerprint");return this.contents.some(t=>e.equals(t))}add(e){if(!(e instanceof Vt))throw new TypeError("Invalid Fingerprint");for(let t=0;t<this.contents.length;t++)if(this.contents[t]==null)return this.contents[t]=e,!0;return!0}swap(e){if(!(e instanceof Vt))throw new TypeError("Invalid Fingerprint");let t=Mn(0,this.contents.length-1),n=this.contents[t];return this.contents[t]=e,n}remove(e){if(!(e instanceof Vt))throw new TypeError("Invalid Fingerprint");let t=this.contents.findIndex(n=>e.equals(n));return t>-1?(this.contents[t]=null,!0):!1}};var f2=500,ci=class{bucketSize;filterSize;fingerprintSize;buckets;count;hash;seed;constructor(e){this.filterSize=e.filterSize,this.bucketSize=e.bucketSize??4,this.fingerprintSize=e.fingerprintSize??2,this.count=0,this.buckets=[],this.hash=e.hash??ai,this.seed=e.seed??Mn(0,Math.pow(2,10))}add(e){typeof e=="string"&&(e=B(e));let t=new Vt(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=(n^t.hash())%this.filterSize;if(this.buckets[n]==null&&(this.buckets[n]=new On(this.bucketSize)),this.buckets[o]==null&&(this.buckets[o]=new On(this.bucketSize)),this.buckets[n].add(t)||this.buckets[o].add(t))return this.count++,!0;let s=[n,o],i=s[Mn(0,s.length-1)];this.buckets[i]==null&&(this.buckets[i]=new On(this.bucketSize));for(let a=0;a<f2;a++){let c=this.buckets[i].swap(t);if(c!=null&&(i=(i^c.hash())%this.filterSize,this.buckets[i]==null&&(this.buckets[i]=new On(this.bucketSize)),this.buckets[i].add(c)))return this.count++,!0}return!1}has(e){typeof e=="string"&&(e=B(e));let t=new Vt(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=this.buckets[n]?.has(t)??!1;if(o)return o;let s=(n^t.hash())%this.filterSize;return this.buckets[s]?.has(t)??!1}remove(e){typeof e=="string"&&(e=B(e));let t=new Vt(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=this.buckets[n]?.remove(t)??!1;if(o)return this.count--,o;let s=(n^t.hash())%this.filterSize,i=this.buckets[s]?.remove(t)??!1;return i&&this.count--,i}get reliable(){return Math.floor(100*(this.count/this.filterSize))<=90}},d2={1:.5,2:.84,4:.95,8:.98};function h2(r=.001){return r>.002?2:r>1e-5?4:8}function P0(r,e=.001){let t=h2(e),n=d2[t],o=Math.round(r/n),s=Math.min(Math.ceil(Math.log2(1/e)+Math.log2(2*t)),Ch);return{filterSize:o,bucketSize:t,fingerprintSize:s}}var tc=class{filterSize;bucketSize;fingerprintSize;scale;filterSeries;hash;seed;constructor(e){this.bucketSize=e.bucketSize??4,this.filterSize=e.filterSize??(1<<18)/this.bucketSize,this.fingerprintSize=e.fingerprintSize??2,this.scale=e.scale??2,this.hash=e.hash??ai,this.seed=e.seed??Mn(0,Math.pow(2,10)),this.filterSeries=[new ci({filterSize:this.filterSize,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed})]}add(e){if(typeof e=="string"&&(e=B(e)),this.has(e))return!0;let t=this.filterSeries.find(n=>n.reliable);if(t==null){let n=this.filterSize*Math.pow(this.scale,this.filterSeries.length);t=new ci({filterSize:n,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed}),this.filterSeries.push(t)}return t.add(e)}has(e){typeof e=="string"&&(e=B(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].has(e))return!0;return!1}remove(e){typeof e=="string"&&(e=B(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].remove(e))return!0;return!1}get count(){return this.filterSeries.reduce((e,t)=>e+t.count,0)}};function Un(r,e=.001,t){return new tc({...P0(r,e),...t??{}})}function Q(r){let e=r.getComponents(),t={},n=0;if(e[n]?.name==="ip6zone"&&(t.zone=`${e[n].value}`,n++),e[n].name==="ip4"||e[n].name==="ip6"||e[n].name==="dns"||e[n].name==="dns4"||e[n].name==="dns6"?(t.type=e[n].name,t.host=e[n].value,n++):e[n].name==="dnsaddr"&&(t.type=e[n].name,t.host=`_dnsaddr.${e[n].value}`,n++),(e[n]?.name==="tcp"||e[n]?.name==="udp")&&(t.protocol=e[n].name==="tcp"?"tcp":"udp",t.port=parseInt(`${e[n].value}`),n++),e[n]?.name==="ipcidr"&&(t.type==="ip4"?t.cidr=parseInt(`${e[n].value}`):t.type==="ip6"&&(t.cidr=`${e[n].value}`),n++),t.type==null||t.host==null)throw new k(`Multiaddr ${r} was not an IPv4, IPv6, DNS, DNS4, DNS6 or DNSADDR address`);return e[n]?.name==="tls"&&e[n+1]?.name==="sni"&&(t.sni=e[n+1].value,n+=2),t}var rc=class{index=0;input="";new(e){return this.index=0,this.input=e,this}readAtomically(e){let t=this.index,n=e();return n===void 0&&(this.index=t),n}parseWith(e){let t=e();if(this.index===this.input.length)return t}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(e){return this.readAtomically(()=>{let t=this.readChar();if(t===e)return t})}readSeparator(e,t,n){return this.readAtomically(()=>{if(!(t>0&&this.readGivenChar(e)===void 0))return n()})}readNumber(e,t,n,o){return this.readAtomically(()=>{let s=0,i=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",l=2**(8*o)-1;for(;;){let u=this.readAtomically(()=>{let f=this.readChar();if(f===void 0)return;let d=Number.parseInt(f,e);if(!Number.isNaN(d))return d});if(u===void 0)break;if(s*=e,s+=u,s>l||(i+=1,t!==void 0&&i>t))return}if(i!==0)return!n&&c&&i>1?void 0:s})}readIPv4Addr(){return this.readAtomically(()=>{let e=new Uint8Array(4);for(let t=0;t<e.length;t++){let n=this.readSeparator(".",t,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;e[t]=n}return e})}readIPv6Addr(){let e=t=>{for(let n=0;n<t.length/2;n++){let o=n*2;if(n<t.length-3){let i=this.readSeparator(":",n,()=>this.readIPv4Addr());if(i!==void 0)return t[o]=i[0],t[o+1]=i[1],t[o+2]=i[2],t[o+3]=i[3],[o+4,!0]}let s=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(s===void 0)return[o,!1];t[o]=s>>8,t[o+1]=s&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,o]=e(t);if(n===16)return t;if(o||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let s=new Uint8Array(14),i=16-(n+2),[a]=e(s.subarray(0,i));return t.set(s.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var D0=45,p2=15,Oo=new rc;function nc(r){if(!(r.length>p2))return Oo.new(r).parseWith(()=>Oo.readIPv4Addr())}function oc(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>D0))return Oo.new(r).parseWith(()=>Oo.readIPv6Addr())}function Uo(r,e=!1){if(r.includes("%")&&(r=r.split("%")[0]),r.length>D0)return;let t=Oo.new(r).parseWith(()=>Oo.readIPAddr());if(t)return e&&t.length===4?Uint8Array.from([0,0,0,0,0,0,0,0,0,0,255,255,t[0],t[1],t[2],t[3]]):t}function N0(r,e,t){let n=0;for(let o of r)if(!(n<e)){if(n>t)break;if(o!==255)return!1;n++}return!0}function R0(r,e,t,n){let o=0;for(let s of r)if(!(o<t)){if(o>n)break;if(s!==e[o])return!1;o++}return!0}function Th(r){switch(r.length){case Fn:return r.join(".");case $n:{let e=[];for(let t=0;t<r.length;t++)t%2===0&&e.push(r[t].toString(16).padStart(2,"0")+r[t+1].toString(16).padStart(2,"0"));return e.join(":")}default:throw new Error("Invalid ip length")}}function M0(r){let e=0;for(let[t,n]of r.entries()){if(n===255){e+=8;continue}for(;(n&128)!=0;)e++,n=n<<1;if((n&128)!=0)return-1;for(let o=t+1;o<r.length;o++)if(r[o]!=0)return-1;break}return e}function O0(r){let e="0x";for(let t of r)e+=(t>>4).toString(16)+(t&15).toString(16);return e}var Fn=4,$n=16,A4=parseInt("0xFFFF",16),m2=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function li(r,e){e.length===$n&&r.length===Fn&&N0(e,0,11)&&(e=e.slice(12)),e.length===Fn&&r.length===$n&&R0(r,m2,0,11)&&(r=r.slice(12));let t=r.length;if(t!=e.length)throw new Error("Failed to mask ip");let n=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=r[o]&e[o];return n}function U0(r,e){if(typeof e=="string"&&(e=Uo(e)),e==null)throw new Error("Invalid ip");if(e.length!==r.network.length)return!1;for(let t=0;t<e.length;t++)if((r.network[t]&r.mask[t])!==(e[t]&r.mask[t]))return!1;return!0}function Bh(r){let[e,t]=r.split("/");if(!e||!t)throw new Error("Failed to parse given CIDR: "+r);let n=Fn,o=nc(e);if(o==null&&(n=$n,o=oc(e),o==null))throw new Error("Failed to parse given CIDR: "+r);let s=parseInt(t,10);if(Number.isNaN(s)||String(s).length!==t.length||s<0||s>n*8)throw new Error("Failed to parse given CIDR: "+r);let i=Lh(s,8*n);return{network:li(o,i),mask:i}}function Lh(r,e){if(e!==8*Fn&&e!==8*$n)throw new Error("Invalid CIDR mask");if(r<0||r>e)throw new Error("Invalid CIDR mask");let t=e/8,n=new Uint8Array(t);for(let o=0;o<t;o++){if(r>=8){n[o]=255,r-=8;continue}n[o]=255-(255>>r),r=0}return n}var Fo=class{constructor(e,t){if(t==null)({network:this.network,mask:this.mask}=Bh(e));else{let n=Uo(e);if(n==null)throw new Error("Failed to parse network");t=String(t);let o=parseInt(t,10);if(Number.isNaN(o)||String(o).length!==t.length||o<0||o>n.length*8){let s=Uo(t);if(s==null)throw new Error("Failed to parse mask");this.mask=s}else this.mask=Lh(o,8*n.length);this.network=li(n,this.mask)}}contains(e){return U0({network:this.network,mask:this.mask},e)}toString(){let e=M0(this.mask),t=e!==-1?String(e):O0(this.mask);return Th(this.network)+"/"+t}};function F0(r){try{let e=Q(r);switch(e.type){case"ip4":return e.host.startsWith("169.254.");case"ip6":return e.host.toLowerCase().startsWith("fe80");default:return!1}}catch{return!1}}function $0(r){return/^127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(r)||/^::1$/.test(r)}function ui(r){try{let e=Q(r);switch(e.type){case"ip4":case"ip6":return $0(e.host);default:return!1}}catch{return!1}}function $e(r){try{return Q(r),!0}catch{return!1}}function Kt(r){return!!nc(r)}function sc(r){return!!oc(r)}var K0=pn(V0(),1),g2=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.0.0/29","192.0.0.8/32","192.0.0.9/32","192.0.0.10/32","192.0.0.170/32","192.0.0.171/32","192.0.2.0/24","192.31.196.0/24","192.52.193.0/24","192.88.99.0/24","192.168.0.0/16","192.175.48.0/24","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","240.0.0.0/4","255.255.255.255/32"],y2=g2.map(r=>new K0.Netmask(r));function Ph(r){for(let e of y2)if(e.contains(r))return!0;return!1}function w2(r){return/^::ffff:([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4})$/.test(r)}function b2(r){let e=r.split(":");if(e.length<2)return!1;let t=e[e.length-1].padStart(4,"0"),n=e[e.length-2].padStart(4,"0"),o=`${parseInt(n.substring(0,2),16)}.${parseInt(n.substring(2),16)}.${parseInt(t.substring(0,2),16)}.${parseInt(t.substring(2),16)}`;return Ph(o)}function x2(r){return/^::ffff:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)}function v2(r){let e=r.split(":"),t=e[e.length-1];return Ph(t)}function E2(r){return/^::$/.test(r)||/^::1$/.test(r)||/^64:ff9b::([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^100::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:2[0-9a-fA-F]:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:db8:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2002:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^f[c-d]([0-9a-fA-F]{2,2}):/i.test(r)||/^fe[8-9a-bA-B][0-9a-fA-F]:/i.test(r)||/^ff([0-9a-fA-F]{2,2}):/i.test(r)}function $o(r){if(Kt(r))return Ph(r);if(w2(r))return b2(r);if(x2(r))return v2(r);if(sc(r))return E2(r)}function Ht(r){try{let e=Q(r);switch(e.type){case"ip4":case"ip6":return $o(e.host)??!1;default:return e.host==="localhost"}}catch{return!1}}function ae(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var ic=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||(e-1&e)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},Vo=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new ic(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){let t=this.head;this.head=t.next=new ic(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){let t=this.tail.next;this.tail.next=null,this.tail=t,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}};var Dh=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function Ko(r={}){return A2(t=>{let n=t.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function A2(r,e){e=e??{};let t=e.onEnd,n=new Vo,o,s,i,a=ae(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((w,b)=>{s=T=>{s=null,n.push(T);try{w(r(n))}catch(S){b(S)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=ae()})}},l=w=>s!=null?s(w):(n.push(w),o),u=w=>(n=new Vo,s!=null?s({error:w}):(n.push({error:w}),o)),f=w=>{if(i)return o;if(e?.objectMode!==!0&&w?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:w})},d=w=>i?o:(i=!0,w!=null?u(w):l({done:!0})),h=()=>(n=new Vo,d(),{done:!0}),p=w=>(d(w),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:h,throw:p,push:f,end:d,get readableLength(){return n.size},onEmpty:async w=>{let b=w?.signal;if(b?.throwIfAborted(),n.isEmpty())return;let T,S;b!=null&&(T=new Promise((D,K)=>{S=()=>{K(new Dh)},b.addEventListener("abort",S)}));try{await Promise.race([a.promise,T])}finally{S!=null&&b!=null&&b?.removeEventListener("abort",S)}}},t==null)return o;let g=o;return o={[Symbol.asyncIterator](){return this},next(){return g.next()},throw(w){return g.throw(w),t!=null&&(t(w),t=void 0),{done:!0}},return(){return g.return(),t!=null&&(t(),t=void 0),{done:!0}},push:f,end(w){return g.end(w),t!=null&&(t(w),t=void 0),o},get readableLength(){return g.readableLength},onEmpty:w=>g.onEmpty(w)},o}var Nh=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},Rh=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},H0=r=>globalThis.DOMException===void 0?new Rh(r):new DOMException(r),q0=r=>{let e=r.reason===void 0?H0("This operation was aborted."):r.reason;return e instanceof Error?e:H0(e)};function Mh(r,e){let{milliseconds:t,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout}}=e,i,a,l=new Promise((u,f)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(e.signal){let{signal:h}=e;h.aborted&&f(q0(h)),a=()=>{f(q0(h))},h.addEventListener("abort",a,{once:!0})}if(t===Number.POSITIVE_INFINITY){r.then(u,f);return}let d=new Nh;i=s.setTimeout.call(void 0,()=>{if(n){try{u(n())}catch(h){f(h)}return}typeof r.cancel=="function"&&r.cancel(),o===!1?u():o instanceof Error?f(o):(d.message=o??`Promise timed out after ${t} milliseconds`,f(d))},t),(async()=>{try{u(await r)}catch(h){f(h)}})()}).finally(()=>{l.clear(),a&&e.signal&&e.signal.removeEventListener("abort",a)});return l.clear=()=>{s.clearTimeout.call(void 0,i),i=void 0},l}var S2=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function I2(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:u}=S2(r),f=async(...h)=>{let p=t.multiArgs?h:h[0];if(t.filter)try{if(!await t.filter(p))return}catch(g){n(),i(g);return}c.push(p),t.count===c.length&&(n(),s(c))},d=(...h)=>{n(),i(t.rejectionMultiArgs?h:h[0])};n=()=>{for(let h of a)u(h,f);for(let h of t.rejectionEvents)a.includes(h)||u(h,d)};for(let h of a)l(h,f);for(let h of t.rejectionEvents)a.includes(h)||l(h,d);t.signal&&t.signal.addEventListener("abort",()=>{d(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=Mh(o,{milliseconds:t.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function Ho(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=I2(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}function di(r,e){let t,n=function(){let o=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(o,e)};return n.start=()=>{},n.stop=()=>{clearTimeout(t)},n}var ac=class extends Error{remainingPoints;msBeforeNext;consumedPoints;isFirstInDuration;constructor(e="Rate limit exceeded",t){super(e),this.name="RateLimitError",this.remainingPoints=t.remainingPoints,this.msBeforeNext=t.msBeforeNext,this.consumedPoints=t.consumedPoints,this.isFirstInDuration=t.isFirstInDuration}},cc=class extends Error{static name="QueueFullError";constructor(e="The queue was full"){super(e),this.name="QueueFullError"}},Vn=class extends Error{static name="UnexpectedEOFError";name="UnexpectedEOFError"};function k2(r){return r.reason}async function Xe(r,e,t){if(e==null)return r;let n=t?.translateError??k2;if(e.aborted)return r.catch(()=>{}),Promise.reject(n(e));let o;try{return await Promise.race([r,new Promise((s,i)=>{o=()=>{i(n(e))},e.addEventListener("abort",o)})])}finally{o!=null&&e.removeEventListener("abort",o)}}var lc=class{deferred;signal;constructor(e){this.signal=e,this.deferred=ae(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new dt)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function _2(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var uc=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=_2(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,this.controller.signal,this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new dt),this.cleanup())}async join(e={}){let t=new lc(e.signal);return this.recipients.push(t),e.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await Xe(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};var qt=class extends _e{concurrency;maxSize;queue;pending;sort;paused;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.maxSize=e.maxSize??Number.POSITIVE_INFINITY,this.pending=0,this.paused=!1,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.sort=e.sort,this.queue=[],this.emitEmpty=di(this.emitEmpty.bind(this),1),this.emitIdle=di(this.emitIdle.bind(this),1)}emitEmpty(){this.size===0&&this.safeDispatchEvent("empty")}emitIdle(){this.running===0&&this.safeDispatchEvent("idle")}pause(){this.paused=!0}resume(){this.paused&&(this.paused=!1,this.tryToStartAnother())}tryToStartAnother(){if(this.paused)return!1;if(this.size===0)return this.emitEmpty(),this.running===0&&this.emitIdle(),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(e){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}async add(e,t){if(t?.signal?.throwIfAborted(),this.size===this.maxSize)throw new cc;let n=new uc(e,t);return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),n.join(t).then(o=>(this.safeDispatchEvent("completed",{detail:o}),this.safeDispatchEvent("success",{detail:{job:n,result:o}}),o)).catch(o=>{if(n.status==="queued"){for(let s=0;s<this.queue.length;s++)if(this.queue[s]===n){this.queue.splice(s,1);break}}throw this.safeDispatchEvent("failure",{detail:{job:n,error:o}}),o})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new dt)}),this.clear()}async onEmpty(e){this.size!==0&&await Ho(this,"empty",e)}async onSizeLessThan(e,t){this.size<e||await Ho(this,"next",{...t,filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await Ho(this,"idle",e)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=Ko({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},o=c=>{c.detail!=null&&t.push(c.detail)},s=c=>{n(c.detail.error)},i=()=>{n()},a=()=>{n(new dt("Queue aborted"))};this.addEventListener("completed",o),this.addEventListener("failure",s),this.addEventListener("idle",i),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",o),this.removeEventListener("failure",s),this.removeEventListener("idle",i),e?.signal?.removeEventListener("abort",a),n()}}};var qo=class{movingAverage;variance;deviation;forecast;timeSpan;previousTime;constructor(e){this.timeSpan=e,this.movingAverage=0,this.variance=0,this.deviation=0,this.forecast=0}alpha(e,t){return 1-Math.exp(-(e-t)/this.timeSpan)}push(e,t=Date.now()){if(this.previousTime!=null){let n=this.alpha(t,this.previousTime),o=e-this.movingAverage,s=n*o;this.movingAverage=n*e+(1-n)*this.movingAverage,this.variance=(1-n)*(this.variance+o*s),this.deviation=Math.sqrt(this.variance),this.forecast=this.movingAverage+n*o}else this.movingAverage=e;this.previousTime=t}};var C2=1.2,T2=2,B2=5e3,L2=6e4,P2=5e3,fc=class{success;failure;next;metric;timeoutMultiplier;failureMultiplier;minTimeout;maxTimeout;constructor(e={}){let t=e.interval??P2;this.success=new qo(t),this.failure=new qo(t),this.next=new qo(t),this.failureMultiplier=e.failureMultiplier??T2,this.timeoutMultiplier=e.timeoutMultiplier??C2,this.minTimeout=e.minTimeout??B2,this.maxTimeout=e.maxTimeout??L2,e.metricName!=null&&(this.metric=e.metrics?.registerMetricGroup(e.metricName))}getTimeoutSignal(e={}){let t=Math.round(this.next.movingAverage*(e.timeoutFactor??this.timeoutMultiplier));t<this.minTimeout&&(t=this.minTimeout),t>this.maxTimeout&&(t=this.maxTimeout);let n=AbortSignal.timeout(t),o=pe([e.signal,n]);return o.start=Date.now(),o.timeout=t,o}cleanUp(e){let t=Date.now()-e.start;e.aborted?(this.failure.push(t),this.next.push(t*this.failureMultiplier),this.metric?.update({failureMovingAverage:this.failure.movingAverage,failureDeviation:this.failure.deviation,failureForecast:this.failure.forecast,failureVariance:this.failure.variance,failure:t})):(this.success.push(t),this.next.push(t),this.metric?.update({successMovingAverage:this.success.movingAverage,successDeviation:this.success.deviation,successForecast:this.success.forecast,successVariance:this.success.variance,success:t}))}};var Ve=class extends Error{static name="InvalidMultiaddrError";name="InvalidMultiaddrError"},Sr=class extends Error{static name="ValidationError";name="ValidationError"},dc=class extends Error{static name="InvalidParametersError";name="InvalidParametersError"},hc=class extends Error{static name="UnknownProtocolError";name="UnknownProtocolError"};function Uh(r){return e=>M(e,r)}function Fh(r){return e=>B(e,r)}function zo(r){return new DataView(r.buffer).getUint16(r.byteOffset).toString()}function Kn(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,typeof r=="string"?parseInt(r):r),new Uint8Array(e)}function z0(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==16)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion address.`);let t=B(e[0],"base32"),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=Kn(n);return Ce([t,o],t.length+o.length)}function G0(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==56)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion3 address.`);let t=Te.decode(`b${e[0]}`),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=Kn(n);return Ce([t,o],t.length+o.length)}function $h(r){let e=r.subarray(0,r.length-2),t=r.subarray(r.length-2),n=M(e,"base32"),o=zo(t);return`${n}:${o}`}var Vh=function(r){r=r.toString().trim();let e=new Uint8Array(4);return r.split(/\./g).forEach((t,n)=>{let o=parseInt(t,10);if(isNaN(o)||o<0||o>255)throw new Ve("Invalid byte value in IP address");e[n]=o}),e},W0=function(r){let e=0;r=r.toString().trim();let t=r.split(":",8),n;for(n=0;n<t.length;n++){let s=Kt(t[n]),i;s&&(i=Vh(t[n]),t[n]=M(i.subarray(0,2),"base16")),i!=null&&++n<8&&t.splice(n,0,M(i.subarray(2,4),"base16"))}if(t[0]==="")for(;t.length<8;)t.unshift("0");else if(t[t.length-1]==="")for(;t.length<8;)t.push("0");else if(t.length<8){for(n=0;n<t.length&&t[n]!=="";n++);let s=[n,1];for(n=9-t.length;n>0;n--)s.push("0");t.splice.apply(t,s)}let o=new Uint8Array(e+16);for(n=0;n<t.length;n++){t[n]===""&&(t[n]="0");let s=parseInt(t[n],16);if(isNaN(s)||s<0||s>65535)throw new Ve("Invalid byte value in IP address");o[e++]=s>>8&255,o[e++]=s&255}return o},j0=function(r){if(r.byteLength!==4)throw new Ve("IPv4 address was incorrect length");let e=[];for(let t=0;t<r.byteLength;t++)e.push(r[t]);return e.join(".")},Y0=function(r){if(r.byteLength!==16)throw new Ve("IPv6 address was incorrect length");let e=[];for(let n=0;n<r.byteLength;n+=2){let o=r[n],s=r[n+1],i=`${o.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")}`;e.push(i)}let t=e.join(":");try{let n=new URL(`http://[${t}]`);return n.hostname.substring(1,n.hostname.length-1)}catch{throw new Ve(`Invalid IPv6 address "${t}"`)}};function Z0(r){try{let e=new URL(`http://[${r}]`);return e.hostname.substring(1,e.hostname.length-1)}catch{throw new Ve(`Invalid IPv6 address "${r}"`)}}var Oh=Object.values(Ns).map(r=>r.decoder),D2=(function(){let r=Oh[0].or(Oh[1]);return Oh.slice(2).forEach(e=>r=r.or(e)),r})();function X0(r){return D2.decode(r)}function J0(r){return e=>r.encoder.encode(e)}function N2(r){if(parseInt(r).toString()!==r)throw new Sr("Value must be an integer")}function R2(r){if(r<0)throw new Sr("Value must be a positive integer, or zero")}function M2(r){return e=>{if(e>r)throw new Sr(`Value must be smaller than or equal to ${r}`)}}function O2(...r){return e=>{for(let t of r)t(e)}}var hi=O2(N2,R2,M2(65535));var De=-1,Kh=class{protocolsByCode=new Map;protocolsByName=new Map;getProtocol(e){let t;if(typeof e=="string"?t=this.protocolsByName.get(e):t=this.protocolsByCode.get(e),t==null)throw new hc(`Protocol ${e} was unknown`);return t}addProtocol(e){this.protocolsByCode.set(e.code,e),this.protocolsByName.set(e.name,e),e.aliases?.forEach(t=>{this.protocolsByName.set(t,e)})}removeProtocol(e){let t=this.protocolsByCode.get(e);t!=null&&(this.protocolsByCode.delete(t.code),this.protocolsByName.delete(t.name),t.aliases?.forEach(n=>{this.protocolsByName.delete(n)}))}},kr=new Kh,J2=[{code:4,name:"ip4",size:32,valueToBytes:Vh,bytesToValue:j0,validate:r=>{if(!Kt(r))throw new Sr(`Invalid IPv4 address "${r}"`)}},{code:6,name:"tcp",size:16,valueToBytes:Kn,bytesToValue:zo,validate:hi},{code:273,name:"udp",size:16,valueToBytes:Kn,bytesToValue:zo,validate:hi},{code:33,name:"dccp",size:16,valueToBytes:Kn,bytesToValue:zo,validate:hi},{code:41,name:"ip6",size:128,valueToBytes:W0,bytesToValue:Y0,stringToValue:Z0,validate:r=>{if(!sc(r))throw new Sr(`Invalid IPv6 address "${r}"`)}},{code:42,name:"ip6zone",size:De},{code:43,name:"ipcidr",size:8,bytesToValue:Uh("base10"),valueToBytes:Fh("base10")},{code:53,name:"dns",size:De},{code:54,name:"dns4",size:De},{code:55,name:"dns6",size:De},{code:56,name:"dnsaddr",size:De},{code:132,name:"sctp",size:16,valueToBytes:Kn,bytesToValue:zo,validate:hi},{code:301,name:"udt"},{code:302,name:"utp"},{code:400,name:"unix",size:De,stringToValue:r=>decodeURIComponent(r),valueToString:r=>encodeURIComponent(r)},{code:421,name:"p2p",aliases:["ipfs"],size:De,bytesToValue:Uh("base58btc"),valueToBytes:r=>r.startsWith("Q")||r.startsWith("1")?Fh("base58btc")(r):H.parse(r).multihash.bytes},{code:444,name:"onion",size:96,bytesToValue:$h,valueToBytes:z0},{code:445,name:"onion3",size:296,bytesToValue:$h,valueToBytes:G0},{code:446,name:"garlic64",size:De},{code:447,name:"garlic32",size:De},{code:448,name:"tls"},{code:449,name:"sni",size:De},{code:454,name:"noise"},{code:460,name:"quic"},{code:461,name:"quic-v1"},{code:465,name:"webtransport"},{code:466,name:"certhash",size:De,bytesToValue:J0(cd),valueToBytes:X0},{code:480,name:"http"},{code:481,name:"http-path",size:De,stringToValue:r=>`/${decodeURIComponent(r)}`,valueToString:r=>encodeURIComponent(r.substring(1))},{code:443,name:"https"},{code:477,name:"ws"},{code:478,name:"wss"},{code:479,name:"p2p-websocket-star"},{code:277,name:"p2p-stardust"},{code:275,name:"p2p-webrtc-star"},{code:276,name:"p2p-webrtc-direct"},{code:280,name:"webrtc-direct"},{code:281,name:"webrtc"},{code:290,name:"p2p-circuit"},{code:777,name:"memory",size:De}];J2.forEach(r=>{kr.addProtocol(r)});function Q0(r){let e=[],t=0;for(;t<r.length;){let n=Ln(r,t),o=kr.getProtocol(n),s=Pe(n),i=Q2(o,r,t+s),a=0;i>0&&o.size===De&&(a=Pe(i));let c=s+a+i,l={code:n,name:o.name,bytes:r.subarray(t,t+c)};if(i>0){let u=t+s+a,f=r.subarray(u,u+i);l.value=o.bytesToValue?.(f)??M(f)}e.push(l),t+=c}return e}function ew(r){let e=0,t=[];for(let n of r){if(n.bytes==null){let o=kr.getProtocol(n.code),s=Pe(n.code),i,a=0,c=0;n.value!=null&&(i=o.valueToBytes?.(n.value)??B(n.value),a=i.byteLength,o.size===De&&(c=Pe(a)));let l=new Uint8Array(s+c+a),u=0;Do(n.code,l,u),u+=s,i!=null&&(o.size===De&&(Do(a,l,u),u+=c),l.set(i,u)),n.bytes=l}t.push(n.bytes),e+=n.bytes.byteLength}return Ce(t,e)}function tw(r){if(r.charAt(0)!=="/")throw new Ve('String multiaddr must start with "/"');let e=[],t="protocol",n="",o="";for(let s=1;s<r.length;s++){let i=r.charAt(s);i!=="/"&&(t==="protocol"?o+=r.charAt(s):n+=r.charAt(s));let a=s===r.length-1;if(i==="/"||a){let c=kr.getProtocol(o);if(t==="protocol"){if(c.size==null||c.size===0){e.push({code:c.code,name:c.name}),n="",o="",t="protocol";continue}else if(a)throw new Ve(`Component ${o} was missing value`);t="value"}else if(t==="value"){let l={code:c.code,name:c.name};if(c.size!=null&&c.size!==0){if(n==="")throw new Ve(`Component ${o} was missing value`);l.value=c.stringToValue?.(n)??n}e.push(l),n="",o="",t="protocol"}}}if(o!==""&&n!=="")throw new Ve("Incomplete multiaddr");return e}function rw(r){return`/${r.flatMap(e=>{if(e.value==null)return e.name;let t=kr.getProtocol(e.code);if(t==null)throw new Ve(`Unknown protocol code ${e.code}`);return[e.name,t.valueToString?.(e.value)??e.value]}).join("/")}`}function Q2(r,e,t){return r.size==null||r.size===0?0:r.size>0?r.size/8:Ln(e,t)}var eS=Symbol.for("nodejs.util.inspect.custom"),Jh=Symbol.for("@multiformats/multiaddr");function tS(r){if(r==null&&(r="/"),nn(r))return r.getComponents();if(r instanceof Uint8Array)return Q0(r);if(typeof r=="string")return r=r.replace(/\/(\/)+/,"/").replace(/(\/)+$/,""),r===""&&(r="/"),tw(r);if(Array.isArray(r))return r;throw new Ve("Must be a string, Uint8Array, Component[], or another Multiaddr")}var wc=class r{[Jh]=!0;#e;#t;#r;constructor(e="/",t={}){this.#e=tS(e),t.validate!==!1&&rS(this)}get bytes(){return this.#r==null&&(this.#r=ew(this.#e)),this.#r}toString(){return this.#t==null&&(this.#t=rw(this.#e)),this.#t}toJSON(){return this.toString()}getComponents(){return[...this.#e.map(e=>({...e}))]}encapsulate(e){let t=new r(e);return new r([...this.#e,...t.getComponents()],{validate:!1})}decapsulate(e){let t=e.toString(),n=this.toString(),o=n.lastIndexOf(t);if(o<0)throw new dc(`Address ${this.toString()} does not contain subaddress: ${t}`);return new r(n.slice(0,o),{validate:!1})}decapsulateCode(e){let t;for(let n=this.#e.length-1;n>-1;n--)if(this.#e[n].code===e){t=n;break}return new r(this.#e.slice(0,t),{validate:!1})}equals(e){return X(this.bytes,e.bytes)}[eS](){return`Multiaddr(${this.toString()})`}};function rS(r){r.getComponents().forEach(e=>{let t=kr.getProtocol(e.code);e.value!=null&&t.validate?.(e.value)})}function nn(r){return!!r?.[Jh]}function ee(r){return new wc(r)}var Qh=class{readNext;haveNext;ended;nextResult;error;constructor(){this.ended=!1,this.readNext=ae(),this.haveNext=ae()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let e=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=ae(),e}async throw(e){return this.ended=!0,this.error=e,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return this.ended=!0,this.nextResult=e,this.haveNext.resolve(),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw this.error??new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=ae(),await Xe(this.readNext.promise,t?.signal,t)}};function nw(){return new Qh}function nS(r){return r[Symbol.asyncIterator]!=null}async function oS(r,e,t){try{await Promise.all(r.map(async n=>{for await(let o of n)await e.push(o,{signal:t}),t.throwIfAborted()})),await e.end(void 0,{signal:t})}catch(n){await e.end(n,{signal:t}).catch(()=>{})}}async function*sS(r){let e=new AbortController,t=nw();oS(r,t,e.signal).catch(()=>{});try{yield*t}finally{e.abort()}}function*iS(r){for(let e of r)yield*e}function aS(...r){let e=[];for(let t of r)nS(t)||e.push(t);return e.length===r.length?iS(e):sS(r)}var It=aS;var lS=4194304,bc=class extends Error{static name="UnwrappedError";name="UnwrappedError"},tp=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},rp=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},np=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function uS(r){return typeof r?.closeRead=="function"}function fS(r){return typeof r?.close=="function"}function ep(r){return uS(r)?r.remoteWriteStatus!=="writable"&&r.readBufferLength===0:fS(r)?r.status!=="open":!1}function dS(r){return r?.addEventListener!=null&&r?.removeEventListener!=null&&r?.send!=null&&r?.push!=null&&r?.log!=null}function op(r,e){let t=e?.maxBufferSize??lS,n=new se,o,s=!1;if(!dS(r))throw new k("Argument should be a Stream or a Multiaddr");let i=u=>{if(n.append(u.data),n.byteLength>t){let f=n.byteLength;n.consume(n.byteLength),o?.reject(new Error(`Read buffer overflow - ${f} > ${t}`))}o?.resolve()};r.addEventListener("message",i);let a=u=>{u.error!=null?o?.reject(u.error):o?.resolve()};r.addEventListener("close",a);let c=()=>{o?.resolve()};r.addEventListener("remoteCloseWrite",c);let l={readBuffer:n,async read(u){if(s===!0)throw new bc("Stream was unwrapped");if(ep(r)){if(u?.bytes==null)return null;if(n.byteLength<u.bytes)throw r.log.error("closed after reading %d/%d bytes",n.byteLength,u.bytes),new Vn(`Unexpected EOF - stream closed after reading ${n.byteLength}/${u.bytes} bytes`)}let f=u?.bytes??1;for(o=Promise.withResolvers();;){if(n.byteLength>=f){o.resolve();break}if(await Xe(o.promise,u?.signal),ep(r)){if(n.byteLength===0&&u?.bytes==null)return null;break}o=Promise.withResolvers()}let d=u?.bytes??n.byteLength;if(n.byteLength<d){if(ep(r))throw r.log.error("closed while reading %d/%d bytes",n.byteLength,d),new Vn(`Unexpected EOF - stream closed while reading ${n.byteLength}/${d} bytes`);return l.read(u)}let h=n.sublist(0,d);return n.consume(d),h},async write(u,f){if(s===!0)throw new bc("Stream was unwrapped");r.send(u)||await Ho(r,"drain",{signal:f?.signal,rejectionEvents:["close"]})},unwrap(){return s||(s=!0,r.removeEventListener("message",i),r.removeEventListener("close",a),r.removeEventListener("remoteCloseWrite",c),n.byteLength>0&&(r.log("stream unwrapped with %d unread bytes",n.byteLength),r.push(n))),r}};return l}function xc(r,e={}){let t=op(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=Pe(e.maxDataLength));let n=e?.lengthDecoder??Ln,o=e?.lengthEncoder??Xr;return{async read(i){let a=-1,c=new se;for(;;){let u=await t.read({...i,bytes:1});if(u==null)break;c.append(u);try{a=n(c)}catch(f){if(f instanceof RangeError)continue;throw f}if(a<0)throw new tp("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new np(`Message length length too long - ${c.byteLength} > ${e.maxLengthLength}`);if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new rp(`Message length too long - ${a} > ${e.maxDataLength}`);let l=await t.read({...i,bytes:a});if(l==null)throw r.log.error("tried to read %d bytes but the stream closed",a),new Vn(`Unexpected EOF - tried to read ${a} bytes but the stream closed`);if(l.byteLength!==a)throw r.log.error("read %d/%d bytes before the stream closed",l.byteLength,a),new Vn(`Unexpected EOF - read ${l.byteLength}/${a} bytes before the stream closed`);return l},async write(i,a){await t.write(new se(o(i.byteLength),i),a)},async writeV(i,a){let c=new se(...i.flatMap(l=>[o(l.byteLength),l]));await t.write(c,a)},unwrap(){return t.unwrap()}}}var hS=["string","number","bigint","symbol"],pS=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","HTMLElement","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function ow(r){if(r===null)return"null";if(r===void 0)return"undefined";if(r===!0||r===!1)return"boolean";let e=typeof r;if(hS.includes(e))return e;if(e==="function")return"Function";if(Array.isArray(r))return"Array";if(mS(r))return"Buffer";let t=gS(r);return t||"Object"}function mS(r){return r&&r.constructor&&r.constructor.isBuffer&&r.constructor.isBuffer.call(null,r)}function gS(r){let e=Object.prototype.toString.call(r).slice(8,-1);if(pS.includes(e))return e}var m=class{constructor(e,t,n){this.major=e,this.majorEncoded=e<<5,this.name=t,this.terminal=n}toString(){return`Type[${this.major}].${this.name}`}compare(e){return this.major<e.major?-1:this.major>e.major?1:0}};m.uint=new m(0,"uint",!0);m.negint=new m(1,"negint",!0);m.bytes=new m(2,"bytes",!0);m.string=new m(3,"string",!0);m.array=new m(4,"array",!1);m.map=new m(5,"map",!1);m.tag=new m(6,"tag",!1);m.float=new m(7,"float",!0);m.false=new m(7,"false",!0);m.true=new m(7,"true",!0);m.null=new m(7,"null",!0);m.undefined=new m(7,"undefined",!0);m.break=new m(7,"break",!0);var I=class{constructor(e,t,n){this.type=e,this.value=t,this.encodedLength=n,this.encodedBytes=void 0,this.byteValue=void 0}toString(){return`Token[${this.type}].${this.value}`}};var Zo=globalThis.process&&!globalThis.process.browser&&globalThis.Buffer&&typeof globalThis.Buffer.isBuffer=="function",yS=new TextDecoder,wS=new TextEncoder;function vc(r){return Zo&&globalThis.Buffer.isBuffer(r)}function wi(r){return r instanceof Uint8Array?vc(r)?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r:Uint8Array.from(r)}var cw=Zo?(r,e,t)=>t-e>64?globalThis.Buffer.from(r.subarray(e,t)).toString("utf8"):iw(r,e,t):(r,e,t)=>t-e>64?yS.decode(r.subarray(e,t)):iw(r,e,t),Ec=Zo?r=>r.length>64?globalThis.Buffer.from(r):sw(r):r=>r.length>64?wS.encode(r):sw(r),ur=r=>Uint8Array.from(r),Xo=Zo?(r,e,t)=>vc(r)?new Uint8Array(r.subarray(e,t)):r.slice(e,t):(r,e,t)=>r.slice(e,t),lw=Zo?(r,e)=>(r=r.map(t=>t instanceof Uint8Array?t:globalThis.Buffer.from(t)),wi(globalThis.Buffer.concat(r,e))):(r,e)=>{let t=new Uint8Array(e),n=0;for(let o of r)n+o.length>t.length&&(o=o.subarray(0,t.length-n)),t.set(o,n),n+=o.length;return t},uw=Zo?r=>globalThis.Buffer.allocUnsafe(r):r=>new Uint8Array(r);function Ac(r,e){if(vc(r)&&vc(e))return r.compare(e);for(let t=0;t<r.length;t++)if(r[t]!==e[t])return r[t]<e[t]?-1:1;return 0}function sw(r){let e=[],t=0;for(let n=0;n<r.length;n++){let o=r.charCodeAt(n);o<128?e[t++]=o:o<2048?(e[t++]=o>>6|192,e[t++]=o&63|128):(o&64512)===55296&&n+1<r.length&&(r.charCodeAt(n+1)&64512)===56320?(o=65536+((o&1023)<<10)+(r.charCodeAt(++n)&1023),e[t++]=o>>18|240,e[t++]=o>>12&63|128,e[t++]=o>>6&63|128,e[t++]=o&63|128):(e[t++]=o>>12|224,e[t++]=o>>6&63|128,e[t++]=o&63|128)}return e}function iw(r,e,t){let n=[];for(;e<t;){let o=r[e],s=null,i=o>239?4:o>223?3:o>191?2:1;if(e+i<=t){let a,c,l,u;switch(i){case 1:o<128&&(s=o);break;case 2:a=r[e+1],(a&192)===128&&(u=(o&31)<<6|a&63,u>127&&(s=u));break;case 3:a=r[e+1],c=r[e+2],(a&192)===128&&(c&192)===128&&(u=(o&15)<<12|(a&63)<<6|c&63,u>2047&&(u<55296||u>57343)&&(s=u));break;case 4:a=r[e+1],c=r[e+2],l=r[e+3],(a&192)===128&&(c&192)===128&&(l&192)===128&&(u=(o&15)<<18|(a&63)<<12|(c&63)<<6|l&63,u>65535&&u<1114112&&(s=u))}}s===null?(s=65533,i=1):s>65535&&(s-=65536,n.push(s>>>10&1023|55296),s=56320|s&1023),n.push(s),e+=i}return sp(n)}var aw=4096;function sp(r){let e=r.length;if(e<=aw)return String.fromCharCode.apply(String,r);let t="",n=0;for(;n<e;)t+=String.fromCharCode.apply(String,r.slice(n,n+=aw));return t}var bS=256,bi=class{constructor(e=bS){this.chunkSize=e,this.cursor=0,this.maxCursor=-1,this.chunks=[],this._initReuseChunk=null}reset(){this.cursor=0,this.maxCursor=-1,this.chunks.length&&(this.chunks=[]),this._initReuseChunk!==null&&(this.chunks.push(this._initReuseChunk),this.maxCursor=this._initReuseChunk.length-1)}push(e){let t=this.chunks[this.chunks.length-1];if(this.cursor+e.length<=this.maxCursor+1){let o=t.length-(this.maxCursor-this.cursor)-1;t.set(e,o)}else{if(t){let o=t.length-(this.maxCursor-this.cursor)-1;o<t.length&&(this.chunks[this.chunks.length-1]=t.subarray(0,o),this.maxCursor=this.cursor-1)}e.length<64&&e.length<this.chunkSize?(t=uw(this.chunkSize),this.chunks.push(t),this.maxCursor+=t.length,this._initReuseChunk===null&&(this._initReuseChunk=t),t.set(e,0)):(this.chunks.push(e),this.maxCursor+=e.length)}this.cursor+=e.length}toBytes(e=!1){let t;if(this.chunks.length===1){let n=this.chunks[0];e&&this.cursor>n.length/2?(t=this.cursor===n.length?n:n.subarray(0,this.cursor),this._initReuseChunk=null,this.chunks=[]):t=Xo(n,0,this.cursor)}else t=lw(this.chunks,this.cursor);return e&&this.reset(),t}};var F="CBOR decode error:",_r="CBOR encode error:",xi=[];xi[23]=1;xi[24]=2;xi[25]=3;xi[26]=5;xi[27]=9;function Cr(r,e,t){if(r.length-e<t)throw new Error(`${F} not enough data for type`)}var Ne=[24,256,65536,4294967296,BigInt("18446744073709551616")];function gt(r,e,t){Cr(r,e,1);let n=r[e];if(t.strict===!0&&n<Ne[0])throw new Error(`${F} integer encoded in more bytes than necessary (strict decode)`);return n}function yt(r,e,t){Cr(r,e,2);let n=r[e]<<8|r[e+1];if(t.strict===!0&&n<Ne[1])throw new Error(`${F} integer encoded in more bytes than necessary (strict decode)`);return n}function wt(r,e,t){Cr(r,e,4);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3];if(t.strict===!0&&n<Ne[2])throw new Error(`${F} integer encoded in more bytes than necessary (strict decode)`);return n}function bt(r,e,t){Cr(r,e,8);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3],o=r[e+4]*16777216+(r[e+5]<<16)+(r[e+6]<<8)+r[e+7],s=(BigInt(n)<<BigInt(32))+BigInt(o);if(t.strict===!0&&s<Ne[3])throw new Error(`${F} integer encoded in more bytes than necessary (strict decode)`);if(s<=Number.MAX_SAFE_INTEGER)return Number(s);if(t.allowBigInt===!0)return s;throw new Error(`${F} integers outside of the safe integer range are not supported`)}function fw(r,e,t,n){return new I(m.uint,gt(r,e+1,n),2)}function dw(r,e,t,n){return new I(m.uint,yt(r,e+1,n),3)}function hw(r,e,t,n){return new I(m.uint,wt(r,e+1,n),5)}function pw(r,e,t,n){return new I(m.uint,bt(r,e+1,n),9)}function kt(r,e){return Ke(r,0,e.value)}function Ke(r,e,t){if(t<Ne[0]){let n=Number(t);r.push([e|n])}else if(t<Ne[1]){let n=Number(t);r.push([e|24,n])}else if(t<Ne[2]){let n=Number(t);r.push([e|25,n>>>8,n&255])}else if(t<Ne[3]){let n=Number(t);r.push([e|26,n>>>24&255,n>>>16&255,n>>>8&255,n&255])}else{let n=BigInt(t);if(n<Ne[4]){let o=[e|27,0,0,0,0,0,0,0],s=Number(n&BigInt(4294967295)),i=Number(n>>BigInt(32)&BigInt(4294967295));o[8]=s&255,s=s>>8,o[7]=s&255,s=s>>8,o[6]=s&255,s=s>>8,o[5]=s&255,o[4]=i&255,i=i>>8,o[3]=i&255,i=i>>8,o[2]=i&255,i=i>>8,o[1]=i&255,r.push(o)}else throw new Error(`${F} encountered BigInt larger than allowable range`)}}kt.encodedSize=function(e){return Ke.encodedSize(e.value)};Ke.encodedSize=function(e){return e<Ne[0]?1:e<Ne[1]?2:e<Ne[2]?3:e<Ne[3]?5:9};kt.compareTokens=function(e,t){return e.value<t.value?-1:e.value>t.value?1:0};function mw(r,e,t,n){return new I(m.negint,-1-gt(r,e+1,n),2)}function gw(r,e,t,n){return new I(m.negint,-1-yt(r,e+1,n),3)}function yw(r,e,t,n){return new I(m.negint,-1-wt(r,e+1,n),5)}var ip=BigInt(-1),ww=BigInt(1);function bw(r,e,t,n){let o=bt(r,e+1,n);if(typeof o!="bigint"){let s=-1-o;if(s>=Number.MIN_SAFE_INTEGER)return new I(m.negint,s,9)}if(n.allowBigInt!==!0)throw new Error(`${F} integers outside of the safe integer range are not supported`);return new I(m.negint,ip-BigInt(o),9)}function Sc(r,e){let t=e.value,n=typeof t=="bigint"?t*ip-ww:t*-1-1;Ke(r,e.type.majorEncoded,n)}Sc.encodedSize=function(e){let t=e.value,n=typeof t=="bigint"?t*ip-ww:t*-1-1;return n<Ne[0]?1:n<Ne[1]?2:n<Ne[2]?3:n<Ne[3]?5:9};Sc.compareTokens=function(e,t){return e.value<t.value?1:e.value>t.value?-1:0};function vi(r,e,t,n){Cr(r,e,t+n);let o=Xo(r,e+t,e+t+n);return new I(m.bytes,o,t+n)}function xw(r,e,t,n){return vi(r,e,1,t)}function vw(r,e,t,n){return vi(r,e,2,gt(r,e+1,n))}function Ew(r,e,t,n){return vi(r,e,3,yt(r,e+1,n))}function Aw(r,e,t,n){return vi(r,e,5,wt(r,e+1,n))}function Sw(r,e,t,n){let o=bt(r,e+1,n);if(typeof o=="bigint")throw new Error(`${F} 64-bit integer bytes lengths not supported`);return vi(r,e,9,o)}function Ic(r){return r.encodedBytes===void 0&&(r.encodedBytes=r.type===m.string?Ec(r.value):r.value),r.encodedBytes}function Jo(r,e){let t=Ic(e);Ke(r,e.type.majorEncoded,t.length),r.push(t)}Jo.encodedSize=function(e){let t=Ic(e);return Ke.encodedSize(t.length)+t.length};Jo.compareTokens=function(e,t){return vS(Ic(e),Ic(t))};function vS(r,e){return r.length<e.length?-1:r.length>e.length?1:Ac(r,e)}function Ei(r,e,t,n,o){let s=t+n;Cr(r,e,s);let i=new I(m.string,cw(r,e+t,e+s),s);return o.retainStringBytes===!0&&(i.byteValue=Xo(r,e+t,e+s)),i}function Iw(r,e,t,n){return Ei(r,e,1,t,n)}function kw(r,e,t,n){return Ei(r,e,2,gt(r,e+1,n),n)}function _w(r,e,t,n){return Ei(r,e,3,yt(r,e+1,n),n)}function Cw(r,e,t,n){return Ei(r,e,5,wt(r,e+1,n),n)}function Tw(r,e,t,n){let o=bt(r,e+1,n);if(typeof o=="bigint")throw new Error(`${F} 64-bit integer string lengths not supported`);return Ei(r,e,9,o,n)}var Bw=Jo;function Qo(r,e,t,n){return new I(m.array,n,t)}function Lw(r,e,t,n){return Qo(r,e,1,t)}function Pw(r,e,t,n){return Qo(r,e,2,gt(r,e+1,n))}function Dw(r,e,t,n){return Qo(r,e,3,yt(r,e+1,n))}function Nw(r,e,t,n){return Qo(r,e,5,wt(r,e+1,n))}function Rw(r,e,t,n){let o=bt(r,e+1,n);if(typeof o=="bigint")throw new Error(`${F} 64-bit integer array lengths not supported`);return Qo(r,e,9,o)}function Mw(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${F} indefinite length items not allowed`);return Qo(r,e,1,1/0)}function kc(r,e){Ke(r,m.array.majorEncoded,e.value)}kc.compareTokens=kt.compareTokens;kc.encodedSize=function(e){return Ke.encodedSize(e.value)};function es(r,e,t,n){return new I(m.map,n,t)}function Ow(r,e,t,n){return es(r,e,1,t)}function Uw(r,e,t,n){return es(r,e,2,gt(r,e+1,n))}function Fw(r,e,t,n){return es(r,e,3,yt(r,e+1,n))}function $w(r,e,t,n){return es(r,e,5,wt(r,e+1,n))}function Vw(r,e,t,n){let o=bt(r,e+1,n);if(typeof o=="bigint")throw new Error(`${F} 64-bit integer map lengths not supported`);return es(r,e,9,o)}function Kw(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${F} indefinite length items not allowed`);return es(r,e,1,1/0)}function _c(r,e){Ke(r,m.map.majorEncoded,e.value)}_c.compareTokens=kt.compareTokens;_c.encodedSize=function(e){return Ke.encodedSize(e.value)};function Hw(r,e,t,n){return new I(m.tag,t,1)}function qw(r,e,t,n){return new I(m.tag,gt(r,e+1,n),2)}function zw(r,e,t,n){return new I(m.tag,yt(r,e+1,n),3)}function Gw(r,e,t,n){return new I(m.tag,wt(r,e+1,n),5)}function Ww(r,e,t,n){return new I(m.tag,bt(r,e+1,n),9)}function Cc(r,e){Ke(r,m.tag.majorEncoded,e.value)}Cc.compareTokens=kt.compareTokens;Cc.encodedSize=function(e){return Ke.encodedSize(e.value)};var _S=20,CS=21,TS=22,BS=23;function jw(r,e,t,n){if(n.allowUndefined===!1)throw new Error(`${F} undefined values are not supported`);return n.coerceUndefinedToNull===!0?new I(m.null,null,1):new I(m.undefined,void 0,1)}function Yw(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${F} indefinite length items not allowed`);return new I(m.break,void 0,1)}function ap(r,e,t){if(t){if(t.allowNaN===!1&&Number.isNaN(r))throw new Error(`${F} NaN values are not supported`);if(t.allowInfinity===!1&&(r===1/0||r===-1/0))throw new Error(`${F} Infinity values are not supported`)}return new I(m.float,r,e)}function Zw(r,e,t,n){return ap(cp(r,e+1),3,n)}function Xw(r,e,t,n){return ap(lp(r,e+1),5,n)}function Jw(r,e,t,n){return ap(rb(r,e+1),9,n)}function Tc(r,e,t){let n=e.value;if(n===!1)r.push([m.float.majorEncoded|_S]);else if(n===!0)r.push([m.float.majorEncoded|CS]);else if(n===null)r.push([m.float.majorEncoded|TS]);else if(n===void 0)r.push([m.float.majorEncoded|BS]);else{let o,s=!1;(!t||t.float64!==!0)&&(eb(n),o=cp(zt,1),n===o||Number.isNaN(n)?(zt[0]=249,r.push(zt.slice(0,3)),s=!0):(tb(n),o=lp(zt,1),n===o&&(zt[0]=250,r.push(zt.slice(0,5)),s=!0))),s||(LS(n),o=rb(zt,1),zt[0]=251,r.push(zt.slice(0,9)))}}Tc.encodedSize=function(e,t){let n=e.value;if(n===!1||n===!0||n===null||n===void 0)return 1;if(!t||t.float64!==!0){eb(n);let o=cp(zt,1);if(n===o||Number.isNaN(n))return 3;if(tb(n),o=lp(zt,1),n===o)return 5}return 9};var Qw=new ArrayBuffer(9),_t=new DataView(Qw,1),zt=new Uint8Array(Qw,0);function eb(r){if(r===1/0)_t.setUint16(0,31744,!1);else if(r===-1/0)_t.setUint16(0,64512,!1);else if(Number.isNaN(r))_t.setUint16(0,32256,!1);else{_t.setFloat32(0,r);let e=_t.getUint32(0),t=(e&2139095040)>>23,n=e&8388607;if(t===255)_t.setUint16(0,31744,!1);else if(t===0)_t.setUint16(0,(r&2147483648)>>16|n>>13,!1);else{let o=t-127;o<-24?_t.setUint16(0,0):o<-14?_t.setUint16(0,(e&2147483648)>>16|1<<24+o,!1):_t.setUint16(0,(e&2147483648)>>16|o+15<<10|n>>13,!1)}}}function cp(r,e){if(r.length-e<2)throw new Error(`${F} not enough data for float16`);let t=(r[e]<<8)+r[e+1];if(t===31744)return 1/0;if(t===64512)return-1/0;if(t===32256)return NaN;let n=t>>10&31,o=t&1023,s;return n===0?s=o*2**-24:n!==31?s=(o+1024)*2**(n-25):s=o===0?1/0:NaN,t&32768?-s:s}function tb(r){_t.setFloat32(0,r,!1)}function lp(r,e){if(r.length-e<4)throw new Error(`${F} not enough data for float32`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,4).getFloat32(0,!1)}function LS(r){_t.setFloat64(0,r,!1)}function rb(r,e){if(r.length-e<8)throw new Error(`${F} not enough data for float64`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,8).getFloat64(0,!1)}Tc.compareTokens=kt.compareTokens;function oe(r,e,t){throw new Error(`${F} encountered invalid minor (${t}) for major ${r[e]>>>5}`)}function Bc(r){return()=>{throw new Error(`${F} ${r}`)}}var L=[];for(let r=0;r<=23;r++)L[r]=oe;L[24]=fw;L[25]=dw;L[26]=hw;L[27]=pw;L[28]=oe;L[29]=oe;L[30]=oe;L[31]=oe;for(let r=32;r<=55;r++)L[r]=oe;L[56]=mw;L[57]=gw;L[58]=yw;L[59]=bw;L[60]=oe;L[61]=oe;L[62]=oe;L[63]=oe;for(let r=64;r<=87;r++)L[r]=xw;L[88]=vw;L[89]=Ew;L[90]=Aw;L[91]=Sw;L[92]=oe;L[93]=oe;L[94]=oe;L[95]=Bc("indefinite length bytes/strings are not supported");for(let r=96;r<=119;r++)L[r]=Iw;L[120]=kw;L[121]=_w;L[122]=Cw;L[123]=Tw;L[124]=oe;L[125]=oe;L[126]=oe;L[127]=Bc("indefinite length bytes/strings are not supported");for(let r=128;r<=151;r++)L[r]=Lw;L[152]=Pw;L[153]=Dw;L[154]=Nw;L[155]=Rw;L[156]=oe;L[157]=oe;L[158]=oe;L[159]=Mw;for(let r=160;r<=183;r++)L[r]=Ow;L[184]=Uw;L[185]=Fw;L[186]=$w;L[187]=Vw;L[188]=oe;L[189]=oe;L[190]=oe;L[191]=Kw;for(let r=192;r<=215;r++)L[r]=Hw;L[216]=qw;L[217]=zw;L[218]=Gw;L[219]=Ww;L[220]=oe;L[221]=oe;L[222]=oe;L[223]=oe;for(let r=224;r<=243;r++)L[r]=Bc("simple values are not supported");L[244]=oe;L[245]=oe;L[246]=oe;L[247]=jw;L[248]=Bc("simple values are not supported");L[249]=Zw;L[250]=Xw;L[251]=Jw;L[252]=oe;L[253]=oe;L[254]=oe;L[255]=Yw;var Gt=[];for(let r=0;r<24;r++)Gt[r]=new I(m.uint,r,1);for(let r=-1;r>=-24;r--)Gt[31-r]=new I(m.negint,r,1);Gt[64]=new I(m.bytes,new Uint8Array(0),1);Gt[96]=new I(m.string,"",1);Gt[128]=new I(m.array,0,1);Gt[160]=new I(m.map,0,1);Gt[244]=new I(m.false,!1,1);Gt[245]=new I(m.true,!0,1);Gt[246]=new I(m.null,null,1);function up(r){switch(r.type){case m.false:return ur([244]);case m.true:return ur([245]);case m.null:return ur([246]);case m.bytes:return r.value.length?void 0:ur([64]);case m.string:return r.value===""?ur([96]):void 0;case m.array:return r.value===0?ur([128]):void 0;case m.map:return r.value===0?ur([160]):void 0;case m.uint:return r.value<24?ur([Number(r.value)]):void 0;case m.negint:if(r.value>=-24)return ur([31-Number(r.value)])}}var DS={float64:!1,mapSorter:MS,quickEncodeToken:up},ob=Object.freeze({float64:!0,mapSorter:OS,quickEncodeToken:up});function NS(){let r=[];return r[m.uint.major]=kt,r[m.negint.major]=Sc,r[m.bytes.major]=Jo,r[m.string.major]=Bw,r[m.array.major]=kc,r[m.map.major]=_c,r[m.tag.major]=Cc,r[m.float.major]=Tc,r}var dp=NS(),fp=new bi,Pc=class r{constructor(e,t){this.obj=e,this.parent=t}includes(e){let t=this;do if(t.obj===e)return!0;while(t=t.parent);return!1}static createCheck(e,t){if(e&&e.includes(t))throw new Error(`${_r} object contains circular references`);return new r(t,e)}},on={null:new I(m.null,null),undefined:new I(m.undefined,void 0),true:new I(m.true,!0),false:new I(m.false,!1),emptyArray:new I(m.array,0),emptyMap:new I(m.map,0)},sn={number(r,e,t,n){return!Number.isInteger(r)||!Number.isSafeInteger(r)?new I(m.float,r):r>=0?new I(m.uint,r):new I(m.negint,r)},bigint(r,e,t,n){return r>=BigInt(0)?new I(m.uint,r):new I(m.negint,r)},Uint8Array(r,e,t,n){return new I(m.bytes,r)},string(r,e,t,n){return new I(m.string,r)},boolean(r,e,t,n){return r?on.true:on.false},null(r,e,t,n){return on.null},undefined(r,e,t,n){return on.undefined},ArrayBuffer(r,e,t,n){return new I(m.bytes,new Uint8Array(r))},DataView(r,e,t,n){return new I(m.bytes,new Uint8Array(r.buffer,r.byteOffset,r.byteLength))},Array(r,e,t,n){if(!r.length)return t.addBreakTokens===!0?[on.emptyArray,new I(m.break)]:on.emptyArray;n=Pc.createCheck(n,r);let o=[],s=0;for(let i of r)o[s++]=Lc(i,t,n);return t.addBreakTokens?[new I(m.array,r.length),o,new I(m.break)]:[new I(m.array,r.length),o]},Object(r,e,t,n){let o=e!=="Object",s=o?r.keys():Object.keys(r),i=o?r.size:s.length;if(!i)return t.addBreakTokens===!0?[on.emptyMap,new I(m.break)]:on.emptyMap;n=Pc.createCheck(n,r);let a=[],c=0;for(let l of s)a[c++]=[Lc(l,t,n),Lc(o?r.get(l):r[l],t,n)];return RS(a,t),t.addBreakTokens?[new I(m.map,i),a,new I(m.break)]:[new I(m.map,i),a]}};sn.Map=sn.Object;sn.Buffer=sn.Uint8Array;for(let r of"Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64".split(" "))sn[`${r}Array`]=sn.DataView;function Lc(r,e={},t){let n=ow(r),o=e&&e.typeEncoders&&e.typeEncoders[n]||sn[n];if(typeof o=="function"){let i=o(r,n,e,t);if(i!=null)return i}let s=sn[n];if(!s)throw new Error(`${_r} unsupported type: ${n}`);return s(r,n,e,t)}function RS(r,e){e.mapSorter&&r.sort(e.mapSorter)}function MS(r,e){let t=Array.isArray(r[0])?r[0][0]:r[0],n=Array.isArray(e[0])?e[0][0]:e[0];if(t.type!==n.type)return t.type.compare(n.type);let o=t.type.major,s=dp[o].compareTokens(t,n);return s===0&&console.warn("WARNING: complex key types used, CBOR key sorting guarantees are gone"),s}function OS(r,e){if(r[0]instanceof I&&e[0]instanceof I){let t=r[0],n=e[0];return t._keyBytes||(t._keyBytes=nb(t.value)),n._keyBytes||(n._keyBytes=nb(n.value)),Ac(t._keyBytes,n._keyBytes)}throw new Error("rfc8949MapSorter: complex key types are not supported yet")}function nb(r){return Dc(r,dp,ob)}function sb(r,e,t,n){if(Array.isArray(e))for(let o of e)sb(r,o,t,n);else t[e.type.major](r,e,n)}function Dc(r,e,t){let n=Lc(r,t);if(!Array.isArray(n)&&t.quickEncodeToken){let o=t.quickEncodeToken(n);if(o)return o;let s=e[n.type.major];if(s.encodedSize){let i=s.encodedSize(n,t),a=new bi(i);if(s(a,n,t),a.chunks.length!==1)throw new Error(`Unexpected error: pre-calculated length for ${n} was wrong`);return wi(a.chunks[0])}}return fp.reset(),sb(fp,n,e,t),fp.toBytes(!0)}function an(r,e){return e=Object.assign({},DS,e),Dc(r,dp,e)}var US={strict:!1,allowIndefinite:!0,allowUndefined:!0,allowBigInt:!0},Nc=class{constructor(e,t={}){this._pos=0,this.data=e,this.options=t}pos(){return this._pos}done(){return this._pos>=this.data.length}next(){let e=this.data[this._pos],t=Gt[e];if(t===void 0){let n=L[e];if(!n)throw new Error(`${F} no decoder for major type ${e>>>5} (byte 0x${e.toString(16).padStart(2,"0")})`);let o=e&31;t=n(this.data,this._pos,o,this.options)}return this._pos+=t.encodedLength,t}},Ai=Symbol.for("DONE"),Rc=Symbol.for("BREAK");function FS(r,e,t){let n=[];for(let o=0;o<r.value;o++){let s=ts(e,t);if(s===Rc){if(r.value===1/0)break;throw new Error(`${F} got unexpected break to lengthed array`)}if(s===Ai)throw new Error(`${F} found array but not enough entries (got ${o}, expected ${r.value})`);n[o]=s}return n}function $S(r,e,t){let n=t.useMaps===!0,o=n?void 0:{},s=n?new Map:void 0;for(let i=0;i<r.value;i++){let a=ts(e,t);if(a===Rc){if(r.value===1/0)break;throw new Error(`${F} got unexpected break to lengthed map`)}if(a===Ai)throw new Error(`${F} found map but not enough entries (got ${i} [no key], expected ${r.value})`);if(n!==!0&&typeof a!="string")throw new Error(`${F} non-string keys not supported (got ${typeof a})`);if(t.rejectDuplicateMapKeys===!0&&(n&&s.has(a)||!n&&a in o))throw new Error(`${F} found repeat map key "${a}"`);let c=ts(e,t);if(c===Ai)throw new Error(`${F} found map but not enough entries (got ${i} [no value], expected ${r.value})`);n?s.set(a,c):o[a]=c}return n?s:o}function ts(r,e){if(r.done())return Ai;let t=r.next();if(t.type===m.break)return Rc;if(t.type.terminal)return t.value;if(t.type===m.array)return FS(t,r,e);if(t.type===m.map)return $S(t,r,e);if(t.type===m.tag){if(e.tags&&typeof e.tags[t.value]=="function"){let n=ts(r,e);return e.tags[t.value](n)}throw new Error(`${F} tag not supported (${t.value})`)}throw new Error("unsupported")}function hp(r,e){if(!(r instanceof Uint8Array))throw new Error(`${F} data to decode must be a Uint8Array`);e=Object.assign({},US,e);let t=e.tokenizer||new Nc(r,e),n=ts(t,e);if(n===Ai)throw new Error(`${F} did not find any content to decode`);if(n===Rc)throw new Error(`${F} got unexpected break`);return[n,r.subarray(t.pos())]}function xt(r,e){let[t,n]=hp(r,e);if(n.length>0)throw new Error(`${F} too many terminals, data makes no sense`);return t}var Mc=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},rs=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},Oc=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"},Si=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};function Uc(r){return r[Symbol.asyncIterator]!=null}function ib(r,e){if(r.byteLength>e)throw new rs("Message length too long")}var $c=r=>{let e=Pe(r),t=We(e);return Xr(r,t),$c.bytes=e,t};$c.bytes=0;function Vc(r,e){e=e??{};let t=e.lengthEncoder??$c,n=e?.maxDataLength??4194304;function*o(s){ib(s,n);let i=t(s.byteLength);i instanceof Uint8Array?yield i:yield*i,s instanceof Uint8Array?yield s:yield*s}return Uc(r)?(async function*(){for await(let s of r)yield*o(s)})():(function*(){for(let s of r)yield*o(s)})()}Vc.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??$c,n=e?.maxDataLength??4194304;return ib(r,n),new se(t(r.byteLength),r)};var zn;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(zn||(zn={}));var gp=r=>{let e=Ln(r);return gp.bytes=Pe(e),e};gp.bytes=0;function mp(r,e){let t=new se,n=zn.LENGTH,o=-1,s=e?.lengthDecoder??gp,i=e?.maxLengthLength??8,a=e?.maxDataLength??4194304;function*c(){for(;t.byteLength>0;){if(n===zn.LENGTH)try{if(o=s(t),o<0)throw new Mc("Invalid message length");if(o>a)throw new rs("Message length too long");let l=s.bytes;t.consume(l),e?.onLength!=null&&e.onLength(o),n=zn.DATA}catch(l){if(l instanceof RangeError){if(t.byteLength>i)throw new Oc("Message length length too long");break}throw l}if(n===zn.DATA){if(t.byteLength<o)break;let l=t.sublist(0,o);t.consume(o),e?.onData!=null&&e.onData(l),yield l,n=zn.LENGTH}}}return Uc(r)?(async function*(){for await(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new Si("Unexpected end of input")})():(function*(){for(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new Si("Unexpected end of input")})()}mp.fromReader=(r,e)=>{let t=1,n=(async function*(){for(;;)try{let{done:s,value:i}=await r.next(t);if(s===!0)return;i!=null&&(yield i)}catch(s){if(s.code==="ERR_UNDER_READ")return{done:!0,value:null};throw s}finally{t=1}})();return mp(n,{...e??{},onLength:s=>{t=s}})};function KS(r,e){if(typeof r=="string")return HS(r);if(typeof r=="number")return GS(r,e);throw Error(`Value provided to ms() must be a string or number. value=${JSON.stringify(r)}`)}var Kc=KS;function HS(r){if(typeof r!="string"||r.length===0||r.length>100)throw Error(`Value provided to ms.parse() must be a string with length between 1 and 99. value=${JSON.stringify(r)}`);let e=/^(?<value>-?\d*\.?\d+) *(?<unit>milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|months?|mo|years?|yrs?|y)?$/i.exec(r);if(!e?.groups)return NaN;let{value:t,unit:n="ms"}=e.groups,o=parseFloat(t),s=n.toLowerCase();switch(s){case"years":case"year":case"yrs":case"yr":case"y":return o*315576e5;case"months":case"month":case"mo":return o*26298e5;case"weeks":case"week":case"w":return o*6048e5;case"days":case"day":case"d":return o*864e5;case"hours":case"hour":case"hrs":case"hr":case"h":return o*36e5;case"minutes":case"minute":case"mins":case"min":case"m":return o*6e4;case"seconds":case"second":case"secs":case"sec":case"s":return o*1e3;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return o;default:throw Error(`Unknown unit "${s}" provided to ms.parse(). value=${JSON.stringify(r)}`)}}function qS(r){let e=Math.abs(r);return e>=315576e5?`${Math.round(r/315576e5)}y`:e>=26298e5?`${Math.round(r/26298e5)}mo`:e>=6048e5?`${Math.round(r/6048e5)}w`:e>=864e5?`${Math.round(r/864e5)}d`:e>=36e5?`${Math.round(r/36e5)}h`:e>=6e4?`${Math.round(r/6e4)}m`:e>=1e3?`${Math.round(r/1e3)}s`:`${r}ms`}function zS(r){let e=Math.abs(r);return e>=315576e5?Gn(r,e,315576e5,"year"):e>=26298e5?Gn(r,e,26298e5,"month"):e>=6048e5?Gn(r,e,6048e5,"week"):e>=864e5?Gn(r,e,864e5,"day"):e>=36e5?Gn(r,e,36e5,"hour"):e>=6e4?Gn(r,e,6e4,"minute"):e>=1e3?Gn(r,e,1e3,"second"):`${r} ms`}function GS(r,e){if(typeof r!="number"||!Number.isFinite(r))throw Error("Value provided to ms.format() must be of type number.");return e?.long?zS(r):qS(r)}function Gn(r,e,t,n){let o=e>=t*1.5;return`${Math.round(r/t)} ${n}${o?"s":""}`}function yp(r){t.debug=t,t.default=t,t.coerce=c,t.disable=s,t.enable=o,t.enabled=i,t.humanize=Kc,t.destroy=l,Object.keys(r).forEach(u=>{t[u]=r[u]}),t.names=[],t.skips=[],t.formatters={};function e(u){let f=0;for(let d=0;d<u.length;d++)f=(f<<5)-f+u.charCodeAt(d),f|=0;return t.colors[Math.abs(f)%t.colors.length]}t.selectColor=e;function t(u,f){let d,h=null,p,g;function w(...b){if(!w.enabled)return;let T=w,S=Number(new Date),D=S-(d||S);T.diff=D,T.prev=d,T.curr=S,d=S,b[0]=t.coerce(b[0]),typeof b[0]!="string"&&b.unshift("%O");let K=0;b[0]=b[0].replace(/%([a-zA-Z%])/g,(G,x)=>{if(G==="%%")return"%";K++;let v=t.formatters[x];if(typeof v=="function"){let P=b[K];G=v.call(T,P),b.splice(K,1),K--}return G}),t.formatArgs.call(T,b),f?.onLog!=null&&f.onLog(...b),(T.log||t.log).apply(T,b)}return w.namespace=u,w.useColors=t.useColors(),w.color=t.selectColor(u),w.extend=n,w.destroy=t.destroy,Object.defineProperty(w,"enabled",{enumerable:!0,configurable:!1,get:()=>h!==null?h:(p!==t.namespaces&&(p=t.namespaces,g=t.enabled(u)),g),set:b=>{h=b}}),typeof t.init=="function"&&t.init(w),w}function n(u,f){let d=t(this.namespace+(typeof f>"u"?":":f)+u);return d.log=this.log,d}function o(u){t.save(u),t.namespaces=u,t.names=[],t.skips=[];let f,d=(typeof u=="string"?u:"").split(/[\s,]+/),h=d.length;for(f=0;f<h;f++)d[f]&&(u=d[f].replace(/\*/g,".*?"),u[0]==="-"?t.skips.push(new RegExp("^"+u.substr(1)+"$")):t.names.push(new RegExp("^"+u+"$")))}function s(){let u=[...t.names.map(a),...t.skips.map(a).map(f=>"-"+f)].join(",");return t.enable(""),u}function i(u){if(u[u.length-1]==="*")return!0;let f,d;for(f=0,d=t.skips.length;f<d;f++)if(t.skips[f].test(u))return!1;for(f=0,d=t.names.length;f<d;f++)if(t.names[f].test(u))return!0;return!1}function a(u){return u.toString().substring(2,u.toString().length-2).replace(/\.\*\?$/,"*")}function c(u){return u instanceof Error?u.stack??u.message:u}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return t.setupFormatters(t.formatters),t.enable(t.load()),t}var Hc=QS(),WS=["#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"];function jS(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/(edge|trident)\/(\d+)/)!=null?!1:typeof document<"u"&&document.documentElement?.style?.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/firefox\/(\d+)/)!=null&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/applewebkit\/(\d+)/)}function YS(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+Kc(this.diff),!this.useColors)return;let e="color: "+this.color;r.splice(1,0,e,"color: inherit");let t=0,n=0;r[0].replace(/%[a-zA-Z%]/g,o=>{o!=="%%"&&(t++,o==="%c"&&(n=t))}),r.splice(n,0,e)}var ZS=console.debug??console.log??(()=>{});function XS(r){try{r?Hc?.setItem("debug",r):Hc?.removeItem("debug")}catch{}}function JS(){let r;try{r=Hc?.getItem("debug")}catch{}return!r&&typeof globalThis.process<"u"&&"env"in globalThis.process&&(r=globalThis.process.env.DEBUG),r}function QS(){try{return localStorage}catch{}}function eI(r){r.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}}var ab=yp({formatArgs:YS,save:XS,load:JS,useColors:jS,setupFormatters:eI,colors:WS,storage:Hc,log:ZS});var lt=ab;lt.formatters.b=r=>r==null?"undefined":le.baseEncode(r);lt.formatters.t=r=>r==null?"undefined":Te.baseEncode(r);lt.formatters.m=r=>r==null?"undefined":je.baseEncode(r);lt.formatters.p=r=>r==null?"undefined":r.toString();lt.formatters.c=r=>r==null?"undefined":r.toString();lt.formatters.k=r=>r==null?"undefined":r.toString();lt.formatters.a=r=>r==null?"undefined":r.toString();function cb(r,e=""){let t=lb(r.message),n=lb(r.stack);return t!=null&&n!=null?n.includes(t)?`${n.split(`
2
+ "use strict";var HeliaHttp=(()=>{var LE=Object.create;var xa=Object.defineProperty;var PE=Object.getOwnPropertyDescriptor;var DE=Object.getOwnPropertyNames;var NE=Object.getPrototypeOf,RE=Object.prototype.hasOwnProperty;var gr=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Ae=(r,e)=>{for(var t in e)xa(r,t,{get:e[t],enumerable:!0})},yg=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of DE(e))!RE.call(r,o)&&o!==t&&xa(r,o,{get:()=>e[o],enumerable:!(n=PE(e,o))||n.enumerable});return r};var pn=(r,e,t)=>(t=r!=null?LE(NE(r)):{},yg(e||!r||!r.__esModule?xa(t,"default",{value:r,enumerable:!0}):t,r)),ME=r=>yg(xa({},"__esModule",{value:!0}),r);var K0=gr(fi=>{(function(){var r,e,t,n,o,s,i,a;a=function(c){var l,u,f,d;return l=(c&255<<24)>>>24,u=(c&255<<16)>>>16,f=(c&65280)>>>8,d=c&255,[l,u,f,d].join(".")},i=function(c){var l,u,f,d,h,p;for(l=[],f=d=0;d<=3&&c.length!==0;f=++d){if(f>0){if(c[0]!==".")throw new Error("Invalid IP");c=c.substring(1)}p=e(c),h=p[0],u=p[1],c=c.substring(u),l.push(h)}if(c.length!==0)throw new Error("Invalid IP");switch(l.length){case 1:if(l[0]>4294967295)throw new Error("Invalid IP");return l[0]>>>0;case 2:if(l[0]>255||l[1]>16777215)throw new Error("Invalid IP");return(l[0]<<24|l[1])>>>0;case 3:if(l[0]>255||l[1]>255||l[2]>65535)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2])>>>0;case 4:if(l[0]>255||l[1]>255||l[2]>255||l[3]>255)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2]<<8|l[3])>>>0;default:throw new Error("Invalid IP")}},t=function(c){return c.charCodeAt(0)},n=t("0"),s=t("a"),o=t("A"),e=function(c){var l,u,f,d,h;for(d=0,l=10,u="9",f=0,c.length>1&&c[f]==="0"&&(c[f+1]==="x"||c[f+1]==="X"?(f+=2,l=16):"0"<=c[f+1]&&c[f+1]<="9"&&(f++,l=8,u="7")),h=f;f<c.length;){if("0"<=c[f]&&c[f]<=u)d=d*l+(t(c[f])-n)>>>0;else if(l===16)if("a"<=c[f]&&c[f]<="f")d=d*l+(10+t(c[f])-s)>>>0;else if("A"<=c[f]&&c[f]<="F")d=d*l+(10+t(c[f])-o)>>>0;else break;else break;if(d>4294967295)throw new Error("too large");f++}if(f===h)throw new Error("empty octet");return[d,f]},r=(function(){function c(l,u){var f,d,h,p;if(typeof l!="string")throw new Error("Missing `net' parameter");if(u||(p=l.split("/",2),l=p[0],u=p[1]),u||(u=32),typeof u=="string"&&u.indexOf(".")>-1){try{this.maskLong=i(u)}catch(g){throw f=g,new Error("Invalid mask: "+u)}for(d=h=32;h>=0;d=--h)if(this.maskLong===4294967295<<32-d>>>0){this.bitmask=d;break}}else if(u||u===0)this.bitmask=parseInt(u,10),this.maskLong=0,this.bitmask>0&&(this.maskLong=4294967295<<32-this.bitmask>>>0);else throw new Error("Invalid mask: empty");try{this.netLong=(i(l)&this.maskLong)>>>0}catch(g){throw f=g,new Error("Invalid net address: "+l)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+u);this.size=Math.pow(2,32-this.bitmask),this.base=a(this.netLong),this.mask=a(this.maskLong),this.hostmask=a(~this.maskLong),this.first=this.bitmask<=30?a(this.netLong+1):this.base,this.last=this.bitmask<=30?a(this.netLong+this.size-2):a(this.netLong+this.size-1),this.broadcast=this.bitmask<=30?a(this.netLong+this.size-1):void 0}return c.prototype.contains=function(l){return typeof l=="string"&&(l.indexOf("/")>0||l.split(".").length!==4)&&(l=new c(l)),l instanceof c?this.contains(l.base)&&this.contains(l.broadcast||l.last):(i(l)&this.maskLong)>>>0===(this.netLong&this.maskLong)>>>0},c.prototype.next=function(l){return l==null&&(l=1),new c(a(this.netLong+this.size*l),this.mask)},c.prototype.forEach=function(l){var u,f,d;for(d=i(this.first),f=i(this.last),u=0;d<=f;)l(a(d),d,u),u++,d++},c.prototype.toString=function(){return this.base+"/"+this.bitmask},c})(),fi.ip2long=i,fi.long2ip=a,fi.Netmask=r}).call(fi)});var bb=gr((iR,kp)=>{"use strict";var xI=Object.prototype.hasOwnProperty,nt="~";function Li(){}Object.create&&(Li.prototype=Object.create(null),new Li().__proto__||(nt=!1));function vI(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function wb(r,e,t,n,o){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new vI(t,n||r,o),i=nt?nt+e:e;return r._events[i]?r._events[i].fn?r._events[i]=[r._events[i],s]:r._events[i].push(s):(r._events[i]=s,r._eventsCount++),r}function Xc(r,e){--r._eventsCount===0?r._events=new Li:delete r._events[e]}function Je(){this._events=new Li,this._eventsCount=0}Je.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)xI.call(t,n)&&e.push(nt?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};Je.prototype.listeners=function(e){var t=nt?nt+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var o=0,s=n.length,i=new Array(s);o<s;o++)i[o]=n[o].fn;return i};Je.prototype.listenerCount=function(e){var t=nt?nt+e:e,n=this._events[t];return n?n.fn?1:n.length:0};Je.prototype.emit=function(e,t,n,o,s,i){var a=nt?nt+e:e;if(!this._events[a])return!1;var c=this._events[a],l=arguments.length,u,f;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,o),!0;case 5:return c.fn.call(c.context,t,n,o,s),!0;case 6:return c.fn.call(c.context,t,n,o,s,i),!0}for(f=1,u=new Array(l-1);f<l;f++)u[f-1]=arguments[f];c.fn.apply(c.context,u)}else{var d=c.length,h;for(f=0;f<d;f++)switch(c[f].once&&this.removeListener(e,c[f].fn,void 0,!0),l){case 1:c[f].fn.call(c[f].context);break;case 2:c[f].fn.call(c[f].context,t);break;case 3:c[f].fn.call(c[f].context,t,n);break;case 4:c[f].fn.call(c[f].context,t,n,o);break;default:if(!u)for(h=1,u=new Array(l-1);h<l;h++)u[h-1]=arguments[h];c[f].fn.apply(c[f].context,u)}}return!0};Je.prototype.on=function(e,t,n){return wb(this,e,t,n,!1)};Je.prototype.once=function(e,t,n){return wb(this,e,t,n,!0)};Je.prototype.removeListener=function(e,t,n,o){var s=nt?nt+e:e;if(!this._events[s])return this;if(!t)return Xc(this,s),this;var i=this._events[s];if(i.fn)i.fn===t&&(!o||i.once)&&(!n||i.context===n)&&Xc(this,s);else{for(var a=0,c=[],l=i.length;a<l;a++)(i[a].fn!==t||o&&!i[a].once||n&&i[a].context!==n)&&c.push(i[a]);c.length?this._events[s]=c.length===1?c[0]:c:Xc(this,s)}return this};Je.prototype.removeAllListeners=function(e){var t;return e?(t=nt?nt+e:e,this._events[t]&&Xc(this,t)):(this._events=new Li,this._eventsCount=0),this};Je.prototype.off=Je.prototype.removeListener;Je.prototype.addListener=Je.prototype.on;Je.prefixed=nt;Je.EventEmitter=Je;typeof kp<"u"&&(kp.exports=Je)});var Ab=gr((TR,Eb)=>{Eb.exports=function(r){if(!r)throw Error("hashlru must have a max value, of type number, greater than 0");var e=0,t=Object.create(null),n=Object.create(null);function o(s,i){t[s]=i,e++,e>=r&&(e=0,n=t,t=Object.create(null))}return{has:function(s){return t[s]!==void 0||n[s]!==void 0},remove:function(s){t[s]!==void 0&&(t[s]=void 0),n[s]!==void 0&&(n[s]=void 0)},get:function(s){var i=t[s];if(i!==void 0)return i;if((i=n[s])!==void 0)return o(s,i),i},set:function(s,i){t[s]!==void 0?t[s]=i:o(s,i)},clear:function(){t=Object.create(null),n=Object.create(null)}}}});var Am=gr((EU,Em)=>{var vU=(function(){typeof Em<"u"&&(Em.exports=g);var r=86400,e=3200,t=146097*e/400,n=r*t,o=1e3*n,s=864e13,i=4294967296,a=1e6,c="000000000",l=Math.trunc||function(x){var v=x-x%1;return v==0&&(x<0||x===0&&1/x!=1/0)?-0:v},u=g.prototype,f=(g.fromDate=function(x){return new g(+x)},g.fromInt64BE=D(0,1,2,3,0,4),g.fromInt64LE=D(3,2,1,0,4,0),g.fromString=function(N){var v,P=new g,N=(N+="").replace(/^\s*[+\-]?\d+/,function(E){var E=+E,A=1970+(E-1970)%400;return P.year=E-A,A}).replace(/(?:Z|([+\-]\d{2}):?(\d{2}))$/,function(C,E,A){return E<0&&(A*=-1),v=6e4*(60*+E+ +A),""}).replace(/\.\d+$/,function(C){return P.nano=+(C+c).substr(1,9),""}).split(/\D+/);if(1<N.length?N[1]--:N[1]=0,P.time=v=Date.UTC.apply(Date,N)-(v||0),isNaN(v))throw new TypeError("Invalid Date");return w(P)},g.fromTimeT=function(x){return T(x,0)},u.year=0,u.time=0,u.nano=0,u.addNano=function(x){return this.nano+=+x||0,this},u.getNano=function(){var x=w(this);return(x.time%1e3*a+ +x.nano+1e9)%1e9},u.getTimeT=function(){var v=w(this),x=Math.floor(v.time/1e3),v=v.year;return v&&(x+=v*t*r/e),x},u.getYear=function(){return this.toDate().getUTCFullYear()+this.year},u.toDate=function(){return b(w(this).time)},u.toJSON=function(){return this.toString().replace(/0{1,6}Z$/,"Z")},u.toString=function(x){var v=this,P=v.toDate(),N={H:function(){return Y(P.getUTCHours())},L:function(){return G(P.getUTCMilliseconds(),3)},M:function(){return Y(P.getUTCMinutes())},N:function(){return G(v.getNano(),9)},S:function(){return Y(P.getUTCSeconds())},Y:function(){var C=v.getYear();return 999999<C?"+"+C:9999<C?"+"+G(C,6):0<=C?G(C,4):-999999<=C?"-"+G(-C,6):C},a:function(){return h[P.getUTCDay()]},b:function(){return d[P.getUTCMonth()]},d:function(){return Y(P.getUTCDate())},e:function(){return(function(C){return(9<C?"":" ")+(0|C)})(P.getUTCDate())},m:function(){return Y(P.getUTCMonth()+1)}};return(function C(E){return E.replace(/%./g,function(A){var _=A[1],y=p[_],_=N[_];return y?C(y):_?_():A})})(x||f)},u.writeInt64BE=S(0,1,2,3,0,4),u.writeInt64LE=S(3,2,1,0,4,0),"%Y-%m-%dT%H:%M:%S.%NZ"),d=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],h=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],p={"%":"%",F:"%Y-%m-%d",n:`
3
+ `,R:"%H:%M",T:"%H:%M:%S",t:" ",X:"%T",Z:"GMT",z:"+0000"};return g;function g(x,v,P){var N=this;if(!(N instanceof g))return new g(x,v,P);N.time=+x||0,N.nano=+v||0,N.year=+P||0,w(N)}function w(x){var v,P,N,C=x.year,E=x.time,A=x.nano,y=((A<0||a<=A)&&(A-=(P=Math.floor(A/a))*a,E+=P,P=1),C%e);return(E<-s||s<E||y)&&((v=l(E/o))&&(C+=v*e,E-=v*o),(N=b(E)).setUTCFullYear(y+N.getUTCFullYear()),N=(E=+N)+(v=l((C-=y)/e))*o,v&&-s<=N&&N<=s&&(C-=v*e,E=N),P=1),P&&(x.year=C,x.time=E,x.nano=A),x}function b(x){var v=new Date(0);return v.setTime(x),v}function T(C,N){C=+C||0;var P=l((N=(N|0)*i)/n)+l(C/n),N=N%n+C%n,C=l(N/n);return C&&(P+=C,N-=C*n),new g(1e3*N,0,P*e)}function S(x,v,P,N,C,E){return function(y,_){var O=w(this);y=y||new Array(8),K(y,_|=0);var $=Math.floor(O.time/1e3),O=O.year*(t*r/e),R=l(O/i)+l($/i),O=O%i+$%i,$=Math.floor(O/i);return $&&(R+=$,O-=$*i),A(y,_+C,R),A(y,_+E,O),y};function A(y,_,R){y[_+x]=R>>24&255,y[_+v]=R>>16&255,y[_+P]=R>>8&255,y[_+N]=255&R}}function D(x,v,P,N,C,E){return function(y,_){K(y,_|=0);var R=A(y,_+C);return T(A(y,_+E),R)};function A(y,_){return 16777216*y[_+x]+(y[_+v]<<16|y[_+P]<<8|y[_+N])}}function K(x,v){if(x=x&&x.length,x==null)throw new TypeError("Invalid Buffer");if(x<v+8)throw new RangeError("Out of range")}function Y(x){return(9<x?"":"0")+(0|x)}function G(x,v){return(c+(0|x)).substr(-v)}})()});var Bv=gr((Oq,Tv)=>{"use strict";function sC(r){return r>=55296&&r<=56319}function iC(r){return r>=56320&&r<=57343}Tv.exports=function(e,t,n){if(typeof t!="string")throw new Error("Input must be string");for(var o=t.length,s=0,i,a,c=0;c<o;c+=1){if(i=t.charCodeAt(c),a=t[c],sC(i)&&iC(t.charCodeAt(c+1))&&(c+=1,a+=t[c]),s+=e(a),s===n)return t.slice(0,c+1);if(s>n)return t.slice(0,c-a.length+1)}return t}});var Pv=gr((Uq,Lv)=>{"use strict";function aC(r){return r>=55296&&r<=56319}function cC(r){return r>=56320&&r<=57343}Lv.exports=function(e){if(typeof e!="string")throw new Error("Input must be string");for(var t=e.length,n=0,o=null,s=null,i=0;i<t;i++)o=e.charCodeAt(i),cC(o)?s!=null&&aC(s)?n+=1:n+=3:o<=127?n+=1:o>=128&&o<=2047?n+=2:o>=2048&&o<=65535&&(n+=3),s=o;return n}});var Nv=gr((Fq,Dv)=>{"use strict";var lC=Bv(),uC=Pv();Dv.exports=lC.bind(null,uC)});var Ov=gr(($q,Mv)=>{"use strict";var fC=Nv(),dC=/[\/\?<>\\:\*\|"]/g,hC=/[\x00-\x1f\x80-\x9f]/g,pC=/^\.+$/,mC=/^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i,gC=/[\. ]+$/;function Rv(r,e){if(typeof r!="string")throw new Error("Input must be string");var t=r.replace(dC,e).replace(hC,e).replace(pC,e).replace(mC,e).replace(gC,e);return fC(t,255)}Mv.exports=function(r,e){var t=e&&e.replacement||"",n=Rv(r,t);return t===""?n:Rv(n,"")}});var Uv=gr(xs=>{"use strict";var wC="[object ArrayBuffer]",Dr=class r{static isArrayBuffer(e){return Object.prototype.toString.call(e)===wC}static toArrayBuffer(e){return this.isArrayBuffer(e)?e:e.byteLength===e.buffer.byteLength||e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:this.toUint8Array(e.buffer).slice(e.byteOffset,e.byteOffset+e.byteLength).buffer}static toUint8Array(e){return this.toView(e,Uint8Array)}static toView(e,t){if(e.constructor===t)return e;if(this.isArrayBuffer(e))return new t(e);if(this.isArrayBufferView(e))return new t(e.buffer,e.byteOffset,e.byteLength);throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'")}static isBufferSource(e){return this.isArrayBufferView(e)||this.isArrayBuffer(e)}static isArrayBufferView(e){return ArrayBuffer.isView(e)||e&&this.isArrayBuffer(e.buffer)}static isEqual(e,t){let n=r.toUint8Array(e),o=r.toUint8Array(t);if(n.length!==o.byteLength)return!1;for(let s=0;s<n.length;s++)if(n[s]!==o[s])return!1;return!0}static concat(...e){let t;Array.isArray(e[0])&&!(e[1]instanceof Function)||Array.isArray(e[0])&&e[1]instanceof Function?t=e[0]:e[e.length-1]instanceof Function?t=e.slice(0,e.length-1):t=e;let n=0;for(let i of t)n+=i.byteLength;let o=new Uint8Array(n),s=0;for(let i of t){let a=this.toUint8Array(i);o.set(a,s),s+=a.length}return e[e.length-1]instanceof Function?this.toView(o,e[e.length-1]):o.buffer}},ig="string",bC=/^[0-9a-f\s]+$/i,xC=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,vC=/^[a-zA-Z0-9-_]+$/,Xu=class{static fromString(e){let t=unescape(encodeURIComponent(e)),n=new Uint8Array(t.length);for(let o=0;o<t.length;o++)n[o]=t.charCodeAt(o);return n.buffer}static toString(e){let t=Dr.toUint8Array(e),n="";for(let s=0;s<t.length;s++)n+=String.fromCharCode(t[s]);return decodeURIComponent(escape(n))}},Pt=class{static toString(e,t=!1){let n=Dr.toArrayBuffer(e),o=new DataView(n),s="";for(let i=0;i<n.byteLength;i+=2){let a=o.getUint16(i,t);s+=String.fromCharCode(a)}return s}static fromString(e,t=!1){let n=new ArrayBuffer(e.length*2),o=new DataView(n);for(let s=0;s<e.length;s++)o.setUint16(s*2,e.charCodeAt(s),t);return n}},Ju=class r{static isHex(e){return typeof e===ig&&bC.test(e)}static isBase64(e){return typeof e===ig&&xC.test(e)}static isBase64Url(e){return typeof e===ig&&vC.test(e)}static ToString(e,t="utf8"){let n=Dr.toUint8Array(e);switch(t.toLowerCase()){case"utf8":return this.ToUtf8String(n);case"binary":return this.ToBinary(n);case"hex":return this.ToHex(n);case"base64":return this.ToBase64(n);case"base64url":return this.ToBase64Url(n);case"utf16le":return Pt.toString(n,!0);case"utf16":case"utf16be":return Pt.toString(n);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromString(e,t="utf8"){if(!e)return new ArrayBuffer(0);switch(t.toLowerCase()){case"utf8":return this.FromUtf8String(e);case"binary":return this.FromBinary(e);case"hex":return this.FromHex(e);case"base64":return this.FromBase64(e);case"base64url":return this.FromBase64Url(e);case"utf16le":return Pt.fromString(e,!0);case"utf16":case"utf16be":return Pt.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){let t=Dr.toUint8Array(e);if(typeof btoa<"u"){let n=this.ToString(t,"binary");return btoa(n)}else return Buffer.from(t).toString("base64")}static FromBase64(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64(t))throw new TypeError("Argument 'base64Text' is not Base64 encoded");return typeof atob<"u"?this.FromBinary(atob(t)):new Uint8Array(Buffer.from(t,"base64")).buffer}static FromBase64Url(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64Url(t))throw new TypeError("Argument 'base64url' is not Base64Url encoded");return this.FromBase64(this.Base64Padding(t.replace(/\-/g,"+").replace(/\_/g,"/")))}static ToBase64Url(e){return this.ToBase64(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=/g,"")}static FromUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.FromBinary(e);case"utf8":return Xu.fromString(e);case"utf16":case"utf16be":return Pt.fromString(e);case"utf16le":case"usc2":return Pt.fromString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.ToBinary(e);case"utf8":return Xu.toString(e);case"utf16":case"utf16be":return Pt.toString(e);case"utf16le":case"usc2":return Pt.toString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromBinary(e){let t=e.length,n=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=e.charCodeAt(o);return n.buffer}static ToBinary(e){let t=Dr.toUint8Array(e),n="";for(let o=0;o<t.length;o++)n+=String.fromCharCode(t[o]);return n}static ToHex(e){let t=Dr.toUint8Array(e),n="",o=t.length;for(let s=0;s<o;s++){let i=t[s];i<16&&(n+="0"),n+=i.toString(16)}return n}static FromHex(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isHex(t))throw new TypeError("Argument 'hexString' is not HEX encoded");t.length%2&&(t=`0${t}`);let n=new Uint8Array(t.length/2);for(let o=0;o<t.length;o=o+2){let s=t.slice(o,o+2);n[o/2]=parseInt(s,16)}return n.buffer}static ToUtf16String(e,t=!1){return Pt.toString(e,t)}static FromUtf16String(e,t=!1){return Pt.fromString(e,t)}static Base64Padding(e){let t=4-e.length%4;if(t<4)for(let n=0;n<t;n++)e+="=";return e}static formatString(e){return e?.replace(/[\n\r\t ]/g,"")||""}};Ju.DEFAULT_UTF8_ENCODING="utf8";function EC(r,...e){let t=arguments[0];for(let n=1;n<arguments.length;n++){let o=arguments[n];for(let s in o)t[s]=o[s]}return t}function AC(...r){let e=r.map(o=>o.byteLength).reduce((o,s)=>o+s),t=new Uint8Array(e),n=0;return r.map(o=>new Uint8Array(o)).forEach(o=>{for(let s of o)t[n++]=s}),t.buffer}function SC(r,e){if(!(r&&e)||r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let o=0;o<r.byteLength;o++)if(t[o]!==n[o])return!1;return!0}xs.BufferSourceConverter=Dr;xs.Convert=Ju;xs.assign=EC;xs.combine=AC;xs.isEqual=SC});var VC={};Ae(VC,{DEFAULT_SESSION_MAX_PROVIDERS:()=>Fp,DEFAULT_SESSION_MIN_PROVIDERS:()=>Up,InsufficientProvidersError:()=>Ni,InvalidCodecError:()=>$p,NoRoutersAvailableError:()=>cn,UnknownCodecError:()=>Mi,UnknownHashAlgorithmError:()=>Ri,createHeliaHTTP:()=>$C,heliaDefaults:()=>BE});var wg=Symbol.for("@libp2p/connection");var mn=Symbol.for("@libp2p/content-routing");var ft=class extends Error{static name="AbortError";constructor(e="The operation was aborted"){super(e),this.name="AbortError"}};var k=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}},uo=class extends Error{static name="InvalidPublicKeyError";constructor(e="Invalid public key"){super(e),this.name="InvalidPublicKeyError"}},Ss=class extends Error{static name="InvalidPrivateKeyError";constructor(e="Invalid private key"){super(e),this.name="InvalidPrivateKeyError"}};var gn=class extends Error{static name="ConnectionClosedError";constructor(e="The connection is closed"){super(e),this.name="ConnectionClosedError"}};var ke=class extends Error{static name="NotFoundError";constructor(e="Not found"){super(e),this.name="NotFoundError"}},fo=class extends Error{static name="InvalidPeerIdError";constructor(e="Invalid PeerID"){super(e),this.name="InvalidPeerIdError"}},$r=class extends Error{static name="InvalidMultiaddrError";constructor(e="Invalid multiaddr"){super(e),this.name="InvalidMultiaddrError"}},va=class extends Error{static name="InvalidCIDError";constructor(e="Invalid CID"){super(e),this.name="InvalidCIDError"}},Vr=class extends Error{static name="InvalidMultihashError";constructor(e="Invalid Multihash"){super(e),this.name="InvalidMultihashError"}},Ea=class extends Error{static name="UnsupportedProtocolError";constructor(e="Unsupported protocol error"){super(e),this.name="UnsupportedProtocolError"}},Aa=class extends Error{static name="InvalidMessageError";constructor(e="Invalid message"){super(e),this.name="InvalidMessageError"}};var Sa=class extends Error{static name="TimeoutError";constructor(e="Timed out"){super(e),this.name="TimeoutError"}},yr=class extends Error{static name="NotStartedError";constructor(e="Not started"){super(e),this.name="NotStartedError"}};var ho=class extends Error{static name="DialError";constructor(e="Dial error"){super(e),this.name="DialError"}};var Is=class extends Error{static name="LimitedConnectionError";constructor(e="Limited connection"){super(e),this.name="LimitedConnectionError"}},Ia=class extends Error{static name="TooManyInboundProtocolStreamsError";constructor(e="Too many inbound protocol streams"){super(e),this.name="TooManyInboundProtocolStreamsError"}},ka=class extends Error{static name="TooManyOutboundProtocolStreamsError";constructor(e="Too many outbound protocol streams"){super(e),this.name="TooManyOutboundProtocolStreamsError"}},Dt=class extends Error{static name="UnsupportedKeyTypeError";constructor(e="Unsupported key type"){super(e),this.name="UnsupportedKeyTypeError"}};var _a=class extends Event{error;local;constructor(e,t,n){super("close",n),this.error=t,this.local=e}};var zf=Symbol.for("@libp2p/peer-discovery");var Ca=Symbol.for("@libp2p/peer-id");function tr(r){return!!r?.[Ca]}var yn=Symbol.for("@libp2p/peer-routing");var Gf="keep-alive";function Ta(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function rr(...r){let e=[];for(let t of r)Ta(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStart!=null&&await t.beforeStart()})),await Promise.all(e.map(async t=>{await t.start()})),await Promise.all(e.map(async t=>{t.afterStart!=null&&await t.afterStart()}))}async function nr(...r){let e=[];for(let t of r)Ta(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStop!=null&&await t.beforeStop()})),await Promise.all(e.map(async t=>{await t.stop()})),await Promise.all(e.map(async t=>{t.afterStop!=null&&await t.afterStop()}))}var JC=Symbol.for("@libp2p/transport");var ks;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(ks||(ks={}));var _e=class extends EventTarget{#e=new Map;constructor(){super()}listenerCount(e){let t=this.#e.get(e);return t==null?0:t.length}addEventListener(e,t,n){super.addEventListener(e,t,n);let o=this.#e.get(e);o==null&&(o=[],this.#e.set(e,o)),o.push({callback:t,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(e,t,n){super.removeEventListener(e.toString(),t??null,n);let o=this.#e.get(e);o!=null&&(o=o.filter(({callback:s})=>s!==t),this.#e.set(e,o))}dispatchEvent(e){let t=super.dispatchEvent(e),n=this.#e.get(e.type);return n==null||(n=n.filter(({once:o})=>!o),this.#e.set(e.type,n)),t}safeDispatchEvent(e,t={}){return this.dispatchEvent(new CustomEvent(e,t))}};var wn=Symbol.for("@libp2p/service-capabilities"),Wf=Symbol.for("@libp2p/service-dependencies");function pe(r){let e=new globalThis.AbortController;function t(){e.abort();for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",t)}for(let s of r){if(s?.aborted===!0){t();break}s?.addEventListener!=null&&s.addEventListener("abort",t)}function n(){for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",t)}let o=e.signal;return o.clear=n,o}var W=class extends Event{type;detail;constructor(e,t){super(e),this.type=e,this.detail=t}};var _s=class extends Error{constructor(e="An error occurred while signing a message"){super(e),this.name="SigningError"}},Cs=class extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}},Ba=class extends Error{constructor(e="Missing Web Crypto API"){super(e),this.name="WebCryptoMissingError"}};var bg={get(r=globalThis){let e=r.crypto;if(e?.subtle==null)throw new Ba("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return e}};var Se=bg;var Qf={};Ae(Qf,{base58btc:()=>le,base58flickr:()=>HE});var DT=new Uint8Array(0);function xg(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function Nt(r){if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")}function vg(r){return new TextEncoder().encode(r)}function Eg(r){return new TextDecoder().decode(r)}function OE(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(t[i]!==255)throw new TypeError(s+" is ambiguous");t[i]=o}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function f(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var g=0,w=0,b=0,T=p.length;b!==T&&p[b]===0;)b++,g++;for(var S=(T-b)*u+1>>>0,D=new Uint8Array(S);b!==T;){for(var K=p[b],Y=0,G=S-1;(K!==0||Y<w)&&G!==-1;G--,Y++)K+=256*D[G]>>>0,D[G]=K%a>>>0,K=K/a>>>0;if(K!==0)throw new Error("Non-zero carry");w=Y,b++}for(var x=S-w;x!==S&&D[x]===0;)x++;for(var v=c.repeat(g);x<S;++x)v+=r.charAt(D[x]);return v}function d(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var g=0;if(p[g]!==" "){for(var w=0,b=0;p[g]===c;)w++,g++;for(var T=(p.length-g)*l+1>>>0,S=new Uint8Array(T);p[g];){var D=t[p.charCodeAt(g)];if(D===255)return;for(var K=0,Y=T-1;(D!==0||K<b)&&Y!==-1;Y--,K++)D+=a*S[Y]>>>0,S[Y]=D%256>>>0,D=D/256>>>0;if(D!==0)throw new Error("Non-zero carry");b=K,g++}if(p[g]!==" "){for(var G=T-b;G!==T&&S[G]===0;)G++;for(var x=new Uint8Array(w+(T-G)),v=w;G!==T;)x[v++]=S[G++];return x}}}function h(p){var g=d(p);if(g)return g;throw new Error(`Non-${e} character`)}return{encode:f,decodeUnsafe:d,decode:h}}var UE=OE,FE=UE,Ag=FE;var Yf=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},Zf=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let o=t.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Sg(this,e)}},Xf=class{decoders;constructor(e){this.decoders=e}or(e){return Sg(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function Sg(r,e){return new Xf({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var Jf=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new Yf(e,t,n),this.decoder=new Zf(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function po({name:r,prefix:e,encode:t,decode:n}){return new Jf(r,e,t,n)}function Kr({name:r,prefix:e,alphabet:t}){let{encode:n,decode:o}=Ag(t,r);return po({prefix:e,name:r,encode:n,decode:s=>Nt(o(s))})}function $E(r,e,t,n){let o=r.length;for(;r[o-1]==="=";)--o;let s=new Uint8Array(o*t/8|0),i=0,a=0,c=0;for(let l=0;l<o;++l){let u=e[r[l]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<t|u,i+=t,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=t||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function VE(r,e,t){let n=e[e.length-1]==="=",o=(1<<t)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<t-i]),n)for(;(s.length*t&7)!==0;)s+="=";return s}function KE(r){let e={};for(let t=0;t<r.length;++t)e[r[t]]=t;return e}function xe({name:r,prefix:e,bitsPerChar:t,alphabet:n}){let o=KE(n);return po({prefix:e,name:r,encode(s){return VE(s,n,t)},decode(s){return $E(s,o,t,r)}})}var le=Kr({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),HE=Kr({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var ed={};Ae(ed,{base32:()=>Te,base32hex:()=>WE,base32hexpad:()=>YE,base32hexpadupper:()=>ZE,base32hexupper:()=>jE,base32pad:()=>zE,base32padupper:()=>GE,base32upper:()=>qE,base32z:()=>XE});var Te=xe({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),qE=xe({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),zE=xe({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),GE=xe({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),WE=xe({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),jE=xe({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),YE=xe({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),ZE=xe({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),XE=xe({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var td={};Ae(td,{base36:()=>or,base36upper:()=>JE});var or=Kr({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),JE=Kr({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var QE=_g,Ig=128,e1=127,t1=~e1,r1=Math.pow(2,31);function _g(r,e,t){e=e||[],t=t||0;for(var n=t;r>=r1;)e[t++]=r&255|Ig,r/=128;for(;r&t1;)e[t++]=r&255|Ig,r>>>=7;return e[t]=r|0,_g.bytes=t-n+1,e}var n1=rd,o1=128,kg=127;function rd(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw rd.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&kg)<<o:(i&kg)*Math.pow(2,o),o+=7}while(i>=o1);return rd.bytes=s-n,t}var s1=Math.pow(2,7),i1=Math.pow(2,14),a1=Math.pow(2,21),c1=Math.pow(2,28),l1=Math.pow(2,35),u1=Math.pow(2,42),f1=Math.pow(2,49),d1=Math.pow(2,56),h1=Math.pow(2,63),p1=function(r){return r<s1?1:r<i1?2:r<a1?3:r<c1?4:r<l1?5:r<u1?6:r<f1?7:r<d1?8:r<h1?9:10},m1={encode:QE,decode:n1,encodingLength:p1},g1=m1,Ts=g1;function Bs(r,e=0){return[Ts.decode(r,e),Ts.decode.bytes]}function mo(r,e,t=0){return Ts.encode(r,e,t),e}function go(r){return Ts.encodingLength(r)}function sr(r,e){let t=e.byteLength,n=go(r),o=n+go(t),s=new Uint8Array(o+t);return mo(r,s,0),mo(t,s,n),s.set(e,o),new yo(r,t,e,s)}function dt(r){let e=Nt(r),[t,n]=Bs(e),[o,s]=Bs(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new yo(t,o,i,e)}function Cg(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&xg(r.bytes,t.bytes)}}var yo=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};function Tg(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return w1(t,nd(r),e??le.encoder);default:return b1(t,nd(r),e??Te.encoder)}}var Bg=new WeakMap;function nd(r){let e=Bg.get(r);if(e==null){let t=new Map;return Bg.set(r,t),t}return e}var H=class r{code;version;multihash;bytes;"/";constructor(e,t,n,o){this.code=t,this.version=e,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==Ls)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==x1)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=sr(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&Cg(e.multihash,n.multihash)}toString(e){return Tg(this,e)}toJSON(){return{"/":Tg(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:o,multihash:s,bytes:i}=t;return new r(n,o,s,i??Lg(n,o,s.bytes))}else if(t[v1]===!0){let{version:n,multihash:o,code:s}=t,i=dt(o);return r.create(n,s,i)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==Ls)throw new Error(`Version 0 CID must use dag-pb (code: ${Ls}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=Lg(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Ls,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=Nt(e.subarray(n,n+t.multihashSize));if(o.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=o.subarray(t.multihashSize-t.digestSize),i=new yo(t.multihashCode,t.digestSize,s,o);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[f,d]=Bs(e.subarray(t));return t+=d,f},o=n(),s=Ls;if(o===18?(o=0,t=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=t,a=n(),c=n(),l=t+c,u=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:u,size:l}}static parse(e,t){let[n,o]=y1(e,t),s=r.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return nd(s).set(n,e),s}};function y1(r,e){switch(r[0]){case"Q":{let t=e??le;return[le.prefix,t.decode(`${le.prefix}${r}`)]}case le.prefix:{let t=e??le;return[le.prefix,t.decode(r)]}case Te.prefix:{let t=e??Te;return[Te.prefix,t.decode(r)]}case or.prefix:{let t=e??or;return[or.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function w1(r,e,t){let{prefix:n}=t;if(n!==le.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let o=e.get(n);if(o==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return o}function b1(r,e,t){let{prefix:n}=t,o=e.get(n);if(o==null){let s=t.encode(r);return e.set(n,s),s}else return o}var Ls=112,x1=18;function Lg(r,e,t){let n=go(r),o=n+go(e),s=new Uint8Array(o+t.byteLength);return mo(r,s,0),mo(e,s,n),s.set(t,o),s}var v1=Symbol.for("@ipld/js-cid/CID");var od={};Ae(od,{identity:()=>Ge});var Pg=0,E1="identity",Dg=Nt;function A1(r,e){if(e?.truncate!=null&&e.truncate!==r.byteLength){if(e.truncate<0||e.truncate>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,e.truncate)}return sr(Pg,Dg(r))}var Ge={code:Pg,name:E1,encode:Dg,digest:A1};function X(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function ve(r=0){return new Uint8Array(r)}function We(r=0){return new Uint8Array(r)}function Ce(r,e){e==null&&(e=r.reduce((o,s)=>o+s.length,0));let t=We(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return t}var Rg=Symbol.for("@achingbrain/uint8arraylist");function Ng(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let o=t+n.byteLength;if(e<o)return{buf:n,index:e-t};t=o}throw new RangeError("index is out of bounds")}function wo(r){return!!r?.[Rg]}var se=class r{bufs;length;[Rg]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(wo(n))t+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(wo(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=Ng(this.bufs,e);return t.buf[t.index]}set(e,t){let n=Ng(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(wo(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:o}=this._subList(e,t);return Ce(n,o)}subarray(e,t){let{bufs:n,length:o}=this._subList(e,t);return n.length===1?n[0]:Ce(n,o)}sublist(e,t){let{bufs:n,length:o}=this._subList(e,t),s=new r;return s.length=o,s.bufs=[...n],s}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:this.bufs,length:this.length};let n=[],o=0;for(let s=0;s<this.bufs.length;s++){let i=this.bufs[s],a=o,c=a+i.byteLength;if(o=c,e>=c)continue;let l=e>=a&&e<c,u=t>a&&t<=c;if(l&&u){if(e===a&&t===c){n.push(i);break}let f=e-a;n.push(i.subarray(f,f+(t-e)));break}if(l){if(e===0){n.push(i);continue}n.push(i.subarray(e-a));continue}if(u){if(t===c){n.push(i);break}n.push(i.subarray(0,t-a));break}n.push(i)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!wo(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");let s=256,i=new Int32Array(s);for(let f=0;f<s;f++)i[f]=-1;for(let f=0;f<o;f++)i[n[f]]=f;let a=i,c=this.byteLength-n.byteLength,l=n.byteLength-1,u;for(let f=t;f<=c;f+=u){u=0;for(let d=l;d>=0;d--){let h=this.get(f+d);if(n[d]!==h){u=Math.max(1,d-a[h]);break}}if(u===0)return f}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=We(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let o=ve(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,t,n),this.write(o,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let o=ve(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,t,n),this.write(o,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let o=ve(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,t,n),this.write(o,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=We(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let o=ve(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,t,n),this.write(o,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let o=ve(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,t,n),this.write(o,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let o=ve(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,t,n),this.write(o,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let o=ve(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,t,n),this.write(o,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let o=ve(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,t,n),this.write(o,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!X(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((o,s)=>o+s.byteLength,0)),n.length=t,n}};var sd={};Ae(sd,{base10:()=>S1});var S1=Kr({prefix:"9",name:"base10",alphabet:"0123456789"});var id={};Ae(id,{base16:()=>I1,base16upper:()=>k1});var I1=xe({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),k1=xe({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var ad={};Ae(ad,{base2:()=>_1});var _1=xe({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var cd={};Ae(cd,{base256emoji:()=>P1});var Mg=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),C1=Mg.reduce((r,e,t)=>(r[t]=e,r),[]),T1=Mg.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function B1(r){return r.reduce((e,t)=>(e+=C1[t],e),"")}function L1(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let o=T1[n];if(o==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var P1=po({prefix:"\u{1F680}",name:"base256emoji",encode:B1,decode:L1});var ud={};Ae(ud,{base64:()=>je,base64pad:()=>D1,base64url:()=>ld,base64urlpad:()=>N1});var je=xe({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),D1=xe({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),ld=xe({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),N1=xe({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var fd={};Ae(fd,{base8:()=>R1});var R1=xe({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var dd={};Ae(dd,{identity:()=>M1});var M1=po({prefix:"\0",name:"identity",encode:r=>Eg(r),decode:r=>vg(r)});var Pa={};Ae(Pa,{code:()=>hd,decode:()=>V1,encode:()=>$1,name:()=>F1});var O1=new TextEncoder,U1=new TextDecoder,F1="json",hd=512;function $1(r){return O1.encode(JSON.stringify(r))}function V1(r){return JSON.parse(U1.decode(r))}var Ds={};Ae(Ds,{code:()=>Ps,decode:()=>q1,encode:()=>H1,name:()=>K1});var K1="raw",Ps=85;function H1(r){return Nt(r)}function q1(r){return Nt(r)}var gd={};Ae(gd,{sha256:()=>Rt,sha512:()=>Da});var z1=20;function md({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:o}){return new pd(r,e,t,n,o)}var pd=class{name;code;encode;minDigestLength;maxDigestLength;constructor(e,t,n,o,s){this.name=e,this.code=t,this.encode=n,this.minDigestLength=o??z1,this.maxDigestLength=s}digest(e,t){if(t?.truncate!=null){if(t.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&t.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){let n=this.encode(e);return n instanceof Uint8Array?Og(n,this.code,t?.truncate):n.then(o=>Og(o,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}};function Og(r,e,t){if(t!=null&&t!==r.byteLength){if(t>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,t)}return sr(e,r)}function Fg(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var Rt=md({name:"sha2-256",code:18,encode:Fg("SHA-256")}),Da=md({name:"sha2-512",code:19,encode:Fg("SHA-512")});var Ns={...dd,...ad,...fd,...sd,...id,...ed,...td,...Qf,...ud,...cd},_8={...gd,...od};function Vg(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var $g=Vg("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),yd=Vg("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=We(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),G1={utf8:$g,"utf-8":$g,hex:Ns.base16,latin1:yd,ascii:yd,binary:yd,...Ns},Na=G1;function B(r,e="utf8"){let t=Na[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function M(r,e="utf8"){let t=Na[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}var W1=parseInt("11111",2),wd=parseInt("10000000",2),j1=parseInt("01111111",2),Kg={0:Rs,1:Rs,2:Y1,3:J1,4:Q1,5:X1,6:Z1,16:Rs,22:Rs,48:Rs};function Et(r,e={offset:0}){let t=r[e.offset]&W1;if(e.offset++,Kg[t]!=null)return Kg[t](r,e);throw new Error("No decoder for tag "+t)}function Ms(r,e){let t=0;if((r[e.offset]&wd)===wd){let n=r[e.offset]&j1,o="0x";e.offset++;for(let s=0;s<n;s++,e.offset++)o+=r[e.offset].toString(16).padStart(2,"0");t=parseInt(o,16)}else t=r[e.offset],e.offset++;return t}function Rs(r,e){Ms(r,e);let t=[];for(;!(e.offset>=r.byteLength);){let n=Et(r,e);if(n===null)break;t.push(n)}return t}function Y1(r,e){let t=Ms(r,e),n=e.offset,o=e.offset+t,s=[];for(let i=n;i<o;i++)i===n&&r[i]===0||s.push(r[i]);return e.offset+=t,Uint8Array.from(s)}function Z1(r,e){let t=Ms(r,e),n=e.offset+t,o=r[e.offset];e.offset++;let s=0,i=0;o<40?(s=0,i=o):o<80?(s=1,i=o-40):(s=2,i=o-80);let a=`${s}.${i}`,c=[];for(;e.offset<n;){let l=r[e.offset];if(e.offset++,c.push(l&127),l<128){c.reverse();let u=0;for(let f=0;f<c.length;f++)u+=c[f]<<f*7;a+=`.${u}`,c=[]}}return a}function X1(r,e){return e.offset++,null}function J1(r,e){let t=Ms(r,e),n=r[e.offset];e.offset++;let o=r.subarray(e.offset,e.offset+t-1);if(e.offset+=t,n!==0)throw new Error("Unused bits in bit string is unimplemented");return o}function Q1(r,e){let t=Ms(r,e),n=r.subarray(e.offset,e.offset+t);return e.offset+=t,n}function eA(r){let e=r.toString(16);e.length%2===1&&(e="0"+e);let t=new se;for(let n=0;n<e.length;n+=2)t.append(Uint8Array.from([parseInt(`${e[n]}${e[n+1]}`,16)]));return t}function Ra(r){if(r.byteLength<128)return Uint8Array.from([r.byteLength]);let e=eA(r.byteLength);return new se(Uint8Array.from([e.byteLength|wd]),e)}function tt(r){let e=new se,t=128;return(r.subarray()[0]&t)===t&&e.append(Uint8Array.from([0])),e.append(r),new se(Uint8Array.from([2]),Ra(e),e)}function Os(r){let e=Uint8Array.from([0]),t=new se(e,r);return new se(Uint8Array.from([3]),Ra(t),t)}function Hg(r){return new se(Uint8Array.from([4]),Ra(r),r)}function Mt(r,e=48){let t=new se;for(let n of r)t.append(n);return new se(Uint8Array.from([e]),Ra(t),t)}var qg="1.2.840.10045.3.1.7",zg="1.3.132.0.34",Gg="1.3.132.0.35";async function Wg(r="P-256"){let e=await crypto.subtle.generateKey({name:"ECDSA",namedCurve:r},!0,["sign","verify"]);return{publicKey:await crypto.subtle.exportKey("jwk",e.publicKey),privateKey:await crypto.subtle.exportKey("jwk",e.privateKey)}}async function jg(r,e,t){let n=await crypto.subtle.importKey("jwk",r,{name:"ECDSA",namedCurve:r.crv??"P-256"},!1,["sign"]);t?.signal?.throwIfAborted();let o=await crypto.subtle.sign({name:"ECDSA",hash:{name:"SHA-256"}},n,e.subarray());return t?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function Yg(r,e,t,n){let o=await crypto.subtle.importKey("jwk",r,{name:"ECDSA",namedCurve:r.crv??"P-256"},!1,["verify"]);n?.signal?.throwIfAborted();let s=await crypto.subtle.verify({name:"ECDSA",hash:{name:"SHA-256"}},o,e,t.subarray());return n?.signal?.throwIfAborted(),s}var tA=Uint8Array.from([6,8,42,134,72,206,61,3,1,7]),rA=Uint8Array.from([6,5,43,129,4,0,34]),nA=Uint8Array.from([6,5,43,129,4,0,35]),Zg={ext:!0,kty:"EC",crv:"P-256"},Xg={ext:!0,kty:"EC",crv:"P-384"},Jg={ext:!0,kty:"EC",crv:"P-521"},bo=32,xo=48,vo=66;function Qg(r){let e=Et(r);return bd(e)}function bd(r){let e=r[1],t=M(e,"base64url"),n=r[2][1][0],o=1,s,i;if(e.byteLength===bo)return s=M(n.subarray(o,o+bo),"base64url"),i=M(n.subarray(o+bo),"base64url"),new xn({...Zg,key_ops:["sign"],d:t,x:s,y:i});if(e.byteLength===xo)return s=M(n.subarray(o,o+xo),"base64url"),i=M(n.subarray(o+xo),"base64url"),new xn({...Xg,key_ops:["sign"],d:t,x:s,y:i});if(e.byteLength===vo)return s=M(n.subarray(o,o+vo),"base64url"),i=M(n.subarray(o+vo),"base64url"),new xn({...Jg,key_ops:["sign"],d:t,x:s,y:i});throw new k(`Private key length was wrong length, got ${e.byteLength}, expected 32, 48 or 66`)}function xd(r){let e=Et(r);return ey(e)}function ey(r){let e=r[1][1][0],t=1,n,o;if(e.byteLength===bo*2+1)return n=M(e.subarray(t,t+bo),"base64url"),o=M(e.subarray(t+bo),"base64url"),new bn({...Zg,key_ops:["verify"],x:n,y:o});if(e.byteLength===xo*2+1)return n=M(e.subarray(t,t+xo),"base64url"),o=M(e.subarray(t+xo),"base64url"),new bn({...Xg,key_ops:["verify"],x:n,y:o});if(e.byteLength===vo*2+1)return n=M(e.subarray(t,t+vo),"base64url"),o=M(e.subarray(t+vo),"base64url"),new bn({...Jg,key_ops:["verify"],x:n,y:o});throw new k(`coordinates were wrong length, got ${e.byteLength}, expected 65, 97 or 133`)}function ty(r){return Mt([tt(Uint8Array.from([1])),Hg(B(r.d??"","base64url")),Mt([ny(r.crv)],160),Mt([Os(new se(Uint8Array.from([4]),B(r.x??"","base64url"),B(r.y??"","base64url")))],161)]).subarray()}function ry(r){return Mt([tt(Uint8Array.from([1])),Mt([ny(r.crv)],160),Mt([Os(new se(Uint8Array.from([4]),B(r.x??"","base64url"),B(r.y??"","base64url")))],161)]).subarray()}function ny(r){if(r==="P-256")return tA;if(r==="P-384")return rA;if(r==="P-521")return nA;throw new k(`Invalid curve ${r}`)}async function oy(r="P-256"){let e=await Wg(r);return new xn(e.privateKey)}var bn=class{type="ECDSA";jwk;_raw;constructor(e){this.jwk=e}get raw(){return this._raw==null&&(this._raw=ry(this.jwk)),this._raw}toMultihash(){return Ge.digest(At(this))}toCID(){return H.createV1(114,this.toMultihash())}toString(){return le.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:X(this.raw,e.raw)}async verify(e,t,n){return Yg(this.jwk,t,e,n)}},xn=class{type="ECDSA";jwk;publicKey;_raw;constructor(e){this.jwk=e,this.publicKey=new bn({crv:e.crv,ext:e.ext,key_ops:["verify"],kty:"EC",x:e.x,y:e.y})}get raw(){return this._raw==null&&(this._raw=ty(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:X(this.raw,e.raw)}async sign(e,t){return jg(this.jwk,e,t)}};function vn(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function st(r,e=""){if(!Number.isSafeInteger(r)||r<0){let t=e&&`"${e}" `;throw new Error(`${t}expected integer >= 0, got ${r}`)}}function J(r,e,t=""){let n=vn(r),o=r?.length,s=e!==void 0;if(!n||s&&o!==e){let i=t&&`"${t}" `,a=s?` of length ${e}`:"",c=n?`length=${o}`:`type=${typeof r}`;throw new Error(i+"expected Uint8Array"+a+", got "+c)}return r}function Eo(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash must wrapped by utils.createHasher");st(r.outputLen),st(r.blockLen)}function Ao(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function iy(r,e){J(r,void 0,"digestInto() output");let t=e.outputLen;if(r.length<t)throw new Error('"digestInto() output" expected to be of length >='+t)}function it(...r){for(let e=0;e<r.length;e++)r[e].fill(0)}function En(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function Ot(r,e){return r<<32-e|r>>>e}function Ma(r,e){return r<<e|r>>>32-e>>>0}var ay=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",oA=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function br(r){if(J(r),ay)return r.toHex();let e="";for(let t=0;t<r.length;t++)e+=oA[r[t]];return e}var wr={_0:48,_9:57,A:65,F:70,a:97,f:102};function sy(r){if(r>=wr._0&&r<=wr._9)return r-wr._0;if(r>=wr.A&&r<=wr.F)return r-(wr.A-10);if(r>=wr.a&&r<=wr.f)return r-(wr.a-10)}function xr(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);if(ay)return Uint8Array.fromHex(r);let e=r.length,t=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(t);for(let o=0,s=0;o<t;o++,s+=2){let i=sy(r.charCodeAt(s)),a=sy(r.charCodeAt(s+1));if(i===void 0||a===void 0){let c=r[s]+r[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}n[o]=i*16+a}return n}var sA=async()=>{};async function cy(r,e,t){let n=Date.now();for(let o=0;o<r;o++){t(o);let s=Date.now()-n;s>=0&&s<e||(await sA(),n+=s)}}function iA(r){if(typeof r!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}function vd(r,e=""){return typeof r=="string"?iA(r):J(r,void 0,e)}function at(...r){let e=0;for(let n=0;n<r.length;n++){let o=r[n];J(o),e+=o.length}let t=new Uint8Array(e);for(let n=0,o=0;n<r.length;n++){let s=r[n];t.set(s,o),o+=s.length}return t}function ly(r,e){if(e!==void 0&&{}.toString.call(e)!=="[object Object]")throw new Error("options must be object or undefined");return Object.assign(r,e)}function Us(r,e={}){let t=(o,s)=>r(s).update(o).digest(),n=r(void 0);return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=o=>r(o),Object.assign(t,e),Object.freeze(t)}function Hr(r=32){let e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");return e.getRandomValues(new Uint8Array(r))}var Ed=r=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,r])});function Oa(r,e,t){return r&e^~r&t}function Ua(r,e,t){return r&e^r&t^e&t}var An=class{blockLen;outputLen;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,t,n,o){this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(e),this.view=En(this.buffer)}update(e){Ao(this),J(e);let{view:t,buffer:n,blockLen:o}=this,s=e.length;for(let i=0;i<s;){let a=Math.min(o-this.pos,s-i);if(a===o){let c=En(e);for(;o<=s-i;i+=o)this.process(c,i);continue}n.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Ao(this),iy(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:o,isLE:s}=this,{pos:i}=this;t[i++]=128,it(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(n,0),i=0);for(let f=i;f<o;f++)t[f]=0;n.setBigUint64(o-8,BigInt(this.length*8),s),this.process(n,0);let a=En(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen must be aligned to 32bit");let l=c/4,u=this.get();if(l>u.length)throw new Error("_sha2: outputLen bigger than state");for(let f=0;f<l;f++)a.setUint32(4*f,u[f],s)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||=new this.constructor,e.set(...this.get());let{blockLen:t,buffer:n,length:o,finished:s,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=s,e.length=o,e.pos=a,o%t&&e.buffer.set(n),e}clone(){return this._cloneInto()}},vr=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var Me=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]);var Fa=BigInt(4294967295),uy=BigInt(32);function aA(r,e=!1){return e?{h:Number(r&Fa),l:Number(r>>uy&Fa)}:{h:Number(r>>uy&Fa)|0,l:Number(r&Fa)|0}}function fy(r,e=!1){let t=r.length,n=new Uint32Array(t),o=new Uint32Array(t);for(let s=0;s<t;s++){let{h:i,l:a}=aA(r[s],e);[n[s],o[s]]=[i,a]}return[n,o]}var Ad=(r,e,t)=>r>>>t,Sd=(r,e,t)=>r<<32-t|e>>>t,Sn=(r,e,t)=>r>>>t|e<<32-t,In=(r,e,t)=>r<<32-t|e>>>t,Fs=(r,e,t)=>r<<64-t|e>>>t-32,$s=(r,e,t)=>r>>>t-32|e<<64-t;function ar(r,e,t,n){let o=(e>>>0)+(n>>>0);return{h:r+t+(o/2**32|0)|0,l:o|0}}var dy=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),hy=(r,e,t,n)=>e+t+n+(r/2**32|0)|0,py=(r,e,t,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0),my=(r,e,t,n,o)=>e+t+n+o+(r/2**32|0)|0,gy=(r,e,t,n,o)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(o>>>0),yy=(r,e,t,n,o,s)=>e+t+n+o+s+(r/2**32|0)|0;var lA=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),qr=new Uint32Array(64),Id=class extends An{constructor(e){super(64,e,8,!1)}get(){let{A:e,B:t,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[e,t,n,o,s,i,a,c]}set(e,t,n,o,s,i,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,t){for(let f=0;f<16;f++,t+=4)qr[f]=e.getUint32(t,!1);for(let f=16;f<64;f++){let d=qr[f-15],h=qr[f-2],p=Ot(d,7)^Ot(d,18)^d>>>3,g=Ot(h,17)^Ot(h,19)^h>>>10;qr[f]=g+qr[f-7]+p+qr[f-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:l,H:u}=this;for(let f=0;f<64;f++){let d=Ot(a,6)^Ot(a,11)^Ot(a,25),h=u+d+Oa(a,c,l)+lA[f]+qr[f]|0,g=(Ot(n,2)^Ot(n,13)^Ot(n,22))+Ua(n,o,s)|0;u=l,l=c,c=a,a=i+h|0,i=s,s=o,o=n,n=h+g|0}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,u=u+this.H|0,this.set(n,o,s,i,a,c,l,u)}roundClean(){it(qr)}destroy(){this.set(0,0,0,0,0,0,0,0),it(this.buffer)}},kd=class extends Id{A=vr[0]|0;B=vr[1]|0;C=vr[2]|0;D=vr[3]|0;E=vr[4]|0;F=vr[5]|0;G=vr[6]|0;H=vr[7]|0;constructor(){super(32)}};var wy=fy(["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(r=>BigInt(r))),uA=wy[0],fA=wy[1],zr=new Uint32Array(80),Gr=new Uint32Array(80),_d=class extends An{constructor(e){super(128,e,16,!1)}get(){let{Ah:e,Al:t,Bh:n,Bl:o,Ch:s,Cl:i,Dh:a,Dl:c,Eh:l,El:u,Fh:f,Fl:d,Gh:h,Gl:p,Hh:g,Hl:w}=this;return[e,t,n,o,s,i,a,c,l,u,f,d,h,p,g,w]}set(e,t,n,o,s,i,a,c,l,u,f,d,h,p,g,w){this.Ah=e|0,this.Al=t|0,this.Bh=n|0,this.Bl=o|0,this.Ch=s|0,this.Cl=i|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=u|0,this.Fh=f|0,this.Fl=d|0,this.Gh=h|0,this.Gl=p|0,this.Hh=g|0,this.Hl=w|0}process(e,t){for(let S=0;S<16;S++,t+=4)zr[S]=e.getUint32(t),Gr[S]=e.getUint32(t+=4);for(let S=16;S<80;S++){let D=zr[S-15]|0,K=Gr[S-15]|0,Y=Sn(D,K,1)^Sn(D,K,8)^Ad(D,K,7),G=In(D,K,1)^In(D,K,8)^Sd(D,K,7),x=zr[S-2]|0,v=Gr[S-2]|0,P=Sn(x,v,19)^Fs(x,v,61)^Ad(x,v,6),N=In(x,v,19)^$s(x,v,61)^Sd(x,v,6),C=py(G,N,Gr[S-7],Gr[S-16]),E=my(C,Y,P,zr[S-7],zr[S-16]);zr[S]=E|0,Gr[S]=C|0}let{Ah:n,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:l,Dl:u,Eh:f,El:d,Fh:h,Fl:p,Gh:g,Gl:w,Hh:b,Hl:T}=this;for(let S=0;S<80;S++){let D=Sn(f,d,14)^Sn(f,d,18)^Fs(f,d,41),K=In(f,d,14)^In(f,d,18)^$s(f,d,41),Y=f&h^~f&g,G=d&p^~d&w,x=gy(T,K,G,fA[S],Gr[S]),v=yy(x,b,D,Y,uA[S],zr[S]),P=x|0,N=Sn(n,o,28)^Fs(n,o,34)^Fs(n,o,39),C=In(n,o,28)^$s(n,o,34)^$s(n,o,39),E=n&s^n&a^s&a,A=o&i^o&c^i&c;b=g|0,T=w|0,g=h|0,w=p|0,h=f|0,p=d|0,{h:f,l:d}=ar(l|0,u|0,v|0,P|0),l=a|0,u=c|0,a=s|0,c=i|0,s=n|0,i=o|0;let y=dy(P,C,A);n=hy(y,v,N,E),o=y|0}({h:n,l:o}=ar(this.Ah|0,this.Al|0,n|0,o|0)),{h:s,l:i}=ar(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=ar(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:u}=ar(this.Dh|0,this.Dl|0,l|0,u|0),{h:f,l:d}=ar(this.Eh|0,this.El|0,f|0,d|0),{h,l:p}=ar(this.Fh|0,this.Fl|0,h|0,p|0),{h:g,l:w}=ar(this.Gh|0,this.Gl|0,g|0,w|0),{h:b,l:T}=ar(this.Hh|0,this.Hl|0,b|0,T|0),this.set(n,o,s,i,a,c,l,u,f,d,h,p,g,w,b,T)}roundClean(){it(zr,Gr)}destroy(){it(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},Cd=class extends _d{Ah=Me[0]|0;Al=Me[1]|0;Bh=Me[2]|0;Bl=Me[3]|0;Ch=Me[4]|0;Cl=Me[5]|0;Dh=Me[6]|0;Dl=Me[7]|0;Eh=Me[8]|0;El=Me[9]|0;Fh=Me[10]|0;Fl=Me[11]|0;Gh=Me[12]|0;Gl=Me[13]|0;Hh=Me[14]|0;Hl=Me[15]|0;constructor(){super(64)}};var Wr=Us(()=>new kd,Ed(1));var jr=Us(()=>new Cd,Ed(3));var Bd=BigInt(0),Td=BigInt(1);function Er(r,e=""){if(typeof r!="boolean"){let t=e&&`"${e}" `;throw new Error(t+"expected boolean, got type="+typeof r)}return r}function by(r){if(typeof r=="bigint"){if(!$a(r))throw new Error("positive bigint expected, got "+r)}else st(r);return r}function Vs(r){let e=by(r).toString(16);return e.length&1?"0"+e:e}function xy(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return r===""?Bd:BigInt("0x"+r)}function So(r){return xy(br(r))}function kn(r){return xy(br(Ka(J(r)).reverse()))}function Va(r,e){st(e),r=by(r);let t=xr(r.toString(16).padStart(e*2,"0"));if(t.length!==e)throw new Error("number too large");return t}function Ld(r,e){return Va(r,e).reverse()}function Ka(r){return Uint8Array.from(r)}var $a=r=>typeof r=="bigint"&&Bd<=r;function dA(r,e,t){return $a(r)&&$a(e)&&$a(t)&&e<=r&&r<t}function Ks(r,e,t,n){if(!dA(e,t,n))throw new Error("expected valid "+r+": "+t+" <= n < "+n+", got "+e)}function Pd(r){let e;for(e=0;r>Bd;r>>=Td,e+=1);return e}var Hs=r=>(Td<<BigInt(r))-Td;function vy(r,e,t){if(st(r,"hashLen"),st(e,"qByteLen"),typeof t!="function")throw new Error("hmacFn must be a function");let n=w=>new Uint8Array(w),o=Uint8Array.of(),s=Uint8Array.of(0),i=Uint8Array.of(1),a=1e3,c=n(r),l=n(r),u=0,f=()=>{c.fill(1),l.fill(0),u=0},d=(...w)=>t(l,at(c,...w)),h=(w=o)=>{l=d(s,w),c=d(),w.length!==0&&(l=d(i,w),c=d())},p=()=>{if(u++>=a)throw new Error("drbg: tried max amount of iterations");let w=0,b=[];for(;w<e;){c=d();let T=c.slice();b.push(T),w+=c.length}return at(...b)};return(w,b)=>{f(),h(w);let T;for(;!(T=b(p()));)h();return f(),T}}function Yr(r,e={},t={}){if(!r||typeof r!="object")throw new Error("expected valid options object");function n(s,i,a){let c=r[s];if(a&&c===void 0)return;let l=typeof c;if(l!==i||c===null)throw new Error(`param "${s}" is invalid: expected ${i}, got ${l}`)}let o=(s,i)=>Object.entries(s).forEach(([a,c])=>n(a,c,i));o(e,!1),o(t,!0)}function Io(r){let e=new WeakMap;return(t,...n)=>{let o=e.get(t);if(o!==void 0)return o;let s=r(t,...n);return e.set(t,s),s}}var rt=BigInt(0),Be=BigInt(1),_n=BigInt(2),Sy=BigInt(3),Iy=BigInt(4),ky=BigInt(5),hA=BigInt(7),_y=BigInt(8),pA=BigInt(9),Cy=BigInt(16);function Ee(r,e){let t=r%e;return t>=rt?t:e+t}function me(r,e,t){let n=r;for(;e-- >rt;)n*=n,n%=t;return n}function Ey(r,e){if(r===rt)throw new Error("invert: expected non-zero number");if(e<=rt)throw new Error("invert: expected positive modulus, got "+e);let t=Ee(r,e),n=e,o=rt,s=Be,i=Be,a=rt;for(;t!==rt;){let l=n/t,u=n%t,f=o-i*l,d=s-a*l;n=t,t=u,o=i,s=a,i=f,a=d}if(n!==Be)throw new Error("invert: does not exist");return Ee(o,e)}function Nd(r,e,t){if(!r.eql(r.sqr(e),t))throw new Error("Cannot find square root")}function Ty(r,e){let t=(r.ORDER+Be)/Iy,n=r.pow(e,t);return Nd(r,n,e),n}function mA(r,e){let t=(r.ORDER-ky)/_y,n=r.mul(e,_n),o=r.pow(n,t),s=r.mul(e,o),i=r.mul(r.mul(s,_n),o),a=r.mul(s,r.sub(i,r.ONE));return Nd(r,a,e),a}function gA(r){let e=ko(r),t=By(r),n=t(e,e.neg(e.ONE)),o=t(e,n),s=t(e,e.neg(n)),i=(r+hA)/Cy;return(a,c)=>{let l=a.pow(c,i),u=a.mul(l,n),f=a.mul(l,o),d=a.mul(l,s),h=a.eql(a.sqr(u),c),p=a.eql(a.sqr(f),c);l=a.cmov(l,u,h),u=a.cmov(d,f,p);let g=a.eql(a.sqr(u),c),w=a.cmov(l,u,g);return Nd(a,w,c),w}}function By(r){if(r<Sy)throw new Error("sqrt is not defined for small field");let e=r-Be,t=0;for(;e%_n===rt;)e/=_n,t++;let n=_n,o=ko(r);for(;Ay(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(t===1)return Ty;let s=o.pow(n,e),i=(e+Be)/_n;return function(c,l){if(c.is0(l))return l;if(Ay(c,l)!==1)throw new Error("Cannot find square root");let u=t,f=c.mul(c.ONE,s),d=c.pow(l,e),h=c.pow(l,i);for(;!c.eql(d,c.ONE);){if(c.is0(d))return c.ZERO;let p=1,g=c.sqr(d);for(;!c.eql(g,c.ONE);)if(p++,g=c.sqr(g),p===u)throw new Error("Cannot find square root");let w=Be<<BigInt(u-p-1),b=c.pow(f,w);u=p,f=c.sqr(b),d=c.mul(d,f),h=c.mul(h,b)}return h}}function yA(r){return r%Iy===Sy?Ty:r%_y===ky?mA:r%Cy===pA?gA(r):By(r)}var Ly=(r,e)=>(Ee(r,e)&Be)===Be,wA=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Rd(r){let e={ORDER:"bigint",BYTES:"number",BITS:"number"},t=wA.reduce((n,o)=>(n[o]="function",n),e);return Yr(r,t),r}function bA(r,e,t){if(t<rt)throw new Error("invalid exponent, negatives unsupported");if(t===rt)return r.ONE;if(t===Be)return e;let n=r.ONE,o=e;for(;t>rt;)t&Be&&(n=r.mul(n,o)),o=r.sqr(o),t>>=Be;return n}function qs(r,e,t=!1){let n=new Array(e.length).fill(t?r.ZERO:void 0),o=e.reduce((i,a,c)=>r.is0(a)?i:(n[c]=i,r.mul(i,a)),r.ONE),s=r.inv(o);return e.reduceRight((i,a,c)=>r.is0(a)?i:(n[c]=r.mul(i,n[c]),r.mul(i,a)),s),n}function Ay(r,e){let t=(r.ORDER-Be)/_n,n=r.pow(e,t),o=r.eql(n,r.ONE),s=r.eql(n,r.ZERO),i=r.eql(n,r.neg(r.ONE));if(!o&&!s&&!i)throw new Error("invalid Legendre symbol result");return o?1:s?0:-1}function xA(r,e){e!==void 0&&st(e);let t=e!==void 0?e:r.toString(2).length,n=Math.ceil(t/8);return{nBitLength:t,nByteLength:n}}var Dd=class{ORDER;BITS;BYTES;isLE;ZERO=rt;ONE=Be;_lengths;_sqrt;_mod;constructor(e,t={}){if(e<=rt)throw new Error("invalid field: expected ORDER > 0, got "+e);let n;this.isLE=!1,t!=null&&typeof t=="object"&&(typeof t.BITS=="number"&&(n=t.BITS),typeof t.sqrt=="function"&&(this.sqrt=t.sqrt),typeof t.isLE=="boolean"&&(this.isLE=t.isLE),t.allowedLengths&&(this._lengths=t.allowedLengths?.slice()),typeof t.modFromBytes=="boolean"&&(this._mod=t.modFromBytes));let{nBitLength:o,nByteLength:s}=xA(e,n);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=e,this.BITS=o,this.BYTES=s,this._sqrt=void 0,Object.preventExtensions(this)}create(e){return Ee(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof e);return rt<=e&&e<this.ORDER}is0(e){return e===rt}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&Be)===Be}neg(e){return Ee(-e,this.ORDER)}eql(e,t){return e===t}sqr(e){return Ee(e*e,this.ORDER)}add(e,t){return Ee(e+t,this.ORDER)}sub(e,t){return Ee(e-t,this.ORDER)}mul(e,t){return Ee(e*t,this.ORDER)}pow(e,t){return bA(this,e,t)}div(e,t){return Ee(e*Ey(t,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,t){return e+t}subN(e,t){return e-t}mulN(e,t){return e*t}inv(e){return Ey(e,this.ORDER)}sqrt(e){return this._sqrt||(this._sqrt=yA(this.ORDER)),this._sqrt(this,e)}toBytes(e){return this.isLE?Ld(e,this.BYTES):Va(e,this.BYTES)}fromBytes(e,t=!1){J(e);let{_lengths:n,BYTES:o,isLE:s,ORDER:i,_mod:a}=this;if(n){if(!n.includes(e.length)||e.length>o)throw new Error("Field.fromBytes: expected "+n+" bytes, got "+e.length);let l=new Uint8Array(o);l.set(e,s?0:l.length-e.length),e=l}if(e.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+e.length);let c=s?kn(e):So(e);if(a&&(c=Ee(c,i)),!t&&!this.isValid(c))throw new Error("invalid field element: outside of range 0..ORDER");return c}invertBatch(e){return qs(this,e)}cmov(e,t,n){return n?t:e}};function ko(r,e={}){return new Dd(r,e)}function Py(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let e=r.toString(2).length;return Math.ceil(e/8)}function Md(r){let e=Py(r);return e+Math.ceil(e/2)}function Od(r,e,t=!1){J(r);let n=r.length,o=Py(e),s=Md(e);if(n<16||n<s||n>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+n);let i=t?kn(r):So(r),a=Ee(i,e-Be)+Be;return t?Ld(a,o):Va(a,o)}var _o=BigInt(0),Cn=BigInt(1);function zs(r,e){let t=e.negate();return r?t:e}function Tn(r,e){let t=qs(r.Fp,e.map(n=>n.Z));return e.map((n,o)=>r.fromAffine(n.toAffine(t[o])))}function My(r,e){if(!Number.isSafeInteger(r)||r<=0||r>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+r)}function Ud(r,e){My(r,e);let t=Math.ceil(e/r)+1,n=2**(r-1),o=2**r,s=Hs(r),i=BigInt(r);return{windows:t,windowSize:n,mask:s,maxNumber:o,shiftBy:i}}function Dy(r,e,t){let{windowSize:n,mask:o,maxNumber:s,shiftBy:i}=t,a=Number(r&o),c=r>>i;a>n&&(a-=s,c+=Cn);let l=e*n,u=l+Math.abs(a)-1,f=a===0,d=a<0,h=e%2!==0;return{nextN:c,offset:u,isZero:f,isNeg:d,isNegF:h,offsetF:l}}var Fd=new WeakMap,Oy=new WeakMap;function $d(r){return Oy.get(r)||1}function Ny(r){if(r!==_o)throw new Error("invalid wNAF")}var Co=class{BASE;ZERO;Fn;bits;constructor(e,t){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=t}_unsafeLadder(e,t,n=this.ZERO){let o=e;for(;t>_o;)t&Cn&&(n=n.add(o)),o=o.double(),t>>=Cn;return n}precomputeWindow(e,t){let{windows:n,windowSize:o}=Ud(t,this.bits),s=[],i=e,a=i;for(let c=0;c<n;c++){a=i,s.push(a);for(let l=1;l<o;l++)a=a.add(i),s.push(a);i=a.double()}return s}wNAF(e,t,n){if(!this.Fn.isValid(n))throw new Error("invalid scalar");let o=this.ZERO,s=this.BASE,i=Ud(e,this.bits);for(let a=0;a<i.windows;a++){let{nextN:c,offset:l,isZero:u,isNeg:f,isNegF:d,offsetF:h}=Dy(n,a,i);n=c,u?s=s.add(zs(d,t[h])):o=o.add(zs(f,t[l]))}return Ny(n),{p:o,f:s}}wNAFUnsafe(e,t,n,o=this.ZERO){let s=Ud(e,this.bits);for(let i=0;i<s.windows&&n!==_o;i++){let{nextN:a,offset:c,isZero:l,isNeg:u}=Dy(n,i,s);if(n=a,!l){let f=t[c];o=o.add(u?f.negate():f)}}return Ny(n),o}getPrecomputes(e,t,n){let o=Fd.get(t);return o||(o=this.precomputeWindow(t,e),e!==1&&(typeof n=="function"&&(o=n(o)),Fd.set(t,o))),o}cached(e,t,n){let o=$d(e);return this.wNAF(o,this.getPrecomputes(o,e,n),t)}unsafe(e,t,n,o){let s=$d(e);return s===1?this._unsafeLadder(e,t,o):this.wNAFUnsafe(s,this.getPrecomputes(s,e,n),t,o)}createCache(e,t){My(t,this.bits),Oy.set(e,t),Fd.delete(e)}hasCache(e){return $d(e)!==1}};function Uy(r,e,t,n){let o=e,s=r.ZERO,i=r.ZERO;for(;t>_o||n>_o;)t&Cn&&(s=s.add(o)),n&Cn&&(i=i.add(o)),o=o.double(),t>>=Cn,n>>=Cn;return{p1:s,p2:i}}function Ry(r,e,t){if(e){if(e.ORDER!==r)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return Rd(e),e}else return ko(r,{isLE:t})}function Ha(r,e,t={},n){if(n===void 0&&(n=r==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${r} CURVE object`);for(let c of["p","n","h"]){let l=e[c];if(!(typeof l=="bigint"&&l>_o))throw new Error(`CURVE.${c} must be positive bigint`)}let o=Ry(e.p,t.Fp,n),s=Ry(e.n,t.Fn,n),a=["Gx","Gy","a",r==="weierstrass"?"b":"d"];for(let c of a)if(!o.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:s}}function qa(r,e){return function(n){let o=r(n);return{secretKey:o,publicKey:e(o)}}}var Zr=BigInt(0),Le=BigInt(1),Vd=BigInt(2),vA=BigInt(8);function EA(r,e,t,n){let o=r.sqr(t),s=r.sqr(n),i=r.add(r.mul(e.a,o),s),a=r.add(r.ONE,r.mul(e.d,r.mul(o,s)));return r.eql(i,a)}function Fy(r,e={}){let t=Ha("edwards",r,e,e.FpFnLE),{Fp:n,Fn:o}=t,s=t.CURVE,{h:i}=s;Yr(e,{},{uvRatio:"function"});let a=Vd<<BigInt(o.BYTES*8)-Le,c=w=>n.create(w),l=e.uvRatio||((w,b)=>{try{return{isValid:!0,value:n.sqrt(n.div(w,b))}}catch{return{isValid:!1,value:Zr}}});if(!EA(n,s,s.Gx,s.Gy))throw new Error("bad curve params: generator point");function u(w,b,T=!1){let S=T?Le:Zr;return Ks("coordinate "+w,b,S,a),b}function f(w){if(!(w instanceof p))throw new Error("EdwardsPoint expected")}let d=Io((w,b)=>{let{X:T,Y:S,Z:D}=w,K=w.is0();b==null&&(b=K?vA:n.inv(D));let Y=c(T*b),G=c(S*b),x=n.mul(D,b);if(K)return{x:Zr,y:Le};if(x!==Le)throw new Error("invZ was invalid");return{x:Y,y:G}}),h=Io(w=>{let{a:b,d:T}=s;if(w.is0())throw new Error("bad point: ZERO");let{X:S,Y:D,Z:K,T:Y}=w,G=c(S*S),x=c(D*D),v=c(K*K),P=c(v*v),N=c(G*b),C=c(v*c(N+x)),E=c(P+c(T*c(G*x)));if(C!==E)throw new Error("bad point: equation left != right (1)");let A=c(S*D),y=c(K*Y);if(A!==y)throw new Error("bad point: equation left != right (2)");return!0});class p{static BASE=new p(s.Gx,s.Gy,Le,c(s.Gx*s.Gy));static ZERO=new p(Zr,Le,Le,Zr);static Fp=n;static Fn=o;X;Y;Z;T;constructor(b,T,S,D){this.X=u("x",b),this.Y=u("y",T),this.Z=u("z",S,!0),this.T=u("t",D),Object.freeze(this)}static CURVE(){return s}static fromAffine(b){if(b instanceof p)throw new Error("extended point not allowed");let{x:T,y:S}=b||{};return u("x",T),u("y",S),new p(T,S,Le,c(T*S))}static fromBytes(b,T=!1){let S=n.BYTES,{a:D,d:K}=s;b=Ka(J(b,S,"point")),Er(T,"zip215");let Y=Ka(b),G=b[S-1];Y[S-1]=G&-129;let x=kn(Y),v=T?a:n.ORDER;Ks("point.y",x,Zr,v);let P=c(x*x),N=c(P-Le),C=c(K*P-D),{isValid:E,value:A}=l(N,C);if(!E)throw new Error("bad point: invalid y coordinate");let y=(A&Le)===Le,_=(G&128)!==0;if(!T&&A===Zr&&_)throw new Error("bad point: x=0 and x_0=1");return _!==y&&(A=c(-A)),p.fromAffine({x:A,y:x})}static fromHex(b,T=!1){return p.fromBytes(xr(b),T)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(b=8,T=!0){return g.createCache(this,b),T||this.multiply(Vd),this}assertValidity(){h(this)}equals(b){f(b);let{X:T,Y:S,Z:D}=this,{X:K,Y,Z:G}=b,x=c(T*G),v=c(K*D),P=c(S*G),N=c(Y*D);return x===v&&P===N}is0(){return this.equals(p.ZERO)}negate(){return new p(c(-this.X),this.Y,this.Z,c(-this.T))}double(){let{a:b}=s,{X:T,Y:S,Z:D}=this,K=c(T*T),Y=c(S*S),G=c(Vd*c(D*D)),x=c(b*K),v=T+S,P=c(c(v*v)-K-Y),N=x+Y,C=N-G,E=x-Y,A=c(P*C),y=c(N*E),_=c(P*E),R=c(C*N);return new p(A,y,R,_)}add(b){f(b);let{a:T,d:S}=s,{X:D,Y:K,Z:Y,T:G}=this,{X:x,Y:v,Z:P,T:N}=b,C=c(D*x),E=c(K*v),A=c(G*S*N),y=c(Y*P),_=c((D+K)*(x+v)-C-E),R=y-A,O=y+A,$=c(E-T*C),V=c(_*R),z=c(O*$),Z=c(_*$),ye=c(R*O);return new p(V,z,ye,Z)}subtract(b){return this.add(b.negate())}multiply(b){if(!o.isValidNot0(b))throw new Error("invalid scalar: expected 1 <= sc < curve.n");let{p:T,f:S}=g.cached(this,b,D=>Tn(p,D));return Tn(p,[T,S])[0]}multiplyUnsafe(b,T=p.ZERO){if(!o.isValid(b))throw new Error("invalid scalar: expected 0 <= sc < curve.n");return b===Zr?p.ZERO:this.is0()||b===Le?this:g.unsafe(this,b,S=>Tn(p,S),T)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}isTorsionFree(){return g.unsafe(this,s.n).is0()}toAffine(b){return d(this,b)}clearCofactor(){return i===Le?this:this.multiplyUnsafe(i)}toBytes(){let{x:b,y:T}=this.toAffine(),S=n.toBytes(T);return S[S.length-1]|=b&Le?128:0,S}toHex(){return br(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}let g=new Co(p,o.BITS);return p.BASE.precompute(8),p}function $y(r,e,t={}){if(typeof e!="function")throw new Error('"hash" function param is required');Yr(t,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",mapToCurve:"function"});let{prehash:n}=t,{BASE:o,Fp:s,Fn:i}=r,a=t.randomBytes||Hr,c=t.adjustScalarBytes||(x=>x),l=t.domain||((x,v,P)=>{if(Er(P,"phflag"),v.length||P)throw new Error("Contexts/pre-hash are not supported");return x});function u(x){return i.create(kn(x))}function f(x){let v=S.secretKey;J(x,S.secretKey,"secretKey");let P=J(e(x),2*v,"hashedSecretKey"),N=c(P.slice(0,v)),C=P.slice(v,2*v),E=u(N);return{head:N,prefix:C,scalar:E}}function d(x){let{head:v,prefix:P,scalar:N}=f(x),C=o.multiply(N),E=C.toBytes();return{head:v,prefix:P,scalar:N,point:C,pointBytes:E}}function h(x){return d(x).pointBytes}function p(x=Uint8Array.of(),...v){let P=at(...v);return u(e(l(P,J(x,void 0,"context"),!!n)))}function g(x,v,P={}){x=J(x,void 0,"message"),n&&(x=n(x));let{prefix:N,scalar:C,pointBytes:E}=d(v),A=p(P.context,N,x),y=o.multiply(A).toBytes(),_=p(P.context,y,E,x),R=i.create(A+_*C);if(!i.isValid(R))throw new Error("sign failed: invalid s");let O=at(y,i.toBytes(R));return J(O,S.signature,"result")}let w={zip215:!0};function b(x,v,P,N=w){let{context:C,zip215:E}=N,A=S.signature;x=J(x,A,"signature"),v=J(v,void 0,"message"),P=J(P,S.publicKey,"publicKey"),E!==void 0&&Er(E,"zip215"),n&&(v=n(v));let y=A/2,_=x.subarray(0,y),R=kn(x.subarray(y,A)),O,$,V;try{O=r.fromBytes(P,E),$=r.fromBytes(_,E),V=o.multiplyUnsafe(R)}catch{return!1}if(!E&&O.isSmallOrder())return!1;let z=p(C,$.toBytes(),O.toBytes(),v);return $.add(O.multiplyUnsafe(z)).subtract(V).clearCofactor().is0()}let T=s.BYTES,S={secretKey:T,publicKey:T,signature:2*T,seed:T};function D(x=a(S.seed)){return J(x,S.seed,"seed")}function K(x){return vn(x)&&x.length===i.BYTES}function Y(x,v){try{return!!r.fromBytes(x,v)}catch{return!1}}let G={getExtendedPublicKey:d,randomSecretKey:D,isValidSecretKey:K,isValidPublicKey:Y,toMontgomery(x){let{y:v}=r.fromBytes(x),P=S.publicKey,N=P===32;if(!N&&P!==57)throw new Error("only defined for 25519 and 448");let C=N?s.div(Le+v,Le-v):s.div(v-Le,v+Le);return s.toBytes(C)},toMontgomerySecret(x){let v=S.secretKey;J(x,v);let P=e(x.subarray(0,v));return c(P).subarray(0,v)}};return Object.freeze({keygen:qa(D,h),getPublicKey:h,sign:g,verify:b,utils:G,Point:r,lengths:S})}var AA=BigInt(1),Vy=BigInt(2);var SA=BigInt(5),IA=BigInt(8),Kd=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),kA={p:Kd,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:IA,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function _A(r){let e=BigInt(10),t=BigInt(20),n=BigInt(40),o=BigInt(80),s=Kd,a=r*r%s*r%s,c=me(a,Vy,s)*a%s,l=me(c,AA,s)*r%s,u=me(l,SA,s)*l%s,f=me(u,e,s)*u%s,d=me(f,t,s)*f%s,h=me(d,n,s)*d%s,p=me(h,o,s)*h%s,g=me(p,o,s)*h%s,w=me(g,e,s)*u%s;return{pow_p_5_8:me(w,Vy,s)*r%s,b2:a}}function CA(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}var Ky=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function TA(r,e){let t=Kd,n=Ee(e*e*e,t),o=Ee(n*n*e,t),s=_A(r*o).pow_p_5_8,i=Ee(r*n*s,t),a=Ee(e*i*i,t),c=i,l=Ee(i*Ky,t),u=a===r,f=a===Ee(-r,t),d=a===Ee(-r*Ky,t);return u&&(i=c),(f||d)&&(i=l),Ly(i,t)&&(i=Ee(-i,t)),{isValid:u||f,value:i}}var BA=Fy(kA,{uvRatio:TA});function LA(r){return $y(BA,jr,Object.assign({adjustScalarBytes:CA},r))}var Gs=LA({});var Bn=32,ht=64,Hd=32;var To,Hy=(async()=>{try{return await Se.get().subtle.generateKey({name:"Ed25519"},!0,["sign","verify"]),!0}catch{return!1}})();function qy(){let r=Gs.utils.randomSecretKey(),e=Gs.getPublicKey(r);return{privateKey:MA(r,e),publicKey:e}}async function PA(r,e){let t;r.length===ht?t=r.subarray(0,32):t=r;let n={crv:"Ed25519",kty:"OKP",x:M(r.subarray(32),"base64url"),d:M(t,"base64url"),ext:!0,key_ops:["sign"]},o=await Se.get().subtle.importKey("jwk",n,{name:"Ed25519"},!0,["sign"]),s=await Se.get().subtle.sign({name:"Ed25519"},o,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(s,0,s.byteLength)}function DA(r,e){let t=r.subarray(0,Hd);return Gs.sign(e instanceof Uint8Array?e:e.subarray(),t)}async function zy(r,e){return To==null&&(To=await Hy),To?PA(r,e):DA(r,e)}async function NA(r,e,t){if(r.buffer instanceof ArrayBuffer){let n=await Se.get().subtle.importKey("raw",r.buffer,{name:"Ed25519"},!1,["verify"]);return await Se.get().subtle.verify({name:"Ed25519"},n,e,t instanceof Uint8Array?t:t.subarray())}throw new TypeError("WebCrypto does not support SharedArrayBuffer for Ed25519 keys")}function RA(r,e,t){return Gs.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}async function Gy(r,e,t){return To==null&&(To=await Hy),To?NA(r,e,t):RA(r,e,t)}function MA(r,e){let t=new Uint8Array(ht);for(let n=0;n<Hd;n++)t[n]=r[n],t[Hd+n]=e[n];return t}function Bo(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var Ws=class{type="Ed25519";raw;constructor(e){this.raw=Po(e,Bn)}toMultihash(){return Ge.digest(At(this))}toCID(){return H.createV1(114,this.toMultihash())}toString(){return le.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:X(this.raw,e.raw)}verify(e,t,n){n?.signal?.throwIfAborted();let o=Gy(this.raw,t,e);return Bo(o)?o.then(s=>(n?.signal?.throwIfAborted(),s)):o}},Lo=class{type="Ed25519";raw;publicKey;constructor(e,t){this.raw=Po(e,ht),this.publicKey=new Ws(t)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:X(this.raw,e.raw)}sign(e,t){t?.signal?.throwIfAborted();let n=zy(this.raw,e);return Bo(n)?n.then(o=>(t?.signal?.throwIfAborted(),o)):(t?.signal?.throwIfAborted(),n)}};function qd(r){if(r.length>ht){r=Po(r,ht+Bn);let n=r.subarray(0,ht),o=r.subarray(ht,r.length);return new Lo(n,o)}r=Po(r,ht);let e=r.subarray(0,ht),t=r.subarray(Bn);return new Lo(e,t)}function zd(r){return r=Po(r,Bn),new Ws(r)}async function jy(){let{privateKey:r,publicKey:e}=qy();return new Lo(r,e)}function Po(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new k(`Key must be a Uint8Array of length ${e}, got ${r.length}`);return r}var OA=Math.pow(2,7),UA=Math.pow(2,14),FA=Math.pow(2,21),Gd=Math.pow(2,28),Wd=Math.pow(2,35),jd=Math.pow(2,42),Yd=Math.pow(2,49),ie=128,Ye=127;function Pe(r){if(r<OA)return 1;if(r<UA)return 2;if(r<FA)return 3;if(r<Gd)return 4;if(r<Wd)return 5;if(r<jd)return 6;if(r<Yd)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Do(r,e,t=0){switch(Pe(r)){case 8:e[t++]=r&255|ie,r/=128;case 7:e[t++]=r&255|ie,r/=128;case 6:e[t++]=r&255|ie,r/=128;case 5:e[t++]=r&255|ie,r/=128;case 4:e[t++]=r&255|ie,r>>>=7;case 3:e[t++]=r&255|ie,r>>>=7;case 2:e[t++]=r&255|ie,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function $A(r,e,t=0){switch(Pe(r)){case 8:e.set(t++,r&255|ie),r/=128;case 7:e.set(t++,r&255|ie),r/=128;case 6:e.set(t++,r&255|ie),r/=128;case 5:e.set(t++,r&255|ie),r/=128;case 4:e.set(t++,r&255|ie),r>>>=7;case 3:e.set(t++,r&255|ie),r>>>=7;case 2:e.set(t++,r&255|ie),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function Zd(r,e){let t=r[e],n=0;if(n+=t&Ye,t<ie||(t=r[e+1],n+=(t&Ye)<<7,t<ie)||(t=r[e+2],n+=(t&Ye)<<14,t<ie)||(t=r[e+3],n+=(t&Ye)<<21,t<ie)||(t=r[e+4],n+=(t&Ye)*Gd,t<ie)||(t=r[e+5],n+=(t&Ye)*Wd,t<ie)||(t=r[e+6],n+=(t&Ye)*jd,t<ie)||(t=r[e+7],n+=(t&Ye)*Yd,t<ie))return n;throw new RangeError("Could not decode varint")}function VA(r,e){let t=r.get(e),n=0;if(n+=t&Ye,t<ie||(t=r.get(e+1),n+=(t&Ye)<<7,t<ie)||(t=r.get(e+2),n+=(t&Ye)<<14,t<ie)||(t=r.get(e+3),n+=(t&Ye)<<21,t<ie)||(t=r.get(e+4),n+=(t&Ye)*Gd,t<ie)||(t=r.get(e+5),n+=(t&Ye)*Wd,t<ie)||(t=r.get(e+6),n+=(t&Ye)*jd,t<ie)||(t=r.get(e+7),n+=(t&Ye)*Yd,t<ie))return n;throw new RangeError("Could not decode varint")}function Xr(r,e,t=0){return e==null&&(e=We(Pe(r))),e instanceof Uint8Array?Do(r,e,t):$A(r,e,t)}function Ln(r,e=0){return r instanceof Uint8Array?Zd(r,e):VA(r,e)}var Xd=new Float32Array([-0]),Jr=new Uint8Array(Xd.buffer);function Yy(r,e,t){Xd[0]=r,e[t]=Jr[0],e[t+1]=Jr[1],e[t+2]=Jr[2],e[t+3]=Jr[3]}function Zy(r,e){return Jr[0]=r[e],Jr[1]=r[e+1],Jr[2]=r[e+2],Jr[3]=r[e+3],Xd[0]}var Jd=new Float64Array([-0]),Ze=new Uint8Array(Jd.buffer);function Xy(r,e,t){Jd[0]=r,e[t]=Ze[0],e[t+1]=Ze[1],e[t+2]=Ze[2],e[t+3]=Ze[3],e[t+4]=Ze[4],e[t+5]=Ze[5],e[t+6]=Ze[6],e[t+7]=Ze[7]}function Jy(r,e){return Ze[0]=r[e],Ze[1]=r[e+1],Ze[2]=r[e+2],Ze[3]=r[e+3],Ze[4]=r[e+4],Ze[5]=r[e+5],Ze[6]=r[e+6],Ze[7]=r[e+7],Jd[0]}var KA=BigInt(Number.MAX_SAFE_INTEGER),HA=BigInt(Number.MIN_SAFE_INTEGER),pt=class r{lo;hi;constructor(e,t){this.lo=e|0,this.hi=t|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(t+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(BigInt(t)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){let e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){let e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){let e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?t===0?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return Pn;if(e<KA&&e>HA)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,o=e-(n<<32n);return t&&(n=~n|0n,o=~o|0n,++o>Qy&&(o=0n,++n>Qy&&(n=0n))),new r(Number(o),Number(n))}static fromNumber(e){if(e===0)return Pn;let t=e<0;t&&(e=-e);let n=e>>>0,o=(e-n)/4294967296>>>0;return t&&(o=~o>>>0,n=~n>>>0,++n>4294967295&&(n=0,++o>4294967295&&(o=0))),new r(n,o)}static from(e){return typeof e=="number"?r.fromNumber(e):typeof e=="bigint"?r.fromBigInt(e):typeof e=="string"?r.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new r(e.low>>>0,e.high>>>0):Pn}},Pn=new pt(0,0);Pn.toBigInt=function(){return 0n};Pn.zzEncode=Pn.zzDecode=function(){return this};Pn.length=function(){return 1};var Qy=4294967296n;function e0(r){let e=0,t=0;for(let n=0;n<r.length;++n)t=r.charCodeAt(n),t<128?e+=1:t<2048?e+=2:(t&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function t0(r,e,t){if(t-e<1)return"";let o,s=[],i=0,a;for(;e<t;)a=r[e++],a<128?s[i++]=a:a>191&&a<224?s[i++]=(a&31)<<6|r[e++]&63:a>239&&a<365?(a=((a&7)<<18|(r[e++]&63)<<12|(r[e++]&63)<<6|r[e++]&63)-65536,s[i++]=55296+(a>>10),s[i++]=56320+(a&1023)):s[i++]=(a&15)<<12|(r[e++]&63)<<6|r[e++]&63,i>8191&&((o??(o=[])).push(String.fromCharCode.apply(String,s)),i=0);return o!=null?(i>0&&o.push(String.fromCharCode.apply(String,s.slice(0,i))),o.join("")):String.fromCharCode.apply(String,s.slice(0,i))}function Qd(r,e,t){let n=t,o,s;for(let i=0;i<r.length;++i)o=r.charCodeAt(i),o<128?e[t++]=o:o<2048?(e[t++]=o>>6|192,e[t++]=o&63|128):(o&64512)===55296&&((s=r.charCodeAt(i+1))&64512)===56320?(o=65536+((o&1023)<<10)+(s&1023),++i,e[t++]=o>>18|240,e[t++]=o>>12&63|128,e[t++]=o>>6&63|128,e[t++]=o&63|128):(e[t++]=o>>12|224,e[t++]=o>>6&63|128,e[t++]=o&63|128);return t-n}function Ut(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function za(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var eh=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(e){this.buf=e,this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,Ut(this,10);return e}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw Ut(this,4);return za(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw Ut(this,4);return za(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw Ut(this,4);let e=Zy(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw Ut(this,4);let e=Jy(this.buf,this.pos);return this.pos+=8,e}bytes(){let e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw Ut(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return t0(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw Ut(this,e);this.pos+=e}else do if(this.pos>=this.len)throw Ut(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new pt(0,0),t=0;if(this.len-this.pos>4){for(;t<4;++t)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw Ut(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<t*7)>>>0,e}if(this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw Ut(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw Ut(this,8);let e=za(this.buf,this.pos+=4),t=za(this.buf,this.pos+=4);return new pt(e,t)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let e=Zd(this.buf,this.pos);return this.pos+=Pe(e),e}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}};function th(r){return new eh(r instanceof Uint8Array?r:r.subarray())}function Oe(r,e,t){let n=th(r);return e.decode(n,void 0,t)}function rh(r){let e=r??8192,t=e>>>1,n,o=e;return function(i){if(i<1||i>t)return We(i);o+i>e&&(n=We(e),o=0);let a=n.subarray(o,o+=i);return(o&7)!==0&&(o=(o|7)+1),a}}var Dn=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function nh(){}var sh=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},qA=rh();function zA(r){return globalThis.Buffer!=null?We(r):qA(r)}var Zs=class{len;head;tail;states;constructor(){this.len=0,this.head=new Dn(nh,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new Dn(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new ih((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(Ga,10,pt.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=pt.fromBigInt(e);return this._push(Ga,t.length(),t)}uint64Number(e){return this._push(Do,Pe(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){let t=pt.fromBigInt(e).zzEncode();return this._push(Ga,t.length(),t)}sint64Number(e){let t=pt.fromNumber(e).zzEncode();return this._push(Ga,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(oh,1,e?1:0)}fixed32(e){return this._push(Ys,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=pt.fromBigInt(e);return this._push(Ys,4,t.lo)._push(Ys,4,t.hi)}fixed64Number(e){let t=pt.fromNumber(e);return this._push(Ys,4,t.lo)._push(Ys,4,t.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push(Yy,4,e)}double(e){return this._push(Xy,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(oh,1,0):this.uint32(t)._push(WA,t,e)}string(e){let t=e0(e);return t!==0?this.uint32(t)._push(Qd,t,e):this._push(oh,1,0)}fork(){return this.states=new sh(this),this.head=this.tail=new Dn(nh,0,0),this.len=0,this}reset(){return this.states!=null?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new Dn(nh,0,0),this.len=0),this}ldelim(){let e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=t,this.len+=n),this}finish(){let e=this.head.next,t=zA(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function oh(r,e,t){e[t]=r&255}function GA(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var ih=class extends Dn{next;constructor(e,t){super(GA,e,t),this.next=void 0}};function Ga(r,e,t){for(;r.hi!==0;)e[t++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)e[t++]=r.lo&127|128,r.lo=r.lo>>>7;e[t++]=r.lo}function Ys(r,e,t){e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24}function WA(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(Zs.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(jA,e,r),this},Zs.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(YA,e,r),this});function jA(r,e,t){e.set(r,t)}function YA(r,e,t){r.length<40?Qd(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(B(r),t)}function ah(){return new Zs}function Ue(r,e){let t=ah();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var No;(function(r){r[r.VARINT=0]="VARINT",r[r.BIT64=1]="BIT64",r[r.LENGTH_DELIMITED=2]="LENGTH_DELIMITED",r[r.START_GROUP=3]="START_GROUP",r[r.END_GROUP=4]="END_GROUP",r[r.BIT32=5]="BIT32"})(No||(No={}));function Wa(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function Xs(r){function e(o){if(r[o.toString()]==null)throw new Error("Invalid enum value");return r[o]}let t=function(s,i){let a=e(s);i.int32(a)},n=function(s){let i=s.int32();return e(i)};return Wa("enum",No.VARINT,t,n)}function Fe(r,e){return Wa("message",No.LENGTH_DELIMITED,r,e)}var Nn=class extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"},Js=class extends Error{code="ERR_MAX_SIZE";name="MaxSizeError"};var ue;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.secp256k1="secp256k1",r.ECDSA="ECDSA"})(ue||(ue={}));var ch;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.secp256k1=2]="secp256k1",r[r.ECDSA=3]="ECDSA"})(ch||(ch={}));(function(r){r.codec=()=>Xs(ch)})(ue||(ue={}));var cr;(function(r){let e;r.codec=()=>(e==null&&(e=Fe((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),ue.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.Type=ue.codec().decode(t);break}case 2:{s.Data=t.bytes();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>Ue(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(cr||(cr={}));var Qs;(function(r){let e;r.codec=()=>(e==null&&(e=Fe((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),ue.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.Type=ue.codec().decode(t);break}case 2:{s.Data=t.bytes();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>Ue(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(Qs||(Qs={}));function Ft(r){if(isNaN(r)||r<=0)throw new k("random bytes length must be a Number bigger than 0");return Hr(r)}var ti={};Ae(ti,{MAX_RSA_KEY_SIZE:()=>lh,generateRSAKeyPair:()=>wh,jwkToJWKKeyPair:()=>i0,jwkToPkcs1:()=>QA,jwkToPkix:()=>hh,jwkToRSAPrivateKey:()=>yh,pkcs1MessageToJwk:()=>fh,pkcs1MessageToRSAPrivateKey:()=>ja,pkcs1ToJwk:()=>JA,pkcs1ToRSAPrivateKey:()=>ph,pkixMessageToJwk:()=>dh,pkixMessageToRSAPublicKey:()=>gh,pkixToJwk:()=>e2,pkixToRSAPublicKey:()=>mh});var Ro=class{type="RSA";jwk;_raw;_multihash;constructor(e,t){this.jwk=e,this._multihash=t}get raw(){return this._raw==null&&(this._raw=ti.jwkToPkix(this.jwk)),this._raw}toMultihash(){return this._multihash}toCID(){return H.createV1(114,this._multihash)}toString(){return le.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:X(this.raw,e.raw)}verify(e,t,n){return s0(this.jwk,t,e,n)}},ei=class{type="RSA";jwk;_raw;publicKey;constructor(e,t){this.jwk=e,this.publicKey=t}get raw(){return this._raw==null&&(this._raw=ti.jwkToPkcs1(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:X(this.raw,e.raw)}sign(e,t){return o0(this.jwk,e,t)}};var lh=8192,uh=18,ZA=1062,XA=Uint8Array.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);function JA(r){let e=Et(r);return fh(e)}function fh(r){return{n:M(r[1],"base64url"),e:M(r[2],"base64url"),d:M(r[3],"base64url"),p:M(r[4],"base64url"),q:M(r[5],"base64url"),dp:M(r[6],"base64url"),dq:M(r[7],"base64url"),qi:M(r[8],"base64url"),kty:"RSA"}}function QA(r){if(r.n==null||r.e==null||r.d==null||r.p==null||r.q==null||r.dp==null||r.dq==null||r.qi==null)throw new k("JWK was missing components");return Mt([tt(Uint8Array.from([0])),tt(B(r.n,"base64url")),tt(B(r.e,"base64url")),tt(B(r.d,"base64url")),tt(B(r.p,"base64url")),tt(B(r.q,"base64url")),tt(B(r.dp,"base64url")),tt(B(r.dq,"base64url")),tt(B(r.qi,"base64url"))]).subarray()}function e2(r){let e=Et(r,{offset:0});return dh(e)}function dh(r){let e=Et(r[1],{offset:0});return{kty:"RSA",n:M(e[0],"base64url"),e:M(e[1],"base64url")}}function hh(r){if(r.n==null||r.e==null)throw new k("JWK was missing components");return Mt([XA,Os(Mt([tt(B(r.n,"base64url")),tt(B(r.e,"base64url"))]))]).subarray()}function ph(r){let e=Et(r);return ja(e)}function ja(r){let e=fh(r);return yh(e)}function mh(r,e){if(r.byteLength>=ZA)throw new uo("Key size is too large");let t=Et(r,{offset:0});return gh(t,r,e)}function gh(r,e,t){let n=dh(r);if(t==null){let o=Wr(cr.encode({Type:ue.RSA,Data:e}));t=sr(uh,o)}return new Ro(n,t)}function yh(r){if(c0(r)>lh)throw new k("Key size is too large");let e=i0(r),t=Wr(cr.encode({Type:ue.RSA,Data:hh(e.publicKey)})),n=sr(uh,t);return new ei(e.privateKey,new Ro(e.publicKey,n))}async function wh(r){if(r>lh)throw new k("Key size is too large");let e=await a0(r),t=Wr(cr.encode({Type:ue.RSA,Data:hh(e.publicKey)})),n=sr(uh,t);return new ei(e.privateKey,new Ro(e.publicKey,n))}function i0(r){if(r==null)throw new k("Missing key parameter");return{privateKey:r,publicKey:{kty:r.kty,n:r.n,e:r.e}}}async function a0(r,e){let t=await Se.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]);e?.signal?.throwIfAborted();let n=await t2(t,e);return{privateKey:n[0],publicKey:n[1]}}async function o0(r,e,t){let n=await Se.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]);t?.signal?.throwIfAborted();let o=await Se.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},n,e instanceof Uint8Array?e:e.subarray());return t?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function s0(r,e,t,n){let o=await Se.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);n?.signal?.throwIfAborted();let s=await Se.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},o,e,t instanceof Uint8Array?t:t.subarray());return n?.signal?.throwIfAborted(),s}async function t2(r,e){if(r.privateKey==null||r.publicKey==null)throw new k("Private and public key are required");let t=await Promise.all([Se.get().subtle.exportKey("jwk",r.privateKey),Se.get().subtle.exportKey("jwk",r.publicKey)]);return e?.signal?.throwIfAborted(),t}function c0(r){if(r.kty!=="RSA")throw new k("invalid key type");if(r.n==null)throw new k("invalid key modulus");return B(r.n,"base64url").length*8}var Ya=class{oHash;iHash;blockLen;outputLen;finished=!1;destroyed=!1;constructor(e,t){if(Eo(e),J(t,void 0,"key"),this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let n=this.blockLen,o=new Uint8Array(n);o.set(t.length>n?e.create().update(t).digest():t);for(let s=0;s<o.length;s++)o[s]^=54;this.iHash.update(o),this.oHash=e.create();for(let s=0;s<o.length;s++)o[s]^=106;this.oHash.update(o),it(o)}update(e){return Ao(this),this.iHash.update(e),this}digestInto(e){Ao(this),J(e,this.outputLen,"output"),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||=Object.create(Object.getPrototypeOf(this),{});let{oHash:t,iHash:n,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},ri=(r,e,t)=>new Ya(r,e).update(t).digest();ri.create=(r,e)=>new Ya(r,e);var l0=(r,e)=>(r+(r>=0?e:-e)/u0)/e;function r2(r,e,t){let[[n,o],[s,i]]=e,a=l0(i*r,t),c=l0(-o*r,t),l=r-a*n-c*s,u=-a*o-c*i,f=l<Ar,d=u<Ar;f&&(l=-l),d&&(u=-u);let h=Hs(Math.ceil(Pd(t)/2))+Mo;if(l<Ar||l>=h||u<Ar||u>=h)throw new Error("splitScalar (endomorphism): failed, k="+r);return{k1neg:f,k1:l,k2neg:d,k2:u}}function xh(r){if(!["compact","recovered","der"].includes(r))throw new Error('Signature format must be "compact", "recovered", or "der"');return r}function bh(r,e){let t={};for(let n of Object.keys(e))t[n]=r[n]===void 0?e[n]:r[n];return Er(t.lowS,"lowS"),Er(t.prehash,"prehash"),t.format!==void 0&&xh(t.format),t}var vh=class extends Error{constructor(e=""){super(e)}},Qr={Err:vh,_tlv:{encode:(r,e)=>{let{Err:t}=Qr;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length&1)throw new t("tlv.encode: unpadded data");let n=e.length/2,o=Vs(n);if(o.length/2&128)throw new t("tlv.encode: long form length too big");let s=n>127?Vs(o.length/2|128):"";return Vs(r)+s+o+e},decode(r,e){let{Err:t}=Qr,n=0;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length<2||e[n++]!==r)throw new t("tlv.decode: wrong tlv");let o=e[n++],s=!!(o&128),i=0;if(!s)i=o;else{let c=o&127;if(!c)throw new t("tlv.decode(long): indefinite length not supported");if(c>4)throw new t("tlv.decode(long): byte length is too big");let l=e.subarray(n,n+c);if(l.length!==c)throw new t("tlv.decode: length bytes not complete");if(l[0]===0)throw new t("tlv.decode(long): zero leftmost byte");for(let u of l)i=i<<8|u;if(n+=c,i<128)throw new t("tlv.decode(long): not minimal encoding")}let a=e.subarray(n,n+i);if(a.length!==i)throw new t("tlv.decode: wrong value length");return{v:a,l:e.subarray(n+i)}}},_int:{encode(r){let{Err:e}=Qr;if(r<Ar)throw new e("integer: negative integers are not allowed");let t=Vs(r);if(Number.parseInt(t[0],16)&8&&(t="00"+t),t.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return t},decode(r){let{Err:e}=Qr;if(r[0]&128)throw new e("invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return So(r)}},toSig(r){let{Err:e,_int:t,_tlv:n}=Qr,o=J(r,void 0,"signature"),{v:s,l:i}=n.decode(48,o);if(i.length)throw new e("invalid signature: left bytes after parsing");let{v:a,l:c}=n.decode(2,s),{v:l,l:u}=n.decode(2,c);if(u.length)throw new e("invalid signature: left bytes after parsing");return{r:t.decode(a),s:t.decode(l)}},hexFromSig(r){let{_tlv:e,_int:t}=Qr,n=e.encode(2,t.encode(r.r)),o=e.encode(2,t.encode(r.s)),s=n+o;return e.encode(48,s)}},Ar=BigInt(0),Mo=BigInt(1),u0=BigInt(2),Za=BigInt(3),n2=BigInt(4);function f0(r,e={}){let t=Ha("weierstrass",r,e),{Fp:n,Fn:o}=t,s=t.CURVE,{h:i,n:a}=s;Yr(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object"});let{endo:c}=e;if(c&&(!n.is0(s.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');let l=h0(n,o);function u(){if(!n.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function f(C,E,A){let{x:y,y:_}=E.toAffine(),R=n.toBytes(y);if(Er(A,"isCompressed"),A){u();let O=!n.isOdd(_);return at(d0(O),R)}else return at(Uint8Array.of(4),R,n.toBytes(_))}function d(C){J(C,void 0,"Point");let{publicKey:E,publicKeyUncompressed:A}=l,y=C.length,_=C[0],R=C.subarray(1);if(y===E&&(_===2||_===3)){let O=n.fromBytes(R);if(!n.isValid(O))throw new Error("bad point: is not on curve, wrong x");let $=g(O),V;try{V=n.sqrt($)}catch(ye){let he=ye instanceof Error?": "+ye.message:"";throw new Error("bad point: is not on curve, sqrt error"+he)}u();let z=n.isOdd(V);return(_&1)===1!==z&&(V=n.neg(V)),{x:O,y:V}}else if(y===A&&_===4){let O=n.BYTES,$=n.fromBytes(R.subarray(0,O)),V=n.fromBytes(R.subarray(O,O*2));if(!w($,V))throw new Error("bad point: is not on curve");return{x:$,y:V}}else throw new Error(`bad point: got length ${y}, expected compressed=${E} or uncompressed=${A}`)}let h=e.toBytes||f,p=e.fromBytes||d;function g(C){let E=n.sqr(C),A=n.mul(E,C);return n.add(n.add(A,n.mul(C,s.a)),s.b)}function w(C,E){let A=n.sqr(E),y=g(C);return n.eql(A,y)}if(!w(s.Gx,s.Gy))throw new Error("bad curve params: generator point");let b=n.mul(n.pow(s.a,Za),n2),T=n.mul(n.sqr(s.b),BigInt(27));if(n.is0(n.add(b,T)))throw new Error("bad curve params: a or b");function S(C,E,A=!1){if(!n.isValid(E)||A&&n.is0(E))throw new Error(`bad point coordinate ${C}`);return E}function D(C){if(!(C instanceof v))throw new Error("Weierstrass Point expected")}function K(C){if(!c||!c.basises)throw new Error("no endo");return r2(C,c.basises,o.ORDER)}let Y=Io((C,E)=>{let{X:A,Y:y,Z:_}=C;if(n.eql(_,n.ONE))return{x:A,y};let R=C.is0();E==null&&(E=R?n.ONE:n.inv(_));let O=n.mul(A,E),$=n.mul(y,E),V=n.mul(_,E);if(R)return{x:n.ZERO,y:n.ZERO};if(!n.eql(V,n.ONE))throw new Error("invZ was invalid");return{x:O,y:$}}),G=Io(C=>{if(C.is0()){if(e.allowInfinityPoint&&!n.is0(C.Y))return;throw new Error("bad point: ZERO")}let{x:E,y:A}=C.toAffine();if(!n.isValid(E)||!n.isValid(A))throw new Error("bad point: x or y not field elements");if(!w(E,A))throw new Error("bad point: equation left != right");if(!C.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function x(C,E,A,y,_){return A=new v(n.mul(A.X,C),A.Y,A.Z),E=zs(y,E),A=zs(_,A),E.add(A)}class v{static BASE=new v(s.Gx,s.Gy,n.ONE);static ZERO=new v(n.ZERO,n.ONE,n.ZERO);static Fp=n;static Fn=o;X;Y;Z;constructor(E,A,y){this.X=S("x",E),this.Y=S("y",A,!0),this.Z=S("z",y),Object.freeze(this)}static CURVE(){return s}static fromAffine(E){let{x:A,y}=E||{};if(!E||!n.isValid(A)||!n.isValid(y))throw new Error("invalid affine point");if(E instanceof v)throw new Error("projective point not allowed");return n.is0(A)&&n.is0(y)?v.ZERO:new v(A,y,n.ONE)}static fromBytes(E){let A=v.fromAffine(p(J(E,void 0,"point")));return A.assertValidity(),A}static fromHex(E){return v.fromBytes(xr(E))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(E=8,A=!0){return N.createCache(this,E),A||this.multiply(Za),this}assertValidity(){G(this)}hasEvenY(){let{y:E}=this.toAffine();if(!n.isOdd)throw new Error("Field doesn't support isOdd");return!n.isOdd(E)}equals(E){D(E);let{X:A,Y:y,Z:_}=this,{X:R,Y:O,Z:$}=E,V=n.eql(n.mul(A,$),n.mul(R,_)),z=n.eql(n.mul(y,$),n.mul(O,_));return V&&z}negate(){return new v(this.X,n.neg(this.Y),this.Z)}double(){let{a:E,b:A}=s,y=n.mul(A,Za),{X:_,Y:R,Z:O}=this,$=n.ZERO,V=n.ZERO,z=n.ZERO,Z=n.mul(_,_),ye=n.mul(R,R),he=n.mul(O,O),ne=n.mul(_,R);return ne=n.add(ne,ne),z=n.mul(_,O),z=n.add(z,z),$=n.mul(E,z),V=n.mul(y,he),V=n.add($,V),$=n.sub(ye,V),V=n.add(ye,V),V=n.mul($,V),$=n.mul(ne,$),z=n.mul(y,z),he=n.mul(E,he),ne=n.sub(Z,he),ne=n.mul(E,ne),ne=n.add(ne,z),z=n.add(Z,Z),Z=n.add(z,Z),Z=n.add(Z,he),Z=n.mul(Z,ne),V=n.add(V,Z),he=n.mul(R,O),he=n.add(he,he),Z=n.mul(he,ne),$=n.sub($,Z),z=n.mul(he,ye),z=n.add(z,z),z=n.add(z,z),new v($,V,z)}add(E){D(E);let{X:A,Y:y,Z:_}=this,{X:R,Y:O,Z:$}=E,V=n.ZERO,z=n.ZERO,Z=n.ZERO,ye=s.a,he=n.mul(s.b,Za),ne=n.mul(A,R),we=n.mul(y,O),Re=n.mul(_,$),er=n.add(A,y),be=n.add(R,O);er=n.mul(er,be),be=n.add(ne,we),er=n.sub(er,be),be=n.add(A,_);let ze=n.add(R,$);return be=n.mul(be,ze),ze=n.add(ne,Re),be=n.sub(be,ze),ze=n.add(y,_),V=n.add(O,$),ze=n.mul(ze,V),V=n.add(we,Re),ze=n.sub(ze,V),Z=n.mul(ye,be),V=n.mul(he,Re),Z=n.add(V,Z),V=n.sub(we,Z),Z=n.add(we,Z),z=n.mul(V,Z),we=n.add(ne,ne),we=n.add(we,ne),Re=n.mul(ye,Re),be=n.mul(he,be),we=n.add(we,Re),Re=n.sub(ne,Re),Re=n.mul(ye,Re),be=n.add(be,Re),ne=n.mul(we,be),z=n.add(z,ne),ne=n.mul(ze,be),V=n.mul(er,V),V=n.sub(V,ne),ne=n.mul(er,we),Z=n.mul(ze,Z),Z=n.add(Z,ne),new v(V,z,Z)}subtract(E){return this.add(E.negate())}is0(){return this.equals(v.ZERO)}multiply(E){let{endo:A}=e;if(!o.isValidNot0(E))throw new Error("invalid scalar: out of range");let y,_,R=O=>N.cached(this,O,$=>Tn(v,$));if(A){let{k1neg:O,k1:$,k2neg:V,k2:z}=K(E),{p:Z,f:ye}=R($),{p:he,f:ne}=R(z);_=ye.add(ne),y=x(A.beta,Z,he,O,V)}else{let{p:O,f:$}=R(E);y=O,_=$}return Tn(v,[y,_])[0]}multiplyUnsafe(E){let{endo:A}=e,y=this;if(!o.isValid(E))throw new Error("invalid scalar: out of range");if(E===Ar||y.is0())return v.ZERO;if(E===Mo)return y;if(N.hasCache(this))return this.multiply(E);if(A){let{k1neg:_,k1:R,k2neg:O,k2:$}=K(E),{p1:V,p2:z}=Uy(v,y,R,$);return x(A.beta,V,z,_,O)}else return N.unsafe(y,E)}toAffine(E){return Y(this,E)}isTorsionFree(){let{isTorsionFree:E}=e;return i===Mo?!0:E?E(v,this):N.unsafe(this,a).is0()}clearCofactor(){let{clearCofactor:E}=e;return i===Mo?this:E?E(v,this):this.multiplyUnsafe(i)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}toBytes(E=!0){return Er(E,"isCompressed"),this.assertValidity(),h(v,this,E)}toHex(E=!0){return br(this.toBytes(E))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}let P=o.BITS,N=new Co(v,e.endo?Math.ceil(P/2):P);return v.BASE.precompute(8),v}function d0(r){return Uint8Array.of(r?2:3)}function h0(r,e){return{secretKey:e.BYTES,publicKey:1+r.BYTES,publicKeyUncompressed:1+2*r.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function o2(r,e={}){let{Fn:t}=r,n=e.randomBytes||Hr,o=Object.assign(h0(r.Fp,t),{seed:Md(t.ORDER)});function s(h){try{let p=t.fromBytes(h);return t.isValidNot0(p)}catch{return!1}}function i(h,p){let{publicKey:g,publicKeyUncompressed:w}=o;try{let b=h.length;return p===!0&&b!==g||p===!1&&b!==w?!1:!!r.fromBytes(h)}catch{return!1}}function a(h=n(o.seed)){return Od(J(h,o.seed,"seed"),t.ORDER)}function c(h,p=!0){return r.BASE.multiply(t.fromBytes(h)).toBytes(p)}function l(h){let{secretKey:p,publicKey:g,publicKeyUncompressed:w}=o;if(!vn(h)||"_lengths"in t&&t._lengths||p===g)return;let b=J(h,void 0,"key").length;return b===g||b===w}function u(h,p,g=!0){if(l(h)===!0)throw new Error("first arg must be private key");if(l(p)===!1)throw new Error("second arg must be public key");let w=t.fromBytes(h);return r.fromBytes(p).multiply(w).toBytes(g)}let f={isValidSecretKey:s,isValidPublicKey:i,randomSecretKey:a},d=qa(a,c);return Object.freeze({getPublicKey:c,getSharedSecret:u,keygen:d,Point:r,utils:f,lengths:o})}function p0(r,e,t={}){Eo(e),Yr(t,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"}),t=Object.assign({},t);let n=t.randomBytes||Hr,o=t.hmac||((A,y)=>ri(e,A,y)),{Fp:s,Fn:i}=r,{ORDER:a,BITS:c}=i,{keygen:l,getPublicKey:u,getSharedSecret:f,utils:d,lengths:h}=o2(r,t),p={prehash:!0,lowS:typeof t.lowS=="boolean"?t.lowS:!0,format:"compact",extraEntropy:!1},g=a*u0<s.ORDER;function w(A){let y=a>>Mo;return A>y}function b(A,y){if(!i.isValidNot0(y))throw new Error(`invalid signature ${A}: out of range 1..Point.Fn.ORDER`);return y}function T(){if(g)throw new Error('"recovered" sig type is not supported for cofactor >2 curves')}function S(A,y){xh(y);let _=h.signature,R=y==="compact"?_:y==="recovered"?_+1:void 0;return J(A,R)}class D{r;s;recovery;constructor(y,_,R){if(this.r=b("r",y),this.s=b("s",_),R!=null){if(T(),![0,1,2,3].includes(R))throw new Error("invalid recovery id");this.recovery=R}Object.freeze(this)}static fromBytes(y,_=p.format){S(y,_);let R;if(_==="der"){let{r:z,s:Z}=Qr.toSig(J(y));return new D(z,Z)}_==="recovered"&&(R=y[0],_="compact",y=y.subarray(1));let O=h.signature/2,$=y.subarray(0,O),V=y.subarray(O,O*2);return new D(i.fromBytes($),i.fromBytes(V),R)}static fromHex(y,_){return this.fromBytes(xr(y),_)}assertRecovery(){let{recovery:y}=this;if(y==null)throw new Error("invalid recovery id: must be present");return y}addRecoveryBit(y){return new D(this.r,this.s,y)}recoverPublicKey(y){let{r:_,s:R}=this,O=this.assertRecovery(),$=O===2||O===3?_+a:_;if(!s.isValid($))throw new Error("invalid recovery id: sig.r+curve.n != R.x");let V=s.toBytes($),z=r.fromBytes(at(d0((O&1)===0),V)),Z=i.inv($),ye=Y(J(y,void 0,"msgHash")),he=i.create(-ye*Z),ne=i.create(R*Z),we=r.BASE.multiplyUnsafe(he).add(z.multiplyUnsafe(ne));if(we.is0())throw new Error("invalid recovery: point at infinify");return we.assertValidity(),we}hasHighS(){return w(this.s)}toBytes(y=p.format){if(xh(y),y==="der")return xr(Qr.hexFromSig(this));let{r:_,s:R}=this,O=i.toBytes(_),$=i.toBytes(R);return y==="recovered"?(T(),at(Uint8Array.of(this.assertRecovery()),O,$)):at(O,$)}toHex(y){return br(this.toBytes(y))}}let K=t.bits2int||function(y){if(y.length>8192)throw new Error("input is too large");let _=So(y),R=y.length*8-c;return R>0?_>>BigInt(R):_},Y=t.bits2int_modN||function(y){return i.create(K(y))},G=Hs(c);function x(A){return Ks("num < 2^"+c,A,Ar,G),i.toBytes(A)}function v(A,y){return J(A,void 0,"message"),y?J(e(A),void 0,"prehashed message"):A}function P(A,y,_){let{lowS:R,prehash:O,extraEntropy:$}=bh(_,p);A=v(A,O);let V=Y(A),z=i.fromBytes(y);if(!i.isValidNot0(z))throw new Error("invalid private key");let Z=[x(z),x(V)];if($!=null&&$!==!1){let we=$===!0?n(h.secretKey):$;Z.push(J(we,void 0,"extraEntropy"))}let ye=at(...Z),he=V;function ne(we){let Re=K(we);if(!i.isValidNot0(Re))return;let er=i.inv(Re),be=r.BASE.multiply(Re).toAffine(),ze=i.create(be.x);if(ze===Ar)return;let ba=i.create(er*i.create(he+ze*z));if(ba===Ar)return;let mg=(be.x===ze?0:2)|Number(be.y&Mo),gg=ba;return R&&w(ba)&&(gg=i.neg(ba),mg^=1),new D(ze,gg,g?void 0:mg)}return{seed:ye,k2sig:ne}}function N(A,y,_={}){let{seed:R,k2sig:O}=P(A,y,_);return vy(e.outputLen,i.BYTES,o)(R,O).toBytes(_.format)}function C(A,y,_,R={}){let{lowS:O,prehash:$,format:V}=bh(R,p);if(_=J(_,void 0,"publicKey"),y=v(y,$),!vn(A)){let z=A instanceof D?", use sig.toBytes()":"";throw new Error("verify expects Uint8Array signature"+z)}S(A,V);try{let z=D.fromBytes(A,V),Z=r.fromBytes(_);if(O&&z.hasHighS())return!1;let{r:ye,s:he}=z,ne=Y(y),we=i.inv(he),Re=i.create(ne*we),er=i.create(ye*we),be=r.BASE.multiplyUnsafe(Re).add(Z.multiplyUnsafe(er));return be.is0()?!1:i.create(be.x)===ye}catch{return!1}}function E(A,y,_={}){let{prehash:R}=bh(_,p);return y=v(y,R),D.fromBytes(A,"recovered").recoverPublicKey(y).toBytes()}return Object.freeze({keygen:l,getPublicKey:u,getSharedSecret:f,utils:d,lengths:h,Point:r,sign:N,verify:C,recoverPublicKey:E,Signature:D,hash:e})}var Ah={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},s2={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]};var m0=BigInt(2);function i2(r){let e=Ah.p,t=BigInt(3),n=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%e,u=l*l*r%e,f=me(u,t,e)*u%e,d=me(f,t,e)*u%e,h=me(d,m0,e)*l%e,p=me(h,o,e)*h%e,g=me(p,s,e)*p%e,w=me(g,a,e)*g%e,b=me(w,c,e)*w%e,T=me(b,a,e)*g%e,S=me(T,t,e)*u%e,D=me(S,i,e)*p%e,K=me(D,n,e)*l%e,Y=me(K,m0,e);if(!Eh.eql(Eh.sqr(Y),r))throw new Error("Cannot find square root");return Y}var Eh=ko(Ah.p,{sqrt:i2}),a2=f0(Ah,{Fp:Eh,endo:s2}),$t=p0(a2,Wr);var g0=32;function y0(r,e,t){let n=Rt.digest(e instanceof Uint8Array?e:e.subarray());if(Bo(n))return n.then(({digest:o})=>(t?.signal?.throwIfAborted(),$t.sign(o,r,{prehash:!1,format:"der"}))).catch(o=>{throw o.name==="AbortError"?o:new _s(String(o))});try{return $t.sign(n.digest,r,{prehash:!1,format:"der"})}catch(o){throw new _s(String(o))}}function w0(r,e,t,n){let o=Rt.digest(t instanceof Uint8Array?t:t.subarray());if(Bo(o))return o.then(({digest:s})=>(n?.signal?.throwIfAborted(),$t.verify(e,s,r,{prehash:!1,format:"der"}))).catch(s=>{throw s.name==="AbortError"?s:new Cs(String(s))});try{return n?.signal?.throwIfAborted(),$t.verify(e,o.digest,r,{prehash:!1,format:"der"})}catch(s){throw new Cs(String(s))}}var ni=class{type="secp256k1";raw;_key;constructor(e){this._key=v0(e),this.raw=b0(this._key)}toMultihash(){return Ge.digest(At(this))}toCID(){return H.createV1(114,this.toMultihash())}toString(){return le.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:X(this.raw,e.raw)}verify(e,t,n){return w0(this._key,t,e,n)}},oi=class{type="secp256k1";raw;publicKey;constructor(e,t){this.raw=x0(e),this.publicKey=new ni(t??E0(e))}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:X(this.raw,e.raw)}sign(e,t){return y0(this.raw,e,t)}};function Sh(r){return new oi(r)}function Ih(r){return new ni(r)}async function A0(){let r=c2();return new oi(r)}function b0(r){return $t.Point.fromBytes(r).toBytes()}function x0(r){try{return $t.getPublicKey(r,!0),r}catch(e){throw new Ss(String(e))}}function v0(r){try{return $t.Point.fromBytes(r),r}catch(e){throw new uo(String(e))}}function E0(r){try{return $t.getPublicKey(r,!0)}catch(e){throw new Ss(String(e))}}function c2(){return $t.utils.randomSecretKey()}async function Xa(r,e){if(r==="Ed25519")return jy();if(r==="secp256k1")return A0();if(r==="RSA")return wh(l2(e));if(r==="ECDSA")return oy(u2(e));throw new Dt}function en(r,e){let{Type:t,Data:n}=cr.decode(r),o=n??new Uint8Array;switch(t){case ue.RSA:return mh(o,e);case ue.Ed25519:return zd(o);case ue.secp256k1:return Ih(o);case ue.ECDSA:return xd(o);default:throw new Dt}}function Ja(r){let{Type:e,Data:t}=cr.decode(r.digest),n=t??new Uint8Array;switch(e){case ue.Ed25519:return zd(n);case ue.secp256k1:return Ih(n);case ue.ECDSA:return xd(n);default:throw new Dt}}function At(r){return cr.encode({Type:ue[r.type],Data:r.raw})}function S0(r){let e=Qs.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case ue.RSA:return ph(t);case ue.Ed25519:return qd(t);case ue.secp256k1:return Sh(t);case ue.ECDSA:return Qg(t);default:throw new Dt}}function I0(r){if(r.byteLength===ht)return qd(r);if(r.byteLength===g0)return Sh(r);let e=Et(r),t=e[2]?.[0];if(t===qg||t===zg||t===Gg)return bd(e);if(e.length>8)return ja(e);throw new k("Could not extract private key from raw bytes")}function Rn(r){return Qs.encode({Type:ue[r.type],Data:r.raw})}function l2(r){return r==null?2048:parseInt(r,10)}function u2(r){if(r==="P-256"||r==null)return"P-256";if(r==="P-384")return"P-384";if(r==="P-521")return"P-521";throw new k("Unsupported curve, should be P-256, P-384 or P-521")}var si=Uint32Array.from([1732584193,4023233417,2562383102,271733878,3285377520]),tn=new Uint32Array(80),kh=class extends An{A=si[0]|0;B=si[1]|0;C=si[2]|0;D=si[3]|0;E=si[4]|0;constructor(){super(64,20,8,!1)}get(){let{A:e,B:t,C:n,D:o,E:s}=this;return[e,t,n,o,s]}set(e,t,n,o,s){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=s|0}process(e,t){for(let c=0;c<16;c++,t+=4)tn[c]=e.getUint32(t,!1);for(let c=16;c<80;c++)tn[c]=Ma(tn[c-3]^tn[c-8]^tn[c-14]^tn[c-16],1);let{A:n,B:o,C:s,D:i,E:a}=this;for(let c=0;c<80;c++){let l,u;c<20?(l=Oa(o,s,i),u=1518500249):c<40?(l=o^s^i,u=1859775393):c<60?(l=Ua(o,s,i),u=2400959708):(l=o^s^i,u=3395469782);let f=Ma(n,5)+l+a+u+tn[c]|0;a=i,i=s,s=Ma(o,30),o=n,n=f}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,this.set(n,o,s,i,a)}roundClean(){it(tn)}destroy(){this.set(0,0,0,0,0),it(this.buffer)}},k0=Us(()=>new kh);function _0(r,e,t,n){Eo(r);let o=ly({dkLen:32,asyncTick:10},n),{c:s,dkLen:i,asyncTick:a}=o;if(st(s,"c"),st(i,"dkLen"),st(a,"asyncTick"),s<1)throw new Error("iterations (c) must be >= 1");let c=vd(e,"password"),l=vd(t,"salt"),u=new Uint8Array(i),f=ri.create(r,c),d=f._cloneInto().update(l);return{c:s,dkLen:i,asyncTick:a,DK:u,PRF:f,PRFSalt:d}}function C0(r,e,t,n,o){return r.destroy(),e.destroy(),n&&n.destroy(),it(o),t}function T0(r,e,t,n){let{c:o,dkLen:s,DK:i,PRF:a,PRFSalt:c}=_0(r,e,t,n),l,u=new Uint8Array(4),f=En(u),d=new Uint8Array(a.outputLen);for(let h=1,p=0;p<s;h++,p+=a.outputLen){let g=i.subarray(p,p+a.outputLen);f.setInt32(0,h,!1),(l=c._cloneInto(l)).update(u).digestInto(d),g.set(d.subarray(0,g.length));for(let w=1;w<o;w++){a._cloneInto(l).update(d).digestInto(d);for(let b=0;b<g.length;b++)g[b]^=d[b]}}return C0(a,c,i,l,d)}async function Qa(r,e,t,n){let{c:o,dkLen:s,asyncTick:i,DK:a,PRF:c,PRFSalt:l}=_0(r,e,t,n),u,f=new Uint8Array(4),d=En(f),h=new Uint8Array(c.outputLen);for(let p=1,g=0;g<s;p++,g+=c.outputLen){let w=a.subarray(g,g+c.outputLen);d.setInt32(0,p,!1),(u=l._cloneInto(u)).update(f).digestInto(h),w.set(h.subarray(0,w.length)),await cy(o-1,i,()=>{c._cloneInto(u).update(h).digestInto(h);for(let b=0;b<w.length;b++)w[b]^=h[b]})}return C0(c,l,a,u,h)}var B0={sha1:k0,"sha2-256":Wr,"sha2-512":jr};function ii(r,e,t,n,o){if(o!=="sha1"&&o!=="sha2-256"&&o!=="sha2-512"){let a=Object.keys(B0).join(" / ");throw new k(`Hash '${o}' is unknown or not supported. Must be ${a}`)}let s=B0[o],i=T0(s,r,e,{c:t,dkLen:n});return je.encode(i).substring(1)}var _h={32:16777619n,64:1099511628211n,128:309485009821345068724781371n,256:374144419156711147060143317175368453031918731002211n,512:35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759n,1024:5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573n},L0={32:2166136261n,64:14695981039346656037n,128:144066263297769815596495629667062367629n,256:100029257958052580907070968620625704837092796014241193945225284501741471925557n,512:9659303129496669498009435400716310466090418745672637896108374329434462657994582932197716438449813051892206539805784495328239340083876191928701583869517785n,1024:14197795064947621068722070641403218320880622795441933960878474914617582723252296732303717722150864096521202355549365628174669108571814760471015076148029755969804077320157692458563003215304957150157403644460363550505412711285966361610267868082893823963790439336411086884584107735010676915n},P0=new globalThis.TextEncoder;function f2(r,e){let t=_h[e],n=L0[e];for(let o=0;o<r.length;o++)n^=BigInt(r[o]),n=BigInt.asUintN(e,n*t);return n}function d2(r,e,t){if(t.length===0)throw new Error("The `utf8Buffer` option must have a length greater than zero");let n=_h[e],o=L0[e],s=r;for(;s.length>0;){let i=P0.encodeInto(s,t);s=s.slice(i.read);for(let a=0;a<i.written;a++)o^=BigInt(t[a]),o=BigInt.asUintN(e,o*n)}return o}function Ch(r,{size:e=32,utf8Buffer:t}={}){if(!_h[e])throw new Error("The `size` option must be one of 32, 64, 128, 256, 512, or 1024");if(typeof r=="string"){if(t)return d2(r,e,t);r=P0.encode(r)}return f2(r,e)}var ai={hash:r=>Number(Ch(r,{size:32})),hashV:(r,e)=>h2(ai.hash(r,e))};function h2(r){let e=r.toString(16);return e.length%2===1&&(e=`0${e}`),B(e,"base16")}var Th=64,Vt=class{fp;h;seed;constructor(e,t,n,o=2){if(o>Th)throw new TypeError("Invalid Fingerprint Size");let s=t.hashV(e,n),i=ve(o);for(let a=0;a<i.length;a++)i[a]=s[a];i.length===0&&(i[0]=7),this.fp=i,this.h=t,this.seed=n}hash(){return this.h.hash(this.fp,this.seed)}equals(e){return e?.fp instanceof Uint8Array?X(this.fp,e.fp):!1}};function Mn(r,e){return Math.floor(Math.random()*(e-r))+r}var On=class{contents;constructor(e){this.contents=new Array(e).fill(null)}has(e){if(!(e instanceof Vt))throw new TypeError("Invalid Fingerprint");return this.contents.some(t=>e.equals(t))}add(e){if(!(e instanceof Vt))throw new TypeError("Invalid Fingerprint");for(let t=0;t<this.contents.length;t++)if(this.contents[t]==null)return this.contents[t]=e,!0;return!0}swap(e){if(!(e instanceof Vt))throw new TypeError("Invalid Fingerprint");let t=Mn(0,this.contents.length-1),n=this.contents[t];return this.contents[t]=e,n}remove(e){if(!(e instanceof Vt))throw new TypeError("Invalid Fingerprint");let t=this.contents.findIndex(n=>e.equals(n));return t>-1?(this.contents[t]=null,!0):!1}};var p2=500,ci=class{bucketSize;filterSize;fingerprintSize;buckets;count;hash;seed;constructor(e){this.filterSize=e.filterSize,this.bucketSize=e.bucketSize??4,this.fingerprintSize=e.fingerprintSize??2,this.count=0,this.buckets=[],this.hash=e.hash??ai,this.seed=e.seed??Mn(0,Math.pow(2,10))}add(e){typeof e=="string"&&(e=B(e));let t=new Vt(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=(n^t.hash())%this.filterSize;if(this.buckets[n]==null&&(this.buckets[n]=new On(this.bucketSize)),this.buckets[o]==null&&(this.buckets[o]=new On(this.bucketSize)),this.buckets[n].add(t)||this.buckets[o].add(t))return this.count++,!0;let s=[n,o],i=s[Mn(0,s.length-1)];this.buckets[i]==null&&(this.buckets[i]=new On(this.bucketSize));for(let a=0;a<p2;a++){let c=this.buckets[i].swap(t);if(c!=null&&(i=(i^c.hash())%this.filterSize,this.buckets[i]==null&&(this.buckets[i]=new On(this.bucketSize)),this.buckets[i].add(c)))return this.count++,!0}return!1}has(e){typeof e=="string"&&(e=B(e));let t=new Vt(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=this.buckets[n]?.has(t)??!1;if(o)return o;let s=(n^t.hash())%this.filterSize;return this.buckets[s]?.has(t)??!1}remove(e){typeof e=="string"&&(e=B(e));let t=new Vt(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=this.buckets[n]?.remove(t)??!1;if(o)return this.count--,o;let s=(n^t.hash())%this.filterSize,i=this.buckets[s]?.remove(t)??!1;return i&&this.count--,i}get reliable(){return Math.floor(100*(this.count/this.filterSize))<=90}},m2={1:.5,2:.84,4:.95,8:.98};function g2(r=.001){return r>.002?2:r>1e-5?4:8}function D0(r,e=.001){let t=g2(e),n=m2[t],o=Math.round(r/n),s=Math.min(Math.ceil(Math.log2(1/e)+Math.log2(2*t)),Th);return{filterSize:o,bucketSize:t,fingerprintSize:s}}var ec=class{filterSize;bucketSize;fingerprintSize;scale;filterSeries;hash;seed;constructor(e){this.bucketSize=e.bucketSize??4,this.filterSize=e.filterSize??(1<<18)/this.bucketSize,this.fingerprintSize=e.fingerprintSize??2,this.scale=e.scale??2,this.hash=e.hash??ai,this.seed=e.seed??Mn(0,Math.pow(2,10)),this.filterSeries=[new ci({filterSize:this.filterSize,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed})]}add(e){if(typeof e=="string"&&(e=B(e)),this.has(e))return!0;let t=this.filterSeries.find(n=>n.reliable);if(t==null){let n=this.filterSize*Math.pow(this.scale,this.filterSeries.length);t=new ci({filterSize:n,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed}),this.filterSeries.push(t)}return t.add(e)}has(e){typeof e=="string"&&(e=B(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].has(e))return!0;return!1}remove(e){typeof e=="string"&&(e=B(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].remove(e))return!0;return!1}get count(){return this.filterSeries.reduce((e,t)=>e+t.count,0)}};function Un(r,e=.001,t){return new ec({...D0(r,e),...t??{}})}function Q(r){let e=r.getComponents(),t={},n=0;if(e[n]?.name==="ip6zone"&&(t.zone=`${e[n].value}`,n++),e[n].name==="ip4"||e[n].name==="ip6"||e[n].name==="dns"||e[n].name==="dns4"||e[n].name==="dns6"?(t.type=e[n].name,t.host=e[n].value,n++):e[n].name==="dnsaddr"&&(t.type=e[n].name,t.host=`_dnsaddr.${e[n].value}`,n++),(e[n]?.name==="tcp"||e[n]?.name==="udp")&&(t.protocol=e[n].name==="tcp"?"tcp":"udp",t.port=parseInt(`${e[n].value}`),n++),e[n]?.name==="ipcidr"&&(t.type==="ip4"?t.cidr=parseInt(`${e[n].value}`):t.type==="ip6"&&(t.cidr=`${e[n].value}`),n++),t.type==null||t.host==null)throw new k(`Multiaddr ${r} was not an IPv4, IPv6, DNS, DNS4, DNS6 or DNSADDR address`);return e[n]?.name==="tls"&&e[n+1]?.name==="sni"&&(t.sni=e[n+1].value,n+=2),t}var tc=class{index=0;input="";new(e){return this.index=0,this.input=e,this}readAtomically(e){let t=this.index,n=e();return n===void 0&&(this.index=t),n}parseWith(e){let t=e();if(this.index===this.input.length)return t}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(e){return this.readAtomically(()=>{let t=this.readChar();if(t===e)return t})}readSeparator(e,t,n){return this.readAtomically(()=>{if(!(t>0&&this.readGivenChar(e)===void 0))return n()})}readNumber(e,t,n,o){return this.readAtomically(()=>{let s=0,i=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",l=2**(8*o)-1;for(;;){let u=this.readAtomically(()=>{let f=this.readChar();if(f===void 0)return;let d=Number.parseInt(f,e);if(!Number.isNaN(d))return d});if(u===void 0)break;if(s*=e,s+=u,s>l||(i+=1,t!==void 0&&i>t))return}if(i!==0)return!n&&c&&i>1?void 0:s})}readIPv4Addr(){return this.readAtomically(()=>{let e=new Uint8Array(4);for(let t=0;t<e.length;t++){let n=this.readSeparator(".",t,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;e[t]=n}return e})}readIPv6Addr(){let e=t=>{for(let n=0;n<t.length/2;n++){let o=n*2;if(n<t.length-3){let i=this.readSeparator(":",n,()=>this.readIPv4Addr());if(i!==void 0)return t[o]=i[0],t[o+1]=i[1],t[o+2]=i[2],t[o+3]=i[3],[o+4,!0]}let s=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(s===void 0)return[o,!1];t[o]=s>>8,t[o+1]=s&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,o]=e(t);if(n===16)return t;if(o||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let s=new Uint8Array(14),i=16-(n+2),[a]=e(s.subarray(0,i));return t.set(s.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var N0=45,y2=15,Oo=new tc;function rc(r){if(!(r.length>y2))return Oo.new(r).parseWith(()=>Oo.readIPv4Addr())}function nc(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>N0))return Oo.new(r).parseWith(()=>Oo.readIPv6Addr())}function Uo(r,e=!1){if(r.includes("%")&&(r=r.split("%")[0]),r.length>N0)return;let t=Oo.new(r).parseWith(()=>Oo.readIPAddr());if(t)return e&&t.length===4?Uint8Array.from([0,0,0,0,0,0,0,0,0,0,255,255,t[0],t[1],t[2],t[3]]):t}function R0(r,e,t){let n=0;for(let o of r)if(!(n<e)){if(n>t)break;if(o!==255)return!1;n++}return!0}function M0(r,e,t,n){let o=0;for(let s of r)if(!(o<t)){if(o>n)break;if(s!==e[o])return!1;o++}return!0}function Bh(r){switch(r.length){case Fn:return r.join(".");case $n:{let e=[];for(let t=0;t<r.length;t++)t%2===0&&e.push(r[t].toString(16).padStart(2,"0")+r[t+1].toString(16).padStart(2,"0"));return e.join(":")}default:throw new Error("Invalid ip length")}}function O0(r){let e=0;for(let[t,n]of r.entries()){if(n===255){e+=8;continue}for(;(n&128)!=0;)e++,n=n<<1;if((n&128)!=0)return-1;for(let o=t+1;o<r.length;o++)if(r[o]!=0)return-1;break}return e}function U0(r){let e="0x";for(let t of r)e+=(t>>4).toString(16)+(t&15).toString(16);return e}var Fn=4,$n=16,k4=parseInt("0xFFFF",16),w2=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function li(r,e){e.length===$n&&r.length===Fn&&R0(e,0,11)&&(e=e.slice(12)),e.length===Fn&&r.length===$n&&M0(r,w2,0,11)&&(r=r.slice(12));let t=r.length;if(t!=e.length)throw new Error("Failed to mask ip");let n=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=r[o]&e[o];return n}function F0(r,e){if(typeof e=="string"&&(e=Uo(e)),e==null)throw new Error("Invalid ip");if(e.length!==r.network.length)return!1;for(let t=0;t<e.length;t++)if((r.network[t]&r.mask[t])!==(e[t]&r.mask[t]))return!1;return!0}function Lh(r){let[e,t]=r.split("/");if(!e||!t)throw new Error("Failed to parse given CIDR: "+r);let n=Fn,o=rc(e);if(o==null&&(n=$n,o=nc(e),o==null))throw new Error("Failed to parse given CIDR: "+r);let s=parseInt(t,10);if(Number.isNaN(s)||String(s).length!==t.length||s<0||s>n*8)throw new Error("Failed to parse given CIDR: "+r);let i=Ph(s,8*n);return{network:li(o,i),mask:i}}function Ph(r,e){if(e!==8*Fn&&e!==8*$n)throw new Error("Invalid CIDR mask");if(r<0||r>e)throw new Error("Invalid CIDR mask");let t=e/8,n=new Uint8Array(t);for(let o=0;o<t;o++){if(r>=8){n[o]=255,r-=8;continue}n[o]=255-(255>>r),r=0}return n}var Fo=class{constructor(e,t){if(t==null)({network:this.network,mask:this.mask}=Lh(e));else{let n=Uo(e);if(n==null)throw new Error("Failed to parse network");t=String(t);let o=parseInt(t,10);if(Number.isNaN(o)||String(o).length!==t.length||o<0||o>n.length*8){let s=Uo(t);if(s==null)throw new Error("Failed to parse mask");this.mask=s}else this.mask=Ph(o,8*n.length);this.network=li(n,this.mask)}}contains(e){return F0({network:this.network,mask:this.mask},e)}toString(){let e=O0(this.mask),t=e!==-1?String(e):U0(this.mask);return Bh(this.network)+"/"+t}};function $0(r){try{let e=Q(r);switch(e.type){case"ip4":return e.host.startsWith("169.254.");case"ip6":return e.host.toLowerCase().startsWith("fe80");default:return!1}}catch{return!1}}function V0(r){return/^127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(r)||/^::1$/.test(r)}function ui(r){try{let e=Q(r);switch(e.type){case"ip4":case"ip6":return V0(e.host);default:return!1}}catch{return!1}}function $e(r){try{return Q(r),!0}catch{return!1}}function Kt(r){return!!rc(r)}function oc(r){return!!nc(r)}var H0=pn(K0(),1),b2=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.0.0/29","192.0.0.8/32","192.0.0.9/32","192.0.0.10/32","192.0.0.170/32","192.0.0.171/32","192.0.2.0/24","192.31.196.0/24","192.52.193.0/24","192.88.99.0/24","192.168.0.0/16","192.175.48.0/24","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","240.0.0.0/4","255.255.255.255/32"],x2=b2.map(r=>new H0.Netmask(r));function Dh(r){for(let e of x2)if(e.contains(r))return!0;return!1}function v2(r){return/^::ffff:([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4})$/.test(r)}function E2(r){let e=r.split(":");if(e.length<2)return!1;let t=e[e.length-1].padStart(4,"0"),n=e[e.length-2].padStart(4,"0"),o=`${parseInt(n.substring(0,2),16)}.${parseInt(n.substring(2),16)}.${parseInt(t.substring(0,2),16)}.${parseInt(t.substring(2),16)}`;return Dh(o)}function A2(r){return/^::ffff:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)}function S2(r){let e=r.split(":"),t=e[e.length-1];return Dh(t)}function I2(r){return/^::$/.test(r)||/^::1$/.test(r)||/^64:ff9b::([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^100::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:2[0-9a-fA-F]:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:db8:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2002:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^f[c-d]([0-9a-fA-F]{2,2}):/i.test(r)||/^fe[8-9a-bA-B][0-9a-fA-F]:/i.test(r)||/^ff([0-9a-fA-F]{2,2}):/i.test(r)}function $o(r){if(Kt(r))return Dh(r);if(v2(r))return E2(r);if(A2(r))return S2(r);if(oc(r))return I2(r)}function Ht(r){try{let e=Q(r);switch(e.type){case"ip4":case"ip6":return $o(e.host)??!1;default:return e.host==="localhost"}}catch{return!1}}function ae(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var sc=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||(e-1&e)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},Vo=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new sc(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){let t=this.head;this.head=t.next=new sc(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){let t=this.tail.next;this.tail.next=null,this.tail=t,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}};var Nh=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function Ko(r={}){return k2(t=>{let n=t.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function k2(r,e){e=e??{};let t=e.onEnd,n=new Vo,o,s,i,a=ae(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((w,b)=>{s=T=>{s=null,n.push(T);try{w(r(n))}catch(S){b(S)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=ae()})}},l=w=>s!=null?s(w):(n.push(w),o),u=w=>(n=new Vo,s!=null?s({error:w}):(n.push({error:w}),o)),f=w=>{if(i)return o;if(e?.objectMode!==!0&&w?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:w})},d=w=>i?o:(i=!0,w!=null?u(w):l({done:!0})),h=()=>(n=new Vo,d(),{done:!0}),p=w=>(d(w),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:h,throw:p,push:f,end:d,get readableLength(){return n.size},onEmpty:async w=>{let b=w?.signal;if(b?.throwIfAborted(),n.isEmpty())return;let T,S;b!=null&&(T=new Promise((D,K)=>{S=()=>{K(new Nh)},b.addEventListener("abort",S)}));try{await Promise.race([a.promise,T])}finally{S!=null&&b!=null&&b?.removeEventListener("abort",S)}}},t==null)return o;let g=o;return o={[Symbol.asyncIterator](){return this},next(){return g.next()},throw(w){return g.throw(w),t!=null&&(t(w),t=void 0),{done:!0}},return(){return g.return(),t!=null&&(t(),t=void 0),{done:!0}},push:f,end(w){return g.end(w),t!=null&&(t(w),t=void 0),o},get readableLength(){return g.readableLength},onEmpty:w=>g.onEmpty(w)},o}var Rh=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},Mh=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},q0=r=>globalThis.DOMException===void 0?new Mh(r):new DOMException(r),z0=r=>{let e=r.reason===void 0?q0("This operation was aborted."):r.reason;return e instanceof Error?e:q0(e)};function Oh(r,e){let{milliseconds:t,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout}}=e,i,a,l=new Promise((u,f)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(e.signal){let{signal:h}=e;h.aborted&&f(z0(h)),a=()=>{f(z0(h))},h.addEventListener("abort",a,{once:!0})}if(t===Number.POSITIVE_INFINITY){r.then(u,f);return}let d=new Rh;i=s.setTimeout.call(void 0,()=>{if(n){try{u(n())}catch(h){f(h)}return}typeof r.cancel=="function"&&r.cancel(),o===!1?u():o instanceof Error?f(o):(d.message=o??`Promise timed out after ${t} milliseconds`,f(d))},t),(async()=>{try{u(await r)}catch(h){f(h)}})()}).finally(()=>{l.clear(),a&&e.signal&&e.signal.removeEventListener("abort",a)});return l.clear=()=>{s.clearTimeout.call(void 0,i),i=void 0},l}var _2=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function C2(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:u}=_2(r),f=async(...h)=>{let p=t.multiArgs?h:h[0];if(t.filter)try{if(!await t.filter(p))return}catch(g){n(),i(g);return}c.push(p),t.count===c.length&&(n(),s(c))},d=(...h)=>{n(),i(t.rejectionMultiArgs?h:h[0])};n=()=>{for(let h of a)u(h,f);for(let h of t.rejectionEvents)a.includes(h)||u(h,d)};for(let h of a)l(h,f);for(let h of t.rejectionEvents)a.includes(h)||l(h,d);t.signal&&t.signal.addEventListener("abort",()=>{d(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=Oh(o,{milliseconds:t.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function Ho(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=C2(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}function di(r,e){let t,n=function(){let o=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(o,e)};return n.start=()=>{},n.stop=()=>{clearTimeout(t)},n}var ic=class extends Error{remainingPoints;msBeforeNext;consumedPoints;isFirstInDuration;constructor(e="Rate limit exceeded",t){super(e),this.name="RateLimitError",this.remainingPoints=t.remainingPoints,this.msBeforeNext=t.msBeforeNext,this.consumedPoints=t.consumedPoints,this.isFirstInDuration=t.isFirstInDuration}},ac=class extends Error{static name="QueueFullError";constructor(e="The queue was full"){super(e),this.name="QueueFullError"}},Vn=class extends Error{static name="UnexpectedEOFError";name="UnexpectedEOFError"};function T2(r){return r.reason}async function St(r,e,t){if(e==null)return r;let n=t?.translateError??T2;if(e.aborted)return r.catch(()=>{}),Promise.reject(n(e));let o;try{return await Promise.race([r,new Promise((s,i)=>{o=()=>{i(n(e))},e.addEventListener("abort",o)})])}finally{o!=null&&e.removeEventListener("abort",o)}}var cc=class{deferred;signal;constructor(e){this.signal=e,this.deferred=ae(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new ft)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function B2(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var lc=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=B2(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,this.controller.signal,this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new ft),this.cleanup())}async join(e={}){let t=new cc(e.signal);return this.recipients.push(t),e.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await St(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};var qt=class extends _e{concurrency;maxSize;queue;pending;sort;paused;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.maxSize=e.maxSize??Number.POSITIVE_INFINITY,this.pending=0,this.paused=!1,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.sort=e.sort,this.queue=[],this.emitEmpty=di(this.emitEmpty.bind(this),1),this.emitIdle=di(this.emitIdle.bind(this),1)}emitEmpty(){this.size===0&&this.safeDispatchEvent("empty")}emitIdle(){this.running===0&&this.safeDispatchEvent("idle")}pause(){this.paused=!0}resume(){this.paused&&(this.paused=!1,this.tryToStartAnother())}tryToStartAnother(){if(this.paused)return!1;if(this.size===0)return this.emitEmpty(),this.running===0&&this.emitIdle(),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(e){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}async add(e,t){if(t?.signal?.throwIfAborted(),this.size===this.maxSize)throw new ac;let n=new lc(e,t);return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),n.join(t).then(o=>(this.safeDispatchEvent("completed",{detail:o}),this.safeDispatchEvent("success",{detail:{job:n,result:o}}),o)).catch(o=>{if(n.status==="queued"){for(let s=0;s<this.queue.length;s++)if(this.queue[s]===n){this.queue.splice(s,1);break}}throw this.safeDispatchEvent("failure",{detail:{job:n,error:o}}),o})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new ft)}),this.clear()}async onEmpty(e){this.size!==0&&await Ho(this,"empty",e)}async onSizeLessThan(e,t){this.size<e||await Ho(this,"next",{...t,filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await Ho(this,"idle",e)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=Ko({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},o=c=>{c.detail!=null&&t.push(c.detail)},s=c=>{n(c.detail.error)},i=()=>{n()},a=()=>{n(new ft("Queue aborted"))};this.addEventListener("completed",o),this.addEventListener("failure",s),this.addEventListener("idle",i),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",o),this.removeEventListener("failure",s),this.removeEventListener("idle",i),e?.signal?.removeEventListener("abort",a),n()}}};var qo=class{movingAverage;variance;deviation;forecast;timeSpan;previousTime;constructor(e){this.timeSpan=e,this.movingAverage=0,this.variance=0,this.deviation=0,this.forecast=0}alpha(e,t){return 1-Math.exp(-(e-t)/this.timeSpan)}push(e,t=Date.now()){if(this.previousTime!=null){let n=this.alpha(t,this.previousTime),o=e-this.movingAverage,s=n*o;this.movingAverage=n*e+(1-n)*this.movingAverage,this.variance=(1-n)*(this.variance+o*s),this.deviation=Math.sqrt(this.variance),this.forecast=this.movingAverage+n*o}else this.movingAverage=e;this.previousTime=t}};var L2=1.2,P2=2,D2=5e3,N2=6e4,R2=5e3,uc=class{success;failure;next;metric;timeoutMultiplier;failureMultiplier;minTimeout;maxTimeout;constructor(e={}){let t=e.interval??R2;this.success=new qo(t),this.failure=new qo(t),this.next=new qo(t),this.failureMultiplier=e.failureMultiplier??P2,this.timeoutMultiplier=e.timeoutMultiplier??L2,this.minTimeout=e.minTimeout??D2,this.maxTimeout=e.maxTimeout??N2,e.metricName!=null&&(this.metric=e.metrics?.registerMetricGroup(e.metricName))}getTimeoutSignal(e={}){let t=Math.round(this.next.movingAverage*(e.timeoutFactor??this.timeoutMultiplier));t<this.minTimeout&&(t=this.minTimeout),t>this.maxTimeout&&(t=this.maxTimeout);let n=AbortSignal.timeout(t),o=pe([e.signal,n]);return o.start=Date.now(),o.timeout=t,o}cleanUp(e){let t=Date.now()-e.start;e.aborted?(this.failure.push(t),this.next.push(t*this.failureMultiplier),this.metric?.update({failureMovingAverage:this.failure.movingAverage,failureDeviation:this.failure.deviation,failureForecast:this.failure.forecast,failureVariance:this.failure.variance,failure:t})):(this.success.push(t),this.next.push(t),this.metric?.update({successMovingAverage:this.success.movingAverage,successDeviation:this.success.deviation,successForecast:this.success.forecast,successVariance:this.success.variance,success:t}))}};var Ve=class extends Error{static name="InvalidMultiaddrError";name="InvalidMultiaddrError"},Sr=class extends Error{static name="ValidationError";name="ValidationError"},fc=class extends Error{static name="InvalidParametersError";name="InvalidParametersError"},dc=class extends Error{static name="UnknownProtocolError";name="UnknownProtocolError"};function Fh(r){return e=>M(e,r)}function $h(r){return e=>B(e,r)}function zo(r){return new DataView(r.buffer).getUint16(r.byteOffset).toString()}function Kn(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,typeof r=="string"?parseInt(r):r),new Uint8Array(e)}function G0(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==16)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion address.`);let t=B(e[0],"base32"),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=Kn(n);return Ce([t,o],t.length+o.length)}function W0(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==56)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion3 address.`);let t=Te.decode(`b${e[0]}`),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=Kn(n);return Ce([t,o],t.length+o.length)}function Vh(r){let e=r.subarray(0,r.length-2),t=r.subarray(r.length-2),n=M(e,"base32"),o=zo(t);return`${n}:${o}`}var Kh=function(r){r=r.toString().trim();let e=new Uint8Array(4);return r.split(/\./g).forEach((t,n)=>{let o=parseInt(t,10);if(isNaN(o)||o<0||o>255)throw new Ve("Invalid byte value in IP address");e[n]=o}),e},j0=function(r){let e=0;r=r.toString().trim();let t=r.split(":",8),n;for(n=0;n<t.length;n++){let s=Kt(t[n]),i;s&&(i=Kh(t[n]),t[n]=M(i.subarray(0,2),"base16")),i!=null&&++n<8&&t.splice(n,0,M(i.subarray(2,4),"base16"))}if(t[0]==="")for(;t.length<8;)t.unshift("0");else if(t[t.length-1]==="")for(;t.length<8;)t.push("0");else if(t.length<8){for(n=0;n<t.length&&t[n]!=="";n++);let s=[n,1];for(n=9-t.length;n>0;n--)s.push("0");t.splice.apply(t,s)}let o=new Uint8Array(e+16);for(n=0;n<t.length;n++){t[n]===""&&(t[n]="0");let s=parseInt(t[n],16);if(isNaN(s)||s<0||s>65535)throw new Ve("Invalid byte value in IP address");o[e++]=s>>8&255,o[e++]=s&255}return o},Y0=function(r){if(r.byteLength!==4)throw new Ve("IPv4 address was incorrect length");let e=[];for(let t=0;t<r.byteLength;t++)e.push(r[t]);return e.join(".")},Z0=function(r){if(r.byteLength!==16)throw new Ve("IPv6 address was incorrect length");let e=[];for(let n=0;n<r.byteLength;n+=2){let o=r[n],s=r[n+1],i=`${o.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")}`;e.push(i)}let t=e.join(":");try{let n=new URL(`http://[${t}]`);return n.hostname.substring(1,n.hostname.length-1)}catch{throw new Ve(`Invalid IPv6 address "${t}"`)}};function X0(r){try{let e=new URL(`http://[${r}]`);return e.hostname.substring(1,e.hostname.length-1)}catch{throw new Ve(`Invalid IPv6 address "${r}"`)}}var Uh=Object.values(Ns).map(r=>r.decoder),M2=(function(){let r=Uh[0].or(Uh[1]);return Uh.slice(2).forEach(e=>r=r.or(e)),r})();function J0(r){return M2.decode(r)}function Q0(r){return e=>r.encoder.encode(e)}function O2(r){if(parseInt(r).toString()!==r)throw new Sr("Value must be an integer")}function U2(r){if(r<0)throw new Sr("Value must be a positive integer, or zero")}function F2(r){return e=>{if(e>r)throw new Sr(`Value must be smaller than or equal to ${r}`)}}function $2(...r){return e=>{for(let t of r)t(e)}}var hi=$2(O2,U2,F2(65535));var De=-1,Hh=class{protocolsByCode=new Map;protocolsByName=new Map;getProtocol(e){let t;if(typeof e=="string"?t=this.protocolsByName.get(e):t=this.protocolsByCode.get(e),t==null)throw new dc(`Protocol ${e} was unknown`);return t}addProtocol(e){this.protocolsByCode.set(e.code,e),this.protocolsByName.set(e.name,e),e.aliases?.forEach(t=>{this.protocolsByName.set(t,e)})}removeProtocol(e){let t=this.protocolsByCode.get(e);t!=null&&(this.protocolsByCode.delete(t.code),this.protocolsByName.delete(t.name),t.aliases?.forEach(n=>{this.protocolsByName.delete(n)}))}},kr=new Hh,tS=[{code:4,name:"ip4",size:32,valueToBytes:Kh,bytesToValue:Y0,validate:r=>{if(!Kt(r))throw new Sr(`Invalid IPv4 address "${r}"`)}},{code:6,name:"tcp",size:16,valueToBytes:Kn,bytesToValue:zo,validate:hi},{code:273,name:"udp",size:16,valueToBytes:Kn,bytesToValue:zo,validate:hi},{code:33,name:"dccp",size:16,valueToBytes:Kn,bytesToValue:zo,validate:hi},{code:41,name:"ip6",size:128,valueToBytes:j0,bytesToValue:Z0,stringToValue:X0,validate:r=>{if(!oc(r))throw new Sr(`Invalid IPv6 address "${r}"`)}},{code:42,name:"ip6zone",size:De},{code:43,name:"ipcidr",size:8,bytesToValue:Fh("base10"),valueToBytes:$h("base10")},{code:53,name:"dns",size:De},{code:54,name:"dns4",size:De},{code:55,name:"dns6",size:De},{code:56,name:"dnsaddr",size:De},{code:132,name:"sctp",size:16,valueToBytes:Kn,bytesToValue:zo,validate:hi},{code:301,name:"udt"},{code:302,name:"utp"},{code:400,name:"unix",size:De,stringToValue:r=>decodeURIComponent(r),valueToString:r=>encodeURIComponent(r)},{code:421,name:"p2p",aliases:["ipfs"],size:De,bytesToValue:Fh("base58btc"),valueToBytes:r=>r.startsWith("Q")||r.startsWith("1")?$h("base58btc")(r):H.parse(r).multihash.bytes},{code:444,name:"onion",size:96,bytesToValue:Vh,valueToBytes:G0},{code:445,name:"onion3",size:296,bytesToValue:Vh,valueToBytes:W0},{code:446,name:"garlic64",size:De},{code:447,name:"garlic32",size:De},{code:448,name:"tls"},{code:449,name:"sni",size:De},{code:454,name:"noise"},{code:460,name:"quic"},{code:461,name:"quic-v1"},{code:465,name:"webtransport"},{code:466,name:"certhash",size:De,bytesToValue:Q0(ld),valueToBytes:J0},{code:480,name:"http"},{code:481,name:"http-path",size:De,stringToValue:r=>`/${decodeURIComponent(r)}`,valueToString:r=>encodeURIComponent(r.substring(1))},{code:443,name:"https"},{code:477,name:"ws"},{code:478,name:"wss"},{code:479,name:"p2p-websocket-star"},{code:277,name:"p2p-stardust"},{code:275,name:"p2p-webrtc-star"},{code:276,name:"p2p-webrtc-direct"},{code:280,name:"webrtc-direct"},{code:281,name:"webrtc"},{code:290,name:"p2p-circuit"},{code:777,name:"memory",size:De}];tS.forEach(r=>{kr.addProtocol(r)});function ew(r){let e=[],t=0;for(;t<r.length;){let n=Ln(r,t),o=kr.getProtocol(n),s=Pe(n),i=rS(o,r,t+s),a=0;i>0&&o.size===De&&(a=Pe(i));let c=s+a+i,l={code:n,name:o.name,bytes:r.subarray(t,t+c)};if(i>0){let u=t+s+a,f=r.subarray(u,u+i);l.value=o.bytesToValue?.(f)??M(f)}e.push(l),t+=c}return e}function tw(r){let e=0,t=[];for(let n of r){if(n.bytes==null){let o=kr.getProtocol(n.code),s=Pe(n.code),i,a=0,c=0;n.value!=null&&(i=o.valueToBytes?.(n.value)??B(n.value),a=i.byteLength,o.size===De&&(c=Pe(a)));let l=new Uint8Array(s+c+a),u=0;Do(n.code,l,u),u+=s,i!=null&&(o.size===De&&(Do(a,l,u),u+=c),l.set(i,u)),n.bytes=l}t.push(n.bytes),e+=n.bytes.byteLength}return Ce(t,e)}function rw(r){if(r.charAt(0)!=="/")throw new Ve('String multiaddr must start with "/"');let e=[],t="protocol",n="",o="";for(let s=1;s<r.length;s++){let i=r.charAt(s);i!=="/"&&(t==="protocol"?o+=r.charAt(s):n+=r.charAt(s));let a=s===r.length-1;if(i==="/"||a){let c=kr.getProtocol(o);if(t==="protocol"){if(c.size==null||c.size===0){e.push({code:c.code,name:c.name}),n="",o="",t="protocol";continue}else if(a)throw new Ve(`Component ${o} was missing value`);t="value"}else if(t==="value"){let l={code:c.code,name:c.name};if(c.size!=null&&c.size!==0){if(n==="")throw new Ve(`Component ${o} was missing value`);l.value=c.stringToValue?.(n)??n}e.push(l),n="",o="",t="protocol"}}}if(o!==""&&n!=="")throw new Ve("Incomplete multiaddr");return e}function nw(r){return`/${r.flatMap(e=>{if(e.value==null)return e.name;let t=kr.getProtocol(e.code);if(t==null)throw new Ve(`Unknown protocol code ${e.code}`);return[e.name,t.valueToString?.(e.value)??e.value]}).join("/")}`}function rS(r,e,t){return r.size==null||r.size===0?0:r.size>0?r.size/8:Ln(e,t)}var nS=Symbol.for("nodejs.util.inspect.custom"),Qh=Symbol.for("@multiformats/multiaddr");function oS(r){if(r==null&&(r="/"),nn(r))return r.getComponents();if(r instanceof Uint8Array)return ew(r);if(typeof r=="string")return r=r.replace(/\/(\/)+/,"/").replace(/(\/)+$/,""),r===""&&(r="/"),rw(r);if(Array.isArray(r))return r;throw new Ve("Must be a string, Uint8Array, Component[], or another Multiaddr")}var yc=class r{[Qh]=!0;#e;#t;#r;constructor(e="/",t={}){this.#e=oS(e),t.validate!==!1&&sS(this)}get bytes(){return this.#r==null&&(this.#r=tw(this.#e)),this.#r}toString(){return this.#t==null&&(this.#t=nw(this.#e)),this.#t}toJSON(){return this.toString()}getComponents(){return[...this.#e.map(e=>({...e}))]}encapsulate(e){let t=new r(e);return new r([...this.#e,...t.getComponents()],{validate:!1})}decapsulate(e){let t=e.toString(),n=this.toString(),o=n.lastIndexOf(t);if(o<0)throw new fc(`Address ${this.toString()} does not contain subaddress: ${t}`);return new r(n.slice(0,o),{validate:!1})}decapsulateCode(e){let t;for(let n=this.#e.length-1;n>-1;n--)if(this.#e[n].code===e){t=n;break}return new r(this.#e.slice(0,t),{validate:!1})}equals(e){return X(this.bytes,e.bytes)}[nS](){return`Multiaddr(${this.toString()})`}};function sS(r){r.getComponents().forEach(e=>{let t=kr.getProtocol(e.code);e.value!=null&&t.validate?.(e.value)})}function nn(r){return!!r?.[Qh]}function ee(r){return new yc(r)}var wc=class extends Error{type;code;constructor(e,t,n){super(e??"The operation was aborted"),this.type="aborted",this.name=n??"AbortError",this.code=t??"ABORT_ERR"}};async function ow(r,e,t){if(e==null)return r;if(e.aborted)return r.catch(()=>{}),Promise.reject(new wc(t?.errorMessage,t?.errorCode,t?.errorName));let n,o=new wc(t?.errorMessage,t?.errorCode,t?.errorName);try{return await Promise.race([r,new Promise((s,i)=>{n=()=>{i(o)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var ep=class{readNext;haveNext;ended;nextResult;error;constructor(){this.ended=!1,this.readNext=ae(),this.haveNext=ae()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let e=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=ae(),e}async throw(e){return this.ended=!0,this.error=e,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return this.ended=!0,this.nextResult=e,this.haveNext.resolve(),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw this.error??new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=ae(),await ow(this.readNext.promise,t?.signal,t)}};function sw(){return new ep}function iS(r){return r[Symbol.asyncIterator]!=null}async function aS(r,e,t){try{await Promise.all(r.map(async n=>{for await(let o of n)await e.push(o,{signal:t}),t.throwIfAborted()})),await e.end(void 0,{signal:t})}catch(n){await e.end(n,{signal:t}).catch(()=>{})}}async function*cS(r){let e=new AbortController,t=sw();aS(r,t,e.signal).catch(()=>{});try{yield*t}finally{e.abort()}}function*lS(r){for(let e of r)yield*e}function uS(...r){let e=[];for(let t of r)iS(t)||e.push(t);return e.length===r.length?lS(e):cS(r)}var It=uS;var dS=4194304,bc=class extends Error{static name="UnwrappedError";name="UnwrappedError"},rp=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},np=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},op=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function hS(r){return typeof r?.closeRead=="function"}function pS(r){return typeof r?.close=="function"}function tp(r){return hS(r)?r.remoteWriteStatus!=="writable"&&r.readBufferLength===0:pS(r)?r.status!=="open":!1}function mS(r){return r?.addEventListener!=null&&r?.removeEventListener!=null&&r?.send!=null&&r?.push!=null&&r?.log!=null}function sp(r,e){let t=e?.maxBufferSize??dS,n=new se,o,s=!1;if(!mS(r))throw new k("Argument should be a Stream or a Multiaddr");let i=u=>{if(n.append(u.data),n.byteLength>t){let f=n.byteLength;n.consume(n.byteLength),o?.reject(new Error(`Read buffer overflow - ${f} > ${t}`))}o?.resolve()};r.addEventListener("message",i);let a=u=>{u.error!=null?o?.reject(u.error):o?.resolve()};r.addEventListener("close",a);let c=()=>{o?.resolve()};r.addEventListener("remoteCloseWrite",c);let l={readBuffer:n,async read(u){if(s===!0)throw new bc("Stream was unwrapped");if(tp(r)){if(u?.bytes==null)return null;if(n.byteLength<u.bytes)throw r.log.error("closed after reading %d/%d bytes",n.byteLength,u.bytes),new Vn(`Unexpected EOF - stream closed after reading ${n.byteLength}/${u.bytes} bytes`)}let f=u?.bytes??1;for(o=Promise.withResolvers();;){if(n.byteLength>=f){o.resolve();break}if(await St(o.promise,u?.signal),tp(r)){if(n.byteLength===0&&u?.bytes==null)return null;break}o=Promise.withResolvers()}let d=u?.bytes??n.byteLength;if(n.byteLength<d){if(tp(r))throw r.log.error("closed while reading %d/%d bytes",n.byteLength,d),new Vn(`Unexpected EOF - stream closed while reading ${n.byteLength}/${d} bytes`);return l.read(u)}let h=n.sublist(0,d);return n.consume(d),h},async write(u,f){if(s===!0)throw new bc("Stream was unwrapped");r.send(u)||await Ho(r,"drain",{signal:f?.signal,rejectionEvents:["close"]})},unwrap(){return s||(s=!0,r.removeEventListener("message",i),r.removeEventListener("close",a),r.removeEventListener("remoteCloseWrite",c),n.byteLength>0&&(r.log("stream unwrapped with %d unread bytes",n.byteLength),r.push(n))),r}};return l}function xc(r,e={}){let t=sp(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=Pe(e.maxDataLength));let n=e?.lengthDecoder??Ln,o=e?.lengthEncoder??Xr;return{async read(i){let a=-1,c=new se;for(;;){let u=await t.read({...i,bytes:1});if(u==null)break;c.append(u);try{a=n(c)}catch(f){if(f instanceof RangeError)continue;throw f}if(a<0)throw new rp("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new op(`Message length length too long - ${c.byteLength} > ${e.maxLengthLength}`);if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new np(`Message length too long - ${a} > ${e.maxDataLength}`);let l=await t.read({...i,bytes:a});if(l==null)throw r.log.error("tried to read %d bytes but the stream closed",a),new Vn(`Unexpected EOF - tried to read ${a} bytes but the stream closed`);if(l.byteLength!==a)throw r.log.error("read %d/%d bytes before the stream closed",l.byteLength,a),new Vn(`Unexpected EOF - read ${l.byteLength}/${a} bytes before the stream closed`);return l},async write(i,a){await t.write(new se(o(i.byteLength),i),a)},async writeV(i,a){let c=new se(...i.flatMap(l=>[o(l.byteLength),l]));await t.write(c,a)},unwrap(){return t.unwrap()}}}var gS=["string","number","bigint","symbol"],yS=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","HTMLElement","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function iw(r){if(r===null)return"null";if(r===void 0)return"undefined";if(r===!0||r===!1)return"boolean";let e=typeof r;if(gS.includes(e))return e;if(e==="function")return"Function";if(Array.isArray(r))return"Array";if(wS(r))return"Buffer";let t=bS(r);return t||"Object"}function wS(r){return r&&r.constructor&&r.constructor.isBuffer&&r.constructor.isBuffer.call(null,r)}function bS(r){let e=Object.prototype.toString.call(r).slice(8,-1);if(yS.includes(e))return e}var m=class{constructor(e,t,n){this.major=e,this.majorEncoded=e<<5,this.name=t,this.terminal=n}toString(){return`Type[${this.major}].${this.name}`}compare(e){return this.major<e.major?-1:this.major>e.major?1:0}};m.uint=new m(0,"uint",!0);m.negint=new m(1,"negint",!0);m.bytes=new m(2,"bytes",!0);m.string=new m(3,"string",!0);m.array=new m(4,"array",!1);m.map=new m(5,"map",!1);m.tag=new m(6,"tag",!1);m.float=new m(7,"float",!0);m.false=new m(7,"false",!0);m.true=new m(7,"true",!0);m.null=new m(7,"null",!0);m.undefined=new m(7,"undefined",!0);m.break=new m(7,"break",!0);var I=class{constructor(e,t,n){this.type=e,this.value=t,this.encodedLength=n,this.encodedBytes=void 0,this.byteValue=void 0}toString(){return`Token[${this.type}].${this.value}`}};var Zo=globalThis.process&&!globalThis.process.browser&&globalThis.Buffer&&typeof globalThis.Buffer.isBuffer=="function",xS=new TextDecoder,vS=new TextEncoder;function vc(r){return Zo&&globalThis.Buffer.isBuffer(r)}function wi(r){return r instanceof Uint8Array?vc(r)?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r:Uint8Array.from(r)}var uw=Zo?(r,e,t)=>t-e>64?globalThis.Buffer.from(r.subarray(e,t)).toString("utf8"):cw(r,e,t):(r,e,t)=>t-e>64?xS.decode(r.subarray(e,t)):cw(r,e,t),Ec=Zo?r=>r.length>64?globalThis.Buffer.from(r):aw(r):r=>r.length>64?vS.encode(r):aw(r),ur=r=>Uint8Array.from(r),Xo=Zo?(r,e,t)=>vc(r)?new Uint8Array(r.subarray(e,t)):r.slice(e,t):(r,e,t)=>r.slice(e,t),fw=Zo?(r,e)=>(r=r.map(t=>t instanceof Uint8Array?t:globalThis.Buffer.from(t)),wi(globalThis.Buffer.concat(r,e))):(r,e)=>{let t=new Uint8Array(e),n=0;for(let o of r)n+o.length>t.length&&(o=o.subarray(0,t.length-n)),t.set(o,n),n+=o.length;return t},dw=Zo?r=>globalThis.Buffer.allocUnsafe(r):r=>new Uint8Array(r);function Ac(r,e){if(vc(r)&&vc(e))return r.compare(e);for(let t=0;t<r.length;t++)if(r[t]!==e[t])return r[t]<e[t]?-1:1;return 0}function aw(r){let e=[],t=0;for(let n=0;n<r.length;n++){let o=r.charCodeAt(n);o<128?e[t++]=o:o<2048?(e[t++]=o>>6|192,e[t++]=o&63|128):(o&64512)===55296&&n+1<r.length&&(r.charCodeAt(n+1)&64512)===56320?(o=65536+((o&1023)<<10)+(r.charCodeAt(++n)&1023),e[t++]=o>>18|240,e[t++]=o>>12&63|128,e[t++]=o>>6&63|128,e[t++]=o&63|128):(e[t++]=o>>12|224,e[t++]=o>>6&63|128,e[t++]=o&63|128)}return e}function cw(r,e,t){let n=[];for(;e<t;){let o=r[e],s=null,i=o>239?4:o>223?3:o>191?2:1;if(e+i<=t){let a,c,l,u;switch(i){case 1:o<128&&(s=o);break;case 2:a=r[e+1],(a&192)===128&&(u=(o&31)<<6|a&63,u>127&&(s=u));break;case 3:a=r[e+1],c=r[e+2],(a&192)===128&&(c&192)===128&&(u=(o&15)<<12|(a&63)<<6|c&63,u>2047&&(u<55296||u>57343)&&(s=u));break;case 4:a=r[e+1],c=r[e+2],l=r[e+3],(a&192)===128&&(c&192)===128&&(l&192)===128&&(u=(o&15)<<18|(a&63)<<12|(c&63)<<6|l&63,u>65535&&u<1114112&&(s=u))}}s===null?(s=65533,i=1):s>65535&&(s-=65536,n.push(s>>>10&1023|55296),s=56320|s&1023),n.push(s),e+=i}return ip(n)}var lw=4096;function ip(r){let e=r.length;if(e<=lw)return String.fromCharCode.apply(String,r);let t="",n=0;for(;n<e;)t+=String.fromCharCode.apply(String,r.slice(n,n+=lw));return t}var ES=256,bi=class{constructor(e=ES){this.chunkSize=e,this.cursor=0,this.maxCursor=-1,this.chunks=[],this._initReuseChunk=null}reset(){this.cursor=0,this.maxCursor=-1,this.chunks.length&&(this.chunks=[]),this._initReuseChunk!==null&&(this.chunks.push(this._initReuseChunk),this.maxCursor=this._initReuseChunk.length-1)}push(e){let t=this.chunks[this.chunks.length-1];if(this.cursor+e.length<=this.maxCursor+1){let o=t.length-(this.maxCursor-this.cursor)-1;t.set(e,o)}else{if(t){let o=t.length-(this.maxCursor-this.cursor)-1;o<t.length&&(this.chunks[this.chunks.length-1]=t.subarray(0,o),this.maxCursor=this.cursor-1)}e.length<64&&e.length<this.chunkSize?(t=dw(this.chunkSize),this.chunks.push(t),this.maxCursor+=t.length,this._initReuseChunk===null&&(this._initReuseChunk=t),t.set(e,0)):(this.chunks.push(e),this.maxCursor+=e.length)}this.cursor+=e.length}toBytes(e=!1){let t;if(this.chunks.length===1){let n=this.chunks[0];e&&this.cursor>n.length/2?(t=this.cursor===n.length?n:n.subarray(0,this.cursor),this._initReuseChunk=null,this.chunks=[]):t=Xo(n,0,this.cursor)}else t=fw(this.chunks,this.cursor);return e&&this.reset(),t}};var F="CBOR decode error:",_r="CBOR encode error:",xi=[];xi[23]=1;xi[24]=2;xi[25]=3;xi[26]=5;xi[27]=9;function Cr(r,e,t){if(r.length-e<t)throw new Error(`${F} not enough data for type`)}var Ne=[24,256,65536,4294967296,BigInt("18446744073709551616")];function mt(r,e,t){Cr(r,e,1);let n=r[e];if(t.strict===!0&&n<Ne[0])throw new Error(`${F} integer encoded in more bytes than necessary (strict decode)`);return n}function gt(r,e,t){Cr(r,e,2);let n=r[e]<<8|r[e+1];if(t.strict===!0&&n<Ne[1])throw new Error(`${F} integer encoded in more bytes than necessary (strict decode)`);return n}function yt(r,e,t){Cr(r,e,4);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3];if(t.strict===!0&&n<Ne[2])throw new Error(`${F} integer encoded in more bytes than necessary (strict decode)`);return n}function wt(r,e,t){Cr(r,e,8);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3],o=r[e+4]*16777216+(r[e+5]<<16)+(r[e+6]<<8)+r[e+7],s=(BigInt(n)<<BigInt(32))+BigInt(o);if(t.strict===!0&&s<Ne[3])throw new Error(`${F} integer encoded in more bytes than necessary (strict decode)`);if(s<=Number.MAX_SAFE_INTEGER)return Number(s);if(t.allowBigInt===!0)return s;throw new Error(`${F} integers outside of the safe integer range are not supported`)}function hw(r,e,t,n){return new I(m.uint,mt(r,e+1,n),2)}function pw(r,e,t,n){return new I(m.uint,gt(r,e+1,n),3)}function mw(r,e,t,n){return new I(m.uint,yt(r,e+1,n),5)}function gw(r,e,t,n){return new I(m.uint,wt(r,e+1,n),9)}function kt(r,e){return Ke(r,0,e.value)}function Ke(r,e,t){if(t<Ne[0]){let n=Number(t);r.push([e|n])}else if(t<Ne[1]){let n=Number(t);r.push([e|24,n])}else if(t<Ne[2]){let n=Number(t);r.push([e|25,n>>>8,n&255])}else if(t<Ne[3]){let n=Number(t);r.push([e|26,n>>>24&255,n>>>16&255,n>>>8&255,n&255])}else{let n=BigInt(t);if(n<Ne[4]){let o=[e|27,0,0,0,0,0,0,0],s=Number(n&BigInt(4294967295)),i=Number(n>>BigInt(32)&BigInt(4294967295));o[8]=s&255,s=s>>8,o[7]=s&255,s=s>>8,o[6]=s&255,s=s>>8,o[5]=s&255,o[4]=i&255,i=i>>8,o[3]=i&255,i=i>>8,o[2]=i&255,i=i>>8,o[1]=i&255,r.push(o)}else throw new Error(`${F} encountered BigInt larger than allowable range`)}}kt.encodedSize=function(e){return Ke.encodedSize(e.value)};Ke.encodedSize=function(e){return e<Ne[0]?1:e<Ne[1]?2:e<Ne[2]?3:e<Ne[3]?5:9};kt.compareTokens=function(e,t){return e.value<t.value?-1:e.value>t.value?1:0};function yw(r,e,t,n){return new I(m.negint,-1-mt(r,e+1,n),2)}function ww(r,e,t,n){return new I(m.negint,-1-gt(r,e+1,n),3)}function bw(r,e,t,n){return new I(m.negint,-1-yt(r,e+1,n),5)}var ap=BigInt(-1),xw=BigInt(1);function vw(r,e,t,n){let o=wt(r,e+1,n);if(typeof o!="bigint"){let s=-1-o;if(s>=Number.MIN_SAFE_INTEGER)return new I(m.negint,s,9)}if(n.allowBigInt!==!0)throw new Error(`${F} integers outside of the safe integer range are not supported`);return new I(m.negint,ap-BigInt(o),9)}function Sc(r,e){let t=e.value,n=typeof t=="bigint"?t*ap-xw:t*-1-1;Ke(r,e.type.majorEncoded,n)}Sc.encodedSize=function(e){let t=e.value,n=typeof t=="bigint"?t*ap-xw:t*-1-1;return n<Ne[0]?1:n<Ne[1]?2:n<Ne[2]?3:n<Ne[3]?5:9};Sc.compareTokens=function(e,t){return e.value<t.value?1:e.value>t.value?-1:0};function vi(r,e,t,n){Cr(r,e,t+n);let o=Xo(r,e+t,e+t+n);return new I(m.bytes,o,t+n)}function Ew(r,e,t,n){return vi(r,e,1,t)}function Aw(r,e,t,n){return vi(r,e,2,mt(r,e+1,n))}function Sw(r,e,t,n){return vi(r,e,3,gt(r,e+1,n))}function Iw(r,e,t,n){return vi(r,e,5,yt(r,e+1,n))}function kw(r,e,t,n){let o=wt(r,e+1,n);if(typeof o=="bigint")throw new Error(`${F} 64-bit integer bytes lengths not supported`);return vi(r,e,9,o)}function Ic(r){return r.encodedBytes===void 0&&(r.encodedBytes=r.type===m.string?Ec(r.value):r.value),r.encodedBytes}function Jo(r,e){let t=Ic(e);Ke(r,e.type.majorEncoded,t.length),r.push(t)}Jo.encodedSize=function(e){let t=Ic(e);return Ke.encodedSize(t.length)+t.length};Jo.compareTokens=function(e,t){return SS(Ic(e),Ic(t))};function SS(r,e){return r.length<e.length?-1:r.length>e.length?1:Ac(r,e)}function Ei(r,e,t,n,o){let s=t+n;Cr(r,e,s);let i=new I(m.string,uw(r,e+t,e+s),s);return o.retainStringBytes===!0&&(i.byteValue=Xo(r,e+t,e+s)),i}function _w(r,e,t,n){return Ei(r,e,1,t,n)}function Cw(r,e,t,n){return Ei(r,e,2,mt(r,e+1,n),n)}function Tw(r,e,t,n){return Ei(r,e,3,gt(r,e+1,n),n)}function Bw(r,e,t,n){return Ei(r,e,5,yt(r,e+1,n),n)}function Lw(r,e,t,n){let o=wt(r,e+1,n);if(typeof o=="bigint")throw new Error(`${F} 64-bit integer string lengths not supported`);return Ei(r,e,9,o,n)}var Pw=Jo;function Qo(r,e,t,n){return new I(m.array,n,t)}function Dw(r,e,t,n){return Qo(r,e,1,t)}function Nw(r,e,t,n){return Qo(r,e,2,mt(r,e+1,n))}function Rw(r,e,t,n){return Qo(r,e,3,gt(r,e+1,n))}function Mw(r,e,t,n){return Qo(r,e,5,yt(r,e+1,n))}function Ow(r,e,t,n){let o=wt(r,e+1,n);if(typeof o=="bigint")throw new Error(`${F} 64-bit integer array lengths not supported`);return Qo(r,e,9,o)}function Uw(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${F} indefinite length items not allowed`);return Qo(r,e,1,1/0)}function kc(r,e){Ke(r,m.array.majorEncoded,e.value)}kc.compareTokens=kt.compareTokens;kc.encodedSize=function(e){return Ke.encodedSize(e.value)};function es(r,e,t,n){return new I(m.map,n,t)}function Fw(r,e,t,n){return es(r,e,1,t)}function $w(r,e,t,n){return es(r,e,2,mt(r,e+1,n))}function Vw(r,e,t,n){return es(r,e,3,gt(r,e+1,n))}function Kw(r,e,t,n){return es(r,e,5,yt(r,e+1,n))}function Hw(r,e,t,n){let o=wt(r,e+1,n);if(typeof o=="bigint")throw new Error(`${F} 64-bit integer map lengths not supported`);return es(r,e,9,o)}function qw(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${F} indefinite length items not allowed`);return es(r,e,1,1/0)}function _c(r,e){Ke(r,m.map.majorEncoded,e.value)}_c.compareTokens=kt.compareTokens;_c.encodedSize=function(e){return Ke.encodedSize(e.value)};function zw(r,e,t,n){return new I(m.tag,t,1)}function Gw(r,e,t,n){return new I(m.tag,mt(r,e+1,n),2)}function Ww(r,e,t,n){return new I(m.tag,gt(r,e+1,n),3)}function jw(r,e,t,n){return new I(m.tag,yt(r,e+1,n),5)}function Yw(r,e,t,n){return new I(m.tag,wt(r,e+1,n),9)}function Cc(r,e){Ke(r,m.tag.majorEncoded,e.value)}Cc.compareTokens=kt.compareTokens;Cc.encodedSize=function(e){return Ke.encodedSize(e.value)};var BS=20,LS=21,PS=22,DS=23;function Zw(r,e,t,n){if(n.allowUndefined===!1)throw new Error(`${F} undefined values are not supported`);return n.coerceUndefinedToNull===!0?new I(m.null,null,1):new I(m.undefined,void 0,1)}function Xw(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${F} indefinite length items not allowed`);return new I(m.break,void 0,1)}function cp(r,e,t){if(t){if(t.allowNaN===!1&&Number.isNaN(r))throw new Error(`${F} NaN values are not supported`);if(t.allowInfinity===!1&&(r===1/0||r===-1/0))throw new Error(`${F} Infinity values are not supported`)}return new I(m.float,r,e)}function Jw(r,e,t,n){return cp(lp(r,e+1),3,n)}function Qw(r,e,t,n){return cp(up(r,e+1),5,n)}function eb(r,e,t,n){return cp(ob(r,e+1),9,n)}function Tc(r,e,t){let n=e.value;if(n===!1)r.push([m.float.majorEncoded|BS]);else if(n===!0)r.push([m.float.majorEncoded|LS]);else if(n===null)r.push([m.float.majorEncoded|PS]);else if(n===void 0)r.push([m.float.majorEncoded|DS]);else{let o,s=!1;(!t||t.float64!==!0)&&(rb(n),o=lp(zt,1),n===o||Number.isNaN(n)?(zt[0]=249,r.push(zt.slice(0,3)),s=!0):(nb(n),o=up(zt,1),n===o&&(zt[0]=250,r.push(zt.slice(0,5)),s=!0))),s||(NS(n),o=ob(zt,1),zt[0]=251,r.push(zt.slice(0,9)))}}Tc.encodedSize=function(e,t){let n=e.value;if(n===!1||n===!0||n===null||n===void 0)return 1;if(!t||t.float64!==!0){rb(n);let o=lp(zt,1);if(n===o||Number.isNaN(n))return 3;if(nb(n),o=up(zt,1),n===o)return 5}return 9};var tb=new ArrayBuffer(9),_t=new DataView(tb,1),zt=new Uint8Array(tb,0);function rb(r){if(r===1/0)_t.setUint16(0,31744,!1);else if(r===-1/0)_t.setUint16(0,64512,!1);else if(Number.isNaN(r))_t.setUint16(0,32256,!1);else{_t.setFloat32(0,r);let e=_t.getUint32(0),t=(e&2139095040)>>23,n=e&8388607;if(t===255)_t.setUint16(0,31744,!1);else if(t===0)_t.setUint16(0,(r&2147483648)>>16|n>>13,!1);else{let o=t-127;o<-24?_t.setUint16(0,0):o<-14?_t.setUint16(0,(e&2147483648)>>16|1<<24+o,!1):_t.setUint16(0,(e&2147483648)>>16|o+15<<10|n>>13,!1)}}}function lp(r,e){if(r.length-e<2)throw new Error(`${F} not enough data for float16`);let t=(r[e]<<8)+r[e+1];if(t===31744)return 1/0;if(t===64512)return-1/0;if(t===32256)return NaN;let n=t>>10&31,o=t&1023,s;return n===0?s=o*2**-24:n!==31?s=(o+1024)*2**(n-25):s=o===0?1/0:NaN,t&32768?-s:s}function nb(r){_t.setFloat32(0,r,!1)}function up(r,e){if(r.length-e<4)throw new Error(`${F} not enough data for float32`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,4).getFloat32(0,!1)}function NS(r){_t.setFloat64(0,r,!1)}function ob(r,e){if(r.length-e<8)throw new Error(`${F} not enough data for float64`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,8).getFloat64(0,!1)}Tc.compareTokens=kt.compareTokens;function oe(r,e,t){throw new Error(`${F} encountered invalid minor (${t}) for major ${r[e]>>>5}`)}function Bc(r){return()=>{throw new Error(`${F} ${r}`)}}var L=[];for(let r=0;r<=23;r++)L[r]=oe;L[24]=hw;L[25]=pw;L[26]=mw;L[27]=gw;L[28]=oe;L[29]=oe;L[30]=oe;L[31]=oe;for(let r=32;r<=55;r++)L[r]=oe;L[56]=yw;L[57]=ww;L[58]=bw;L[59]=vw;L[60]=oe;L[61]=oe;L[62]=oe;L[63]=oe;for(let r=64;r<=87;r++)L[r]=Ew;L[88]=Aw;L[89]=Sw;L[90]=Iw;L[91]=kw;L[92]=oe;L[93]=oe;L[94]=oe;L[95]=Bc("indefinite length bytes/strings are not supported");for(let r=96;r<=119;r++)L[r]=_w;L[120]=Cw;L[121]=Tw;L[122]=Bw;L[123]=Lw;L[124]=oe;L[125]=oe;L[126]=oe;L[127]=Bc("indefinite length bytes/strings are not supported");for(let r=128;r<=151;r++)L[r]=Dw;L[152]=Nw;L[153]=Rw;L[154]=Mw;L[155]=Ow;L[156]=oe;L[157]=oe;L[158]=oe;L[159]=Uw;for(let r=160;r<=183;r++)L[r]=Fw;L[184]=$w;L[185]=Vw;L[186]=Kw;L[187]=Hw;L[188]=oe;L[189]=oe;L[190]=oe;L[191]=qw;for(let r=192;r<=215;r++)L[r]=zw;L[216]=Gw;L[217]=Ww;L[218]=jw;L[219]=Yw;L[220]=oe;L[221]=oe;L[222]=oe;L[223]=oe;for(let r=224;r<=243;r++)L[r]=Bc("simple values are not supported");L[244]=oe;L[245]=oe;L[246]=oe;L[247]=Zw;L[248]=Bc("simple values are not supported");L[249]=Jw;L[250]=Qw;L[251]=eb;L[252]=oe;L[253]=oe;L[254]=oe;L[255]=Xw;var Gt=[];for(let r=0;r<24;r++)Gt[r]=new I(m.uint,r,1);for(let r=-1;r>=-24;r--)Gt[31-r]=new I(m.negint,r,1);Gt[64]=new I(m.bytes,new Uint8Array(0),1);Gt[96]=new I(m.string,"",1);Gt[128]=new I(m.array,0,1);Gt[160]=new I(m.map,0,1);Gt[244]=new I(m.false,!1,1);Gt[245]=new I(m.true,!0,1);Gt[246]=new I(m.null,null,1);function fp(r){switch(r.type){case m.false:return ur([244]);case m.true:return ur([245]);case m.null:return ur([246]);case m.bytes:return r.value.length?void 0:ur([64]);case m.string:return r.value===""?ur([96]):void 0;case m.array:return r.value===0?ur([128]):void 0;case m.map:return r.value===0?ur([160]):void 0;case m.uint:return r.value<24?ur([Number(r.value)]):void 0;case m.negint:if(r.value>=-24)return ur([31-Number(r.value)])}}var MS={float64:!1,mapSorter:FS,quickEncodeToken:fp},ib=Object.freeze({float64:!0,mapSorter:$S,quickEncodeToken:fp});function OS(){let r=[];return r[m.uint.major]=kt,r[m.negint.major]=Sc,r[m.bytes.major]=Jo,r[m.string.major]=Pw,r[m.array.major]=kc,r[m.map.major]=_c,r[m.tag.major]=Cc,r[m.float.major]=Tc,r}var hp=OS(),dp=new bi,Pc=class r{constructor(e,t){this.obj=e,this.parent=t}includes(e){let t=this;do if(t.obj===e)return!0;while(t=t.parent);return!1}static createCheck(e,t){if(e&&e.includes(t))throw new Error(`${_r} object contains circular references`);return new r(t,e)}},on={null:new I(m.null,null),undefined:new I(m.undefined,void 0),true:new I(m.true,!0),false:new I(m.false,!1),emptyArray:new I(m.array,0),emptyMap:new I(m.map,0)},sn={number(r,e,t,n){return!Number.isInteger(r)||!Number.isSafeInteger(r)?new I(m.float,r):r>=0?new I(m.uint,r):new I(m.negint,r)},bigint(r,e,t,n){return r>=BigInt(0)?new I(m.uint,r):new I(m.negint,r)},Uint8Array(r,e,t,n){return new I(m.bytes,r)},string(r,e,t,n){return new I(m.string,r)},boolean(r,e,t,n){return r?on.true:on.false},null(r,e,t,n){return on.null},undefined(r,e,t,n){return on.undefined},ArrayBuffer(r,e,t,n){return new I(m.bytes,new Uint8Array(r))},DataView(r,e,t,n){return new I(m.bytes,new Uint8Array(r.buffer,r.byteOffset,r.byteLength))},Array(r,e,t,n){if(!r.length)return t.addBreakTokens===!0?[on.emptyArray,new I(m.break)]:on.emptyArray;n=Pc.createCheck(n,r);let o=[],s=0;for(let i of r)o[s++]=Lc(i,t,n);return t.addBreakTokens?[new I(m.array,r.length),o,new I(m.break)]:[new I(m.array,r.length),o]},Object(r,e,t,n){let o=e!=="Object",s=o?r.keys():Object.keys(r),i=o?r.size:s.length;if(!i)return t.addBreakTokens===!0?[on.emptyMap,new I(m.break)]:on.emptyMap;n=Pc.createCheck(n,r);let a=[],c=0;for(let l of s)a[c++]=[Lc(l,t,n),Lc(o?r.get(l):r[l],t,n)];return US(a,t),t.addBreakTokens?[new I(m.map,i),a,new I(m.break)]:[new I(m.map,i),a]}};sn.Map=sn.Object;sn.Buffer=sn.Uint8Array;for(let r of"Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64".split(" "))sn[`${r}Array`]=sn.DataView;function Lc(r,e={},t){let n=iw(r),o=e&&e.typeEncoders&&e.typeEncoders[n]||sn[n];if(typeof o=="function"){let i=o(r,n,e,t);if(i!=null)return i}let s=sn[n];if(!s)throw new Error(`${_r} unsupported type: ${n}`);return s(r,n,e,t)}function US(r,e){e.mapSorter&&r.sort(e.mapSorter)}function FS(r,e){let t=Array.isArray(r[0])?r[0][0]:r[0],n=Array.isArray(e[0])?e[0][0]:e[0];if(t.type!==n.type)return t.type.compare(n.type);let o=t.type.major,s=hp[o].compareTokens(t,n);return s===0&&console.warn("WARNING: complex key types used, CBOR key sorting guarantees are gone"),s}function $S(r,e){if(r[0]instanceof I&&e[0]instanceof I){let t=r[0],n=e[0];return t._keyBytes||(t._keyBytes=sb(t.value)),n._keyBytes||(n._keyBytes=sb(n.value)),Ac(t._keyBytes,n._keyBytes)}throw new Error("rfc8949MapSorter: complex key types are not supported yet")}function sb(r){return Dc(r,hp,ib)}function ab(r,e,t,n){if(Array.isArray(e))for(let o of e)ab(r,o,t,n);else t[e.type.major](r,e,n)}function Dc(r,e,t){let n=Lc(r,t);if(!Array.isArray(n)&&t.quickEncodeToken){let o=t.quickEncodeToken(n);if(o)return o;let s=e[n.type.major];if(s.encodedSize){let i=s.encodedSize(n,t),a=new bi(i);if(s(a,n,t),a.chunks.length!==1)throw new Error(`Unexpected error: pre-calculated length for ${n} was wrong`);return wi(a.chunks[0])}}return dp.reset(),ab(dp,n,e,t),dp.toBytes(!0)}function an(r,e){return e=Object.assign({},MS,e),Dc(r,hp,e)}var VS={strict:!1,allowIndefinite:!0,allowUndefined:!0,allowBigInt:!0},Nc=class{constructor(e,t={}){this._pos=0,this.data=e,this.options=t}pos(){return this._pos}done(){return this._pos>=this.data.length}next(){let e=this.data[this._pos],t=Gt[e];if(t===void 0){let n=L[e];if(!n)throw new Error(`${F} no decoder for major type ${e>>>5} (byte 0x${e.toString(16).padStart(2,"0")})`);let o=e&31;t=n(this.data,this._pos,o,this.options)}return this._pos+=t.encodedLength,t}},Ai=Symbol.for("DONE"),Rc=Symbol.for("BREAK");function KS(r,e,t){let n=[];for(let o=0;o<r.value;o++){let s=ts(e,t);if(s===Rc){if(r.value===1/0)break;throw new Error(`${F} got unexpected break to lengthed array`)}if(s===Ai)throw new Error(`${F} found array but not enough entries (got ${o}, expected ${r.value})`);n[o]=s}return n}function HS(r,e,t){let n=t.useMaps===!0,o=n?void 0:{},s=n?new Map:void 0;for(let i=0;i<r.value;i++){let a=ts(e,t);if(a===Rc){if(r.value===1/0)break;throw new Error(`${F} got unexpected break to lengthed map`)}if(a===Ai)throw new Error(`${F} found map but not enough entries (got ${i} [no key], expected ${r.value})`);if(n!==!0&&typeof a!="string")throw new Error(`${F} non-string keys not supported (got ${typeof a})`);if(t.rejectDuplicateMapKeys===!0&&(n&&s.has(a)||!n&&a in o))throw new Error(`${F} found repeat map key "${a}"`);let c=ts(e,t);if(c===Ai)throw new Error(`${F} found map but not enough entries (got ${i} [no value], expected ${r.value})`);n?s.set(a,c):o[a]=c}return n?s:o}function ts(r,e){if(r.done())return Ai;let t=r.next();if(t.type===m.break)return Rc;if(t.type.terminal)return t.value;if(t.type===m.array)return KS(t,r,e);if(t.type===m.map)return HS(t,r,e);if(t.type===m.tag){if(e.tags&&typeof e.tags[t.value]=="function"){let n=ts(r,e);return e.tags[t.value](n)}throw new Error(`${F} tag not supported (${t.value})`)}throw new Error("unsupported")}function pp(r,e){if(!(r instanceof Uint8Array))throw new Error(`${F} data to decode must be a Uint8Array`);e=Object.assign({},VS,e);let t=e.tokenizer||new Nc(r,e),n=ts(t,e);if(n===Ai)throw new Error(`${F} did not find any content to decode`);if(n===Rc)throw new Error(`${F} got unexpected break`);return[n,r.subarray(t.pos())]}function bt(r,e){let[t,n]=pp(r,e);if(n.length>0)throw new Error(`${F} too many terminals, data makes no sense`);return t}var Mc=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},rs=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},Oc=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"},Si=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};function Uc(r){return r[Symbol.asyncIterator]!=null}function cb(r,e){if(r.byteLength>e)throw new rs("Message length too long")}var $c=r=>{let e=Pe(r),t=We(e);return Xr(r,t),$c.bytes=e,t};$c.bytes=0;function Vc(r,e){e=e??{};let t=e.lengthEncoder??$c,n=e?.maxDataLength??4194304;function*o(s){cb(s,n);let i=t(s.byteLength);i instanceof Uint8Array?yield i:yield*i,s instanceof Uint8Array?yield s:yield*s}return Uc(r)?(async function*(){for await(let s of r)yield*o(s)})():(function*(){for(let s of r)yield*o(s)})()}Vc.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??$c,n=e?.maxDataLength??4194304;return cb(r,n),new se(t(r.byteLength),r)};var zn;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(zn||(zn={}));var yp=r=>{let e=Ln(r);return yp.bytes=Pe(e),e};yp.bytes=0;function gp(r,e){let t=new se,n=zn.LENGTH,o=-1,s=e?.lengthDecoder??yp,i=e?.maxLengthLength??8,a=e?.maxDataLength??4194304;function*c(){for(;t.byteLength>0;){if(n===zn.LENGTH)try{if(o=s(t),o<0)throw new Mc("Invalid message length");if(o>a)throw new rs("Message length too long");let l=s.bytes;t.consume(l),e?.onLength!=null&&e.onLength(o),n=zn.DATA}catch(l){if(l instanceof RangeError){if(t.byteLength>i)throw new Oc("Message length length too long");break}throw l}if(n===zn.DATA){if(t.byteLength<o)break;let l=t.sublist(0,o);t.consume(o),e?.onData!=null&&e.onData(l),yield l,n=zn.LENGTH}}}return Uc(r)?(async function*(){for await(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new Si("Unexpected end of input")})():(function*(){for(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new Si("Unexpected end of input")})()}gp.fromReader=(r,e)=>{let t=1,n=(async function*(){for(;;)try{let{done:s,value:i}=await r.next(t);if(s===!0)return;i!=null&&(yield i)}catch(s){if(s.code==="ERR_UNDER_READ")return{done:!0,value:null};throw s}finally{t=1}})();return gp(n,{...e??{},onLength:s=>{t=s}})};function zS(r,e){if(typeof r=="string")return GS(r);if(typeof r=="number")return YS(r,e);throw Error(`Value provided to ms() must be a string or number. value=${JSON.stringify(r)}`)}var Kc=zS;function GS(r){if(typeof r!="string"||r.length===0||r.length>100)throw Error(`Value provided to ms.parse() must be a string with length between 1 and 99. value=${JSON.stringify(r)}`);let e=/^(?<value>-?\d*\.?\d+) *(?<unit>milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|months?|mo|years?|yrs?|y)?$/i.exec(r);if(!e?.groups)return NaN;let{value:t,unit:n="ms"}=e.groups,o=parseFloat(t),s=n.toLowerCase();switch(s){case"years":case"year":case"yrs":case"yr":case"y":return o*315576e5;case"months":case"month":case"mo":return o*26298e5;case"weeks":case"week":case"w":return o*6048e5;case"days":case"day":case"d":return o*864e5;case"hours":case"hour":case"hrs":case"hr":case"h":return o*36e5;case"minutes":case"minute":case"mins":case"min":case"m":return o*6e4;case"seconds":case"second":case"secs":case"sec":case"s":return o*1e3;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return o;default:throw Error(`Unknown unit "${s}" provided to ms.parse(). value=${JSON.stringify(r)}`)}}function WS(r){let e=Math.abs(r);return e>=315576e5?`${Math.round(r/315576e5)}y`:e>=26298e5?`${Math.round(r/26298e5)}mo`:e>=6048e5?`${Math.round(r/6048e5)}w`:e>=864e5?`${Math.round(r/864e5)}d`:e>=36e5?`${Math.round(r/36e5)}h`:e>=6e4?`${Math.round(r/6e4)}m`:e>=1e3?`${Math.round(r/1e3)}s`:`${r}ms`}function jS(r){let e=Math.abs(r);return e>=315576e5?Gn(r,e,315576e5,"year"):e>=26298e5?Gn(r,e,26298e5,"month"):e>=6048e5?Gn(r,e,6048e5,"week"):e>=864e5?Gn(r,e,864e5,"day"):e>=36e5?Gn(r,e,36e5,"hour"):e>=6e4?Gn(r,e,6e4,"minute"):e>=1e3?Gn(r,e,1e3,"second"):`${r} ms`}function YS(r,e){if(typeof r!="number"||!Number.isFinite(r))throw Error("Value provided to ms.format() must be of type number.");return e?.long?jS(r):WS(r)}function Gn(r,e,t,n){let o=e>=t*1.5;return`${Math.round(r/t)} ${n}${o?"s":""}`}function wp(r){t.debug=t,t.default=t,t.coerce=c,t.disable=s,t.enable=o,t.enabled=i,t.humanize=Kc,t.destroy=l,Object.keys(r).forEach(u=>{t[u]=r[u]}),t.names=[],t.skips=[],t.formatters={};function e(u){let f=0;for(let d=0;d<u.length;d++)f=(f<<5)-f+u.charCodeAt(d),f|=0;return t.colors[Math.abs(f)%t.colors.length]}t.selectColor=e;function t(u,f){let d,h=null,p,g;function w(...b){if(!w.enabled)return;let T=w,S=Number(new Date),D=S-(d||S);T.diff=D,T.prev=d,T.curr=S,d=S,b[0]=t.coerce(b[0]),typeof b[0]!="string"&&b.unshift("%O");let K=0;b[0]=b[0].replace(/%([a-zA-Z%])/g,(G,x)=>{if(G==="%%")return"%";K++;let v=t.formatters[x];if(typeof v=="function"){let P=b[K];G=v.call(T,P),b.splice(K,1),K--}return G}),t.formatArgs.call(T,b),f?.onLog!=null&&f.onLog(...b),(T.log||t.log).apply(T,b)}return w.namespace=u,w.useColors=t.useColors(),w.color=t.selectColor(u),w.extend=n,w.destroy=t.destroy,Object.defineProperty(w,"enabled",{enumerable:!0,configurable:!1,get:()=>h!==null?h:(p!==t.namespaces&&(p=t.namespaces,g=t.enabled(u)),g),set:b=>{h=b}}),typeof t.init=="function"&&t.init(w),w}function n(u,f){let d=t(this.namespace+(typeof f>"u"?":":f)+u);return d.log=this.log,d}function o(u){t.save(u),t.namespaces=u,t.names=[],t.skips=[];let f,d=(typeof u=="string"?u:"").split(/[\s,]+/),h=d.length;for(f=0;f<h;f++)d[f]&&(u=d[f].replace(/\*/g,".*?"),u[0]==="-"?t.skips.push(new RegExp("^"+u.substr(1)+"$")):t.names.push(new RegExp("^"+u+"$")))}function s(){let u=[...t.names.map(a),...t.skips.map(a).map(f=>"-"+f)].join(",");return t.enable(""),u}function i(u){if(u[u.length-1]==="*")return!0;let f,d;for(f=0,d=t.skips.length;f<d;f++)if(t.skips[f].test(u))return!1;for(f=0,d=t.names.length;f<d;f++)if(t.names[f].test(u))return!0;return!1}function a(u){return u.toString().substring(2,u.toString().length-2).replace(/\.\*\?$/,"*")}function c(u){return u instanceof Error?u.stack??u.message:u}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return t.setupFormatters(t.formatters),t.enable(t.load()),t}var Hc=rI(),ZS=["#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"];function XS(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/(edge|trident)\/(\d+)/)!=null?!1:typeof document<"u"&&document.documentElement?.style?.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/firefox\/(\d+)/)!=null&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/applewebkit\/(\d+)/)}function JS(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+Kc(this.diff),!this.useColors)return;let e="color: "+this.color;r.splice(1,0,e,"color: inherit");let t=0,n=0;r[0].replace(/%[a-zA-Z%]/g,o=>{o!=="%%"&&(t++,o==="%c"&&(n=t))}),r.splice(n,0,e)}var QS=console.debug??console.log??(()=>{});function eI(r){try{r?Hc?.setItem("debug",r):Hc?.removeItem("debug")}catch{}}function tI(){let r;try{r=Hc?.getItem("debug")}catch{}return!r&&typeof globalThis.process<"u"&&"env"in globalThis.process&&(r=globalThis.process.env.DEBUG),r}function rI(){try{return localStorage}catch{}}function nI(r){r.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}}var lb=wp({formatArgs:JS,save:eI,load:tI,useColors:XS,setupFormatters:nI,colors:ZS,storage:Hc,log:QS});var ct=lb;ct.formatters.b=r=>r==null?"undefined":le.baseEncode(r);ct.formatters.t=r=>r==null?"undefined":Te.baseEncode(r);ct.formatters.m=r=>r==null?"undefined":je.baseEncode(r);ct.formatters.p=r=>r==null?"undefined":r.toString();ct.formatters.c=r=>r==null?"undefined":r.toString();ct.formatters.k=r=>r==null?"undefined":r.toString();ct.formatters.a=r=>r==null?"undefined":r.toString();function ub(r,e=""){let t=fb(r.message),n=fb(r.stack);return t!=null&&n!=null?n.includes(t)?`${n.split(`
4
4
  `).join(`
5
5
  ${e}`)}`:`${t}
6
6
  ${e}${n.split(`
7
7
  `).join(`
8
8
  ${e}`)}`:n!=null?`${n.split(`
9
9
  `).join(`
10
- ${e}`)}`:t!=null?`${t}`:`${r.toString()}`}function tI(r){return r instanceof AggregateError||r?.name==="AggregateError"&&Array.isArray(r.errors)}function ub(r,e=""){if(tI(r)){let t=cb(r,e);return r.errors.length>0?(e=`${e} `,t+=`
11
- ${e}${r.errors.map(n=>`${ub(n,`${e}`)}`).join(`
10
+ ${e}`)}`:t!=null?`${t}`:`${r.toString()}`}function oI(r){return r instanceof AggregateError||r?.name==="AggregateError"&&Array.isArray(r.errors)}function db(r,e=""){if(oI(r)){let t=ub(r,e);return r.errors.length>0?(e=`${e} `,t+=`
11
+ ${e}${r.errors.map(n=>`${db(n,`${e}`)}`).join(`
12
12
  ${e}`)}`):t+=`
13
- ${e}[Error list was empty]`,t.trim()}return cb(r,e)}lt.formatters.e=r=>r==null?"undefined":ub(r);function rI(r){let e=()=>{};return e.enabled=!1,e.color="",e.diff=0,e.log=()=>{},e.namespace=r,e.destroy=()=>!0,e.extend=()=>e,e}function fr(r){return{forComponent(e){return Ct(e,r)}}}function Ct(r,e){let t=rI(`${r}:trace`);return lt.enabled(`${r}:trace`)&&lt.names.map(n=>n.toString()).find(n=>n.includes(":trace"))!=null&&(t=lt(`${r}:trace`,e)),Object.assign(lt(r,e),{error:lt(`${r}:error`,e),trace:t,newScope:n=>Ct(`${r}:${n}`,e)})}function lb(r){if(r!=null&&(r=r.trim(),r.length!==0))return r}var ns=class extends qt{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};var qc=class extends qt{constructor(e={}){super({...e,sort:(t,n)=>t.options.priority>n.options.priority?-1:t.options.priority<n.options.priority?1:0})}};var zc=class{memoryStorage;points;duration;blockDuration;keyPrefix;constructor(e={}){this.points=e.points??4,this.duration=e.duration??1,this.blockDuration=e.blockDuration??0,this.keyPrefix=e.keyPrefix??"rlflx",this.memoryStorage=new wp}consume(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,t,s);if(i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i.consumedPoints>this.points)throw this.blockDuration>0&&i.consumedPoints<=this.points+t&&(i=this.memoryStorage.set(o,i.consumedPoints,this.blockDuration)),new ac("Rate limit exceeded",i);return i}penalty(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,t,s);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}reward(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,-t,s);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}block(e,t){let n=t*1e3,o=this.points+1;return this.memoryStorage.set(this.getKey(e),o,t),{remainingPoints:0,msBeforeNext:n===0?-1:n,consumedPoints:o,isFirstInDuration:!1}}set(e,t,n=0){let o=(n>=0?n:this.duration)*1e3;return this.memoryStorage.set(this.getKey(e),t,n),{remainingPoints:0,msBeforeNext:o===0?-1:o,consumedPoints:t,isFirstInDuration:!1}}get(e){let t=this.memoryStorage.get(this.getKey(e));return t!=null&&(t.remainingPoints=Math.max(this.points-t.consumedPoints,0)),t}delete(e){this.memoryStorage.delete(this.getKey(e))}_getKeySecDuration(e){return e?.customDuration!=null&&e.customDuration>=0?e.customDuration:this.duration}getKey(e){return this.keyPrefix.length>0?`${this.keyPrefix}:${e}`:e}parseKey(e){return e.substring(this.keyPrefix.length)}},wp=class{storage;constructor(){this.storage=new Map}incrby(e,t,n){let o=this.storage.get(e);if(o!=null){let s=o.expiresAt!=null?o.expiresAt.getTime()-new Date().getTime():-1;return o.expiresAt==null||s>0?(o.value+=t,{remainingPoints:0,msBeforeNext:s,consumedPoints:o.value,isFirstInDuration:!1}):this.set(e,t,n)}return this.set(e,t,n)}set(e,t,n){let o=n*1e3,s=this.storage.get(e);s!=null&&clearTimeout(s.timeoutId);let i={value:t,expiresAt:o>0?new Date(Date.now()+o):void 0};return this.storage.set(e,i),o>0&&(i.timeoutId=setTimeout(()=>{this.storage.delete(e)},o),i.timeoutId.unref!=null&&i.timeoutId.unref()),{remainingPoints:0,msBeforeNext:o===0?-1:o,consumedPoints:i.value,isFirstInDuration:!0}}get(e){let t=this.storage.get(e);if(t!=null)return{remainingPoints:0,msBeforeNext:t.expiresAt!=null?t.expiresAt.getTime()-new Date().getTime():-1,consumedPoints:t.value,isFirstInDuration:!1}}delete(e){let t=this.storage.get(e);return t!=null?(t.timeoutId!=null&&clearTimeout(t.timeoutId),this.storage.delete(e),!0):!1}};var bp=class extends Map{metric;constructor(e){super();let{name:t,metrics:n}=e;this.metric=n.registerMetric(t),this.updateComponentMetric()}set(e,t){return super.set(e,t),this.updateComponentMetric(),this}delete(e){let t=super.delete(e);return this.updateComponentMetric(),t}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function Je(r){let{name:e,metrics:t}=r,n;return t!=null?n=new bp({name:e,metrics:t}):n=new Map,n}function nI(r){return r[Symbol.asyncIterator]!=null}function oI(r){if(nI(r))return(async()=>{for await(let e of r);})();for(let e of r);}var Ii=oI;function sI(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:o=>{n.push(o)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var os=sI;function iI(r){return r[Symbol.asyncIterator]!=null}function aI(r,e){let t=0;if(iI(r))return(async function*(){for await(let c of r)yield e(c,t++)})();let n=os(r),{value:o,done:s}=n.next();if(s===!0)return(function*(){})();let i=e(o,t++);if(typeof i.then=="function")return(async function*(){yield await i;for(let c of n)yield e(c,t++)})();let a=e;return(function*(){yield i;for(let c of n)yield a(c,t++)})()}var Gc=aI;function cI(r){return r[Symbol.asyncIterator]!=null}function lI(r,e){return cI(r)?(async function*(){let t=0;if(!(e<1)){for await(let n of r)if(yield n,t++,t===e)return}})():(function*(){let t=0;if(!(e<1)){for(let n of r)if(yield n,t++,t===e)return}})()}var Wc=lI;var vt=class extends Error{static name="AbortError";name="AbortError";constructor(e="The operation was aborted",...t){super(e,...t)}};async function jc(r,e,t,n){let o=new vt(n?.errorMessage);n?.errorCode!=null&&(o.code=n.errorCode);let s=n?.errorEvent??"error";return t?.aborted===!0?Promise.reject(o):new Promise((i,a)=>{function c(){vp(t,"abort",f),vp(r,e,l),vp(r,s,u)}let l=d=>{try{if(n?.filter?.(d)===!1)return}catch(h){c(),a(h);return}c(),i(d)},u=d=>{if(c(),d instanceof Error){a(d);return}a(d.detail??n?.error??new Error(`The "${n?.errorEvent}" event was emitted but the event had no '.detail' field. Pass an 'error' option to race-event to change this message.`))},f=()=>{c(),a(o)};xp(t,"abort",f),xp(r,e,l),xp(r,s,u)})}function xp(r,e,t){r!=null&&(fb(r)?r.addEventListener(e,t):r.addListener(e,t))}function vp(r,e,t){r!=null&&(fb(r)?r.removeEventListener(e,t):r.removeListener(e,t))}function fb(r){return typeof r.addEventListener=="function"&&typeof r.removeEventListener=="function"}var db=Symbol.for("nodejs.util.inspect.custom"),uI=114,ki=class{type;multihash;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[Ta]=!0;toString(){return this.string==null&&(this.string=le.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return H.createV1(uI,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return X(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return X(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[db](){return`PeerId(${this.toString()})`}},_i=class extends ki{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},Ci=class extends ki{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}},Ti=class extends ki{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}},fI=2336,Bi=class{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=Ge.digest(B(this.url))}[db](){return`PeerId(${this.url})`}[Ta]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return H.createV1(fI,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=M(e)),e.toString()===this.toString())}};var dI=114,hb=2336;function Tt(r,e){let t;if(r.charAt(0)==="1"||r.charAt(0)==="Q")t=ht(le.decode(`z${r}`));else{if(r.startsWith("k51qzi5uqu5")||r.startsWith("kzwfwjn5ji4")||r.startsWith("k2k4r8")||r.startsWith("bafz"))return Wn(H.parse(r));if(e==null)throw new k('Please pass a multibase decoder for strings that do not start with "1" or "Q"');t=ht(e.decode(r))}return ss(t)}function Ep(r){if(r.type==="Ed25519")return new Ci({multihash:r.toCID().multihash,publicKey:r});if(r.type==="secp256k1")return new Ti({multihash:r.toCID().multihash,publicKey:r});if(r.type==="RSA")return new _i({multihash:r.toCID().multihash,publicKey:r});throw new Dt}function pb(r){return Ep(r.publicKey)}function ss(r){if(pI(r))return new _i({multihash:r});if(hI(r))try{let e=Qa(r);if(e.type==="Ed25519")return new Ci({multihash:r,publicKey:e});if(e.type==="secp256k1")return new Ti({multihash:r,publicKey:e})}catch{let t=M(r.digest);return new Bi(new URL(t))}throw new Vr("Supplied PeerID Multihash is invalid")}function Wn(r){if(r?.multihash==null||r.version==null||r.version===1&&r.code!==dI&&r.code!==hb)throw new Ea("Supplied PeerID CID is invalid");if(r.code===hb){let e=M(r.multihash.digest);return new Bi(new URL(e))}return ss(r.multihash)}function hI(r){return r.code===Ge.code}function pI(r){return r.code===Rt.code}function jn(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let n=r.next(),o=n.value;return n.done===!0||o==null?{done:!0,value:void 0}:{done:!1,value:e(o)}}};return t}function Yc(r){let e=ht(le.decode(`z${r}`));return ss(e)}var Bt=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),{key:t,value:n})}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return jn(this.map.entries(),e=>[e[1].key,e[1].value])}forEach(e){this.map.forEach((t,n)=>{e(t.value,t.key,this)})}get(e){return this.map.get(e.toString())?.value}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),{key:e,value:t})}keys(){return jn(this.map.values(),e=>e.key)}values(){return jn(this.map.values(),e=>e.value)}get size(){return this.map.size}};var Yn=class r{set;constructor(e){if(this.set=new Set,e!=null)for(let t of e)this.set.add(t.toString())}get size(){return this.set.size}[Symbol.iterator](){return this.values()}add(e){this.set.add(e.toString())}clear(){this.set.clear()}delete(e){this.set.delete(e.toString())}entries(){return jn(this.set.entries(),e=>{let t=Yc(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let n=Yc(t);e(n,n,this)})}has(e){return this.set.has(e.toString())}values(){return jn(this.set.values(),e=>Yc(e))}intersection(e){let t=new r;for(let n of e)this.has(n)&&t.add(n);return t}difference(e){let t=new r;for(let n of this)e.has(n)||t.add(n);return t}union(e){let t=new r;for(let n of e)t.add(n);for(let n of this)t.add(n);return t}};var Ap=class extends Bt{metric;constructor(e){super();let{name:t,metrics:n}=e;this.metric=n.registerMetric(t),this.updateComponentMetric()}set(e,t){return super.set(e,t),this.updateComponentMetric(),this}delete(e){let t=super.delete(e);return this.updateComponentMetric(),t}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function Sp(r){let{name:e,metrics:t}=r,n;return t!=null?n=new Ap({name:e,metrics:t}):n=new Bt,n}function mI(r){return r[Symbol.asyncIterator]!=null}function gI(r){if(mI(r))return(async()=>{let n=new Uint8Array(0);for await(let o of r)n=Ce([n,o],n.length+o.length);return n})();let e=[],t=0;for(let n of r)e.push(n),t+=n.byteLength;return Ce(e,t)}var mb=gI;var Zc=class extends AggregateError{static name="DNSQueryFailedError";name="DNSQueryFailedError"};var kp=pn(yb(),1);var _p=class r extends Error{name="TimeoutError";constructor(e,t){super(e,t),Error.captureStackTrace?.(this,r)}},wb=r=>r.reason??new DOMException("This operation was aborted.","AbortError");function Cp(r,e){let{milliseconds:t,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout},signal:i}=e,a,c,u=new Promise((f,d)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(i?.aborted){d(wb(i));return}if(i&&(c=()=>{d(wb(i))},i.addEventListener("abort",c,{once:!0})),r.then(f,d),t===Number.POSITIVE_INFINITY)return;let h=new _p;a=s.setTimeout.call(void 0,()=>{if(n){try{f(n())}catch(p){d(p)}return}typeof r.cancel=="function"&&r.cancel(),o===!1?f():o instanceof Error?d(o):(h.message=o??`Promise timed out after ${t} milliseconds`,d(h))},t)}).finally(()=>{u.clear(),c&&i&&i.removeEventListener("abort",c)});return u.clear=()=>{s.clearTimeout.call(void 0,a),a=void 0},u}function Tp(r,e,t){let n=0,o=r.length;for(;o>0;){let s=Math.trunc(o/2),i=n+s;t(r[i],e)<=0?(n=++i,o-=s+1):o=s}return n}var Pi=class{#e=[];enqueue(e,t){let{priority:n=0,id:o}=t??{},s={priority:n,id:o,run:e};if(this.size===0||this.#e[this.size-1].priority>=n){this.#e.push(s);return}let i=Tp(this.#e,s,(a,c)=>c.priority-a.priority);this.#e.splice(i,0,s)}setPriority(e,t){let n=this.#e.findIndex(s=>s.id===e);if(n===-1)throw new ReferenceError(`No promise function with the id "${e}" exists in the queue.`);let[o]=this.#e.splice(n,1);this.enqueue(o.run,{priority:t,id:e})}dequeue(){return this.#e.shift()?.run}filter(e){return this.#e.filter(t=>t.priority===e.priority).map(t=>t.run)}get size(){return this.#e.length}};var Zn=class extends kp.default{#e;#t;#r=0;#i;#s=!1;#f=!1;#d;#b=0;#g=0;#a;#c;#n;#x;#o=0;#h;#l;#k=1n;#p=new Map;timeout;constructor(e){if(super(),e={carryoverIntervalCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:Pi,...e},!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${e.intervalCap?.toString()??""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${e.interval?.toString()??""}\` (${typeof e.interval})`);if(this.#e=e.carryoverIntervalCount??e.carryoverConcurrencyCount??!1,this.#t=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#i=e.intervalCap,this.#d=e.interval,this.#n=new e.queueClass,this.#x=e.queueClass,this.concurrency=e.concurrency,e.timeout!==void 0&&!(Number.isFinite(e.timeout)&&e.timeout>0))throw new TypeError(`Expected \`timeout\` to be a positive finite number, got \`${e.timeout}\` (${typeof e.timeout})`);this.timeout=e.timeout,this.#l=e.autoStart===!1,this.#D()}get#_(){return this.#t||this.#r<this.#i}get#C(){return this.#o<this.#h}#T(){this.#o--,this.#o===0&&this.emit("pendingZero"),this.#y(),this.emit("next")}#B(){this.#S(),this.#A(),this.#c=void 0}get#L(){let e=Date.now();if(this.#a===void 0){let t=this.#b-e;if(t<0){if(this.#g>0){let n=e-this.#g;if(n<this.#d)return this.#v(this.#d-n),!0}this.#r=this.#e?this.#o:0}else return this.#v(t),!0}return!1}#v(e){this.#c===void 0&&(this.#c=setTimeout(()=>{this.#B()},e))}#E(){this.#a&&(clearInterval(this.#a),this.#a=void 0)}#P(){this.#c&&(clearTimeout(this.#c),this.#c=void 0)}#y(){if(this.#n.size===0)return this.#E(),this.emit("empty"),this.#o===0&&(this.#P(),this.emit("idle")),!1;let e=!1;if(!this.#l){let t=!this.#L;if(this.#_&&this.#C){let n=this.#n.dequeue();this.#t||(this.#r++,this.#m()),this.emit("active"),this.#g=Date.now(),n(),t&&this.#A(),e=!0}}return e}#A(){this.#t||this.#a!==void 0||(this.#a=setInterval(()=>{this.#S()},this.#d),this.#b=Date.now()+this.#d)}#S(){this.#r===0&&this.#o===0&&this.#a&&this.#E(),this.#r=this.#e?this.#o:0,this.#w(),this.#m()}#w(){for(;this.#y(););}get concurrency(){return this.#h}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this.#h=e,this.#w()}setPriority(e,t){if(typeof t!="number"||!Number.isFinite(t))throw new TypeError(`Expected \`priority\` to be a finite number, got \`${t}\` (${typeof t})`);this.#n.setPriority(e,t)}async add(e,t={}){return t.id??=(this.#k++).toString(),t={timeout:this.timeout,...t},new Promise((n,o)=>{let s=Symbol(`task-${t.id}`);this.#n.enqueue(async()=>{this.#o++,this.#p.set(s,{id:t.id,priority:t.priority??0,startTime:Date.now(),timeout:t.timeout});let i;try{try{t.signal?.throwIfAborted()}catch(l){throw this.#t||this.#r--,this.#p.delete(s),l}let a=e({signal:t.signal});if(t.timeout&&(a=Cp(Promise.resolve(a),{milliseconds:t.timeout,message:`Task timed out after ${t.timeout}ms (queue has ${this.#o} running, ${this.#n.size} waiting)`})),t.signal){let{signal:l}=t;a=Promise.race([a,new Promise((u,f)=>{i=()=>{f(l.reason)},l.addEventListener("abort",i,{once:!0})})])}let c=await a;n(c),this.emit("completed",c)}catch(a){o(a),this.emit("error",a)}finally{i&&t.signal?.removeEventListener("abort",i),this.#p.delete(s),queueMicrotask(()=>{this.#T()})}},t),this.emit("add"),this.#y()})}async addAll(e,t){return Promise.all(e.map(async n=>this.add(n,t)))}start(){return this.#l?(this.#l=!1,this.#w(),this):this}pause(){this.#l=!0}clear(){this.#n=new this.#x,this.#I()}async onEmpty(){this.#n.size!==0&&await this.#u("empty")}async onSizeLessThan(e){this.#n.size<e||await this.#u("next",()=>this.#n.size<e)}async onIdle(){this.#o===0&&this.#n.size===0||await this.#u("idle")}async onPendingZero(){this.#o!==0&&await this.#u("pendingZero")}async onRateLimit(){this.isRateLimited||await this.#u("rateLimit")}async onRateLimitCleared(){this.isRateLimited&&await this.#u("rateLimitCleared")}async onError(){return new Promise((e,t)=>{let n=o=>{this.off("error",n),t(o)};this.on("error",n)})}async#u(e,t){return new Promise(n=>{let o=()=>{t&&!t()||(this.off(e,o),n())};this.on(e,o)})}get size(){return this.#n.size}sizeBy(e){return this.#n.filter(e).length}get pending(){return this.#o}get isPaused(){return this.#l}#D(){this.#t||(this.on("add",()=>{this.#n.size>0&&this.#m()}),this.on("next",()=>{this.#m()}))}#m(){this.#t||this.#f||(this.#f=!0,queueMicrotask(()=>{this.#f=!1,this.#I()}))}#I(){let e=this.#s,t=!this.#t&&this.#r>=this.#i&&this.#n.size>0;t!==e&&(this.#s=t,this.emit(t?"rateLimit":"rateLimitCleared"))}get isRateLimited(){return this.#s}get isSaturated(){return this.#o===this.#h&&this.#n.size>0||this.isRateLimited&&this.#n.size>0}get runningTasks(){return[...this.#p.values()].map(e=>({...e}))}};function Jc(r){let e=[Et.A];return r==null?e:Array.isArray(r)?r.length===0?e:r:[r]}var Bp=60;function Qc(r){return{Status:r.Status??0,TC:r.TC??r.flag_tc??!1,RD:r.RD??r.flag_rd??!1,RA:r.RA??r.flag_ra??!1,AD:r.AD??r.flag_ad??!1,CD:r.CD??r.flag_cd??!1,Question:(r.Question??r.questions??[]).map(e=>({name:e.name,type:Et[e.type]})),Answer:(r.Answer??r.answers??[]).map(e=>({name:e.name,type:Et[e.type],TTL:e.TTL??e.ttl??Bp,data:e.data instanceof Uint8Array?M(e.data):e.data}))}}var bI=4;function Lp(r,e={}){let t=new Zn({concurrency:e.queryConcurrency??bI});return async(n,o={})=>{let s=new URLSearchParams;s.set("name",n),Jc(o.types).forEach(a=>{s.append("type",Et[a])}),o.onProgress?.(new W("dns:query",n));let i=await t.add(async()=>{let a=await fetch(`${r}?${s}`,{headers:{accept:"application/dns-json"},signal:o?.signal});if(a.status!==200)throw new Error(`Unexpected HTTP status: ${a.status} - ${a.statusText}`);let c=Qc(await a.json());return o.onProgress?.(new W("dns:response",c)),c},{signal:o.signal});if(i==null)throw new Error("No DNS response received");return i}}function bb(){return[Lp("https://cloudflare-dns.com/dns-query"),Lp("https://dns.google/resolve")]}var Eb=pn(vb(),1);var Pp=class{lru;constructor(e){this.lru=(0,Eb.default)(e)}get(e,t){let n=!0,o=[];for(let s of t){let i=this.getAnswers(e,s);if(i.length===0){n=!1;break}o.push(...i)}if(n)return Qc({answers:o})}getAnswers(e,t){let n=`${e.toLowerCase()}-${t}`,o=this.lru.get(n);if(o!=null){let s=o.filter(i=>i.expires>Date.now()).map(({expires:i,value:a})=>({...a,TTL:Math.round((i-Date.now())/1e3),type:Et[a.type]}));return s.length===0&&this.lru.remove(n),s}return[]}add(e,t){let n=`${e.toLowerCase()}-${t.type}`,o=this.lru.get(n)??[];o.push({expires:Date.now()+(t.TTL??Bp)*1e3,value:t}),this.lru.set(n,o)}remove(e,t){let n=`${e.toLowerCase()}-${t}`;this.lru.remove(n)}clear(){this.lru.clear()}};function Ab(r){return new Pp(r)}var xI=1e3,el=class{resolvers;cache;constructor(e){this.resolvers={},this.cache=Ab(e.cacheSize??xI),Object.entries(e.resolvers??{}).forEach(([t,n])=>{Array.isArray(n)||(n=[n]),t.endsWith(".")||(t=`${t}.`),this.resolvers[t]=n}),this.resolvers["."]==null&&(this.resolvers["."]=bb())}async query(e,t={}){let n=Jc(t.types),o=t.cached!==!1?this.cache.get(e,n):void 0;if(o!=null)return t.onProgress?.(new W("dns:cache",o)),o;let s=`${e.split(".").pop()}.`,i=(this.resolvers[s]??this.resolvers["."]).sort(()=>Math.random()>.5?-1:1),a=[];for(let c of i){if(t.signal?.aborted===!0)break;try{let l=await c(e,{...t,types:n});for(let u of l.Answer)this.cache.add(e,u);return l}catch(l){a.push(l),t.onProgress?.(new W("dns:error",l))}}throw new Zc(a,`DNS lookup of ${e} ${n} failed`)}};var Et;(function(r){r[r.A=1]="A",r[r.CNAME=5]="CNAME",r[r.TXT=16]="TXT",r[r.AAAA=28]="AAAA"})(Et||(Et={}));function tl(r={}){return new el(r)}var Tr="/",Sb=new TextEncoder().encode(Tr),rl=Sb[0],ge=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=B(e);else if(e instanceof Uint8Array)this._buf=e;else throw new Error("Invalid key, should be String of Uint8Array");if(t==null&&(t=!0),t&&this.clean(),this._buf.byteLength===0||this._buf[0]!==rl)throw new Error("Invalid key")}toString(e="utf8"){return M(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join(Tr))}static random(){return new r(Math.random().toString().substring(2))}static asKey(e){return e instanceof Uint8Array||typeof e=="string"?new r(e):typeof e.uint8Array=="function"?new r(e.uint8Array()):null}clean(){if((this._buf==null||this._buf.byteLength===0)&&(this._buf=Sb),this._buf[0]!==rl){let e=new Uint8Array(this._buf.byteLength+1);e.fill(rl,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===rl;)this._buf=this._buf.subarray(0,-1)}less(e){let t=this.list(),n=e.list();for(let o=0;o<t.length;o++){if(n.length<o+1)return!1;let s=t[o],i=n[o];if(s<i)return!0;if(s>i)return!1}return t.length<n.length}reverse(){return r.withNamespaces(this.list().slice().reverse())}namespaces(){return this.list()}baseNamespace(){let e=this.namespaces();return e[e.length-1]}list(){return this.toString().split(Tr).slice(1)}type(){return vI(this.baseNamespace())}name(){return EI(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith(Tr)||(e+=Tr),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r(Tr):new r(e.slice(0,-1).join(Tr))}child(e){return this.toString()===Tr?e:e.toString()===Tr?this:new r(this.toString()+e.toString(),!1)}isAncestorOf(e){return e.toString()===this.toString()?!1:e.toString().startsWith(this.toString())}isDecendantOf(e){return e.toString()===this.toString()?!1:this.toString().startsWith(e.toString())}isTopLevel(){return this.list().length===1}concat(...e){return r.withNamespaces([...this.namespaces(),...AI(e.map(t=>t.namespaces()))])}};function vI(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function EI(r){let e=r.split(":");return e[e.length-1]}function AI(r){return[].concat(...r)}function nl({enumerable:r=!0,configurable:e=!1}={}){return{enumerable:r,configurable:e,writable:!1}}function*SI(r,e){if(e!=null&&typeof e=="object")if(Array.isArray(e))for(let[t,n]of e.entries()){let o=[...r,t],s=H.asCID(n);s!=null?yield[o.join("/"),s]:typeof n=="object"&&(yield*Dp(n,o))}else{let t=H.asCID(e);t!=null?yield[r.join("/"),t]:yield*Dp(e,r)}}function*Dp(r,e){if(r==null||r instanceof Uint8Array)return;let t=H.asCID(r);t!=null&&(yield[e.join("/"),t]);for(let[n,o]of Object.entries(r)){let s=[...e,n];yield*SI(s,o)}}function*II(r,e){if(Array.isArray(e))for(let[t,n]of e.entries()){let o=[...r,t];yield o.join("/"),typeof n=="object"&&H.asCID(n)==null&&(yield*Np(n,o))}else yield*Np(e,r)}function*Np(r,e){if(!(r==null||typeof r!="object"))for(let[t,n]of Object.entries(r)){let o=[...e,t];yield o.join("/"),n!=null&&!(n instanceof Uint8Array)&&typeof n=="object"&&H.asCID(n)==null&&(yield*II(o,n))}}function kI(r,e){let t=r;for(let[n,o]of e.entries()){if(t=t[o],t==null)throw new Error(`Object has no property at ${e.slice(0,n+1).map(i=>`[${JSON.stringify(i)}]`).join("")}`);let s=H.asCID(t);if(s!=null)return{value:s,remaining:e.slice(n+1).join("/")}}return{value:t}}var Rp=class{cid;bytes;value;asBlock;constructor({cid:e,bytes:t,value:n}){if(e==null||t==null||typeof n>"u")throw new Error("Missing required argument");this.cid=e,this.bytes=t,this.value=n,this.asBlock=this,Object.defineProperties(this,{cid:nl(),bytes:nl(),value:nl(),asBlock:nl()})}links(){return Dp(this.value,[])}tree(){return Np(this.value,[])}get(e="/"){return kI(this.value,e.split("/").filter(Boolean))}};function Ib({bytes:r,cid:e,value:t,codec:n}){let o=t!==void 0?t:n?.decode(r);if(o===void 0)throw new Error('Missing required argument, must either provide "value" or "codec"');return new Rp({cid:e,bytes:r,value:o})}var ol=class extends Error{static name="AlreadyPinnedError";name="AlreadyPinnedError"},Di=class extends Error{static name="BlockPinnedError";name="BlockPinnedError"},sl=class extends Error{static name="InvalidDatastoreVersionError";name="InvalidDatastoreVersionError"},il=class extends Error{static name="InvalidConfigurationError";name="InvalidConfigurationError"},al=class extends AggregateError{static name="GetFailedError";name="GetFailedError"},cl=class extends AggregateError{static name="LoadBlockFailedError";name="LoadBlockFailedError"},Ni=class extends Error{static name="BlockNotFoundWhileOfflineError";name="BlockNotFoundWhileOfflineError"};var Cb="/pin/",kb="/pinned-block/",Mp=or,_b=1;function ll(r){return r.version===0&&(r=r.toV1()),new ge(`${Cb}${r.toString(Mp)}`)}var ul=class{datastore;blockstore;getCodec;constructor(e,t,n){this.datastore=e,this.blockstore=t,this.getCodec=n}async*add(e,t={}){let n=ll(e);if(await this.datastore.has(n))throw new ol("Already pinned");let o=Math.round(t.depth??1/0);if(o<0)throw new k("Depth must be greater than or equal to 0");let s=new qt({concurrency:_b});for await(let a of this.#e(e,s,{...t,depth:o}))await this.#t(a,c=>c.pinnedBy.find(l=>X(l,e.bytes))!=null?!1:(c.pinCount++,c.pinnedBy.push(e.bytes),!0),t),yield a;let i={depth:o,metadata:t.metadata??{}};await this.datastore.put(n,an(i),t)}async*#e(e,t,n){if(n.depth===-1)return;let o=await this.getCodec(e.code),s=await mb(this.blockstore.get(e,n)),i=Ib({bytes:s,cid:e,codec:o});yield e;for(let[,a]of i.links())yield*await t.add(async()=>this.#e(a,t,{...n,depth:n.depth-1}))}async#t(e,t,n){let o=new ge(`${kb}${Mp.encode(e.multihash.bytes)}`),s={pinCount:0,pinnedBy:[]};try{s=xt(await this.datastore.get(o,n))}catch(a){if(a.name!=="NotFoundError")throw a}if(t(s)){if(s.pinCount===0&&await this.datastore.has(o)){await this.datastore.delete(o);return}await this.datastore.put(o,an(s),n),n.onProgress?.(new W("helia:pin:add",e))}}async*rm(e,t={}){let n=ll(e),o=await this.datastore.get(n,t),s=xt(o);await this.datastore.delete(n,t);let i=new qt({concurrency:_b});for await(let a of this.#e(e,i,{...t,depth:s.depth}))await this.#t(a,c=>(c.pinCount--,c.pinnedBy=c.pinnedBy.filter(l=>X(l,e.bytes)),!0),{...t,depth:s.depth}),yield a}async*ls(e={}){for await(let{key:t,value:n}of this.datastore.query({prefix:Cb+(e.cid!=null?`${e.cid.toString(or)}`:"")},e)){let o=H.parse(t.toString().substring(5),or),s=xt(n);yield{cid:o,...s}}}async isPinned(e,t={}){let n=new ge(`${kb}${Mp.encode(e.multihash.bytes)}`);return this.datastore.has(n,t)}async get(e,t){let n=ll(e),o=await this.datastore.get(n,t);return xt(o)}async setMetadata(e,t,n){let o=ll(e),s=await this.datastore.get(o,n),i=xt(s);i.metadata=t??{},await this.datastore.put(o,an(i),n)}};var Op=1,Up=5;var Ri=class extends Error{static name="InsufficientProvidersError";constructor(e="Insufficient providers found"){super(e),this.name="InsufficientProvidersError"}},cn=class extends Error{static name="NoRoutersAvailableError";constructor(e="No routers available"){super(e),this.name="NoRoutersAvailableError"}},Mi=class extends Error{static name="UnknownHashAlgorithmError";constructor(e="Unknown hash algorithm"){super(e),this.name="UnknownHashAlgorithmError"}},Oi=class extends Error{static name="UnknownCodecError";constructor(e="Unknown codec"){super(e),this.name="UnknownCodecError"}},Fp=class extends Error{static name="InvalidCodecError";constructor(e="Invalid codec"){super(e),this.name="InvalidCodecError"}};var _I=5,fl=class{log;routers;providerLookupConcurrency;constructor(e,t){this.log=e.logger.forComponent("helia:routing"),this.routers=t.routers??[],this.providerLookupConcurrency=t.providerLookupConcurrency??_I,this.findProviders=e.metrics?.traceFunction("helia.routing.findProviders",this.findProviders.bind(this),{optionsIndex:1})??this.findProviders,this.provide=e.metrics?.traceFunction("helia.routing.provide",this.provide.bind(this),{optionsIndex:1})??this.provide,this.cancelReprovide=e.metrics?.traceFunction("helia.routing.cancelReprovide",this.cancelReprovide.bind(this),{optionsIndex:1})??this.cancelReprovide,this.put=e.metrics?.traceFunction("helia.routing.put",this.put.bind(this),{optionsIndex:2})??this.put,this.get=e.metrics?.traceFunction("helia.routing.get",this.get.bind(this),{optionsIndex:1})??this.get,this.findPeer=e.metrics?.traceFunction("helia.routing.findPeer",this.findPeer.bind(this),{optionsIndex:1})??this.findPeer,this.getClosestPeers=e.metrics?.traceFunction("helia.routing.getClosestPeers",this.getClosestPeers.bind(this),{optionsIndex:1})??this.getClosestPeers}async start(){await rr(...this.routers)}async stop(){await nr(...this.routers)}async*findProviders(e,t={}){if(this.routers.length===0)throw new cn("No content routers available");let n=new ns({concurrency:this.providerLookupConcurrency}),o=0,s=[],i=this,a=0;this.log("findProviders for %c start using routers %s",e,this.routers.map(l=>l.toString()).join(", "));let c=Xn(this.routers,"findProviders").map(async function*(l){let u=0;try{for await(let f of l.findProviders(e,t))u++,yield f}catch(f){s.push(f)}finally{i.log("router %s found %d providers for %c",l,u,e),a++,a===c.length&&n.size===0&&n.emitIdle()}});for await(let l of It(n.toGenerator(),...c))if(l!=null){if(l.multiaddrs.length===0){if(n.find(l.id)!=null)continue;n.add(async()=>{try{let u=await this.findPeer(l.id,t);return u.multiaddrs.length===0?null:{...u,protocols:l.protocols,routing:l.routing}}catch(u){return this.log.error("could not load multiaddrs for peer %p - %e",l.id,u),null}},{peerId:l.id,signal:t.signal}).catch(u=>{this.log.error("could not load multiaddrs for peer %p - %e",l.id,u)});continue}o++,yield l}this.log("findProviders finished, found %d providers for %c",o,e)}async provide(e,t={}){if(this.routers.length===0)throw new cn("No content routers available");await Promise.all(Xn(this.routers,"provide").map(async n=>{await n.provide(e,t)}))}async cancelReprovide(e,t={}){await Promise.all(Xn(this.routers,"cancelReprovide").map(async n=>{await n.cancelReprovide(e,t)}))}async put(e,t,n){await Promise.all(Xn(this.routers,"put").map(async o=>{await o.put(e,t,n)}))}async get(e,t){let n=[],o;try{o=await Promise.any(Xn(this.routers,"get").map(async s=>{try{return await s.get(e,t)}catch(i){this.log("router %s failed with %e",s,i),n.push(i)}}))}catch{}if(o==null)throw new al(n,`Failed to get value key ${M(e,"base58btc")}`);return o}async findPeer(e,t){if(this.routers.length===0)throw new cn("No peer routers available");let n=this,o=It(...Xn(this.routers,"findPeer").map(s=>(async function*(){try{yield await s.findPeer(e,t)}catch(i){n.log.error(i)}})()));for await(let s of o)if(s!=null)return s;throw new ke("Could not find peer in routing")}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new cn("No peer routers available");for await(let n of It(...Xn(this.routers,"getClosestPeers").map(o=>o.getClosestPeers(e,t))))n!=null&&(yield n)}};function Xn(r,e){return r.filter(t=>t[e]!=null)}var dl=class extends Error{static name="QueueFullError";constructor(e="The queue was full"){super(e),this.name="QueueFullError"}};var hl=class{deferred;signal;constructor(e){this.signal=e,this.deferred=Promise.withResolvers(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new vt)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function CI(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var pl=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=CI(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,this.controller.signal,this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new vt),this.cleanup())}async join(e={}){let t=new hl(e.signal);return this.recipients.push(t),e.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await Xe(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};function $p(r,e){let t,n=function(){let o=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(o,e)};return n.start=()=>{},n.stop=()=>{clearTimeout(t)},n}var Ui=class extends _e{concurrency;maxSize;queue;pending;sort;autoStart;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.maxSize=e.maxSize??Number.POSITIVE_INFINITY,this.pending=0,this.autoStart=e.autoStart??!0,this.sort=e.sort,this.queue=[],this.emitEmpty=$p(this.emitEmpty.bind(this),1),this.emitIdle=$p(this.emitIdle.bind(this),1)}[Symbol.asyncIterator](){return this.toGenerator()}emitEmpty(){this.size===0&&this.safeDispatchEvent("empty")}emitIdle(){this.running===0&&this.safeDispatchEvent("idle")}tryToStartAnother(){if(this.size===0)return this.emitEmpty(),this.running===0&&this.emitIdle(),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.safeDispatchEvent("next"),this.autoStart&&this.tryToStartAnother()}),!0)}return!1}enqueue(e){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}start(){this.autoStart===!1&&(this.autoStart=!0,this.tryToStartAnother())}pause(){this.autoStart=!1}async add(e,t){if(t?.signal?.throwIfAborted(),this.size===this.maxSize)throw new dl;let n=new pl(e,t);return this.enqueue(n),this.safeDispatchEvent("add"),this.autoStart&&this.tryToStartAnother(),n.join(t).then(o=>(this.safeDispatchEvent("success",{detail:{job:n,result:o}}),o)).catch(o=>{if(n.status==="queued"){for(let s=0;s<this.queue.length;s++)if(this.queue[s]===n){this.queue.splice(s,1);break}}throw this.safeDispatchEvent("failure",{detail:{job:n,error:o}}),o})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new vt)}),this.clear()}async onEmpty(e){this.size!==0&&await jc(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await jc(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await jc(this,"idle",e?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=Ko({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},o=c=>{c.detail!=null&&t.push(c.detail.result)},s=c=>{n(c.detail.error)},i=()=>{n()},a=()=>{n(new vt("Queue aborted"))};this.addEventListener("success",o),this.addEventListener("failure",s),this.addEventListener("idle",i),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("success",o),this.removeEventListener("failure",s),this.removeEventListener("idle",i),e?.signal?.removeEventListener("abort",a),n()}}};var ml="lock:worker:request-read",gl="lock:worker:abort-read-request",yl="lock:worker:release-read",wl="lock:master:grant-read",bl="lock:master:error-read",xl="lock:worker:request-write",vl="lock:worker:abort-write-request",El="lock:worker:release-write",Al="lock:master:grant-write",Sl="lock:master:error-write",Il="lock:worker:finalize",kl="mortice",Tb={singleProcess:!1};var Vp=(r,e,t,n,o,s,i,a,c)=>l=>{if(l.data==null)return;let u={type:l.data.type,name:l.data.name,identifier:l.data.identifier};u.type===o&&r.safeDispatchEvent(t,{detail:{name:u.name,identifier:u.identifier,handler:async()=>{e.postMessage({type:c,name:u.name,identifier:u.identifier}),await new Promise(f=>{let d=h=>{if(h?.data==null)return;let p={type:h.data.type,name:h.data.name,identifier:h.data.identifier};p.type===a&&p.identifier===u.identifier&&(e.removeEventListener("message",d),f())};e.addEventListener("message",d)})},onError:f=>{e.postMessage({type:i,name:u.name,identifier:u.identifier,error:{message:f.message,name:f.name,stack:f.stack}})}}}),u.type===s&&r.safeDispatchEvent(n,{detail:{name:u.name,identifier:u.identifier}}),u.type===Il&&r.safeDispatchEvent("finalizeRequest",{detail:{name:u.name}})};var Bb=(r=10)=>Math.random().toString().substring(2,r+2);var _l=class{name;channel;constructor(e){this.name=e,this.channel=new BroadcastChannel(kl)}readLock(e){return this.sendRequest(ml,gl,wl,bl,yl,e)}writeLock(e){return this.sendRequest(xl,vl,Al,Sl,El,e)}finalize(){this.channel.postMessage({type:Il,name:this.name}),this.channel.close()}async sendRequest(e,t,n,o,s,i){i?.signal?.throwIfAborted();let a=Bb();return this.channel.postMessage({type:e,identifier:a,name:this.name}),new Promise((c,l)=>{let u=()=>{this.channel.postMessage({type:t,identifier:a,name:this.name})};i?.signal?.addEventListener("abort",u,{once:!0});let f=d=>{if(d.data?.identifier===a&&(d.data?.type===n&&(this.channel.removeEventListener("message",f),i?.signal?.removeEventListener("abort",u),c(()=>{this.channel.postMessage({type:s,identifier:a,name:this.name})})),d.data.type===o)){this.channel.removeEventListener("message",f),i?.signal?.removeEventListener("abort",u);let h=new Error;d.data.error!=null&&(h.message=d.data.error.message,h.name=d.data.error.name,h.stack=d.data.error.stack),l(h)}};this.channel.addEventListener("message",f)})}};var Lb=r=>{if(r=Object.assign({},Tb,r),!!globalThis.document||r.singleProcess){let t=new BroadcastChannel(kl),n=new _e;return t.addEventListener("message",Vp(n,t,"requestReadLock","abortReadLockRequest",ml,gl,bl,yl,wl)),t.addEventListener("message",Vp(n,t,"requestWriteLock","abortWriteLockRequest",xl,vl,Sl,El,Al)),n}return new _l(r.name)};var Jn=new Map,Fi;function Pb(r){return typeof r?.readLock=="function"&&typeof r?.writeLock=="function"}function TI(r){if(Fi==null&&(Fi=Lb(r),!Pb(Fi))){let e=Fi;e.addEventListener("requestReadLock",t=>{let n=t.detail.name,o=t.detail.identifier,s=Jn.get(n);if(s==null)return;let i=new AbortController,a=c=>{c.detail.name!==n||c.detail.identifier!==o||i.abort()};e.addEventListener("abortReadLockRequest",a),s.readLock({signal:i.signal}).then(async c=>{await t.detail.handler().finally(()=>{c()})}).catch(c=>{t.detail.onError(c)}).finally(()=>{e.removeEventListener("abortReadLockRequest",a)})}),e.addEventListener("requestWriteLock",t=>{let n=t.detail.name,o=t.detail.identifier,s=Jn.get(n);if(s==null)return;let i=new AbortController,a=c=>{c.detail.name!==n||c.detail.identifier!==o||i.abort()};e.addEventListener("abortWriteLockRequest",a),s.writeLock({signal:i.signal}).then(async c=>{await t.detail.handler().finally(()=>{c()})}).catch(c=>{t.detail.onError(c)}).finally(()=>{e.removeEventListener("abortWriteLockRequest",a)})}),e.addEventListener("finalizeRequest",t=>{let n=t.detail.name,o=Jn.get(n);o?.finalize()})}return Fi}async function Kp(r,e){let t,n,o=new Promise((i,a)=>{t=i,n=a}),s=()=>{n(new vt)};return e?.signal?.addEventListener("abort",s,{once:!0}),r.add(async()=>{await new Promise(i=>{t(()=>{e?.signal?.removeEventListener("abort",s),i()})})},{signal:e?.signal}).catch(i=>{n(i)}),o}var Db=(r,e)=>{let t=Jn.get(r);if(t!=null)return t;let n=TI(e);if(Pb(n))return t=n,Jn.set(r,t),t;let o=new Ui({concurrency:1}),s;return t={async readLock(i){if(s!=null)return Kp(s,i);s=new Ui({concurrency:e.concurrency,autoStart:!1});let a=s,c=Kp(s,i);return o.add(async()=>{a.start(),await a.onIdle().then(()=>{s===a&&(s=null)})}),c},async writeLock(i){return s=null,Kp(o,i)},finalize:()=>{Jn.delete(r)},queue:o},Jn.set(r,t),e.autoFinalize===!0&&o.addEventListener("idle",()=>{t.finalize()},{once:!0}),t};var BI={name:"lock",concurrency:1/0,singleProcess:!1,autoFinalize:!1};function $i(r){let e=Object.assign({},BI,r);return Db(e.name,e)}var Cl=class{lock;child;pins;started;constructor(e,t,n={}){this.child=e,this.pins=t,this.lock=$i({singleProcess:n.holdGcLock}),this.started=!1}isStarted(){return this.started}async start(){await rr(this.child),this.started=!0}async stop(){await nr(this.child),this.started=!1}unwrap(){return this.child}async put(e,t,n={}){n?.signal?.throwIfAborted();let o=await this.lock.readLock();try{return await this.child.put(e,t,n)}finally{o()}}async*putMany(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.readLock();try{yield*this.child.putMany(e,t)}finally{n()}}async*get(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.readLock();try{yield*this.child.get(e,t)}finally{n()}}async*getMany(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.readLock();try{yield*this.child.getMany(e,t)}finally{n()}}async delete(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.writeLock();try{if(await this.pins.isPinned(e))throw new Di("Block was pinned - please unpin and try again");await this.child.delete(e,t)}finally{n()}}async*deleteMany(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.writeLock();try{let o=this;yield*this.child.deleteMany((async function*(){for await(let s of e){if(await o.pins.isPinned(s))throw new Di("Block was pinned - please unpin and try again");yield s}})(),t)}finally{n()}}async has(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.readLock();try{return await this.child.has(e,t)}finally{n()}}async*getAll(e={}){e?.signal?.throwIfAborted();let t=await this.lock.readLock();try{yield*this.child.getAll(e)}finally{t()}}createSession(e,t){return t?.signal?.throwIfAborted(),this.child.createSession(e,t)}};var Hp=new ge("/version"),Nb=1;async function Rb(r){if(!await r.has(Hp)){await r.put(Hp,B(`${Nb}`));return}let e=await r.get(Hp),t=M(e);if(parseInt(t,10)!==Nb)throw new sl("Invalid datastore version, a datastore migration may be required")}var Gp={};Ae(Gp,{code:()=>zp,decode:()=>$I,decodeOptions:()=>OI,encode:()=>FI,encodeOptions:()=>RI,name:()=>UI,toByteView:()=>Ob});var Mb=42;function Ob(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}function LI(r){if(r.asCID!==r&&r["/"]!==r.bytes)return null;let e=H.asCID(r);if(!e)return null;let t=new Uint8Array(e.bytes.byteLength+1);return t.set(e.bytes,1),[new I(m.tag,Mb),new I(m.bytes,t)]}function PI(){throw new Error("`undefined` is not supported by the IPLD Data Model and cannot be encoded")}function DI(r){if(Number.isNaN(r))throw new Error("`NaN` is not supported by the IPLD Data Model and cannot be encoded");if(r===1/0||r===-1/0)throw new Error("`Infinity` and `-Infinity` is not supported by the IPLD Data Model and cannot be encoded");return null}function NI(r){for(let e of r.keys())if(typeof e!="string"||e.length===0)throw new Error("Non-string Map keys are not supported by the IPLD Data Model and cannot be encoded");return null}var qp={float64:!0,typeEncoders:{Map:NI,Object:LI,undefined:PI,number:DI}},RI={...qp,typeEncoders:{...qp.typeEncoders}};function MI(r){if(r[0]!==0)throw new Error("Invalid CID for CBOR tag 42; expected leading 0x00");return H.decode(r.subarray(1))}var Tl={allowIndefinite:!1,coerceUndefinedToNull:!0,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};Tl.tags[Mb]=MI;var OI={...Tl,tags:Tl.tags.slice()},UI="dag-cbor",zp=113,FI=r=>an(r,qp),$I=r=>xt(Ob(r),Tl);var Qp={};Ae(Qp,{code:()=>Jp,decode:()=>Fb,encode:()=>Ub,format:()=>XI,name:()=>ZI,parse:()=>QI,stringify:()=>XI});var Wp=class extends Array{constructor(){super(),this.inRecursive=[]}prefix(e){let t=this.inRecursive[this.inRecursive.length-1];t&&(t.type===m.array&&(t.elements++,t.elements!==1&&e.push([44])),t.type===m.map&&(t.elements++,t.elements!==1&&(t.elements%2===1?e.push([44]):e.push([58]))))}[m.uint.major](e,t){this.prefix(e);let n=String(t.value),o=[];for(let s=0;s<n.length;s++)o[s]=n.charCodeAt(s);e.push(o)}[m.negint.major](e,t){this[m.uint.major](e,t)}[m.bytes.major](e,t){throw new Error(`${_r} unsupported type: Uint8Array`)}[m.string.major](e,t){this.prefix(e);let n=Ec(JSON.stringify(t.value));e.push(n.length>32?wi(n):n)}[m.array.major](e,t){this.prefix(e),this.inRecursive.push({type:m.array,elements:0}),e.push([91])}[m.map.major](e,t){this.prefix(e),this.inRecursive.push({type:m.map,elements:0}),e.push([123])}[m.tag.major](e,t){}[m.float.major](e,t){if(t.type.name==="break"){let i=this.inRecursive.pop();if(i){if(i.type===m.array)e.push([93]);else if(i.type===m.map)e.push([125]);else throw new Error("Unexpected recursive type; this should not happen!");return}throw new Error("Unexpected break; this should not happen!")}if(t.value===void 0)throw new Error(`${_r} unsupported type: undefined`);if(this.prefix(e),t.type.name==="true"){e.push([116,114,117,101]);return}else if(t.type.name==="false"){e.push([102,97,108,115,101]);return}else if(t.type.name==="null"){e.push([110,117,108,108]);return}let n=String(t.value),o=[],s=!1;for(let i=0;i<n.length;i++)o[i]=n.charCodeAt(i),!s&&(o[i]===46||o[i]===101||o[i]===69)&&(s=!0);s||(o.push(46),o.push(48)),e.push(o)}};function VI(r,e){if(Array.isArray(r[0])||Array.isArray(e[0]))throw new Error(`${_r} complex map keys are not supported`);let t=r[0],n=e[0];if(t.type!==m.string||n.type!==m.string)throw new Error(`${_r} non-string map keys are not supported`);if(t<n)return-1;if(t>n)return 1;throw new Error(`${_r} unexpected duplicate map keys, this is not supported`)}var KI={addBreakTokens:!0,mapSorter:VI};function jp(r,e){return e=Object.assign({},KI,e),Dc(r,new Wp,e)}var is=class{constructor(e,t={}){this._pos=0,this.data=e,this.options=t,this.modeStack=["value"],this.lastToken=""}pos(){return this._pos}done(){return this._pos>=this.data.length}ch(){return this.data[this._pos]}currentMode(){return this.modeStack[this.modeStack.length-1]}skipWhitespace(){let e=this.ch();for(;e===32||e===9||e===13||e===10;)e=this.data[++this._pos]}expect(e){if(this.data.length-this._pos<e.length)throw new Error(`${F} unexpected end of input at position ${this._pos}`);for(let t=0;t<e.length;t++)if(this.data[this._pos++]!==e[t])throw new Error(`${F} unexpected token at position ${this._pos}, expected to find '${String.fromCharCode(...e)}'`)}parseNumber(){let e=this._pos,t=!1,n=!1,o=a=>{for(;!this.done();){let c=this.ch();if(a.includes(c))this._pos++;else break}};if(this.ch()===45&&(t=!0,this._pos++),this.ch()===48)if(this._pos++,this.ch()===46)this._pos++,n=!0;else return new I(m.uint,0,this._pos-e);if(o([48,49,50,51,52,53,54,55,56,57]),t&&this._pos===e+1)throw new Error(`${F} unexpected token at position ${this._pos}`);if(!this.done()&&this.ch()===46){if(n)throw new Error(`${F} unexpected token at position ${this._pos}`);n=!0,this._pos++,o([48,49,50,51,52,53,54,55,56,57])}!this.done()&&(this.ch()===101||this.ch()===69)&&(n=!0,this._pos++,!this.done()&&(this.ch()===43||this.ch()===45)&&this._pos++,o([48,49,50,51,52,53,54,55,56,57]));let s=String.fromCharCode.apply(null,this.data.subarray(e,this._pos)),i=parseFloat(s);return n?new I(m.float,i,this._pos-e):this.options.allowBigInt!==!0||Number.isSafeInteger(i)?new I(i>=0?m.uint:m.negint,i,this._pos-e):new I(i>=0?m.uint:m.negint,BigInt(s),this._pos-e)}parseString(){if(this.ch()!==34)throw new Error(`${F} unexpected character at position ${this._pos}; this shouldn't happen`);this._pos++;for(let s=this._pos,i=0;s<this.data.length&&i<65536;s++,i++){let a=this.data[s];if(a===92||a<32||a>=128)break;if(a===34){let c=String.fromCharCode.apply(null,this.data.subarray(this._pos,s));return this._pos=s+1,new I(m.string,c,i)}}let e=this._pos,t=[],n=()=>{if(this._pos+4>=this.data.length)throw new Error(`${F} unexpected end of unicode escape sequence at position ${this._pos}`);let s=0;for(let i=0;i<4;i++){let a=this.ch();if(a>=48&&a<=57)a-=48;else if(a>=97&&a<=102)a=a-97+10;else if(a>=65&&a<=70)a=a-65+10;else throw new Error(`${F} unexpected unicode escape character at position ${this._pos}`);s=s*16+a,this._pos++}return s},o=()=>{let s=this.ch(),i=null,a=s>239?4:s>223?3:s>191?2:1;if(this._pos+a>this.data.length)throw new Error(`${F} unexpected unicode sequence at position ${this._pos}`);let c,l,u,f;switch(a){case 1:s<128&&(i=s);break;case 2:c=this.data[this._pos+1],(c&192)===128&&(f=(s&31)<<6|c&63,f>127&&(i=f));break;case 3:c=this.data[this._pos+1],l=this.data[this._pos+2],(c&192)===128&&(l&192)===128&&(f=(s&15)<<12|(c&63)<<6|l&63,f>2047&&(f<55296||f>57343)&&(i=f));break;case 4:c=this.data[this._pos+1],l=this.data[this._pos+2],u=this.data[this._pos+3],(c&192)===128&&(l&192)===128&&(u&192)===128&&(f=(s&15)<<18|(c&63)<<12|(l&63)<<6|u&63,f>65535&&f<1114112&&(i=f))}i===null?(i=65533,a=1):i>65535&&(i-=65536,t.push(i>>>10&1023|55296),i=56320|i&1023),t.push(i),this._pos+=a};for(;!this.done();){let s=this.ch(),i;switch(s){case 92:if(this._pos++,this.done())throw new Error(`${F} unexpected string termination at position ${this._pos}`);switch(i=this.ch(),this._pos++,i){case 34:case 39:case 92:case 47:t.push(i);break;case 98:t.push(8);break;case 116:t.push(9);break;case 110:t.push(10);break;case 102:t.push(12);break;case 114:t.push(13);break;case 117:t.push(n());break;default:throw new Error(`${F} unexpected string escape character at position ${this._pos}`)}break;case 34:return this._pos++,new I(m.string,sp(t),this._pos-e);default:if(s<32)throw new Error(`${F} invalid control character at position ${this._pos}`);s<128?(t.push(s),this._pos++):o()}}throw new Error(`${F} unexpected end of string at position ${this._pos}`)}parseValue(){switch(this.ch()){case 123:return this.modeStack.push("obj-start"),this._pos++,new I(m.map,1/0,1);case 91:return this.modeStack.push("array-start"),this._pos++,new I(m.array,1/0,1);case 34:return this.parseString();case 110:return this.expect([110,117,108,108]),new I(m.null,null,4);case 102:return this.expect([102,97,108,115,101]),new I(m.false,!1,5);case 116:return this.expect([116,114,117,101]),new I(m.true,!0,4);case 45:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.parseNumber();default:throw new Error(`${F} unexpected character at position ${this._pos}`)}}next(){switch(this.skipWhitespace(),this.currentMode()){case"value":return this.modeStack.pop(),this.parseValue();case"array-value":{if(this.modeStack.pop(),this.ch()===93)return this._pos++,this.skipWhitespace(),new I(m.break,void 0,1);if(this.ch()!==44)throw new Error(`${F} unexpected character at position ${this._pos}, was expecting array delimiter but found '${String.fromCharCode(this.ch())}'`);return this._pos++,this.modeStack.push("array-value"),this.skipWhitespace(),this.parseValue()}case"array-start":return this.modeStack.pop(),this.ch()===93?(this._pos++,this.skipWhitespace(),new I(m.break,void 0,1)):(this.modeStack.push("array-value"),this.skipWhitespace(),this.parseValue());case"obj-key":if(this.ch()===125)return this.modeStack.pop(),this._pos++,this.skipWhitespace(),new I(m.break,void 0,1);if(this.ch()!==44)throw new Error(`${F} unexpected character at position ${this._pos}, was expecting object delimiter but found '${String.fromCharCode(this.ch())}'`);this._pos++,this.skipWhitespace();case"obj-start":{if(this.modeStack.pop(),this.ch()===125)return this._pos++,this.skipWhitespace(),new I(m.break,void 0,1);let e=this.parseString();if(this.skipWhitespace(),this.ch()!==58)throw new Error(`${F} unexpected character at position ${this._pos}, was expecting key/value delimiter ':' but found '${String.fromCharCode(this.ch())}'`);return this._pos++,this.modeStack.push("obj-value"),e}case"obj-value":return this.modeStack.pop(),this.modeStack.push("obj-key"),this.skipWhitespace(),this.parseValue();default:throw new Error(`${F} unexpected parse state at position ${this._pos}; this shouldn't happen`)}}};function Yp(r,e){return e=Object.assign({tokenizer:new is(r,e)},e),xt(r,e)}function qI(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}function zI(r){if(r.asCID!==r&&r["/"]!==r.bytes)return null;let e=H.asCID(r);if(!e)return null;let t=e.toString();return[new I(m.map,1/0,1),new I(m.string,"/",1),new I(m.string,t,t.length),new I(m.break,void 0,1)]}function Bl(r){let e=je.encode(r).slice(1);return[new I(m.map,1/0,1),new I(m.string,"/",1),new I(m.map,1/0,1),new I(m.string,"bytes",5),new I(m.string,e,e.length),new I(m.break,void 0,1),new I(m.break,void 0,1)]}function Wt(r){return Bl(new Uint8Array(r.buffer,r.byteOffset,r.byteLength))}function GI(r){return Bl(new Uint8Array(r))}function WI(){throw new Error("`undefined` is not supported by the IPLD Data Model and cannot be encoded")}function jI(r){if(Number.isNaN(r))throw new Error("`NaN` is not supported by the IPLD Data Model and cannot be encoded");if(r===1/0||r===-1/0)throw new Error("`Infinity` and `-Infinity` is not supported by the IPLD Data Model and cannot be encoded");return null}var YI={typeEncoders:{Object:zI,Buffer:Bl,Uint8Array:Bl,Int8Array:Wt,Uint16Array:Wt,Int16Array:Wt,Uint32Array:Wt,Int32Array:Wt,Float32Array:Wt,Float64Array:Wt,Uint8ClampedArray:Wt,BigInt64Array:Wt,BigUint64Array:Wt,DataView:Wt,ArrayBuffer:GI,undefined:WI,number:jI}},Zp=class extends is{constructor(e,t){super(e,t),this.tokenBuffer=[]}done(){return this.tokenBuffer.length===0&&super.done()}_next(){return this.tokenBuffer.length>0?this.tokenBuffer.pop():super.next()}next(){let e=this._next();if(e.type===m.map){let t=this._next();if(t.type===m.string&&t.value==="/"){let n=this._next();if(n.type===m.string){if(this._next().type!==m.break)throw new Error("Invalid encoded CID form");return this.tokenBuffer.push(n),new I(m.tag,42,0)}if(n.type===m.map){let o=this._next();if(o.type===m.string&&o.value==="bytes"){let s=this._next();if(s.type===m.string){for(let a=0;a<2;a++)if(this._next().type!==m.break)throw new Error("Invalid encoded Bytes form");let i=je.decode(`m${s.value}`);return new I(m.bytes,i,s.value.length)}this.tokenBuffer.push(s)}this.tokenBuffer.push(o)}this.tokenBuffer.push(n)}this.tokenBuffer.push(t)}return e}},Xp={allowIndefinite:!1,allowUndefined:!1,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};Xp.tags[42]=H.parse;var ZI="dag-json",Jp=297,Ub=r=>jp(r,YI),Fb=r=>{let e=qI(r),t=Object.assign(Xp,{tokenizer:new Zp(e,Xp)});return Yp(e,t)},XI=r=>JI.decode(Ub(r));var JI=new TextDecoder,QI=r=>Fb(ek.encode(r)),ek=new TextEncoder;var sm={};Ae(sm,{code:()=>om,createLink:()=>Yb,createNode:()=>jb,decode:()=>hk,encode:()=>dk,name:()=>fk,prepare:()=>rm,validate:()=>nm});var tk=new TextDecoder;function em(r,e){let t=0;for(let n=0;;n+=7){if(n>=64)throw new Error("protobuf: varint overflow");if(e>=r.length)throw new Error("protobuf: unexpected end of data");let o=r[e++];if(t+=n<28?(o&127)<<n:(o&127)*2**n,o<128)break}return[t,e]}function Ll(r,e){let t;[t,e]=em(r,e);let n=e+t;if(t<0||n<0)throw new Error("protobuf: invalid length");if(n>r.length)throw new Error("protobuf: unexpected end of data");return[r.subarray(e,n),n]}function $b(r,e){let t;return[t,e]=em(r,e),[t&7,t>>3,e]}function rk(r){let e={},t=r.length,n=0;for(;n<t;){let o,s;if([o,s,n]=$b(r,n),s===1){if(e.Hash)throw new Error("protobuf: (PBLink) duplicate Hash section");if(o!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Hash`);if(e.Name!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Name before Hash");if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Hash");[e.Hash,n]=Ll(r,n)}else if(s===2){if(e.Name!==void 0)throw new Error("protobuf: (PBLink) duplicate Name section");if(o!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Name`);if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Name");let i;[i,n]=Ll(r,n),e.Name=tk.decode(i)}else if(s===3){if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) duplicate Tsize section");if(o!==0)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Tsize`);[e.Tsize,n]=em(r,n)}else throw new Error(`protobuf: (PBLink) invalid fieldNumber, expected 1, 2 or 3, got ${s}`)}if(n>t)throw new Error("protobuf: (PBLink) unexpected end of data");return e}function Vb(r){let e=r.length,t=0,n,o=!1,s;for(;t<e;){let a,c;if([a,c,t]=$b(r,t),a!==2)throw new Error(`protobuf: (PBNode) invalid wireType, expected 2, got ${a}`);if(c===1){if(s)throw new Error("protobuf: (PBNode) duplicate Data section");[s,t]=Ll(r,t),n&&(o=!0)}else if(c===2){if(o)throw new Error("protobuf: (PBNode) duplicate Links section");n||(n=[]);let l;[l,t]=Ll(r,t),n.push(rk(l))}else throw new Error(`protobuf: (PBNode) invalid fieldNumber, expected 1 or 2, got ${c}`)}if(t>e)throw new Error("protobuf: (PBNode) unexpected end of data");let i={};return s&&(i.Data=s),i.Links=n||[],i}var Hb=new TextEncoder,Kb=2**32,nk=2**31;function ok(r,e){let t=e.length;if(typeof r.Tsize=="number"){if(r.Tsize<0)throw new Error("Tsize cannot be negative");if(!Number.isSafeInteger(r.Tsize))throw new Error("Tsize too large for encoding");t=Vi(e,t,r.Tsize)-1,e[t]=24}if(typeof r.Name=="string"){let n=Hb.encode(r.Name);t-=n.length,e.set(n,t),t=Vi(e,t,n.length)-1,e[t]=18}return r.Hash&&(t-=r.Hash.length,e.set(r.Hash,t),t=Vi(e,t,r.Hash.length)-1,e[t]=10),e.length-t}function qb(r){let e=ik(r),t=new Uint8Array(e),n=e;if(r.Data&&(n-=r.Data.length,t.set(r.Data,n),n=Vi(t,n,r.Data.length)-1,t[n]=10),r.Links)for(let o=r.Links.length-1;o>=0;o--){let s=ok(r.Links[o],t.subarray(0,n));n-=s,n=Vi(t,n,s)-1,t[n]=18}return t}function sk(r){let e=0;if(r.Hash){let t=r.Hash.length;e+=1+t+as(t)}if(typeof r.Name=="string"){let t=Hb.encode(r.Name).length;e+=1+t+as(t)}return typeof r.Tsize=="number"&&(e+=1+as(r.Tsize)),e}function ik(r){let e=0;if(r.Data){let t=r.Data.length;e+=1+t+as(t)}if(r.Links)for(let t of r.Links){let n=sk(t);e+=1+n+as(n)}return e}function Vi(r,e,t){e-=as(t);let n=e;for(;t>=nk;)r[e++]=t&127|128,t/=128;for(;t>=128;)r[e++]=t&127|128,t>>>=7;return r[e]=t,n}function as(r){return r%2===0&&r++,Math.floor((ak(r)+6)/7)}function ak(r){let e=0;return r>=Kb&&(r=Math.floor(r/Kb),e=32),r>=65536&&(r>>>=16,e+=16),r>=256&&(r>>>=8,e+=8),e+ck[r]}var ck=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8];var lk=["Data","Links"],uk=["Hash","Name","Tsize"],tm=new TextEncoder;function Gb(r,e){if(r===e)return 0;let t=r.Name?tm.encode(r.Name):[],n=e.Name?tm.encode(e.Name):[],o=t.length,s=n.length;for(let i=0,a=Math.min(o,s);i<a;++i)if(t[i]!==n[i]){o=t[i],s=n[i];break}return o<s?-1:s<o?1:0}function zb(r,e){return!Object.keys(r).some(t=>!e.includes(t))}function Wb(r){if(typeof r.asCID=="object"){let t=H.asCID(r);if(!t)throw new TypeError("Invalid DAG-PB form");return{Hash:t}}if(typeof r!="object"||Array.isArray(r))throw new TypeError("Invalid DAG-PB form");let e={};if(r.Hash){let t=H.asCID(r.Hash);try{t||(typeof r.Hash=="string"?t=H.parse(r.Hash):r.Hash instanceof Uint8Array&&(t=H.decode(r.Hash)))}catch(n){throw new TypeError(`Invalid DAG-PB form: ${n.message}`)}t&&(e.Hash=t)}if(!e.Hash)throw new TypeError("Invalid DAG-PB form");return typeof r.Name=="string"&&(e.Name=r.Name),typeof r.Tsize=="number"&&(e.Tsize=r.Tsize),e}function rm(r){if((r instanceof Uint8Array||typeof r=="string")&&(r={Data:r}),typeof r!="object"||Array.isArray(r))throw new TypeError("Invalid DAG-PB form");let e={};if(r.Data!==void 0)if(typeof r.Data=="string")e.Data=tm.encode(r.Data);else if(r.Data instanceof Uint8Array)e.Data=r.Data;else throw new TypeError("Invalid DAG-PB form");if(r.Links!==void 0)if(Array.isArray(r.Links))e.Links=r.Links.map(Wb),e.Links.sort(Gb);else throw new TypeError("Invalid DAG-PB form");else e.Links=[];return e}function nm(r){if(!r||typeof r!="object"||Array.isArray(r)||r instanceof Uint8Array||r["/"]&&r["/"]===r.bytes)throw new TypeError("Invalid DAG-PB form");if(!zb(r,lk))throw new TypeError("Invalid DAG-PB form (extraneous properties)");if(r.Data!==void 0&&!(r.Data instanceof Uint8Array))throw new TypeError("Invalid DAG-PB form (Data must be bytes)");if(!Array.isArray(r.Links))throw new TypeError("Invalid DAG-PB form (Links must be a list)");for(let e=0;e<r.Links.length;e++){let t=r.Links[e];if(!t||typeof t!="object"||Array.isArray(t)||t instanceof Uint8Array||t["/"]&&t["/"]===t.bytes)throw new TypeError("Invalid DAG-PB form (bad link)");if(!zb(t,uk))throw new TypeError("Invalid DAG-PB form (extraneous properties on link)");if(t.Hash===void 0)throw new TypeError("Invalid DAG-PB form (link must have a Hash)");if(t.Hash==null||!t.Hash["/"]||t.Hash["/"]!==t.Hash.bytes)throw new TypeError("Invalid DAG-PB form (link Hash must be a CID)");if(t.Name!==void 0&&typeof t.Name!="string")throw new TypeError("Invalid DAG-PB form (link Name must be a string)");if(t.Tsize!==void 0){if(typeof t.Tsize!="number"||t.Tsize%1!==0)throw new TypeError("Invalid DAG-PB form (link Tsize must be an integer)");if(t.Tsize<0)throw new TypeError("Invalid DAG-PB form (link Tsize cannot be negative)")}if(e>0&&Gb(t,r.Links[e-1])===-1)throw new TypeError("Invalid DAG-PB form (links must be sorted by Name bytes)")}}function jb(r,e=[]){return rm({Data:r,Links:e})}function Yb(r,e,t){return Wb({Hash:t,Name:r,Tsize:e})}function Zb(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}var fk="dag-pb",om=112;function dk(r){nm(r);let e={};return r.Links&&(e.Links=r.Links.map(t=>{let n={};return t.Hash&&(n.Hash=t.Hash.bytes),t.Name!==void 0&&(n.Name=t.Name),t.Tsize!==void 0&&(n.Tsize=t.Tsize),n})),r.Data&&(e.Data=r.Data),qb(e)}function hk(r){let e=Zb(r),t=Vb(e),n={};return t.Data&&(n.Data=t.Data),t.Links&&(n.Links=t.Links.map(o=>{let s={};try{s.Hash=H.decode(o.Hash)}catch{}if(!s.Hash)throw new Error("Invalid Hash field found in link, expected CID");return o.Name!==void 0&&(s.Name=o.Name),o.Tsize!==void 0&&(s.Tsize=o.Tsize),s})),n}function cs(r){return r?.then!=null}function Xb(r=[],e){let t={[om]:sm,[Ps]:Ds,[zp]:Gp,[Jp]:Qp,[dd]:Da};return r.forEach(n=>{t[n.code]=n}),async n=>{let o=t[n];if(o==null&&e!=null){let s=e(n);cs(s)?o=await s:o=s,t[o.code]=o}if(o!=null)return o;throw new Oi(`Could not load codec for ${n}`)}}function Jb(r=[],e){let t={[Rt.code]:Rt,[Na.code]:Na,[Ge.code]:Ge};return r.forEach(n=>{t[n.code]=n}),async n=>{let o=t[n];if(o==null&&e!=null){let s=e(n);cs(s)?o=await s:o=s,t[o.code]=o}if(o!=null)return o;throw new Mi(`No hasher configured for multihash code 0x${n.toString(16)}, please configure one. You can look up which hash this is at https://github.com/multiformats/multicodec/blob/master/table.csv`)}}var Lt=class r extends Error{static name="NotFoundError";static code="ERR_NOT_FOUND";name=r.name;code=r.code;constructor(e="Not Found"){super(e)}};var Br=class{has(e,t){return Promise.reject(new Error(".has is not implemented"))}put(e,t,n){return Promise.reject(new Error(".put is not implemented"))}async*putMany(e,t){for await(let{cid:n,bytes:o}of e)await this.put(n,o,t),yield n}get(e,t){throw new Error(".get is not implemented")}async*getMany(e,t){for await(let n of e)yield{cid:n,bytes:this.get(n,t)}}delete(e,t){return Promise.reject(new Error(".delete is not implemented"))}async*deleteMany(e,t){for await(let n of e)await this.delete(n,t),yield n}async*getAll(e){throw new Error(".getAll is not implemented")}};var Pl=0,ls=class extends Error{static name="IdentityHashDigestTooLongError";name="IdentityHashDigestTooLongError"},Dl=class extends Br{child;maxDigestLength;constructor(e,t){super(),this.child=e,this.maxDigestLength=t?.maxDigestLength}put(e,t,n){if(e.multihash.code===Pl){if(this.maxDigestLength!=null&&e.multihash.digest.byteLength>this.maxDigestLength)throw new ls(`Identity digest too long - ${e.multihash.digest.byteLength} > this.maxDigestLength`);return n?.signal?.throwIfAborted(),e}return this.child==null?(n?.signal?.throwIfAborted(),e):this.child.put(e,t,n)}*get(e,t){if(e.multihash.code===Pl){if(this.maxDigestLength!=null&&e.multihash.digest.byteLength>this.maxDigestLength)throw new ls(`Identity digest too long - ${e.multihash.digest.byteLength} > this.maxDigestLength`);t?.signal?.throwIfAborted(),yield e.multihash.digest;return}if(this.child==null)throw t?.signal?.throwIfAborted(),new Lt;yield*this.child.get(e,t)}has(e,t){if(e.multihash.code===Pl){if(this.maxDigestLength!=null&&e.multihash.digest.byteLength>this.maxDigestLength)throw new ls(`Identity digest too long - ${e.multihash.digest.byteLength} > this.maxDigestLength`);return t?.signal?.throwIfAborted(),!0}return this.child==null?(t?.signal?.throwIfAborted(),!1):this.child.has(e,t)}delete(e,t){if(e.code===Pl){if(this.maxDigestLength!=null&&e.multihash.digest.byteLength>this.maxDigestLength)throw new ls(`Identity digest too long - ${e.multihash.digest.byteLength} > this.maxDigestLength`);t?.signal?.throwIfAborted();return}if(this.child!=null)return this.child.delete(e,t)}*getAll(e){this.child!=null&&(yield*this.child.getAll(e)),e?.signal?.throwIfAborted()}};function pk(r){return r[Symbol.asyncIterator]!=null}function mk(r,e){let t=0;if(pk(r))return(async function*(){for await(let c of r)await e(c,t++)&&(yield c)})();let n=os(r),{value:o,done:s}=n.next();if(s===!0)return(function*(){})();let i=e(o,t++);if(typeof i.then=="function")return(async function*(){await i&&(yield o);for(let c of n)await e(c,t++)&&(yield c)})();let a=e;return(function*(){i===!0&&(yield o);for(let c of n)a(c,t++)&&(yield c)})()}var jt=mk;function gk(r){return r[Symbol.asyncIterator]!=null}function Qb(r){return r?.then!=null}function yk(r,e){let t=0;if(gk(r))return(async function*(){for await(let c of r){let l=e(c,t++);Qb(l)&&await l,yield c}})();let n=os(r),{value:o,done:s}=n.next();if(s===!0)return(function*(){})();let i=e(o,t++);if(typeof i?.then=="function")return(async function*(){await i,yield o;for(let c of n){let l=e(c,t++);Qb(l)&&await l,yield c}})();let a=e;return(function*(){yield o;for(let c of n)a(c,t++),yield c})()}var im=yk;var wk=128,Nl=class{child;getHasher;log;logger;components;constructor(e,t={}){this.log=e.logger.forComponent("helia:networked-storage"),this.logger=e.logger,this.components=e,this.child=new Dl(e.blockstore,{maxDigestLength:t.maxIdentityHashDigestLength??wk}),this.getHasher=e.getHasher}async put(e,t,n={}){return await this.child.has(e,n)?(n.onProgress?.(new W("blocks:put:duplicate",e)),e):(n.onProgress?.(new W("blocks:put:providers:notify",e)),await Promise.all(this.components.blockBrokers.map(async o=>o.announce?.(e,n))),n.onProgress?.(new W("blocks:put:blockstore:put",e)),this.child.put(e,t,n))}async*putMany(e,t={}){let n=jt(e,async({cid:s})=>{let i=await this.child.has(s,t);return i&&t.onProgress?.(new W("blocks:put-many:duplicate",s)),!i}),o=im(n,async({cid:s})=>{t.onProgress?.(new W("blocks:put-many:providers:notify",s)),await Promise.all(this.components.blockBrokers.map(async i=>i.announce?.(s,t)))});t.onProgress?.(new W("blocks:put-many:blockstore:put-many")),yield*this.child.putMany(o,t)}async*get(e,t={}){let n=await this.child.has(e,t),o=t.offline===!0;if(!n){if(o)throw new Ni("The block was present in the blockstore and the node is running offline so cannot fetch it");let s=await this.getHasher(e.multihash.code);t?.signal?.throwIfAborted(),t.onProgress?.(new W("blocks:get:providers:get",e));let i=await ex(e,this.components.blockBrokers,s,{...t,log:this.log});t.onProgress?.(new W("blocks:get:blockstore:put",e)),await this.child.put(e,i,t),t.onProgress?.(new W("blocks:get:providers:notify",e)),await Promise.all(this.components.blockBrokers.map(async a=>a.announce?.(e,t))),yield i;return}t.onProgress?.(new W("blocks:get:blockstore:get",e)),yield*this.child.get(e,t)}async*getMany(e,t={}){t.onProgress?.(new W("blocks:get-many:blockstore:get-many")),yield*this.child.getMany(im(e,async n=>{let o=await this.child.has(n,t),s=t.offline===!0;if(!o){if(s)throw new Ni("The block was present in the blockstore and the node is running offline so cannot fetch it");let i=await this.getHasher(n.multihash.code);t?.signal?.throwIfAborted(),t.onProgress?.(new W("blocks:get-many:providers:get",n));let a=await ex(n,this.components.blockBrokers,i,{...t,log:this.log});t.onProgress?.(new W("blocks:get-many:blockstore:put",n)),await this.child.put(n,a,t),t.onProgress?.(new W("blocks:get-many:providers:notify",n)),await Promise.all(this.components.blockBrokers.map(async c=>c.announce?.(n,t)))}}))}async delete(e,t={}){t.onProgress?.(new W("blocks:delete:blockstore:delete",e)),await this.child.delete(e,t)}async*deleteMany(e,t={}){t.onProgress?.(new W("blocks:delete-many:blockstore:delete-many")),yield*this.child.deleteMany((async function*(){for await(let n of e)yield n})(),t)}async has(e,t={}){return this.child.has(e,t)}async*getAll(e={}){e.onProgress?.(new W("blocks:get-all:blockstore:get-many")),yield*this.child.getAll(e)}},Rl=class extends Nl{started;constructor(e,t={}){super(e,t),this.started=!1}isStarted(){return this.started}async start(){await rr(this.child,...this.components.blockBrokers),this.started=!0}async stop(){await nr(this.child,...this.components.blockBrokers),this.started=!1}unwrap(){return this.child}createSession(e,t){let n=this.components.blockBrokers.map(o=>o.createSession==null?o:o.createSession(t));return new am({blockstore:this.child,blockBrokers:n,getHasher:this.getHasher,logger:this.logger},{root:e})}},am=class extends Nl{closeController;constructor(e,t){super(e),this.closeController=new AbortController,this.closeController.signal,this.log=e.logger.forComponent(`helia:session-storage:${t.root}`)}close(){this.closeController.abort()}async put(e,t,n={}){let o=pe([this.closeController.signal,n.signal]);try{return await super.put(e,t,{...n,signal:o})}finally{o.clear()}}async*putMany(e,t={}){let n=pe([this.closeController.signal,t.signal]);try{yield*super.putMany(e,{...t,signal:n})}finally{n.clear()}}async*get(e,t={}){let n=pe([this.closeController.signal,t.signal]);try{yield*super.get(e,{...t,signal:n})}finally{n.clear()}}async*getMany(e,t={}){let n=pe([this.closeController.signal,t.signal]);try{yield*super.getMany(e,{...t,signal:n})}finally{n.clear()}}async delete(e,t={}){let n=pe([this.closeController.signal,t.signal]);try{await super.delete(e,{...t,signal:n})}finally{n.clear()}}async*deleteMany(e,t={}){let n=pe([this.closeController.signal,t.signal]);try{yield*super.deleteMany(e,{...t,signal:n})}finally{n.clear()}}async has(e,t={}){let n=pe([this.closeController.signal,t.signal]);try{return await super.has(e,{...t,signal:n})}finally{n.clear()}}async*getAll(e={}){let t=pe([this.closeController.signal,e.signal]);try{yield*super.getAll({...e,signal:t})}finally{t.clear()}}};function bk(r){return typeof r.retrieve=="function"}var xk=(r,e)=>{if(e==null)throw new k(`No hasher configured for multihash code 0x${r.multihash.code.toString(16)}, please configure one. You can look up which hash this is at https://github.com/multiformats/multicodec/blob/master/table.csv`);return async t=>{let n,o=e.digest(t,{truncate:r.multihash.digest.byteLength});if(cs(o)?n=await o:n=o,!X(n.digest,r.multihash.digest))throw new Vr("Hash of downloaded block did not match multihash from passed CID")}};async function ex(r,e,t,n){let o=xk(r,t),s=new AbortController,i=pe([s.signal,n.signal]);s.signal;let a=[];for(let c of e)bk(c)&&a.push(c);if(a.length===0)throw new il(`No block brokers capable of retrieving blocks are configured, the CID ${r} cannot be fetched from the network`);try{return await Promise.any(a.map(async c=>{try{let l=!1,u=await c.retrieve(r,{...n,signal:i,validateFn:async f=>{await o(f),n.signal?.throwIfAborted(),l=!0}});return l||(await o(u),n.signal?.throwIfAborted()),u}catch(l){throw n.log.error("could not retrieve verified block for %c - %e",r,l),l}}))}catch(c){throw new cl(c.errors,`Failed to load block for ${r}`)}finally{s.abort(),i.clear()}}var Hi=class extends _e{initialPeerSearchComplete;requests;name;log;logger;minProviders;maxProviders;providers;evictionFilter;initialProviders;constructor(e,t){super(),this.name=t.name,this.logger=e.logger,this.log=e.logger.forComponent(this.name),this.requests=new Map,this.minProviders=t.minProviders??1,this.maxProviders=t.maxProviders??5,this.providers=[],this.evictionFilter=Un(this.maxProviders),this.initialProviders=t.providers??[]}async retrieve(e,t={}){let n=je.encode(e.multihash.bytes),o=this.requests.get(n);if(o!=null)return this.log("join existing request for %c",e),o;let s=ae();if(this.requests.set(n,s.promise),this.providers.length===0){let u=!1;this.initialPeerSearchComplete==null&&(u=!0,this.log=this.logger.forComponent(`${this.name}:${e}`),this.initialPeerSearchComplete=this.findProviders(e,this.minProviders,t));try{await Xe(this.initialPeerSearchComplete,t.signal),u&&this.log("found initial session peers for %c",e)}catch(f){throw u&&this.log("failed to find initial session peers for %c - %e",e,f),this.requests.delete(n),s.reject(f),f}}let i=!1,a=new qt({concurrency:this.maxProviders});a.addEventListener("failure",u=>{this.log.error("error querying provider %s, evicting from session - %e",u.detail.job.options.provider,u.detail.error),this.evict(u.detail.job.options.provider)}),a.addEventListener("success",u=>{i=!0,s.resolve(u.detail.result)}),a.addEventListener("idle",()=>{if(i){this.log.trace("session idle, found block");return}if(t.signal?.aborted===!0){this.log.trace("session idle, signal aborted");return}Promise.resolve().then(async()=>{this.log("no session peers had block for for %c, finding new providers",e);for(let u=0;u<this.minProviders&&this.providers.length!==0;u++){let f=this.providers[Math.floor(Math.random()*this.providers.length)];this.evict(f)}await this.findProviders(e,this.minProviders,t),this.log("found new providers re-retrieving %c",e),this.requests.delete(n),s.resolve(await this.retrieve(e,t))}).catch(u=>{this.log.error("could not find new providers for %c - %e",e,u),s.reject(u)})});let c=u=>{a.add(async()=>this.queryProvider(e,u.detail,t),{provider:u.detail}).catch(f=>{t.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c - %e",e,f)})};this.addEventListener("provider",c),Promise.all([...this.providers].map(async u=>a.add(async()=>this.queryProvider(e,u,t),{provider:u}))).catch(u=>{t.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c - %e",e,u)});let l=()=>{s.reject(new dt(t.signal?.reason??"Session aborted")),a.abort()};t.signal?.addEventListener("abort",l);try{return await Xe(s.promise,t.signal)}finally{this.removeEventListener("provider",c),t.signal?.removeEventListener("abort",l),a.clear(),this.requests.delete(n)}}evict(e){this.evictionFilter.add(this.toEvictionKey(e));let t=this.providers.findIndex(n=>this.equals(n,e));t!==-1&&this.providers.splice(t,1)}isEvicted(e){return this.evictionFilter.has(this.toEvictionKey(e))}hasProvider(e){return!!(this.providers.find(t=>this.equals(t,e))!=null||this.isEvicted(e))}async findProviders(e,t,n){let o=ae(),s=0;return Promise.resolve().then(async()=>{if(this.log("finding %d-%d new provider(s) for %c",t,this.maxProviders,e),this.initialProviders.length>0)for(;s<t&&this.initialProviders.length>0;){let i=this.initialProviders.pop();if(i==null)break;let a=await this.convertToProvider(i,n);if(n.signal?.aborted===!0)break;if(a!=null&&!this.hasProvider(a)&&(this.log("found %d/%d new providers",s,this.maxProviders),this.providers.push(a),this.safeDispatchEvent("provider",{detail:a}),s++,s===t&&(this.log("session is ready"),o.resolve()),this.providers.length===this.maxProviders)){this.log("found max session peers",s);break}}if(s<this.maxProviders)for await(let i of this.findNewProviders(e,n)){if(s===this.maxProviders||n.signal?.aborted===!0)break;if(!this.hasProvider(i)&&(this.log("found %d/%d new providers",s,this.maxProviders),this.providers.push(i),this.safeDispatchEvent("provider",{detail:i}),s++,s===t&&(this.log("session is ready"),o.resolve()),this.providers.length===this.maxProviders)){this.log("found max session peers",s);break}}if(this.log("found %d/%d new session peers",s,this.maxProviders),s<t)throw new Ri(`Found ${s} of ${t} ${this.name} providers for ${e}`)}).catch(i=>{this.log.error("error searching routing for potential session peers for %c - %e",e,i),o.reject(i)}),o.promise}};var Ml=class{libp2p;blockstore;datastore;events;pins;logger;routing;getCodec;getHasher;dns;metrics;log;constructor(e){this.logger=e.logger??fr(),this.log=this.logger.forComponent("helia"),this.getHasher=Jb(e.hashers,e.loadHasher),this.getCodec=Xb(e.codecs,e.loadCodec),this.dns=e.dns??tl(),this.metrics=e.metrics,this.libp2p=e.libp2p,this.events=new _e;let t={blockstore:e.blockstore,datastore:e.datastore,logger:this.logger,libp2p:this.libp2p,blockBrokers:[],getHasher:this.getHasher,getCodec:this.getCodec,dns:this.dns,metrics:this.metrics,...e.components??{}};this.routing=t.routing=new fl(t,{routers:(e.routers??[]).flatMap(o=>{typeof o=="function"&&(o=o(t));let s=[o],i=vk(o);i!=null&&s.push(i);let a=Ek(o);return a!=null&&s.push(a),s}),providerLookupConcurrency:e.providerLookupConcurrency});let n=new Rl(t,e);this.pins=new ul(e.datastore,n,this.getCodec),this.blockstore=new Cl(n,this.pins,{holdGcLock:e.holdGcLock??!0}),this.datastore=e.datastore,t.blockBrokers=e.blockBrokers.map(o=>o(t))}async start(){await Rb(this.datastore),await rr(this.blockstore,this.datastore,this.routing,this.libp2p),this.events.dispatchEvent(new CustomEvent("start",{detail:this}))}async stop(){await nr(this.blockstore,this.datastore,this.routing,this.libp2p),this.events.dispatchEvent(new CustomEvent("stop",{detail:this}))}async gc(e={}){let t=await this.blockstore.lock.writeLock();try{let n=this,o=this.blockstore.unwrap();this.log("gc start"),await Ii(o.deleteMany((async function*(){for await(let{cid:s}of o.getAll())try{if(await n.pins.isPinned(s,e))continue;yield s,e.onProgress?.(new W("helia:gc:deleted",s))}catch(i){n.log.error("error during gc - %e",i),e.onProgress?.(new W("helia:gc:error",i))}})()))}finally{t()}this.log("gc finished")}};function vk(r){return r?.[mn]}function Ek(r){return r?.[yn]}var Ak=[6,53,56,54,55];function tx(r){return ox("sni",r)?.value}function rx(r){let e=ox("tcp",r)?.value;return e==null?"":`:${e}`}function ox(r,e){return e.find(t=>t.name===r)}function nx(r){return r.some(({code:e})=>e===448)}function Yt(r,e){let t=sx[r.name];if(t==null)throw new Error(`Can't interpret protocol ${r.name}`);let n=t(r,e);return r.code===41?`[${n}]`:n}var sx={ip4:(r,e)=>r.value,ip6:(r,e)=>e.length===0?r.value:`[${r.value}]`,tcp:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`tcp://${Yt(t,e)}:${r.value}`},udp:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`udp://${Yt(t,e)}:${r.value}`},dnsaddr:(r,e)=>r.value,dns4:(r,e)=>r.value,dns6:(r,e)=>r.value,dns:(r,e)=>r.value,ipfs:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`${Yt(t,e)}`},p2p:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`${Yt(t,e)}`},http:(r,e)=>{let t=nx(e),n=tx(e),o=rx(e);if(t&&n!=null)return`https://${n}${o}`;let s=t?"https://":"http://",i=e.pop();if(i==null)throw new Error("Unexpected end of multiaddr");let a=Yt(i,e);return a=a?.replace("tcp://",""),`${s}${a}`},"http-path":(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");let n=Yt(t,e),o=decodeURIComponent(r.value??"");return`${n}${o}`},tls:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return Yt(t,e)},sni:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return Yt(t,e)},https:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");let n=Yt(t,e);return n=n?.replace("tcp://",""),`https://${n}`},ws:(r,e)=>{let t=nx(e),n=tx(e),o=rx(e);if(t&&n!=null)return`wss://${n}${o}`;let s=t?"wss://":"ws://",i=e.pop();if(i==null)throw new Error("Unexpected end of multiaddr");let a=Yt(i,e);return a=a?.replace("tcp://",""),`${s}${a}`},wss:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");let n=Yt(t,e);return n=n?.replace("tcp://",""),`wss://${n}`}};function Ol(r,e){let n=ee(r).getComponents(),o=n.pop();if(o==null)throw new Error("Unexpected end of multiaddr");let s=sx[o.name];if(s==null)throw new Error(`No interpreter found for ${o.name}`);let i=s(o,n)??"";return e?.assumeHttp!==!1&&Ak.includes(o.code)&&(i=i.replace(/^.*:\/\//,""),o.value==="443"?i=`https://${i}`:i=`http://${i}`),(i.startsWith("http://")||i.startsWith("https://")||i.startsWith("ws://")||i.startsWith("wss://"))&&(i=new URL(i).toString(),i.endsWith("/")&&(i=i.substring(0,i.length-1))),i}var fe=r=>({match:e=>{let t=e[0];return t==null||t.code!==r||t.value!=null?!1:e.slice(1)}}),q=(r,e)=>({match:t=>{let n=t[0];return n?.code!==r||n.value==null||e!=null&&n.value!==e?!1:t.slice(1)}}),ix=r=>({match:e=>r.match(e)===!1?e:!1}),te=r=>({match:e=>{let t=r.match(e);return t===!1?e:t}}),et=(...r)=>({match:e=>{let t;for(let n of r){let o=n.match(e);o!==!1&&(t==null||o.length<t.length)&&(t=o)}return t??!1}}),ce=(...r)=>({match:e=>{for(let t of r){let n=t.match(e);if(n===!1)return!1;e=n}return e}});function de(...r){function e(o){if(o==null)return!1;let s=o.getComponents();for(let i of r){let a=i.match(s);if(a===!1)return!1;s=a}return s}function t(o){return e(o)!==!1}function n(o){let s=e(o);return s===!1?!1:s.length===0}return{matchers:r,matches:t,exactMatch:n}}var Sk=q(421),ax=de(Sk),Fl=q(54),$l=q(55),Vl=q(56),lm=q(53),BO=de(Fl,te(q(421))),LO=de($l,te(q(421))),PO=de(Vl,te(q(421))),cx=de(et(lm,Vl,Fl,$l),te(q(421))),lx=ce(q(4),te(q(43))),ux=ce(te(q(42)),q(41),te(q(43))),um=et(lx,ux),Qn=et(um,lm,Fl,$l,Vl),DO=de(et(um,ce(et(lm,Vl,Fl,$l),te(q(421))))),fm=de(lx),dm=de(ux),NO=de(um),hm=ce(Qn,q(6)),qi=ce(Qn,q(273)),zi=de(ce(hm,te(q(421)))),RO=de(qi),pm=ce(qi,fe(460),te(q(421))),Kl=ce(qi,fe(461),te(q(421))),Ik=et(pm,Kl),MO=de(pm),fx=de(Kl),cm=et(Qn,hm,qi,pm,Kl),dx=et(ce(cm,fe(477),te(q(421)))),eo=de(dx),hx=et(ce(cm,fe(478),te(q(421))),ce(cm,fe(448),te(q(449)),fe(477),te(q(421)))),Gi=de(hx),px=ce(qi,fe(280),te(q(466)),te(q(466)),te(q(421))),mm=de(px),mx=ce(Kl,fe(465),te(q(466)),te(q(466)),te(q(421))),gm=de(mx),Ul=et(dx,hx,ce(hm,te(q(421))),ce(Ik,te(q(421))),ce(Qn,te(q(421))),px,mx,q(421)),OO=de(Ul),kk=ce(te(Ul),fe(290),ix(fe(281)),te(q(421))),to=de(kk),_k=et(ce(Ul,fe(290),fe(281),te(q(421))),ce(Ul,fe(281),te(q(421))),ce(fe(281),te(q(421)))),ym=de(_k),Ck=et(ce(Qn,q(6),fe(480),te(q(421))),ce(Qn,fe(480),te(q(421)))),gx=de(Ck),Tk=ce(Qn,et(ce(q(6,"443"),fe(480)),ce(q(6),fe(443)),ce(q(6),fe(448),fe(480)),ce(fe(448),fe(480)),fe(448),fe(443)),te(q(421))),yx=de(Tk),Bk=et(ce(q(777),te(q(421)))),UO=de(Bk),Lk=et(ce(q(400),te(q(421)))),FO=de(Lk);function wm(r,e,t){return r.filter(n=>{if(yx.matches(n)||e&&gx.matches(n))return t||cx.matches(n)?!0:Ht(n)===!1;if(!e&&t){let{host:o}=Q(n);if(o==="127.0.0.1"||o==="localhost"||o.endsWith(".localhost"))return!0}return!1})}async function*Hl(r,e,t,n,o,s={}){for await(let i of e.findProviders(r,s)){let a=wm(i.multiaddrs,n,o);if(a.length===0)continue;let c=Ol(a[0]),l={type:"trustless-gateway",cid:r,url:c.toString(),routing:i.routing};s?.onProgress?.(new W("trustless-gateway:found-provider",l)),yield new us(c,{logger:t,transformRequestInit:s.transformRequestInit})}}async function wx(r,e,t){let{signal:n,log:o}=t??{},s=r.headers.get("content-length");if(s!=null){let c=parseInt(s,10);if(c>e)throw o?.error("content-length header (%d) is greater than the limit (%d)",c,e),r.body!=null&&await r.body.cancel().catch(l=>{o?.error("error cancelling response body after content-length check - %e",l)}),new Error(`Content-Length header (${c}) is greater than the limit (${e}).`)}let i=r.body?.getReader();if(i==null)throw new Error("Response body is not readable");let a=new se;try{for(;;){if(n?.aborted===!0)throw new Error("Response body read was aborted.");let{done:c,value:l}=await i.read();if(c)break;if(a.append(l),a.byteLength>e)throw new Error(`Response body is greater than the limit (${e}), received ${a.byteLength} bytes.`)}}finally{i.cancel().catch(c=>{o?.error("error cancelling reader - %e",c)}).finally(()=>{i.releaseLock()})}return a.subarray()}var us=class{url;#e=0;#t=0;#r=0;#i=0;#s=new Map;log;transformRequestInit;constructor(e,{logger:t,transformRequestInit:n}){this.url=e instanceof URL?e:new URL(e),this.transformRequestInit=n,this.log=t.forComponent(`helia:trustless-gateway-block-broker:${this.url.hostname}`)}#f(e){let t=e.multihash.bytes;return je.encode(t)}async getRawBlock(e,{signal:t,maxSize:n=bx}={}){let o=new URL(this.url.toString());if(o.pathname=`/ipfs/${e.toString()}`,o.search="?format=raw",t?.aborted===!0)throw new Error(`Signal to fetch raw block for CID ${e} from gateway ${this.url} was aborted prior to fetch`);let s=this.#f(e),i=new AbortController,a=()=>{i.abort()};t?.addEventListener("abort",a);try{let c=this.#s.get(s);if(c==null){this.#e++;let l={signal:i.signal,headers:{Accept:"application/vnd.ipld.raw"},cache:"force-cache"},u=this.transformRequestInit!=null?await this.transformRequestInit(l):l,f=new Headers(u.headers);this.log(`sending request
13
+ ${e}[Error list was empty]`,t.trim()}return ub(r,e)}ct.formatters.e=r=>r==null?"undefined":db(r);function sI(r){let e=()=>{};return e.enabled=!1,e.color="",e.diff=0,e.log=()=>{},e.namespace=r,e.destroy=()=>!0,e.extend=()=>e,e}function fr(r){return{forComponent(e){return Ct(e,r)}}}function Ct(r,e){let t=sI(`${r}:trace`);return ct.enabled(`${r}:trace`)&&ct.names.map(n=>n.toString()).find(n=>n.includes(":trace"))!=null&&(t=ct(`${r}:trace`,e)),Object.assign(ct(r,e),{error:ct(`${r}:error`,e),trace:t,newScope:n=>Ct(`${r}:${n}`,e)})}function fb(r){if(r!=null&&(r=r.trim(),r.length!==0))return r}var ns=class extends qt{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};var qc=class extends qt{constructor(e={}){super({...e,sort:(t,n)=>t.options.priority>n.options.priority?-1:t.options.priority<n.options.priority?1:0})}};var zc=class{memoryStorage;points;duration;blockDuration;keyPrefix;constructor(e={}){this.points=e.points??4,this.duration=e.duration??1,this.blockDuration=e.blockDuration??0,this.keyPrefix=e.keyPrefix??"rlflx",this.memoryStorage=new bp}consume(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,t,s);if(i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i.consumedPoints>this.points)throw this.blockDuration>0&&i.consumedPoints<=this.points+t&&(i=this.memoryStorage.set(o,i.consumedPoints,this.blockDuration)),new ic("Rate limit exceeded",i);return i}penalty(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,t,s);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}reward(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,-t,s);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}block(e,t){let n=t*1e3,o=this.points+1;return this.memoryStorage.set(this.getKey(e),o,t),{remainingPoints:0,msBeforeNext:n===0?-1:n,consumedPoints:o,isFirstInDuration:!1}}set(e,t,n=0){let o=(n>=0?n:this.duration)*1e3;return this.memoryStorage.set(this.getKey(e),t,n),{remainingPoints:0,msBeforeNext:o===0?-1:o,consumedPoints:t,isFirstInDuration:!1}}get(e){let t=this.memoryStorage.get(this.getKey(e));return t!=null&&(t.remainingPoints=Math.max(this.points-t.consumedPoints,0)),t}delete(e){this.memoryStorage.delete(this.getKey(e))}_getKeySecDuration(e){return e?.customDuration!=null&&e.customDuration>=0?e.customDuration:this.duration}getKey(e){return this.keyPrefix.length>0?`${this.keyPrefix}:${e}`:e}parseKey(e){return e.substring(this.keyPrefix.length)}},bp=class{storage;constructor(){this.storage=new Map}incrby(e,t,n){let o=this.storage.get(e);if(o!=null){let s=o.expiresAt!=null?o.expiresAt.getTime()-new Date().getTime():-1;return o.expiresAt==null||s>0?(o.value+=t,{remainingPoints:0,msBeforeNext:s,consumedPoints:o.value,isFirstInDuration:!1}):this.set(e,t,n)}return this.set(e,t,n)}set(e,t,n){let o=n*1e3,s=this.storage.get(e);s!=null&&clearTimeout(s.timeoutId);let i={value:t,expiresAt:o>0?new Date(Date.now()+o):void 0};return this.storage.set(e,i),o>0&&(i.timeoutId=setTimeout(()=>{this.storage.delete(e)},o),i.timeoutId.unref!=null&&i.timeoutId.unref()),{remainingPoints:0,msBeforeNext:o===0?-1:o,consumedPoints:i.value,isFirstInDuration:!0}}get(e){let t=this.storage.get(e);if(t!=null)return{remainingPoints:0,msBeforeNext:t.expiresAt!=null?t.expiresAt.getTime()-new Date().getTime():-1,consumedPoints:t.value,isFirstInDuration:!1}}delete(e){let t=this.storage.get(e);return t!=null?(t.timeoutId!=null&&clearTimeout(t.timeoutId),this.storage.delete(e),!0):!1}};var xp=class extends Map{metric;constructor(e){super();let{name:t,metrics:n}=e;this.metric=n.registerMetric(t),this.updateComponentMetric()}set(e,t){return super.set(e,t),this.updateComponentMetric(),this}delete(e){let t=super.delete(e);return this.updateComponentMetric(),t}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function Xe(r){let{name:e,metrics:t}=r,n;return t!=null?n=new xp({name:e,metrics:t}):n=new Map,n}function iI(r){return r[Symbol.asyncIterator]!=null}function aI(r){if(iI(r))return(async()=>{for await(let e of r);})();for(let e of r);}var Ii=aI;function cI(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:o=>{n.push(o)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var os=cI;function lI(r){return r[Symbol.asyncIterator]!=null}function uI(r,e){let t=0;if(lI(r))return(async function*(){for await(let c of r)yield e(c,t++)})();let n=os(r),{value:o,done:s}=n.next();if(s===!0)return(function*(){})();let i=e(o,t++);if(typeof i.then=="function")return(async function*(){yield await i;for(let c of n)yield e(c,t++)})();let a=e;return(function*(){yield i;for(let c of n)yield a(c,t++)})()}var Gc=uI;function fI(r){return r[Symbol.asyncIterator]!=null}function dI(r,e){return fI(r)?(async function*(){let t=0;if(!(e<1)){for await(let n of r)if(yield n,t++,t===e)return}})():(function*(){let t=0;if(!(e<1)){for(let n of r)if(yield n,t++,t===e)return}})()}var Wc=dI;var xt=class extends Error{static name="AbortError";name="AbortError";constructor(e="The operation was aborted",...t){super(e,...t)}};async function jc(r,e,t,n){let o=new xt(n?.errorMessage);n?.errorCode!=null&&(o.code=n.errorCode);let s=n?.errorEvent??"error";return t?.aborted===!0?Promise.reject(o):new Promise((i,a)=>{function c(){Ep(t,"abort",f),Ep(r,e,l),Ep(r,s,u)}let l=d=>{try{if(n?.filter?.(d)===!1)return}catch(h){c(),a(h);return}c(),i(d)},u=d=>{if(c(),d instanceof Error){a(d);return}a(d.detail??n?.error??new Error(`The "${n?.errorEvent}" event was emitted but the event had no '.detail' field. Pass an 'error' option to race-event to change this message.`))},f=()=>{c(),a(o)};vp(t,"abort",f),vp(r,e,l),vp(r,s,u)})}function vp(r,e,t){r!=null&&(hb(r)?r.addEventListener(e,t):r.addListener(e,t))}function Ep(r,e,t){r!=null&&(hb(r)?r.removeEventListener(e,t):r.removeListener(e,t))}function hb(r){return typeof r.addEventListener=="function"&&typeof r.removeEventListener=="function"}var pb=Symbol.for("nodejs.util.inspect.custom"),hI=114,ki=class{type;multihash;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[Ca]=!0;toString(){return this.string==null&&(this.string=le.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return H.createV1(hI,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return X(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return X(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[pb](){return`PeerId(${this.toString()})`}},_i=class extends ki{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},Ci=class extends ki{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}},Ti=class extends ki{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}},pI=2336,Bi=class{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=Ge.digest(B(this.url))}[pb](){return`PeerId(${this.url})`}[Ca]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return H.createV1(pI,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=M(e)),e.toString()===this.toString())}};var mI=114,mb=2336;function Tt(r,e){let t;if(r.charAt(0)==="1"||r.charAt(0)==="Q")t=dt(le.decode(`z${r}`));else{if(r.startsWith("k51qzi5uqu5")||r.startsWith("kzwfwjn5ji4")||r.startsWith("k2k4r8")||r.startsWith("bafz"))return Wn(H.parse(r));if(e==null)throw new k('Please pass a multibase decoder for strings that do not start with "1" or "Q"');t=dt(e.decode(r))}return ss(t)}function Ap(r){if(r.type==="Ed25519")return new Ci({multihash:r.toCID().multihash,publicKey:r});if(r.type==="secp256k1")return new Ti({multihash:r.toCID().multihash,publicKey:r});if(r.type==="RSA")return new _i({multihash:r.toCID().multihash,publicKey:r});throw new Dt}function gb(r){return Ap(r.publicKey)}function ss(r){if(yI(r))return new _i({multihash:r});if(gI(r))try{let e=Ja(r);if(e.type==="Ed25519")return new Ci({multihash:r,publicKey:e});if(e.type==="secp256k1")return new Ti({multihash:r,publicKey:e})}catch{let t=M(r.digest);return new Bi(new URL(t))}throw new Vr("Supplied PeerID Multihash is invalid")}function Wn(r){if(r?.multihash==null||r.version==null||r.version===1&&r.code!==mI&&r.code!==mb)throw new va("Supplied PeerID CID is invalid");if(r.code===mb){let e=M(r.multihash.digest);return new Bi(new URL(e))}return ss(r.multihash)}function gI(r){return r.code===Ge.code}function yI(r){return r.code===Rt.code}function jn(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let n=r.next(),o=n.value;return n.done===!0||o==null?{done:!0,value:void 0}:{done:!1,value:e(o)}}};return t}function Yc(r){let e=dt(le.decode(`z${r}`));return ss(e)}var Bt=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),{key:t,value:n})}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return jn(this.map.entries(),e=>[e[1].key,e[1].value])}forEach(e){this.map.forEach((t,n)=>{e(t.value,t.key,this)})}get(e){return this.map.get(e.toString())?.value}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),{key:e,value:t})}keys(){return jn(this.map.values(),e=>e.key)}values(){return jn(this.map.values(),e=>e.value)}get size(){return this.map.size}};var Yn=class r{set;constructor(e){if(this.set=new Set,e!=null)for(let t of e)this.set.add(t.toString())}get size(){return this.set.size}[Symbol.iterator](){return this.values()}add(e){this.set.add(e.toString())}clear(){this.set.clear()}delete(e){this.set.delete(e.toString())}entries(){return jn(this.set.entries(),e=>{let t=Yc(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let n=Yc(t);e(n,n,this)})}has(e){return this.set.has(e.toString())}values(){return jn(this.set.values(),e=>Yc(e))}intersection(e){let t=new r;for(let n of e)this.has(n)&&t.add(n);return t}difference(e){let t=new r;for(let n of this)e.has(n)||t.add(n);return t}union(e){let t=new r;for(let n of e)t.add(n);for(let n of this)t.add(n);return t}};var Sp=class extends Bt{metric;constructor(e){super();let{name:t,metrics:n}=e;this.metric=n.registerMetric(t),this.updateComponentMetric()}set(e,t){return super.set(e,t),this.updateComponentMetric(),this}delete(e){let t=super.delete(e);return this.updateComponentMetric(),t}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function Ip(r){let{name:e,metrics:t}=r,n;return t!=null?n=new Sp({name:e,metrics:t}):n=new Bt,n}function wI(r){return r[Symbol.asyncIterator]!=null}function bI(r){if(wI(r))return(async()=>{let n=new Uint8Array(0);for await(let o of r)n=Ce([n,o],n.length+o.length);return n})();let e=[],t=0;for(let n of r)e.push(n),t+=n.byteLength;return Ce(e,t)}var yb=bI;var Zc=class extends AggregateError{static name="DNSQueryFailedError";name="DNSQueryFailedError"};var _p=pn(bb(),1);var Cp=class r extends Error{name="TimeoutError";constructor(e,t){super(e,t),Error.captureStackTrace?.(this,r)}},xb=r=>r.reason??new DOMException("This operation was aborted.","AbortError");function Tp(r,e){let{milliseconds:t,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout},signal:i}=e,a,c,u=new Promise((f,d)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(i?.aborted){d(xb(i));return}if(i&&(c=()=>{d(xb(i))},i.addEventListener("abort",c,{once:!0})),r.then(f,d),t===Number.POSITIVE_INFINITY)return;let h=new Cp;a=s.setTimeout.call(void 0,()=>{if(n){try{f(n())}catch(p){d(p)}return}typeof r.cancel=="function"&&r.cancel(),o===!1?f():o instanceof Error?d(o):(h.message=o??`Promise timed out after ${t} milliseconds`,d(h))},t)}).finally(()=>{u.clear(),c&&i&&i.removeEventListener("abort",c)});return u.clear=()=>{s.clearTimeout.call(void 0,a),a=void 0},u}function Bp(r,e,t){let n=0,o=r.length;for(;o>0;){let s=Math.trunc(o/2),i=n+s;t(r[i],e)<=0?(n=++i,o-=s+1):o=s}return n}var Pi=class{#e=[];enqueue(e,t){let{priority:n=0,id:o}=t??{},s={priority:n,id:o,run:e};if(this.size===0||this.#e[this.size-1].priority>=n){this.#e.push(s);return}let i=Bp(this.#e,s,(a,c)=>c.priority-a.priority);this.#e.splice(i,0,s)}setPriority(e,t){let n=this.#e.findIndex(s=>s.id===e);if(n===-1)throw new ReferenceError(`No promise function with the id "${e}" exists in the queue.`);let[o]=this.#e.splice(n,1);this.enqueue(o.run,{priority:t,id:e})}dequeue(){return this.#e.shift()?.run}filter(e){return this.#e.filter(t=>t.priority===e.priority).map(t=>t.run)}get size(){return this.#e.length}};var Zn=class extends _p.default{#e;#t;#r=0;#i;#s=!1;#f=!1;#d;#b=0;#g=0;#a;#c;#n;#x;#o=0;#h;#l;#k=1n;#p=new Map;timeout;constructor(e){if(super(),e={carryoverIntervalCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:Pi,...e},!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${e.intervalCap?.toString()??""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${e.interval?.toString()??""}\` (${typeof e.interval})`);if(this.#e=e.carryoverIntervalCount??e.carryoverConcurrencyCount??!1,this.#t=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#i=e.intervalCap,this.#d=e.interval,this.#n=new e.queueClass,this.#x=e.queueClass,this.concurrency=e.concurrency,e.timeout!==void 0&&!(Number.isFinite(e.timeout)&&e.timeout>0))throw new TypeError(`Expected \`timeout\` to be a positive finite number, got \`${e.timeout}\` (${typeof e.timeout})`);this.timeout=e.timeout,this.#l=e.autoStart===!1,this.#D()}get#_(){return this.#t||this.#r<this.#i}get#C(){return this.#o<this.#h}#T(){this.#o--,this.#o===0&&this.emit("pendingZero"),this.#y(),this.emit("next")}#B(){this.#S(),this.#A(),this.#c=void 0}get#L(){let e=Date.now();if(this.#a===void 0){let t=this.#b-e;if(t<0){if(this.#g>0){let n=e-this.#g;if(n<this.#d)return this.#v(this.#d-n),!0}this.#r=this.#e?this.#o:0}else return this.#v(t),!0}return!1}#v(e){this.#c===void 0&&(this.#c=setTimeout(()=>{this.#B()},e))}#E(){this.#a&&(clearInterval(this.#a),this.#a=void 0)}#P(){this.#c&&(clearTimeout(this.#c),this.#c=void 0)}#y(){if(this.#n.size===0)return this.#E(),this.emit("empty"),this.#o===0&&(this.#P(),this.emit("idle")),!1;let e=!1;if(!this.#l){let t=!this.#L;if(this.#_&&this.#C){let n=this.#n.dequeue();this.#t||(this.#r++,this.#m()),this.emit("active"),this.#g=Date.now(),n(),t&&this.#A(),e=!0}}return e}#A(){this.#t||this.#a!==void 0||(this.#a=setInterval(()=>{this.#S()},this.#d),this.#b=Date.now()+this.#d)}#S(){this.#r===0&&this.#o===0&&this.#a&&this.#E(),this.#r=this.#e?this.#o:0,this.#w(),this.#m()}#w(){for(;this.#y(););}get concurrency(){return this.#h}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this.#h=e,this.#w()}setPriority(e,t){if(typeof t!="number"||!Number.isFinite(t))throw new TypeError(`Expected \`priority\` to be a finite number, got \`${t}\` (${typeof t})`);this.#n.setPriority(e,t)}async add(e,t={}){return t.id??=(this.#k++).toString(),t={timeout:this.timeout,...t},new Promise((n,o)=>{let s=Symbol(`task-${t.id}`);this.#n.enqueue(async()=>{this.#o++,this.#p.set(s,{id:t.id,priority:t.priority??0,startTime:Date.now(),timeout:t.timeout});let i;try{try{t.signal?.throwIfAborted()}catch(l){throw this.#t||this.#r--,this.#p.delete(s),l}let a=e({signal:t.signal});if(t.timeout&&(a=Tp(Promise.resolve(a),{milliseconds:t.timeout,message:`Task timed out after ${t.timeout}ms (queue has ${this.#o} running, ${this.#n.size} waiting)`})),t.signal){let{signal:l}=t;a=Promise.race([a,new Promise((u,f)=>{i=()=>{f(l.reason)},l.addEventListener("abort",i,{once:!0})})])}let c=await a;n(c),this.emit("completed",c)}catch(a){o(a),this.emit("error",a)}finally{i&&t.signal?.removeEventListener("abort",i),this.#p.delete(s),queueMicrotask(()=>{this.#T()})}},t),this.emit("add"),this.#y()})}async addAll(e,t){return Promise.all(e.map(async n=>this.add(n,t)))}start(){return this.#l?(this.#l=!1,this.#w(),this):this}pause(){this.#l=!0}clear(){this.#n=new this.#x,this.#I()}async onEmpty(){this.#n.size!==0&&await this.#u("empty")}async onSizeLessThan(e){this.#n.size<e||await this.#u("next",()=>this.#n.size<e)}async onIdle(){this.#o===0&&this.#n.size===0||await this.#u("idle")}async onPendingZero(){this.#o!==0&&await this.#u("pendingZero")}async onRateLimit(){this.isRateLimited||await this.#u("rateLimit")}async onRateLimitCleared(){this.isRateLimited&&await this.#u("rateLimitCleared")}async onError(){return new Promise((e,t)=>{let n=o=>{this.off("error",n),t(o)};this.on("error",n)})}async#u(e,t){return new Promise(n=>{let o=()=>{t&&!t()||(this.off(e,o),n())};this.on(e,o)})}get size(){return this.#n.size}sizeBy(e){return this.#n.filter(e).length}get pending(){return this.#o}get isPaused(){return this.#l}#D(){this.#t||(this.on("add",()=>{this.#n.size>0&&this.#m()}),this.on("next",()=>{this.#m()}))}#m(){this.#t||this.#f||(this.#f=!0,queueMicrotask(()=>{this.#f=!1,this.#I()}))}#I(){let e=this.#s,t=!this.#t&&this.#r>=this.#i&&this.#n.size>0;t!==e&&(this.#s=t,this.emit(t?"rateLimit":"rateLimitCleared"))}get isRateLimited(){return this.#s}get isSaturated(){return this.#o===this.#h&&this.#n.size>0||this.isRateLimited&&this.#n.size>0}get runningTasks(){return[...this.#p.values()].map(e=>({...e}))}};function Jc(r){let e=[vt.A];return r==null?e:Array.isArray(r)?r.length===0?e:r:[r]}var Lp=60;function Qc(r){return{Status:r.Status??0,TC:r.TC??r.flag_tc??!1,RD:r.RD??r.flag_rd??!1,RA:r.RA??r.flag_ra??!1,AD:r.AD??r.flag_ad??!1,CD:r.CD??r.flag_cd??!1,Question:(r.Question??r.questions??[]).map(e=>({name:e.name,type:vt[e.type]})),Answer:(r.Answer??r.answers??[]).map(e=>({name:e.name,type:vt[e.type],TTL:e.TTL??e.ttl??Lp,data:e.data instanceof Uint8Array?M(e.data):e.data}))}}var EI=4;function Pp(r,e={}){let t=new Zn({concurrency:e.queryConcurrency??EI});return async(n,o={})=>{let s=new URLSearchParams;s.set("name",n),Jc(o.types).forEach(a=>{s.append("type",vt[a])}),o.onProgress?.(new W("dns:query",n));let i=await t.add(async()=>{let a=await fetch(`${r}?${s}`,{headers:{accept:"application/dns-json"},signal:o?.signal});if(a.status!==200)throw new Error(`Unexpected HTTP status: ${a.status} - ${a.statusText}`);let c=Qc(await a.json());return o.onProgress?.(new W("dns:response",c)),c},{signal:o.signal});if(i==null)throw new Error("No DNS response received");return i}}function vb(){return[Pp("https://cloudflare-dns.com/dns-query"),Pp("https://dns.google/resolve")]}var Sb=pn(Ab(),1);var Dp=class{lru;constructor(e){this.lru=(0,Sb.default)(e)}get(e,t){let n=!0,o=[];for(let s of t){let i=this.getAnswers(e,s);if(i.length===0){n=!1;break}o.push(...i)}if(n)return Qc({answers:o})}getAnswers(e,t){let n=`${e.toLowerCase()}-${t}`,o=this.lru.get(n);if(o!=null){let s=o.filter(i=>i.expires>Date.now()).map(({expires:i,value:a})=>({...a,TTL:Math.round((i-Date.now())/1e3),type:vt[a.type]}));return s.length===0&&this.lru.remove(n),s}return[]}add(e,t){let n=`${e.toLowerCase()}-${t.type}`,o=this.lru.get(n)??[];o.push({expires:Date.now()+(t.TTL??Lp)*1e3,value:t}),this.lru.set(n,o)}remove(e,t){let n=`${e.toLowerCase()}-${t}`;this.lru.remove(n)}clear(){this.lru.clear()}};function Ib(r){return new Dp(r)}var AI=1e3,el=class{resolvers;cache;constructor(e){this.resolvers={},this.cache=Ib(e.cacheSize??AI),Object.entries(e.resolvers??{}).forEach(([t,n])=>{Array.isArray(n)||(n=[n]),t.endsWith(".")||(t=`${t}.`),this.resolvers[t]=n}),this.resolvers["."]==null&&(this.resolvers["."]=vb())}async query(e,t={}){let n=Jc(t.types),o=t.cached!==!1?this.cache.get(e,n):void 0;if(o!=null)return t.onProgress?.(new W("dns:cache",o)),o;let s=`${e.split(".").pop()}.`,i=(this.resolvers[s]??this.resolvers["."]).sort(()=>Math.random()>.5?-1:1),a=[];for(let c of i){if(t.signal?.aborted===!0)break;try{let l=await c(e,{...t,types:n});for(let u of l.Answer)this.cache.add(e,u);return l}catch(l){a.push(l),t.onProgress?.(new W("dns:error",l))}}throw new Zc(a,`DNS lookup of ${e} ${n} failed`)}};var vt;(function(r){r[r.A=1]="A",r[r.CNAME=5]="CNAME",r[r.TXT=16]="TXT",r[r.AAAA=28]="AAAA"})(vt||(vt={}));function tl(r={}){return new el(r)}var Tr="/",kb=new TextEncoder().encode(Tr),rl=kb[0],ge=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=B(e);else if(e instanceof Uint8Array)this._buf=e;else throw new Error("Invalid key, should be String of Uint8Array");if(t==null&&(t=!0),t&&this.clean(),this._buf.byteLength===0||this._buf[0]!==rl)throw new Error("Invalid key")}toString(e="utf8"){return M(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join(Tr))}static random(){return new r(Math.random().toString().substring(2))}static asKey(e){return e instanceof Uint8Array||typeof e=="string"?new r(e):typeof e.uint8Array=="function"?new r(e.uint8Array()):null}clean(){if((this._buf==null||this._buf.byteLength===0)&&(this._buf=kb),this._buf[0]!==rl){let e=new Uint8Array(this._buf.byteLength+1);e.fill(rl,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===rl;)this._buf=this._buf.subarray(0,-1)}less(e){let t=this.list(),n=e.list();for(let o=0;o<t.length;o++){if(n.length<o+1)return!1;let s=t[o],i=n[o];if(s<i)return!0;if(s>i)return!1}return t.length<n.length}reverse(){return r.withNamespaces(this.list().slice().reverse())}namespaces(){return this.list()}baseNamespace(){let e=this.namespaces();return e[e.length-1]}list(){return this.toString().split(Tr).slice(1)}type(){return SI(this.baseNamespace())}name(){return II(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith(Tr)||(e+=Tr),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r(Tr):new r(e.slice(0,-1).join(Tr))}child(e){return this.toString()===Tr?e:e.toString()===Tr?this:new r(this.toString()+e.toString(),!1)}isAncestorOf(e){return e.toString()===this.toString()?!1:e.toString().startsWith(this.toString())}isDecendantOf(e){return e.toString()===this.toString()?!1:this.toString().startsWith(e.toString())}isTopLevel(){return this.list().length===1}concat(...e){return r.withNamespaces([...this.namespaces(),...kI(e.map(t=>t.namespaces()))])}};function SI(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function II(r){let e=r.split(":");return e[e.length-1]}function kI(r){return[].concat(...r)}function nl({enumerable:r=!0,configurable:e=!1}={}){return{enumerable:r,configurable:e,writable:!1}}function*_I(r,e){if(e!=null&&typeof e=="object")if(Array.isArray(e))for(let[t,n]of e.entries()){let o=[...r,t],s=H.asCID(n);s!=null?yield[o.join("/"),s]:typeof n=="object"&&(yield*Np(n,o))}else{let t=H.asCID(e);t!=null?yield[r.join("/"),t]:yield*Np(e,r)}}function*Np(r,e){if(r==null||r instanceof Uint8Array)return;let t=H.asCID(r);t!=null&&(yield[e.join("/"),t]);for(let[n,o]of Object.entries(r)){let s=[...e,n];yield*_I(s,o)}}function*CI(r,e){if(Array.isArray(e))for(let[t,n]of e.entries()){let o=[...r,t];yield o.join("/"),typeof n=="object"&&H.asCID(n)==null&&(yield*Rp(n,o))}else yield*Rp(e,r)}function*Rp(r,e){if(!(r==null||typeof r!="object"))for(let[t,n]of Object.entries(r)){let o=[...e,t];yield o.join("/"),n!=null&&!(n instanceof Uint8Array)&&typeof n=="object"&&H.asCID(n)==null&&(yield*CI(o,n))}}function TI(r,e){let t=r;for(let[n,o]of e.entries()){if(t=t[o],t==null)throw new Error(`Object has no property at ${e.slice(0,n+1).map(i=>`[${JSON.stringify(i)}]`).join("")}`);let s=H.asCID(t);if(s!=null)return{value:s,remaining:e.slice(n+1).join("/")}}return{value:t}}var Mp=class{cid;bytes;value;asBlock;constructor({cid:e,bytes:t,value:n}){if(e==null||t==null||typeof n>"u")throw new Error("Missing required argument");this.cid=e,this.bytes=t,this.value=n,this.asBlock=this,Object.defineProperties(this,{cid:nl(),bytes:nl(),value:nl(),asBlock:nl()})}links(){return Np(this.value,[])}tree(){return Rp(this.value,[])}get(e="/"){return TI(this.value,e.split("/").filter(Boolean))}};function _b({bytes:r,cid:e,value:t,codec:n}){let o=t!==void 0?t:n?.decode(r);if(o===void 0)throw new Error('Missing required argument, must either provide "value" or "codec"');return new Mp({cid:e,bytes:r,value:o})}var ol=class extends Error{static name="AlreadyPinnedError";name="AlreadyPinnedError"},Di=class extends Error{static name="BlockPinnedError";name="BlockPinnedError"},sl=class extends Error{static name="InvalidDatastoreVersionError";name="InvalidDatastoreVersionError"},il=class extends Error{static name="InvalidConfigurationError";name="InvalidConfigurationError"},al=class extends AggregateError{static name="GetFailedError";name="GetFailedError"},cl=class extends AggregateError{static name="LoadBlockFailedError";name="LoadBlockFailedError"};var Bb="/pin/",Cb="/pinned-block/",Op=or,Tb=1;function ll(r){return r.version===0&&(r=r.toV1()),new ge(`${Bb}${r.toString(Op)}`)}var ul=class{datastore;blockstore;getCodec;constructor(e,t,n){this.datastore=e,this.blockstore=t,this.getCodec=n}async*add(e,t={}){let n=ll(e);if(await this.datastore.has(n))throw new ol("Already pinned");let o=Math.round(t.depth??1/0);if(o<0)throw new k("Depth must be greater than or equal to 0");let s=new qt({concurrency:Tb});for await(let a of this.#e(e,s,{...t,depth:o}))await this.#t(a,c=>c.pinnedBy.find(l=>X(l,e.bytes))!=null?!1:(c.pinCount++,c.pinnedBy.push(e.bytes),!0),t),yield a;let i={depth:o,metadata:t.metadata??{}};await this.datastore.put(n,an(i),t)}async*#e(e,t,n){if(n.depth===-1)return;let o=await this.getCodec(e.code),s=await yb(this.blockstore.get(e,n)),i=_b({bytes:s,cid:e,codec:o});yield e;for(let[,a]of i.links())yield*await t.add(async()=>this.#e(a,t,{...n,depth:n.depth-1}))}async#t(e,t,n){let o=new ge(`${Cb}${Op.encode(e.multihash.bytes)}`),s={pinCount:0,pinnedBy:[]};try{s=bt(await this.datastore.get(o,n))}catch(a){if(a.name!=="NotFoundError")throw a}if(t(s)){if(s.pinCount===0&&await this.datastore.has(o)){await this.datastore.delete(o);return}await this.datastore.put(o,an(s),n),n.onProgress?.(new W("helia:pin:add",e))}}async*rm(e,t={}){let n=ll(e),o=await this.datastore.get(n,t),s=bt(o);await this.datastore.delete(n,t);let i=new qt({concurrency:Tb});for await(let a of this.#e(e,i,{...t,depth:s.depth}))await this.#t(a,c=>(c.pinCount--,c.pinnedBy=c.pinnedBy.filter(l=>X(l,e.bytes)),!0),{...t,depth:s.depth}),yield a}async*ls(e={}){for await(let{key:t,value:n}of this.datastore.query({prefix:Bb+(e.cid!=null?`${e.cid.toString(or)}`:"")},e)){let o=H.parse(t.toString().substring(5),or),s=bt(n);yield{cid:o,...s}}}async isPinned(e,t={}){let n=new ge(`${Cb}${Op.encode(e.multihash.bytes)}`);return this.datastore.has(n,t)}async get(e,t){let n=ll(e),o=await this.datastore.get(n,t);return bt(o)}async setMetadata(e,t,n){let o=ll(e),s=await this.datastore.get(o,n),i=bt(s);i.metadata=t??{},await this.datastore.put(o,an(i),n)}};var Up=1,Fp=5;var Ni=class extends Error{static name="InsufficientProvidersError";constructor(e="Insufficient providers found"){super(e),this.name="InsufficientProvidersError"}},cn=class extends Error{static name="NoRoutersAvailableError";constructor(e="No routers available"){super(e),this.name="NoRoutersAvailableError"}},Ri=class extends Error{static name="UnknownHashAlgorithmError";constructor(e="Unknown hash algorithm"){super(e),this.name="UnknownHashAlgorithmError"}},Mi=class extends Error{static name="UnknownCodecError";constructor(e="Unknown codec"){super(e),this.name="UnknownCodecError"}},$p=class extends Error{static name="InvalidCodecError";constructor(e="Invalid codec"){super(e),this.name="InvalidCodecError"}};var BI=5,fl=class{log;routers;providerLookupConcurrency;constructor(e,t){this.log=e.logger.forComponent("helia:routing"),this.routers=t.routers??[],this.providerLookupConcurrency=t.providerLookupConcurrency??BI,this.findProviders=e.metrics?.traceFunction("helia.routing.findProviders",this.findProviders.bind(this),{optionsIndex:1})??this.findProviders,this.provide=e.metrics?.traceFunction("helia.routing.provide",this.provide.bind(this),{optionsIndex:1})??this.provide,this.cancelReprovide=e.metrics?.traceFunction("helia.routing.cancelReprovide",this.cancelReprovide.bind(this),{optionsIndex:1})??this.cancelReprovide,this.put=e.metrics?.traceFunction("helia.routing.put",this.put.bind(this),{optionsIndex:2})??this.put,this.get=e.metrics?.traceFunction("helia.routing.get",this.get.bind(this),{optionsIndex:1})??this.get,this.findPeer=e.metrics?.traceFunction("helia.routing.findPeer",this.findPeer.bind(this),{optionsIndex:1})??this.findPeer,this.getClosestPeers=e.metrics?.traceFunction("helia.routing.getClosestPeers",this.getClosestPeers.bind(this),{optionsIndex:1})??this.getClosestPeers}async start(){await rr(...this.routers)}async stop(){await nr(...this.routers)}async*findProviders(e,t={}){if(this.routers.length===0)throw new cn("No content routers available");let n=new ns({concurrency:this.providerLookupConcurrency}),o=0,s=[],i=this,a=0;this.log("findProviders for %c start using routers %s",e,this.routers.map(l=>l.toString()).join(", "));let c=Xn(this.routers,"findProviders").map(async function*(l){let u=0;try{for await(let f of l.findProviders(e,t))u++,yield f}catch(f){s.push(f)}finally{i.log("router %s found %d providers for %c",l,u,e),a++,a===c.length&&n.size===0&&n.emitIdle()}});for await(let l of It(n.toGenerator(),...c))if(l!=null){if(l.multiaddrs.length===0){if(n.find(l.id)!=null)continue;n.add(async()=>{try{let u=await this.findPeer(l.id,t);return u.multiaddrs.length===0?null:{...u,protocols:l.protocols,routing:l.routing}}catch(u){return this.log.error("could not load multiaddrs for peer %p - %e",l.id,u),null}},{peerId:l.id,signal:t.signal}).catch(u=>{this.log.error("could not load multiaddrs for peer %p - %e",l.id,u)});continue}o++,yield l}this.log("findProviders finished, found %d providers for %c",o,e)}async provide(e,t={}){if(this.routers.length===0)throw new cn("No content routers available");await Promise.all(Xn(this.routers,"provide").map(async n=>{await n.provide(e,t)}))}async cancelReprovide(e,t={}){await Promise.all(Xn(this.routers,"cancelReprovide").map(async n=>{await n.cancelReprovide(e,t)}))}async put(e,t,n){await Promise.all(Xn(this.routers,"put").map(async o=>{await o.put(e,t,n)}))}async get(e,t){let n=[],o;try{o=await Promise.any(Xn(this.routers,"get").map(async s=>{try{return await s.get(e,t)}catch(i){this.log("router %s failed with %e",s,i),n.push(i)}}))}catch{}if(o==null)throw new al(n,`Failed to get value key ${M(e,"base58btc")}`);return o}async findPeer(e,t){if(this.routers.length===0)throw new cn("No peer routers available");let n=this,o=It(...Xn(this.routers,"findPeer").map(s=>(async function*(){try{yield await s.findPeer(e,t)}catch(i){n.log.error(i)}})()));for await(let s of o)if(s!=null)return s;throw new ke("Could not find peer in routing")}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new cn("No peer routers available");for await(let n of It(...Xn(this.routers,"getClosestPeers").map(o=>o.getClosestPeers(e,t))))n!=null&&(yield n)}};function Xn(r,e){return r.filter(t=>t[e]!=null)}var dl=class extends Error{static name="QueueFullError";constructor(e="The queue was full"){super(e),this.name="QueueFullError"}};var hl=class extends Error{type;code;constructor(e,t,n){super(e??"The operation was aborted"),this.type="aborted",this.name=n??"AbortError",this.code=t??"ABORT_ERR"}};async function Lb(r,e,t){if(e==null)return r;if(e.aborted)return r.catch(()=>{}),Promise.reject(new hl(t?.errorMessage,t?.errorCode,t?.errorName));let n,o=new hl(t?.errorMessage,t?.errorCode,t?.errorName);try{return await Promise.race([r,new Promise((s,i)=>{n=()=>{i(o)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var pl=class{deferred;signal;constructor(e){this.signal=e,this.deferred=Promise.withResolvers(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new xt)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function LI(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var ml=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=LI(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,this.controller.signal,this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new xt),this.cleanup())}async join(e={}){let t=new pl(e.signal);return this.recipients.push(t),e.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await Lb(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};function Vp(r,e){let t,n=function(){let o=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(o,e)};return n.start=()=>{},n.stop=()=>{clearTimeout(t)},n}var Oi=class extends _e{concurrency;maxSize;queue;pending;sort;autoStart;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.maxSize=e.maxSize??Number.POSITIVE_INFINITY,this.pending=0,this.autoStart=e.autoStart??!0,this.sort=e.sort,this.queue=[],this.emitEmpty=Vp(this.emitEmpty.bind(this),1),this.emitIdle=Vp(this.emitIdle.bind(this),1)}[Symbol.asyncIterator](){return this.toGenerator()}emitEmpty(){this.size===0&&this.safeDispatchEvent("empty")}emitIdle(){this.running===0&&this.safeDispatchEvent("idle")}tryToStartAnother(){if(this.size===0)return this.emitEmpty(),this.running===0&&this.emitIdle(),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.safeDispatchEvent("next"),this.autoStart&&this.tryToStartAnother()}),!0)}return!1}enqueue(e){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}start(){this.autoStart===!1&&(this.autoStart=!0,this.tryToStartAnother())}pause(){this.autoStart=!1}async add(e,t){if(t?.signal?.throwIfAborted(),this.size===this.maxSize)throw new dl;let n=new ml(e,t);return this.enqueue(n),this.safeDispatchEvent("add"),this.autoStart&&this.tryToStartAnother(),n.join(t).then(o=>(this.safeDispatchEvent("success",{detail:{job:n,result:o}}),o)).catch(o=>{if(n.status==="queued"){for(let s=0;s<this.queue.length;s++)if(this.queue[s]===n){this.queue.splice(s,1);break}}throw this.safeDispatchEvent("failure",{detail:{job:n,error:o}}),o})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new xt)}),this.clear()}async onEmpty(e){this.size!==0&&await jc(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await jc(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await jc(this,"idle",e?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=Ko({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},o=c=>{c.detail!=null&&t.push(c.detail.result)},s=c=>{n(c.detail.error)},i=()=>{n()},a=()=>{n(new xt("Queue aborted"))};this.addEventListener("success",o),this.addEventListener("failure",s),this.addEventListener("idle",i),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("success",o),this.removeEventListener("failure",s),this.removeEventListener("idle",i),e?.signal?.removeEventListener("abort",a),n()}}};var gl="lock:worker:request-read",yl="lock:worker:abort-read-request",wl="lock:worker:release-read",bl="lock:master:grant-read",xl="lock:master:error-read",vl="lock:worker:request-write",El="lock:worker:abort-write-request",Al="lock:worker:release-write",Sl="lock:master:grant-write",Il="lock:master:error-write",kl="lock:worker:finalize",_l="mortice",Pb={singleProcess:!1};var Kp=(r,e,t,n,o,s,i,a,c)=>l=>{if(l.data==null)return;let u={type:l.data.type,name:l.data.name,identifier:l.data.identifier};u.type===o&&r.safeDispatchEvent(t,{detail:{name:u.name,identifier:u.identifier,handler:async()=>{e.postMessage({type:c,name:u.name,identifier:u.identifier}),await new Promise(f=>{let d=h=>{if(h?.data==null)return;let p={type:h.data.type,name:h.data.name,identifier:h.data.identifier};p.type===a&&p.identifier===u.identifier&&(e.removeEventListener("message",d),f())};e.addEventListener("message",d)})},onError:f=>{e.postMessage({type:i,name:u.name,identifier:u.identifier,error:{message:f.message,name:f.name,stack:f.stack}})}}}),u.type===s&&r.safeDispatchEvent(n,{detail:{name:u.name,identifier:u.identifier}}),u.type===kl&&r.safeDispatchEvent("finalizeRequest",{detail:{name:u.name}})};var Db=(r=10)=>Math.random().toString().substring(2,r+2);var Cl=class{name;channel;constructor(e){this.name=e,this.channel=new BroadcastChannel(_l)}readLock(e){return this.sendRequest(gl,yl,bl,xl,wl,e)}writeLock(e){return this.sendRequest(vl,El,Sl,Il,Al,e)}finalize(){this.channel.postMessage({type:kl,name:this.name}),this.channel.close()}async sendRequest(e,t,n,o,s,i){i?.signal?.throwIfAborted();let a=Db();return this.channel.postMessage({type:e,identifier:a,name:this.name}),new Promise((c,l)=>{let u=()=>{this.channel.postMessage({type:t,identifier:a,name:this.name})};i?.signal?.addEventListener("abort",u,{once:!0});let f=d=>{if(d.data?.identifier===a&&(d.data?.type===n&&(this.channel.removeEventListener("message",f),i?.signal?.removeEventListener("abort",u),c(()=>{this.channel.postMessage({type:s,identifier:a,name:this.name})})),d.data.type===o)){this.channel.removeEventListener("message",f),i?.signal?.removeEventListener("abort",u);let h=new Error;d.data.error!=null&&(h.message=d.data.error.message,h.name=d.data.error.name,h.stack=d.data.error.stack),l(h)}};this.channel.addEventListener("message",f)})}};var Nb=r=>{if(r=Object.assign({},Pb,r),!!globalThis.document||r.singleProcess){let t=new BroadcastChannel(_l),n=new _e;return t.addEventListener("message",Kp(n,t,"requestReadLock","abortReadLockRequest",gl,yl,xl,wl,bl)),t.addEventListener("message",Kp(n,t,"requestWriteLock","abortWriteLockRequest",vl,El,Il,Al,Sl)),n}return new Cl(r.name)};var Jn=new Map,Ui;function Rb(r){return typeof r?.readLock=="function"&&typeof r?.writeLock=="function"}function PI(r){if(Ui==null&&(Ui=Nb(r),!Rb(Ui))){let e=Ui;e.addEventListener("requestReadLock",t=>{let n=t.detail.name,o=t.detail.identifier,s=Jn.get(n);if(s==null)return;let i=new AbortController,a=c=>{c.detail.name!==n||c.detail.identifier!==o||i.abort()};e.addEventListener("abortReadLockRequest",a),s.readLock({signal:i.signal}).then(async c=>{await t.detail.handler().finally(()=>{c()})}).catch(c=>{t.detail.onError(c)}).finally(()=>{e.removeEventListener("abortReadLockRequest",a)})}),e.addEventListener("requestWriteLock",t=>{let n=t.detail.name,o=t.detail.identifier,s=Jn.get(n);if(s==null)return;let i=new AbortController,a=c=>{c.detail.name!==n||c.detail.identifier!==o||i.abort()};e.addEventListener("abortWriteLockRequest",a),s.writeLock({signal:i.signal}).then(async c=>{await t.detail.handler().finally(()=>{c()})}).catch(c=>{t.detail.onError(c)}).finally(()=>{e.removeEventListener("abortWriteLockRequest",a)})}),e.addEventListener("finalizeRequest",t=>{let n=t.detail.name,o=Jn.get(n);o?.finalize()})}return Ui}async function Hp(r,e){let t,n,o=new Promise((i,a)=>{t=i,n=a}),s=()=>{n(new xt)};return e?.signal?.addEventListener("abort",s,{once:!0}),r.add(async()=>{await new Promise(i=>{t(()=>{e?.signal?.removeEventListener("abort",s),i()})})},{signal:e?.signal}).catch(i=>{n(i)}),o}var Mb=(r,e)=>{let t=Jn.get(r);if(t!=null)return t;let n=PI(e);if(Rb(n))return t=n,Jn.set(r,t),t;let o=new Oi({concurrency:1}),s;return t={async readLock(i){if(s!=null)return Hp(s,i);s=new Oi({concurrency:e.concurrency,autoStart:!1});let a=s,c=Hp(s,i);return o.add(async()=>{a.start(),await a.onIdle().then(()=>{s===a&&(s=null)})}),c},async writeLock(i){return s=null,Hp(o,i)},finalize:()=>{Jn.delete(r)},queue:o},Jn.set(r,t),e.autoFinalize===!0&&o.addEventListener("idle",()=>{t.finalize()},{once:!0}),t};var DI={name:"lock",concurrency:1/0,singleProcess:!1,autoFinalize:!1};function Fi(r){let e=Object.assign({},DI,r);return Mb(e.name,e)}var Tl=class{lock;child;pins;started;constructor(e,t,n={}){this.child=e,this.pins=t,this.lock=Fi({singleProcess:n.holdGcLock}),this.started=!1}isStarted(){return this.started}async start(){await rr(this.child),this.started=!0}async stop(){await nr(this.child),this.started=!1}unwrap(){return this.child}async put(e,t,n={}){n?.signal?.throwIfAborted();let o=await this.lock.readLock();try{return await this.child.put(e,t,n)}finally{o()}}async*putMany(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.readLock();try{yield*this.child.putMany(e,t)}finally{n()}}async*get(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.readLock();try{yield*this.child.get(e,t)}finally{n()}}async*getMany(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.readLock();try{yield*this.child.getMany(e,t)}finally{n()}}async delete(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.writeLock();try{if(await this.pins.isPinned(e))throw new Di("Block was pinned - please unpin and try again");await this.child.delete(e,t)}finally{n()}}async*deleteMany(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.writeLock();try{let o=this;yield*this.child.deleteMany((async function*(){for await(let s of e){if(await o.pins.isPinned(s))throw new Di("Block was pinned - please unpin and try again");yield s}})(),t)}finally{n()}}async has(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.readLock();try{return await this.child.has(e,t)}finally{n()}}async*getAll(e={}){e?.signal?.throwIfAborted();let t=await this.lock.readLock();try{yield*this.child.getAll(e)}finally{t()}}createSession(e,t){return t?.signal?.throwIfAborted(),this.child.createSession(e,t)}};var qp=new ge("/version"),Ob=1;async function Ub(r){if(!await r.has(qp)){await r.put(qp,B(`${Ob}`));return}let e=await r.get(qp),t=M(e);if(parseInt(t,10)!==Ob)throw new sl("Invalid datastore version, a datastore migration may be required")}var Wp={};Ae(Wp,{code:()=>Gp,decode:()=>HI,decodeOptions:()=>$I,encode:()=>KI,encodeOptions:()=>UI,name:()=>VI,toByteView:()=>$b});var Fb=42;function $b(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}function NI(r){if(r.asCID!==r&&r["/"]!==r.bytes)return null;let e=H.asCID(r);if(!e)return null;let t=new Uint8Array(e.bytes.byteLength+1);return t.set(e.bytes,1),[new I(m.tag,Fb),new I(m.bytes,t)]}function RI(){throw new Error("`undefined` is not supported by the IPLD Data Model and cannot be encoded")}function MI(r){if(Number.isNaN(r))throw new Error("`NaN` is not supported by the IPLD Data Model and cannot be encoded");if(r===1/0||r===-1/0)throw new Error("`Infinity` and `-Infinity` is not supported by the IPLD Data Model and cannot be encoded");return null}function OI(r){for(let e of r.keys())if(typeof e!="string"||e.length===0)throw new Error("Non-string Map keys are not supported by the IPLD Data Model and cannot be encoded");return null}var zp={float64:!0,typeEncoders:{Map:OI,Object:NI,undefined:RI,number:MI}},UI={...zp,typeEncoders:{...zp.typeEncoders}};function FI(r){if(r[0]!==0)throw new Error("Invalid CID for CBOR tag 42; expected leading 0x00");return H.decode(r.subarray(1))}var Bl={allowIndefinite:!1,coerceUndefinedToNull:!0,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};Bl.tags[Fb]=FI;var $I={...Bl,tags:Bl.tags.slice()},VI="dag-cbor",Gp=113,KI=r=>an(r,zp),HI=r=>bt($b(r),Bl);var em={};Ae(em,{code:()=>Qp,decode:()=>Kb,encode:()=>Vb,format:()=>ek,name:()=>QI,parse:()=>rk,stringify:()=>ek});var jp=class extends Array{constructor(){super(),this.inRecursive=[]}prefix(e){let t=this.inRecursive[this.inRecursive.length-1];t&&(t.type===m.array&&(t.elements++,t.elements!==1&&e.push([44])),t.type===m.map&&(t.elements++,t.elements!==1&&(t.elements%2===1?e.push([44]):e.push([58]))))}[m.uint.major](e,t){this.prefix(e);let n=String(t.value),o=[];for(let s=0;s<n.length;s++)o[s]=n.charCodeAt(s);e.push(o)}[m.negint.major](e,t){this[m.uint.major](e,t)}[m.bytes.major](e,t){throw new Error(`${_r} unsupported type: Uint8Array`)}[m.string.major](e,t){this.prefix(e);let n=Ec(JSON.stringify(t.value));e.push(n.length>32?wi(n):n)}[m.array.major](e,t){this.prefix(e),this.inRecursive.push({type:m.array,elements:0}),e.push([91])}[m.map.major](e,t){this.prefix(e),this.inRecursive.push({type:m.map,elements:0}),e.push([123])}[m.tag.major](e,t){}[m.float.major](e,t){if(t.type.name==="break"){let i=this.inRecursive.pop();if(i){if(i.type===m.array)e.push([93]);else if(i.type===m.map)e.push([125]);else throw new Error("Unexpected recursive type; this should not happen!");return}throw new Error("Unexpected break; this should not happen!")}if(t.value===void 0)throw new Error(`${_r} unsupported type: undefined`);if(this.prefix(e),t.type.name==="true"){e.push([116,114,117,101]);return}else if(t.type.name==="false"){e.push([102,97,108,115,101]);return}else if(t.type.name==="null"){e.push([110,117,108,108]);return}let n=String(t.value),o=[],s=!1;for(let i=0;i<n.length;i++)o[i]=n.charCodeAt(i),!s&&(o[i]===46||o[i]===101||o[i]===69)&&(s=!0);s||(o.push(46),o.push(48)),e.push(o)}};function qI(r,e){if(Array.isArray(r[0])||Array.isArray(e[0]))throw new Error(`${_r} complex map keys are not supported`);let t=r[0],n=e[0];if(t.type!==m.string||n.type!==m.string)throw new Error(`${_r} non-string map keys are not supported`);if(t<n)return-1;if(t>n)return 1;throw new Error(`${_r} unexpected duplicate map keys, this is not supported`)}var zI={addBreakTokens:!0,mapSorter:qI};function Yp(r,e){return e=Object.assign({},zI,e),Dc(r,new jp,e)}var is=class{constructor(e,t={}){this._pos=0,this.data=e,this.options=t,this.modeStack=["value"],this.lastToken=""}pos(){return this._pos}done(){return this._pos>=this.data.length}ch(){return this.data[this._pos]}currentMode(){return this.modeStack[this.modeStack.length-1]}skipWhitespace(){let e=this.ch();for(;e===32||e===9||e===13||e===10;)e=this.data[++this._pos]}expect(e){if(this.data.length-this._pos<e.length)throw new Error(`${F} unexpected end of input at position ${this._pos}`);for(let t=0;t<e.length;t++)if(this.data[this._pos++]!==e[t])throw new Error(`${F} unexpected token at position ${this._pos}, expected to find '${String.fromCharCode(...e)}'`)}parseNumber(){let e=this._pos,t=!1,n=!1,o=a=>{for(;!this.done();){let c=this.ch();if(a.includes(c))this._pos++;else break}};if(this.ch()===45&&(t=!0,this._pos++),this.ch()===48)if(this._pos++,this.ch()===46)this._pos++,n=!0;else return new I(m.uint,0,this._pos-e);if(o([48,49,50,51,52,53,54,55,56,57]),t&&this._pos===e+1)throw new Error(`${F} unexpected token at position ${this._pos}`);if(!this.done()&&this.ch()===46){if(n)throw new Error(`${F} unexpected token at position ${this._pos}`);n=!0,this._pos++,o([48,49,50,51,52,53,54,55,56,57])}!this.done()&&(this.ch()===101||this.ch()===69)&&(n=!0,this._pos++,!this.done()&&(this.ch()===43||this.ch()===45)&&this._pos++,o([48,49,50,51,52,53,54,55,56,57]));let s=String.fromCharCode.apply(null,this.data.subarray(e,this._pos)),i=parseFloat(s);return n?new I(m.float,i,this._pos-e):this.options.allowBigInt!==!0||Number.isSafeInteger(i)?new I(i>=0?m.uint:m.negint,i,this._pos-e):new I(i>=0?m.uint:m.negint,BigInt(s),this._pos-e)}parseString(){if(this.ch()!==34)throw new Error(`${F} unexpected character at position ${this._pos}; this shouldn't happen`);this._pos++;for(let s=this._pos,i=0;s<this.data.length&&i<65536;s++,i++){let a=this.data[s];if(a===92||a<32||a>=128)break;if(a===34){let c=String.fromCharCode.apply(null,this.data.subarray(this._pos,s));return this._pos=s+1,new I(m.string,c,i)}}let e=this._pos,t=[],n=()=>{if(this._pos+4>=this.data.length)throw new Error(`${F} unexpected end of unicode escape sequence at position ${this._pos}`);let s=0;for(let i=0;i<4;i++){let a=this.ch();if(a>=48&&a<=57)a-=48;else if(a>=97&&a<=102)a=a-97+10;else if(a>=65&&a<=70)a=a-65+10;else throw new Error(`${F} unexpected unicode escape character at position ${this._pos}`);s=s*16+a,this._pos++}return s},o=()=>{let s=this.ch(),i=null,a=s>239?4:s>223?3:s>191?2:1;if(this._pos+a>this.data.length)throw new Error(`${F} unexpected unicode sequence at position ${this._pos}`);let c,l,u,f;switch(a){case 1:s<128&&(i=s);break;case 2:c=this.data[this._pos+1],(c&192)===128&&(f=(s&31)<<6|c&63,f>127&&(i=f));break;case 3:c=this.data[this._pos+1],l=this.data[this._pos+2],(c&192)===128&&(l&192)===128&&(f=(s&15)<<12|(c&63)<<6|l&63,f>2047&&(f<55296||f>57343)&&(i=f));break;case 4:c=this.data[this._pos+1],l=this.data[this._pos+2],u=this.data[this._pos+3],(c&192)===128&&(l&192)===128&&(u&192)===128&&(f=(s&15)<<18|(c&63)<<12|(l&63)<<6|u&63,f>65535&&f<1114112&&(i=f))}i===null?(i=65533,a=1):i>65535&&(i-=65536,t.push(i>>>10&1023|55296),i=56320|i&1023),t.push(i),this._pos+=a};for(;!this.done();){let s=this.ch(),i;switch(s){case 92:if(this._pos++,this.done())throw new Error(`${F} unexpected string termination at position ${this._pos}`);switch(i=this.ch(),this._pos++,i){case 34:case 39:case 92:case 47:t.push(i);break;case 98:t.push(8);break;case 116:t.push(9);break;case 110:t.push(10);break;case 102:t.push(12);break;case 114:t.push(13);break;case 117:t.push(n());break;default:throw new Error(`${F} unexpected string escape character at position ${this._pos}`)}break;case 34:return this._pos++,new I(m.string,ip(t),this._pos-e);default:if(s<32)throw new Error(`${F} invalid control character at position ${this._pos}`);s<128?(t.push(s),this._pos++):o()}}throw new Error(`${F} unexpected end of string at position ${this._pos}`)}parseValue(){switch(this.ch()){case 123:return this.modeStack.push("obj-start"),this._pos++,new I(m.map,1/0,1);case 91:return this.modeStack.push("array-start"),this._pos++,new I(m.array,1/0,1);case 34:return this.parseString();case 110:return this.expect([110,117,108,108]),new I(m.null,null,4);case 102:return this.expect([102,97,108,115,101]),new I(m.false,!1,5);case 116:return this.expect([116,114,117,101]),new I(m.true,!0,4);case 45:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.parseNumber();default:throw new Error(`${F} unexpected character at position ${this._pos}`)}}next(){switch(this.skipWhitespace(),this.currentMode()){case"value":return this.modeStack.pop(),this.parseValue();case"array-value":{if(this.modeStack.pop(),this.ch()===93)return this._pos++,this.skipWhitespace(),new I(m.break,void 0,1);if(this.ch()!==44)throw new Error(`${F} unexpected character at position ${this._pos}, was expecting array delimiter but found '${String.fromCharCode(this.ch())}'`);return this._pos++,this.modeStack.push("array-value"),this.skipWhitespace(),this.parseValue()}case"array-start":return this.modeStack.pop(),this.ch()===93?(this._pos++,this.skipWhitespace(),new I(m.break,void 0,1)):(this.modeStack.push("array-value"),this.skipWhitespace(),this.parseValue());case"obj-key":if(this.ch()===125)return this.modeStack.pop(),this._pos++,this.skipWhitespace(),new I(m.break,void 0,1);if(this.ch()!==44)throw new Error(`${F} unexpected character at position ${this._pos}, was expecting object delimiter but found '${String.fromCharCode(this.ch())}'`);this._pos++,this.skipWhitespace();case"obj-start":{if(this.modeStack.pop(),this.ch()===125)return this._pos++,this.skipWhitespace(),new I(m.break,void 0,1);let e=this.parseString();if(this.skipWhitespace(),this.ch()!==58)throw new Error(`${F} unexpected character at position ${this._pos}, was expecting key/value delimiter ':' but found '${String.fromCharCode(this.ch())}'`);return this._pos++,this.modeStack.push("obj-value"),e}case"obj-value":return this.modeStack.pop(),this.modeStack.push("obj-key"),this.skipWhitespace(),this.parseValue();default:throw new Error(`${F} unexpected parse state at position ${this._pos}; this shouldn't happen`)}}};function Zp(r,e){return e=Object.assign({tokenizer:new is(r,e)},e),bt(r,e)}function WI(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}function jI(r){if(r.asCID!==r&&r["/"]!==r.bytes)return null;let e=H.asCID(r);if(!e)return null;let t=e.toString();return[new I(m.map,1/0,1),new I(m.string,"/",1),new I(m.string,t,t.length),new I(m.break,void 0,1)]}function Ll(r){let e=je.encode(r).slice(1);return[new I(m.map,1/0,1),new I(m.string,"/",1),new I(m.map,1/0,1),new I(m.string,"bytes",5),new I(m.string,e,e.length),new I(m.break,void 0,1),new I(m.break,void 0,1)]}function Wt(r){return Ll(new Uint8Array(r.buffer,r.byteOffset,r.byteLength))}function YI(r){return Ll(new Uint8Array(r))}function ZI(){throw new Error("`undefined` is not supported by the IPLD Data Model and cannot be encoded")}function XI(r){if(Number.isNaN(r))throw new Error("`NaN` is not supported by the IPLD Data Model and cannot be encoded");if(r===1/0||r===-1/0)throw new Error("`Infinity` and `-Infinity` is not supported by the IPLD Data Model and cannot be encoded");return null}var JI={typeEncoders:{Object:jI,Buffer:Ll,Uint8Array:Ll,Int8Array:Wt,Uint16Array:Wt,Int16Array:Wt,Uint32Array:Wt,Int32Array:Wt,Float32Array:Wt,Float64Array:Wt,Uint8ClampedArray:Wt,BigInt64Array:Wt,BigUint64Array:Wt,DataView:Wt,ArrayBuffer:YI,undefined:ZI,number:XI}},Xp=class extends is{constructor(e,t){super(e,t),this.tokenBuffer=[]}done(){return this.tokenBuffer.length===0&&super.done()}_next(){return this.tokenBuffer.length>0?this.tokenBuffer.pop():super.next()}next(){let e=this._next();if(e.type===m.map){let t=this._next();if(t.type===m.string&&t.value==="/"){let n=this._next();if(n.type===m.string){if(this._next().type!==m.break)throw new Error("Invalid encoded CID form");return this.tokenBuffer.push(n),new I(m.tag,42,0)}if(n.type===m.map){let o=this._next();if(o.type===m.string&&o.value==="bytes"){let s=this._next();if(s.type===m.string){for(let a=0;a<2;a++)if(this._next().type!==m.break)throw new Error("Invalid encoded Bytes form");let i=je.decode(`m${s.value}`);return new I(m.bytes,i,s.value.length)}this.tokenBuffer.push(s)}this.tokenBuffer.push(o)}this.tokenBuffer.push(n)}this.tokenBuffer.push(t)}return e}},Jp={allowIndefinite:!1,allowUndefined:!1,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};Jp.tags[42]=H.parse;var QI="dag-json",Qp=297,Vb=r=>Yp(r,JI),Kb=r=>{let e=WI(r),t=Object.assign(Jp,{tokenizer:new Xp(e,Jp)});return Zp(e,t)},ek=r=>tk.decode(Vb(r));var tk=new TextDecoder,rk=r=>Kb(nk.encode(r)),nk=new TextEncoder;var im={};Ae(im,{code:()=>sm,createLink:()=>Jb,createNode:()=>Xb,decode:()=>gk,encode:()=>mk,name:()=>pk,prepare:()=>nm,validate:()=>om});var ok=new TextDecoder;function tm(r,e){let t=0;for(let n=0;;n+=7){if(n>=64)throw new Error("protobuf: varint overflow");if(e>=r.length)throw new Error("protobuf: unexpected end of data");let o=r[e++];if(t+=n<28?(o&127)<<n:(o&127)*2**n,o<128)break}return[t,e]}function Pl(r,e){let t;[t,e]=tm(r,e);let n=e+t;if(t<0||n<0)throw new Error("protobuf: invalid length");if(n>r.length)throw new Error("protobuf: unexpected end of data");return[r.subarray(e,n),n]}function Hb(r,e){let t;return[t,e]=tm(r,e),[t&7,t>>3,e]}function sk(r){let e={},t=r.length,n=0;for(;n<t;){let o,s;if([o,s,n]=Hb(r,n),s===1){if(e.Hash)throw new Error("protobuf: (PBLink) duplicate Hash section");if(o!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Hash`);if(e.Name!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Name before Hash");if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Hash");[e.Hash,n]=Pl(r,n)}else if(s===2){if(e.Name!==void 0)throw new Error("protobuf: (PBLink) duplicate Name section");if(o!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Name`);if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Name");let i;[i,n]=Pl(r,n),e.Name=ok.decode(i)}else if(s===3){if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) duplicate Tsize section");if(o!==0)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Tsize`);[e.Tsize,n]=tm(r,n)}else throw new Error(`protobuf: (PBLink) invalid fieldNumber, expected 1, 2 or 3, got ${s}`)}if(n>t)throw new Error("protobuf: (PBLink) unexpected end of data");return e}function qb(r){let e=r.length,t=0,n,o=!1,s;for(;t<e;){let a,c;if([a,c,t]=Hb(r,t),a!==2)throw new Error(`protobuf: (PBNode) invalid wireType, expected 2, got ${a}`);if(c===1){if(s)throw new Error("protobuf: (PBNode) duplicate Data section");[s,t]=Pl(r,t),n&&(o=!0)}else if(c===2){if(o)throw new Error("protobuf: (PBNode) duplicate Links section");n||(n=[]);let l;[l,t]=Pl(r,t),n.push(sk(l))}else throw new Error(`protobuf: (PBNode) invalid fieldNumber, expected 1 or 2, got ${c}`)}if(t>e)throw new Error("protobuf: (PBNode) unexpected end of data");let i={};return s&&(i.Data=s),i.Links=n||[],i}var Gb=new TextEncoder,zb=2**32,ik=2**31;function ak(r,e){let t=e.length;if(typeof r.Tsize=="number"){if(r.Tsize<0)throw new Error("Tsize cannot be negative");if(!Number.isSafeInteger(r.Tsize))throw new Error("Tsize too large for encoding");t=$i(e,t,r.Tsize)-1,e[t]=24}if(typeof r.Name=="string"){let n=Gb.encode(r.Name);t-=n.length,e.set(n,t),t=$i(e,t,n.length)-1,e[t]=18}return r.Hash&&(t-=r.Hash.length,e.set(r.Hash,t),t=$i(e,t,r.Hash.length)-1,e[t]=10),e.length-t}function Wb(r){let e=lk(r),t=new Uint8Array(e),n=e;if(r.Data&&(n-=r.Data.length,t.set(r.Data,n),n=$i(t,n,r.Data.length)-1,t[n]=10),r.Links)for(let o=r.Links.length-1;o>=0;o--){let s=ak(r.Links[o],t.subarray(0,n));n-=s,n=$i(t,n,s)-1,t[n]=18}return t}function ck(r){let e=0;if(r.Hash){let t=r.Hash.length;e+=1+t+as(t)}if(typeof r.Name=="string"){let t=Gb.encode(r.Name).length;e+=1+t+as(t)}return typeof r.Tsize=="number"&&(e+=1+as(r.Tsize)),e}function lk(r){let e=0;if(r.Data){let t=r.Data.length;e+=1+t+as(t)}if(r.Links)for(let t of r.Links){let n=ck(t);e+=1+n+as(n)}return e}function $i(r,e,t){e-=as(t);let n=e;for(;t>=ik;)r[e++]=t&127|128,t/=128;for(;t>=128;)r[e++]=t&127|128,t>>>=7;return r[e]=t,n}function as(r){return r%2===0&&r++,Math.floor((uk(r)+6)/7)}function uk(r){let e=0;return r>=zb&&(r=Math.floor(r/zb),e=32),r>=65536&&(r>>>=16,e+=16),r>=256&&(r>>>=8,e+=8),e+fk[r]}var fk=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8];var dk=["Data","Links"],hk=["Hash","Name","Tsize"],rm=new TextEncoder;function Yb(r,e){if(r===e)return 0;let t=r.Name?rm.encode(r.Name):[],n=e.Name?rm.encode(e.Name):[],o=t.length,s=n.length;for(let i=0,a=Math.min(o,s);i<a;++i)if(t[i]!==n[i]){o=t[i],s=n[i];break}return o<s?-1:s<o?1:0}function jb(r,e){return!Object.keys(r).some(t=>!e.includes(t))}function Zb(r){if(typeof r.asCID=="object"){let t=H.asCID(r);if(!t)throw new TypeError("Invalid DAG-PB form");return{Hash:t}}if(typeof r!="object"||Array.isArray(r))throw new TypeError("Invalid DAG-PB form");let e={};if(r.Hash){let t=H.asCID(r.Hash);try{t||(typeof r.Hash=="string"?t=H.parse(r.Hash):r.Hash instanceof Uint8Array&&(t=H.decode(r.Hash)))}catch(n){throw new TypeError(`Invalid DAG-PB form: ${n.message}`)}t&&(e.Hash=t)}if(!e.Hash)throw new TypeError("Invalid DAG-PB form");return typeof r.Name=="string"&&(e.Name=r.Name),typeof r.Tsize=="number"&&(e.Tsize=r.Tsize),e}function nm(r){if((r instanceof Uint8Array||typeof r=="string")&&(r={Data:r}),typeof r!="object"||Array.isArray(r))throw new TypeError("Invalid DAG-PB form");let e={};if(r.Data!==void 0)if(typeof r.Data=="string")e.Data=rm.encode(r.Data);else if(r.Data instanceof Uint8Array)e.Data=r.Data;else throw new TypeError("Invalid DAG-PB form");if(r.Links!==void 0)if(Array.isArray(r.Links))e.Links=r.Links.map(Zb),e.Links.sort(Yb);else throw new TypeError("Invalid DAG-PB form");else e.Links=[];return e}function om(r){if(!r||typeof r!="object"||Array.isArray(r)||r instanceof Uint8Array||r["/"]&&r["/"]===r.bytes)throw new TypeError("Invalid DAG-PB form");if(!jb(r,dk))throw new TypeError("Invalid DAG-PB form (extraneous properties)");if(r.Data!==void 0&&!(r.Data instanceof Uint8Array))throw new TypeError("Invalid DAG-PB form (Data must be bytes)");if(!Array.isArray(r.Links))throw new TypeError("Invalid DAG-PB form (Links must be a list)");for(let e=0;e<r.Links.length;e++){let t=r.Links[e];if(!t||typeof t!="object"||Array.isArray(t)||t instanceof Uint8Array||t["/"]&&t["/"]===t.bytes)throw new TypeError("Invalid DAG-PB form (bad link)");if(!jb(t,hk))throw new TypeError("Invalid DAG-PB form (extraneous properties on link)");if(t.Hash===void 0)throw new TypeError("Invalid DAG-PB form (link must have a Hash)");if(t.Hash==null||!t.Hash["/"]||t.Hash["/"]!==t.Hash.bytes)throw new TypeError("Invalid DAG-PB form (link Hash must be a CID)");if(t.Name!==void 0&&typeof t.Name!="string")throw new TypeError("Invalid DAG-PB form (link Name must be a string)");if(t.Tsize!==void 0){if(typeof t.Tsize!="number"||t.Tsize%1!==0)throw new TypeError("Invalid DAG-PB form (link Tsize must be an integer)");if(t.Tsize<0)throw new TypeError("Invalid DAG-PB form (link Tsize cannot be negative)")}if(e>0&&Yb(t,r.Links[e-1])===-1)throw new TypeError("Invalid DAG-PB form (links must be sorted by Name bytes)")}}function Xb(r,e=[]){return nm({Data:r,Links:e})}function Jb(r,e,t){return Zb({Hash:t,Name:r,Tsize:e})}function Qb(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}var pk="dag-pb",sm=112;function mk(r){om(r);let e={};return r.Links&&(e.Links=r.Links.map(t=>{let n={};return t.Hash&&(n.Hash=t.Hash.bytes),t.Name!==void 0&&(n.Name=t.Name),t.Tsize!==void 0&&(n.Tsize=t.Tsize),n})),r.Data&&(e.Data=r.Data),Wb(e)}function gk(r){let e=Qb(r),t=qb(e),n={};return t.Data&&(n.Data=t.Data),t.Links&&(n.Links=t.Links.map(o=>{let s={};try{s.Hash=H.decode(o.Hash)}catch{}if(!s.Hash)throw new Error("Invalid Hash field found in link, expected CID");return o.Name!==void 0&&(s.Name=o.Name),o.Tsize!==void 0&&(s.Tsize=o.Tsize),s})),n}function cs(r){return r?.then!=null}function ex(r=[],e){let t={[sm]:im,[Ps]:Ds,[Gp]:Wp,[Qp]:em,[hd]:Pa};return r.forEach(n=>{t[n.code]=n}),async n=>{let o=t[n];if(o==null&&e!=null){let s=e(n);cs(s)?o=await s:o=s,t[o.code]=o}if(o!=null)return o;throw new Mi(`Could not load codec for ${n}`)}}function tx(r=[],e){let t={[Rt.code]:Rt,[Da.code]:Da,[Ge.code]:Ge};return r.forEach(n=>{t[n.code]=n}),async n=>{let o=t[n];if(o==null&&e!=null){let s=e(n);cs(s)?o=await s:o=s,t[o.code]=o}if(o!=null)return o;throw new Ri(`No hasher configured for multihash code 0x${n.toString(16)}, please configure one. You can look up which hash this is at https://github.com/multiformats/multicodec/blob/master/table.csv`)}}var Lt=class r extends Error{static name="NotFoundError";static code="ERR_NOT_FOUND";name=r.name;code=r.code;constructor(e="Not Found"){super(e)}};var Br=class{has(e,t){return Promise.reject(new Error(".has is not implemented"))}put(e,t,n){return Promise.reject(new Error(".put is not implemented"))}async*putMany(e,t){for await(let{cid:n,bytes:o}of e)await this.put(n,o,t),yield n}get(e,t){throw new Error(".get is not implemented")}async*getMany(e,t){for await(let n of e)yield{cid:n,bytes:this.get(n,t)}}delete(e,t){return Promise.reject(new Error(".delete is not implemented"))}async*deleteMany(e,t){for await(let n of e)await this.delete(n,t),yield n}async*getAll(e){throw new Error(".getAll is not implemented")}};var Dl=0,ls=class extends Error{static name="IdentityHashDigestTooLongError";name="IdentityHashDigestTooLongError"},Nl=class extends Br{child;maxDigestLength;constructor(e,t){super(),this.child=e,this.maxDigestLength=t?.maxDigestLength}put(e,t,n){if(e.multihash.code===Dl){if(this.maxDigestLength!=null&&e.multihash.digest.byteLength>this.maxDigestLength)throw new ls(`Identity digest too long - ${e.multihash.digest.byteLength} > this.maxDigestLength`);return n?.signal?.throwIfAborted(),e}return this.child==null?(n?.signal?.throwIfAborted(),e):this.child.put(e,t,n)}*get(e,t){if(e.multihash.code===Dl){if(this.maxDigestLength!=null&&e.multihash.digest.byteLength>this.maxDigestLength)throw new ls(`Identity digest too long - ${e.multihash.digest.byteLength} > this.maxDigestLength`);t?.signal?.throwIfAborted(),yield e.multihash.digest;return}if(this.child==null)throw t?.signal?.throwIfAborted(),new Lt;yield*this.child.get(e,t)}has(e,t){if(e.multihash.code===Dl){if(this.maxDigestLength!=null&&e.multihash.digest.byteLength>this.maxDigestLength)throw new ls(`Identity digest too long - ${e.multihash.digest.byteLength} > this.maxDigestLength`);return t?.signal?.throwIfAborted(),!0}return this.child==null?(t?.signal?.throwIfAborted(),!1):this.child.has(e,t)}delete(e,t){if(e.code===Dl){if(this.maxDigestLength!=null&&e.multihash.digest.byteLength>this.maxDigestLength)throw new ls(`Identity digest too long - ${e.multihash.digest.byteLength} > this.maxDigestLength`);t?.signal?.throwIfAborted();return}if(this.child!=null)return this.child.delete(e,t)}*getAll(e){this.child!=null&&(yield*this.child.getAll(e)),e?.signal?.throwIfAborted()}};function yk(r){return r[Symbol.asyncIterator]!=null}function wk(r,e){let t=0;if(yk(r))return(async function*(){for await(let c of r)await e(c,t++)&&(yield c)})();let n=os(r),{value:o,done:s}=n.next();if(s===!0)return(function*(){})();let i=e(o,t++);if(typeof i.then=="function")return(async function*(){await i&&(yield o);for(let c of n)await e(c,t++)&&(yield c)})();let a=e;return(function*(){i===!0&&(yield o);for(let c of n)a(c,t++)&&(yield c)})()}var jt=wk;function bk(r){return r[Symbol.asyncIterator]!=null}function rx(r){return r?.then!=null}function xk(r,e){let t=0;if(bk(r))return(async function*(){for await(let c of r){let l=e(c,t++);rx(l)&&await l,yield c}})();let n=os(r),{value:o,done:s}=n.next();if(s===!0)return(function*(){})();if(typeof e(o,t++)?.then=="function")return(async function*(){yield o;for(let c of n){let l=e(c,t++);rx(l)&&await l,yield c}})();let a=e;return(function*(){yield o;for(let c of n)a(c,t++),yield c})()}var am=xk;var vk=128,Rl=class{child;getHasher;log;logger;components;constructor(e,t={}){this.log=e.logger.forComponent("helia:networked-storage"),this.logger=e.logger,this.components=e,this.child=new Nl(e.blockstore,{maxDigestLength:t.maxIdentityHashDigestLength??vk}),this.getHasher=e.getHasher}async put(e,t,n={}){return await this.child.has(e,n)?(n.onProgress?.(new W("blocks:put:duplicate",e)),e):(n.onProgress?.(new W("blocks:put:providers:notify",e)),await Promise.all(this.components.blockBrokers.map(async o=>o.announce?.(e,n))),n.onProgress?.(new W("blocks:put:blockstore:put",e)),this.child.put(e,t,n))}async*putMany(e,t={}){let n=jt(e,async({cid:s})=>{let i=await this.child.has(s,t);return i&&t.onProgress?.(new W("blocks:put-many:duplicate",s)),!i}),o=am(n,async({cid:s})=>{t.onProgress?.(new W("blocks:put-many:providers:notify",s)),await Promise.all(this.components.blockBrokers.map(async i=>i.announce?.(s,t)))});t.onProgress?.(new W("blocks:put-many:blockstore:put-many")),yield*this.child.putMany(o,t)}async*get(e,t={}){if(t.offline!==!0&&!await this.child.has(e,t)){let n=await this.getHasher(e.multihash.code);t.onProgress?.(new W("blocks:get:providers:get",e));let o=await nx(e,this.components.blockBrokers,n,{...t,log:this.log});t.onProgress?.(new W("blocks:get:blockstore:put",e)),await this.child.put(e,o,t),t.onProgress?.(new W("blocks:get:providers:notify",e)),await Promise.all(this.components.blockBrokers.map(async s=>s.announce?.(e,t))),yield o;return}t.onProgress?.(new W("blocks:get:blockstore:get",e)),yield*this.child.get(e,t)}async*getMany(e,t={}){t.onProgress?.(new W("blocks:get-many:blockstore:get-many")),yield*this.child.getMany(am(e,async n=>{if(t.offline!==!0&&!await this.child.has(n,t)){let o=await this.getHasher(n.multihash.code);t.onProgress?.(new W("blocks:get-many:providers:get",n));let s=await nx(n,this.components.blockBrokers,o,{...t,log:this.log});t.onProgress?.(new W("blocks:get-many:blockstore:put",n)),await this.child.put(n,s,t),t.onProgress?.(new W("blocks:get-many:providers:notify",n)),await Promise.all(this.components.blockBrokers.map(async i=>i.announce?.(n,t)))}}))}async delete(e,t={}){t.onProgress?.(new W("blocks:delete:blockstore:delete",e)),await this.child.delete(e,t)}async*deleteMany(e,t={}){t.onProgress?.(new W("blocks:delete-many:blockstore:delete-many")),yield*this.child.deleteMany((async function*(){for await(let n of e)yield n})(),t)}async has(e,t={}){return this.child.has(e,t)}async*getAll(e={}){e.onProgress?.(new W("blocks:get-all:blockstore:get-many")),yield*this.child.getAll(e)}},Ml=class extends Rl{started;constructor(e,t={}){super(e,t),this.started=!1}isStarted(){return this.started}async start(){await rr(this.child,...this.components.blockBrokers),this.started=!0}async stop(){await nr(this.child,...this.components.blockBrokers),this.started=!1}unwrap(){return this.child}createSession(e,t){let n=this.components.blockBrokers.map(o=>o.createSession==null?o:o.createSession(t));return new cm({blockstore:this.child,blockBrokers:n,getHasher:this.getHasher,logger:this.logger},{root:e})}},cm=class extends Rl{closeController;constructor(e,t){super(e),this.closeController=new AbortController,this.closeController.signal,this.log=e.logger.forComponent(`helia:session-storage:${t.root}`)}close(){this.closeController.abort()}async put(e,t,n={}){let o=pe([this.closeController.signal,n.signal]);try{return await super.put(e,t,{...n,signal:o})}finally{o.clear()}}async*putMany(e,t={}){let n=pe([this.closeController.signal,t.signal]);try{yield*super.putMany(e,{...t,signal:n})}finally{n.clear()}}async*get(e,t={}){let n=pe([this.closeController.signal,t.signal]);try{yield*super.get(e,{...t,signal:n})}finally{n.clear()}}async*getMany(e,t={}){let n=pe([this.closeController.signal,t.signal]);try{yield*super.getMany(e,{...t,signal:n})}finally{n.clear()}}async delete(e,t={}){let n=pe([this.closeController.signal,t.signal]);try{await super.delete(e,{...t,signal:n})}finally{n.clear()}}async*deleteMany(e,t={}){let n=pe([this.closeController.signal,t.signal]);try{yield*super.deleteMany(e,{...t,signal:n})}finally{n.clear()}}async has(e,t={}){let n=pe([this.closeController.signal,t.signal]);try{return await super.has(e,{...t,signal:n})}finally{n.clear()}}async*getAll(e={}){let t=pe([this.closeController.signal,e.signal]);try{yield*super.getAll({...e,signal:t})}finally{t.clear()}}};function Ek(r){return typeof r.retrieve=="function"}var Ak=(r,e)=>{if(e==null)throw new k(`No hasher configured for multihash code 0x${r.multihash.code.toString(16)}, please configure one. You can look up which hash this is at https://github.com/multiformats/multicodec/blob/master/table.csv`);return async t=>{let n,o=e.digest(t,{truncate:r.multihash.digest.byteLength});if(cs(o)?n=await o:n=o,!X(n.digest,r.multihash.digest))throw new Vr("Hash of downloaded block did not match multihash from passed CID")}};async function nx(r,e,t,n){let o=Ak(r,t),s=new AbortController,i=pe([s.signal,n.signal]);s.signal;let a=[];for(let c of e)Ek(c)&&a.push(c);if(a.length===0)throw new il(`No block brokers capable of retrieving blocks are configured, the CID ${r} cannot be fetched from the network`);try{return await Promise.any(a.map(async c=>{try{let l=!1,u=await c.retrieve(r,{...n,signal:i,validateFn:async f=>{await o(f),n.signal?.throwIfAborted(),l=!0}});return l||(await o(u),n.signal?.throwIfAborted()),u}catch(l){throw n.log.error("could not retrieve verified block for %c - %e",r,l),l}}))}catch(c){throw new cl(c.errors,`Failed to load block for ${r}`)}finally{s.abort(),i.clear()}}var Ki=class extends _e{initialPeerSearchComplete;requests;name;log;logger;minProviders;maxProviders;providers;evictionFilter;initialProviders;constructor(e,t){super(),this.name=t.name,this.logger=e.logger,this.log=e.logger.forComponent(this.name),this.requests=new Map,this.minProviders=t.minProviders??1,this.maxProviders=t.maxProviders??5,this.providers=[],this.evictionFilter=Un(this.maxProviders),this.initialProviders=t.providers??[]}async retrieve(e,t={}){let n=je.encode(e.multihash.bytes),o=this.requests.get(n);if(o!=null)return this.log("join existing request for %c",e),o;let s=ae();if(this.requests.set(n,s.promise),this.providers.length===0){let u=!1;this.initialPeerSearchComplete==null&&(u=!0,this.log=this.logger.forComponent(`${this.name}:${e}`),this.initialPeerSearchComplete=this.findProviders(e,this.minProviders,t));try{await St(this.initialPeerSearchComplete,t.signal),u&&this.log("found initial session peers for %c",e)}catch(f){throw u&&this.log("failed to find initial session peers for %c - %e",e,f),this.requests.delete(n),s.reject(f),f}}let i=!1,a=new qt({concurrency:this.maxProviders});a.addEventListener("failure",u=>{this.log.error("error querying provider %s, evicting from session - %e",u.detail.job.options.provider,u.detail.error),this.evict(u.detail.job.options.provider)}),a.addEventListener("success",u=>{i=!0,s.resolve(u.detail.result)}),a.addEventListener("idle",()=>{if(i){this.log.trace("session idle, found block");return}if(t.signal?.aborted===!0){this.log.trace("session idle, signal aborted");return}Promise.resolve().then(async()=>{this.log("no session peers had block for for %c, finding new providers",e);for(let u=0;u<this.minProviders&&this.providers.length!==0;u++){let f=this.providers[Math.floor(Math.random()*this.providers.length)];this.evict(f)}await this.findProviders(e,this.minProviders,t),this.log("found new providers re-retrieving %c",e),this.requests.delete(n),s.resolve(await this.retrieve(e,t))}).catch(u=>{this.log.error("could not find new providers for %c - %e",e,u),s.reject(u)})});let c=u=>{a.add(async()=>this.queryProvider(e,u.detail,t),{provider:u.detail}).catch(f=>{t.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c - %e",e,f)})};this.addEventListener("provider",c),Promise.all([...this.providers].map(async u=>a.add(async()=>this.queryProvider(e,u,t),{provider:u}))).catch(u=>{t.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c - %e",e,u)});let l=()=>{s.reject(new ft(t.signal?.reason??"Session aborted")),a.abort()};t.signal?.addEventListener("abort",l);try{return await St(s.promise,t.signal)}finally{this.removeEventListener("provider",c),t.signal?.removeEventListener("abort",l),a.clear(),this.requests.delete(n)}}evict(e){this.evictionFilter.add(this.toEvictionKey(e));let t=this.providers.findIndex(n=>this.equals(n,e));t!==-1&&this.providers.splice(t,1)}isEvicted(e){return this.evictionFilter.has(this.toEvictionKey(e))}hasProvider(e){return!!(this.providers.find(t=>this.equals(t,e))!=null||this.isEvicted(e))}async findProviders(e,t,n){let o=ae(),s=0;return Promise.resolve().then(async()=>{if(this.log("finding %d-%d new provider(s) for %c",t,this.maxProviders,e),this.initialProviders.length>0)for(;s<t&&this.initialProviders.length>0;){let i=this.initialProviders.pop();if(i==null)break;let a=await this.convertToProvider(i,n);if(n.signal?.aborted===!0)break;if(a!=null&&!this.hasProvider(a)&&(this.log("found %d/%d new providers",s,this.maxProviders),this.providers.push(a),this.safeDispatchEvent("provider",{detail:a}),s++,s===t&&(this.log("session is ready"),o.resolve()),this.providers.length===this.maxProviders)){this.log("found max session peers",s);break}}if(s<this.maxProviders)for await(let i of this.findNewProviders(e,n)){if(s===this.maxProviders||n.signal?.aborted===!0)break;if(!this.hasProvider(i)&&(this.log("found %d/%d new providers",s,this.maxProviders),this.providers.push(i),this.safeDispatchEvent("provider",{detail:i}),s++,s===t&&(this.log("session is ready"),o.resolve()),this.providers.length===this.maxProviders)){this.log("found max session peers",s);break}}if(this.log("found %d/%d new session peers",s,this.maxProviders),s<t)throw new Ni(`Found ${s} of ${t} ${this.name} providers for ${e}`)}).catch(i=>{this.log.error("error searching routing for potential session peers for %c - %e",e,i),o.reject(i)}),o.promise}};var Ol=class{libp2p;blockstore;datastore;events;pins;logger;routing;getCodec;getHasher;dns;metrics;log;constructor(e){this.logger=e.logger??fr(),this.log=this.logger.forComponent("helia"),this.getHasher=tx(e.hashers,e.loadHasher),this.getCodec=ex(e.codecs,e.loadCodec),this.dns=e.dns??tl(),this.metrics=e.metrics,this.libp2p=e.libp2p,this.events=new _e;let t={blockstore:e.blockstore,datastore:e.datastore,logger:this.logger,libp2p:this.libp2p,blockBrokers:[],getHasher:this.getHasher,getCodec:this.getCodec,dns:this.dns,metrics:this.metrics,...e.components??{}};this.routing=t.routing=new fl(t,{routers:(e.routers??[]).flatMap(o=>{typeof o=="function"&&(o=o(t));let s=[o],i=Sk(o);i!=null&&s.push(i);let a=Ik(o);return a!=null&&s.push(a),s}),providerLookupConcurrency:e.providerLookupConcurrency});let n=new Ml(t,e);this.pins=new ul(e.datastore,n,this.getCodec),this.blockstore=new Tl(n,this.pins,{holdGcLock:e.holdGcLock??!0}),this.datastore=e.datastore,t.blockBrokers=e.blockBrokers.map(o=>o(t))}async start(){await Ub(this.datastore),await rr(this.blockstore,this.datastore,this.routing,this.libp2p),this.events.dispatchEvent(new CustomEvent("start",{detail:this}))}async stop(){await nr(this.blockstore,this.datastore,this.routing,this.libp2p),this.events.dispatchEvent(new CustomEvent("stop",{detail:this}))}async gc(e={}){let t=await this.blockstore.lock.writeLock();try{let n=this,o=this.blockstore.unwrap();this.log("gc start"),await Ii(o.deleteMany((async function*(){for await(let{cid:s}of o.getAll())try{if(await n.pins.isPinned(s,e))continue;yield s,e.onProgress?.(new W("helia:gc:deleted",s))}catch(i){n.log.error("error during gc - %e",i),e.onProgress?.(new W("helia:gc:error",i))}})()))}finally{t()}this.log("gc finished")}};function Sk(r){return r?.[mn]}function Ik(r){return r?.[yn]}var kk=[6,53,56,54,55];function ox(r){return ax("sni",r)?.value}function sx(r){let e=ax("tcp",r)?.value;return e==null?"":`:${e}`}function ax(r,e){return e.find(t=>t.name===r)}function ix(r){return r.some(({code:e})=>e===448)}function Yt(r,e){let t=cx[r.name];if(t==null)throw new Error(`Can't interpret protocol ${r.name}`);let n=t(r,e);return r.code===41?`[${n}]`:n}var cx={ip4:(r,e)=>r.value,ip6:(r,e)=>e.length===0?r.value:`[${r.value}]`,tcp:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`tcp://${Yt(t,e)}:${r.value}`},udp:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`udp://${Yt(t,e)}:${r.value}`},dnsaddr:(r,e)=>r.value,dns4:(r,e)=>r.value,dns6:(r,e)=>r.value,dns:(r,e)=>r.value,ipfs:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`${Yt(t,e)}`},p2p:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`${Yt(t,e)}`},http:(r,e)=>{let t=ix(e),n=ox(e),o=sx(e);if(t&&n!=null)return`https://${n}${o}`;let s=t?"https://":"http://",i=e.pop();if(i==null)throw new Error("Unexpected end of multiaddr");let a=Yt(i,e);return a=a?.replace("tcp://",""),`${s}${a}`},"http-path":(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");let n=Yt(t,e),o=decodeURIComponent(r.value??"");return`${n}${o}`},tls:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return Yt(t,e)},sni:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return Yt(t,e)},https:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");let n=Yt(t,e);return n=n?.replace("tcp://",""),`https://${n}`},ws:(r,e)=>{let t=ix(e),n=ox(e),o=sx(e);if(t&&n!=null)return`wss://${n}${o}`;let s=t?"wss://":"ws://",i=e.pop();if(i==null)throw new Error("Unexpected end of multiaddr");let a=Yt(i,e);return a=a?.replace("tcp://",""),`${s}${a}`},wss:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");let n=Yt(t,e);return n=n?.replace("tcp://",""),`wss://${n}`}};function Ul(r,e){let n=ee(r).getComponents(),o=n.pop();if(o==null)throw new Error("Unexpected end of multiaddr");let s=cx[o.name];if(s==null)throw new Error(`No interpreter found for ${o.name}`);let i=s(o,n)??"";return e?.assumeHttp!==!1&&kk.includes(o.code)&&(i=i.replace(/^.*:\/\//,""),o.value==="443"?i=`https://${i}`:i=`http://${i}`),(i.startsWith("http://")||i.startsWith("https://")||i.startsWith("ws://")||i.startsWith("wss://"))&&(i=new URL(i).toString(),i.endsWith("/")&&(i=i.substring(0,i.length-1))),i}var fe=r=>({match:e=>{let t=e[0];return t==null||t.code!==r||t.value!=null?!1:e.slice(1)}}),q=(r,e)=>({match:t=>{let n=t[0];return n?.code!==r||n.value==null||e!=null&&n.value!==e?!1:t.slice(1)}}),lx=r=>({match:e=>r.match(e)===!1?e:!1}),te=r=>({match:e=>{let t=r.match(e);return t===!1?e:t}}),Qe=(...r)=>({match:e=>{let t;for(let n of r){let o=n.match(e);o!==!1&&(t==null||o.length<t.length)&&(t=o)}return t??!1}}),ce=(...r)=>({match:e=>{for(let t of r){let n=t.match(e);if(n===!1)return!1;e=n}return e}});function de(...r){function e(o){if(o==null)return!1;let s=o.getComponents();for(let i of r){let a=i.match(s);if(a===!1)return!1;s=a}return s}function t(o){return e(o)!==!1}function n(o){let s=e(o);return s===!1?!1:s.length===0}return{matchers:r,matches:t,exactMatch:n}}var _k=q(421),ux=de(_k),$l=q(54),Vl=q(55),Kl=q(56),um=q(53),RO=de($l,te(q(421))),MO=de(Vl,te(q(421))),OO=de(Kl,te(q(421))),fx=de(Qe(um,Kl,$l,Vl),te(q(421))),dx=ce(q(4),te(q(43))),hx=ce(te(q(42)),q(41),te(q(43))),fm=Qe(dx,hx),Qn=Qe(fm,um,$l,Vl,Kl),UO=de(Qe(fm,ce(Qe(um,Kl,$l,Vl),te(q(421))))),dm=de(dx),hm=de(hx),FO=de(fm),pm=ce(Qn,q(6)),Hi=ce(Qn,q(273)),qi=de(ce(pm,te(q(421)))),$O=de(Hi),mm=ce(Hi,fe(460),te(q(421))),Hl=ce(Hi,fe(461),te(q(421))),Ck=Qe(mm,Hl),VO=de(mm),px=de(Hl),lm=Qe(Qn,pm,Hi,mm,Hl),mx=Qe(ce(lm,fe(477),te(q(421)))),eo=de(mx),gx=Qe(ce(lm,fe(478),te(q(421))),ce(lm,fe(448),te(q(449)),fe(477),te(q(421)))),zi=de(gx),yx=ce(Hi,fe(280),te(q(466)),te(q(466)),te(q(421))),gm=de(yx),wx=ce(Hl,fe(465),te(q(466)),te(q(466)),te(q(421))),ym=de(wx),Fl=Qe(mx,gx,ce(pm,te(q(421))),ce(Ck,te(q(421))),ce(Qn,te(q(421))),yx,wx,q(421)),KO=de(Fl),Tk=ce(te(Fl),fe(290),lx(fe(281)),te(q(421))),to=de(Tk),Bk=Qe(ce(Fl,fe(290),fe(281),te(q(421))),ce(Fl,fe(281),te(q(421))),ce(fe(281),te(q(421)))),wm=de(Bk),Lk=Qe(ce(Qn,q(6),fe(480),te(q(421))),ce(Qn,fe(480),te(q(421)))),bx=de(Lk),Pk=ce(Qn,Qe(ce(q(6,"443"),fe(480)),ce(q(6),fe(443)),ce(q(6),fe(448),fe(480)),ce(fe(448),fe(480)),fe(448),fe(443)),te(q(421))),xx=de(Pk),Dk=Qe(ce(q(777),te(q(421)))),HO=de(Dk),Nk=Qe(ce(q(400),te(q(421)))),qO=de(Nk);function bm(r,e,t){return r.filter(n=>{if(xx.matches(n)||e&&bx.matches(n))return t||fx.matches(n)?!0:Ht(n)===!1;if(!e&&t){let{host:o}=Q(n);if(o==="127.0.0.1"||o==="localhost"||o.endsWith(".localhost"))return!0}return!1})}async function*ql(r,e,t,n,o,s={}){for await(let i of e.findProviders(r,s)){let a=bm(i.multiaddrs,n,o);if(a.length===0)continue;let c=Ul(a[0]),l={type:"trustless-gateway",cid:r,url:c.toString(),routing:i.routing};s?.onProgress?.(new W("trustless-gateway:found-provider",l)),yield new us(c,{logger:t,transformRequestInit:s.transformRequestInit})}}async function vx(r,e,t){let{signal:n,log:o}=t??{},s=r.headers.get("content-length");if(s!=null){let c=parseInt(s,10);if(c>e)throw o?.error("content-length header (%d) is greater than the limit (%d)",c,e),r.body!=null&&await r.body.cancel().catch(l=>{o?.error("error cancelling response body after content-length check - %e",l)}),new Error(`Content-Length header (${c}) is greater than the limit (${e}).`)}let i=r.body?.getReader();if(i==null)throw new Error("Response body is not readable");let a=new se;try{for(;;){if(n?.aborted===!0)throw new Error("Response body read was aborted.");let{done:c,value:l}=await i.read();if(c)break;if(a.append(l),a.byteLength>e)throw new Error(`Response body is greater than the limit (${e}), received ${a.byteLength} bytes.`)}}finally{i.cancel().catch(c=>{o?.error("error cancelling reader - %e",c)}).finally(()=>{i.releaseLock()})}return a.subarray()}var us=class{url;#e=0;#t=0;#r=0;#i=0;#s=new Map;log;transformRequestInit;constructor(e,{logger:t,transformRequestInit:n}){this.url=e instanceof URL?e:new URL(e),this.transformRequestInit=n,this.log=t.forComponent(`helia:trustless-gateway-block-broker:${this.url.hostname}`)}#f(e){let t=e.multihash.bytes;return je.encode(t)}async getRawBlock(e,{signal:t,maxSize:n=Ex}={}){let o=new URL(this.url.toString());if(o.pathname=`/ipfs/${e.toString()}`,o.search="?format=raw",t?.aborted===!0)throw new Error(`Signal to fetch raw block for CID ${e} from gateway ${this.url} was aborted prior to fetch`);let s=this.#f(e),i=new AbortController,a=()=>{i.abort()};t?.addEventListener("abort",a);try{let c=this.#s.get(s);if(c==null){this.#e++;let l={signal:i.signal,headers:{Accept:"application/vnd.ipld.raw"},cache:"force-cache"},u=this.transformRequestInit!=null?await this.transformRequestInit(l):l,f=new Headers(u.headers);this.log(`sending request
14
14
  %s %s HTTP/1.1
15
15
  %s
16
16
  `,u.method??"GET",o,[...f.entries()].map(([d,h])=>`${d}: ${h}`).join(`
@@ -18,7 +18,7 @@ ${e}[Error list was empty]`,t.trim()}return cb(r,e)}lt.formatters.e=r=>r==null?"
18
18
  HTTP/1.1 %d %s
19
19
  %s
20
20
  `,d.status,d.statusText,[...d.headers.entries()].map(([p,g])=>`${p}: ${g}`).join(`
21
- `)),!d.ok)throw this.#t++,new Error(`Unable to fetch raw block for CID ${e} from gateway ${this.url}, recieved ${d.status} ${d.statusText}`);let h=await wx(d,n,{signal:i.signal,log:this.log});return this.#i++,h}),this.#s.set(s,c)}return await c}catch(c){throw t?.aborted===!0?new Error(`Fetching raw block for CID ${e} from gateway ${this.url} was aborted`):(this.#t++,new Error(`Unable to fetch raw block for CID ${e} - ${c.message}`))}finally{t?.removeEventListener("abort",a),this.#s.delete(s)}}reliability(){return this.#e===0?1:this.#r>0?-1/0:this.#i/(this.#e+this.#t*3)}incrementInvalidBlocks(){this.#r++}getStats(){return{attempts:this.#e,errors:this.#t,invalidBlocks:this.#r,successes:this.#i,pendingResponses:this.#s.size}}toString(){return`TrustlessGateway(${this.url})`}};var bm=class extends Hi{routing;allowInsecure;allowLocal;transformRequestInit;constructor(e,t){super(e,{...t,name:"helia:trustless-gateway:session"}),this.routing=e.routing,this.allowInsecure=t.allowInsecure??ql,this.allowLocal=t.allowLocal??zl,this.transformRequestInit=t.transformRequestInit}async queryProvider(e,t,n){this.log("fetching BLOCK for %c from %s",e,t.url);let o=await t.getRawBlock(e,n);return this.log.trace("got block for %c from %s",e,t.url),await n.validateFn?.(o),o}async*findNewProviders(e,t={}){yield*Hl(e,this.routing,this.logger,this.allowInsecure,this.allowLocal,{...t,transformRequestInit:this.transformRequestInit})}toEvictionKey(e){return e.url.toString()}equals(e,t){return e.url.toString()===t.url.toString()}async convertToProvider(e,t){if(tr(e))return;let n=wm(Array.isArray(e)?e:[e],this.allowInsecure,this.allowLocal);if(n.length===0)return;let o=Ol(n[0]);return new us(o,{logger:this.logger,transformRequestInit:this.transformRequestInit})}};function xx(r,e){return new bm(r,e)}var Gl=class{allowInsecure;allowLocal;transformRequestInit;routing;log;logger;constructor(e,t={}){this.log=e.logger.forComponent("helia:trustless-gateway-block-broker"),this.logger=e.logger,this.routing=e.routing,this.allowInsecure=t.allowInsecure??ql,this.allowLocal=t.allowLocal??zl,this.transformRequestInit=t.transformRequestInit}async retrieve(e,t={}){let n=[];for await(let o of Hl(e,this.routing,this.logger,this.allowInsecure,this.allowLocal,{...t,transformRequestInit:this.transformRequestInit})){this.log("getting block for %c from %s",e,o.url);try{let s=await o.getRawBlock(e,t);this.log.trace("got block for %c from %s",e,o.url);try{await t.validateFn?.(s)}catch(i){this.log.error("failed to validate block for %c from %s - %e",e,o.url,i);continue}return s}catch(s){if(this.log.error("failed to get block for %c from %s - %e",e,o.url,s),s instanceof Error?n.push(s):n.push(new Error(`Unable to fetch raw block for CID ${e} from gateway ${o.url}`)),t.signal?.aborted===!0){this.log.trace("request aborted while fetching raw block for CID %c from gateway %s",e,o.url);break}}}throw n.length>0?new AggregateError(n,`Unable to fetch raw block for CID ${e} from any gateway`):new Error(`Unable to fetch raw block for CID ${e} from any gateway`)}createSession(e={}){return xx({logger:this.logger,routing:this.routing},{...e,allowLocal:this.allowLocal,allowInsecure:this.allowInsecure,transformRequestInit:this.transformRequestInit})}};var ql=!1,zl=!1,bx=2097152;function xm(r={}){return e=>new Gl(e,r)}async function*Wl(r,e={}){let t=r.getReader();try{for(;;){let n=await t.read();if(n.done)return;yield n.value}}finally{e.preventCancel!==!0&&await t.cancel(),t.releaseLock()}}var Ok=pn(Em(),1);var Zt=class extends Error{static name="SignatureVerificationError";constructor(e="Record signature verification failed"){super(e),this.name="SignatureVerificationError"}},jl=class extends Error{static name="RecordExpiredError";constructor(e="Record has expired"){super(e),this.name="RecordExpiredError"}},fs=class extends Error{static name="UnsupportedValidityError";constructor(e="The validity type is unsupported"){super(e),this.name="UnsupportedValidityError"}},Yl=class extends Error{static name="RecordTooLargeError";constructor(e="The record is too large"){super(e),this.name="RecordTooLargeError"}},Zl=class extends Error{static name="InvalidValueError";constructor(e="Value must be a valid content path starting with /"){super(e),this.name="InvalidValueError"}},Xl=class extends Error{static name="InvalidRecordDataError";constructor(e="Invalid record data"){super(e),this.name="InvalidRecordDataError"}},Wi=class extends Error{static name="InvalidEmbeddedPublicKeyError";constructor(e="Invalid embedded public key"){super(e),this.name="InvalidEmbeddedPublicKeyError"}};var Xt;(function(r){let e;(function(o){o.EOL="EOL"})(e=r.ValidityType||(r.ValidityType={}));let t;(function(o){o[o.EOL=0]="EOL"})(t||(t={})),(function(o){o.codec=()=>Xs(t)})(e=r.ValidityType||(r.ValidityType={}));let n;r.codec=()=>(n==null&&(n=Fe((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.value!=null&&(s.uint32(10),s.bytes(o.value)),o.signatureV1!=null&&(s.uint32(18),s.bytes(o.signatureV1)),o.validityType!=null&&(s.uint32(24),r.ValidityType.codec().encode(o.validityType,s)),o.validity!=null&&(s.uint32(34),s.bytes(o.validity)),o.sequence!=null&&(s.uint32(40),s.uint64(o.sequence)),o.ttl!=null&&(s.uint32(48),s.uint64(o.ttl)),o.pubKey!=null&&(s.uint32(58),s.bytes(o.pubKey)),o.signatureV2!=null&&(s.uint32(66),s.bytes(o.signatureV2)),o.data!=null&&(s.uint32(74),s.bytes(o.data)),i.lengthDelimited!==!1&&s.ldelim()},(o,s,i={})=>{let a={},c=s==null?o.len:o.pos+s;for(;o.pos<c;){let l=o.uint32();switch(l>>>3){case 1:{a.value=o.bytes();break}case 2:{a.signatureV1=o.bytes();break}case 3:{a.validityType=r.ValidityType.codec().decode(o);break}case 4:{a.validity=o.bytes();break}case 5:{a.sequence=o.uint64();break}case 6:{a.ttl=o.uint64();break}case 7:{a.pubKey=o.bytes();break}case 8:{a.signatureV2=o.bytes();break}case 9:{a.data=o.bytes();break}default:{o.skipType(l&7);break}}}return a})),n),r.encode=o=>Ue(o,r.codec()),r.decode=(o,s)=>Oe(o,r.codec(),s)})(Xt||(Xt={}));var Pk=Ct("ipns:utils"),vx=B("/ipns/");var Dk=0,Nk=18;function Ex(r){let e;if(r.pubKey!=null)try{e=en(r.pubKey)}catch(t){throw Pk.error(t),t}if(e!=null)return e}function Ax(r){let e=B("ipns-signature:");return Ce([e,r])}function ji(r){return"signatureV1"in r?Xt.encode({value:B(r.value),signatureV1:r.signatureV1,validityType:r.validityType,validity:B(r.validity),sequence:r.sequence,ttl:r.ttl,pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data}):Xt.encode({pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data})}function ln(r){let e=Xt.decode(r);if(e.sequence!=null&&(e.sequence=BigInt(e.sequence)),e.ttl!=null&&(e.ttl=BigInt(e.ttl)),e.signatureV2==null||e.data==null)throw new Zt("Missing data or signatureV2");let t=Sx(e.data),n=Rk(t.Value),o=M(t.Validity);if(e.value!=null&&e.signatureV1!=null)return Mk(e),{value:n,validityType:Xt.ValidityType.EOL,validity:o,sequence:t.Sequence,ttl:t.TTL,pubKey:e.pubKey,signatureV1:e.signatureV1,signatureV2:e.signatureV2,data:e.data};if(e.signatureV2!=null)return{value:n,validityType:Xt.ValidityType.EOL,validity:o,sequence:t.Sequence,ttl:t.TTL,pubKey:e.pubKey,signatureV2:e.signatureV2,data:e.data};throw new Error("invalid record: does not include signatureV1 or signatureV2")}function Yi(r){return Ce([vx,r.bytes])}function ds(r){let e=ht(r.slice(vx.length));if(!Jl(e,Dk)&&!Jl(e,Nk))throw new Vr("Multihash in IPNS key was not identity or sha2-256");return e}function Sx(r){let e=xt(r);if(e.ValidityType===0)e.ValidityType=Xt.ValidityType.EOL;else throw new fs("The validity type is unsupported");return Number.isInteger(e.Sequence)&&(e.Sequence=BigInt(e.Sequence)),Number.isInteger(e.TTL)&&(e.TTL=BigInt(e.TTL)),e}function Rk(r){let e=M(r).trim();if(e.startsWith("/"))return e;try{return`/ipfs/${H.decode(r).toV1().toString()}`}catch{}try{return`/ipfs/${H.parse(e).toV1().toString()}`}catch{}throw new Zl("Value must be a valid content path starting with /")}function Mk(r){if(r.data==null)throw new Xl("Record data is missing");let e=Sx(r.data);if(!X(e.Value,r.value??new Uint8Array(0)))throw new Zt('Field "value" did not match between protobuf and CBOR');if(!X(e.Validity,r.validity??new Uint8Array(0)))throw new Zt('Field "validity" did not match between protobuf and CBOR');if(e.ValidityType!==r.validityType)throw new Zt('Field "validityType" did not match between protobuf and CBOR');if(e.Sequence!==r.sequence)throw new Zt('Field "sequence" did not match between protobuf and CBOR');if(e.TTL!==r.ttl)throw new Zt('Field "ttl" did not match between protobuf and CBOR')}function Jl(r,e){return r.code===e}var RU=Ct("ipns"),MU=300*1e9,Uk="/ipns/",OU=Uk.length;var Ix=pn(Em(),1);var Ql=Ct("ipns:validator"),Fk=1024*10;async function $k(r,e){let t=ln(e),n;try{let o=Ax(t.data);n=await r.verify(o,t.signatureV2)}catch{n=!1}if(!n)throw Ql.error("record signature verification failed"),new Zt("Record signature verification failed");if(t.validityType===Xt.ValidityType.EOL){if(Ix.default.fromString(t.validity).toDate().getTime()<Date.now())throw Ql.error("record has expired"),new jl("record has expired")}else if(t.validityType!=null)throw Ql.error("the validity type is unsupported"),new fs("The validity type is unsupported");Ql("ipns record for %s is valid",t.value)}async function kx(r,e){if(e.byteLength>Fk)throw new Yl("The record is too large");let t=ds(r),n;Jl(t,0)&&(n=Qa(t));let o=ln(e),s=Ex(o)??n;if(s==null)throw new Wi("Could not extract public key from IPNS record or routing key");let i=Yi(s.toMultihash());if(!X(i,r))throw new Wi("Embedded public key did not match routing key");await $k(s,e)}var eu=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MESSAGE_LENGTH"};async function*Zi(r,e={}){let t=/\r?\n/,n=new TextDecoder("utf8"),o="";for await(let s of r){if(typeof s=="string"&&(s=new TextEncoder().encode(s)),wo(s)&&(s=s.subarray()),o+=n.decode(s,{stream:!0}),o.length>(e?.maxMessageLength??o.length))throw new eu("Incoming message too long");let i=o.split(t);o=i.pop()??"";for(let a=0;a<i.length;a++)yield JSON.parse(i[a])}o+=n.decode(),o!==""&&(yield JSON.parse(o))}var hs=class extends Error{static name="InvalidRequestError";constructor(e="Invalid request"){super(e),this.name="InvalidRequestError"}},Jt=class extends Error{static name="BadResponseError";constructor(e="Bad response"){super(e),this.name="BadResponseError"}};function Vk(r){return r[Symbol.asyncIterator]!=null}function Kk(r){if(Vk(r))return(async()=>{for await(let e of r)return e})();for(let e of r)return e}var _x=Kk;var Cx=B("/ipns/");function Tx(r){return X(r.subarray(0,Cx.byteLength),Cx)}var tu=class{client;constructor(e){this.client=e}async*findProviders(e,t={}){try{yield*Gc(this.client.getProviders(e,t),n=>({id:n.ID,multiaddrs:n.Addrs??[],routing:"delegated-http-routing-v1"}))}catch(n){if(n instanceof ke)return;throw n}}async provide(){}async cancelReprovide(){}async put(e,t,n){if(!Tx(e))return;let o=ds(e),s=H.createV1(114,o),i=ln(t);await this.client.putIPNS(s,i,n)}async get(e,t){if(!Tx(e))throw new ke("Not found");let n=ds(e),o=H.createV1(114,n);try{let s=await this.client.getIPNS(o,t);return ji(s)}catch(s){throw s.name==="BadResponseError"?new ke("Not found"):s}}toString(){return`DelegatedRoutingV1HttpApiClientContentRouting(${this.client.url})`}},ru=class{client;constructor(e){this.client=e}async findPeer(e,t={}){let n=await _x(this.client.getPeers(e,t));if(n!=null)return{id:n.ID,multiaddrs:n.Addrs??[]};throw new ke("Not found")}async*getClosestPeers(e,t={}){}toString(){return`DelegatedRoutingV1HttpApiClientPeerRouting(${this.client.url})`}};var nu={concurrentRequests:4,timeout:3e4,cacheTTL:300*1e3,cacheName:"delegated-routing-v1-cache"},ou=class{url;started;httpQueue;shutDownController;timeout;contentRouting;peerRouting;filterAddrs;filterProtocols;inFlightRequests;cacheName;cache;cacheTTL;log;constructor(e,t){this.log=e.logger.forComponent("delegated-routing-v1-http-api-client"),this.started=!1,this.shutDownController=new AbortController,this.shutDownController.signal,this.httpQueue=new Zn({concurrency:t.concurrentRequests??nu.concurrentRequests}),this.inFlightRequests=new Map,this.url=t.url instanceof URL?t.url:new URL(t.url),this.timeout=t.timeout??nu.timeout,this.filterAddrs=t.filterAddrs,this.filterProtocols=t.filterProtocols,this.contentRouting=new tu(this),this.peerRouting=new ru(this),this.cacheName=t.cacheName??nu.cacheName,this.cacheTTL=t.cacheTTL??nu.cacheTTL}get[mn](){return this.contentRouting}get[yn](){return this.peerRouting}isStarted(){return this.started}async start(){this.started||(this.started=!0,this.cacheTTL>0&&(this.cache=await globalThis.caches?.open(this.cacheName),this.cache!=null&&this.log("cache enabled with ttl %d",this.cacheTTL)))}async stop(){this.httpQueue.clear(),this.shutDownController.abort(),await globalThis.caches?.delete(this.cacheName),this.started=!1}async*getProviders(e,t={}){this.log("getProviders starts: %c",e);let n=AbortSignal.timeout(this.timeout),o=pe([this.shutDownController.signal,n,t.signal]);let s=ae(),i=ae(),a=0;this.httpQueue.add(async()=>(s.resolve(),i.promise));try{await s.promise;let c=new URL(`${this.url}routing/v1/providers/${e}`);this.#t(c,t.filterAddrs,t.filterProtocols);let l={headers:{accept:"application/x-ndjson, application/json;q=0.8"},signal:o},u=await this.#r(c.toString(),l);if(!u.ok){if(u.status===404)return;throw u.status===422?new hs("Request does not conform to schema or semantic constraints"):new Jt(`Unexpected status code: ${u.status}`)}let f=u.headers.get("Content-Type");if(f==null)throw new Jt("No Content-Type header received");if(u.body==null){if(f!=="application/x-ndjson")throw new Jt("Routing response had no body");return}if(f.startsWith("application/json")){let h=(await u.json()).Providers??[];for(let p of h){let g=this.#e(p);g!=null&&(a++,yield g)}}else if(f.includes("application/x-ndjson"))for await(let d of Zi(Wl(u.body))){let h=this.#e(d);h!=null&&(a++,yield h)}else throw new Jt(`Unsupported Content-Type: ${f}`)}finally{o.clear(),i.resolve(),this.log("getProviders finished found %d providers for %c",a,e)}}async*getPeers(e,t={}){this.log("getPeers starts: %c",e);let n=AbortSignal.timeout(this.timeout),o=pe([this.shutDownController.signal,n,t.signal]);let s=ae(),i=ae();this.httpQueue.add(async()=>(s.resolve(),i.promise));try{await s.promise;let a=new URL(`${this.url}routing/v1/peers/${e.toCID().toString()}`);this.#t(a,t.filterAddrs,t.filterProtocols);let c={headers:{Accept:"application/x-ndjson"},signal:o},l=await this.#r(a.toString(),c);if(l.status===404)return;if(l.status===422)throw new hs("Request does not conform to schema or semantic constraints");if(l.body==null)throw new Jt("Routing response had no body");if(l.headers.get("Content-Type")?.startsWith("application/json")){let d=(await l.json()).Peers??[];for(let h of d){let p=this.#e(h);p!=null&&(yield p)}}else for await(let f of Zi(Wl(l.body))){let d=this.#e(f);d!=null&&(yield d)}}catch(a){this.log.error("getPeers errored - %e",a)}finally{o.clear(),i.resolve(),this.log("getPeers finished: %c",e)}}async getIPNS(e,t={}){this.log("getIPNS starts: %s",e);let n=AbortSignal.timeout(this.timeout),o=pe([this.shutDownController.signal,n,t.signal]);let s=ae(),i=ae();this.httpQueue.add(async()=>(s.resolve(),i.promise));let a=`${this.url}routing/v1/ipns/${e}`;try{await s.promise;let c={headers:{Accept:"application/vnd.ipfs.ipns-record"},signal:o},l=await this.#r(a,c);if(this.log("getIPNS GET %s %d",a,l.status),l.status===404)throw new ke("No matching records found");if(l.status===422)throw new hs("Request does not conform to schema or semantic constraints");if(!l.ok)throw new Jt(`Unexpected status code: ${l.status}`);let u=l.headers.get("Content-Type");if(u==null||!u.includes("application/vnd.ipfs.ipns-record"))throw new ke("No matching records found");if(l.body==null)throw new Jt("GET ipns response had no body");let f=await l.arrayBuffer(),d=new Uint8Array(f,0,f.byteLength);return t.validate!==!1&&await kx(Yi(e.multihash),d),ln(d)}catch(c){throw this.log.error("getIPNS GET %s error - %e",a,c),c}finally{o.clear(),i.resolve(),this.log("getIPNS finished: %s",e)}}async putIPNS(e,t,n={}){this.log("putIPNS starts: %c",e);let o=AbortSignal.timeout(this.timeout),s=pe([this.shutDownController.signal,o,n.signal]);let i=ae(),a=ae();this.httpQueue.add(async()=>(i.resolve(),a.promise));let c=`${this.url}routing/v1/ipns/${e}`;try{await i.promise;let l=ji(t),u={method:"PUT",headers:{"Content-Type":"application/vnd.ipfs.ipns-record"},body:l,signal:s},f=await this.#r(c,u);if(this.log("putIPNS PUT %s %d",c,f.status),f.status!==200)throw new Jt("PUT ipns response had status other than 200")}catch(l){throw this.log.error("putIPNS PUT %s error - %e",c,l.stack),l}finally{s.clear(),a.resolve(),this.log("putIPNS finished: %c",e)}}#e(e){try{let t=[],n=e.Addrs?.map(ee)??[];return e.Protocols!=null&&t.push(...e.Protocols),e.Protocol!=null&&(t.push(e.Protocol),delete e.Protocol),{...e,Schema:"peer",ID:Tt(e.ID),Addrs:n,Protocols:t}}catch(t){this.log.error("could not conform record to peer schema - %e",t)}}#t(e,t,n){if(t!=null||this.filterAddrs!=null){let o=t?.join(",")??this.filterAddrs?.join(",")??"";o!==""&&e.searchParams.set("filter-addrs",o)}if(n!=null||this.filterProtocols!=null){let o=n?.join(",")??this.filterProtocols?.join(",")??"";o!==""&&e.searchParams.set("filter-protocols",o)}}async#r(e,t){let n=t.method??"GET",o=`${n}-${e}`;if(n==="GET"){let c=await this.cache?.match(e);if(c!=null){if(parseInt(c.headers.get("x-cache-expires")??"0",10)>Date.now())return this.log("returning cached response for %s",o),this.logResponse(c),c;this.log("evicting cached response for %s",o),await this.cache?.delete(e)}else this.cache!=null&&this.log("cache miss for %s",o)}let s=this.inFlightRequests.get(o);if(s!=null){let c=await s;return this.log("deduplicating outgoing request for %s",o),c.clone()}this.log("outgoing request:"),this.logRequest(e,t);let i=fetch(e,t).then(async c=>{if(this.log("incoming response:"),this.logResponse(c),this.cache!=null&&c.ok&&n==="GET"){let l=Date.now()+this.cacheTTL,u=new Headers(c.headers);u.set("x-cache-expires",l.toString());let f=new Response(c.clone().body,{status:c.status,statusText:c.statusText,headers:u});await this.cache.put(e,f)}return c}).finally(()=>{this.inFlightRequests.delete(o)});return this.inFlightRequests.set(o,i),await i}toString(){return`DefaultDelegatedRoutingV1HttpApiClient(${this.url})`}logRequest(e,t){let n=new Headers(t.headers);this.log("%s %s HTTP/1.1",t.method??"GET",e);for(let[o,s]of n.entries())this.log("%s: %s",o,s)}logResponse(e){this.log("HTTP/1.1 %d %s",e.status,e.statusText);for(let[t,n]of e.headers.entries())this.log("%s: %s",t,n)}};function Bx(r,e={}){return new ou({logger:fr()},{...e,url:new URL(r)})}var Lx="[a-fA-F\\d:]",un=r=>r&&r.includeBoundaries?`(?:(?<=\\s|^)(?=${Lx})|(?<=${Lx})(?=\\s|$))`:"",Qt="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",Ie="[a-fA-F\\d]{1,4}",su=`
21
+ `)),!d.ok)throw this.#t++,new Error(`Unable to fetch raw block for CID ${e} from gateway ${this.url}, recieved ${d.status} ${d.statusText}`);let h=await vx(d,n,{signal:i.signal,log:this.log});return this.#i++,h}),this.#s.set(s,c)}return await c}catch(c){throw t?.aborted===!0?new Error(`Fetching raw block for CID ${e} from gateway ${this.url} was aborted`):(this.#t++,new Error(`Unable to fetch raw block for CID ${e} - ${c.message}`))}finally{t?.removeEventListener("abort",a),this.#s.delete(s)}}reliability(){return this.#e===0?1:this.#r>0?-1/0:this.#i/(this.#e+this.#t*3)}incrementInvalidBlocks(){this.#r++}getStats(){return{attempts:this.#e,errors:this.#t,invalidBlocks:this.#r,successes:this.#i,pendingResponses:this.#s.size}}toString(){return`TrustlessGateway(${this.url})`}};var xm=class extends Ki{routing;allowInsecure;allowLocal;transformRequestInit;constructor(e,t){super(e,{...t,name:"helia:trustless-gateway:session"}),this.routing=e.routing,this.allowInsecure=t.allowInsecure??zl,this.allowLocal=t.allowLocal??Gl,this.transformRequestInit=t.transformRequestInit}async queryProvider(e,t,n){this.log("fetching BLOCK for %c from %s",e,t.url);let o=await t.getRawBlock(e,n);return this.log.trace("got block for %c from %s",e,t.url),await n.validateFn?.(o),o}async*findNewProviders(e,t={}){yield*ql(e,this.routing,this.logger,this.allowInsecure,this.allowLocal,{...t,transformRequestInit:this.transformRequestInit})}toEvictionKey(e){return e.url.toString()}equals(e,t){return e.url.toString()===t.url.toString()}async convertToProvider(e,t){if(tr(e))return;let n=bm(Array.isArray(e)?e:[e],this.allowInsecure,this.allowLocal);if(n.length===0)return;let o=Ul(n[0]);return new us(o,{logger:this.logger,transformRequestInit:this.transformRequestInit})}};function Ax(r,e){return new xm(r,e)}var Wl=class{allowInsecure;allowLocal;transformRequestInit;routing;log;logger;constructor(e,t={}){this.log=e.logger.forComponent("helia:trustless-gateway-block-broker"),this.logger=e.logger,this.routing=e.routing,this.allowInsecure=t.allowInsecure??zl,this.allowLocal=t.allowLocal??Gl,this.transformRequestInit=t.transformRequestInit}async retrieve(e,t={}){let n=[];for await(let o of ql(e,this.routing,this.logger,this.allowInsecure,this.allowLocal,{...t,transformRequestInit:this.transformRequestInit})){this.log("getting block for %c from %s",e,o.url);try{let s=await o.getRawBlock(e,t);this.log.trace("got block for %c from %s",e,o.url);try{await t.validateFn?.(s)}catch(i){this.log.error("failed to validate block for %c from %s - %e",e,o.url,i);continue}return s}catch(s){if(this.log.error("failed to get block for %c from %s - %e",e,o.url,s),s instanceof Error?n.push(s):n.push(new Error(`Unable to fetch raw block for CID ${e} from gateway ${o.url}`)),t.signal?.aborted===!0){this.log.trace("request aborted while fetching raw block for CID %c from gateway %s",e,o.url);break}}}throw n.length>0?new AggregateError(n,`Unable to fetch raw block for CID ${e} from any gateway`):new Error(`Unable to fetch raw block for CID ${e} from any gateway`)}createSession(e={}){return Ax({logger:this.logger,routing:this.routing},{...e,allowLocal:this.allowLocal,allowInsecure:this.allowInsecure,transformRequestInit:this.transformRequestInit})}};var zl=!1,Gl=!1,Ex=2097152;function vm(r={}){return e=>new Wl(e,r)}async function*jl(r,e={}){let t=r.getReader();try{for(;;){let n=await t.read();if(n.done)return;yield n.value}}finally{e.preventCancel!==!0&&await t.cancel(),t.releaseLock()}}var $k=pn(Am(),1);var Zt=class extends Error{static name="SignatureVerificationError";constructor(e="Record signature verification failed"){super(e),this.name="SignatureVerificationError"}},Yl=class extends Error{static name="RecordExpiredError";constructor(e="Record has expired"){super(e),this.name="RecordExpiredError"}},fs=class extends Error{static name="UnsupportedValidityError";constructor(e="The validity type is unsupported"){super(e),this.name="UnsupportedValidityError"}},Zl=class extends Error{static name="RecordTooLargeError";constructor(e="The record is too large"){super(e),this.name="RecordTooLargeError"}},Xl=class extends Error{static name="InvalidValueError";constructor(e="Value must be a valid content path starting with /"){super(e),this.name="InvalidValueError"}},Jl=class extends Error{static name="InvalidRecordDataError";constructor(e="Invalid record data"){super(e),this.name="InvalidRecordDataError"}},Gi=class extends Error{static name="InvalidEmbeddedPublicKeyError";constructor(e="Invalid embedded public key"){super(e),this.name="InvalidEmbeddedPublicKeyError"}};var Xt;(function(r){let e;(function(o){o.EOL="EOL"})(e=r.ValidityType||(r.ValidityType={}));let t;(function(o){o[o.EOL=0]="EOL"})(t||(t={})),(function(o){o.codec=()=>Xs(t)})(e=r.ValidityType||(r.ValidityType={}));let n;r.codec=()=>(n==null&&(n=Fe((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.value!=null&&(s.uint32(10),s.bytes(o.value)),o.signatureV1!=null&&(s.uint32(18),s.bytes(o.signatureV1)),o.validityType!=null&&(s.uint32(24),r.ValidityType.codec().encode(o.validityType,s)),o.validity!=null&&(s.uint32(34),s.bytes(o.validity)),o.sequence!=null&&(s.uint32(40),s.uint64(o.sequence)),o.ttl!=null&&(s.uint32(48),s.uint64(o.ttl)),o.pubKey!=null&&(s.uint32(58),s.bytes(o.pubKey)),o.signatureV2!=null&&(s.uint32(66),s.bytes(o.signatureV2)),o.data!=null&&(s.uint32(74),s.bytes(o.data)),i.lengthDelimited!==!1&&s.ldelim()},(o,s,i={})=>{let a={},c=s==null?o.len:o.pos+s;for(;o.pos<c;){let l=o.uint32();switch(l>>>3){case 1:{a.value=o.bytes();break}case 2:{a.signatureV1=o.bytes();break}case 3:{a.validityType=r.ValidityType.codec().decode(o);break}case 4:{a.validity=o.bytes();break}case 5:{a.sequence=o.uint64();break}case 6:{a.ttl=o.uint64();break}case 7:{a.pubKey=o.bytes();break}case 8:{a.signatureV2=o.bytes();break}case 9:{a.data=o.bytes();break}default:{o.skipType(l&7);break}}}return a})),n),r.encode=o=>Ue(o,r.codec()),r.decode=(o,s)=>Oe(o,r.codec(),s)})(Xt||(Xt={}));var Rk=Ct("ipns:utils"),Sx=B("/ipns/");var Mk=0,Ok=18;function Ix(r){let e;if(r.pubKey!=null)try{e=en(r.pubKey)}catch(t){throw Rk.error(t),t}if(e!=null)return e}function kx(r){let e=B("ipns-signature:");return Ce([e,r])}function Wi(r){return"signatureV1"in r?Xt.encode({value:B(r.value),signatureV1:r.signatureV1,validityType:r.validityType,validity:B(r.validity),sequence:r.sequence,ttl:r.ttl,pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data}):Xt.encode({pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data})}function ln(r){let e=Xt.decode(r);if(e.sequence!=null&&(e.sequence=BigInt(e.sequence)),e.ttl!=null&&(e.ttl=BigInt(e.ttl)),e.signatureV2==null||e.data==null)throw new Zt("Missing data or signatureV2");let t=_x(e.data),n=Uk(t.Value),o=M(t.Validity);if(e.value!=null&&e.signatureV1!=null)return Fk(e),{value:n,validityType:Xt.ValidityType.EOL,validity:o,sequence:t.Sequence,ttl:t.TTL,pubKey:e.pubKey,signatureV1:e.signatureV1,signatureV2:e.signatureV2,data:e.data};if(e.signatureV2!=null)return{value:n,validityType:Xt.ValidityType.EOL,validity:o,sequence:t.Sequence,ttl:t.TTL,pubKey:e.pubKey,signatureV2:e.signatureV2,data:e.data};throw new Error("invalid record: does not include signatureV1 or signatureV2")}function ji(r){return Ce([Sx,r.bytes])}function ds(r){let e=dt(r.slice(Sx.length));if(!Ql(e,Mk)&&!Ql(e,Ok))throw new Vr("Multihash in IPNS key was not identity or sha2-256");return e}function _x(r){let e=bt(r);if(e.ValidityType===0)e.ValidityType=Xt.ValidityType.EOL;else throw new fs("The validity type is unsupported");return Number.isInteger(e.Sequence)&&(e.Sequence=BigInt(e.Sequence)),Number.isInteger(e.TTL)&&(e.TTL=BigInt(e.TTL)),e}function Uk(r){let e=M(r).trim();if(e.startsWith("/"))return e;try{return`/ipfs/${H.decode(r).toV1().toString()}`}catch{}try{return`/ipfs/${H.parse(e).toV1().toString()}`}catch{}throw new Xl("Value must be a valid content path starting with /")}function Fk(r){if(r.data==null)throw new Jl("Record data is missing");let e=_x(r.data);if(!X(e.Value,r.value??new Uint8Array(0)))throw new Zt('Field "value" did not match between protobuf and CBOR');if(!X(e.Validity,r.validity??new Uint8Array(0)))throw new Zt('Field "validity" did not match between protobuf and CBOR');if(e.ValidityType!==r.validityType)throw new Zt('Field "validityType" did not match between protobuf and CBOR');if(e.Sequence!==r.sequence)throw new Zt('Field "sequence" did not match between protobuf and CBOR');if(e.TTL!==r.ttl)throw new Zt('Field "ttl" did not match between protobuf and CBOR')}function Ql(r,e){return r.code===e}var $U=Ct("ipns"),VU=300*1e9,Vk="/ipns/",KU=Vk.length;var Cx=pn(Am(),1);var eu=Ct("ipns:validator"),Kk=1024*10;async function Hk(r,e){let t=ln(e),n;try{let o=kx(t.data);n=await r.verify(o,t.signatureV2)}catch{n=!1}if(!n)throw eu.error("record signature verification failed"),new Zt("Record signature verification failed");if(t.validityType===Xt.ValidityType.EOL){if(Cx.default.fromString(t.validity).toDate().getTime()<Date.now())throw eu.error("record has expired"),new Yl("record has expired")}else if(t.validityType!=null)throw eu.error("the validity type is unsupported"),new fs("The validity type is unsupported");eu("ipns record for %s is valid",t.value)}async function Tx(r,e){if(e.byteLength>Kk)throw new Zl("The record is too large");let t=ds(r),n;Ql(t,0)&&(n=Ja(t));let o=ln(e),s=Ix(o)??n;if(s==null)throw new Gi("Could not extract public key from IPNS record or routing key");let i=ji(s.toMultihash());if(!X(i,r))throw new Gi("Embedded public key did not match routing key");await Hk(s,e)}var tu=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MESSAGE_LENGTH"};async function*Yi(r,e={}){let t=/\r?\n/,n=new TextDecoder("utf8"),o="";for await(let s of r){if(typeof s=="string"&&(s=new TextEncoder().encode(s)),wo(s)&&(s=s.subarray()),o+=n.decode(s,{stream:!0}),o.length>(e?.maxMessageLength??o.length))throw new tu("Incoming message too long");let i=o.split(t);o=i.pop()??"";for(let a=0;a<i.length;a++)yield JSON.parse(i[a])}o+=n.decode(),o!==""&&(yield JSON.parse(o))}var hs=class extends Error{static name="InvalidRequestError";constructor(e="Invalid request"){super(e),this.name="InvalidRequestError"}},Jt=class extends Error{static name="BadResponseError";constructor(e="Bad response"){super(e),this.name="BadResponseError"}};function qk(r){return r[Symbol.asyncIterator]!=null}function zk(r){if(qk(r))return(async()=>{for await(let e of r)return e})();for(let e of r)return e}var Bx=zk;var Lx=B("/ipns/");function Px(r){return X(r.subarray(0,Lx.byteLength),Lx)}var ru=class{client;constructor(e){this.client=e}async*findProviders(e,t={}){try{yield*Gc(this.client.getProviders(e,t),n=>({id:n.ID,multiaddrs:n.Addrs??[],routing:"delegated-http-routing-v1"}))}catch(n){if(n instanceof ke)return;throw n}}async provide(){}async cancelReprovide(){}async put(e,t,n){if(!Px(e))return;let o=ds(e),s=H.createV1(114,o),i=ln(t);await this.client.putIPNS(s,i,n)}async get(e,t){if(!Px(e))throw new ke("Not found");let n=ds(e),o=H.createV1(114,n);try{let s=await this.client.getIPNS(o,t);return Wi(s)}catch(s){throw s.name==="BadResponseError"?new ke("Not found"):s}}toString(){return`DelegatedRoutingV1HttpApiClientContentRouting(${this.client.url})`}},nu=class{client;constructor(e){this.client=e}async findPeer(e,t={}){let n=await Bx(this.client.getPeers(e,t));if(n!=null)return{id:n.ID,multiaddrs:n.Addrs??[]};throw new ke("Not found")}async*getClosestPeers(e,t={}){}toString(){return`DelegatedRoutingV1HttpApiClientPeerRouting(${this.client.url})`}};var ou={concurrentRequests:4,timeout:3e4,cacheTTL:300*1e3,cacheName:"delegated-routing-v1-cache"},su=class{url;started;httpQueue;shutDownController;timeout;contentRouting;peerRouting;filterAddrs;filterProtocols;inFlightRequests;cacheName;cache;cacheTTL;log;constructor(e,t){this.log=e.logger.forComponent("delegated-routing-v1-http-api-client"),this.started=!1,this.shutDownController=new AbortController,this.shutDownController.signal,this.httpQueue=new Zn({concurrency:t.concurrentRequests??ou.concurrentRequests}),this.inFlightRequests=new Map,this.url=t.url instanceof URL?t.url:new URL(t.url),this.timeout=t.timeout??ou.timeout,this.filterAddrs=t.filterAddrs,this.filterProtocols=t.filterProtocols,this.contentRouting=new ru(this),this.peerRouting=new nu(this),this.cacheName=t.cacheName??ou.cacheName,this.cacheTTL=t.cacheTTL??ou.cacheTTL}get[mn](){return this.contentRouting}get[yn](){return this.peerRouting}isStarted(){return this.started}async start(){this.started||(this.started=!0,this.cacheTTL>0&&(this.cache=await globalThis.caches?.open(this.cacheName),this.cache!=null&&this.log("cache enabled with ttl %d",this.cacheTTL)))}async stop(){this.httpQueue.clear(),this.shutDownController.abort(),await globalThis.caches?.delete(this.cacheName),this.started=!1}async*getProviders(e,t={}){this.log("getProviders starts: %c",e);let n=AbortSignal.timeout(this.timeout),o=pe([this.shutDownController.signal,n,t.signal]);let s=ae(),i=ae(),a=0;this.httpQueue.add(async()=>(s.resolve(),i.promise));try{await s.promise;let c=new URL(`${this.url}routing/v1/providers/${e}`);this.#t(c,t.filterAddrs,t.filterProtocols);let l={headers:{accept:"application/x-ndjson, application/json;q=0.8"},signal:o},u=await this.#r(c.toString(),l);if(!u.ok){if(u.status===404)return;throw u.status===422?new hs("Request does not conform to schema or semantic constraints"):new Jt(`Unexpected status code: ${u.status}`)}let f=u.headers.get("Content-Type");if(f==null)throw new Jt("No Content-Type header received");if(u.body==null){if(f!=="application/x-ndjson")throw new Jt("Routing response had no body");return}if(f.startsWith("application/json")){let h=(await u.json()).Providers??[];for(let p of h){let g=this.#e(p);g!=null&&(a++,yield g)}}else if(f.includes("application/x-ndjson"))for await(let d of Yi(jl(u.body))){let h=this.#e(d);h!=null&&(a++,yield h)}else throw new Jt(`Unsupported Content-Type: ${f}`)}finally{o.clear(),i.resolve(),this.log("getProviders finished found %d providers for %c",a,e)}}async*getPeers(e,t={}){this.log("getPeers starts: %c",e);let n=AbortSignal.timeout(this.timeout),o=pe([this.shutDownController.signal,n,t.signal]);let s=ae(),i=ae();this.httpQueue.add(async()=>(s.resolve(),i.promise));try{await s.promise;let a=new URL(`${this.url}routing/v1/peers/${e.toCID().toString()}`);this.#t(a,t.filterAddrs,t.filterProtocols);let c={headers:{Accept:"application/x-ndjson"},signal:o},l=await this.#r(a.toString(),c);if(l.status===404)return;if(l.status===422)throw new hs("Request does not conform to schema or semantic constraints");if(l.body==null)throw new Jt("Routing response had no body");if(l.headers.get("Content-Type")?.startsWith("application/json")){let d=(await l.json()).Peers??[];for(let h of d){let p=this.#e(h);p!=null&&(yield p)}}else for await(let f of Yi(jl(l.body))){let d=this.#e(f);d!=null&&(yield d)}}catch(a){this.log.error("getPeers errored - %e",a)}finally{o.clear(),i.resolve(),this.log("getPeers finished: %c",e)}}async getIPNS(e,t={}){this.log("getIPNS starts: %s",e);let n=AbortSignal.timeout(this.timeout),o=pe([this.shutDownController.signal,n,t.signal]);let s=ae(),i=ae();this.httpQueue.add(async()=>(s.resolve(),i.promise));let a=`${this.url}routing/v1/ipns/${e}`;try{await s.promise;let c={headers:{Accept:"application/vnd.ipfs.ipns-record"},signal:o},l=await this.#r(a,c);if(this.log("getIPNS GET %s %d",a,l.status),l.status===404)throw new ke("No matching records found");if(l.status===422)throw new hs("Request does not conform to schema or semantic constraints");if(!l.ok)throw new Jt(`Unexpected status code: ${l.status}`);let u=l.headers.get("Content-Type");if(u==null||!u.includes("application/vnd.ipfs.ipns-record"))throw new ke("No matching records found");if(l.body==null)throw new Jt("GET ipns response had no body");let f=await l.arrayBuffer(),d=new Uint8Array(f,0,f.byteLength);return t.validate!==!1&&await Tx(ji(e.multihash),d),ln(d)}catch(c){throw this.log.error("getIPNS GET %s error - %e",a,c),c}finally{o.clear(),i.resolve(),this.log("getIPNS finished: %s",e)}}async putIPNS(e,t,n={}){this.log("putIPNS starts: %c",e);let o=AbortSignal.timeout(this.timeout),s=pe([this.shutDownController.signal,o,n.signal]);let i=ae(),a=ae();this.httpQueue.add(async()=>(i.resolve(),a.promise));let c=`${this.url}routing/v1/ipns/${e}`;try{await i.promise;let l=Wi(t),u={method:"PUT",headers:{"Content-Type":"application/vnd.ipfs.ipns-record"},body:l,signal:s},f=await this.#r(c,u);if(this.log("putIPNS PUT %s %d",c,f.status),f.status!==200)throw new Jt("PUT ipns response had status other than 200")}catch(l){throw this.log.error("putIPNS PUT %s error - %e",c,l.stack),l}finally{s.clear(),a.resolve(),this.log("putIPNS finished: %c",e)}}#e(e){try{let t=[],n=e.Addrs?.map(ee)??[];return e.Protocols!=null&&t.push(...e.Protocols),e.Protocol!=null&&(t.push(e.Protocol),delete e.Protocol),{...e,Schema:"peer",ID:Tt(e.ID),Addrs:n,Protocols:t}}catch(t){this.log.error("could not conform record to peer schema - %e",t)}}#t(e,t,n){if(t!=null||this.filterAddrs!=null){let o=t?.join(",")??this.filterAddrs?.join(",")??"";o!==""&&e.searchParams.set("filter-addrs",o)}if(n!=null||this.filterProtocols!=null){let o=n?.join(",")??this.filterProtocols?.join(",")??"";o!==""&&e.searchParams.set("filter-protocols",o)}}async#r(e,t){let n=t.method??"GET",o=`${n}-${e}`;if(n==="GET"){let c=await this.cache?.match(e);if(c!=null){if(parseInt(c.headers.get("x-cache-expires")??"0",10)>Date.now())return this.log("returning cached response for %s",o),this.logResponse(c),c;this.log("evicting cached response for %s",o),await this.cache?.delete(e)}else this.cache!=null&&this.log("cache miss for %s",o)}let s=this.inFlightRequests.get(o);if(s!=null){let c=await s;return this.log("deduplicating outgoing request for %s",o),c.clone()}this.log("outgoing request:"),this.logRequest(e,t);let i=fetch(e,t).then(async c=>{if(this.log("incoming response:"),this.logResponse(c),this.cache!=null&&c.ok&&n==="GET"){let l=Date.now()+this.cacheTTL,u=new Headers(c.headers);u.set("x-cache-expires",l.toString());let f=new Response(c.clone().body,{status:c.status,statusText:c.statusText,headers:u});await this.cache.put(e,f)}return c}).finally(()=>{this.inFlightRequests.delete(o)});return this.inFlightRequests.set(o,i),await i}toString(){return`DefaultDelegatedRoutingV1HttpApiClient(${this.url})`}logRequest(e,t){let n=new Headers(t.headers);this.log("%s %s HTTP/1.1",t.method??"GET",e);for(let[o,s]of n.entries())this.log("%s: %s",o,s)}logResponse(e){this.log("HTTP/1.1 %d %s",e.status,e.statusText);for(let[t,n]of e.headers.entries())this.log("%s: %s",t,n)}};function Dx(r,e={}){return new su({logger:fr()},{...e,url:new URL(r)})}var Nx="[a-fA-F\\d:]",un=r=>r&&r.includeBoundaries?`(?:(?<=\\s|^)(?=${Nx})|(?<=${Nx})(?=\\s|$))`:"",Qt="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",Ie="[a-fA-F\\d]{1,4}",iu=`
22
22
  (?:
23
23
  (?:${Ie}:){7}(?:${Ie}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8
24
24
  (?:${Ie}:){6}(?:${Qt}|:${Ie}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4
@@ -29,26 +29,26 @@ HTTP/1.1 %d %s
29
29
  (?:${Ie}:){1}(?:(?::${Ie}){0,4}:${Qt}|(?::${Ie}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4
30
30
  (?::(?:(?::${Ie}){0,5}:${Qt}|(?::${Ie}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4
31
31
  )(?:%[0-9a-zA-Z]{1,})? // %eth0 %1
32
- `.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),Hk=new RegExp(`(?:^${Qt}$)|(?:^${su}$)`),qk=new RegExp(`^${Qt}$`),zk=new RegExp(`^${su}$`),Am=r=>r&&r.exact?Hk:new RegExp(`(?:${un(r)}${Qt}${un(r)})|(?:${un(r)}${su}${un(r)})`,"g");Am.v4=r=>r&&r.exact?qk:new RegExp(`${un(r)}${Qt}${un(r)}`,"g");Am.v6=r=>r&&r.exact?zk:new RegExp(`${un(r)}${su}${un(r)}`,"g");var Sm=Am;function Im(r){let e=(...t)=>r(...t);return Object.defineProperty(e,"name",{value:`functionTimeout(${r.name||"<anonymous>"})`,configurable:!0}),e}function Px(){return!1}var{toString:Gk}=Object.prototype;function km(r){return Gk.call(r)==="[object RegExp]"}var Dx={global:"g",ignoreCase:"i",multiline:"m",dotAll:"s",sticky:"y",unicode:"u"};function _m(r,e={}){if(!km(r))throw new TypeError("Expected a RegExp instance");let t=Object.keys(Dx).map(o=>(typeof e[o]=="boolean"?e[o]:r[o])?Dx[o]:"").join(""),n=new RegExp(e.source||r.source,t);return n.lastIndex=typeof e.lastIndex=="number"?e.lastIndex:r.lastIndex,n}function Cm(r,e,{timeout:t}={}){try{return Im(()=>_m(r).test(e),{timeout:t})()}catch(n){if(Px(n))return!1;throw n}}var Wk=15,jk=45,Nx={timeout:400};function Tm(r){return r.length>jk?!1:Cm(Sm.v6({exact:!0}),r,Nx)}function Rx(r){return r.length>Wk?!1:Cm(Sm.v4({exact:!0}),r,Nx)}var Mx={http:"80",https:"443",ws:"80",wss:"443"},Yk=["http","https","ws","wss"];function Ox(r,e){e=e??{};let t=e.defaultDnsType??"dns",{scheme:n,hostname:o,port:s,path:i}=Zk(r),a=[Xk(o,t),Jk(s,n),Qk(n)];i!=null&&a.push(e_(i));let c="/"+a.filter(l=>!!l).reduce((l,u)=>l.concat(u),[]).join("/");return ee(c)}function Zk(r){let[e]=r.split(":");Yk.includes(e)||(r="http"+r.substring(e.length));let{protocol:t,hostname:n,port:o,pathname:s,search:i}=new URL(r);if(o==null||o===""){let c=t_(e);c!=null&&(o=c),c==null&&t==="http:"&&(o="80")}let a;return s!=null&&s!==""&&s!=="/"&&(s.startsWith("/")&&(s=s.substring(1)),a=s),i!=null&&i!==""&&(a=a??"",a+=i),{scheme:e,hostname:n,port:o,path:a}}function Xk(r,e){if(!(r==null||r==="")){if(Rx(r))return["ip4",r];if(Tm(r))return["ip6",r];if(r[0]==="["){let t=r.substring(1,r.length-1);if(Tm(t))return["ip6",t]}return[e,r]}}function Jk(r,e){if(!(r==null||r===""))return e==="udp"?["udp",r]:["tcp",r]}function Qk(r){if(r.match(/^tcp$|^udp$/)==null)return r==="https"?["/tls/http"]:r==="wss"?["/tls/ws"]:[r]}function e_(r){if(!(r==null||r===""))return["http-path",encodeURIComponent(r)]}function t_(r){if(!(r==null||r===""||Mx[r]==null))return Mx[r]}var r_=["https://trustless-gateway.link","https://4everland.io"],n_=2336;function o_(r){return r=r.toString(),{id:Wn(H.createV1(n_,Ge.digest(B(r)))),multiaddrs:[Ox(r)]}}function s_(r){return new URL(M(r.id.toMultihash().digest))}var Bm=class{gateways;shuffle;constructor(e={}){this.gateways=(e.gateways??r_).map(t=>o_(t)),this.shuffle=e.shuffle??!0}async*findProviders(e,t){yield*(this.shuffle?this.gateways.toSorted(()=>Math.random()>.5?1:-1):this.gateways).map(n=>({...n,protocols:["transport-ipfs-gateway-http"],routing:"http-gateway-routing"}))}toString(){return`HTTPGatewayRouter([${this.gateways.map(e=>s_(e)).join(", ")}])`}};function Lm(r={}){return new Bm(r)}var Pm=class{libp2p;constructor(e){this.libp2p=e}async provide(e,t){await this.libp2p.contentRouting.provide(e,t)}async cancelReprovide(e,t){await this.libp2p.contentRouting.cancelReprovide(e,t)}async*findProviders(e,t){yield*this.libp2p.contentRouting.findProviders(e,t)}async put(e,t,n){await this.libp2p.contentRouting.put(e,t,n)}async get(e,t){return this.libp2p.contentRouting.get(e,t)}async findPeer(e,t){return this.libp2p.peerRouting.findPeer(e,t)}async*getClosestPeers(e,t){yield*this.libp2p.peerRouting.getClosestPeers(e,t)}toString(){return"Libp2pRouter()"}};function Dm(r){return new Pm(r)}function i_(r){return r[Symbol.asyncIterator]!=null}function a_(r){if(i_(r))return(async()=>{let t=[];for await(let n of r)t.push(n);return t})();let e=[];for(let t of r)e.push(t);return e}var ro=a_;function c_(r){return typeof r?.then=="function"}var Xi=class extends Br{data;constructor(){super(),this.data=new Map}put(e,t,n){n?.signal?.throwIfAborted();let o;if(t instanceof Uint8Array)o=[t];else{let s=ro(t);if(c_(s))return s.then(i=>this._put(e,i,n));o=s}return this._put(e,o,n)}_put(e,t,n){return n?.signal?.throwIfAborted(),this.data.set(Te.encode(e.multihash.bytes),t),e}*get(e,t){t?.signal?.throwIfAborted();let n=this.data.get(Te.encode(e.multihash.bytes));if(n==null)throw new Lt;yield*n}has(e,t){return t?.signal?.throwIfAborted(),this.data.has(Te.encode(e.multihash.bytes))}async delete(e,t){t?.signal?.throwIfAborted(),this.data.delete(Te.encode(e.multihash.bytes))}*getAll(e){e?.signal?.throwIfAborted();for(let[t,n]of this.data.entries())yield{cid:H.createV1(Ps,ht(Te.decode(t))),bytes:(async function*(){yield*n})()},e?.signal?.throwIfAborted()}};var x9=Ct("blockstore:core:tiered");var Ux="SHARDING";function u_(r){return r[Symbol.asyncIterator]!=null}function f_(r,e){return u_(r)?(async function*(){yield*(await ro(r)).sort(e)})():(function*(){yield*ro(r).sort(e)})()}var iu=f_;var Lr=class{put(e,t,n){return Promise.reject(new Error(".put is not implemented"))}get(e,t){return Promise.reject(new Error(".get is not implemented"))}has(e,t){return Promise.reject(new Error(".has is not implemented"))}delete(e,t){return Promise.reject(new Error(".delete is not implemented"))}async*putMany(e,t={}){for await(let{key:n,value:o}of e)await this.put(n,o,t),yield n}async*getMany(e,t={}){for await(let n of e)yield{key:n,value:await this.get(n,t)}}async*deleteMany(e,t={}){for await(let n of e)await this.delete(n,t),yield n}batch(){let e=[],t=[];return{put(n,o){e.push({key:n,value:o})},delete(n){t.push(n)},commit:async n=>{await Ii(this.putMany(e,n)),e=[],await Ii(this.deleteMany(t,n)),t=[]}}}async*_all(e,t){throw new Error("._all is not implemented")}async*_allKeys(e,t){throw new Error("._allKeys is not implemented")}query(e,t){let n=this._all(e,t);if(e.prefix!=null){let o=e.prefix;n=jt(n,s=>s.key.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>jt(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>iu(o,s),n)),e.offset!=null){let o=0,s=e.offset;n=jt(n,()=>o++>=s)}return e.limit!=null&&(n=Wc(n,e.limit)),n}queryKeys(e,t){let n=this._allKeys(e,t);if(e.prefix!=null){let o=e.prefix;n=jt(n,s=>s.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>jt(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>iu(o,s),n)),e.offset!=null){let o=e.offset,s=0;n=jt(n,()=>s++>=o)}return e.limit!=null&&(n=Wc(n,e.limit)),n}};var no=class extends Lr{data;constructor(){super(),this.data=new Map}put(e,t,n){return n?.signal?.throwIfAborted(),this.data.set(e.toString(),t),e}get(e,t){t?.signal?.throwIfAborted();let n=this.data.get(e.toString());if(n==null)throw new Lt;return n}has(e,t){return t?.signal?.throwIfAborted(),this.data.has(e.toString())}delete(e,t){t?.signal?.throwIfAborted(),this.data.delete(e.toString())}*_all(e,t){t?.signal?.throwIfAborted();for(let[n,o]of this.data.entries())yield{key:new ge(n),value:o},t?.signal?.throwIfAborted()}*_allKeys(e,t){t?.signal?.throwIfAborted();for(let n of this.data.keys())yield new ge(n),t?.signal?.throwIfAborted()}};var J9=new ge(Ux);var d7=Ct("datastore:core:tiered");async function $x(r){if(r.connectionProtector===null&&globalThis.process?.env?.LIBP2P_FORCE_PNET!=null)throw new k("Private network is enforced, but no protector was provided");return r}var Ji;(function(r){let e;r.codec=()=>(e==null&&(e=Fe((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.publicKey!=null&&t.publicKey.byteLength>0&&(n.uint32(10),n.bytes(t.publicKey)),t.payloadType!=null&&t.payloadType.byteLength>0&&(n.uint32(18),n.bytes(t.payloadType)),t.payload!=null&&t.payload.byteLength>0&&(n.uint32(26),n.bytes(t.payload)),t.signature!=null&&t.signature.byteLength>0&&(n.uint32(42),n.bytes(t.signature)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={publicKey:ve(0),payloadType:ve(0),payload:ve(0),signature:ve(0)},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.publicKey=t.bytes();break}case 2:{s.payloadType=t.bytes();break}case 3:{s.payload=t.bytes();break}case 5:{s.signature=t.bytes();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>Ue(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(Ji||(Ji={}));var au=class extends Error{constructor(e="Invalid signature"){super(e),this.name="InvalidSignatureError"}};var ps=class r{static createFromProtobuf=e=>{let t=Ji.decode(e),n=en(t.publicKey);return new r({publicKey:n,payloadType:t.payloadType,payload:t.payload,signature:t.signature})};static seal=async(e,t,n)=>{if(t==null)throw new Error("Missing private key");let o=e.domain,s=e.codec,i=e.marshal(),a=Vx(o,s,i),c=await t.sign(a.subarray(),n);return new r({publicKey:t.publicKey,payloadType:s,payload:i,signature:c})};static openAndCertify=async(e,t,n)=>{let o=r.createFromProtobuf(e);if(!await o.validate(t,n))throw new au("Envelope signature is not valid for the given domain");return o};publicKey;payloadType;payload;signature;marshaled;constructor(e){let{publicKey:t,payloadType:n,payload:o,signature:s}=e;this.publicKey=t,this.payloadType=n,this.payload=o,this.signature=s}marshal(){return this.marshaled==null&&(this.marshaled=Ji.encode({publicKey:St(this.publicKey),payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(e){return e==null?!1:X(this.marshal(),e.marshal())}async validate(e,t){let n=Vx(e,this.payloadType,this.payload);return this.publicKey.verify(n.subarray(),this.signature,t)}},Vx=(r,e,t)=>{let n=B(r),o=Xr(n.byteLength),s=Xr(e.length),i=Xr(t.length);return new se(o,n,s,e,i,t)};var Kx="libp2p-peer-record",Hx=Uint8Array.from([3,1]);var Qi;(function(r){let e;(function(n){let o;n.codec=()=>(o==null&&(o=Fe((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.multiaddr!=null&&s.multiaddr.byteLength>0&&(i.uint32(10),i.bytes(s.multiaddr)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={multiaddr:ve(0)},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.multiaddr=s.bytes();break}default:{s.skipType(u&7);break}}}return c})),o),n.encode=s=>Ue(s,n.codec()),n.decode=(s,i)=>Oe(s,n.codec(),i)})(e=r.AddressInfo||(r.AddressInfo={}));let t;r.codec=()=>(t==null&&(t=Fe((n,o,s={})=>{if(s.lengthDelimited!==!1&&o.fork(),n.peerId!=null&&n.peerId.byteLength>0&&(o.uint32(10),o.bytes(n.peerId)),n.seq!=null&&n.seq!==0n&&(o.uint32(16),o.uint64(n.seq)),n.addresses!=null)for(let i of n.addresses)o.uint32(26),r.AddressInfo.codec().encode(i,o);s.lengthDelimited!==!1&&o.ldelim()},(n,o,s={})=>{let i={peerId:ve(0),seq:0n,addresses:[]},a=o==null?n.len:n.pos+o;for(;n.pos<a;){let c=n.uint32();switch(c>>>3){case 1:{i.peerId=n.bytes();break}case 2:{i.seq=n.uint64();break}case 3:{if(s.limits?.addresses!=null&&i.addresses.length===s.limits.addresses)throw new Nn('Decode error - map field "addresses" had too many elements');i.addresses.push(r.AddressInfo.codec().decode(n,n.uint32(),{limits:s.limits?.addresses$}));break}default:{n.skipType(c&7);break}}}return i})),t),r.encode=n=>Ue(n,r.codec()),r.decode=(n,o)=>Oe(n,r.codec(),o)})(Qi||(Qi={}));function qx(r,e){let t=(n,o)=>n.toString().localeCompare(o.toString());return r.length!==e.length?!1:(e.sort(t),r.sort(t).every((n,o)=>e[o].equals(n)))}var oo=class r{static createFromProtobuf=e=>{let t=Qi.decode(e),n=ss(ht(t.peerId)),o=(t.addresses??[]).map(i=>ee(i.multiaddr)),s=t.seq;return new r({peerId:n,multiaddrs:o,seqNumber:s})};static DOMAIN=Kx;static CODEC=Hx;peerId;multiaddrs;seqNumber;domain=r.DOMAIN;codec=r.CODEC;marshaled;constructor(e){let{peerId:t,multiaddrs:n,seqNumber:o}=e;this.peerId=t,this.multiaddrs=n??[],this.seqNumber=o??BigInt(Date.now())}marshal(){return this.marshaled==null&&(this.marshaled=Qi.encode({peerId:this.peerId.toMultihash().bytes,seq:BigInt(this.seqNumber),addresses:this.multiaddrs.map(e=>({multiaddr:e.bytes}))})),this.marshaled}equals(e){return!(!(e instanceof r)||!this.peerId.equals(e.peerId)||this.seqNumber!==e.seqNumber||!qx(this.multiaddrs,e.multiaddrs))}};var Pr;(function(r){let e;(function(o){let s;o.codec=()=>(s==null&&(s=Fe((i,a,c={})=>{c.lengthDelimited!==!1&&a.fork(),i.key!=null&&i.key!==""&&(a.uint32(10),a.string(i.key)),i.value!=null&&i.value.byteLength>0&&(a.uint32(18),a.bytes(i.value)),c.lengthDelimited!==!1&&a.ldelim()},(i,a,c={})=>{let l={key:"",value:ve(0)},u=a==null?i.len:i.pos+a;for(;i.pos<u;){let f=i.uint32();switch(f>>>3){case 1:{l.key=i.string();break}case 2:{l.value=i.bytes();break}default:{i.skipType(f&7);break}}}return l})),s),o.encode=i=>Ue(i,o.codec()),o.decode=(i,a)=>Oe(i,o.codec(),a)})(e=r.Peer$metadataEntry||(r.Peer$metadataEntry={}));let t;(function(o){let s;o.codec=()=>(s==null&&(s=Fe((i,a,c={})=>{c.lengthDelimited!==!1&&a.fork(),i.key!=null&&i.key!==""&&(a.uint32(10),a.string(i.key)),i.value!=null&&(a.uint32(18),lu.codec().encode(i.value,a)),c.lengthDelimited!==!1&&a.ldelim()},(i,a,c={})=>{let l={key:""},u=a==null?i.len:i.pos+a;for(;i.pos<u;){let f=i.uint32();switch(f>>>3){case 1:{l.key=i.string();break}case 2:{l.value=lu.codec().decode(i,i.uint32(),{limits:c.limits?.value});break}default:{i.skipType(f&7);break}}}return l})),s),o.encode=i=>Ue(i,o.codec()),o.decode=(i,a)=>Oe(i,o.codec(),a)})(t=r.Peer$tagsEntry||(r.Peer$tagsEntry={}));let n;r.codec=()=>(n==null&&(n=Fe((o,s,i={})=>{if(i.lengthDelimited!==!1&&s.fork(),o.addresses!=null)for(let a of o.addresses)s.uint32(10),cu.codec().encode(a,s);if(o.protocols!=null)for(let a of o.protocols)s.uint32(18),s.string(a);if(o.publicKey!=null&&(s.uint32(34),s.bytes(o.publicKey)),o.peerRecordEnvelope!=null&&(s.uint32(42),s.bytes(o.peerRecordEnvelope)),o.metadata!=null&&o.metadata.size!==0)for(let[a,c]of o.metadata.entries())s.uint32(50),r.Peer$metadataEntry.codec().encode({key:a,value:c},s);if(o.tags!=null&&o.tags.size!==0)for(let[a,c]of o.tags.entries())s.uint32(58),r.Peer$tagsEntry.codec().encode({key:a,value:c},s);o.updated!=null&&(s.uint32(64),s.uint64Number(o.updated)),i.lengthDelimited!==!1&&s.ldelim()},(o,s,i={})=>{let a={addresses:[],protocols:[],metadata:new Map,tags:new Map},c=s==null?o.len:o.pos+s;for(;o.pos<c;){let l=o.uint32();switch(l>>>3){case 1:{if(i.limits?.addresses!=null&&a.addresses.length===i.limits.addresses)throw new Nn('Decode error - map field "addresses" had too many elements');a.addresses.push(cu.codec().decode(o,o.uint32(),{limits:i.limits?.addresses$}));break}case 2:{if(i.limits?.protocols!=null&&a.protocols.length===i.limits.protocols)throw new Nn('Decode error - map field "protocols" had too many elements');a.protocols.push(o.string());break}case 4:{a.publicKey=o.bytes();break}case 5:{a.peerRecordEnvelope=o.bytes();break}case 6:{if(i.limits?.metadata!=null&&a.metadata.size===i.limits.metadata)throw new Js('Decode error - map field "metadata" had too many elements');let u=r.Peer$metadataEntry.codec().decode(o,o.uint32());a.metadata.set(u.key,u.value);break}case 7:{if(i.limits?.tags!=null&&a.tags.size===i.limits.tags)throw new Js('Decode error - map field "tags" had too many elements');let u=r.Peer$tagsEntry.codec().decode(o,o.uint32(),{limits:{value:i.limits?.tags$value}});a.tags.set(u.key,u.value);break}case 8:{a.updated=o.uint64Number();break}default:{o.skipType(l&7);break}}}return a})),n),r.encode=o=>Ue(o,r.codec()),r.decode=(o,s)=>Oe(o,r.codec(),s)})(Pr||(Pr={}));var cu;(function(r){let e;r.codec=()=>(e==null&&(e=Fe((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.multiaddr!=null&&t.multiaddr.byteLength>0&&(n.uint32(10),n.bytes(t.multiaddr)),t.isCertified!=null&&(n.uint32(16),n.bool(t.isCertified)),t.observed!=null&&(n.uint32(24),n.uint64Number(t.observed)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={multiaddr:ve(0)},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.multiaddr=t.bytes();break}case 2:{s.isCertified=t.bool();break}case 3:{s.observed=t.uint64Number();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>Ue(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(cu||(cu={}));var lu;(function(r){let e;r.codec=()=>(e==null&&(e=Fe((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.value!=null&&t.value!==0&&(n.uint32(8),n.uint32(t.value)),t.expiry!=null&&(n.uint32(16),n.uint64(t.expiry)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={value:0},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.value=t.uint32();break}case 2:{s.expiry=t.uint64();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>Ue(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(lu||(lu={}));function d_(r,e){if(r.publicKey!=null||e.publicKey==null)return r;let t;r.type==="RSA"&&(t=r.toMultihash());let n=en(e.publicKey,t);return Ep(n)}function zx(r,e,t){let n=Pr.decode(e);return ms(r,n,t)}function ms(r,e,t){let n=new Map,o=BigInt(Date.now());for(let[s,i]of e.tags.entries())i.expiry!=null&&i.expiry<o||n.set(s,i);return{...e,id:d_(r,e),addresses:e.addresses.filter(({observed:s})=>s!=null&&s>Date.now()-t).map(({multiaddr:s,isCertified:i})=>({multiaddr:ee(s),isCertified:i??!1})),metadata:e.metadata,peerRecordEnvelope:e.peerRecordEnvelope??void 0,tags:n}}function Gx(r,e){return h_(r.addresses,e.addresses)&&p_(r.protocols,e.protocols)&&m_(r.publicKey,e.publicKey)&&g_(r.peerRecordEnvelope,e.peerRecordEnvelope)&&y_(r.metadata,e.metadata)&&w_(r.tags,e.tags)}function h_(r,e){return jx(r,e,(t,n)=>!(t.isCertified!==n.isCertified||!X(t.multiaddr,n.multiaddr)))}function p_(r,e){return jx(r,e,(t,n)=>t===n)}function m_(r,e){return Wx(r,e)}function g_(r,e){return Wx(r,e)}function y_(r,e){return Yx(r,e,(t,n)=>X(t,n))}function w_(r,e){return Yx(r,e,(t,n)=>t.value===n.value&&t.expiry===n.expiry)}function Wx(r,e){return r==null&&e==null?!0:r!=null&&e!=null?X(r,e):!1}function jx(r,e,t){if(r.length!==e.length)return!1;for(let n=0;n<r.length;n++)if(!t(r[n],e[n]))return!1;return!0}function Yx(r,e,t){if(r.size!==e.size)return!1;for(let[n,o]of r.entries()){let s=e.get(n);if(s==null||!t(o,s))return!1}return!0}var Nm="/peers/";function ea(r){if(!tr(r)||r.type==null)throw new k("Invalid PeerId");let e=r.toCID().toString();return new ge(`${Nm}${e}`)}async function Zx(r,e,t,n,o){let s=new Map;for(let i of t){if(i==null)continue;if(i.multiaddr instanceof Uint8Array&&(i.multiaddr=ee(i.multiaddr)),!nn(i.multiaddr))throw new k("Multiaddr was invalid");if(!await e(r,i.multiaddr,o))continue;let a=i.isCertified??!1,c=i.multiaddr.toString(),l=s.get(c);l!=null?i.isCertified=l.isCertified||a:s.set(c,{multiaddr:i.multiaddr,isCertified:a})}return[...s.values()].sort((i,a)=>i.multiaddr.toString().localeCompare(a.multiaddr.toString())).map(({isCertified:i,multiaddr:a})=>{let c=a.getComponents().find(l=>l.code===421)?.value;return r.equals(c)&&(a=a.decapsulate(ee(`/p2p/${r}`))),{isCertified:i,multiaddr:a.bytes}})}async function fu(r,e,t,n){if(e==null)throw new k("Invalid PeerData");if(e.publicKey!=null&&r.publicKey!=null&&!e.publicKey.equals(r.publicKey))throw new k("publicKey bytes do not match peer id publicKey bytes");let o=n.existingPeer?.peer;if(o!=null&&!r.equals(o.id))throw new k("peer id did not match existing peer id");let s=o?.addresses??[],i=new Set(o?.protocols??[]),a=o?.metadata??new Map,c=o?.tags??new Map,l=o?.peerRecordEnvelope;if(t==="patch"){if((e.multiaddrs!=null||e.addresses!=null)&&(s=[],e.multiaddrs!=null&&s.push(...e.multiaddrs.map(d=>({isCertified:!1,multiaddr:d}))),e.addresses!=null&&s.push(...e.addresses)),e.protocols!=null&&(i=new Set(e.protocols)),e.metadata!=null){let d=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);a=uu(d,{validate:Xx})}if(e.tags!=null){let d=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags);c=uu(d,{validate:Jx,map:Qx})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}if(t==="merge"){if(e.multiaddrs!=null&&s.push(...e.multiaddrs.map(d=>({isCertified:!1,multiaddr:d}))),e.addresses!=null&&s.push(...e.addresses),e.protocols!=null&&(i=new Set([...i,...e.protocols])),e.metadata!=null){let d=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);for(let[h,p]of d)p==null?a.delete(h):a.set(h,p);a=uu([...a.entries()],{validate:Xx})}if(e.tags!=null){let d=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags),h=new Map(c);for(let[p,g]of d)g==null?h.delete(p):h.set(p,g);c=uu([...h.entries()],{validate:Jx,map:Qx})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}let u;o?.id.publicKey!=null?u=St(o.id.publicKey):e.publicKey!=null?u=St(e.publicKey):r.publicKey!=null&&(u=St(r.publicKey));let f={addresses:await Zx(r,n.addressFilter??(async()=>!0),s,n.existingPeer?.peerPB.addresses,n),protocols:[...i.values()].sort((d,h)=>d.localeCompare(h)),metadata:a,tags:c,publicKey:u,peerRecordEnvelope:l};return f.addresses.forEach(d=>{d.observed=n.existingPeer?.peerPB.addresses?.find(h=>X(h.multiaddr,h.multiaddr))?.observed??Date.now()}),r.type!=="RSA"&&delete f.publicKey,f}function uu(r,e){let t=new Map;for(let[n,o]of r)o!=null&&e.validate(n,o);for(let[n,o]of r.sort(([s],[i])=>s.localeCompare(i)))o!=null&&t.set(n,e.map?.(n,o)??o);return t}function Xx(r,e){if(typeof r!="string")throw new k("Metadata key must be a string");if(!(e instanceof Uint8Array))throw new k("Metadata value must be a Uint8Array")}function Jx(r,e){if(typeof r!="string")throw new k("Tag name must be a string");if(e.value!=null){if(parseInt(`${e.value}`,10)!==e.value)throw new k("Tag value must be an integer");if(e.value<0||e.value>100)throw new k("Tag value must be between 0-100")}if(e.ttl!=null){if(parseInt(`${e.ttl}`,10)!==e.ttl)throw new k("Tag ttl must be an integer");if(e.ttl<0)throw new k("Tag ttl must be between greater than 0")}}function Qx(r,e){let t;e.expiry!=null&&(t=e.expiry),e.ttl!=null&&(t=BigInt(Date.now()+Number(e.ttl)));let n={value:e.value??0};return t!=null&&(n.expiry=t),n}function ev(r){let e=r.toString().split("/")[2],t=H.parse(e,Te);return Wn(t)}function Rm(r,e,t){let n=ev(r);return zx(n,e,t)}function b_(r,e){return{prefix:Nm,filters:(r.filters??[]).map(t=>({key:n,value:o})=>t(Rm(n,o,e))),orders:(r.orders??[]).map(t=>(n,o)=>t(Rm(n.key,n.value,e),Rm(o.key,o.value,e)))}}var du=class{peerId;datastore;locks;addressFilter;log;maxAddressAge;maxPeerAge;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-store"),this.peerId=e.peerId,this.datastore=e.datastore,this.addressFilter=t.addressFilter,this.locks=Sp({name:"libp2p_peer_store_locks",metrics:e.metrics}),this.maxAddressAge=t.maxAddressAge??36e5,this.maxPeerAge=t.maxPeerAge??216e5}getLock(e){let t=this.locks.get(e);return t==null&&(t={refs:0,lock:$i({name:e.toString(),singleProcess:!0})},this.locks.set(e,t)),t.refs++,t}maybeRemoveLock(e,t){t.refs--,t.refs===0&&(t.lock.finalize(),this.locks.delete(e))}async getReadLock(e,t){let n=this.getLock(e);try{let o=await n.lock.readLock(t);return()=>{o(),this.maybeRemoveLock(e,n)}}catch(o){throw this.maybeRemoveLock(e,n),o}}async getWriteLock(e,t){let n=this.getLock(e);try{let o=await n.lock.writeLock(t);return()=>{o(),this.maybeRemoveLock(e,n)}}catch(o){throw this.maybeRemoveLock(e,n),o}}async has(e,t){try{return await this.load(e,t),!0}catch(n){if(n.name!=="NotFoundError")throw n}return!1}async delete(e,t){this.peerId.equals(e)||await this.datastore.delete(ea(e),t)}async load(e,t){let n=ea(e),o=await this.datastore.get(n,t),s=Pr.decode(o);if(this.#r(e,s))throw await this.datastore.delete(n,t),new ke;return ms(e,s,this.peerId.equals(e)?1/0:this.maxAddressAge)}async save(e,t,n){let o=await this.#e(e,n),s=await fu(e,t,"patch",{...n,addressFilter:this.addressFilter});return this.#t(e,s,o)}async patch(e,t,n){let o=await this.#e(e,n),s=await fu(e,t,"patch",{...n,addressFilter:this.addressFilter,existingPeer:o});return this.#t(e,s,o)}async merge(e,t,n){let o=await this.#e(e,n),s=await fu(e,t,"merge",{addressFilter:this.addressFilter,existingPeer:o});return this.#t(e,s,o)}async*all(e){for await(let{key:t,value:n}of this.datastore.query(b_(e??{},this.maxAddressAge),e)){let o=ev(t);if(o.equals(this.peerId))continue;let s=Pr.decode(n);if(this.#r(o,s)){await this.datastore.delete(t,e);continue}yield ms(o,s,this.peerId.equals(o)?1/0:this.maxAddressAge)}}async#e(e,t){try{let n=ea(e),o=await this.datastore.get(n,t),s=Pr.decode(o);if(this.#r(e,s))throw await this.datastore.delete(n,t),new ke;return{peerPB:s,peer:ms(e,s,this.maxAddressAge)}}catch(n){n.name!=="NotFoundError"&&this.log.error("invalid peer data found in peer store - %e",n)}}async#t(e,t,n,o){t.updated=Date.now();let s=Pr.encode(t);return await this.datastore.put(ea(e),s,o),{peer:ms(e,t,this.maxAddressAge),previous:n?.peer,updated:n==null||!Gx(t,n.peerPB)}}#r(e,t){if(t.updated==null)return!0;if(this.peerId.equals(e))return!1;let n=t.updated<Date.now()-this.maxPeerAge,o=Date.now()-this.maxAddressAge,s=t.addresses.filter(i=>i.observed!=null&&i.observed>o);return n&&s.length===0}};var Mm=class{store;events;peerId;log;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-store"),this.events=e.events,this.peerId=e.peerId,this.store=new du(e,t)}[Symbol.toStringTag]="@libp2p/peer-store";async forEach(e,t){for await(let n of this.store.all(t))e(n)}async all(e){return ro(this.store.all(e))}async delete(e,t){let n=await this.store.getReadLock(e,t);try{await this.store.delete(e,t)}finally{n()}}async has(e,t){let n=await this.store.getReadLock(e,t);try{return await this.store.has(e,t)}finally{this.log.trace("has release read lock"),n?.()}}async get(e,t){let n=await this.store.getReadLock(e,t);try{return await this.store.load(e,t)}finally{n?.()}}async getInfo(e,t){let n=await this.get(e,t);return{id:n.id,multiaddrs:n.addresses.map(({multiaddr:o})=>o)}}async save(e,t,n){let o=await this.store.getWriteLock(e,n);try{let s=await this.store.save(e,t,n);return this.#e(e,s),s.peer}finally{o?.()}}async patch(e,t,n){let o=await this.store.getWriteLock(e,n);try{let s=await this.store.patch(e,t,n);return this.#e(e,s),s.peer}finally{o?.()}}async merge(e,t,n){let o=await this.store.getWriteLock(e,n);try{let s=await this.store.merge(e,t,n);return this.#e(e,s),s.peer}finally{o?.()}}async consumePeerRecord(e,t,n){let o=tr(t)?t:tr(t?.expectedPeer)?t.expectedPeer:void 0,s=tr(t)||t===void 0?n:t,i=await ps.openAndCertify(e,oo.DOMAIN,s),a=Wn(i.publicKey.toCID());if(o?.equals(a)===!1)return this.log("envelope peer id was not the expected peer id - expected: %p received: %p",o,a),!1;let c=oo.createFromProtobuf(i.payload),l;try{l=await this.get(a,s)}catch(u){if(u.name!=="NotFoundError")throw u}if(l?.peerRecordEnvelope!=null){let u=ps.createFromProtobuf(l.peerRecordEnvelope),f=oo.createFromProtobuf(u.payload);if(f.seqNumber>=c.seqNumber)return this.log("sequence number was lower or equal to existing sequence number - stored: %d received: %d",f.seqNumber,c.seqNumber),!1}return await this.patch(c.peerId,{peerRecordEnvelope:e,addresses:c.multiaddrs.map(u=>({isCertified:!0,multiaddr:u}))},s),!0}#e(e,t){t.updated&&(this.peerId.equals(e)?this.events.safeDispatchEvent("self:peer:update",{detail:t}):this.events.safeDispatchEvent("peer:update",{detail:t}))}};function tv(r,e={}){return new Mm(r,e)}var rv=864e13;var hu=class{log;mappings;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:dns-mappings"),this.mappings=Je({name:"libp2p_address_manager_dns_mappings",metrics:e.metrics})}has(e){let t=Q(e),n=t.host;(t.type==="ip4"||t.type==="ip6")&&t.sni!=null&&(n=t.sni);for(let o of this.mappings.values())if(o.domain===n)return!0;return!1}add(e,t){t.forEach(n=>{this.log("add DNS mapping %s to %s",n,e);let o=$o(n)===!0;this.mappings.set(n,{domain:e,verified:o,expires:o?rv-Date.now():0,lastVerified:o?rv-Date.now():void 0})})}remove(e){let t=Q(e);if(t.type!=="ip4"&&t.type!=="ip6")return!1;let n=!1;for(let[o,s]of this.mappings.entries())s.domain===t.sni&&(this.log("removing %s to %s DNS mapping %e",o,s.domain),this.mappings.delete(o),n=n||s.verified);return n}getAll(e){let t=[];for(let n=0;n<e.length;n++){let o=e[n].multiaddr;if(!$e(o))continue;let s=Q(o);for(let[i,a]of this.mappings.entries()){if(s.host!==i)continue;let c=this.maybeAddSNIComponent(o,a.domain);c!=null&&(e.splice(n,1),n--,t.push({multiaddr:c,verified:a.verified,type:"dns-mapping",expires:a.expires,lastVerified:a.lastVerified}))}}return t}maybeAddSNIComponent(e,t){let n=e.getComponents();for(let o=0;o<n.length;o++)if(n[o].code===448&&n[o+1]?.code!==449)return n.splice(o+1,0,{name:"sni",code:449,value:t}),ee(n)}confirm(e,t){let n=Q(e),o=n.host;(n.type==="ip4"||n.type==="ip6")&&n.sni!=null&&(o=n.sni);let s=!1;for(let[i,a]of this.mappings.entries())a.domain===o&&(this.log("marking %s to %s DNS mapping as verified",i,a.domain),s=a.verified,a.verified=!0,a.expires=Date.now()+t,a.lastVerified=Date.now());return s}unconfirm(e,t){let n=Q(e);if(n.type!=="ip4"&&n.type!=="ip6")return!1;let o=n.sni??n.host,s=!1;for(let[i,a]of this.mappings.entries())a.domain===o&&(this.log("removing verification of %s to %s DNS mapping",i,a.domain),s=s||a.verified,a.verified=!1,a.expires=Date.now()+t);return s}};var pu=class{log;mappings;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:ip-mappings"),this.mappings=Je({name:"libp2p_address_manager_ip_mappings",metrics:e.metrics})}has(e){let t=Q(e);if(t.type!=="ip4"&&t.type!=="ip6")return!1;for(let n of this.mappings.values())for(let o of n)if(o.externalIp===t.host)return!0;return!1}add(e,t,n,o=t,s="tcp"){let i=`${e}-${t}-${s}`,a=this.mappings.get(i)??[],c={internalIp:e,internalPort:t,externalIp:n,externalPort:o,externalFamily:Kt(n)?4:6,protocol:s,verified:!1,expires:0};a.push(c),this.mappings.set(i,a)}remove(e){let t=Q(e);if(t.type!=="ip4"&&t.type!=="ip6")return!1;let n=!1;for(let[o,s]of this.mappings.entries()){for(let i=0;i<s.length;i++){let a=s[i];a.externalIp===t.host&&a.externalPort===t.port&&a.protocol===t.protocol&&(this.log("removing %s:%s to %s:%s %s IP mapping",a.externalIp,a.externalPort,t.host,t.port,t.protocol),n=n||a.verified,s.splice(i,1),i--)}s.length===0&&this.mappings.delete(o)}return n}getAll(e){let t=[];for(let{multiaddr:n}of e){if(!$e(n))continue;let o=Q(n);if(o.type!=="ip4"&&o.type!=="ip6")continue;let s;if(o.protocol==="tcp"?s=`${o.host}-${o.port}-tcp`:o.protocol==="udp"&&(s=`${o.host}-${o.port}-udp`),s==null)continue;let i=this.mappings.get(s);if(i!=null)for(let a of i)t.push({multiaddr:this.maybeOverrideIp(n,a.externalIp,a.externalFamily,a.protocol,a.externalPort),verified:a.verified,type:"ip-mapping",expires:a.expires,lastVerified:a.lastVerified})}return t}maybeOverrideIp(e,t,n,o,s){let i=e.getComponents(),a=i.findIndex(l=>l.code===4||l.code===41),c=i.findIndex(l=>l.name===o);return a>-1&&c>-1?(i[a].value=t,i[a].code=n===4?4:41,i[c].value=`${s}`,ee(i)):e}confirm(e,t){if(!$e(e))return!1;let n=Q(e),o=!1;for(let s of this.mappings.values())for(let i of s)i.externalIp===n.host&&(this.log("marking %s to %s IP mapping as verified",i.internalIp,i.externalIp),o=i.verified,i.verified=!0,i.expires=Date.now()+t,i.lastVerified=Date.now());return o}unconfirm(e,t){if(!$e(e))return!1;let n=Q(e),o=!1;for(let s of this.mappings.values())for(let i=0;i<s.length;i++){let a=s[i];a.externalIp===n.host&&a.externalPort===n.port&&a.protocol===n.protocol&&(this.log("removing verification of %s:%s to %s:%s %s IP mapping",a.externalIp,a.externalPort,n.host,n.port,n.protocol),o=o||a.verified,a.verified=!1,a.expires=Date.now()+t)}return o}};var x_={maxObservedAddresses:10},mu=class{log;addresses;maxObservedAddresses;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:observed-addresses"),this.addresses=Je({name:"libp2p_address_manager_observed_addresses",metrics:e.metrics}),this.maxObservedAddresses=t.maxObservedAddresses??x_.maxObservedAddresses}has(e){return this.addresses.has(e.toString())}removePrefixed(e){for(let t of this.addresses.keys())t.toString().startsWith(e)&&this.addresses.delete(t)}add(e){this.addresses.size!==this.maxObservedAddresses&&(Ht(e)||F0(e)||(this.log("adding observed address %a",e),this.addresses.set(e.toString(),{verified:!1,expires:0})))}getAll(){return Array.from(this.addresses).map(([e,t])=>({multiaddr:ee(e),verified:t.verified,type:"observed",expires:t.expires,lastVerified:t.lastVerified}))}remove(e){let t=this.addresses.get(e.toString())?.verified??!1;return this.log("removing observed address %a",e),this.addresses.delete(e.toString()),t}confirm(e,t){let n=e.toString(),o=this.addresses.get(n)??{verified:!1,expires:Date.now()+t,lastVerified:Date.now()},s=o.verified;return o.verified=!0,o.expires=Date.now()+t,o.lastVerified=Date.now(),this.log("marking observed address %a as verified",n),this.addresses.set(n,o),s}};var v_={maxObservedAddresses:10},gu=class{log;addresses;maxObservedAddresses;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:observed-addresses"),this.addresses=Je({name:"libp2p_address_manager_transport_addresses",metrics:e.metrics}),this.maxObservedAddresses=t.maxObservedAddresses??v_.maxObservedAddresses}get(e,t){if(Ht(e))return{multiaddr:e,verified:!0,type:"transport",expires:Date.now()+t,lastVerified:Date.now()};let n=this.toKey(e),o=this.addresses.get(n);return o==null&&(o={verified:!$e(e),expires:0},this.addresses.set(n,o)),{multiaddr:e,verified:o.verified,type:"transport",expires:o.expires,lastVerified:o.lastVerified}}has(e){let t=this.toKey(e);return this.addresses.has(t)}remove(e){let t=this.toKey(e),n=this.addresses.get(t)?.verified??!1;return this.log("removing observed address %a",e),this.addresses.delete(t),n}confirm(e,t){let n=this.toKey(e),o=this.addresses.get(n)??{verified:!1,expires:0,lastVerified:0},s=o.verified;return o.verified=!0,o.expires=Date.now()+t,o.lastVerified=Date.now(),this.addresses.set(n,o),s}unconfirm(e,t){let n=this.toKey(e),o=this.addresses.get(n)??{verified:!1,expires:0},s=o.verified;return o.verified=!1,o.expires=Date.now()+t,this.addresses.set(n,o),s}toKey(e){if(!$e(e))return e.toString();let t=Q(e);return`${t.host}-${t.port}-${t.protocol}`}};var nv=6e4,ov={maxObservedAddresses:10,addressVerificationTTL:nv*10,addressVerificationRetry:nv*5},E_=r=>r;function Om(r,e){let t=r.getComponents().findLast(n=>n.code===421)?.value;return t!=null&&Tt(t).equals(e)&&(r=r.decapsulate(ee(`/p2p/${e.toString()}`))),r}var yu=class{log;components;listen;announce;appendAnnounce;announceFilter;observed;dnsMappings;ipMappings;transportAddresses;observedAddressFilter;addressVerificationTTL;addressVerificationRetry;constructor(e,t={}){let{listen:n=[],announce:o=[],appendAnnounce:s=[]}=t;this.components=e,this.log=e.logger.forComponent("libp2p:address-manager"),this.listen=n.map(i=>i.toString()),this.announce=new Set(o.map(i=>i.toString())),this.appendAnnounce=new Set(s.map(i=>i.toString())),this.observed=new mu(e,t),this.dnsMappings=new hu(e,t),this.ipMappings=new pu(e,t),this.transportAddresses=new gu(e,t),this.announceFilter=t.announceFilter??E_,this.observedAddressFilter=Un(1024),this.addressVerificationTTL=t.addressVerificationTTL??ov.addressVerificationTTL,this.addressVerificationRetry=t.addressVerificationRetry??ov.addressVerificationRetry,this._updatePeerStoreAddresses=di(this._updatePeerStoreAddresses.bind(this),1e3),e.events.addEventListener("transport:listening",()=>{this._updatePeerStoreAddresses()}),e.events.addEventListener("transport:close",()=>{this._updatePeerStoreAddresses()})}[Symbol.toStringTag]="@libp2p/address-manager";_updatePeerStoreAddresses(){let e=this.getAddresses().map(t=>t.getComponents().findLast(n=>n.code===421)?.value===this.components.peerId.toString()?t.decapsulate(`/p2p/${this.components.peerId.toString()}`):t);this.components.peerStore.patch(this.components.peerId,{multiaddrs:e}).catch(t=>{this.log.error("error updating addresses - %e",t)})}getListenAddrs(){return Array.from(this.listen).map(e=>ee(e))}getAnnounceAddrs(){return Array.from(this.announce).map(e=>ee(e))}getAppendAnnounceAddrs(){return Array.from(this.appendAnnounce).map(e=>ee(e))}getObservedAddrs(){return this.observed.getAll().map(e=>e.multiaddr)}addObservedAddr(e){let t=Q(e),n;switch(t.type){case"ip4":{n=`${t.host}:${t.port}`;break}case"ip6":{n=`[${t.host}]:${t.port}`;break}default:return}this.observedAddressFilter.has(n)||(this.observedAddressFilter.add(n),e=Om(e,this.components.peerId),!this.ipMappings.has(e)&&(this.dnsMappings.has(e)||this.observed.add(e)))}confirmObservedAddr(e,t){e=Om(e,this.components.peerId);let n=!0;(t?.type==="transport"||this.transportAddresses.has(e))&&!this.transportAddresses.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(t?.type==="dns-mapping"||this.dnsMappings.has(e))&&!this.dnsMappings.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(t?.type==="ip-mapping"||this.ipMappings.has(e))&&!this.ipMappings.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(t?.type==="observed"||this.observed.has(e))&&(this.maybeUpgradeToIPMapping(e)?(this.ipMappings.confirm(e,t?.ttl??this.addressVerificationTTL),n=!1):!this.observed.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1)),n||this._updatePeerStoreAddresses()}removeObservedAddr(e,t){e=Om(e,this.components.peerId);let n=!1;this.observed.has(e)&&!this.observed.remove(e)&&n&&(n=!1),this.transportAddresses.has(e)&&!this.transportAddresses.unconfirm(e,t?.ttl??this.addressVerificationRetry)&&n&&(n=!1),this.dnsMappings.has(e)&&!this.dnsMappings.unconfirm(e,t?.ttl??this.addressVerificationRetry)&&n&&(n=!1),this.ipMappings.has(e)&&!this.ipMappings.unconfirm(e,t?.ttl??this.addressVerificationRetry)&&n&&(n=!1),n&&this._updatePeerStoreAddresses()}getAddresses(){let e=new Set,t=this.getAddressesWithMetadata().filter(n=>{if(!n.verified)return!1;let o=n.multiaddr.toString();return e.has(o)?!1:(e.add(o),!0)}).map(n=>n.multiaddr);return this.announceFilter(t.map(n=>{let o=ee(n);return o.getComponents().pop()?.value===this.components.peerId.toString()?o:o.encapsulate(`/p2p/${this.components.peerId.toString()}`)}))}getAddressesWithMetadata(){let e=this.getAnnounceAddrs();if(e.length>0)return this.components.transportManager.getListeners().forEach(o=>{o.updateAnnounceAddrs(e)}),e.map(o=>({multiaddr:o,verified:!0,type:"announce",expires:Date.now()+this.addressVerificationTTL,lastVerified:Date.now()}));let t=[];t=t.concat(this.components.transportManager.getAddrs().map(o=>this.transportAddresses.get(o,this.addressVerificationTTL)));let n=this.getAppendAnnounceAddrs();return n.length>0&&(this.components.transportManager.getListeners().forEach(o=>{o.updateAnnounceAddrs(n)}),t=t.concat(n.map(o=>({multiaddr:o,verified:!0,type:"announce",expires:Date.now()+this.addressVerificationTTL,lastVerified:Date.now()})))),t=t.concat(this.observed.getAll()),t=t.concat(this.ipMappings.getAll(t)),t=t.concat(this.dnsMappings.getAll(t)),t}addDNSMapping(e,t){this.dnsMappings.add(e,t)}removeDNSMapping(e){this.dnsMappings.remove(ee(`/dns/${e}`))&&this._updatePeerStoreAddresses()}addPublicAddressMapping(e,t,n,o=t,s="tcp"){this.ipMappings.add(e,t,n,o,s),this.observed.removePrefixed(`/ip${Kt(n)?4:6}/${n}/${s}/${o}`)}removePublicAddressMapping(e,t,n,o=t,s="tcp"){this.ipMappings.remove(ee(`/ip${Kt(n)?4:6}/${n}/${s}/${o}`))&&this._updatePeerStoreAddresses()}maybeUpgradeToIPMapping(e){if(this.ipMappings.has(e)||!$e(e))return!1;let t=Q(e);if(t.type!=="ip4"||$o(t.host)===!0)return!1;let n=this.components.transportManager.getListeners(),o=[s=>eo.exactMatch(s)||Gi.exactMatch(s),s=>zi.exactMatch(s),s=>fx.exactMatch(s)];for(let s of o){if(!s(e))continue;let i=n.filter(l=>l.getAddrs().filter(u=>Q(u).type==="ip4"&&s(u)).length>0);if(i.length!==1)continue;let a=i[0].getAddrs().filter(l=>!ui(l)).pop();if(a==null)continue;let c=Q(a);return c.port==null?!1:(this.observed.remove(e),this.ipMappings.add(c.host,c.port,t.host,t.port,t.protocol),!0)}return!1}};var sv;(function(r){r.NOT_STARTED_YET="The libp2p node is not started yet",r.NOT_FOUND="Not found"})(sv||(sv={}));var wu=class extends Error{constructor(e="Missing service"){super(e),this.name="MissingServiceError"}},bu=class extends Error{constructor(e="Unmet service dependencies"){super(e),this.name="UnmetServiceDependenciesError"}},gs=class extends Error{constructor(e="No content routers available"){super(e),this.name="NoContentRoutersError"}},ta=class extends Error{constructor(e="No peer routers available"){super(e),this.name="NoPeerRoutersError"}},xu=class extends Error{constructor(e="Should not try to find self"){super(e),this.name="QueriedForSelfError"}},vu=class extends Error{constructor(e="Unhandled protocol error"){super(e),this.name="UnhandledProtocolError"}},Eu=class extends Error{constructor(e="Duplicate protocol handler error"){super(e),this.name="DuplicateProtocolHandlerError"}},ra=class extends Error{constructor(e="Dial denied error"){super(e),this.name="DialDeniedError"}},Au=class extends Error{constructor(e="No transport was configured to listen on this address"){super(e),this.name="UnsupportedListenAddressError"}},Su=class extends Error{constructor(e="Configured listen addresses could not be listened on"){super(e),this.name="UnsupportedListenAddressesError"}},Iu=class extends Error{constructor(e="No valid addresses"){super(e),this.name="NoValidAddressesError"}},ku=class extends Error{constructor(e="Connection intercepted"){super(e),this.name="ConnectionInterceptedError"}},_u=class extends Error{constructor(e="Connection denied"){super(e),this.name="ConnectionDeniedError"}},fn=class extends Error{constructor(e="Stream is not multiplexed"){super(e),this.name="MuxerUnavailableError"}},so=class extends Error{constructor(e="Encryption failed"){super(e),this.name="EncryptionFailedError"}},Cu=class extends Error{constructor(e="Transport unavailable"){super(e),this.name="TransportUnavailableError"}},Tu=class extends Error{constructor(e="Max recursive depth reached"){super(e),this.name="RecursionLimitError"}};var Um=class{components={};_started=!1;constructor(e={}){this.components={};for(let[t,n]of Object.entries(e))this.components[t]=n;this.components.logger==null&&(this.components.logger=fr())}isStarted(){return this._started}async _invokeStartableMethod(e){await Promise.all(Object.values(this.components).filter(t=>Ba(t)).map(async t=>{await t[e]?.()}))}async beforeStart(){await this._invokeStartableMethod("beforeStart")}async start(){await this._invokeStartableMethod("start"),this._started=!0}async afterStart(){await this._invokeStartableMethod("afterStart")}async beforeStop(){await this._invokeStartableMethod("beforeStop")}async stop(){await this._invokeStartableMethod("stop"),this._started=!1}async afterStop(){await this._invokeStartableMethod("afterStop")}},A_=["metrics","connectionProtector","dns"],S_=["components","isStarted","beforeStart","start","afterStart","beforeStop","stop","afterStop","then","_invokeStartableMethod"];function iv(r={}){let e=new Um(r);return new Proxy(e,{get(n,o,s){if(typeof o=="string"&&!S_.includes(o)){let i=e.components[o];if(i==null&&!A_.includes(o))throw new wu(`${o} not set`);return i}return Reflect.get(n,o,s)},set(n,o,s){return typeof o=="string"?e.components[o]=s:Reflect.set(n,o,s),!0}})}function av(r){let e={};for(let t of Object.values(r.components))for(let n of I_(t))e[n]=!0;for(let t of Object.values(r.components))for(let n of k_(t))if(e[n]!==!0)throw new bu(`Service "${__(t)}" required capability "${n}" but it was not provided by any component, you may need to add additional configuration when creating your node.`)}function I_(r){return Array.isArray(r?.[wn])?r[wn]:[]}function k_(r){return Array.isArray(r?.[Gf])?r[Gf]:[]}function __(r){return r?.[Symbol.toStringTag]??r?.toString()??"unknown"}function cv(r={}){return r.denyDialMultiaddr==null&&(r.denyDialMultiaddr=e=>eo.matches(e)?!0:Ht(e)),r}var Fm=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},$m=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},lv=r=>globalThis.DOMException===void 0?new $m(r):new DOMException(r),uv=r=>{let e=r.reason===void 0?lv("This operation was aborted."):r.reason;return e instanceof Error?e:lv(e)};function Vm(r,e){let{milliseconds:t,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout}}=e,i,a,l=new Promise((u,f)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(e.signal){let{signal:h}=e;h.aborted&&f(uv(h)),a=()=>{f(uv(h))},h.addEventListener("abort",a,{once:!0})}if(t===Number.POSITIVE_INFINITY){r.then(u,f);return}let d=new Fm;i=s.setTimeout.call(void 0,()=>{if(n){try{u(n())}catch(h){f(h)}return}typeof r.cancel=="function"&&r.cancel(),o===!1?u():o instanceof Error?f(o):(d.message=o??`Promise timed out after ${t} milliseconds`,f(d))},t),(async()=>{try{u(await r)}catch(h){f(h)}})()}).finally(()=>{l.clear(),a&&e.signal&&e.signal.removeEventListener("abort",a)});return l.clear=()=>{s.clearTimeout.call(void 0,i),i=void 0},l}var C_=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function T_(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:u}=C_(r),f=async(...h)=>{let p=t.multiArgs?h:h[0];if(t.filter)try{if(!await t.filter(p))return}catch(g){n(),i(g);return}c.push(p),t.count===c.length&&(n(),s(c))},d=(...h)=>{n(),i(t.rejectionMultiArgs?h:h[0])};n=()=>{for(let h of a)u(h,f);for(let h of t.rejectionEvents)a.includes(h)||u(h,d)};for(let h of a)l(h,f);for(let h of t.rejectionEvents)a.includes(h)||l(h,d);t.signal&&t.signal.addEventListener("abort",()=>{d(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=Vm(o,{milliseconds:t.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function na(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=T_(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}function Bu(r){if(tr(r))return{peerId:r,multiaddrs:[]};let e=Array.isArray(r)?r:[r],t;if(e.length>0){let n=e[0].getComponents().findLast(o=>o.code===421)?.value;t=n==null?void 0:Tt(n),e.forEach(o=>{if(!nn(o))throw new $r("Invalid multiaddr");let s=o.getComponents().findLast(i=>i.code===421)?.value;if(s==null){if(t!=null)throw new k("Multiaddrs must all have the same peer id or have no peer id")}else{let i=Tt(s);if(t?.equals(i)!==!0)throw new k("Multiaddrs must all have the same peer id or have no peer id")}})}return e=e.filter(n=>!ax.exactMatch(n)),{peerId:t,multiaddrs:e}}var B_=["/ipfs/id/1.0.0","/ipfs/id/push/1.0.0","/libp2p/autonat/1.0.0","/libp2p/dcutr"];async function fv(r,e){let t=r?.streams?.map(o=>o.protocol)??[],n=e?.closableProtocols??B_;if(!(t.filter(o=>o!=null&&!n.includes(o)).length>0))try{await r?.close(e)}catch(o){r?.abort(o)}}function oa(r){let e=Q(r),t=e.cidr;if(e.type!=="ip4"&&e.type!=="ip6")throw new k(`Multiaddr ${r} was not an IPv4 or IPv6 address`);if(t==null)switch(e.type){case"ip4":{t=32;break}case"ip6":{t=128;break}default:throw new k(`Multiaddr ${r} was not an IPv4 or IPv6 address`)}return new Fo(e.host,t)}function Km(r){return!to.exactMatch(r)}function Lu(r,e,t){if(r==null||e==null)return;let n=e.sort((s,i)=>s.direct?-1:i.direct?1:0).find(s=>s.limits==null);if(n==null||n.direct||t==null)return n;if(!t.some(s=>Km(s)))return n}var Pu=class{connectionManager;peerStore;allow;events;log;constructor(e,t={}){this.allow=(t.allow??[]).map(n=>oa(n)),this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.events=e.events,this.log=e.logger.forComponent("libp2p:connection-manager:connection-pruner"),this.maybePruneConnections=this.maybePruneConnections.bind(this)}start(){this.events.addEventListener("connection:open",this.maybePruneConnections)}stop(){this.events.removeEventListener("connection:open",this.maybePruneConnections)}maybePruneConnections(){this._maybePruneConnections().catch(e=>{this.log.error("error while pruning connections - %e",e)})}async _maybePruneConnections(){let e=this.connectionManager.getConnections(),t=e.length,n=this.connectionManager.getMaxConnections();if(this.log("checking max connections limit %d/%d",t,n),t<=n)return;let o=new Bt;for(let c of e){let l=c.remotePeer;if(!o.has(l)){o.set(l,0);try{let u=await this.peerStore.get(l);o.set(l,[...u.tags.values()].reduce((f,d)=>f+d.value,0))}catch(u){u.name!=="NotFoundError"&&this.log.error("error loading peer tags - %e",u)}}}let s=this.sortConnections(e,o),i=Math.max(t-n,0),a=[];for(let c of s)if(this.log("too many connections open - closing a connection to %p",c.remotePeer),this.allow.some(u=>{if($e(c.remoteAddr)){let f=Q(c.remoteAddr);return u.contains(f.host)}return!0})||a.push(c),a.length===i)break;await Promise.all(a.map(async c=>{await fv(c,{signal:AbortSignal.timeout(1e3)})})),this.events.safeDispatchEvent("connection:prune",{detail:a})}sortConnections(e,t){return e.sort((n,o)=>{let s=n.timeline.open,i=o.timeline.open;return s<i?1:s>i?-1:0}).sort((n,o)=>n.direction==="outbound"&&o.direction==="inbound"?1:n.direction==="inbound"&&o.direction==="outbound"?-1:0).sort((n,o)=>n.streams.length>o.streams.length?1:n.streams.length<o.streams.length?-1:0).sort((n,o)=>{let s=t.get(n.remotePeer)??0,i=t.get(o.remotePeer)??0;return s>i?1:s<i?-1:0})}};var dv="last-dial-failure",hv="last-dial-success";var pv=100,Du=50;function L_(r,e){let t=zi.exactMatch(r.multiaddr),n=zi.exactMatch(e.multiaddr);if(t&&!n)return-1;if(!t&&n)return 1;let o=Gi.exactMatch(r.multiaddr),s=Gi.exactMatch(e.multiaddr);if(o&&!s)return-1;if(!o&&s)return 1;let i=eo.exactMatch(r.multiaddr),a=eo.exactMatch(e.multiaddr);if(i&&!a)return-1;if(!i&&a)return 1;let c=ym.exactMatch(r.multiaddr),l=ym.exactMatch(e.multiaddr);if(c&&!l)return-1;if(!c&&l)return 1;let u=mm.exactMatch(r.multiaddr),f=mm.exactMatch(e.multiaddr);if(u&&!f)return-1;if(!u&&f)return 1;let d=gm.exactMatch(r.multiaddr),h=gm.exactMatch(e.multiaddr);return d&&!h?-1:!d&&h?1:0}function P_(r,e){let t=ui(r.multiaddr),n=ui(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function D_(r,e){let t=Ht(r.multiaddr),n=Ht(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function N_(r,e){return r.isCertified&&!e.isCertified?-1:!r.isCertified&&e.isCertified?1:0}function R_(r,e){let t=to.exactMatch(r.multiaddr),n=to.exactMatch(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function mv(r){return r.sort(L_).sort(N_).sort(R_).sort(D_).sort(P_)}var Hm=class{dns;canResolve(e){return e.getComponents().some(({name:t})=>t==="dnsaddr")}async resolve(e,t){let n=e.getComponents().find(c=>c.name==="dnsaddr")?.value;if(n==null)return[e];let s=await this.getDNS(t).query(`_dnsaddr.${n}`,{signal:t?.signal,types:[Et.TXT]}),i=e.getComponents().find(c=>c.name==="p2p")?.value,a=[];for(let c of s.Answer){let l=c.data.replace(/["']/g,"").trim().split("=")[1];l!=null&&(i!=null&&!l.includes(i)||a.push(ee(l)))}return a}getDNS(e){return e.dns!=null?e.dns:(this.dns==null&&(this.dns=tl()),this.dns)}},sa=new Hm;async function qm(r,e,t){let n=t.depth??0;if(n>(t.maxRecursiveDepth??32))throw new Tu("Max recursive depth reached");let o=!1,s=[];for(let i of Object.values(e))if(i.canResolve(r)){o=!0;let a=await i.resolve(r,t);for(let c of a)s.push(...await qm(c,e,{...t,depth:n+1}))}return o===!1&&s.push(r),s}var ia={maxParallelDials:Du,maxDialQueueLength:500,maxPeerAddrsToDial:25,dialTimeout:1e4,resolvers:{dnsaddr:sa}},Nu=class{queue;components;addressSorter;maxPeerAddrsToDial;maxDialQueueLength;dialTimeout;shutDownController;connections;log;resolvers;constructor(e,t={}){this.addressSorter=t.addressSorter,this.maxPeerAddrsToDial=t.maxPeerAddrsToDial??ia.maxPeerAddrsToDial,this.maxDialQueueLength=t.maxDialQueueLength??ia.maxDialQueueLength,this.dialTimeout=t.dialTimeout??ia.dialTimeout,this.connections=t.connections??new Bt,this.log=e.logger.forComponent("libp2p:connection-manager:dial-queue"),this.components=e,this.resolvers=t.resolvers??ia.resolvers,this.shutDownController=new AbortController,this.shutDownController.signal,this.queue=new qc({concurrency:t.maxParallelDials??ia.maxParallelDials,metricName:"libp2p_dial_queue",metrics:e.metrics}),this.queue.addEventListener("failure",n=>{n.detail?.error.name!==dt.name&&this.log.error("error in dial queue - %e",n.detail.error)})}start(){this.shutDownController=new AbortController,this.shutDownController.signal}stop(){this.shutDownController.abort(),this.queue.abort()}async dial(e,t={}){let{peerId:n,multiaddrs:o}=Bu(e);if(n!=null&&t.force!==!0){let i=Lu(n,this.connections.get(n),o);if(i!=null)return this.log("already connected to %a",i.remoteAddr),t.onProgress?.(new W("dial-queue:already-connected")),i}let s=this.queue.queue.find(i=>{if(n?.equals(i.options.peerId)===!0)return!0;let a=i.options.multiaddrs;if(a==null)return!1;for(let c of o)if(a.has(c.toString()))return!0;return!1});if(s!=null){this.log("joining existing dial target for %p",n);for(let i of o)s.options.multiaddrs.add(i.toString());return t.onProgress?.(new W("dial-queue:already-in-dial-queue")),s.join(t)}if(this.queue.size>=this.maxDialQueueLength)throw new ho("Dial queue is full");return this.log("creating dial target for %p",n,o.map(i=>i.toString())),t.onProgress?.(new W("dial-queue:add-to-dial-queue")),this.queue.add(async i=>{i.onProgress?.(new W("dial-queue:start-dial"));let a=pe([this.shutDownController.signal,i.signal]);try{return await this.dialPeer(i,a)}finally{a.clear()}},{peerId:n,priority:t.priority??jm,multiaddrs:new Set(o.map(i=>i.toString())),signal:t.signal??AbortSignal.timeout(this.dialTimeout),onProgress:t.onProgress})}async dialPeer(e,t){let n=e.peerId,o=e.multiaddrs,s=new Set,i=e.multiaddrs.size===0,a=0,c=0,l=[];for(this.log("starting dial to %p",n);i||o.size>0;){c++,i=!1;let u=[],f=new Set(e.multiaddrs);o.clear(),this.log("calculating addrs to dial %p from %s",n,[...f]);let d=await this.calculateMultiaddrs(n,f,{...e,signal:t});for(let h of d){if(s.has(h.multiaddr.toString())){this.log.trace("skipping previously failed multiaddr %a while dialing %p",h.multiaddr,n);continue}u.push(h)}this.log("%s dial to %p with %s",c===1?"starting":"continuing",n,u.map(h=>h.multiaddr.toString())),e?.onProgress?.(new W("dial-queue:calculated-addresses",u));for(let h of u){if(a===this.maxPeerAddrsToDial)throw this.log("dialed maxPeerAddrsToDial (%d) addresses for %p, not trying any others",a,e.peerId),new ho("Peer had more than maxPeerAddrsToDial");a++;try{let p=await this.components.transportManager.dial(h.multiaddr,{...e,signal:t});this.log("dial to %a succeeded",h.multiaddr);try{await this.components.peerStore.merge(p.remotePeer,{multiaddrs:[p.remoteAddr],metadata:{[hv]:B(Date.now().toString())}})}catch(g){this.log.error("could not update last dial failure key for %p - %e",n,g)}return p}catch(p){if(this.log.error("dial failed to %a - %e",h.multiaddr,p),s.add(h.multiaddr.toString()),n!=null)try{await this.components.peerStore.merge(n,{metadata:{[dv]:B(Date.now().toString())}})}catch(g){this.log.error("could not update last dial failure key for %p - %e",n,g)}if(t.aborted)throw new Ia(p.message);l.push(p)}}}throw l.length===1?l[0]:new AggregateError(l,"All multiaddr dials failed")}async calculateMultiaddrs(e,t=new Set,n={}){let o=[...t].map(f=>({multiaddr:ee(f),isCertified:!1}));if(e!=null){if(this.components.peerId.equals(e))throw new ho("Tried to dial self");if(await this.components.connectionGater.denyDialPeer?.(e)===!0)throw new ra("The dial request is blocked by gater.allowDialPeer");if(o.length===0){this.log("loading multiaddrs for %p",e);try{let f=await this.components.peerStore.get(e);o.push(...f.addresses),this.log("loaded multiaddrs for %p",e,o.map(({multiaddr:d})=>d.toString()))}catch(f){if(f.name!=="NotFoundError")throw f}}if(o.length===0){this.log("looking up multiaddrs for %p in the peer routing",e);try{let f=await this.components.peerRouting.findPeer(e,n);this.log("found multiaddrs for %p in the peer routing",e,o.map(({multiaddr:d})=>d.toString())),o.push(...f.multiaddrs.map(d=>({multiaddr:d,isCertified:!1})))}catch(f){f.name==="NoPeerRoutersError"?this.log("no peer routers configured",e):this.log.error("looking up multiaddrs for %p in the peer routing failed - %e",e,f)}}}let s=(await Promise.all(o.map(async f=>{let d=await qm(f.multiaddr,this.resolvers,{dns:this.components.dns,log:this.log,...n});return d.length===1&&d[0].equals(f.multiaddr)?f:d.map(h=>({multiaddr:h,isCertified:!1}))}))).flat();if(e!=null){let f=`/p2p/${e.toString()}`;s=s.map(d=>d.multiaddr.getComponents().pop()?.name!=="p2p"?{multiaddr:d.multiaddr.encapsulate(f),isCertified:d.isCertified}:d)}let i=s.filter(f=>{if(this.components.transportManager.dialTransportForMultiaddr(f.multiaddr)==null)return!1;let d=f.multiaddr.getComponents().findLast(h=>h.code===421)?.value;return e!=null&&d!=null?e.equals(d):!0}),a=new Map;for(let f of i){let d=f.multiaddr.toString(),h=a.get(d);if(h!=null){h.isCertified=h.isCertified||f.isCertified||!1;continue}a.set(d,f)}let c=[...a.values()];if(c.length===0)throw new Iu("The dial request has no valid addresses");let l=[];for(let f of c)this.components.connectionGater.denyDialMultiaddr!=null&&await this.components.connectionGater.denyDialMultiaddr(f.multiaddr)||l.push(f);let u=this.addressSorter==null?mv(l):l.sort(this.addressSorter);if(u.length===0)throw new ra("The connection gater denied all addresses in the dial request");return this.log.trace("addresses for %p before filtering",e??"unknown peer",s.map(({multiaddr:f})=>f.toString())),this.log.trace("addresses for %p after filtering",e??"unknown peer",u.map(({multiaddr:f})=>f.toString())),u}async isDialable(e,t={}){Array.isArray(e)||(e=[e]);try{let n=await this.calculateMultiaddrs(void 0,new Set(e.map(o=>o.toString())),t);return t.runOnLimitedConnection===!1?n.find(o=>!to.matches(o.multiaddr))!=null:!0}catch{}return!1}};var M_=Object.prototype.toString,O_=r=>M_.call(r)==="[object Error]",U_=new Set(["network error","Failed to fetch","NetworkError when attempting to fetch resource.","The Internet connection appears to be offline.","Network request failed","fetch failed","terminated"," A network error occurred.","Network connection lost"]);function Ym(r){if(!(r&&O_(r)&&r.name==="TypeError"&&typeof r.message=="string"))return!1;let{message:t,stack:n}=r;return t==="Load failed"?n===void 0||"__sentry_captured__"in r:t.startsWith("error sending request for url")?!0:U_.has(t)}function F_(r){if(typeof r=="number"){if(r<0)throw new TypeError("Expected `retries` to be a non-negative number.");if(Number.isNaN(r))throw new TypeError("Expected `retries` to be a valid number or Infinity, got NaN.")}else if(r!==void 0)throw new TypeError("Expected `retries` to be a number or Infinity.")}function Ru(r,e,{min:t=0,allowInfinity:n=!1}={}){if(e!==void 0){if(typeof e!="number"||Number.isNaN(e))throw new TypeError(`Expected \`${r}\` to be a number${n?" or Infinity":""}.`);if(!n&&!Number.isFinite(e))throw new TypeError(`Expected \`${r}\` to be a finite number.`);if(e<t)throw new TypeError(`Expected \`${r}\` to be \u2265 ${t}.`)}}var Zm=class extends Error{constructor(e){super(),e instanceof Error?(this.originalError=e,{message:e}=e):(this.originalError=new Error(e),this.originalError.stack=this.stack),this.name="AbortError",this.message=e}};function $_(r,e){let t=Math.max(1,r+1),n=e.randomize?Math.random()+1:1,o=Math.round(n*e.minTimeout*e.factor**(t-1));return o=Math.min(o,e.maxTimeout),o}function gv(r,e){return Number.isFinite(e)?e-(performance.now()-r):e}async function V_({error:r,attemptNumber:e,retriesConsumed:t,startTime:n,options:o}){let s=r instanceof Error?r:new TypeError(`Non-error was thrown: "${r}". You should only throw errors.`);if(s instanceof Zm)throw s.originalError;let i=Number.isFinite(o.retries)?Math.max(0,o.retries-t):o.retries,a=o.maxRetryTime??Number.POSITIVE_INFINITY,c=Object.freeze({error:s,attemptNumber:e,retriesLeft:i,retriesConsumed:t});if(await o.onFailedAttempt(c),gv(n,a)<=0)throw s;let l=await o.shouldConsumeRetry(c),u=gv(n,a);if(u<=0||i<=0)throw s;if(s instanceof TypeError&&!Ym(s)){if(l)throw s;return o.signal?.throwIfAborted(),!1}if(!await o.shouldRetry(c))throw s;if(!l)return o.signal?.throwIfAborted(),!1;let f=$_(t,o),d=Math.min(f,u);return o.signal?.throwIfAborted(),d>0&&await new Promise((h,p)=>{let g=()=>{clearTimeout(w),o.signal?.removeEventListener("abort",g),p(o.signal.reason)},w=setTimeout(()=>{o.signal?.removeEventListener("abort",g),h()},d);o.unref&&w.unref?.(),o.signal?.addEventListener("abort",g,{once:!0})}),o.signal?.throwIfAborted(),!0}async function Xm(r,e={}){if(e={...e},F_(e.retries),Object.hasOwn(e,"forever"))throw new Error("The `forever` option is no longer supported. For many use-cases, you can set `retries: Infinity` instead.");e.retries??=10,e.factor??=2,e.minTimeout??=1e3,e.maxTimeout??=Number.POSITIVE_INFINITY,e.maxRetryTime??=Number.POSITIVE_INFINITY,e.randomize??=!1,e.onFailedAttempt??=()=>{},e.shouldRetry??=()=>!0,e.shouldConsumeRetry??=()=>!0,Ru("factor",e.factor,{min:0,allowInfinity:!1}),Ru("minTimeout",e.minTimeout,{min:0,allowInfinity:!1}),Ru("maxTimeout",e.maxTimeout,{min:0,allowInfinity:!0}),Ru("maxRetryTime",e.maxRetryTime,{min:0,allowInfinity:!0}),e.factor>0||(e.factor=1),e.signal?.throwIfAborted();let t=0,n=0,o=performance.now();for(;!Number.isFinite(e.retries)||n<=e.retries;){t++;try{e.signal?.throwIfAborted();let s=await r(t);return e.signal?.throwIfAborted(),s}catch(s){await V_({error:s,attemptNumber:t,retriesConsumed:n,startTime:o,options:e})&&n++}}throw new Error("Retry attempts exhausted without throwing an error.")}var Mu=class{log;queue;started;peerStore;retries;retryInterval;backoffFactor;connectionManager;events;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:reconnect-queue"),this.peerStore=e.peerStore,this.connectionManager=e.connectionManager,this.queue=new ns({concurrency:t.maxParallelReconnects??5,metricName:"libp2p_reconnect_queue",metrics:e.metrics}),this.started=!1,this.retries=t.retries??5,this.backoffFactor=t.backoffFactor,this.retryInterval=t.retryInterval,this.events=e.events,e.events.addEventListener("peer:disconnect",n=>{this.maybeReconnect(n.detail).catch(o=>{this.log.error("failed to maybe reconnect to %p - %e",n.detail,o)})})}async maybeReconnect(e){if(!this.started)return;let t=await this.peerStore.get(e);yv(t)&&(this.queue.has(e)||this.queue.add(async n=>{await Xm(async o=>{if(this.started)try{await this.connectionManager.openConnection(e,{signal:n?.signal})}catch(s){throw this.log("reconnecting to %p attempt %d of %d failed - %e",e,o,this.retries,s),s}},{signal:n?.signal,retries:this.retries,factor:this.backoffFactor,minTimeout:this.retryInterval})},{peerId:e}).catch(async n=>{this.log.error("failed to reconnect to %p - %e",e,n);let o={};[...t.tags.keys()].forEach(s=>{s.startsWith(zf)&&(o[s]=void 0)}),await this.peerStore.merge(e,{tags:o}),this.events.safeDispatchEvent("peer:reconnect-failure",{detail:e})}).catch(async n=>{this.log.error("failed to remove keep-alive tag from %p - %e",e,n)}))}start(){this.started=!0}async afterStart(){Promise.resolve().then(async()=>{let e=await this.peerStore.all({filters:[t=>yv(t)]});await Promise.all(e.map(async t=>{await this.connectionManager.openConnection(t.id).catch(n=>{this.log.error("could not open connection to keepalive peer - %e",n)})}))}).catch(e=>{this.log.error("error reconnect to peers after start - %e",e)})}stop(){this.started=!1,this.queue.abort()}};function yv(r){for(let e of r.tags.keys())if(e.startsWith(zf))return!0;return!1}var jm=50,Jm={maxConnections:pv,inboundConnectionThreshold:5,maxIncomingPendingConnections:10},Ou=class{started;connections;allow;deny;maxIncomingPendingConnections;incomingPendingConnections;outboundPendingConnections;maxConnections;dialQueue;reconnectQueue;connectionPruner;inboundConnectionRateLimiter;peerStore;metrics;events;log;peerId;constructor(e,t={}){if(this.maxConnections=t.maxConnections??Jm.maxConnections,this.maxConnections<1)throw new k("Connection Manager maxConnections must be greater than 0");this.connections=new Bt,this.started=!1,this.peerId=e.peerId,this.peerStore=e.peerStore,this.metrics=e.metrics,this.events=e.events,this.log=e.logger.forComponent("libp2p:connection-manager"),this.onConnect=this.onConnect.bind(this),this.onDisconnect=this.onDisconnect.bind(this),this.allow=(t.allow??[]).map(n=>oa(ee(n))),this.deny=(t.deny??[]).map(n=>oa(ee(n))),this.incomingPendingConnections=0,this.maxIncomingPendingConnections=t.maxIncomingPendingConnections??Jm.maxIncomingPendingConnections,this.outboundPendingConnections=0,this.inboundConnectionRateLimiter=new zc({points:t.inboundConnectionThreshold??Jm.inboundConnectionThreshold,duration:1}),this.connectionPruner=new Pu({connectionManager:this,peerStore:e.peerStore,events:e.events,logger:e.logger},{allow:t.allow?.map(n=>ee(n))}),this.dialQueue=new Nu(e,{addressSorter:t.addressSorter,maxParallelDials:t.maxParallelDials??Du,maxDialQueueLength:t.maxDialQueueLength??500,maxPeerAddrsToDial:t.maxPeerAddrsToDial??25,dialTimeout:t.dialTimeout??1e4,resolvers:t.resolvers??{dnsaddr:sa},connections:this.connections}),this.reconnectQueue=new Mu({events:e.events,peerStore:e.peerStore,logger:e.logger,connectionManager:this},{retries:t.reconnectRetries,retryInterval:t.reconnectRetryInterval,backoffFactor:t.reconnectBackoffFactor,maxParallelReconnects:t.maxParallelReconnects})}[Symbol.toStringTag]="@libp2p/connection-manager";async start(){this.metrics?.registerMetricGroup("libp2p_connection_manager_connections",{calculate:()=>{let e={inbound:0,"inbound pending":this.incomingPendingConnections,outbound:0,"outbound pending":this.outboundPendingConnections};for(let t of this.connections.values())for(let n of t)e[n.direction]++;return e}}),this.metrics?.registerMetricGroup("libp2p_protocol_streams_total",{label:"protocol",calculate:()=>{let e={};for(let t of this.connections.values())for(let n of t)for(let o of n.streams){let s=`${o.direction} ${o.protocol??"unnegotiated"}`;e[s]=(e[s]??0)+1}return e}}),this.metrics?.registerMetricGroup("libp2p_connection_manager_protocol_streams_per_connection_90th_percentile",{label:"protocol",calculate:()=>{let e={};for(let n of this.connections.values())for(let o of n){let s={};for(let i of o.streams){let a=`${i.direction} ${i.protocol??"unnegotiated"}`;s[a]=(s[a]??0)+1}for(let[i,a]of Object.entries(s))e[i]=e[i]??[],e[i].push(a)}let t={};for(let[n,o]of Object.entries(e)){o=o.sort((i,a)=>i-a);let s=Math.floor(o.length*.9);t[n]=o[s]}return t}}),this.events.addEventListener("connection:open",this.onConnect),this.events.addEventListener("connection:close",this.onDisconnect),await rr(this.dialQueue,this.reconnectQueue,this.connectionPruner),this.started=!0,this.log("started")}async stop(){this.events.removeEventListener("connection:open",this.onConnect),this.events.removeEventListener("connection:close",this.onDisconnect),await nr(this.reconnectQueue,this.dialQueue,this.connectionPruner);let e=[];for(let t of this.connections.values())for(let n of t)e.push(Promise.all([na(n,"close",{signal:AbortSignal.timeout(500)}),n.close({signal:AbortSignal.timeout(500)})]).catch(o=>{n.abort(o)}));this.log("closing %d connections",e.length),await Promise.all(e),this.connections.clear(),this.log("stopped")}getMaxConnections(){return this.maxConnections}setMaxConnections(e){if(this.maxConnections<1)throw new k("Connection Manager maxConnections must be greater than 0");let t=!1;e<this.maxConnections&&(t=!0),this.maxConnections=e,t&&this.connectionPruner.maybePruneConnections()}onConnect(e){this._onConnect(e).catch(t=>{this.log.error("could not connect - %e",t)})}async _onConnect(e){let{detail:t}=e;if(!this.started){await t.close();return}if(t.status!=="open")return;let n=t.remotePeer,o=!this.connections.has(n),s=this.connections.get(n)??[];s.push(t),this.connections.set(n,s),n.publicKey!=null&&n.type==="RSA"&&await this.peerStore.patch(n,{publicKey:n.publicKey}),o&&this.events.safeDispatchEvent("peer:connect",{detail:t.remotePeer})}onDisconnect(e){let{detail:t}=e,n=t.remotePeer,s=(this.connections.get(n)??[]).filter(i=>i.id!==t.id);this.connections.set(n,s),s.length===0&&(this.log.trace("peer %p disconnected, removing connection map entry",n),this.connections.delete(n),this.events.safeDispatchEvent("peer:disconnect",{detail:n}))}getConnections(e){if(e!=null)return this.connections.get(e)??[];let t=[];for(let n of this.connections.values())t=t.concat(n);return t}getConnectionsMap(){return this.connections}async openConnection(e,t={}){if(!this.started)throw new yr("Not started");this.outboundPendingConnections++;try{t.signal?.throwIfAborted();let{peerId:n,multiaddrs:o}=Bu(e);if(this.peerId.equals(n))throw new fo("Can not dial self");if(n!=null&&t.force!==!0){this.log("dial %p",n);let c=Lu(n,this.getConnections(n),o);if(c!=null)return this.log("had an existing connection to %p as %a",n,c.remoteAddr),t.onProgress?.(new W("dial-queue:already-connected")),c}let s=await this.dialQueue.dial(e,{...t,priority:t.priority??jm});if(s.status!=="open")throw new gn("Remote closed connection during opening");let i=this.connections.get(s.remotePeer);i==null&&(i=[],this.connections.set(s.remotePeer,i));let a=!1;for(let c of i)if(c.id===s.id&&(a=!0),t.force!==!0&&c.id!==s.id&&c.remoteAddr.equals(s.remoteAddr))return s.abort(new $r("Duplicate multiaddr connection")),c;return a||i.push(s),s}finally{this.outboundPendingConnections--}}async openStream(e,t,n={}){return(await this.openConnection(e,n)).newStream(t,n)}async closeConnections(e,t={}){let n=this.connections.get(e)??[];await Promise.all(n.map(async o=>{try{await Promise.all([na(o,"close",t),o.close(t)])}catch(s){o.abort(s)}}))}acceptIncomingConnection(e){if(this.deny.some(o=>{if($e(e.remoteAddr)){let s=Q(e.remoteAddr);return o.contains(s.host)}return!1}))return this.log("connection from %a refused - connection remote address was in deny list",e.remoteAddr),!1;if(this.allow.some(o=>{if($e(e.remoteAddr)){let s=Q(e.remoteAddr);return o.contains(s.host)}return!0}))return this.incomingPendingConnections++,!0;if(this.incomingPendingConnections===this.maxIncomingPendingConnections)return this.log("connection from %a refused - incomingPendingConnections exceeded by host",e.remoteAddr),!1;if($e(e.remoteAddr)){let o=Q(e.remoteAddr);try{this.inboundConnectionRateLimiter.consume(o.host,1)}catch{return this.log("connection from %a refused - inboundConnectionThreshold exceeded by host %s",e.remoteAddr,o.host),!1}}return this.getConnections().length<this.maxConnections?(this.incomingPendingConnections++,!0):(this.log("connection from %a refused - maxConnections exceeded",e.remoteAddr),!1)}afterUpgradeInbound(){this.incomingPendingConnections--}getDialQueue(){let e={queued:"queued",running:"active",errored:"error",complete:"success"};return this.dialQueue.queue.queue.map(t=>({id:t.id,status:e[t.status],peerId:t.options.peerId,multiaddrs:[...t.options.multiaddrs].map(n=>ee(n))}))}async isDialable(e,t={}){return this.dialQueue.isDialable(e,t)}};var q_=1e4,z_="1.0.0",G_="ping",W_="ipfs",wv=32,j_=!0,Uu=class{protocol;components;log;heartbeatInterval;pingIntervalMs;abortController;timeout;abortConnectionOnPingFailure;constructor(e,t={}){this.components=e,this.protocol=`/${t.protocolPrefix??W_}/${G_}/${z_}`,this.log=e.logger.forComponent("libp2p:connection-monitor"),this.pingIntervalMs=t.pingInterval??q_,this.abortConnectionOnPingFailure=t.abortConnectionOnPingFailure??j_,this.timeout=new fc({...t.pingTimeout??{},metrics:e.metrics,metricName:"libp2p_connection_monitor_ping_time_milliseconds"})}[Symbol.toStringTag]="@libp2p/connection-monitor";[wn]=["@libp2p/connection-monitor"];start(){this.abortController=new AbortController,this.abortController.signal,this.heartbeatInterval=setInterval(()=>{this.components.connectionManager.getConnections().forEach(e=>{Promise.resolve().then(async()=>{let t=Date.now();try{let n=this.timeout.getTimeoutSignal({signal:this.abortController?.signal}),o=await e.newStream(this.protocol,{signal:n,runOnLimitedConnection:!0}),s=op(o);t=Date.now(),await Promise.all([s.write(Ft(wv),{signal:n}),s.read({bytes:wv,signal:n})]),e.rtt=Date.now()-t,await o.close({signal:n})}catch(n){if(n.name!=="UnsupportedProtocolError")throw n;e.rtt=(Date.now()-t)/2}}).catch(t=>{this.log.error("error during heartbeat - %e",t),this.abortConnectionOnPingFailure?(this.log.error("aborting connection due to ping failure"),e.abort(t)):this.log("connection ping failed, but not aborting due to abortConnectionOnPingFailure flag")})})},this.pingIntervalMs)}stop(){this.abortController?.abort(),this.heartbeatInterval!=null&&clearInterval(this.heartbeatInterval)}};var Fu=class{routers;started;components;constructor(e,t){this.routers=t.routers??[],this.started=!1,this.components=e,this.findProviders=e.metrics?.traceFunction("libp2p.contentRouting.findProviders",this.findProviders.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()}),getAttributesFromYieldedValue:(n,o)=>({...o,providers:[...Array.isArray(o.providers)?o.providers:[],n.id.toString()]})})??this.findProviders,this.provide=e.metrics?.traceFunction("libp2p.contentRouting.provide",this.provide.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()})})??this.provide,this.cancelReprovide=e.metrics?.traceFunction("libp2p.contentRouting.cancelReprovide",this.cancelReprovide.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()})})??this.cancelReprovide,this.put=e.metrics?.traceFunction("libp2p.contentRouting.put",this.put.bind(this),{optionsIndex:2,getAttributesFromArgs:([n])=>({key:M(n,"base36")})})??this.put,this.get=e.metrics?.traceFunction("libp2p.contentRouting.get",this.get.bind(this),{optionsIndex:1,getAttributesFromArgs:([n])=>({key:M(n,"base36")})})??this.get}[Symbol.toStringTag]="@libp2p/content-routing";isStarted(){return this.started}async start(){this.started=!0}async stop(){this.started=!1}async*findProviders(e,t={}){if(this.routers.length===0)throw new gs("No content routers available");let n=this,o=new Yn;for await(let s of It(...n.routers.filter(i=>i.findProviders instanceof Function).map(i=>i.findProviders(e,t))))s!=null&&(s.multiaddrs.length>0&&await this.components.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},t),!o.has(s.id)&&(o.add(s.id),yield s))}async provide(e,t={}){if(this.routers.length===0)throw new gs("No content routers available");await Promise.all(this.routers.filter(n=>n.provide instanceof Function).map(async n=>{await n.provide(e,t)}))}async cancelReprovide(e,t={}){if(this.routers.length===0)throw new gs("No content routers available");await Promise.all(this.routers.filter(n=>n.cancelReprovide instanceof Function).map(async n=>{await n.cancelReprovide(e,t)}))}async put(e,t,n){if(!this.isStarted())throw new yr;await Promise.all(this.routers.filter(o=>o.put instanceof Function).map(async o=>{await o.put(e,t,n)}))}async get(e,t){if(!this.isStarted())throw new yr;return Promise.any(this.routers.filter(n=>n.get instanceof Function).map(async n=>n.get(e,t)))}};var $u=globalThis.CustomEvent??Event;async function*Qm(r,e={}){let t=e.concurrency??1/0;t<1&&(t=1/0);let n=e.ordered??!1,o=new EventTarget,s=[],i=ae(),a=ae(),c=!1,l,u=!1;o.addEventListener("task-complete",()=>{a.resolve()}),Promise.resolve().then(async()=>{try{for await(let p of r){if(s.length===t&&(i=ae(),await i.promise),u)break;let g={done:!1};s.push(g),p().then(w=>{g.done=!0,g.ok=!0,g.value=w,o.dispatchEvent(new $u("task-complete"))},w=>{g.done=!0,g.err=w,o.dispatchEvent(new $u("task-complete"))})}c=!0,o.dispatchEvent(new $u("task-complete"))}catch(p){l=p,o.dispatchEvent(new $u("task-complete"))}});function f(){return n?s[0]?.done:!!s.find(p=>p.done)}function*d(){for(;s.length>0&&s[0].done;){let p=s[0];if(s.shift(),p.ok)yield p.value;else throw u=!0,i.resolve(),p.err;i.resolve()}}function*h(){for(;f();)for(let p=0;p<s.length;p++)if(s[p].done){let g=s[p];if(s.splice(p,1),p--,g.ok)yield g.value;else throw u=!0,i.resolve(),g.err;i.resolve()}}for(;;){if(f()||(a=ae(),await a.promise),l!=null||(n?yield*d():yield*h(),l!=null))throw l;if(c&&s.length===0)break}}var Vu=class{log;peerId;peerStore;routers;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-routing"),this.peerId=e.peerId,this.peerStore=e.peerStore,this.routers=t.routers??[],this.findPeer=e.metrics?.traceFunction("libp2p.peerRouting.findPeer",this.findPeer.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,peer:n.toString()})})??this.findPeer,this.getClosestPeers=e.metrics?.traceFunction("libp2p.peerRouting.getClosestPeers",this.getClosestPeers.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,key:M(n,"base36")}),getAttributesFromYieldedValue:(n,o)=>({...o,peers:[...Array.isArray(o.peers)?o.peers:[],n.id.toString()]})})??this.getClosestPeers}[Symbol.toStringTag]="@libp2p/peer-routing";async findPeer(e,t){if(this.routers.length===0)throw new ta("No peer routers available");if(e.toString()===this.peerId.toString())throw new xu("Should not try to find self");let n=this,o=It(...this.routers.filter(s=>s.findPeer instanceof Function).map(s=>(async function*(){try{yield await s.findPeer(e,t)}catch(i){n.log.error("router failed to find peer - %e",i)}})()));for await(let s of o)if(s!=null)return s.multiaddrs.length>0&&await this.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},t),s;throw new ke}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new ta("No peer routers available");let n=this,o=Un(1024);for await(let s of Qm((async function*(){let i=It(...n.routers.filter(a=>a.getClosestPeers instanceof Function).map(a=>a.getClosestPeers(e,t)));for await(let a of i)yield async()=>{if(a.multiaddrs.length===0)try{a=await n.findPeer(a.id,{...t,useCache:!1})}catch(c){n.log.error("could not find peer multiaddrs - %e",c);return}return a}})()))s!=null&&(s.multiaddrs.length>0&&await this.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},t),!o.has(s.id.toMultihash().bytes)&&(o.add(s.id.toMultihash().bytes),yield s))}};var Ku=class extends _e{peerRouting;log;walking;walkers;shutdownController;walkController;needNext;constructor(e){super(),this.log=e.logger.forComponent("libp2p:random-walk"),this.peerRouting=e.peerRouting,this.walkers=0,this.walking=!1,this.shutdownController=new AbortController,this.shutdownController.signal}[Symbol.toStringTag]="@libp2p/random-walk";start(){this.shutdownController=new AbortController,this.shutdownController.signal}stop(){this.shutdownController.abort()}async*walk(e){this.walking||this.startWalk(),this.walkers++;let t=pe([this.shutdownController.signal,e?.signal]);try{for(;;)this.needNext?.resolve(),this.needNext=ae(),yield(await na(this,"walk:peer",{signal:t,rejectionEvents:["walk:error"]})).detail}catch(n){throw n.detail!=null?n.detail:n}finally{t.clear(),this.walkers--,this.walkers===0&&(this.walkController?.abort(),this.walkController=void 0)}}startWalk(){this.walking=!0,this.walkController=new AbortController,this.walkController.signal;let e=pe([this.walkController.signal,this.shutdownController.signal]);let t=Date.now(),n=0;Promise.resolve().then(async()=>{for(this.log("start walk");this.walkers>0;)try{let o=Ft(32),s=Date.now();for await(let i of this.peerRouting.getClosestPeers(o,{signal:e}))e.aborted&&this.log("aborting walk"),e.throwIfAborted(),this.log("found peer %p after %dms for %d walkers",i.id,Date.now()-s,this.walkers),n++,this.safeDispatchEvent("walk:peer",{detail:i}),this.walkers===1&&this.needNext!=null&&(this.log("wait for need next"),await Xe(this.needNext.promise,e)),s=Date.now();this.log("walk iteration for %b and %d walkers finished, found %d peers",o,this.walkers,n)}catch(o){this.log.error("random walk errored - %e",o),this.safeDispatchEvent("walk:error",{detail:o})}this.log("no walkers left, ended walk")}).catch(o=>{this.log.error("random walk errored - %e",o)}).finally(()=>{this.log("finished walk, found %d peers after %dms",n,Date.now()-t),this.walking=!1})}};var eg=32,tg=64,Hu=class{log;topologies;handlers;components;middleware;constructor(e){this.components=e,this.log=e.logger.forComponent("libp2p:registrar"),this.middleware=new Map,this.topologies=new Map,e.metrics?.registerMetricGroup("libp2p_registrar_topologies",{calculate:()=>{let t={};for(let[n,o]of this.topologies)t[n]=o.size;return t}}),this.handlers=Je({name:"libp2p_registrar_protocol_handlers",metrics:e.metrics}),this._onDisconnect=this._onDisconnect.bind(this),this._onPeerUpdate=this._onPeerUpdate.bind(this),this._onPeerIdentify=this._onPeerIdentify.bind(this),this.components.events.addEventListener("peer:disconnect",this._onDisconnect),this.components.events.addEventListener("peer:update",this._onPeerUpdate),this.components.events.addEventListener("peer:identify",this._onPeerIdentify)}[Symbol.toStringTag]="@libp2p/registrar";getProtocols(){return Array.from(new Set([...this.handlers.keys()])).sort()}getHandler(e){let t=this.handlers.get(e);if(t==null)throw new vu(`No handler registered for protocol ${e}`);return t}getTopologies(e){let t=this.topologies.get(e);return t==null?[]:[...t.values()]}async handle(e,t,n){if(this.handlers.has(e)&&n?.force!==!0)throw new Eu(`Handler already registered for protocol ${e}`);this.handlers.set(e,{handler:t,options:{maxInboundStreams:eg,maxOutboundStreams:tg,...n}}),await this.components.peerStore.merge(this.components.peerId,{protocols:[e]},n)}async unhandle(e,t){(Array.isArray(e)?e:[e]).forEach(o=>{this.handlers.delete(o)}),await this.components.peerStore.patch(this.components.peerId,{protocols:this.getProtocols()},t)}async register(e,t){if(t==null)throw new k("invalid topology");let n=`${(Math.random()*1e9).toString(36)}${Date.now()}`,o=this.topologies.get(e);return o==null&&(o=new Map,this.topologies.set(e,o)),o.set(n,t),n}unregister(e){for(let[t,n]of this.topologies.entries())n.has(e)&&(n.delete(e),n.size===0&&this.topologies.delete(t))}use(e,t){this.middleware.set(e,t)}unuse(e){this.middleware.delete(e)}getMiddleware(e){return this.middleware.get(e)??[]}async _onDisconnect(e){let t=e.detail,n={signal:AbortSignal.timeout(5e3)};try{let o=await this.components.peerStore.get(t,n);for(let s of o.protocols){let i=this.topologies.get(s);i!=null&&await Promise.all([...i.values()].map(async a=>{a.filter?.has(t)!==!1&&(a.filter?.remove(t),await a.onDisconnect?.(t))}))}}catch(o){if(o.name==="NotFoundError")return;this.log.error("could not inform topologies of disconnecting peer %p - %e",t,o)}}async _onPeerUpdate(e){let{peer:t,previous:n}=e.detail,o=(n?.protocols??[]).filter(s=>!t.protocols.includes(s));try{for(let s of o){let i=this.topologies.get(s);i!=null&&await Promise.all([...i.values()].map(async a=>{a.filter?.has(t.id)!==!1&&(a.filter?.remove(t.id),await a.onDisconnect?.(t.id))}))}}catch(s){this.log.error("could not inform topologies of updated peer %p - %e",t.id,s)}}async _onPeerIdentify(e){let t=e.detail.protocols,n=e.detail.connection,o=e.detail.peerId;try{for(let s of t){let i=this.topologies.get(s);i!=null&&await Promise.all([...i.values()].map(async a=>{n.limits!=null&&a.notifyOnLimitedConnection!==!0||a.filter?.has(o)!==!0&&(a.filter?.add(o),await a.onConnect?.(o,n))}))}}catch(s){this.log.error("could not inform topologies of updated peer after identify %p - %e",o,s)}}};var qu=class{log;components;transports;listeners;faultTolerance;started;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:transports"),this.components=e,this.started=!1,this.transports=Je({name:"libp2p_transport_manager_transports",metrics:this.components.metrics}),this.listeners=Je({name:"libp2p_transport_manager_listeners",metrics:this.components.metrics}),this.faultTolerance=t.faultTolerance??ks.FATAL_ALL}[Symbol.toStringTag]="@libp2p/transport-manager";add(e){let t=e[Symbol.toStringTag];if(t==null)throw new k("Transport must have a valid tag");if(this.transports.has(t))throw new k(`There is already a transport with the tag ${t}`);this.log("adding transport %s",t),this.transports.set(t,e),this.listeners.has(t)||this.listeners.set(t,[])}isStarted(){return this.started}start(){this.started=!0}async afterStart(){let e=this.components.addressManager.getListenAddrs();await this.listen(e)}async stop(){let e=[];for(let[t,n]of this.listeners)for(this.log("closing listeners for %s",t);n.length>0;){let o=n.pop();o!=null&&e.push(o.close())}await Promise.all(e),this.log("all listeners closed");for(let t of this.listeners.keys())this.listeners.set(t,[]);this.started=!1}async dial(e,t){let n=this.dialTransportForMultiaddr(e);if(n==null)throw new Cu(`No transport available for address ${String(e)}`);return t?.onProgress?.(new W("transport-manager:selected-transport",n[Symbol.toStringTag])),n.dial(e,{...t,upgrader:this.components.upgrader})}getAddrs(){let e=[];for(let t of this.listeners.values())for(let n of t)e=[...e,...n.getAddrs()];return e}getTransports(){return Array.of(...this.transports.values())}getListeners(){return Array.of(...this.listeners.values()).flat()}dialTransportForMultiaddr(e){for(let t of this.transports.values())if(t.dialFilter([e]).length>0)return t}listenTransportForMultiaddr(e){for(let t of this.transports.values())if(t.listenFilter([e]).length>0)return t}async listen(e){if(!this.isStarted())throw new yr("Not started");if(e==null||e.length===0){this.log("no addresses were provided for listening, this node is dial only");return}let t={errors:new Map,ipv4:{success:0,attempts:0},ipv6:{success:0,attempts:0}};e.forEach(s=>{t.errors.set(s.toString(),new Au)});let n=[];for(let[s,i]of this.transports.entries()){let a=i.listenFilter(e);for(let c of a){this.log("creating listener for %s on %a",s,c);let l=i.createListener({upgrader:this.components.upgrader}),u=this.listeners.get(s)??[];u==null&&(u=[],this.listeners.set(s,u)),u.push(l),l.addEventListener("listening",()=>{this.components.events.safeDispatchEvent("transport:listening",{detail:l})}),l.addEventListener("close",()=>{let f=u.findIndex(d=>d===l);u.splice(f,1),this.components.events.safeDispatchEvent("transport:close",{detail:l})}),fm.matches(c)?t.ipv4.attempts++:dm.matches(c)&&t.ipv6.attempts++,n.push(l.listen(c).then(()=>{t.errors.delete(c.toString()),fm.matches(c)&&t.ipv4.success++,dm.matches(c)&&t.ipv6.success++},f=>{throw this.log.error("transport %s could not listen on address %a - %e",s,c,f),t.errors.set(c.toString(),f),f}))}}let o=await Promise.allSettled(n);if(!(o.length>0&&o.every(s=>s.status==="fulfilled"))){if(this.ipv6Unsupported(t)){this.log("all IPv4 addresses succeed but all IPv6 failed");return}if(this.faultTolerance===ks.NO_FATAL){this.log("failed to listen on any address but fault tolerance allows this");return}throw new Su(`Some configured addresses failed to be listened on, you may need to remove one or more listen addresses from your configuration or set \`transportManager.faultTolerance\` to NO_FATAL:
32
+ `.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),Gk=new RegExp(`(?:^${Qt}$)|(?:^${iu}$)`),Wk=new RegExp(`^${Qt}$`),jk=new RegExp(`^${iu}$`),Sm=r=>r&&r.exact?Gk:new RegExp(`(?:${un(r)}${Qt}${un(r)})|(?:${un(r)}${iu}${un(r)})`,"g");Sm.v4=r=>r&&r.exact?Wk:new RegExp(`${un(r)}${Qt}${un(r)}`,"g");Sm.v6=r=>r&&r.exact?jk:new RegExp(`${un(r)}${iu}${un(r)}`,"g");var Im=Sm;function km(r){let e=(...t)=>r(...t);return Object.defineProperty(e,"name",{value:`functionTimeout(${r.name||"<anonymous>"})`,configurable:!0}),e}function Rx(){return!1}var{toString:Yk}=Object.prototype;function _m(r){return Yk.call(r)==="[object RegExp]"}var Mx={global:"g",ignoreCase:"i",multiline:"m",dotAll:"s",sticky:"y",unicode:"u"};function Cm(r,e={}){if(!_m(r))throw new TypeError("Expected a RegExp instance");let t=Object.keys(Mx).map(o=>(typeof e[o]=="boolean"?e[o]:r[o])?Mx[o]:"").join(""),n=new RegExp(e.source||r.source,t);return n.lastIndex=typeof e.lastIndex=="number"?e.lastIndex:r.lastIndex,n}function Tm(r,e,{timeout:t}={}){try{return km(()=>Cm(r).test(e),{timeout:t})()}catch(n){if(Rx(n))return!1;throw n}}var Zk=15,Xk=45,Ox={timeout:400};function Bm(r){return r.length>Xk?!1:Tm(Im.v6({exact:!0}),r,Ox)}function Ux(r){return r.length>Zk?!1:Tm(Im.v4({exact:!0}),r,Ox)}var Fx={http:"80",https:"443",ws:"80",wss:"443"},Jk=["http","https","ws","wss"];function $x(r,e){e=e??{};let t=e.defaultDnsType??"dns",{scheme:n,hostname:o,port:s,path:i}=Qk(r),a=[e_(o,t),t_(s,n),r_(n)];i!=null&&a.push(n_(i));let c="/"+a.filter(l=>!!l).reduce((l,u)=>l.concat(u),[]).join("/");return ee(c)}function Qk(r){let[e]=r.split(":");Jk.includes(e)||(r="http"+r.substring(e.length));let{protocol:t,hostname:n,port:o,pathname:s,search:i}=new URL(r);if(o==null||o===""){let c=o_(e);c!=null&&(o=c),c==null&&t==="http:"&&(o="80")}let a;return s!=null&&s!==""&&s!=="/"&&(s.startsWith("/")&&(s=s.substring(1)),a=s),i!=null&&i!==""&&(a=a??"",a+=i),{scheme:e,hostname:n,port:o,path:a}}function e_(r,e){if(!(r==null||r==="")){if(Ux(r))return["ip4",r];if(Bm(r))return["ip6",r];if(r[0]==="["){let t=r.substring(1,r.length-1);if(Bm(t))return["ip6",t]}return[e,r]}}function t_(r,e){if(!(r==null||r===""))return e==="udp"?["udp",r]:["tcp",r]}function r_(r){if(r.match(/^tcp$|^udp$/)==null)return r==="https"?["/tls/http"]:r==="wss"?["/tls/ws"]:[r]}function n_(r){if(!(r==null||r===""))return["http-path",encodeURIComponent(r)]}function o_(r){if(!(r==null||r===""||Fx[r]==null))return Fx[r]}var s_=["https://trustless-gateway.link","https://4everland.io"],i_=2336;function a_(r){return r=r.toString(),{id:Wn(H.createV1(i_,Ge.digest(B(r)))),multiaddrs:[$x(r)]}}function c_(r){return new URL(M(r.id.toMultihash().digest))}var Lm=class{gateways;shuffle;constructor(e={}){this.gateways=(e.gateways??s_).map(t=>a_(t)),this.shuffle=e.shuffle??!0}async*findProviders(e,t){yield*(this.shuffle?this.gateways.toSorted(()=>Math.random()>.5?1:-1):this.gateways).map(n=>({...n,protocols:["transport-ipfs-gateway-http"],routing:"http-gateway-routing"}))}toString(){return`HTTPGatewayRouter([${this.gateways.map(e=>c_(e)).join(", ")}])`}};function Pm(r={}){return new Lm(r)}var Dm=class{libp2p;constructor(e){this.libp2p=e}async provide(e,t){await this.libp2p.contentRouting.provide(e,t)}async cancelReprovide(e,t){await this.libp2p.contentRouting.cancelReprovide(e,t)}async*findProviders(e,t){yield*this.libp2p.contentRouting.findProviders(e,t)}async put(e,t,n){await this.libp2p.contentRouting.put(e,t,n)}async get(e,t){return this.libp2p.contentRouting.get(e,t)}async findPeer(e,t){return this.libp2p.peerRouting.findPeer(e,t)}async*getClosestPeers(e,t){yield*this.libp2p.peerRouting.getClosestPeers(e,t)}toString(){return"Libp2pRouter()"}};function Nm(r){return new Dm(r)}function l_(r){return r[Symbol.asyncIterator]!=null}function u_(r){if(l_(r))return(async()=>{let t=[];for await(let n of r)t.push(n);return t})();let e=[];for(let t of r)e.push(t);return e}var ro=u_;function f_(r){return typeof r?.then=="function"}var Zi=class extends Br{data;constructor(){super(),this.data=new Map}put(e,t,n){n?.signal?.throwIfAborted();let o;if(t instanceof Uint8Array)o=[t];else{let s=ro(t);if(f_(s))return s.then(i=>this._put(e,i,n));o=s}return this._put(e,o,n)}_put(e,t,n){return n?.signal?.throwIfAborted(),this.data.set(Te.encode(e.multihash.bytes),t),e}*get(e,t){t?.signal?.throwIfAborted();let n=this.data.get(Te.encode(e.multihash.bytes));if(n==null)throw new Lt;yield*n}has(e,t){return t?.signal?.throwIfAborted(),this.data.has(Te.encode(e.multihash.bytes))}async delete(e,t){t?.signal?.throwIfAborted(),this.data.delete(Te.encode(e.multihash.bytes))}*getAll(e){e?.signal?.throwIfAborted();for(let[t,n]of this.data.entries())yield{cid:H.createV1(Ps,dt(Te.decode(t))),bytes:(async function*(){yield*n})()},e?.signal?.throwIfAborted()}};var I9=Ct("blockstore:core:tiered");var Vx="SHARDING";function h_(r){return r[Symbol.asyncIterator]!=null}function p_(r,e){return h_(r)?(async function*(){yield*(await ro(r)).sort(e)})():(function*(){yield*ro(r).sort(e)})()}var au=p_;var Lr=class{put(e,t,n){return Promise.reject(new Error(".put is not implemented"))}get(e,t){return Promise.reject(new Error(".get is not implemented"))}has(e,t){return Promise.reject(new Error(".has is not implemented"))}delete(e,t){return Promise.reject(new Error(".delete is not implemented"))}async*putMany(e,t={}){for await(let{key:n,value:o}of e)await this.put(n,o,t),yield n}async*getMany(e,t={}){for await(let n of e)yield{key:n,value:await this.get(n,t)}}async*deleteMany(e,t={}){for await(let n of e)await this.delete(n,t),yield n}batch(){let e=[],t=[];return{put(n,o){e.push({key:n,value:o})},delete(n){t.push(n)},commit:async n=>{await Ii(this.putMany(e,n)),e=[],await Ii(this.deleteMany(t,n)),t=[]}}}async*_all(e,t){throw new Error("._all is not implemented")}async*_allKeys(e,t){throw new Error("._allKeys is not implemented")}query(e,t){let n=this._all(e,t);if(e.prefix!=null){let o=e.prefix;n=jt(n,s=>s.key.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>jt(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>au(o,s),n)),e.offset!=null){let o=0,s=e.offset;n=jt(n,()=>o++>=s)}return e.limit!=null&&(n=Wc(n,e.limit)),n}queryKeys(e,t){let n=this._allKeys(e,t);if(e.prefix!=null){let o=e.prefix;n=jt(n,s=>s.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>jt(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>au(o,s),n)),e.offset!=null){let o=e.offset,s=0;n=jt(n,()=>s++>=o)}return e.limit!=null&&(n=Wc(n,e.limit)),n}};var no=class extends Lr{data;constructor(){super(),this.data=new Map}put(e,t,n){return n?.signal?.throwIfAborted(),this.data.set(e.toString(),t),e}get(e,t){t?.signal?.throwIfAborted();let n=this.data.get(e.toString());if(n==null)throw new Lt;return n}has(e,t){return t?.signal?.throwIfAborted(),this.data.has(e.toString())}delete(e,t){t?.signal?.throwIfAborted(),this.data.delete(e.toString())}*_all(e,t){t?.signal?.throwIfAborted();for(let[n,o]of this.data.entries())yield{key:new ge(n),value:o},t?.signal?.throwIfAborted()}*_allKeys(e,t){t?.signal?.throwIfAborted();for(let n of this.data.keys())yield new ge(n),t?.signal?.throwIfAborted()}};var n7=new ge(Vx);var y7=Ct("datastore:core:tiered");async function Hx(r){if(r.connectionProtector===null&&globalThis.process?.env?.LIBP2P_FORCE_PNET!=null)throw new k("Private network is enforced, but no protector was provided");return r}var Xi;(function(r){let e;r.codec=()=>(e==null&&(e=Fe((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.publicKey!=null&&t.publicKey.byteLength>0&&(n.uint32(10),n.bytes(t.publicKey)),t.payloadType!=null&&t.payloadType.byteLength>0&&(n.uint32(18),n.bytes(t.payloadType)),t.payload!=null&&t.payload.byteLength>0&&(n.uint32(26),n.bytes(t.payload)),t.signature!=null&&t.signature.byteLength>0&&(n.uint32(42),n.bytes(t.signature)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={publicKey:ve(0),payloadType:ve(0),payload:ve(0),signature:ve(0)},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.publicKey=t.bytes();break}case 2:{s.payloadType=t.bytes();break}case 3:{s.payload=t.bytes();break}case 5:{s.signature=t.bytes();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>Ue(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(Xi||(Xi={}));var cu=class extends Error{constructor(e="Invalid signature"){super(e),this.name="InvalidSignatureError"}};var ps=class r{static createFromProtobuf=e=>{let t=Xi.decode(e),n=en(t.publicKey);return new r({publicKey:n,payloadType:t.payloadType,payload:t.payload,signature:t.signature})};static seal=async(e,t,n)=>{if(t==null)throw new Error("Missing private key");let o=e.domain,s=e.codec,i=e.marshal(),a=qx(o,s,i),c=await t.sign(a.subarray(),n);return new r({publicKey:t.publicKey,payloadType:s,payload:i,signature:c})};static openAndCertify=async(e,t,n)=>{let o=r.createFromProtobuf(e);if(!await o.validate(t,n))throw new cu("Envelope signature is not valid for the given domain");return o};publicKey;payloadType;payload;signature;marshaled;constructor(e){let{publicKey:t,payloadType:n,payload:o,signature:s}=e;this.publicKey=t,this.payloadType=n,this.payload=o,this.signature=s}marshal(){return this.marshaled==null&&(this.marshaled=Xi.encode({publicKey:At(this.publicKey),payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(e){return e==null?!1:X(this.marshal(),e.marshal())}async validate(e,t){let n=qx(e,this.payloadType,this.payload);return this.publicKey.verify(n.subarray(),this.signature,t)}},qx=(r,e,t)=>{let n=B(r),o=Xr(n.byteLength),s=Xr(e.length),i=Xr(t.length);return new se(o,n,s,e,i,t)};var zx="libp2p-peer-record",Gx=Uint8Array.from([3,1]);var Ji;(function(r){let e;(function(n){let o;n.codec=()=>(o==null&&(o=Fe((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.multiaddr!=null&&s.multiaddr.byteLength>0&&(i.uint32(10),i.bytes(s.multiaddr)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={multiaddr:ve(0)},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.multiaddr=s.bytes();break}default:{s.skipType(u&7);break}}}return c})),o),n.encode=s=>Ue(s,n.codec()),n.decode=(s,i)=>Oe(s,n.codec(),i)})(e=r.AddressInfo||(r.AddressInfo={}));let t;r.codec=()=>(t==null&&(t=Fe((n,o,s={})=>{if(s.lengthDelimited!==!1&&o.fork(),n.peerId!=null&&n.peerId.byteLength>0&&(o.uint32(10),o.bytes(n.peerId)),n.seq!=null&&n.seq!==0n&&(o.uint32(16),o.uint64(n.seq)),n.addresses!=null)for(let i of n.addresses)o.uint32(26),r.AddressInfo.codec().encode(i,o);s.lengthDelimited!==!1&&o.ldelim()},(n,o,s={})=>{let i={peerId:ve(0),seq:0n,addresses:[]},a=o==null?n.len:n.pos+o;for(;n.pos<a;){let c=n.uint32();switch(c>>>3){case 1:{i.peerId=n.bytes();break}case 2:{i.seq=n.uint64();break}case 3:{if(s.limits?.addresses!=null&&i.addresses.length===s.limits.addresses)throw new Nn('Decode error - map field "addresses" had too many elements');i.addresses.push(r.AddressInfo.codec().decode(n,n.uint32(),{limits:s.limits?.addresses$}));break}default:{n.skipType(c&7);break}}}return i})),t),r.encode=n=>Ue(n,r.codec()),r.decode=(n,o)=>Oe(n,r.codec(),o)})(Ji||(Ji={}));function Wx(r,e){let t=(n,o)=>n.toString().localeCompare(o.toString());return r.length!==e.length?!1:(e.sort(t),r.sort(t).every((n,o)=>e[o].equals(n)))}var oo=class r{static createFromProtobuf=e=>{let t=Ji.decode(e),n=ss(dt(t.peerId)),o=(t.addresses??[]).map(i=>ee(i.multiaddr)),s=t.seq;return new r({peerId:n,multiaddrs:o,seqNumber:s})};static DOMAIN=zx;static CODEC=Gx;peerId;multiaddrs;seqNumber;domain=r.DOMAIN;codec=r.CODEC;marshaled;constructor(e){let{peerId:t,multiaddrs:n,seqNumber:o}=e;this.peerId=t,this.multiaddrs=n??[],this.seqNumber=o??BigInt(Date.now())}marshal(){return this.marshaled==null&&(this.marshaled=Ji.encode({peerId:this.peerId.toMultihash().bytes,seq:BigInt(this.seqNumber),addresses:this.multiaddrs.map(e=>({multiaddr:e.bytes}))})),this.marshaled}equals(e){return!(!(e instanceof r)||!this.peerId.equals(e.peerId)||this.seqNumber!==e.seqNumber||!Wx(this.multiaddrs,e.multiaddrs))}};var Pr;(function(r){let e;(function(o){let s;o.codec=()=>(s==null&&(s=Fe((i,a,c={})=>{c.lengthDelimited!==!1&&a.fork(),i.key!=null&&i.key!==""&&(a.uint32(10),a.string(i.key)),i.value!=null&&i.value.byteLength>0&&(a.uint32(18),a.bytes(i.value)),c.lengthDelimited!==!1&&a.ldelim()},(i,a,c={})=>{let l={key:"",value:ve(0)},u=a==null?i.len:i.pos+a;for(;i.pos<u;){let f=i.uint32();switch(f>>>3){case 1:{l.key=i.string();break}case 2:{l.value=i.bytes();break}default:{i.skipType(f&7);break}}}return l})),s),o.encode=i=>Ue(i,o.codec()),o.decode=(i,a)=>Oe(i,o.codec(),a)})(e=r.Peer$metadataEntry||(r.Peer$metadataEntry={}));let t;(function(o){let s;o.codec=()=>(s==null&&(s=Fe((i,a,c={})=>{c.lengthDelimited!==!1&&a.fork(),i.key!=null&&i.key!==""&&(a.uint32(10),a.string(i.key)),i.value!=null&&(a.uint32(18),uu.codec().encode(i.value,a)),c.lengthDelimited!==!1&&a.ldelim()},(i,a,c={})=>{let l={key:""},u=a==null?i.len:i.pos+a;for(;i.pos<u;){let f=i.uint32();switch(f>>>3){case 1:{l.key=i.string();break}case 2:{l.value=uu.codec().decode(i,i.uint32(),{limits:c.limits?.value});break}default:{i.skipType(f&7);break}}}return l})),s),o.encode=i=>Ue(i,o.codec()),o.decode=(i,a)=>Oe(i,o.codec(),a)})(t=r.Peer$tagsEntry||(r.Peer$tagsEntry={}));let n;r.codec=()=>(n==null&&(n=Fe((o,s,i={})=>{if(i.lengthDelimited!==!1&&s.fork(),o.addresses!=null)for(let a of o.addresses)s.uint32(10),lu.codec().encode(a,s);if(o.protocols!=null)for(let a of o.protocols)s.uint32(18),s.string(a);if(o.publicKey!=null&&(s.uint32(34),s.bytes(o.publicKey)),o.peerRecordEnvelope!=null&&(s.uint32(42),s.bytes(o.peerRecordEnvelope)),o.metadata!=null&&o.metadata.size!==0)for(let[a,c]of o.metadata.entries())s.uint32(50),r.Peer$metadataEntry.codec().encode({key:a,value:c},s);if(o.tags!=null&&o.tags.size!==0)for(let[a,c]of o.tags.entries())s.uint32(58),r.Peer$tagsEntry.codec().encode({key:a,value:c},s);o.updated!=null&&(s.uint32(64),s.uint64Number(o.updated)),i.lengthDelimited!==!1&&s.ldelim()},(o,s,i={})=>{let a={addresses:[],protocols:[],metadata:new Map,tags:new Map},c=s==null?o.len:o.pos+s;for(;o.pos<c;){let l=o.uint32();switch(l>>>3){case 1:{if(i.limits?.addresses!=null&&a.addresses.length===i.limits.addresses)throw new Nn('Decode error - map field "addresses" had too many elements');a.addresses.push(lu.codec().decode(o,o.uint32(),{limits:i.limits?.addresses$}));break}case 2:{if(i.limits?.protocols!=null&&a.protocols.length===i.limits.protocols)throw new Nn('Decode error - map field "protocols" had too many elements');a.protocols.push(o.string());break}case 4:{a.publicKey=o.bytes();break}case 5:{a.peerRecordEnvelope=o.bytes();break}case 6:{if(i.limits?.metadata!=null&&a.metadata.size===i.limits.metadata)throw new Js('Decode error - map field "metadata" had too many elements');let u=r.Peer$metadataEntry.codec().decode(o,o.uint32());a.metadata.set(u.key,u.value);break}case 7:{if(i.limits?.tags!=null&&a.tags.size===i.limits.tags)throw new Js('Decode error - map field "tags" had too many elements');let u=r.Peer$tagsEntry.codec().decode(o,o.uint32(),{limits:{value:i.limits?.tags$value}});a.tags.set(u.key,u.value);break}case 8:{a.updated=o.uint64Number();break}default:{o.skipType(l&7);break}}}return a})),n),r.encode=o=>Ue(o,r.codec()),r.decode=(o,s)=>Oe(o,r.codec(),s)})(Pr||(Pr={}));var lu;(function(r){let e;r.codec=()=>(e==null&&(e=Fe((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.multiaddr!=null&&t.multiaddr.byteLength>0&&(n.uint32(10),n.bytes(t.multiaddr)),t.isCertified!=null&&(n.uint32(16),n.bool(t.isCertified)),t.observed!=null&&(n.uint32(24),n.uint64Number(t.observed)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={multiaddr:ve(0)},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.multiaddr=t.bytes();break}case 2:{s.isCertified=t.bool();break}case 3:{s.observed=t.uint64Number();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>Ue(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(lu||(lu={}));var uu;(function(r){let e;r.codec=()=>(e==null&&(e=Fe((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.value!=null&&t.value!==0&&(n.uint32(8),n.uint32(t.value)),t.expiry!=null&&(n.uint32(16),n.uint64(t.expiry)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={value:0},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.value=t.uint32();break}case 2:{s.expiry=t.uint64();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>Ue(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(uu||(uu={}));function m_(r,e){if(r.publicKey!=null||e.publicKey==null)return r;let t;r.type==="RSA"&&(t=r.toMultihash());let n=en(e.publicKey,t);return Ap(n)}function jx(r,e,t){let n=Pr.decode(e);return ms(r,n,t)}function ms(r,e,t){let n=new Map,o=BigInt(Date.now());for(let[s,i]of e.tags.entries())i.expiry!=null&&i.expiry<o||n.set(s,i);return{...e,id:m_(r,e),addresses:e.addresses.filter(({observed:s})=>s!=null&&s>Date.now()-t).map(({multiaddr:s,isCertified:i})=>({multiaddr:ee(s),isCertified:i??!1})),metadata:e.metadata,peerRecordEnvelope:e.peerRecordEnvelope??void 0,tags:n}}function Yx(r,e){return g_(r.addresses,e.addresses)&&y_(r.protocols,e.protocols)&&w_(r.publicKey,e.publicKey)&&b_(r.peerRecordEnvelope,e.peerRecordEnvelope)&&x_(r.metadata,e.metadata)&&v_(r.tags,e.tags)}function g_(r,e){return Xx(r,e,(t,n)=>!(t.isCertified!==n.isCertified||!X(t.multiaddr,n.multiaddr)))}function y_(r,e){return Xx(r,e,(t,n)=>t===n)}function w_(r,e){return Zx(r,e)}function b_(r,e){return Zx(r,e)}function x_(r,e){return Jx(r,e,(t,n)=>X(t,n))}function v_(r,e){return Jx(r,e,(t,n)=>t.value===n.value&&t.expiry===n.expiry)}function Zx(r,e){return r==null&&e==null?!0:r!=null&&e!=null?X(r,e):!1}function Xx(r,e,t){if(r.length!==e.length)return!1;for(let n=0;n<r.length;n++)if(!t(r[n],e[n]))return!1;return!0}function Jx(r,e,t){if(r.size!==e.size)return!1;for(let[n,o]of r.entries()){let s=e.get(n);if(s==null||!t(o,s))return!1}return!0}var Rm="/peers/";function Qi(r){if(!tr(r)||r.type==null)throw new k("Invalid PeerId");let e=r.toCID().toString();return new ge(`${Rm}${e}`)}async function Qx(r,e,t,n,o){let s=new Map;for(let i of t){if(i==null)continue;if(i.multiaddr instanceof Uint8Array&&(i.multiaddr=ee(i.multiaddr)),!nn(i.multiaddr))throw new k("Multiaddr was invalid");if(!await e(r,i.multiaddr,o))continue;let a=i.isCertified??!1,c=i.multiaddr.toString(),l=s.get(c);l!=null?i.isCertified=l.isCertified||a:s.set(c,{multiaddr:i.multiaddr,isCertified:a})}return[...s.values()].sort((i,a)=>i.multiaddr.toString().localeCompare(a.multiaddr.toString())).map(({isCertified:i,multiaddr:a})=>{let c=a.getComponents().find(l=>l.code===421)?.value;return r.equals(c)&&(a=a.decapsulate(ee(`/p2p/${r}`))),{isCertified:i,multiaddr:a.bytes}})}async function du(r,e,t,n){if(e==null)throw new k("Invalid PeerData");if(e.publicKey!=null&&r.publicKey!=null&&!e.publicKey.equals(r.publicKey))throw new k("publicKey bytes do not match peer id publicKey bytes");let o=n.existingPeer?.peer;if(o!=null&&!r.equals(o.id))throw new k("peer id did not match existing peer id");let s=o?.addresses??[],i=new Set(o?.protocols??[]),a=o?.metadata??new Map,c=o?.tags??new Map,l=o?.peerRecordEnvelope;if(t==="patch"){if((e.multiaddrs!=null||e.addresses!=null)&&(s=[],e.multiaddrs!=null&&s.push(...e.multiaddrs.map(d=>({isCertified:!1,multiaddr:d}))),e.addresses!=null&&s.push(...e.addresses)),e.protocols!=null&&(i=new Set(e.protocols)),e.metadata!=null){let d=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);a=fu(d,{validate:ev})}if(e.tags!=null){let d=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags);c=fu(d,{validate:tv,map:rv})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}if(t==="merge"){if(e.multiaddrs!=null&&s.push(...e.multiaddrs.map(d=>({isCertified:!1,multiaddr:d}))),e.addresses!=null&&s.push(...e.addresses),e.protocols!=null&&(i=new Set([...i,...e.protocols])),e.metadata!=null){let d=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);for(let[h,p]of d)p==null?a.delete(h):a.set(h,p);a=fu([...a.entries()],{validate:ev})}if(e.tags!=null){let d=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags),h=new Map(c);for(let[p,g]of d)g==null?h.delete(p):h.set(p,g);c=fu([...h.entries()],{validate:tv,map:rv})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}let u;o?.id.publicKey!=null?u=At(o.id.publicKey):e.publicKey!=null?u=At(e.publicKey):r.publicKey!=null&&(u=At(r.publicKey));let f={addresses:await Qx(r,n.addressFilter??(async()=>!0),s,n.existingPeer?.peerPB.addresses,n),protocols:[...i.values()].sort((d,h)=>d.localeCompare(h)),metadata:a,tags:c,publicKey:u,peerRecordEnvelope:l};return f.addresses.forEach(d=>{d.observed=n.existingPeer?.peerPB.addresses?.find(h=>X(h.multiaddr,h.multiaddr))?.observed??Date.now()}),r.type!=="RSA"&&delete f.publicKey,f}function fu(r,e){let t=new Map;for(let[n,o]of r)o!=null&&e.validate(n,o);for(let[n,o]of r.sort(([s],[i])=>s.localeCompare(i)))o!=null&&t.set(n,e.map?.(n,o)??o);return t}function ev(r,e){if(typeof r!="string")throw new k("Metadata key must be a string");if(!(e instanceof Uint8Array))throw new k("Metadata value must be a Uint8Array")}function tv(r,e){if(typeof r!="string")throw new k("Tag name must be a string");if(e.value!=null){if(parseInt(`${e.value}`,10)!==e.value)throw new k("Tag value must be an integer");if(e.value<0||e.value>100)throw new k("Tag value must be between 0-100")}if(e.ttl!=null){if(parseInt(`${e.ttl}`,10)!==e.ttl)throw new k("Tag ttl must be an integer");if(e.ttl<0)throw new k("Tag ttl must be between greater than 0")}}function rv(r,e){let t;e.expiry!=null&&(t=e.expiry),e.ttl!=null&&(t=BigInt(Date.now()+Number(e.ttl)));let n={value:e.value??0};return t!=null&&(n.expiry=t),n}function nv(r){let e=r.toString().split("/")[2],t=H.parse(e,Te);return Wn(t)}function Mm(r,e,t){let n=nv(r);return jx(n,e,t)}function E_(r,e){return{prefix:Rm,filters:(r.filters??[]).map(t=>({key:n,value:o})=>t(Mm(n,o,e))),orders:(r.orders??[]).map(t=>(n,o)=>t(Mm(n.key,n.value,e),Mm(o.key,o.value,e)))}}var hu=class{peerId;datastore;locks;addressFilter;log;maxAddressAge;maxPeerAge;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-store"),this.peerId=e.peerId,this.datastore=e.datastore,this.addressFilter=t.addressFilter,this.locks=Ip({name:"libp2p_peer_store_locks",metrics:e.metrics}),this.maxAddressAge=t.maxAddressAge??36e5,this.maxPeerAge=t.maxPeerAge??216e5}getLock(e){let t=this.locks.get(e);return t==null&&(t={refs:0,lock:Fi({name:e.toString(),singleProcess:!0})},this.locks.set(e,t)),t.refs++,t}maybeRemoveLock(e,t){t.refs--,t.refs===0&&(t.lock.finalize(),this.locks.delete(e))}async getReadLock(e,t){let n=this.getLock(e);try{let o=await n.lock.readLock(t);return()=>{o(),this.maybeRemoveLock(e,n)}}catch(o){throw this.maybeRemoveLock(e,n),o}}async getWriteLock(e,t){let n=this.getLock(e);try{let o=await n.lock.writeLock(t);return()=>{o(),this.maybeRemoveLock(e,n)}}catch(o){throw this.maybeRemoveLock(e,n),o}}async has(e,t){try{return await this.load(e,t),!0}catch(n){if(n.name!=="NotFoundError")throw n}return!1}async delete(e,t){this.peerId.equals(e)||await this.datastore.delete(Qi(e),t)}async load(e,t){let n=Qi(e),o=await this.datastore.get(n,t),s=Pr.decode(o);if(this.#r(e,s))throw await this.datastore.delete(n,t),new ke;return ms(e,s,this.peerId.equals(e)?1/0:this.maxAddressAge)}async save(e,t,n){let o=await this.#e(e,n),s=await du(e,t,"patch",{...n,addressFilter:this.addressFilter});return this.#t(e,s,o)}async patch(e,t,n){let o=await this.#e(e,n),s=await du(e,t,"patch",{...n,addressFilter:this.addressFilter,existingPeer:o});return this.#t(e,s,o)}async merge(e,t,n){let o=await this.#e(e,n),s=await du(e,t,"merge",{addressFilter:this.addressFilter,existingPeer:o});return this.#t(e,s,o)}async*all(e){for await(let{key:t,value:n}of this.datastore.query(E_(e??{},this.maxAddressAge),e)){let o=nv(t);if(o.equals(this.peerId))continue;let s=Pr.decode(n);if(this.#r(o,s)){await this.datastore.delete(t,e);continue}yield ms(o,s,this.peerId.equals(o)?1/0:this.maxAddressAge)}}async#e(e,t){try{let n=Qi(e),o=await this.datastore.get(n,t),s=Pr.decode(o);if(this.#r(e,s))throw await this.datastore.delete(n,t),new ke;return{peerPB:s,peer:ms(e,s,this.maxAddressAge)}}catch(n){n.name!=="NotFoundError"&&this.log.error("invalid peer data found in peer store - %e",n)}}async#t(e,t,n,o){t.updated=Date.now();let s=Pr.encode(t);return await this.datastore.put(Qi(e),s,o),{peer:ms(e,t,this.maxAddressAge),previous:n?.peer,updated:n==null||!Yx(t,n.peerPB)}}#r(e,t){if(t.updated==null)return!0;if(this.peerId.equals(e))return!1;let n=t.updated<Date.now()-this.maxPeerAge,o=Date.now()-this.maxAddressAge,s=t.addresses.filter(i=>i.observed!=null&&i.observed>o);return n&&s.length===0}};var Om=class{store;events;peerId;log;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-store"),this.events=e.events,this.peerId=e.peerId,this.store=new hu(e,t)}[Symbol.toStringTag]="@libp2p/peer-store";async forEach(e,t){for await(let n of this.store.all(t))e(n)}async all(e){return ro(this.store.all(e))}async delete(e,t){let n=await this.store.getReadLock(e,t);try{await this.store.delete(e,t)}finally{n()}}async has(e,t){let n=await this.store.getReadLock(e,t);try{return await this.store.has(e,t)}finally{this.log.trace("has release read lock"),n?.()}}async get(e,t){let n=await this.store.getReadLock(e,t);try{return await this.store.load(e,t)}finally{n?.()}}async getInfo(e,t){let n=await this.get(e,t);return{id:n.id,multiaddrs:n.addresses.map(({multiaddr:o})=>o)}}async save(e,t,n){let o=await this.store.getWriteLock(e,n);try{let s=await this.store.save(e,t,n);return this.#e(e,s),s.peer}finally{o?.()}}async patch(e,t,n){let o=await this.store.getWriteLock(e,n);try{let s=await this.store.patch(e,t,n);return this.#e(e,s),s.peer}finally{o?.()}}async merge(e,t,n){let o=await this.store.getWriteLock(e,n);try{let s=await this.store.merge(e,t,n);return this.#e(e,s),s.peer}finally{o?.()}}async consumePeerRecord(e,t,n){let o=tr(t)?t:tr(t?.expectedPeer)?t.expectedPeer:void 0,s=tr(t)||t===void 0?n:t,i=await ps.openAndCertify(e,oo.DOMAIN,s),a=Wn(i.publicKey.toCID());if(o?.equals(a)===!1)return this.log("envelope peer id was not the expected peer id - expected: %p received: %p",o,a),!1;let c=oo.createFromProtobuf(i.payload),l;try{l=await this.get(a,s)}catch(u){if(u.name!=="NotFoundError")throw u}if(l?.peerRecordEnvelope!=null){let u=ps.createFromProtobuf(l.peerRecordEnvelope),f=oo.createFromProtobuf(u.payload);if(f.seqNumber>=c.seqNumber)return this.log("sequence number was lower or equal to existing sequence number - stored: %d received: %d",f.seqNumber,c.seqNumber),!1}return await this.patch(c.peerId,{peerRecordEnvelope:e,addresses:c.multiaddrs.map(u=>({isCertified:!0,multiaddr:u}))},s),!0}#e(e,t){t.updated&&(this.peerId.equals(e)?this.events.safeDispatchEvent("self:peer:update",{detail:t}):this.events.safeDispatchEvent("peer:update",{detail:t}))}};function ov(r,e={}){return new Om(r,e)}var sv=864e13;var pu=class{log;mappings;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:dns-mappings"),this.mappings=Xe({name:"libp2p_address_manager_dns_mappings",metrics:e.metrics})}has(e){let t=Q(e),n=t.host;(t.type==="ip4"||t.type==="ip6")&&t.sni!=null&&(n=t.sni);for(let o of this.mappings.values())if(o.domain===n)return!0;return!1}add(e,t){t.forEach(n=>{this.log("add DNS mapping %s to %s",n,e);let o=$o(n)===!0;this.mappings.set(n,{domain:e,verified:o,expires:o?sv-Date.now():0,lastVerified:o?sv-Date.now():void 0})})}remove(e){let t=Q(e);if(t.type!=="ip4"&&t.type!=="ip6")return!1;let n=!1;for(let[o,s]of this.mappings.entries())s.domain===t.sni&&(this.log("removing %s to %s DNS mapping %e",o,s.domain),this.mappings.delete(o),n=n||s.verified);return n}getAll(e){let t=[];for(let n=0;n<e.length;n++){let o=e[n].multiaddr;if(!$e(o))continue;let s=Q(o);for(let[i,a]of this.mappings.entries()){if(s.host!==i)continue;let c=this.maybeAddSNIComponent(o,a.domain);c!=null&&(e.splice(n,1),n--,t.push({multiaddr:c,verified:a.verified,type:"dns-mapping",expires:a.expires,lastVerified:a.lastVerified}))}}return t}maybeAddSNIComponent(e,t){let n=e.getComponents();for(let o=0;o<n.length;o++)if(n[o].code===448&&n[o+1]?.code!==449)return n.splice(o+1,0,{name:"sni",code:449,value:t}),ee(n)}confirm(e,t){let n=Q(e),o=n.host;(n.type==="ip4"||n.type==="ip6")&&n.sni!=null&&(o=n.sni);let s=!1;for(let[i,a]of this.mappings.entries())a.domain===o&&(this.log("marking %s to %s DNS mapping as verified",i,a.domain),s=a.verified,a.verified=!0,a.expires=Date.now()+t,a.lastVerified=Date.now());return s}unconfirm(e,t){let n=Q(e);if(n.type!=="ip4"&&n.type!=="ip6")return!1;let o=n.sni??n.host,s=!1;for(let[i,a]of this.mappings.entries())a.domain===o&&(this.log("removing verification of %s to %s DNS mapping",i,a.domain),s=s||a.verified,a.verified=!1,a.expires=Date.now()+t);return s}};var mu=class{log;mappings;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:ip-mappings"),this.mappings=Xe({name:"libp2p_address_manager_ip_mappings",metrics:e.metrics})}has(e){let t=Q(e);if(t.type!=="ip4"&&t.type!=="ip6")return!1;for(let n of this.mappings.values())for(let o of n)if(o.externalIp===t.host)return!0;return!1}add(e,t,n,o=t,s="tcp"){let i=`${e}-${t}-${s}`,a=this.mappings.get(i)??[],c={internalIp:e,internalPort:t,externalIp:n,externalPort:o,externalFamily:Kt(n)?4:6,protocol:s,verified:!1,expires:0};a.push(c),this.mappings.set(i,a)}remove(e){let t=Q(e);if(t.type!=="ip4"&&t.type!=="ip6")return!1;let n=!1;for(let[o,s]of this.mappings.entries()){for(let i=0;i<s.length;i++){let a=s[i];a.externalIp===t.host&&a.externalPort===t.port&&a.protocol===t.protocol&&(this.log("removing %s:%s to %s:%s %s IP mapping",a.externalIp,a.externalPort,t.host,t.port,t.protocol),n=n||a.verified,s.splice(i,1),i--)}s.length===0&&this.mappings.delete(o)}return n}getAll(e){let t=[];for(let{multiaddr:n}of e){if(!$e(n))continue;let o=Q(n);if(o.type!=="ip4"&&o.type!=="ip6")continue;let s;if(o.protocol==="tcp"?s=`${o.host}-${o.port}-tcp`:o.protocol==="udp"&&(s=`${o.host}-${o.port}-udp`),s==null)continue;let i=this.mappings.get(s);if(i!=null)for(let a of i)t.push({multiaddr:this.maybeOverrideIp(n,a.externalIp,a.externalFamily,a.protocol,a.externalPort),verified:a.verified,type:"ip-mapping",expires:a.expires,lastVerified:a.lastVerified})}return t}maybeOverrideIp(e,t,n,o,s){let i=e.getComponents(),a=i.findIndex(l=>l.code===4||l.code===41),c=i.findIndex(l=>l.name===o);return a>-1&&c>-1?(i[a].value=t,i[a].code=n===4?4:41,i[c].value=`${s}`,ee(i)):e}confirm(e,t){if(!$e(e))return!1;let n=Q(e),o=!1;for(let s of this.mappings.values())for(let i of s)i.externalIp===n.host&&(this.log("marking %s to %s IP mapping as verified",i.internalIp,i.externalIp),o=i.verified,i.verified=!0,i.expires=Date.now()+t,i.lastVerified=Date.now());return o}unconfirm(e,t){if(!$e(e))return!1;let n=Q(e),o=!1;for(let s of this.mappings.values())for(let i=0;i<s.length;i++){let a=s[i];a.externalIp===n.host&&a.externalPort===n.port&&a.protocol===n.protocol&&(this.log("removing verification of %s:%s to %s:%s %s IP mapping",a.externalIp,a.externalPort,n.host,n.port,n.protocol),o=o||a.verified,a.verified=!1,a.expires=Date.now()+t)}return o}};var A_={maxObservedAddresses:10},gu=class{log;addresses;maxObservedAddresses;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:observed-addresses"),this.addresses=Xe({name:"libp2p_address_manager_observed_addresses",metrics:e.metrics}),this.maxObservedAddresses=t.maxObservedAddresses??A_.maxObservedAddresses}has(e){return this.addresses.has(e.toString())}removePrefixed(e){for(let t of this.addresses.keys())t.toString().startsWith(e)&&this.addresses.delete(t)}add(e){this.addresses.size!==this.maxObservedAddresses&&(Ht(e)||$0(e)||(this.log("adding observed address %a",e),this.addresses.set(e.toString(),{verified:!1,expires:0})))}getAll(){return Array.from(this.addresses).map(([e,t])=>({multiaddr:ee(e),verified:t.verified,type:"observed",expires:t.expires,lastVerified:t.lastVerified}))}remove(e){let t=this.addresses.get(e.toString())?.verified??!1;return this.log("removing observed address %a",e),this.addresses.delete(e.toString()),t}confirm(e,t){let n=e.toString(),o=this.addresses.get(n)??{verified:!1,expires:Date.now()+t,lastVerified:Date.now()},s=o.verified;return o.verified=!0,o.expires=Date.now()+t,o.lastVerified=Date.now(),this.log("marking observed address %a as verified",n),this.addresses.set(n,o),s}};var S_={maxObservedAddresses:10},yu=class{log;addresses;maxObservedAddresses;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:observed-addresses"),this.addresses=Xe({name:"libp2p_address_manager_transport_addresses",metrics:e.metrics}),this.maxObservedAddresses=t.maxObservedAddresses??S_.maxObservedAddresses}get(e,t){if(Ht(e))return{multiaddr:e,verified:!0,type:"transport",expires:Date.now()+t,lastVerified:Date.now()};let n=this.toKey(e),o=this.addresses.get(n);return o==null&&(o={verified:!$e(e),expires:0},this.addresses.set(n,o)),{multiaddr:e,verified:o.verified,type:"transport",expires:o.expires,lastVerified:o.lastVerified}}has(e){let t=this.toKey(e);return this.addresses.has(t)}remove(e){let t=this.toKey(e),n=this.addresses.get(t)?.verified??!1;return this.log("removing observed address %a",e),this.addresses.delete(t),n}confirm(e,t){let n=this.toKey(e),o=this.addresses.get(n)??{verified:!1,expires:0,lastVerified:0},s=o.verified;return o.verified=!0,o.expires=Date.now()+t,o.lastVerified=Date.now(),this.addresses.set(n,o),s}unconfirm(e,t){let n=this.toKey(e),o=this.addresses.get(n)??{verified:!1,expires:0},s=o.verified;return o.verified=!1,o.expires=Date.now()+t,this.addresses.set(n,o),s}toKey(e){if(!$e(e))return e.toString();let t=Q(e);return`${t.host}-${t.port}-${t.protocol}`}};var iv=6e4,av={maxObservedAddresses:10,addressVerificationTTL:iv*10,addressVerificationRetry:iv*5},I_=r=>r;function Um(r,e){let t=r.getComponents().findLast(n=>n.code===421)?.value;return t!=null&&Tt(t).equals(e)&&(r=r.decapsulate(ee(`/p2p/${e.toString()}`))),r}var wu=class{log;components;listen;announce;appendAnnounce;announceFilter;observed;dnsMappings;ipMappings;transportAddresses;observedAddressFilter;addressVerificationTTL;addressVerificationRetry;constructor(e,t={}){let{listen:n=[],announce:o=[],appendAnnounce:s=[]}=t;this.components=e,this.log=e.logger.forComponent("libp2p:address-manager"),this.listen=n.map(i=>i.toString()),this.announce=new Set(o.map(i=>i.toString())),this.appendAnnounce=new Set(s.map(i=>i.toString())),this.observed=new gu(e,t),this.dnsMappings=new pu(e,t),this.ipMappings=new mu(e,t),this.transportAddresses=new yu(e,t),this.announceFilter=t.announceFilter??I_,this.observedAddressFilter=Un(1024),this.addressVerificationTTL=t.addressVerificationTTL??av.addressVerificationTTL,this.addressVerificationRetry=t.addressVerificationRetry??av.addressVerificationRetry,this._updatePeerStoreAddresses=di(this._updatePeerStoreAddresses.bind(this),1e3),e.events.addEventListener("transport:listening",()=>{this._updatePeerStoreAddresses()}),e.events.addEventListener("transport:close",()=>{this._updatePeerStoreAddresses()})}[Symbol.toStringTag]="@libp2p/address-manager";_updatePeerStoreAddresses(){let e=this.getAddresses().map(t=>t.getComponents().findLast(n=>n.code===421)?.value===this.components.peerId.toString()?t.decapsulate(`/p2p/${this.components.peerId.toString()}`):t);this.components.peerStore.patch(this.components.peerId,{multiaddrs:e}).catch(t=>{this.log.error("error updating addresses - %e",t)})}getListenAddrs(){return Array.from(this.listen).map(e=>ee(e))}getAnnounceAddrs(){return Array.from(this.announce).map(e=>ee(e))}getAppendAnnounceAddrs(){return Array.from(this.appendAnnounce).map(e=>ee(e))}getObservedAddrs(){return this.observed.getAll().map(e=>e.multiaddr)}addObservedAddr(e){let t=Q(e),n;switch(t.type){case"ip4":{n=`${t.host}:${t.port}`;break}case"ip6":{n=`[${t.host}]:${t.port}`;break}default:return}this.observedAddressFilter.has(n)||(this.observedAddressFilter.add(n),e=Um(e,this.components.peerId),!this.ipMappings.has(e)&&(this.dnsMappings.has(e)||this.observed.add(e)))}confirmObservedAddr(e,t){e=Um(e,this.components.peerId);let n=!0;(t?.type==="transport"||this.transportAddresses.has(e))&&!this.transportAddresses.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(t?.type==="dns-mapping"||this.dnsMappings.has(e))&&!this.dnsMappings.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(t?.type==="ip-mapping"||this.ipMappings.has(e))&&!this.ipMappings.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(t?.type==="observed"||this.observed.has(e))&&(this.maybeUpgradeToIPMapping(e)?(this.ipMappings.confirm(e,t?.ttl??this.addressVerificationTTL),n=!1):!this.observed.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1)),n||this._updatePeerStoreAddresses()}removeObservedAddr(e,t){e=Um(e,this.components.peerId);let n=!1;this.observed.has(e)&&!this.observed.remove(e)&&n&&(n=!1),this.transportAddresses.has(e)&&!this.transportAddresses.unconfirm(e,t?.ttl??this.addressVerificationRetry)&&n&&(n=!1),this.dnsMappings.has(e)&&!this.dnsMappings.unconfirm(e,t?.ttl??this.addressVerificationRetry)&&n&&(n=!1),this.ipMappings.has(e)&&!this.ipMappings.unconfirm(e,t?.ttl??this.addressVerificationRetry)&&n&&(n=!1),n&&this._updatePeerStoreAddresses()}getAddresses(){let e=new Set,t=this.getAddressesWithMetadata().filter(n=>{if(!n.verified)return!1;let o=n.multiaddr.toString();return e.has(o)?!1:(e.add(o),!0)}).map(n=>n.multiaddr);return this.announceFilter(t.map(n=>{let o=ee(n);return o.getComponents().pop()?.value===this.components.peerId.toString()?o:o.encapsulate(`/p2p/${this.components.peerId.toString()}`)}))}getAddressesWithMetadata(){let e=this.getAnnounceAddrs();if(e.length>0)return this.components.transportManager.getListeners().forEach(o=>{o.updateAnnounceAddrs(e)}),e.map(o=>({multiaddr:o,verified:!0,type:"announce",expires:Date.now()+this.addressVerificationTTL,lastVerified:Date.now()}));let t=[];t=t.concat(this.components.transportManager.getAddrs().map(o=>this.transportAddresses.get(o,this.addressVerificationTTL)));let n=this.getAppendAnnounceAddrs();return n.length>0&&(this.components.transportManager.getListeners().forEach(o=>{o.updateAnnounceAddrs(n)}),t=t.concat(n.map(o=>({multiaddr:o,verified:!0,type:"announce",expires:Date.now()+this.addressVerificationTTL,lastVerified:Date.now()})))),t=t.concat(this.observed.getAll()),t=t.concat(this.ipMappings.getAll(t)),t=t.concat(this.dnsMappings.getAll(t)),t}addDNSMapping(e,t){this.dnsMappings.add(e,t)}removeDNSMapping(e){this.dnsMappings.remove(ee(`/dns/${e}`))&&this._updatePeerStoreAddresses()}addPublicAddressMapping(e,t,n,o=t,s="tcp"){this.ipMappings.add(e,t,n,o,s),this.observed.removePrefixed(`/ip${Kt(n)?4:6}/${n}/${s}/${o}`)}removePublicAddressMapping(e,t,n,o=t,s="tcp"){this.ipMappings.remove(ee(`/ip${Kt(n)?4:6}/${n}/${s}/${o}`))&&this._updatePeerStoreAddresses()}maybeUpgradeToIPMapping(e){if(this.ipMappings.has(e)||!$e(e))return!1;let t=Q(e);if(t.type!=="ip4"||$o(t.host)===!0)return!1;let n=this.components.transportManager.getListeners(),o=[s=>eo.exactMatch(s)||zi.exactMatch(s),s=>qi.exactMatch(s),s=>px.exactMatch(s)];for(let s of o){if(!s(e))continue;let i=n.filter(l=>l.getAddrs().filter(u=>Q(u).type==="ip4"&&s(u)).length>0);if(i.length!==1)continue;let a=i[0].getAddrs().filter(l=>!ui(l)).pop();if(a==null)continue;let c=Q(a);return c.port==null?!1:(this.observed.remove(e),this.ipMappings.add(c.host,c.port,t.host,t.port,t.protocol),!0)}return!1}};var cv;(function(r){r.NOT_STARTED_YET="The libp2p node is not started yet",r.NOT_FOUND="Not found"})(cv||(cv={}));var bu=class extends Error{constructor(e="Missing service"){super(e),this.name="MissingServiceError"}},xu=class extends Error{constructor(e="Unmet service dependencies"){super(e),this.name="UnmetServiceDependenciesError"}},gs=class extends Error{constructor(e="No content routers available"){super(e),this.name="NoContentRoutersError"}},ea=class extends Error{constructor(e="No peer routers available"){super(e),this.name="NoPeerRoutersError"}},vu=class extends Error{constructor(e="Should not try to find self"){super(e),this.name="QueriedForSelfError"}},Eu=class extends Error{constructor(e="Unhandled protocol error"){super(e),this.name="UnhandledProtocolError"}},Au=class extends Error{constructor(e="Duplicate protocol handler error"){super(e),this.name="DuplicateProtocolHandlerError"}},ta=class extends Error{constructor(e="Dial denied error"){super(e),this.name="DialDeniedError"}},Su=class extends Error{constructor(e="No transport was configured to listen on this address"){super(e),this.name="UnsupportedListenAddressError"}},Iu=class extends Error{constructor(e="Configured listen addresses could not be listened on"){super(e),this.name="UnsupportedListenAddressesError"}},ku=class extends Error{constructor(e="No valid addresses"){super(e),this.name="NoValidAddressesError"}},_u=class extends Error{constructor(e="Connection intercepted"){super(e),this.name="ConnectionInterceptedError"}},Cu=class extends Error{constructor(e="Connection denied"){super(e),this.name="ConnectionDeniedError"}},fn=class extends Error{constructor(e="Stream is not multiplexed"){super(e),this.name="MuxerUnavailableError"}},so=class extends Error{constructor(e="Encryption failed"){super(e),this.name="EncryptionFailedError"}},Tu=class extends Error{constructor(e="Transport unavailable"){super(e),this.name="TransportUnavailableError"}},Bu=class extends Error{constructor(e="Max recursive depth reached"){super(e),this.name="RecursionLimitError"}};var Fm=class{components={};_started=!1;constructor(e={}){this.components={};for(let[t,n]of Object.entries(e))this.components[t]=n;this.components.logger==null&&(this.components.logger=fr())}isStarted(){return this._started}async _invokeStartableMethod(e){await Promise.all(Object.values(this.components).filter(t=>Ta(t)).map(async t=>{await t[e]?.()}))}async beforeStart(){await this._invokeStartableMethod("beforeStart")}async start(){await this._invokeStartableMethod("start"),this._started=!0}async afterStart(){await this._invokeStartableMethod("afterStart")}async beforeStop(){await this._invokeStartableMethod("beforeStop")}async stop(){await this._invokeStartableMethod("stop"),this._started=!1}async afterStop(){await this._invokeStartableMethod("afterStop")}},k_=["metrics","connectionProtector","dns"],__=["components","isStarted","beforeStart","start","afterStart","beforeStop","stop","afterStop","then","_invokeStartableMethod"];function lv(r={}){let e=new Fm(r);return new Proxy(e,{get(n,o,s){if(typeof o=="string"&&!__.includes(o)){let i=e.components[o];if(i==null&&!k_.includes(o))throw new bu(`${o} not set`);return i}return Reflect.get(n,o,s)},set(n,o,s){return typeof o=="string"?e.components[o]=s:Reflect.set(n,o,s),!0}})}function uv(r){let e={};for(let t of Object.values(r.components))for(let n of C_(t))e[n]=!0;for(let t of Object.values(r.components))for(let n of T_(t))if(e[n]!==!0)throw new xu(`Service "${B_(t)}" required capability "${n}" but it was not provided by any component, you may need to add additional configuration when creating your node.`)}function C_(r){return Array.isArray(r?.[wn])?r[wn]:[]}function T_(r){return Array.isArray(r?.[Wf])?r[Wf]:[]}function B_(r){return r?.[Symbol.toStringTag]??r?.toString()??"unknown"}function fv(r={}){return r.denyDialMultiaddr==null&&(r.denyDialMultiaddr=e=>eo.matches(e)?!0:Ht(e)),r}var $m=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},Vm=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},dv=r=>globalThis.DOMException===void 0?new Vm(r):new DOMException(r),hv=r=>{let e=r.reason===void 0?dv("This operation was aborted."):r.reason;return e instanceof Error?e:dv(e)};function Km(r,e){let{milliseconds:t,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout}}=e,i,a,l=new Promise((u,f)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(e.signal){let{signal:h}=e;h.aborted&&f(hv(h)),a=()=>{f(hv(h))},h.addEventListener("abort",a,{once:!0})}if(t===Number.POSITIVE_INFINITY){r.then(u,f);return}let d=new $m;i=s.setTimeout.call(void 0,()=>{if(n){try{u(n())}catch(h){f(h)}return}typeof r.cancel=="function"&&r.cancel(),o===!1?u():o instanceof Error?f(o):(d.message=o??`Promise timed out after ${t} milliseconds`,f(d))},t),(async()=>{try{u(await r)}catch(h){f(h)}})()}).finally(()=>{l.clear(),a&&e.signal&&e.signal.removeEventListener("abort",a)});return l.clear=()=>{s.clearTimeout.call(void 0,i),i=void 0},l}var L_=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function P_(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:u}=L_(r),f=async(...h)=>{let p=t.multiArgs?h:h[0];if(t.filter)try{if(!await t.filter(p))return}catch(g){n(),i(g);return}c.push(p),t.count===c.length&&(n(),s(c))},d=(...h)=>{n(),i(t.rejectionMultiArgs?h:h[0])};n=()=>{for(let h of a)u(h,f);for(let h of t.rejectionEvents)a.includes(h)||u(h,d)};for(let h of a)l(h,f);for(let h of t.rejectionEvents)a.includes(h)||l(h,d);t.signal&&t.signal.addEventListener("abort",()=>{d(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=Km(o,{milliseconds:t.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function ra(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=P_(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}function Lu(r){if(tr(r))return{peerId:r,multiaddrs:[]};let e=Array.isArray(r)?r:[r],t;if(e.length>0){let n=e[0].getComponents().findLast(o=>o.code===421)?.value;t=n==null?void 0:Tt(n),e.forEach(o=>{if(!nn(o))throw new $r("Invalid multiaddr");let s=o.getComponents().findLast(i=>i.code===421)?.value;if(s==null){if(t!=null)throw new k("Multiaddrs must all have the same peer id or have no peer id")}else{let i=Tt(s);if(t?.equals(i)!==!0)throw new k("Multiaddrs must all have the same peer id or have no peer id")}})}return e=e.filter(n=>!ux.exactMatch(n)),{peerId:t,multiaddrs:e}}var D_=["/ipfs/id/1.0.0","/ipfs/id/push/1.0.0","/libp2p/autonat/1.0.0","/libp2p/dcutr"];async function pv(r,e){let t=r?.streams?.map(o=>o.protocol)??[],n=e?.closableProtocols??D_;if(!(t.filter(o=>o!=null&&!n.includes(o)).length>0))try{await r?.close(e)}catch(o){r?.abort(o)}}function na(r){let e=Q(r),t=e.cidr;if(e.type!=="ip4"&&e.type!=="ip6")throw new k(`Multiaddr ${r} was not an IPv4 or IPv6 address`);if(t==null)switch(e.type){case"ip4":{t=32;break}case"ip6":{t=128;break}default:throw new k(`Multiaddr ${r} was not an IPv4 or IPv6 address`)}return new Fo(e.host,t)}function Hm(r){return!to.exactMatch(r)}function Pu(r,e,t){if(r==null||e==null)return;let n=e.sort((s,i)=>s.direct?-1:i.direct?1:0).find(s=>s.limits==null);if(n==null||n.direct||t==null)return n;if(!t.some(s=>Hm(s)))return n}var Du=class{connectionManager;peerStore;allow;events;log;constructor(e,t={}){this.allow=(t.allow??[]).map(n=>na(n)),this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.events=e.events,this.log=e.logger.forComponent("libp2p:connection-manager:connection-pruner"),this.maybePruneConnections=this.maybePruneConnections.bind(this)}start(){this.events.addEventListener("connection:open",this.maybePruneConnections)}stop(){this.events.removeEventListener("connection:open",this.maybePruneConnections)}maybePruneConnections(){this._maybePruneConnections().catch(e=>{this.log.error("error while pruning connections - %e",e)})}async _maybePruneConnections(){let e=this.connectionManager.getConnections(),t=e.length,n=this.connectionManager.getMaxConnections();if(this.log("checking max connections limit %d/%d",t,n),t<=n)return;let o=new Bt;for(let c of e){let l=c.remotePeer;if(!o.has(l)){o.set(l,0);try{let u=await this.peerStore.get(l);o.set(l,[...u.tags.values()].reduce((f,d)=>f+d.value,0))}catch(u){u.name!=="NotFoundError"&&this.log.error("error loading peer tags - %e",u)}}}let s=this.sortConnections(e,o),i=Math.max(t-n,0),a=[];for(let c of s)if(this.log("too many connections open - closing a connection to %p",c.remotePeer),this.allow.some(u=>{if($e(c.remoteAddr)){let f=Q(c.remoteAddr);return u.contains(f.host)}return!0})||a.push(c),a.length===i)break;await Promise.all(a.map(async c=>{await pv(c,{signal:AbortSignal.timeout(1e3)})})),this.events.safeDispatchEvent("connection:prune",{detail:a})}sortConnections(e,t){return e.sort((n,o)=>{let s=n.timeline.open,i=o.timeline.open;return s<i?1:s>i?-1:0}).sort((n,o)=>n.direction==="outbound"&&o.direction==="inbound"?1:n.direction==="inbound"&&o.direction==="outbound"?-1:0).sort((n,o)=>n.streams.length>o.streams.length?1:n.streams.length<o.streams.length?-1:0).sort((n,o)=>{let s=t.get(n.remotePeer)??0,i=t.get(o.remotePeer)??0;return s>i?1:s<i?-1:0})}};var mv="last-dial-failure",gv="last-dial-success";var yv=100,Nu=50;function N_(r,e){let t=qi.exactMatch(r.multiaddr),n=qi.exactMatch(e.multiaddr);if(t&&!n)return-1;if(!t&&n)return 1;let o=zi.exactMatch(r.multiaddr),s=zi.exactMatch(e.multiaddr);if(o&&!s)return-1;if(!o&&s)return 1;let i=eo.exactMatch(r.multiaddr),a=eo.exactMatch(e.multiaddr);if(i&&!a)return-1;if(!i&&a)return 1;let c=wm.exactMatch(r.multiaddr),l=wm.exactMatch(e.multiaddr);if(c&&!l)return-1;if(!c&&l)return 1;let u=gm.exactMatch(r.multiaddr),f=gm.exactMatch(e.multiaddr);if(u&&!f)return-1;if(!u&&f)return 1;let d=ym.exactMatch(r.multiaddr),h=ym.exactMatch(e.multiaddr);return d&&!h?-1:!d&&h?1:0}function R_(r,e){let t=ui(r.multiaddr),n=ui(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function M_(r,e){let t=Ht(r.multiaddr),n=Ht(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function O_(r,e){return r.isCertified&&!e.isCertified?-1:!r.isCertified&&e.isCertified?1:0}function U_(r,e){let t=to.exactMatch(r.multiaddr),n=to.exactMatch(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function wv(r){return r.sort(N_).sort(O_).sort(U_).sort(M_).sort(R_)}var qm=class{dns;canResolve(e){return e.getComponents().some(({name:t})=>t==="dnsaddr")}async resolve(e,t){let n=e.getComponents().find(c=>c.name==="dnsaddr")?.value;if(n==null)return[e];let s=await this.getDNS(t).query(`_dnsaddr.${n}`,{signal:t?.signal,types:[vt.TXT]}),i=e.getComponents().find(c=>c.name==="p2p")?.value,a=[];for(let c of s.Answer){let l=c.data.replace(/["']/g,"").trim().split("=")[1];l!=null&&(i!=null&&!l.includes(i)||a.push(ee(l)))}return a}getDNS(e){return e.dns!=null?e.dns:(this.dns==null&&(this.dns=tl()),this.dns)}},oa=new qm;async function zm(r,e,t){let n=t.depth??0;if(n>(t.maxRecursiveDepth??32))throw new Bu("Max recursive depth reached");let o=!1,s=[];for(let i of Object.values(e))if(i.canResolve(r)){o=!0;let a=await i.resolve(r,t);for(let c of a)s.push(...await zm(c,e,{...t,depth:n+1}))}return o===!1&&s.push(r),s}var sa={maxParallelDials:Nu,maxDialQueueLength:500,maxPeerAddrsToDial:25,dialTimeout:1e4,resolvers:{dnsaddr:oa}},Ru=class{queue;components;addressSorter;maxPeerAddrsToDial;maxDialQueueLength;dialTimeout;shutDownController;connections;log;resolvers;constructor(e,t={}){this.addressSorter=t.addressSorter,this.maxPeerAddrsToDial=t.maxPeerAddrsToDial??sa.maxPeerAddrsToDial,this.maxDialQueueLength=t.maxDialQueueLength??sa.maxDialQueueLength,this.dialTimeout=t.dialTimeout??sa.dialTimeout,this.connections=t.connections??new Bt,this.log=e.logger.forComponent("libp2p:connection-manager:dial-queue"),this.components=e,this.resolvers=t.resolvers??sa.resolvers,this.shutDownController=new AbortController,this.shutDownController.signal,this.queue=new qc({concurrency:t.maxParallelDials??sa.maxParallelDials,metricName:"libp2p_dial_queue",metrics:e.metrics}),this.queue.addEventListener("failure",n=>{n.detail?.error.name!==ft.name&&this.log.error("error in dial queue - %e",n.detail.error)})}start(){this.shutDownController=new AbortController,this.shutDownController.signal}stop(){this.shutDownController.abort(),this.queue.abort()}async dial(e,t={}){let{peerId:n,multiaddrs:o}=Lu(e);if(n!=null&&t.force!==!0){let i=Pu(n,this.connections.get(n),o);if(i!=null)return this.log("already connected to %a",i.remoteAddr),t.onProgress?.(new W("dial-queue:already-connected")),i}let s=this.queue.queue.find(i=>{if(n?.equals(i.options.peerId)===!0)return!0;let a=i.options.multiaddrs;if(a==null)return!1;for(let c of o)if(a.has(c.toString()))return!0;return!1});if(s!=null){this.log("joining existing dial target for %p",n);for(let i of o)s.options.multiaddrs.add(i.toString());return t.onProgress?.(new W("dial-queue:already-in-dial-queue")),s.join(t)}if(this.queue.size>=this.maxDialQueueLength)throw new ho("Dial queue is full");return this.log("creating dial target for %p",n,o.map(i=>i.toString())),t.onProgress?.(new W("dial-queue:add-to-dial-queue")),this.queue.add(async i=>{i.onProgress?.(new W("dial-queue:start-dial"));let a=pe([this.shutDownController.signal,i.signal]);try{return await this.dialPeer(i,a)}finally{a.clear()}},{peerId:n,priority:t.priority??Ym,multiaddrs:new Set(o.map(i=>i.toString())),signal:t.signal??AbortSignal.timeout(this.dialTimeout),onProgress:t.onProgress})}async dialPeer(e,t){let n=e.peerId,o=e.multiaddrs,s=new Set,i=e.multiaddrs.size===0,a=0,c=0,l=[];for(this.log("starting dial to %p",n);i||o.size>0;){c++,i=!1;let u=[],f=new Set(e.multiaddrs);o.clear(),this.log("calculating addrs to dial %p from %s",n,[...f]);let d=await this.calculateMultiaddrs(n,f,{...e,signal:t});for(let h of d){if(s.has(h.multiaddr.toString())){this.log.trace("skipping previously failed multiaddr %a while dialing %p",h.multiaddr,n);continue}u.push(h)}this.log("%s dial to %p with %s",c===1?"starting":"continuing",n,u.map(h=>h.multiaddr.toString())),e?.onProgress?.(new W("dial-queue:calculated-addresses",u));for(let h of u){if(a===this.maxPeerAddrsToDial)throw this.log("dialed maxPeerAddrsToDial (%d) addresses for %p, not trying any others",a,e.peerId),new ho("Peer had more than maxPeerAddrsToDial");a++;try{let p=await this.components.transportManager.dial(h.multiaddr,{...e,signal:t});this.log("dial to %a succeeded",h.multiaddr);try{await this.components.peerStore.merge(p.remotePeer,{multiaddrs:[p.remoteAddr],metadata:{[gv]:B(Date.now().toString())}})}catch(g){this.log.error("could not update last dial failure key for %p - %e",n,g)}return p}catch(p){if(this.log.error("dial failed to %a - %e",h.multiaddr,p),s.add(h.multiaddr.toString()),n!=null)try{await this.components.peerStore.merge(n,{metadata:{[mv]:B(Date.now().toString())}})}catch(g){this.log.error("could not update last dial failure key for %p - %e",n,g)}if(t.aborted)throw new Sa(p.message);l.push(p)}}}throw l.length===1?l[0]:new AggregateError(l,"All multiaddr dials failed")}async calculateMultiaddrs(e,t=new Set,n={}){let o=[...t].map(f=>({multiaddr:ee(f),isCertified:!1}));if(e!=null){if(this.components.peerId.equals(e))throw new ho("Tried to dial self");if(await this.components.connectionGater.denyDialPeer?.(e)===!0)throw new ta("The dial request is blocked by gater.allowDialPeer");if(o.length===0){this.log("loading multiaddrs for %p",e);try{let f=await this.components.peerStore.get(e);o.push(...f.addresses),this.log("loaded multiaddrs for %p",e,o.map(({multiaddr:d})=>d.toString()))}catch(f){if(f.name!=="NotFoundError")throw f}}if(o.length===0){this.log("looking up multiaddrs for %p in the peer routing",e);try{let f=await this.components.peerRouting.findPeer(e,n);this.log("found multiaddrs for %p in the peer routing",e,o.map(({multiaddr:d})=>d.toString())),o.push(...f.multiaddrs.map(d=>({multiaddr:d,isCertified:!1})))}catch(f){f.name==="NoPeerRoutersError"?this.log("no peer routers configured",e):this.log.error("looking up multiaddrs for %p in the peer routing failed - %e",e,f)}}}let s=(await Promise.all(o.map(async f=>{let d=await zm(f.multiaddr,this.resolvers,{dns:this.components.dns,log:this.log,...n});return d.length===1&&d[0].equals(f.multiaddr)?f:d.map(h=>({multiaddr:h,isCertified:!1}))}))).flat();if(e!=null){let f=`/p2p/${e.toString()}`;s=s.map(d=>d.multiaddr.getComponents().pop()?.name!=="p2p"?{multiaddr:d.multiaddr.encapsulate(f),isCertified:d.isCertified}:d)}let i=s.filter(f=>{if(this.components.transportManager.dialTransportForMultiaddr(f.multiaddr)==null)return!1;let d=f.multiaddr.getComponents().findLast(h=>h.code===421)?.value;return e!=null&&d!=null?e.equals(d):!0}),a=new Map;for(let f of i){let d=f.multiaddr.toString(),h=a.get(d);if(h!=null){h.isCertified=h.isCertified||f.isCertified||!1;continue}a.set(d,f)}let c=[...a.values()];if(c.length===0)throw new ku("The dial request has no valid addresses");let l=[];for(let f of c)this.components.connectionGater.denyDialMultiaddr!=null&&await this.components.connectionGater.denyDialMultiaddr(f.multiaddr)||l.push(f);let u=this.addressSorter==null?wv(l):l.sort(this.addressSorter);if(u.length===0)throw new ta("The connection gater denied all addresses in the dial request");return this.log.trace("addresses for %p before filtering",e??"unknown peer",s.map(({multiaddr:f})=>f.toString())),this.log.trace("addresses for %p after filtering",e??"unknown peer",u.map(({multiaddr:f})=>f.toString())),u}async isDialable(e,t={}){Array.isArray(e)||(e=[e]);try{let n=await this.calculateMultiaddrs(void 0,new Set(e.map(o=>o.toString())),t);return t.runOnLimitedConnection===!1?n.find(o=>!to.matches(o.multiaddr))!=null:!0}catch{}return!1}};var F_=Object.prototype.toString,$_=r=>F_.call(r)==="[object Error]",V_=new Set(["network error","Failed to fetch","NetworkError when attempting to fetch resource.","The Internet connection appears to be offline.","Network request failed","fetch failed","terminated"," A network error occurred.","Network connection lost"]);function Zm(r){if(!(r&&$_(r)&&r.name==="TypeError"&&typeof r.message=="string"))return!1;let{message:t,stack:n}=r;return t==="Load failed"?n===void 0||"__sentry_captured__"in r:t.startsWith("error sending request for url")?!0:V_.has(t)}function K_(r){if(typeof r=="number"){if(r<0)throw new TypeError("Expected `retries` to be a non-negative number.");if(Number.isNaN(r))throw new TypeError("Expected `retries` to be a valid number or Infinity, got NaN.")}else if(r!==void 0)throw new TypeError("Expected `retries` to be a number or Infinity.")}function Mu(r,e,{min:t=0,allowInfinity:n=!1}={}){if(e!==void 0){if(typeof e!="number"||Number.isNaN(e))throw new TypeError(`Expected \`${r}\` to be a number${n?" or Infinity":""}.`);if(!n&&!Number.isFinite(e))throw new TypeError(`Expected \`${r}\` to be a finite number.`);if(e<t)throw new TypeError(`Expected \`${r}\` to be \u2265 ${t}.`)}}var Xm=class extends Error{constructor(e){super(),e instanceof Error?(this.originalError=e,{message:e}=e):(this.originalError=new Error(e),this.originalError.stack=this.stack),this.name="AbortError",this.message=e}};function H_(r,e){let t=Math.max(1,r+1),n=e.randomize?Math.random()+1:1,o=Math.round(n*e.minTimeout*e.factor**(t-1));return o=Math.min(o,e.maxTimeout),o}function bv(r,e){return Number.isFinite(e)?e-(performance.now()-r):e}async function q_({error:r,attemptNumber:e,retriesConsumed:t,startTime:n,options:o}){let s=r instanceof Error?r:new TypeError(`Non-error was thrown: "${r}". You should only throw errors.`);if(s instanceof Xm)throw s.originalError;let i=Number.isFinite(o.retries)?Math.max(0,o.retries-t):o.retries,a=o.maxRetryTime??Number.POSITIVE_INFINITY,c=Object.freeze({error:s,attemptNumber:e,retriesLeft:i,retriesConsumed:t});if(await o.onFailedAttempt(c),bv(n,a)<=0)throw s;let l=await o.shouldConsumeRetry(c),u=bv(n,a);if(u<=0||i<=0)throw s;if(s instanceof TypeError&&!Zm(s)){if(l)throw s;return o.signal?.throwIfAborted(),!1}if(!await o.shouldRetry(c))throw s;if(!l)return o.signal?.throwIfAborted(),!1;let f=H_(t,o),d=Math.min(f,u);return o.signal?.throwIfAborted(),d>0&&await new Promise((h,p)=>{let g=()=>{clearTimeout(w),o.signal?.removeEventListener("abort",g),p(o.signal.reason)},w=setTimeout(()=>{o.signal?.removeEventListener("abort",g),h()},d);o.unref&&w.unref?.(),o.signal?.addEventListener("abort",g,{once:!0})}),o.signal?.throwIfAborted(),!0}async function Jm(r,e={}){if(e={...e},K_(e.retries),Object.hasOwn(e,"forever"))throw new Error("The `forever` option is no longer supported. For many use-cases, you can set `retries: Infinity` instead.");e.retries??=10,e.factor??=2,e.minTimeout??=1e3,e.maxTimeout??=Number.POSITIVE_INFINITY,e.maxRetryTime??=Number.POSITIVE_INFINITY,e.randomize??=!1,e.onFailedAttempt??=()=>{},e.shouldRetry??=()=>!0,e.shouldConsumeRetry??=()=>!0,Mu("factor",e.factor,{min:0,allowInfinity:!1}),Mu("minTimeout",e.minTimeout,{min:0,allowInfinity:!1}),Mu("maxTimeout",e.maxTimeout,{min:0,allowInfinity:!0}),Mu("maxRetryTime",e.maxRetryTime,{min:0,allowInfinity:!0}),e.factor>0||(e.factor=1),e.signal?.throwIfAborted();let t=0,n=0,o=performance.now();for(;!Number.isFinite(e.retries)||n<=e.retries;){t++;try{e.signal?.throwIfAborted();let s=await r(t);return e.signal?.throwIfAborted(),s}catch(s){await q_({error:s,attemptNumber:t,retriesConsumed:n,startTime:o,options:e})&&n++}}throw new Error("Retry attempts exhausted without throwing an error.")}var Ou=class{log;queue;started;peerStore;retries;retryInterval;backoffFactor;connectionManager;events;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:reconnect-queue"),this.peerStore=e.peerStore,this.connectionManager=e.connectionManager,this.queue=new ns({concurrency:t.maxParallelReconnects??5,metricName:"libp2p_reconnect_queue",metrics:e.metrics}),this.started=!1,this.retries=t.retries??5,this.backoffFactor=t.backoffFactor,this.retryInterval=t.retryInterval,this.events=e.events,e.events.addEventListener("peer:disconnect",n=>{this.maybeReconnect(n.detail).catch(o=>{this.log.error("failed to maybe reconnect to %p - %e",n.detail,o)})})}async maybeReconnect(e){if(!this.started)return;let t=await this.peerStore.get(e);xv(t)&&(this.queue.has(e)||this.queue.add(async n=>{await Jm(async o=>{if(this.started)try{await this.connectionManager.openConnection(e,{signal:n?.signal})}catch(s){throw this.log("reconnecting to %p attempt %d of %d failed - %e",e,o,this.retries,s),s}},{signal:n?.signal,retries:this.retries,factor:this.backoffFactor,minTimeout:this.retryInterval})},{peerId:e}).catch(async n=>{this.log.error("failed to reconnect to %p - %e",e,n);let o={};[...t.tags.keys()].forEach(s=>{s.startsWith(Gf)&&(o[s]=void 0)}),await this.peerStore.merge(e,{tags:o}),this.events.safeDispatchEvent("peer:reconnect-failure",{detail:e})}).catch(async n=>{this.log.error("failed to remove keep-alive tag from %p - %e",e,n)}))}start(){this.started=!0}async afterStart(){Promise.resolve().then(async()=>{let e=await this.peerStore.all({filters:[t=>xv(t)]});await Promise.all(e.map(async t=>{await this.connectionManager.openConnection(t.id).catch(n=>{this.log.error("could not open connection to keepalive peer - %e",n)})}))}).catch(e=>{this.log.error("error reconnect to peers after start - %e",e)})}stop(){this.started=!1,this.queue.abort()}};function xv(r){for(let e of r.tags.keys())if(e.startsWith(Gf))return!0;return!1}var Ym=50,Qm={maxConnections:yv,inboundConnectionThreshold:5,maxIncomingPendingConnections:10},Uu=class{started;connections;allow;deny;maxIncomingPendingConnections;incomingPendingConnections;outboundPendingConnections;maxConnections;dialQueue;reconnectQueue;connectionPruner;inboundConnectionRateLimiter;peerStore;metrics;events;log;peerId;constructor(e,t={}){if(this.maxConnections=t.maxConnections??Qm.maxConnections,this.maxConnections<1)throw new k("Connection Manager maxConnections must be greater than 0");this.connections=new Bt,this.started=!1,this.peerId=e.peerId,this.peerStore=e.peerStore,this.metrics=e.metrics,this.events=e.events,this.log=e.logger.forComponent("libp2p:connection-manager"),this.onConnect=this.onConnect.bind(this),this.onDisconnect=this.onDisconnect.bind(this),this.allow=(t.allow??[]).map(n=>na(ee(n))),this.deny=(t.deny??[]).map(n=>na(ee(n))),this.incomingPendingConnections=0,this.maxIncomingPendingConnections=t.maxIncomingPendingConnections??Qm.maxIncomingPendingConnections,this.outboundPendingConnections=0,this.inboundConnectionRateLimiter=new zc({points:t.inboundConnectionThreshold??Qm.inboundConnectionThreshold,duration:1}),this.connectionPruner=new Du({connectionManager:this,peerStore:e.peerStore,events:e.events,logger:e.logger},{allow:t.allow?.map(n=>ee(n))}),this.dialQueue=new Ru(e,{addressSorter:t.addressSorter,maxParallelDials:t.maxParallelDials??Nu,maxDialQueueLength:t.maxDialQueueLength??500,maxPeerAddrsToDial:t.maxPeerAddrsToDial??25,dialTimeout:t.dialTimeout??1e4,resolvers:t.resolvers??{dnsaddr:oa},connections:this.connections}),this.reconnectQueue=new Ou({events:e.events,peerStore:e.peerStore,logger:e.logger,connectionManager:this},{retries:t.reconnectRetries,retryInterval:t.reconnectRetryInterval,backoffFactor:t.reconnectBackoffFactor,maxParallelReconnects:t.maxParallelReconnects})}[Symbol.toStringTag]="@libp2p/connection-manager";async start(){this.metrics?.registerMetricGroup("libp2p_connection_manager_connections",{calculate:()=>{let e={inbound:0,"inbound pending":this.incomingPendingConnections,outbound:0,"outbound pending":this.outboundPendingConnections};for(let t of this.connections.values())for(let n of t)e[n.direction]++;return e}}),this.metrics?.registerMetricGroup("libp2p_protocol_streams_total",{label:"protocol",calculate:()=>{let e={};for(let t of this.connections.values())for(let n of t)for(let o of n.streams){let s=`${o.direction} ${o.protocol??"unnegotiated"}`;e[s]=(e[s]??0)+1}return e}}),this.metrics?.registerMetricGroup("libp2p_connection_manager_protocol_streams_per_connection_90th_percentile",{label:"protocol",calculate:()=>{let e={};for(let n of this.connections.values())for(let o of n){let s={};for(let i of o.streams){let a=`${i.direction} ${i.protocol??"unnegotiated"}`;s[a]=(s[a]??0)+1}for(let[i,a]of Object.entries(s))e[i]=e[i]??[],e[i].push(a)}let t={};for(let[n,o]of Object.entries(e)){o=o.sort((i,a)=>i-a);let s=Math.floor(o.length*.9);t[n]=o[s]}return t}}),this.events.addEventListener("connection:open",this.onConnect),this.events.addEventListener("connection:close",this.onDisconnect),await rr(this.dialQueue,this.reconnectQueue,this.connectionPruner),this.started=!0,this.log("started")}async stop(){this.events.removeEventListener("connection:open",this.onConnect),this.events.removeEventListener("connection:close",this.onDisconnect),await nr(this.reconnectQueue,this.dialQueue,this.connectionPruner);let e=[];for(let t of this.connections.values())for(let n of t)e.push(Promise.all([ra(n,"close",{signal:AbortSignal.timeout(500)}),n.close({signal:AbortSignal.timeout(500)})]).catch(o=>{n.abort(o)}));this.log("closing %d connections",e.length),await Promise.all(e),this.connections.clear(),this.log("stopped")}getMaxConnections(){return this.maxConnections}setMaxConnections(e){if(this.maxConnections<1)throw new k("Connection Manager maxConnections must be greater than 0");let t=!1;e<this.maxConnections&&(t=!0),this.maxConnections=e,t&&this.connectionPruner.maybePruneConnections()}onConnect(e){this._onConnect(e).catch(t=>{this.log.error("could not connect - %e",t)})}async _onConnect(e){let{detail:t}=e;if(!this.started){await t.close();return}if(t.status!=="open")return;let n=t.remotePeer,o=!this.connections.has(n),s=this.connections.get(n)??[];s.push(t),this.connections.set(n,s),n.publicKey!=null&&n.type==="RSA"&&await this.peerStore.patch(n,{publicKey:n.publicKey}),o&&this.events.safeDispatchEvent("peer:connect",{detail:t.remotePeer})}onDisconnect(e){let{detail:t}=e,n=t.remotePeer,s=(this.connections.get(n)??[]).filter(i=>i.id!==t.id);this.connections.set(n,s),s.length===0&&(this.log.trace("peer %p disconnected, removing connection map entry",n),this.connections.delete(n),this.events.safeDispatchEvent("peer:disconnect",{detail:n}))}getConnections(e){if(e!=null)return this.connections.get(e)??[];let t=[];for(let n of this.connections.values())t=t.concat(n);return t}getConnectionsMap(){return this.connections}async openConnection(e,t={}){if(!this.started)throw new yr("Not started");this.outboundPendingConnections++;try{t.signal?.throwIfAborted();let{peerId:n,multiaddrs:o}=Lu(e);if(this.peerId.equals(n))throw new fo("Can not dial self");if(n!=null&&t.force!==!0){this.log("dial %p",n);let c=Pu(n,this.getConnections(n),o);if(c!=null)return this.log("had an existing connection to %p as %a",n,c.remoteAddr),t.onProgress?.(new W("dial-queue:already-connected")),c}let s=await this.dialQueue.dial(e,{...t,priority:t.priority??Ym});if(s.status!=="open")throw new gn("Remote closed connection during opening");let i=this.connections.get(s.remotePeer);i==null&&(i=[],this.connections.set(s.remotePeer,i));let a=!1;for(let c of i)if(c.id===s.id&&(a=!0),t.force!==!0&&c.id!==s.id&&c.remoteAddr.equals(s.remoteAddr))return s.abort(new $r("Duplicate multiaddr connection")),c;return a||i.push(s),s}finally{this.outboundPendingConnections--}}async openStream(e,t,n={}){return(await this.openConnection(e,n)).newStream(t,n)}async closeConnections(e,t={}){let n=this.connections.get(e)??[];await Promise.all(n.map(async o=>{try{await Promise.all([ra(o,"close",t),o.close(t)])}catch(s){o.abort(s)}}))}acceptIncomingConnection(e){if(this.deny.some(o=>{if($e(e.remoteAddr)){let s=Q(e.remoteAddr);return o.contains(s.host)}return!1}))return this.log("connection from %a refused - connection remote address was in deny list",e.remoteAddr),!1;if(this.allow.some(o=>{if($e(e.remoteAddr)){let s=Q(e.remoteAddr);return o.contains(s.host)}return!0}))return this.incomingPendingConnections++,!0;if(this.incomingPendingConnections===this.maxIncomingPendingConnections)return this.log("connection from %a refused - incomingPendingConnections exceeded by host",e.remoteAddr),!1;if($e(e.remoteAddr)){let o=Q(e.remoteAddr);try{this.inboundConnectionRateLimiter.consume(o.host,1)}catch{return this.log("connection from %a refused - inboundConnectionThreshold exceeded by host %s",e.remoteAddr,o.host),!1}}return this.getConnections().length<this.maxConnections?(this.incomingPendingConnections++,!0):(this.log("connection from %a refused - maxConnections exceeded",e.remoteAddr),!1)}afterUpgradeInbound(){this.incomingPendingConnections--}getDialQueue(){let e={queued:"queued",running:"active",errored:"error",complete:"success"};return this.dialQueue.queue.queue.map(t=>({id:t.id,status:e[t.status],peerId:t.options.peerId,multiaddrs:[...t.options.multiaddrs].map(n=>ee(n))}))}async isDialable(e,t={}){return this.dialQueue.isDialable(e,t)}};var W_=1e4,j_="1.0.0",Y_="ping",Z_="ipfs",vv=32,X_=!0,Fu=class{protocol;components;log;heartbeatInterval;pingIntervalMs;abortController;timeout;abortConnectionOnPingFailure;constructor(e,t={}){this.components=e,this.protocol=`/${t.protocolPrefix??Z_}/${Y_}/${j_}`,this.log=e.logger.forComponent("libp2p:connection-monitor"),this.pingIntervalMs=t.pingInterval??W_,this.abortConnectionOnPingFailure=t.abortConnectionOnPingFailure??X_,this.timeout=new uc({...t.pingTimeout??{},metrics:e.metrics,metricName:"libp2p_connection_monitor_ping_time_milliseconds"})}[Symbol.toStringTag]="@libp2p/connection-monitor";[wn]=["@libp2p/connection-monitor"];start(){this.abortController=new AbortController,this.abortController.signal,this.heartbeatInterval=setInterval(()=>{this.components.connectionManager.getConnections().forEach(e=>{Promise.resolve().then(async()=>{let t=Date.now();try{let n=this.timeout.getTimeoutSignal({signal:this.abortController?.signal}),o=await e.newStream(this.protocol,{signal:n,runOnLimitedConnection:!0}),s=sp(o);t=Date.now(),await Promise.all([s.write(Ft(vv),{signal:n}),s.read({bytes:vv,signal:n})]),e.rtt=Date.now()-t,await o.close({signal:n})}catch(n){if(n.name!=="UnsupportedProtocolError")throw n;e.rtt=(Date.now()-t)/2}}).catch(t=>{this.log.error("error during heartbeat - %e",t),this.abortConnectionOnPingFailure?(this.log.error("aborting connection due to ping failure"),e.abort(t)):this.log("connection ping failed, but not aborting due to abortConnectionOnPingFailure flag")})})},this.pingIntervalMs)}stop(){this.abortController?.abort(),this.heartbeatInterval!=null&&clearInterval(this.heartbeatInterval)}};var $u=class{routers;started;components;constructor(e,t){this.routers=t.routers??[],this.started=!1,this.components=e,this.findProviders=e.metrics?.traceFunction("libp2p.contentRouting.findProviders",this.findProviders.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()}),getAttributesFromYieldedValue:(n,o)=>({...o,providers:[...Array.isArray(o.providers)?o.providers:[],n.id.toString()]})})??this.findProviders,this.provide=e.metrics?.traceFunction("libp2p.contentRouting.provide",this.provide.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()})})??this.provide,this.cancelReprovide=e.metrics?.traceFunction("libp2p.contentRouting.cancelReprovide",this.cancelReprovide.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()})})??this.cancelReprovide,this.put=e.metrics?.traceFunction("libp2p.contentRouting.put",this.put.bind(this),{optionsIndex:2,getAttributesFromArgs:([n])=>({key:M(n,"base36")})})??this.put,this.get=e.metrics?.traceFunction("libp2p.contentRouting.get",this.get.bind(this),{optionsIndex:1,getAttributesFromArgs:([n])=>({key:M(n,"base36")})})??this.get}[Symbol.toStringTag]="@libp2p/content-routing";isStarted(){return this.started}async start(){this.started=!0}async stop(){this.started=!1}async*findProviders(e,t={}){if(this.routers.length===0)throw new gs("No content routers available");let n=this,o=new Yn;for await(let s of It(...n.routers.filter(i=>i.findProviders instanceof Function).map(i=>i.findProviders(e,t))))s!=null&&(s.multiaddrs.length>0&&await this.components.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},t),!o.has(s.id)&&(o.add(s.id),yield s))}async provide(e,t={}){if(this.routers.length===0)throw new gs("No content routers available");await Promise.all(this.routers.filter(n=>n.provide instanceof Function).map(async n=>{await n.provide(e,t)}))}async cancelReprovide(e,t={}){if(this.routers.length===0)throw new gs("No content routers available");await Promise.all(this.routers.filter(n=>n.cancelReprovide instanceof Function).map(async n=>{await n.cancelReprovide(e,t)}))}async put(e,t,n){if(!this.isStarted())throw new yr;await Promise.all(this.routers.filter(o=>o.put instanceof Function).map(async o=>{await o.put(e,t,n)}))}async get(e,t){if(!this.isStarted())throw new yr;return Promise.any(this.routers.filter(n=>n.get instanceof Function).map(async n=>n.get(e,t)))}};var Vu=globalThis.CustomEvent??Event;async function*eg(r,e={}){let t=e.concurrency??1/0;t<1&&(t=1/0);let n=e.ordered??!1,o=new EventTarget,s=[],i=ae(),a=ae(),c=!1,l,u=!1;o.addEventListener("task-complete",()=>{a.resolve()}),Promise.resolve().then(async()=>{try{for await(let p of r){if(s.length===t&&(i=ae(),await i.promise),u)break;let g={done:!1};s.push(g),p().then(w=>{g.done=!0,g.ok=!0,g.value=w,o.dispatchEvent(new Vu("task-complete"))},w=>{g.done=!0,g.err=w,o.dispatchEvent(new Vu("task-complete"))})}c=!0,o.dispatchEvent(new Vu("task-complete"))}catch(p){l=p,o.dispatchEvent(new Vu("task-complete"))}});function f(){return n?s[0]?.done:!!s.find(p=>p.done)}function*d(){for(;s.length>0&&s[0].done;){let p=s[0];if(s.shift(),p.ok)yield p.value;else throw u=!0,i.resolve(),p.err;i.resolve()}}function*h(){for(;f();)for(let p=0;p<s.length;p++)if(s[p].done){let g=s[p];if(s.splice(p,1),p--,g.ok)yield g.value;else throw u=!0,i.resolve(),g.err;i.resolve()}}for(;;){if(f()||(a=ae(),await a.promise),l!=null||(n?yield*d():yield*h(),l!=null))throw l;if(c&&s.length===0)break}}var Ku=class{log;peerId;peerStore;routers;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-routing"),this.peerId=e.peerId,this.peerStore=e.peerStore,this.routers=t.routers??[],this.findPeer=e.metrics?.traceFunction("libp2p.peerRouting.findPeer",this.findPeer.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,peer:n.toString()})})??this.findPeer,this.getClosestPeers=e.metrics?.traceFunction("libp2p.peerRouting.getClosestPeers",this.getClosestPeers.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,key:M(n,"base36")}),getAttributesFromYieldedValue:(n,o)=>({...o,peers:[...Array.isArray(o.peers)?o.peers:[],n.id.toString()]})})??this.getClosestPeers}[Symbol.toStringTag]="@libp2p/peer-routing";async findPeer(e,t){if(this.routers.length===0)throw new ea("No peer routers available");if(e.toString()===this.peerId.toString())throw new vu("Should not try to find self");let n=this,o=It(...this.routers.filter(s=>s.findPeer instanceof Function).map(s=>(async function*(){try{yield await s.findPeer(e,t)}catch(i){n.log.error("router failed to find peer - %e",i)}})()));for await(let s of o)if(s!=null)return s.multiaddrs.length>0&&await this.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},t),s;throw new ke}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new ea("No peer routers available");let n=this,o=Un(1024);for await(let s of eg((async function*(){let i=It(...n.routers.filter(a=>a.getClosestPeers instanceof Function).map(a=>a.getClosestPeers(e,t)));for await(let a of i)yield async()=>{if(a.multiaddrs.length===0)try{a=await n.findPeer(a.id,{...t,useCache:!1})}catch(c){n.log.error("could not find peer multiaddrs - %e",c);return}return a}})()))s!=null&&(s.multiaddrs.length>0&&await this.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},t),!o.has(s.id.toMultihash().bytes)&&(o.add(s.id.toMultihash().bytes),yield s))}};var Hu=class extends _e{peerRouting;log;walking;walkers;shutdownController;walkController;needNext;constructor(e){super(),this.log=e.logger.forComponent("libp2p:random-walk"),this.peerRouting=e.peerRouting,this.walkers=0,this.walking=!1,this.shutdownController=new AbortController,this.shutdownController.signal}[Symbol.toStringTag]="@libp2p/random-walk";start(){this.shutdownController=new AbortController,this.shutdownController.signal}stop(){this.shutdownController.abort()}async*walk(e){this.walking||this.startWalk(),this.walkers++;let t=pe([this.shutdownController.signal,e?.signal]);try{for(;;)this.needNext?.resolve(),this.needNext=ae(),yield(await ra(this,"walk:peer",{signal:t,rejectionEvents:["walk:error"]})).detail}catch(n){throw n.detail!=null?n.detail:n}finally{t.clear(),this.walkers--,this.walkers===0&&(this.walkController?.abort(),this.walkController=void 0)}}startWalk(){this.walking=!0,this.walkController=new AbortController,this.walkController.signal;let e=pe([this.walkController.signal,this.shutdownController.signal]);let t=Date.now(),n=0;Promise.resolve().then(async()=>{for(this.log("start walk");this.walkers>0;)try{let o=Ft(32),s=Date.now();for await(let i of this.peerRouting.getClosestPeers(o,{signal:e}))e.aborted&&this.log("aborting walk"),e.throwIfAborted(),this.log("found peer %p after %dms for %d walkers",i.id,Date.now()-s,this.walkers),n++,this.safeDispatchEvent("walk:peer",{detail:i}),this.walkers===1&&this.needNext!=null&&(this.log("wait for need next"),await St(this.needNext.promise,e)),s=Date.now();this.log("walk iteration for %b and %d walkers finished, found %d peers",o,this.walkers,n)}catch(o){this.log.error("random walk errored - %e",o),this.safeDispatchEvent("walk:error",{detail:o})}this.log("no walkers left, ended walk")}).catch(o=>{this.log.error("random walk errored - %e",o)}).finally(()=>{this.log("finished walk, found %d peers after %dms",n,Date.now()-t),this.walking=!1})}};var tg=32,rg=64,qu=class{log;topologies;handlers;components;middleware;constructor(e){this.components=e,this.log=e.logger.forComponent("libp2p:registrar"),this.middleware=new Map,this.topologies=new Map,e.metrics?.registerMetricGroup("libp2p_registrar_topologies",{calculate:()=>{let t={};for(let[n,o]of this.topologies)t[n]=o.size;return t}}),this.handlers=Xe({name:"libp2p_registrar_protocol_handlers",metrics:e.metrics}),this._onDisconnect=this._onDisconnect.bind(this),this._onPeerUpdate=this._onPeerUpdate.bind(this),this._onPeerIdentify=this._onPeerIdentify.bind(this),this.components.events.addEventListener("peer:disconnect",this._onDisconnect),this.components.events.addEventListener("peer:update",this._onPeerUpdate),this.components.events.addEventListener("peer:identify",this._onPeerIdentify)}[Symbol.toStringTag]="@libp2p/registrar";getProtocols(){return Array.from(new Set([...this.handlers.keys()])).sort()}getHandler(e){let t=this.handlers.get(e);if(t==null)throw new Eu(`No handler registered for protocol ${e}`);return t}getTopologies(e){let t=this.topologies.get(e);return t==null?[]:[...t.values()]}async handle(e,t,n){if(this.handlers.has(e)&&n?.force!==!0)throw new Au(`Handler already registered for protocol ${e}`);this.handlers.set(e,{handler:t,options:{maxInboundStreams:tg,maxOutboundStreams:rg,...n}}),await this.components.peerStore.merge(this.components.peerId,{protocols:[e]},n)}async unhandle(e,t){(Array.isArray(e)?e:[e]).forEach(o=>{this.handlers.delete(o)}),await this.components.peerStore.patch(this.components.peerId,{protocols:this.getProtocols()},t)}async register(e,t){if(t==null)throw new k("invalid topology");let n=`${(Math.random()*1e9).toString(36)}${Date.now()}`,o=this.topologies.get(e);return o==null&&(o=new Map,this.topologies.set(e,o)),o.set(n,t),n}unregister(e){for(let[t,n]of this.topologies.entries())n.has(e)&&(n.delete(e),n.size===0&&this.topologies.delete(t))}use(e,t){this.middleware.set(e,t)}unuse(e){this.middleware.delete(e)}getMiddleware(e){return this.middleware.get(e)??[]}async _onDisconnect(e){let t=e.detail,n={signal:AbortSignal.timeout(5e3)};try{let o=await this.components.peerStore.get(t,n);for(let s of o.protocols){let i=this.topologies.get(s);i!=null&&await Promise.all([...i.values()].map(async a=>{a.filter?.has(t)!==!1&&(a.filter?.remove(t),await a.onDisconnect?.(t))}))}}catch(o){if(o.name==="NotFoundError")return;this.log.error("could not inform topologies of disconnecting peer %p - %e",t,o)}}async _onPeerUpdate(e){let{peer:t,previous:n}=e.detail,o=(n?.protocols??[]).filter(s=>!t.protocols.includes(s));try{for(let s of o){let i=this.topologies.get(s);i!=null&&await Promise.all([...i.values()].map(async a=>{a.filter?.has(t.id)!==!1&&(a.filter?.remove(t.id),await a.onDisconnect?.(t.id))}))}}catch(s){this.log.error("could not inform topologies of updated peer %p - %e",t.id,s)}}async _onPeerIdentify(e){let t=e.detail.protocols,n=e.detail.connection,o=e.detail.peerId;try{for(let s of t){let i=this.topologies.get(s);i!=null&&await Promise.all([...i.values()].map(async a=>{n.limits!=null&&a.notifyOnLimitedConnection!==!0||a.filter?.has(o)!==!0&&(a.filter?.add(o),await a.onConnect?.(o,n))}))}}catch(s){this.log.error("could not inform topologies of updated peer after identify %p - %e",o,s)}}};var zu=class{log;components;transports;listeners;faultTolerance;started;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:transports"),this.components=e,this.started=!1,this.transports=Xe({name:"libp2p_transport_manager_transports",metrics:this.components.metrics}),this.listeners=Xe({name:"libp2p_transport_manager_listeners",metrics:this.components.metrics}),this.faultTolerance=t.faultTolerance??ks.FATAL_ALL}[Symbol.toStringTag]="@libp2p/transport-manager";add(e){let t=e[Symbol.toStringTag];if(t==null)throw new k("Transport must have a valid tag");if(this.transports.has(t))throw new k(`There is already a transport with the tag ${t}`);this.log("adding transport %s",t),this.transports.set(t,e),this.listeners.has(t)||this.listeners.set(t,[])}isStarted(){return this.started}start(){this.started=!0}async afterStart(){let e=this.components.addressManager.getListenAddrs();await this.listen(e)}async stop(){let e=[];for(let[t,n]of this.listeners)for(this.log("closing listeners for %s",t);n.length>0;){let o=n.pop();o!=null&&e.push(o.close())}await Promise.all(e),this.log("all listeners closed");for(let t of this.listeners.keys())this.listeners.set(t,[]);this.started=!1}async dial(e,t){let n=this.dialTransportForMultiaddr(e);if(n==null)throw new Tu(`No transport available for address ${String(e)}`);return t?.onProgress?.(new W("transport-manager:selected-transport",n[Symbol.toStringTag])),n.dial(e,{...t,upgrader:this.components.upgrader})}getAddrs(){let e=[];for(let t of this.listeners.values())for(let n of t)e=[...e,...n.getAddrs()];return e}getTransports(){return Array.of(...this.transports.values())}getListeners(){return Array.of(...this.listeners.values()).flat()}dialTransportForMultiaddr(e){for(let t of this.transports.values())if(t.dialFilter([e]).length>0)return t}listenTransportForMultiaddr(e){for(let t of this.transports.values())if(t.listenFilter([e]).length>0)return t}async listen(e){if(!this.isStarted())throw new yr("Not started");if(e==null||e.length===0){this.log("no addresses were provided for listening, this node is dial only");return}let t={errors:new Map,ipv4:{success:0,attempts:0},ipv6:{success:0,attempts:0}};e.forEach(s=>{t.errors.set(s.toString(),new Su)});let n=[];for(let[s,i]of this.transports.entries()){let a=i.listenFilter(e);for(let c of a){this.log("creating listener for %s on %a",s,c);let l=i.createListener({upgrader:this.components.upgrader}),u=this.listeners.get(s)??[];u==null&&(u=[],this.listeners.set(s,u)),u.push(l),l.addEventListener("listening",()=>{this.components.events.safeDispatchEvent("transport:listening",{detail:l})}),l.addEventListener("close",()=>{let f=u.findIndex(d=>d===l);u.splice(f,1),this.components.events.safeDispatchEvent("transport:close",{detail:l})}),dm.matches(c)?t.ipv4.attempts++:hm.matches(c)&&t.ipv6.attempts++,n.push(l.listen(c).then(()=>{t.errors.delete(c.toString()),dm.matches(c)&&t.ipv4.success++,hm.matches(c)&&t.ipv6.success++},f=>{throw this.log.error("transport %s could not listen on address %a - %e",s,c,f),t.errors.set(c.toString(),f),f}))}}let o=await Promise.allSettled(n);if(!(o.length>0&&o.every(s=>s.status==="fulfilled"))){if(this.ipv6Unsupported(t)){this.log("all IPv4 addresses succeed but all IPv6 failed");return}if(this.faultTolerance===ks.NO_FATAL){this.log("failed to listen on any address but fault tolerance allows this");return}throw new Iu(`Some configured addresses failed to be listened on, you may need to remove one or more listen addresses from your configuration or set \`transportManager.faultTolerance\` to NO_FATAL:
33
33
  ${[...t.errors.entries()].map(([s,i])=>`
34
- ${s}: ${`${Y_(i)}`.split(`
34
+ ${s}: ${`${J_(i)}`.split(`
35
35
  `).join(`
36
36
  `)}
37
- `).join("")}`)}}ipv6Unsupported(e){if(e.ipv4.attempts===0||e.ipv6.attempts===0)return!1;let t=e.ipv4.attempts===e.ipv4.success,n=e.ipv6.success===0;return t&&n}async remove(e){let t=this.listeners.get(e)??[];this.log.trace("removing transport %s",e);let n=[];for(this.log.trace("closing listeners for %s",e);t.length>0;){let o=t.pop();o!=null&&n.push(o.close())}await Promise.all(n),this.transports.delete(e),this.listeners.delete(e)}async removeAll(){let e=[];for(let t of this.transports.keys())e.push(this.remove(t));await Promise.all(e)}};function Y_(r){return r.stack!=null&&r.stack.trim()!==""?r.stack:r.message!=null?r.message:r.toString()}var dr="/multistream/1.0.0";var Z_=B(`
38
- `);async function aa(r,e){let n=(await r.read(e)).subarray();if(n.byteLength===0||n[n.length-1]!==Z_[0])throw new Sa("Missing newline");return M(n).trimEnd()}async function ys(r,e,t={}){if(e=Array.isArray(e)?[...e]:[e],e.length===0)throw new Error("At least one protocol must be specified");let n=r.log.newScope("mss:select"),o=xc(r,{...t,maxDataLength:1024});for(let s=0;s<e.length;s++){let i=e[s],a;if(s===0){n.trace('write ["%s", "%s"]',dr,i);let c=B(`${dr}
37
+ `).join("")}`)}}ipv6Unsupported(e){if(e.ipv4.attempts===0||e.ipv6.attempts===0)return!1;let t=e.ipv4.attempts===e.ipv4.success,n=e.ipv6.success===0;return t&&n}async remove(e){let t=this.listeners.get(e)??[];this.log.trace("removing transport %s",e);let n=[];for(this.log.trace("closing listeners for %s",e);t.length>0;){let o=t.pop();o!=null&&n.push(o.close())}await Promise.all(n),this.transports.delete(e),this.listeners.delete(e)}async removeAll(){let e=[];for(let t of this.transports.keys())e.push(this.remove(t));await Promise.all(e)}};function J_(r){return r.stack!=null&&r.stack.trim()!==""?r.stack:r.message!=null?r.message:r.toString()}var dr="/multistream/1.0.0";var Q_=B(`
38
+ `);async function ia(r,e){let n=(await r.read(e)).subarray();if(n.byteLength===0||n[n.length-1]!==Q_[0])throw new Aa("Missing newline");return M(n).trimEnd()}async function ys(r,e,t={}){if(e=Array.isArray(e)?[...e]:[e],e.length===0)throw new Error("At least one protocol must be specified");let n=r.log.newScope("mss:select"),o=xc(r,{...t,maxDataLength:1024});for(let s=0;s<e.length;s++){let i=e[s],a;if(s===0){n.trace('write ["%s", "%s"]',dr,i);let c=B(`${dr}
39
39
  `),l=B(`${i}
40
- `);if(await o.writeV([c,l],t),n.trace("reading multistream-select header"),a=await aa(o,t),n.trace('read "%s"',a),a!==dr){n.error("did not read multistream-select header from response");break}}else n.trace('write "%s"',i),await o.write(B(`${i}
41
- `),t);if(n.trace("reading protocol response"),a=await aa(o,t),n.trace('read "%s"',a),a===i)return n.trace('selected "%s" after negotiation',a),o.unwrap(),i}throw new Aa(`Protocol selection failed - could not negotiate ${e}`)}async function ws(r,e,t={}){e=Array.isArray(e)?e:[e];let n=r.log.newScope("mss:handle"),o=xc(r,{...t,maxDataLength:1024,maxLengthLength:2});for(;;){n.trace("reading incoming string");let s=await aa(o,t);if(n.trace('read "%s"',s),s===dr){n.trace('respond with "%s" for "%s"',dr,s),await o.write(B(`${dr}
40
+ `);if(await o.writeV([c,l],t),n.trace("reading multistream-select header"),a=await ia(o,t),n.trace('read "%s"',a),a!==dr){n.error("did not read multistream-select header from response");break}}else n.trace('write "%s"',i),await o.write(B(`${i}
41
+ `),t);if(n.trace("reading protocol response"),a=await ia(o,t),n.trace('read "%s"',a),a===i)return n.trace('selected "%s" after negotiation',a),o.unwrap(),i}throw new Ea(`Protocol selection failed - could not negotiate ${e}`)}async function ws(r,e,t={}){e=Array.isArray(e)?e:[e];let n=r.log.newScope("mss:handle"),o=xc(r,{...t,maxDataLength:1024,maxLengthLength:2});for(;;){n.trace("reading incoming string");let s=await ia(o,t);if(n.trace('read "%s"',s),s===dr){n.trace('respond with "%s" for "%s"',dr,s),await o.write(B(`${dr}
42
42
  `),t),n.trace('responded with "%s" for "%s"',dr,s);continue}if(e.includes(s))return n.trace('respond with "%s" for "%s"',s,s),await o.write(B(`${s}
43
43
  `),t),n.trace('responded with "%s" for "%s"',s,s),o.unwrap(),s;if(s==="ls"){let i=new se(...e.map(a=>Vc.single(B(`${a}
44
44
  `))),B(`
45
45
  `));n.trace('respond with "%s" for %s',e,s),await o.write(i,t),n.trace('responded with "%s" for %s',e,s);continue}n.trace('respond with "na" for "%s"',s),await o.write(B(`na
46
- `),t),n('responded with "na" for "%s"',s)}}var ng=class extends _e{id;remoteAddr;remotePeer;direction;timeline;direct;multiplexer;encryption;limits;log;maConn;muxer;components;outboundStreamProtocolNegotiationTimeout;inboundStreamProtocolNegotiationTimeout;closeTimeout;constructor(e,t){super(),this.components=e,this.id=t.id,this.remoteAddr=t.maConn.remoteAddr,this.remotePeer=t.remotePeer,this.direction=t.direction??"outbound",this.timeline=t.maConn.timeline,this.encryption=t.cryptoProtocol,this.limits=t.limits,this.maConn=t.maConn,this.log=t.maConn.log,this.outboundStreamProtocolNegotiationTimeout=t.outboundStreamProtocolNegotiationTimeout??1e4,this.inboundStreamProtocolNegotiationTimeout=t.inboundStreamProtocolNegotiationTimeout??1e4,this.closeTimeout=t.closeTimeout??1e3,this.direct=Km(t.maConn.remoteAddr),this.onIncomingStream=this.onIncomingStream.bind(this),this.remoteAddr.getComponents().find(n=>n.code===421)==null&&(this.remoteAddr=this.remoteAddr.encapsulate(`/p2p/${this.remotePeer}`)),t.muxer!=null&&(this.multiplexer=t.muxer.protocol,this.muxer=t.muxer,this.muxer.addEventListener("stream",this.onIncomingStream)),this.maConn.addEventListener("close",n=>{this.dispatchEvent(new Ca(n.local,n.error))})}[Symbol.toStringTag]="Connection";[yg]=!0;get streams(){return this.muxer?.streams??[]}get status(){return this.maConn.status}newStream=async(e,t={})=>{if(this.muxer==null)throw new fn("Connection is not multiplexed");if(this.muxer.status!=="open")throw new gn(`The connection muxer is "${this.muxer.status}" and not "open"`);if(this.maConn.status!=="open")throw new gn(`The connection is "${this.status}" and not "open"`);if(this.limits!=null&&t?.runOnLimitedConnection!==!0)throw new Is("Cannot open protocol stream on limited connection");Array.isArray(e)||(e=[e]),this.log.trace("starting new stream for protocols %s",e);let n=await this.muxer.createStream({...t,protocol:e.length===1?e[0]:void 0});this.log.trace("started new stream %s for protocols %s",n.id,e);try{if(t.signal==null){n.log("no abort signal was passed while trying to negotiate protocols %s falling back to default timeout",e);let a=AbortSignal.timeout(this.outboundStreamProtocolNegotiationTimeout);t={...t,signal:a}}n.protocol===""?(n.log.trace("selecting protocol from protocols %s",e),n.protocol=await ys(n,e,t),n.log("negotiated protocol %s",n.protocol)):n.log("pre-negotiated protocol %s",n.protocol);let o=Q_(n.protocol,this.components.registrar,t),s=vv(n.protocol,"outbound",this);if(s>o){let a=new _a(`Too many outbound protocol streams for protocol "${n.protocol}" - ${s}/${o}`);throw n.abort(a),a}await this.components.peerStore.merge(this.remotePeer,{protocols:[n.protocol]}),this.components.metrics?.trackProtocolStream(n);let i=this.components.registrar.getMiddleware(n.protocol);return await this.runMiddlewareChain(n,this,i)}catch(o){throw n.status==="open"?n.abort(o):this.log.error("could not create new outbound stream on connection %s %a for protocols %s - %e",this.direction==="inbound"?"from":"to",this.remoteAddr,e,o),o}};async onIncomingStream(e){let t=e.detail,n=AbortSignal.timeout(this.inboundStreamProtocolNegotiationTimeout);t.log("start protocol negotiation, timing out after %dms",this.inboundStreamProtocolNegotiationTimeout);try{if(t.protocol===""){let l=this.components.registrar.getProtocols();t.log.trace("selecting protocol from protocols %s",l),t.protocol=await ws(t,l,{signal:n}),t.log("negotiated protocol %s",t.protocol)}else t.log("pre-negotiated protocol %s",t.protocol);let o=J_(t.protocol,this.components.registrar);if(vv(t.protocol,"inbound",this)>o)throw new ka(`Too many inbound protocol streams for protocol "${t.protocol}" - limit ${o}`);await this.components.peerStore.merge(this.remotePeer,{protocols:[t.protocol]},{signal:n}),this.components.metrics?.trackProtocolStream(t);let{handler:i,options:a}=this.components.registrar.getHandler(t.protocol);if(this.limits!=null&&a.runOnLimitedConnection!==!0)throw new Is("Cannot open protocol stream on limited connection");let c=this.components.registrar.getMiddleware(t.protocol);c.push(async(l,u,f)=>{await i(l,u),f(l,u)}),await this.runMiddlewareChain(t,this,c)}catch(o){t.abort(o)}}async runMiddlewareChain(e,t,n){for(let o=0;o<n.length;o++){let s=n[o];e.log.trace("running middleware",o,s),await new Promise((i,a)=>{try{let c=s(e,t,(l,u)=>{e=l,t=u,i()});c instanceof Promise&&c.catch(a)}catch(c){a(c)}}),e.log.trace("ran middleware",o,s)}return e}async close(e={}){if(this.log("closing connection to %a",this.remoteAddr),e.signal==null){let t=AbortSignal.timeout(this.closeTimeout);e={...e,signal:t}}await this.muxer?.close(e),await this.maConn.close(e)}abort(e){this.muxer?.abort(e),this.maConn.abort(e)}};function Ev(r,e){return new ng(r,e)}function J_(r,e){try{let{options:t}=e.getHandler(r);if(t.maxInboundStreams!=null)return t.maxInboundStreams}catch(t){if(t.name!=="UnhandledProtocolError")throw t}return eg}function Q_(r,e,t={}){try{let{options:n}=e.getHandler(r);if(n.maxOutboundStreams!=null)return n.maxOutboundStreams}catch(n){if(n.name!=="UnhandledProtocolError")throw n}return t.maxOutboundStreams??tg}function vv(r,e,t){let n=0;return t.streams.forEach(o=>{o.direction===e&&o.protocol===r&&n++}),n}var zu=class{components;connectionEncrypters;streamMuxers;inboundUpgradeTimeout;inboundStreamProtocolNegotiationTimeout;outboundStreamProtocolNegotiationTimeout;events;metrics;connectionCloseTimeout;constructor(e,t){this.components=e,this.connectionEncrypters=Je({name:"libp2p_upgrader_connection_encrypters",metrics:this.components.metrics}),t.connectionEncrypters.forEach(n=>{this.connectionEncrypters.set(n.protocol,n)}),this.streamMuxers=Je({name:"libp2p_upgrader_stream_multiplexers",metrics:this.components.metrics}),t.streamMuxers.forEach(n=>{this.streamMuxers.set(n.protocol,n)}),this.inboundUpgradeTimeout=t.inboundUpgradeTimeout??1e4,this.inboundStreamProtocolNegotiationTimeout=t.inboundStreamProtocolNegotiationTimeout??1e4,this.outboundStreamProtocolNegotiationTimeout=t.outboundStreamProtocolNegotiationTimeout??1e4,this.connectionCloseTimeout=t.connectionCloseTimeout??1e3,this.events=e.events,this.metrics={dials:e.metrics?.registerCounterGroup("libp2p_connection_manager_dials_total"),errors:e.metrics?.registerCounterGroup("libp2p_connection_manager_dial_errors_total"),inboundErrors:e.metrics?.registerCounterGroup("libp2p_connection_manager_dials_inbound_errors_total"),outboundErrors:e.metrics?.registerCounterGroup("libp2p_connection_manager_dials_outbound_errors_total")}}[Symbol.toStringTag]="@libp2p/upgrader";async shouldBlockConnection(e,...t){let n=this.components.connectionGater[e];if(n==null)return;if(await n.apply(this.components.connectionGater,t)===!0)throw new ku(`The multiaddr connection is blocked by gater.${e}`)}createInboundAbortSignal(e){let t=pe([AbortSignal.timeout(this.inboundUpgradeTimeout),e]);return t}async upgradeInbound(e,t){let n=!1,o=this.createInboundAbortSignal(t.signal);try{if(this.metrics.dials?.increment({inbound:!0}),n=this.components.connectionManager.acceptIncomingConnection(e),!n)throw new _u("Connection denied");await Xe(this.shouldBlockConnection("denyInboundConnection",e),o),await this._performUpgrade(e,"inbound",{...t,signal:o})}catch(s){throw this.metrics.errors?.increment({inbound:!0}),this.metrics.inboundErrors?.increment({[s.name??"Error"]:!0}),s}finally{o.clear(),n&&this.components.connectionManager.afterUpgradeInbound()}}async upgradeOutbound(e,t){try{this.metrics.dials?.increment({outbound:!0});let n=e.remoteAddr.getComponents().findLast(i=>i.code===421)?.value,o;n!=null&&(o=Tt(n),await Xe(this.shouldBlockConnection("denyOutboundConnection",o,e),t.signal));let s="outbound";return t.initiator===!1&&(s="inbound"),await this._performUpgrade(e,s,t)}catch(n){throw this.metrics.errors?.increment({outbound:!0}),this.metrics.outboundErrors?.increment({[n.name??"Error"]:!0}),n}}async _performUpgrade(e,t,n){let o=e,s,i,a,c,l=`${parseInt(String(Math.random()*1e9)).toString(36)}${Date.now()}`;if(e.log=e.log.newScope(`${t}:${l}`),this.components.metrics?.trackMultiaddrConnection(e),e.log.trace("starting the %s connection upgrade",t),n?.skipProtection!==!0){let f=this.components.connectionProtector;f!=null&&(e.log("protecting the %s connection",t),o=await f.protect(o,n))}try{if(eC(n)){if(n.remotePeer==null)throw new $r(`${t} connection that skipped encryption must have a peer id`);c="native",s=n.remotePeer}else{let f=e.remoteAddr.getComponents().findLast(h=>h.code===421)?.value,d;f!=null&&(d=Tt(f)),n?.onProgress?.(new W(`upgrader:encrypt-${t}-connection`)),{connection:o,remotePeer:s,protocol:c,streamMuxer:i}=await(t==="inbound"?this._encryptInbound(o,{...n,remotePeer:d}):this._encryptOutbound(o,{...n,remotePeer:d}))}if(s.equals(this.components.peerId)){let f=new fo("Can not dial self");throw e.abort(f),f}await this.shouldBlockConnection(t==="inbound"?"denyInboundEncryptedConnection":"denyOutboundEncryptedConnection",s,e),n?.muxerFactory!=null?i=n.muxerFactory:i==null&&this.streamMuxers.size>0&&(n?.onProgress?.(new W(`upgrader:multiplex-${t}-connection`)),i=await(t==="inbound"?this._multiplexInbound(o,this.streamMuxers,n):this._multiplexOutbound(o,this.streamMuxers,n)))}catch(f){throw e.log.error("failed to upgrade %s connection %s %a - %e",t,t==="inbound"?"from":"to",e.remoteAddr,f),f}i!=null&&(e.log("create muxer %s",i.protocol),a=i.createStreamMuxer(o)),await this.shouldBlockConnection(t==="inbound"?"denyInboundUpgradedConnection":"denyOutboundUpgradedConnection",s,e);let u=this._createConnection({id:l,cryptoProtocol:c,direction:t,maConn:e,stream:o,muxer:a,remotePeer:s,limits:n?.limits,closeTimeout:this.connectionCloseTimeout});return u.log("successfully upgraded connection"),u}_createConnection(e){let t=Ev(this.components,{...e,outboundStreamProtocolNegotiationTimeout:this.outboundStreamProtocolNegotiationTimeout,inboundStreamProtocolNegotiationTimeout:this.inboundStreamProtocolNegotiationTimeout});return t.addEventListener("close",()=>{this.events.safeDispatchEvent("connection:close",{detail:t})}),this.events.safeDispatchEvent("connection:open",{detail:t}),t}async _encryptInbound(e,t){let n=Array.from(this.connectionEncrypters.keys());try{let o=await ws(e,n,t),s=this.connectionEncrypters.get(o);if(s==null)throw new so(`no crypto module found for ${o}`);return e.log("encrypting inbound connection using %s",o),{...await s.secureInbound(e,t),protocol:o}}catch(o){throw new so(o.message)}}async _encryptOutbound(e,t){let n=Array.from(this.connectionEncrypters.keys());try{e.log.trace("selecting encrypter from %s",n);let o=await ys(e,n,t),s=this.connectionEncrypters.get(o);if(s==null)throw new so(`no crypto module found for ${o}`);return e.log("encrypting outbound connection using %s",o),{...await s.secureOutbound(e,t),protocol:o}}catch(o){throw new so(o.message)}}async _multiplexOutbound(e,t,n){let o=Array.from(t.keys());e.log("outbound selecting muxer %s",o);try{e.log.trace("selecting stream muxer from %s",o);let s=await ys(e,o,n),i=t.get(s);if(i==null)throw new fn(`No muxer configured for protocol "${s}"`);return e.log("selected %s as muxer protocol",s),i}catch(s){throw e.log.error("error multiplexing outbound connection - %e",s),new fn(String(s))}}async _multiplexInbound(e,t,n){let o=Array.from(t.keys());e.log("inbound handling muxers %s",o);try{e.log.trace("selecting stream muxer from %s",o);let s=await ws(e,o,n),i=t.get(s);if(i==null)throw new fn(`No muxer configured for protocol "${s}"`);return e.log("selected %s as muxer protocol",s),i}catch(s){throw e.log.error("error multiplexing inbound connection - %e",s),s}}getConnectionEncrypters(){return this.connectionEncrypters}getStreamMuxers(){return this.streamMuxers}};function eC(r){return r.skipEncryption===!0}var Gu="3.1.2",Wu="js-libp2p";function ju(r,e){return`${r??Wu}/${e??Gu} browser/${globalThis.navigator.userAgent}`}var ca=class extends _e{peerId;peerStore;contentRouting;peerRouting;metrics;services;logger;status;components;log;constructor(e){super(),this.status="stopped";let t=new _e,n=t.dispatchEvent.bind(t);t.dispatchEvent=l=>{let u=n(l),f=this.dispatchEvent(new CustomEvent(l.type,{detail:l.detail}));return u||f},this.peerId=e.peerId,this.logger=e.logger??fr(),this.log=this.logger.forComponent("libp2p"),this.services={};let o=e.nodeInfo?.name??Wu,s=e.nodeInfo?.version??Gu,i=this.components=iv({peerId:e.peerId,privateKey:e.privateKey,nodeInfo:{name:o,version:s,userAgent:e.nodeInfo?.userAgent??ju(o,s)},logger:this.logger,events:t,datastore:e.datastore??new no,connectionGater:cv(e.connectionGater),dns:e.dns});e.metrics!=null&&(this.metrics=this.configureComponent("metrics",e.metrics(this.components))),this.peerStore=this.configureComponent("peerStore",tv(i,{addressFilter:this.components.connectionGater.filterMultiaddrForPeer,...e.peerStore})),i.events.addEventListener("peer:update",l=>{if(l.detail.previous==null){let u={id:l.detail.peer.id,multiaddrs:l.detail.peer.addresses.map(f=>f.multiaddr)};i.events.safeDispatchEvent("peer:discovery",{detail:u})}}),e.connectionProtector!=null&&this.configureComponent("connectionProtector",e.connectionProtector(i)),this.components.upgrader=new zu(this.components,{connectionEncrypters:(e.connectionEncrypters??[]).map((l,u)=>this.configureComponent(`connection-encryption-${u}`,l(this.components))),streamMuxers:(e.streamMuxers??[]).map((l,u)=>this.configureComponent(`stream-muxers-${u}`,l(this.components))),inboundUpgradeTimeout:e.connectionManager?.inboundUpgradeTimeout,inboundStreamProtocolNegotiationTimeout:e.connectionManager?.inboundStreamProtocolNegotiationTimeout,outboundStreamProtocolNegotiationTimeout:e.connectionManager?.outboundStreamProtocolNegotiationTimeout,connectionCloseTimeout:e.connectionManager?.connectionCloseTimeout}),this.configureComponent("transportManager",new qu(this.components,e.transportManager)),this.configureComponent("connectionManager",new Ou(this.components,e.connectionManager)),e.connectionMonitor?.enabled!==!1&&this.configureComponent("connectionMonitor",new Uu(this.components,e.connectionMonitor)),this.configureComponent("registrar",new Hu(this.components)),this.configureComponent("addressManager",new yu(this.components,e.addresses));let a=(e.peerRouters??[]).map((l,u)=>this.configureComponent(`peer-router-${u}`,l(this.components)));this.peerRouting=this.components.peerRouting=this.configureComponent("peerRouting",new Vu(this.components,{routers:a}));let c=(e.contentRouters??[]).map((l,u)=>this.configureComponent(`content-router-${u}`,l(this.components)));if(this.contentRouting=this.components.contentRouting=this.configureComponent("contentRouting",new Fu(this.components,{routers:c})),this.configureComponent("randomWalk",new Ku(this.components)),(e.peerDiscovery??[]).forEach((l,u)=>{this.configureComponent(`peer-discovery-${u}`,l(this.components)).addEventListener("peer",d=>{this.#e(d)})}),e.transports?.forEach((l,u)=>{this.components.transportManager.add(this.configureComponent(`transport-${u}`,l(this.components)))}),e.services!=null)for(let l of Object.keys(e.services)){let u=e.services[l],f=u(this.components);if(f==null){this.log.error("service factory %s returned null or undefined instance",l);continue}this.services[l]=f,this.configureComponent(l,f),f[mn]!=null&&(this.log("registering service %s for content routing",l),c.push(f[mn])),f[yn]!=null&&(this.log("registering service %s for peer routing",l),a.push(f[yn])),f[qf]!=null&&(this.log("registering service %s for peer discovery",l),f[qf].addEventListener?.("peer",d=>{this.#e(d)}))}av(i)}configureComponent(e,t){return t==null&&this.log.error("component %s was null or undefined",e),this.components[e]=t,t}async start(){if(this.status==="stopped"){this.status="starting",this.log("libp2p is starting");try{await this.components.beforeStart?.(),await this.components.start(),await this.components.afterStart?.(),this.status="started",this.safeDispatchEvent("start",{detail:this}),this.log("libp2p has started with peer id %p",this.peerId)}catch(e){throw this.log.error("an error occurred starting libp2p - %e",e),this.status="started",await this.stop(),e}}}async stop(){this.status==="started"&&(this.log("libp2p is stopping"),this.status="stopping",await this.components.beforeStop?.(),await this.components.stop(),await this.components.afterStop?.(),this.status="stopped",this.safeDispatchEvent("stop",{detail:this}),this.log("libp2p has stopped"))}getConnections(e){return this.components.connectionManager.getConnections(e)}getDialQueue(){return this.components.connectionManager.getDialQueue()}getPeers(){let e=new Yn;for(let t of this.components.connectionManager.getConnections())e.add(t.remotePeer);return Array.from(e)}async dial(e,t={}){return this.components.connectionManager.openConnection(e,{priority:75,...t})}async dialProtocol(e,t,n={}){if(t==null)throw new k("no protocols were provided to open a stream");if(t=Array.isArray(t)?t:[t],t.length===0)throw new k("no protocols were provided to open a stream");return this.components.connectionManager.openStream(e,t,n)}getMultiaddrs(){return this.components.addressManager.getAddresses()}getProtocols(){return this.components.registrar.getProtocols()}async hangUp(e,t={}){nn(e)&&(e=Tt(e.getComponents().findLast(n=>n.code===421)?.value??"")),await this.components.connectionManager.closeConnections(e,t)}async getPublicKey(e,t={}){if(this.log("getPublicKey %p",e),e.publicKey!=null)return e.publicKey;try{let i=await this.peerStore.get(e,t);if(i.id.publicKey!=null)return i.id.publicKey}catch(i){if(i.name!=="NotFoundError")throw i}let n=Ce([B("/pk/"),e.toMultihash().bytes]),o=await this.contentRouting.get(n,t),s=en(o);return await this.peerStore.patch(e,{publicKey:s},t),s}async handle(e,t,n){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async o=>{await this.components.registrar.handle(o,t,n)}))}async unhandle(e,t){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async n=>{await this.components.registrar.unhandle(n,t)}))}async register(e,t,n){return this.components.registrar.register(e,t,n)}unregister(e){this.components.registrar.unregister(e)}use(e,t){this.components.registrar.use(e,Array.isArray(t)?t:[t])}unuse(e){this.components.registrar.unuse(e)}async isDialable(e,t={}){return this.components.connectionManager.isDialable(e,t)}#e(e){let{detail:t}=e;if(t.id.toString()===this.peerId.toString()){this.log.error("peer discovery mechanism discovered self");return}this.components.peerStore.merge(t.id,{multiaddrs:t.multiaddrs}).catch(n=>{this.log.error("could not update multiaddrs of discovered peer - %e",n)})}};async function Sv(r={}){r.privateKey??=await Ja("Ed25519");let e=new ca({...await $x(r),peerId:pb(r.privateKey)});return r.start!==!1&&await e.start(),e}var tC=["dial","dialProtocol","hangUp","handle","unhandle","getMultiaddrs","getProtocols"];function Iv(r){return r==null?!1:r instanceof ca?!0:tC.every(e=>typeof r[e]=="function")}var SE=pn(Nv(),1);var og={keyLength:64,iterationCount:1e4,salt:"you should override this value with a crypto secure random number",hash:"sha2-512"};var bs={};Ae(bs,{create:()=>pC,derivedEmptyPasswordKey:()=>Yu});var Yu={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function pC(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,o=r?.digest??"SHA-256",s=r?.saltLength??16,i=r?.iterations??32767,a=Se.get();t*=8;async function c(f,d){let h=a.getRandomValues(new Uint8Array(s)),p=a.getRandomValues(new Uint8Array(n)),g={name:e,iv:p};typeof d=="string"&&(d=B(d));let w;if(d.length===0){w=await a.subtle.importKey("jwk",Yu,{name:"AES-GCM"},!0,["encrypt"]);try{let T={name:"PBKDF2",salt:h,iterations:i,hash:{name:o}},S=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);w=await a.subtle.deriveKey(T,S,{name:e,length:t},!0,["encrypt"])}catch{w=await a.subtle.importKey("jwk",Yu,{name:"AES-GCM"},!0,["encrypt"])}}else{let T={name:"PBKDF2",salt:h,iterations:i,hash:{name:o}},S=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);w=await a.subtle.deriveKey(T,S,{name:e,length:t},!0,["encrypt"])}let b=await a.subtle.encrypt(g,w,f);return Ce([h,g.iv,new Uint8Array(b)])}async function l(f,d){let h=f.subarray(0,s),p=f.subarray(s,s+n),g=f.subarray(s+n),w={name:e,iv:p};typeof d=="string"&&(d=B(d));let b;if(d.length===0)try{let S={name:"PBKDF2",salt:h,iterations:i,hash:{name:o}},D=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(S,D,{name:e,length:t},!0,["decrypt"])}catch{b=await a.subtle.importKey("jwk",Yu,{name:"AES-GCM"},!0,["decrypt"])}else{let S={name:"PBKDF2",salt:h,iterations:i,hash:{name:o}},D=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(S,D,{name:e,length:t},!0,["decrypt"])}let T=await a.subtle.decrypt(w,b,g);return new Uint8Array(T)}return{encrypt:c,decrypt:l}}var re=pn(Rv());function io(r,e){let t=0;if(r.length===1)return r[0];for(let n=r.length-1;n>=0;n--)t+=r[r.length-1-n]*Math.pow(2,e*n);return t}function dn(r,e,t=-1){let n=t,o=r,s=0,i=Math.pow(2,e);for(let a=1;a<8;a++){if(r<i){let c;if(n<0)c=new ArrayBuffer(a),s=a;else{if(n<a)return new ArrayBuffer(0);c=new ArrayBuffer(n),s=n}let l=new Uint8Array(c);for(let u=a-1;u>=0;u--){let f=Math.pow(2,u*e);l[s-u-1]=Math.floor(o/f),o-=l[s-u-1]*f}return c}i*=Math.pow(2,e)}return new ArrayBuffer(0)}function Ju(...r){let e=0,t=0;for(let s of r)e+=s.length;let n=new ArrayBuffer(e),o=new Uint8Array(n);for(let s of r)o.set(s,t),t+=s.length;return o}function ig(){let r=new Uint8Array(this.valueHex);if(this.valueHex.byteLength>=2){let a=r[0]===255&&r[1]&128,c=r[0]===0&&(r[1]&128)===0;(a||c)&&this.warnings.push("Needlessly long format")}let e=new ArrayBuffer(this.valueHex.byteLength),t=new Uint8Array(e);for(let a=0;a<this.valueHex.byteLength;a++)t[a]=0;t[0]=r[0]&128;let n=io(t,8),o=new ArrayBuffer(this.valueHex.byteLength),s=new Uint8Array(o);for(let a=0;a<this.valueHex.byteLength;a++)s[a]=r[a];return s[0]&=127,io(s,8)-n}function Mv(r){let e=r<0?r*-1:r,t=128;for(let n=1;n<8;n++){if(e<=t){if(r<0){let i=t-e,a=dn(i,8,n),c=new Uint8Array(a);return c[0]|=128,a}let o=dn(e,8,n),s=new Uint8Array(o);if(s[0]&128){let i=o.slice(0),a=new Uint8Array(i);o=new ArrayBuffer(o.byteLength+1),s=new Uint8Array(o);for(let c=0;c<i.byteLength;c++)s[c+1]=a[c];s[0]=0}return o}t*=Math.pow(2,8)}return new ArrayBuffer(0)}function Ov(r,e){if(r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let o=0;o<t.length;o++)if(t[o]!==n[o])return!1;return!0}function ut(r,e){let t=r.toString(10);if(e<t.length)return"";let n=e-t.length,o=new Array(n);for(let i=0;i<n;i++)o[i]="0";return o.join("").concat(t)}var Kq=Math.log(2);function Qu(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function ag(r){let e=0,t=0;for(let o=0;o<r.length;o++){let s=r[o];e+=s.byteLength}let n=new Uint8Array(e);for(let o=0;o<r.length;o++){let s=r[o];n.set(new Uint8Array(s),t),t+=s.byteLength}return n.buffer}function Ur(r,e,t,n){return e instanceof Uint8Array?e.byteLength?t<0?(r.error="Wrong parameter: inputOffset less than zero",!1):n<0?(r.error="Wrong parameter: inputLength less than zero",!1):e.byteLength-t-n<0?(r.error="End of input reached before message was fully decoded (inconsistent offset and length values)",!1):!0:(r.error="Wrong parameter: inputBuffer has zero length",!1):(r.error="Wrong parameter: inputBuffer must be 'Uint8Array'",!1)}var fa=class{constructor(){this.items=[]}write(e){this.items.push(e)}final(){return ag(this.items)}},la=[new Uint8Array([1])],Uv="0123456789";var vs="",mr=new ArrayBuffer(0),cg=new Uint8Array(0),da="EndOfContent",$v="OCTET STRING",Vv="BIT STRING";function Fr(r){var e;return e=class extends r{get valueHex(){return this.valueHexView.slice().buffer}set valueHex(n){this.valueHexView=new Uint8Array(n)}constructor(...n){var o;super(...n);let s=n[0]||{};this.isHexOnly=(o=s.isHexOnly)!==null&&o!==void 0?o:!1,this.valueHexView=s.valueHex?re.BufferSourceConverter.toUint8Array(s.valueHex):cg}fromBER(n,o,s){let i=n instanceof ArrayBuffer?new Uint8Array(n):n;if(!Ur(this,i,o,s))return-1;let a=o+s;return this.valueHexView=i.subarray(o,a),this.valueHexView.length?(this.blockLength=s,a):(this.warnings.push("Zero buffer length"),o)}toBER(n=!1){return this.isHexOnly?n?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.byteLength===this.valueHexView.buffer.byteLength?this.valueHexView.buffer:this.valueHexView.slice().buffer:(this.error="Flag 'isHexOnly' is not set, abort",mr)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:re.Convert.ToHex(this.valueHexView)}}},e.NAME="hexBlock",e}var Nr=class{static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(e){this.valueBeforeDecodeView=new Uint8Array(e)}constructor({blockLength:e=0,error:t=vs,warnings:n=[],valueBeforeDecode:o=cg}={}){this.blockLength=e,this.error=t,this.warnings=n,this.valueBeforeDecodeView=re.BufferSourceConverter.toUint8Array(o)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:re.Convert.ToHex(this.valueBeforeDecodeView)}}};Nr.NAME="baseBlock";var tt=class extends Nr{fromBER(e,t,n){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}toBER(e,t){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}};tt.NAME="valueBlock";var ef=class extends Fr(Nr){constructor({idBlock:e={}}={}){var t,n,o,s;super(),e?(this.isHexOnly=(t=e.isHexOnly)!==null&&t!==void 0?t:!1,this.valueHexView=e.valueHex?re.BufferSourceConverter.toUint8Array(e.valueHex):cg,this.tagClass=(n=e.tagClass)!==null&&n!==void 0?n:-1,this.tagNumber=(o=e.tagNumber)!==null&&o!==void 0?o:-1,this.isConstructed=(s=e.isConstructed)!==null&&s!==void 0?s:!1):(this.tagClass=-1,this.tagNumber=-1,this.isConstructed=!1)}toBER(e=!1){let t=0;switch(this.tagClass){case 1:t|=0;break;case 2:t|=64;break;case 3:t|=128;break;case 4:t|=192;break;default:return this.error="Unknown tag class",mr}if(this.isConstructed&&(t|=32),this.tagNumber<31&&!this.isHexOnly){let o=new Uint8Array(1);if(!e){let s=this.tagNumber;s&=31,t|=s,o[0]=t}return o.buffer}if(!this.isHexOnly){let o=dn(this.tagNumber,7),s=new Uint8Array(o),i=o.byteLength,a=new Uint8Array(i+1);if(a[0]=t|31,!e){for(let c=0;c<i-1;c++)a[c+1]=s[c]|128;a[i]=s[i-1]}return a.buffer}let n=new Uint8Array(this.valueHexView.byteLength+1);if(n[0]=t|31,!e){let o=this.valueHexView;for(let s=0;s<o.length-1;s++)n[s+1]=o[s]|128;n[this.valueHexView.byteLength]=o[o.length-1]}return n.buffer}fromBER(e,t,n){let o=re.BufferSourceConverter.toUint8Array(e);if(!Ur(this,o,t,n))return-1;let s=o.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;switch(s[0]&192){case 0:this.tagClass=1;break;case 64:this.tagClass=2;break;case 128:this.tagClass=3;break;case 192:this.tagClass=4;break;default:return this.error="Unknown tag class",-1}this.isConstructed=(s[0]&32)===32,this.isHexOnly=!1;let a=s[0]&31;if(a!==31)this.tagNumber=a,this.blockLength=1;else{let c=1,l=this.valueHexView=new Uint8Array(255),u=255;for(;s[c]&128;){if(l[c-1]=s[c]&127,c++,c>=s.length)return this.error="End of input reached before message was fully decoded",-1;if(c===u){u+=255;let d=new Uint8Array(u);for(let h=0;h<l.length;h++)d[h]=l[h];l=this.valueHexView=new Uint8Array(u)}}this.blockLength=c+1,l[c-1]=s[c]&127;let f=new Uint8Array(c);for(let d=0;d<c;d++)f[d]=l[d];l=this.valueHexView=new Uint8Array(c),l.set(f),this.blockLength<=9?this.tagNumber=io(l,7):(this.isHexOnly=!0,this.warnings.push("Tag too long, represented as hex-coded"))}if(this.tagClass===1&&this.isConstructed)switch(this.tagNumber){case 1:case 2:case 5:case 6:case 9:case 13:case 14:case 23:case 24:case 31:case 32:case 33:case 34:return this.error="Constructed encoding used for primitive type",-1}return t+this.blockLength}toJSON(){return{...super.toJSON(),tagClass:this.tagClass,tagNumber:this.tagNumber,isConstructed:this.isConstructed}}};ef.NAME="identificationBlock";var tf=class extends Nr{constructor({lenBlock:e={}}={}){var t,n,o;super(),this.isIndefiniteForm=(t=e.isIndefiniteForm)!==null&&t!==void 0?t:!1,this.longFormUsed=(n=e.longFormUsed)!==null&&n!==void 0?n:!1,this.length=(o=e.length)!==null&&o!==void 0?o:0}fromBER(e,t,n){let o=re.BufferSourceConverter.toUint8Array(e);if(!Ur(this,o,t,n))return-1;let s=o.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;if(s[0]===255)return this.error="Length block 0xFF is reserved by standard",-1;if(this.isIndefiniteForm=s[0]===128,this.isIndefiniteForm)return this.blockLength=1,t+this.blockLength;if(this.longFormUsed=!!(s[0]&128),this.longFormUsed===!1)return this.length=s[0],this.blockLength=1,t+this.blockLength;let i=s[0]&127;if(i>8)return this.error="Too big integer",-1;if(i+1>s.length)return this.error="End of input reached before message was fully decoded",-1;let a=t+1,c=o.subarray(a,a+i);return c[i-1]===0&&this.warnings.push("Needlessly long encoded length"),this.length=io(c,8),this.longFormUsed&&this.length<=127&&this.warnings.push("Unnecessary usage of long length form"),this.blockLength=i+1,t+this.blockLength}toBER(e=!1){let t,n;if(this.length>127&&(this.longFormUsed=!0),this.isIndefiniteForm)return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=128),t;if(this.longFormUsed){let o=dn(this.length,8);if(o.byteLength>127)return this.error="Too big length",mr;if(t=new ArrayBuffer(o.byteLength+1),e)return t;let s=new Uint8Array(o);n=new Uint8Array(t),n[0]=o.byteLength|128;for(let i=0;i<o.byteLength;i++)n[i+1]=s[i];return t}return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=this.length),t}toJSON(){return{...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,longFormUsed:this.longFormUsed,length:this.length}}};tf.NAME="lengthBlock";var U={},He=class extends Nr{constructor({name:e=vs,optional:t=!1,primitiveSchema:n,...o}={},s){super(o),this.name=e,this.optional=t,n&&(this.primitiveSchema=n),this.idBlock=new ef(o),this.lenBlock=new tf(o),this.valueBlock=s?new s(o):new tt(o)}fromBER(e,t,n){let o=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return o===-1?(this.error=this.valueBlock.error,o):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),o)}toBER(e,t){let n=t||new fa;t||Kv(this);let o=this.idBlock.toBER(e);if(n.write(o),this.lenBlock.isIndefiniteForm)n.write(new Uint8Array([128]).buffer),this.valueBlock.toBER(e,n),n.write(new ArrayBuffer(2));else{let s=this.valueBlock.toBER(e);this.lenBlock.length=s.byteLength;let i=this.lenBlock.toBER(e);n.write(i),n.write(s)}return t?mr:n.final()}toJSON(){let e={...super.toJSON(),idBlock:this.idBlock.toJSON(),lenBlock:this.lenBlock.toJSON(),valueBlock:this.valueBlock.toJSON(),name:this.name,optional:this.optional};return this.primitiveSchema&&(e.primitiveSchema=this.primitiveSchema.toJSON()),e}toString(e="ascii"){return e==="ascii"?this.onAsciiEncoding():re.Convert.ToHex(this.toBER())}onAsciiEncoding(){let e=this.constructor.NAME,t=re.Convert.ToHex(this.valueBlock.valueBeforeDecodeView);return`${e} : ${t}`}isEqual(e){if(this===e)return!0;if(!(e instanceof this.constructor))return!1;let t=this.toBER(),n=e.toBER();return Ov(t,n)}};He.NAME="BaseBlock";function Kv(r){var e;if(r instanceof U.Constructed)for(let t of r.valueBlock.value)Kv(t)&&(r.lenBlock.isIndefiniteForm=!0);return!!(!((e=r.lenBlock)===null||e===void 0)&&e.isIndefiniteForm)}var rf=class extends He{getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}constructor({value:e=vs,...t}={},n){super(t,n),e&&this.fromString(e)}fromBER(e,t,n){let o=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return o===-1?(this.error=this.valueBlock.error,o):(this.fromBuffer(this.valueBlock.valueHexView),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),o)}onAsciiEncoding(){return`${this.constructor.NAME} : '${this.valueBlock.value}'`}};rf.NAME="BaseStringBlock";var nf=class extends Fr(tt){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}};nf.NAME="PrimitiveValueBlock";var Hv,of=class extends He{constructor(e={}){super(e,nf),this.idBlock.isConstructed=!1}};Hv=of;U.Primitive=Hv;of.NAME="PRIMITIVE";function AC(r,e){if(r instanceof e)return r;let t=new e;return t.idBlock=r.idBlock,t.lenBlock=r.lenBlock,t.warnings=r.warnings,t.valueBeforeDecodeView=r.valueBeforeDecodeView,t}function Ff(r,e=0,t=r.length){let n=e,o=new He({},tt),s=new Nr;if(!Ur(s,r,e,t))return o.error=s.error,{offset:-1,result:o};if(!r.subarray(e,e+t).length)return o.error="Zero buffer length",{offset:-1,result:o};let a=o.idBlock.fromBER(r,e,t);if(o.idBlock.warnings.length&&o.warnings.concat(o.idBlock.warnings),a===-1)return o.error=o.idBlock.error,{offset:-1,result:o};if(e=a,t-=o.idBlock.blockLength,a=o.lenBlock.fromBER(r,e,t),o.lenBlock.warnings.length&&o.warnings.concat(o.lenBlock.warnings),a===-1)return o.error=o.lenBlock.error,{offset:-1,result:o};if(e=a,t-=o.lenBlock.blockLength,!o.idBlock.isConstructed&&o.lenBlock.isIndefiniteForm)return o.error="Indefinite length form used for primitive encoding form",{offset:-1,result:o};let c=He;switch(o.idBlock.tagClass){case 1:if(o.idBlock.tagNumber>=37&&o.idBlock.isHexOnly===!1)return o.error="UNIVERSAL 37 and upper tags are reserved by ASN.1 standard",{offset:-1,result:o};switch(o.idBlock.tagNumber){case 0:if(o.idBlock.isConstructed&&o.lenBlock.length>0)return o.error="Type [UNIVERSAL 0] is reserved",{offset:-1,result:o};c=U.EndOfContent;break;case 1:c=U.Boolean;break;case 2:c=U.Integer;break;case 3:c=U.BitString;break;case 4:c=U.OctetString;break;case 5:c=U.Null;break;case 6:c=U.ObjectIdentifier;break;case 10:c=U.Enumerated;break;case 12:c=U.Utf8String;break;case 13:c=U.RelativeObjectIdentifier;break;case 14:c=U.TIME;break;case 15:return o.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:o};case 16:c=U.Sequence;break;case 17:c=U.Set;break;case 18:c=U.NumericString;break;case 19:c=U.PrintableString;break;case 20:c=U.TeletexString;break;case 21:c=U.VideotexString;break;case 22:c=U.IA5String;break;case 23:c=U.UTCTime;break;case 24:c=U.GeneralizedTime;break;case 25:c=U.GraphicString;break;case 26:c=U.VisibleString;break;case 27:c=U.GeneralString;break;case 28:c=U.UniversalString;break;case 29:c=U.CharacterString;break;case 30:c=U.BmpString;break;case 31:c=U.DATE;break;case 32:c=U.TimeOfDay;break;case 33:c=U.DateTime;break;case 34:c=U.Duration;break;default:{let l=o.idBlock.isConstructed?new U.Constructed:new U.Primitive;l.idBlock=o.idBlock,l.lenBlock=o.lenBlock,l.warnings=o.warnings,o=l}}break;case 2:case 3:case 4:default:c=o.idBlock.isConstructed?U.Constructed:U.Primitive}return o=AC(o,c),a=o.fromBER(r,e,o.lenBlock.isIndefiniteForm?t:o.lenBlock.length),o.valueBeforeDecodeView=r.subarray(n,n+o.blockLength),{offset:a,result:o}}function $f(r){if(!r.byteLength){let e=new He({},tt);return e.error="Input buffer has zero length",{offset:-1,result:e}}return Ff(re.BufferSourceConverter.toUint8Array(r).slice(),0,r.byteLength)}function SC(r,e){return r?1:e}var hr=class extends tt{constructor({value:e=[],isIndefiniteForm:t=!1,...n}={}){super(n),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,n){let o=re.BufferSourceConverter.toUint8Array(e);if(!Ur(this,o,t,n))return-1;if(this.valueBeforeDecodeView=o.subarray(t,t+n),this.valueBeforeDecodeView.length===0)return this.warnings.push("Zero buffer length"),t;let s=t;for(;SC(this.isIndefiniteForm,n)>0;){let i=Ff(o,s,n);if(i.offset===-1)return this.error=i.result.error,this.warnings.concat(i.result.warnings),-1;if(s=i.offset,this.blockLength+=i.result.blockLength,n-=i.result.blockLength,this.value.push(i.result),this.isIndefiniteForm&&i.result.constructor.NAME===da)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===da?this.value.pop():this.warnings.push("No EndOfContent block encoded")),s}toBER(e,t){let n=t||new fa;for(let o=0;o<this.value.length;o++)this.value[o].toBER(e,n);return t?mr:n.final()}toJSON(){let e={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(let t of this.value)e.value.push(t.toJSON());return e}};hr.NAME="ConstructedValueBlock";var qv,hn=class extends He{constructor(e={}){super(e,hr),this.idBlock.isConstructed=!0}fromBER(e,t,n){this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm;let o=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return o===-1?(this.error=this.valueBlock.error,o):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),o)}onAsciiEncoding(){let e=[];for(let n of this.valueBlock.value)e.push(n.toString("ascii").split(`
46
+ `),t),n('responded with "na" for "%s"',s)}}var og=class extends _e{id;remoteAddr;remotePeer;direction;timeline;direct;multiplexer;encryption;limits;log;maConn;muxer;components;outboundStreamProtocolNegotiationTimeout;inboundStreamProtocolNegotiationTimeout;closeTimeout;constructor(e,t){super(),this.components=e,this.id=t.id,this.remoteAddr=t.maConn.remoteAddr,this.remotePeer=t.remotePeer,this.direction=t.direction??"outbound",this.timeline=t.maConn.timeline,this.encryption=t.cryptoProtocol,this.limits=t.limits,this.maConn=t.maConn,this.log=t.maConn.log,this.outboundStreamProtocolNegotiationTimeout=t.outboundStreamProtocolNegotiationTimeout??1e4,this.inboundStreamProtocolNegotiationTimeout=t.inboundStreamProtocolNegotiationTimeout??1e4,this.closeTimeout=t.closeTimeout??1e3,this.direct=Hm(t.maConn.remoteAddr),this.onIncomingStream=this.onIncomingStream.bind(this),this.remoteAddr.getComponents().find(n=>n.code===421)==null&&(this.remoteAddr=this.remoteAddr.encapsulate(`/p2p/${this.remotePeer}`)),t.muxer!=null&&(this.multiplexer=t.muxer.protocol,this.muxer=t.muxer,this.muxer.addEventListener("stream",this.onIncomingStream)),this.maConn.addEventListener("close",n=>{this.dispatchEvent(new _a(n.local,n.error))})}[Symbol.toStringTag]="Connection";[wg]=!0;get streams(){return this.muxer?.streams??[]}get status(){return this.maConn.status}newStream=async(e,t={})=>{if(this.muxer==null)throw new fn("Connection is not multiplexed");if(this.muxer.status!=="open")throw new gn(`The connection muxer is "${this.muxer.status}" and not "open"`);if(this.maConn.status!=="open")throw new gn(`The connection is "${this.status}" and not "open"`);if(this.limits!=null&&t?.runOnLimitedConnection!==!0)throw new Is("Cannot open protocol stream on limited connection");Array.isArray(e)||(e=[e]),this.log.trace("starting new stream for protocols %s",e);let n=await this.muxer.createStream({...t,protocol:e.length===1?e[0]:void 0});this.log.trace("started new stream %s for protocols %s",n.id,e);try{if(t.signal==null){n.log("no abort signal was passed while trying to negotiate protocols %s falling back to default timeout",e);let a=AbortSignal.timeout(this.outboundStreamProtocolNegotiationTimeout);t={...t,signal:a}}n.protocol===""?(n.log.trace("selecting protocol from protocols %s",e),n.protocol=await ys(n,e,t),n.log("negotiated protocol %s",n.protocol)):n.log("pre-negotiated protocol %s",n.protocol);let o=rC(n.protocol,this.components.registrar,t),s=Sv(n.protocol,"outbound",this);if(s>o){let a=new ka(`Too many outbound protocol streams for protocol "${n.protocol}" - ${s}/${o}`);throw n.abort(a),a}await this.components.peerStore.merge(this.remotePeer,{protocols:[n.protocol]}),this.components.metrics?.trackProtocolStream(n);let i=this.components.registrar.getMiddleware(n.protocol);return await this.runMiddlewareChain(n,this,i)}catch(o){throw n.status==="open"?n.abort(o):this.log.error("could not create new outbound stream on connection %s %a for protocols %s - %e",this.direction==="inbound"?"from":"to",this.remoteAddr,e,o),o}};async onIncomingStream(e){let t=e.detail,n=AbortSignal.timeout(this.inboundStreamProtocolNegotiationTimeout);t.log("start protocol negotiation, timing out after %dms",this.inboundStreamProtocolNegotiationTimeout);try{if(t.protocol===""){let l=this.components.registrar.getProtocols();t.log.trace("selecting protocol from protocols %s",l),t.protocol=await ws(t,l,{signal:n}),t.log("negotiated protocol %s",t.protocol)}else t.log("pre-negotiated protocol %s",t.protocol);let o=tC(t.protocol,this.components.registrar);if(Sv(t.protocol,"inbound",this)>o)throw new Ia(`Too many inbound protocol streams for protocol "${t.protocol}" - limit ${o}`);await this.components.peerStore.merge(this.remotePeer,{protocols:[t.protocol]},{signal:n}),this.components.metrics?.trackProtocolStream(t);let{handler:i,options:a}=this.components.registrar.getHandler(t.protocol);if(this.limits!=null&&a.runOnLimitedConnection!==!0)throw new Is("Cannot open protocol stream on limited connection");let c=this.components.registrar.getMiddleware(t.protocol);c.push(async(l,u,f)=>{await i(l,u),f(l,u)}),await this.runMiddlewareChain(t,this,c)}catch(o){t.abort(o)}}async runMiddlewareChain(e,t,n){for(let o=0;o<n.length;o++){let s=n[o];e.log.trace("running middleware",o,s),await new Promise((i,a)=>{try{let c=s(e,t,(l,u)=>{e=l,t=u,i()});c instanceof Promise&&c.catch(a)}catch(c){a(c)}}),e.log.trace("ran middleware",o,s)}return e}async close(e={}){if(this.log("closing connection to %a",this.remoteAddr),e.signal==null){let t=AbortSignal.timeout(this.closeTimeout);e={...e,signal:t}}await this.muxer?.close(e),await this.maConn.close(e)}abort(e){this.muxer?.abort(e),this.maConn.abort(e)}};function Iv(r,e){return new og(r,e)}function tC(r,e){try{let{options:t}=e.getHandler(r);if(t.maxInboundStreams!=null)return t.maxInboundStreams}catch(t){if(t.name!=="UnhandledProtocolError")throw t}return tg}function rC(r,e,t={}){try{let{options:n}=e.getHandler(r);if(n.maxOutboundStreams!=null)return n.maxOutboundStreams}catch(n){if(n.name!=="UnhandledProtocolError")throw n}return t.maxOutboundStreams??rg}function Sv(r,e,t){let n=0;return t.streams.forEach(o=>{o.direction===e&&o.protocol===r&&n++}),n}var Gu=class{components;connectionEncrypters;streamMuxers;inboundUpgradeTimeout;inboundStreamProtocolNegotiationTimeout;outboundStreamProtocolNegotiationTimeout;events;metrics;connectionCloseTimeout;constructor(e,t){this.components=e,this.connectionEncrypters=Xe({name:"libp2p_upgrader_connection_encrypters",metrics:this.components.metrics}),t.connectionEncrypters.forEach(n=>{this.connectionEncrypters.set(n.protocol,n)}),this.streamMuxers=Xe({name:"libp2p_upgrader_stream_multiplexers",metrics:this.components.metrics}),t.streamMuxers.forEach(n=>{this.streamMuxers.set(n.protocol,n)}),this.inboundUpgradeTimeout=t.inboundUpgradeTimeout??1e4,this.inboundStreamProtocolNegotiationTimeout=t.inboundStreamProtocolNegotiationTimeout??1e4,this.outboundStreamProtocolNegotiationTimeout=t.outboundStreamProtocolNegotiationTimeout??1e4,this.connectionCloseTimeout=t.connectionCloseTimeout??1e3,this.events=e.events,this.metrics={dials:e.metrics?.registerCounterGroup("libp2p_connection_manager_dials_total"),errors:e.metrics?.registerCounterGroup("libp2p_connection_manager_dial_errors_total"),inboundErrors:e.metrics?.registerCounterGroup("libp2p_connection_manager_dials_inbound_errors_total"),outboundErrors:e.metrics?.registerCounterGroup("libp2p_connection_manager_dials_outbound_errors_total")}}[Symbol.toStringTag]="@libp2p/upgrader";async shouldBlockConnection(e,...t){let n=this.components.connectionGater[e];if(n==null)return;if(await n.apply(this.components.connectionGater,t)===!0)throw new _u(`The multiaddr connection is blocked by gater.${e}`)}createInboundAbortSignal(e){let t=pe([AbortSignal.timeout(this.inboundUpgradeTimeout),e]);return t}async upgradeInbound(e,t){let n=!1,o=this.createInboundAbortSignal(t.signal);try{if(this.metrics.dials?.increment({inbound:!0}),n=this.components.connectionManager.acceptIncomingConnection(e),!n)throw new Cu("Connection denied");await St(this.shouldBlockConnection("denyInboundConnection",e),o),await this._performUpgrade(e,"inbound",{...t,signal:o})}catch(s){throw this.metrics.errors?.increment({inbound:!0}),this.metrics.inboundErrors?.increment({[s.name??"Error"]:!0}),s}finally{o.clear(),n&&this.components.connectionManager.afterUpgradeInbound()}}async upgradeOutbound(e,t){try{this.metrics.dials?.increment({outbound:!0});let n=e.remoteAddr.getComponents().findLast(i=>i.code===421)?.value,o;n!=null&&(o=Tt(n),await St(this.shouldBlockConnection("denyOutboundConnection",o,e),t.signal));let s="outbound";return t.initiator===!1&&(s="inbound"),await this._performUpgrade(e,s,t)}catch(n){throw this.metrics.errors?.increment({outbound:!0}),this.metrics.outboundErrors?.increment({[n.name??"Error"]:!0}),n}}async _performUpgrade(e,t,n){let o=e,s,i,a,c,l=`${parseInt(String(Math.random()*1e9)).toString(36)}${Date.now()}`;if(e.log=e.log.newScope(`${t}:${l}`),this.components.metrics?.trackMultiaddrConnection(e),e.log.trace("starting the %s connection upgrade",t),n?.skipProtection!==!0){let f=this.components.connectionProtector;f!=null&&(e.log("protecting the %s connection",t),o=await f.protect(o,n))}try{if(nC(n)){if(n.remotePeer==null)throw new $r(`${t} connection that skipped encryption must have a peer id`);c="native",s=n.remotePeer}else{let f=e.remoteAddr.getComponents().findLast(h=>h.code===421)?.value,d;f!=null&&(d=Tt(f)),n?.onProgress?.(new W(`upgrader:encrypt-${t}-connection`)),{connection:o,remotePeer:s,protocol:c,streamMuxer:i}=await(t==="inbound"?this._encryptInbound(o,{...n,remotePeer:d}):this._encryptOutbound(o,{...n,remotePeer:d}))}if(s.equals(this.components.peerId)){let f=new fo("Can not dial self");throw e.abort(f),f}await this.shouldBlockConnection(t==="inbound"?"denyInboundEncryptedConnection":"denyOutboundEncryptedConnection",s,e),n?.muxerFactory!=null?i=n.muxerFactory:i==null&&this.streamMuxers.size>0&&(n?.onProgress?.(new W(`upgrader:multiplex-${t}-connection`)),i=await(t==="inbound"?this._multiplexInbound(o,this.streamMuxers,n):this._multiplexOutbound(o,this.streamMuxers,n)))}catch(f){throw e.log.error("failed to upgrade %s connection %s %a - %e",t,t==="inbound"?"from":"to",e.remoteAddr,f),f}i!=null&&(e.log("create muxer %s",i.protocol),a=i.createStreamMuxer(o)),await this.shouldBlockConnection(t==="inbound"?"denyInboundUpgradedConnection":"denyOutboundUpgradedConnection",s,e);let u=this._createConnection({id:l,cryptoProtocol:c,direction:t,maConn:e,stream:o,muxer:a,remotePeer:s,limits:n?.limits,closeTimeout:this.connectionCloseTimeout});return u.log("successfully upgraded connection"),u}_createConnection(e){let t=Iv(this.components,{...e,outboundStreamProtocolNegotiationTimeout:this.outboundStreamProtocolNegotiationTimeout,inboundStreamProtocolNegotiationTimeout:this.inboundStreamProtocolNegotiationTimeout});return t.addEventListener("close",()=>{this.events.safeDispatchEvent("connection:close",{detail:t})}),this.events.safeDispatchEvent("connection:open",{detail:t}),t}async _encryptInbound(e,t){let n=Array.from(this.connectionEncrypters.keys());try{let o=await ws(e,n,t),s=this.connectionEncrypters.get(o);if(s==null)throw new so(`no crypto module found for ${o}`);return e.log("encrypting inbound connection using %s",o),{...await s.secureInbound(e,t),protocol:o}}catch(o){throw new so(o.message)}}async _encryptOutbound(e,t){let n=Array.from(this.connectionEncrypters.keys());try{e.log.trace("selecting encrypter from %s",n);let o=await ys(e,n,t),s=this.connectionEncrypters.get(o);if(s==null)throw new so(`no crypto module found for ${o}`);return e.log("encrypting outbound connection using %s",o),{...await s.secureOutbound(e,t),protocol:o}}catch(o){throw new so(o.message)}}async _multiplexOutbound(e,t,n){let o=Array.from(t.keys());e.log("outbound selecting muxer %s",o);try{e.log.trace("selecting stream muxer from %s",o);let s=await ys(e,o,n),i=t.get(s);if(i==null)throw new fn(`No muxer configured for protocol "${s}"`);return e.log("selected %s as muxer protocol",s),i}catch(s){throw e.log.error("error multiplexing outbound connection - %e",s),new fn(String(s))}}async _multiplexInbound(e,t,n){let o=Array.from(t.keys());e.log("inbound handling muxers %s",o);try{e.log.trace("selecting stream muxer from %s",o);let s=await ws(e,o,n),i=t.get(s);if(i==null)throw new fn(`No muxer configured for protocol "${s}"`);return e.log("selected %s as muxer protocol",s),i}catch(s){throw e.log.error("error multiplexing inbound connection - %e",s),s}}getConnectionEncrypters(){return this.connectionEncrypters}getStreamMuxers(){return this.streamMuxers}};function nC(r){return r.skipEncryption===!0}var Wu="3.1.2",ju="js-libp2p";function Yu(r,e){return`${r??ju}/${e??Wu} browser/${globalThis.navigator.userAgent}`}var aa=class extends _e{peerId;peerStore;contentRouting;peerRouting;metrics;services;logger;status;components;log;constructor(e){super(),this.status="stopped";let t=new _e,n=t.dispatchEvent.bind(t);t.dispatchEvent=l=>{let u=n(l),f=this.dispatchEvent(new CustomEvent(l.type,{detail:l.detail}));return u||f},this.peerId=e.peerId,this.logger=e.logger??fr(),this.log=this.logger.forComponent("libp2p"),this.services={};let o=e.nodeInfo?.name??ju,s=e.nodeInfo?.version??Wu,i=this.components=lv({peerId:e.peerId,privateKey:e.privateKey,nodeInfo:{name:o,version:s,userAgent:e.nodeInfo?.userAgent??Yu(o,s)},logger:this.logger,events:t,datastore:e.datastore??new no,connectionGater:fv(e.connectionGater),dns:e.dns});e.metrics!=null&&(this.metrics=this.configureComponent("metrics",e.metrics(this.components))),this.peerStore=this.configureComponent("peerStore",ov(i,{addressFilter:this.components.connectionGater.filterMultiaddrForPeer,...e.peerStore})),i.events.addEventListener("peer:update",l=>{if(l.detail.previous==null){let u={id:l.detail.peer.id,multiaddrs:l.detail.peer.addresses.map(f=>f.multiaddr)};i.events.safeDispatchEvent("peer:discovery",{detail:u})}}),e.connectionProtector!=null&&this.configureComponent("connectionProtector",e.connectionProtector(i)),this.components.upgrader=new Gu(this.components,{connectionEncrypters:(e.connectionEncrypters??[]).map((l,u)=>this.configureComponent(`connection-encryption-${u}`,l(this.components))),streamMuxers:(e.streamMuxers??[]).map((l,u)=>this.configureComponent(`stream-muxers-${u}`,l(this.components))),inboundUpgradeTimeout:e.connectionManager?.inboundUpgradeTimeout,inboundStreamProtocolNegotiationTimeout:e.connectionManager?.inboundStreamProtocolNegotiationTimeout,outboundStreamProtocolNegotiationTimeout:e.connectionManager?.outboundStreamProtocolNegotiationTimeout,connectionCloseTimeout:e.connectionManager?.connectionCloseTimeout}),this.configureComponent("transportManager",new zu(this.components,e.transportManager)),this.configureComponent("connectionManager",new Uu(this.components,e.connectionManager)),e.connectionMonitor?.enabled!==!1&&this.configureComponent("connectionMonitor",new Fu(this.components,e.connectionMonitor)),this.configureComponent("registrar",new qu(this.components)),this.configureComponent("addressManager",new wu(this.components,e.addresses));let a=(e.peerRouters??[]).map((l,u)=>this.configureComponent(`peer-router-${u}`,l(this.components)));this.peerRouting=this.components.peerRouting=this.configureComponent("peerRouting",new Ku(this.components,{routers:a}));let c=(e.contentRouters??[]).map((l,u)=>this.configureComponent(`content-router-${u}`,l(this.components)));if(this.contentRouting=this.components.contentRouting=this.configureComponent("contentRouting",new $u(this.components,{routers:c})),this.configureComponent("randomWalk",new Hu(this.components)),(e.peerDiscovery??[]).forEach((l,u)=>{this.configureComponent(`peer-discovery-${u}`,l(this.components)).addEventListener("peer",d=>{this.#e(d)})}),e.transports?.forEach((l,u)=>{this.components.transportManager.add(this.configureComponent(`transport-${u}`,l(this.components)))}),e.services!=null)for(let l of Object.keys(e.services)){let u=e.services[l],f=u(this.components);if(f==null){this.log.error("service factory %s returned null or undefined instance",l);continue}this.services[l]=f,this.configureComponent(l,f),f[mn]!=null&&(this.log("registering service %s for content routing",l),c.push(f[mn])),f[yn]!=null&&(this.log("registering service %s for peer routing",l),a.push(f[yn])),f[zf]!=null&&(this.log("registering service %s for peer discovery",l),f[zf].addEventListener?.("peer",d=>{this.#e(d)}))}uv(i)}configureComponent(e,t){return t==null&&this.log.error("component %s was null or undefined",e),this.components[e]=t,t}async start(){if(this.status==="stopped"){this.status="starting",this.log("libp2p is starting");try{await this.components.beforeStart?.(),await this.components.start(),await this.components.afterStart?.(),this.status="started",this.safeDispatchEvent("start",{detail:this}),this.log("libp2p has started with peer id %p",this.peerId)}catch(e){throw this.log.error("an error occurred starting libp2p - %e",e),this.status="started",await this.stop(),e}}}async stop(){this.status==="started"&&(this.log("libp2p is stopping"),this.status="stopping",await this.components.beforeStop?.(),await this.components.stop(),await this.components.afterStop?.(),this.status="stopped",this.safeDispatchEvent("stop",{detail:this}),this.log("libp2p has stopped"))}getConnections(e){return this.components.connectionManager.getConnections(e)}getDialQueue(){return this.components.connectionManager.getDialQueue()}getPeers(){let e=new Yn;for(let t of this.components.connectionManager.getConnections())e.add(t.remotePeer);return Array.from(e)}async dial(e,t={}){return this.components.connectionManager.openConnection(e,{priority:75,...t})}async dialProtocol(e,t,n={}){if(t==null)throw new k("no protocols were provided to open a stream");if(t=Array.isArray(t)?t:[t],t.length===0)throw new k("no protocols were provided to open a stream");return this.components.connectionManager.openStream(e,t,n)}getMultiaddrs(){return this.components.addressManager.getAddresses()}getProtocols(){return this.components.registrar.getProtocols()}async hangUp(e,t={}){nn(e)&&(e=Tt(e.getComponents().findLast(n=>n.code===421)?.value??"")),await this.components.connectionManager.closeConnections(e,t)}async getPublicKey(e,t={}){if(this.log("getPublicKey %p",e),e.publicKey!=null)return e.publicKey;try{let i=await this.peerStore.get(e,t);if(i.id.publicKey!=null)return i.id.publicKey}catch(i){if(i.name!=="NotFoundError")throw i}let n=Ce([B("/pk/"),e.toMultihash().bytes]),o=await this.contentRouting.get(n,t),s=en(o);return await this.peerStore.patch(e,{publicKey:s},t),s}async handle(e,t,n){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async o=>{await this.components.registrar.handle(o,t,n)}))}async unhandle(e,t){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async n=>{await this.components.registrar.unhandle(n,t)}))}async register(e,t,n){return this.components.registrar.register(e,t,n)}unregister(e){this.components.registrar.unregister(e)}use(e,t){this.components.registrar.use(e,Array.isArray(t)?t:[t])}unuse(e){this.components.registrar.unuse(e)}async isDialable(e,t={}){return this.components.connectionManager.isDialable(e,t)}#e(e){let{detail:t}=e;if(t.id.toString()===this.peerId.toString()){this.log.error("peer discovery mechanism discovered self");return}this.components.peerStore.merge(t.id,{multiaddrs:t.multiaddrs}).catch(n=>{this.log.error("could not update multiaddrs of discovered peer - %e",n)})}};async function _v(r={}){r.privateKey??=await Xa("Ed25519");let e=new aa({...await Hx(r),peerId:gb(r.privateKey)});return r.start!==!1&&await e.start(),e}var oC=["dial","dialProtocol","hangUp","handle","unhandle","getMultiaddrs","getProtocols"];function Cv(r){return r==null?!1:r instanceof aa?!0:oC.every(e=>typeof r[e]=="function")}var _E=pn(Ov(),1);var sg={keyLength:64,iterationCount:1e4,salt:"you should override this value with a crypto secure random number",hash:"sha2-512"};var bs={};Ae(bs,{create:()=>yC,derivedEmptyPasswordKey:()=>Zu});var Zu={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function yC(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,o=r?.digest??"SHA-256",s=r?.saltLength??16,i=r?.iterations??32767,a=Se.get();t*=8;async function c(f,d){let h=a.getRandomValues(new Uint8Array(s)),p=a.getRandomValues(new Uint8Array(n)),g={name:e,iv:p};typeof d=="string"&&(d=B(d));let w;if(d.length===0){w=await a.subtle.importKey("jwk",Zu,{name:"AES-GCM"},!0,["encrypt"]);try{let T={name:"PBKDF2",salt:h,iterations:i,hash:{name:o}},S=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);w=await a.subtle.deriveKey(T,S,{name:e,length:t},!0,["encrypt"])}catch{w=await a.subtle.importKey("jwk",Zu,{name:"AES-GCM"},!0,["encrypt"])}}else{let T={name:"PBKDF2",salt:h,iterations:i,hash:{name:o}},S=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);w=await a.subtle.deriveKey(T,S,{name:e,length:t},!0,["encrypt"])}let b=await a.subtle.encrypt(g,w,f);return Ce([h,g.iv,new Uint8Array(b)])}async function l(f,d){let h=f.subarray(0,s),p=f.subarray(s,s+n),g=f.subarray(s+n),w={name:e,iv:p};typeof d=="string"&&(d=B(d));let b;if(d.length===0)try{let S={name:"PBKDF2",salt:h,iterations:i,hash:{name:o}},D=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(S,D,{name:e,length:t},!0,["decrypt"])}catch{b=await a.subtle.importKey("jwk",Zu,{name:"AES-GCM"},!0,["decrypt"])}else{let S={name:"PBKDF2",salt:h,iterations:i,hash:{name:o}},D=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(S,D,{name:e,length:t},!0,["decrypt"])}let T=await a.subtle.decrypt(w,b,g);return new Uint8Array(T)}return{encrypt:c,decrypt:l}}var re=pn(Uv());function io(r,e){let t=0;if(r.length===1)return r[0];for(let n=r.length-1;n>=0;n--)t+=r[r.length-1-n]*Math.pow(2,e*n);return t}function dn(r,e,t=-1){let n=t,o=r,s=0,i=Math.pow(2,e);for(let a=1;a<8;a++){if(r<i){let c;if(n<0)c=new ArrayBuffer(a),s=a;else{if(n<a)return new ArrayBuffer(0);c=new ArrayBuffer(n),s=n}let l=new Uint8Array(c);for(let u=a-1;u>=0;u--){let f=Math.pow(2,u*e);l[s-u-1]=Math.floor(o/f),o-=l[s-u-1]*f}return c}i*=Math.pow(2,e)}return new ArrayBuffer(0)}function Qu(...r){let e=0,t=0;for(let s of r)e+=s.length;let n=new ArrayBuffer(e),o=new Uint8Array(n);for(let s of r)o.set(s,t),t+=s.length;return o}function ag(){let r=new Uint8Array(this.valueHex);if(this.valueHex.byteLength>=2){let a=r[0]===255&&r[1]&128,c=r[0]===0&&(r[1]&128)===0;(a||c)&&this.warnings.push("Needlessly long format")}let e=new ArrayBuffer(this.valueHex.byteLength),t=new Uint8Array(e);for(let a=0;a<this.valueHex.byteLength;a++)t[a]=0;t[0]=r[0]&128;let n=io(t,8),o=new ArrayBuffer(this.valueHex.byteLength),s=new Uint8Array(o);for(let a=0;a<this.valueHex.byteLength;a++)s[a]=r[a];return s[0]&=127,io(s,8)-n}function Fv(r){let e=r<0?r*-1:r,t=128;for(let n=1;n<8;n++){if(e<=t){if(r<0){let i=t-e,a=dn(i,8,n),c=new Uint8Array(a);return c[0]|=128,a}let o=dn(e,8,n),s=new Uint8Array(o);if(s[0]&128){let i=o.slice(0),a=new Uint8Array(i);o=new ArrayBuffer(o.byteLength+1),s=new Uint8Array(o);for(let c=0;c<i.byteLength;c++)s[c+1]=a[c];s[0]=0}return o}t*=Math.pow(2,8)}return new ArrayBuffer(0)}function $v(r,e){if(r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let o=0;o<t.length;o++)if(t[o]!==n[o])return!1;return!0}function lt(r,e){let t=r.toString(10);if(e<t.length)return"";let n=e-t.length,o=new Array(n);for(let i=0;i<n;i++)o[i]="0";return o.join("").concat(t)}var Wq=Math.log(2);function ef(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function cg(r){let e=0,t=0;for(let o=0;o<r.length;o++){let s=r[o];e+=s.byteLength}let n=new Uint8Array(e);for(let o=0;o<r.length;o++){let s=r[o];n.set(new Uint8Array(s),t),t+=s.byteLength}return n.buffer}function Ur(r,e,t,n){return e instanceof Uint8Array?e.byteLength?t<0?(r.error="Wrong parameter: inputOffset less than zero",!1):n<0?(r.error="Wrong parameter: inputLength less than zero",!1):e.byteLength-t-n<0?(r.error="End of input reached before message was fully decoded (inconsistent offset and length values)",!1):!0:(r.error="Wrong parameter: inputBuffer has zero length",!1):(r.error="Wrong parameter: inputBuffer must be 'Uint8Array'",!1)}var ua=class{constructor(){this.items=[]}write(e){this.items.push(e)}final(){return cg(this.items)}},ca=[new Uint8Array([1])],Vv="0123456789";var vs="",mr=new ArrayBuffer(0),lg=new Uint8Array(0),fa="EndOfContent",Hv="OCTET STRING",qv="BIT STRING";function Fr(r){var e;return e=class extends r{get valueHex(){return this.valueHexView.slice().buffer}set valueHex(n){this.valueHexView=new Uint8Array(n)}constructor(...n){var o;super(...n);let s=n[0]||{};this.isHexOnly=(o=s.isHexOnly)!==null&&o!==void 0?o:!1,this.valueHexView=s.valueHex?re.BufferSourceConverter.toUint8Array(s.valueHex):lg}fromBER(n,o,s){let i=n instanceof ArrayBuffer?new Uint8Array(n):n;if(!Ur(this,i,o,s))return-1;let a=o+s;return this.valueHexView=i.subarray(o,a),this.valueHexView.length?(this.blockLength=s,a):(this.warnings.push("Zero buffer length"),o)}toBER(n=!1){return this.isHexOnly?n?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.byteLength===this.valueHexView.buffer.byteLength?this.valueHexView.buffer:this.valueHexView.slice().buffer:(this.error="Flag 'isHexOnly' is not set, abort",mr)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:re.Convert.ToHex(this.valueHexView)}}},e.NAME="hexBlock",e}var Nr=class{static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(e){this.valueBeforeDecodeView=new Uint8Array(e)}constructor({blockLength:e=0,error:t=vs,warnings:n=[],valueBeforeDecode:o=lg}={}){this.blockLength=e,this.error=t,this.warnings=n,this.valueBeforeDecodeView=re.BufferSourceConverter.toUint8Array(o)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:re.Convert.ToHex(this.valueBeforeDecodeView)}}};Nr.NAME="baseBlock";var et=class extends Nr{fromBER(e,t,n){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}toBER(e,t){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}};et.NAME="valueBlock";var tf=class extends Fr(Nr){constructor({idBlock:e={}}={}){var t,n,o,s;super(),e?(this.isHexOnly=(t=e.isHexOnly)!==null&&t!==void 0?t:!1,this.valueHexView=e.valueHex?re.BufferSourceConverter.toUint8Array(e.valueHex):lg,this.tagClass=(n=e.tagClass)!==null&&n!==void 0?n:-1,this.tagNumber=(o=e.tagNumber)!==null&&o!==void 0?o:-1,this.isConstructed=(s=e.isConstructed)!==null&&s!==void 0?s:!1):(this.tagClass=-1,this.tagNumber=-1,this.isConstructed=!1)}toBER(e=!1){let t=0;switch(this.tagClass){case 1:t|=0;break;case 2:t|=64;break;case 3:t|=128;break;case 4:t|=192;break;default:return this.error="Unknown tag class",mr}if(this.isConstructed&&(t|=32),this.tagNumber<31&&!this.isHexOnly){let o=new Uint8Array(1);if(!e){let s=this.tagNumber;s&=31,t|=s,o[0]=t}return o.buffer}if(!this.isHexOnly){let o=dn(this.tagNumber,7),s=new Uint8Array(o),i=o.byteLength,a=new Uint8Array(i+1);if(a[0]=t|31,!e){for(let c=0;c<i-1;c++)a[c+1]=s[c]|128;a[i]=s[i-1]}return a.buffer}let n=new Uint8Array(this.valueHexView.byteLength+1);if(n[0]=t|31,!e){let o=this.valueHexView;for(let s=0;s<o.length-1;s++)n[s+1]=o[s]|128;n[this.valueHexView.byteLength]=o[o.length-1]}return n.buffer}fromBER(e,t,n){let o=re.BufferSourceConverter.toUint8Array(e);if(!Ur(this,o,t,n))return-1;let s=o.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;switch(s[0]&192){case 0:this.tagClass=1;break;case 64:this.tagClass=2;break;case 128:this.tagClass=3;break;case 192:this.tagClass=4;break;default:return this.error="Unknown tag class",-1}this.isConstructed=(s[0]&32)===32,this.isHexOnly=!1;let a=s[0]&31;if(a!==31)this.tagNumber=a,this.blockLength=1;else{let c=1,l=this.valueHexView=new Uint8Array(255),u=255;for(;s[c]&128;){if(l[c-1]=s[c]&127,c++,c>=s.length)return this.error="End of input reached before message was fully decoded",-1;if(c===u){u+=255;let d=new Uint8Array(u);for(let h=0;h<l.length;h++)d[h]=l[h];l=this.valueHexView=new Uint8Array(u)}}this.blockLength=c+1,l[c-1]=s[c]&127;let f=new Uint8Array(c);for(let d=0;d<c;d++)f[d]=l[d];l=this.valueHexView=new Uint8Array(c),l.set(f),this.blockLength<=9?this.tagNumber=io(l,7):(this.isHexOnly=!0,this.warnings.push("Tag too long, represented as hex-coded"))}if(this.tagClass===1&&this.isConstructed)switch(this.tagNumber){case 1:case 2:case 5:case 6:case 9:case 13:case 14:case 23:case 24:case 31:case 32:case 33:case 34:return this.error="Constructed encoding used for primitive type",-1}return t+this.blockLength}toJSON(){return{...super.toJSON(),tagClass:this.tagClass,tagNumber:this.tagNumber,isConstructed:this.isConstructed}}};tf.NAME="identificationBlock";var rf=class extends Nr{constructor({lenBlock:e={}}={}){var t,n,o;super(),this.isIndefiniteForm=(t=e.isIndefiniteForm)!==null&&t!==void 0?t:!1,this.longFormUsed=(n=e.longFormUsed)!==null&&n!==void 0?n:!1,this.length=(o=e.length)!==null&&o!==void 0?o:0}fromBER(e,t,n){let o=re.BufferSourceConverter.toUint8Array(e);if(!Ur(this,o,t,n))return-1;let s=o.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;if(s[0]===255)return this.error="Length block 0xFF is reserved by standard",-1;if(this.isIndefiniteForm=s[0]===128,this.isIndefiniteForm)return this.blockLength=1,t+this.blockLength;if(this.longFormUsed=!!(s[0]&128),this.longFormUsed===!1)return this.length=s[0],this.blockLength=1,t+this.blockLength;let i=s[0]&127;if(i>8)return this.error="Too big integer",-1;if(i+1>s.length)return this.error="End of input reached before message was fully decoded",-1;let a=t+1,c=o.subarray(a,a+i);return c[i-1]===0&&this.warnings.push("Needlessly long encoded length"),this.length=io(c,8),this.longFormUsed&&this.length<=127&&this.warnings.push("Unnecessary usage of long length form"),this.blockLength=i+1,t+this.blockLength}toBER(e=!1){let t,n;if(this.length>127&&(this.longFormUsed=!0),this.isIndefiniteForm)return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=128),t;if(this.longFormUsed){let o=dn(this.length,8);if(o.byteLength>127)return this.error="Too big length",mr;if(t=new ArrayBuffer(o.byteLength+1),e)return t;let s=new Uint8Array(o);n=new Uint8Array(t),n[0]=o.byteLength|128;for(let i=0;i<o.byteLength;i++)n[i+1]=s[i];return t}return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=this.length),t}toJSON(){return{...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,longFormUsed:this.longFormUsed,length:this.length}}};rf.NAME="lengthBlock";var U={},He=class extends Nr{constructor({name:e=vs,optional:t=!1,primitiveSchema:n,...o}={},s){super(o),this.name=e,this.optional=t,n&&(this.primitiveSchema=n),this.idBlock=new tf(o),this.lenBlock=new rf(o),this.valueBlock=s?new s(o):new et(o)}fromBER(e,t,n){let o=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return o===-1?(this.error=this.valueBlock.error,o):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),o)}toBER(e,t){let n=t||new ua;t||zv(this);let o=this.idBlock.toBER(e);if(n.write(o),this.lenBlock.isIndefiniteForm)n.write(new Uint8Array([128]).buffer),this.valueBlock.toBER(e,n),n.write(new ArrayBuffer(2));else{let s=this.valueBlock.toBER(e);this.lenBlock.length=s.byteLength;let i=this.lenBlock.toBER(e);n.write(i),n.write(s)}return t?mr:n.final()}toJSON(){let e={...super.toJSON(),idBlock:this.idBlock.toJSON(),lenBlock:this.lenBlock.toJSON(),valueBlock:this.valueBlock.toJSON(),name:this.name,optional:this.optional};return this.primitiveSchema&&(e.primitiveSchema=this.primitiveSchema.toJSON()),e}toString(e="ascii"){return e==="ascii"?this.onAsciiEncoding():re.Convert.ToHex(this.toBER())}onAsciiEncoding(){let e=this.constructor.NAME,t=re.Convert.ToHex(this.valueBlock.valueBeforeDecodeView);return`${e} : ${t}`}isEqual(e){if(this===e)return!0;if(!(e instanceof this.constructor))return!1;let t=this.toBER(),n=e.toBER();return $v(t,n)}};He.NAME="BaseBlock";function zv(r){var e;if(r instanceof U.Constructed)for(let t of r.valueBlock.value)zv(t)&&(r.lenBlock.isIndefiniteForm=!0);return!!(!((e=r.lenBlock)===null||e===void 0)&&e.isIndefiniteForm)}var nf=class extends He{getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}constructor({value:e=vs,...t}={},n){super(t,n),e&&this.fromString(e)}fromBER(e,t,n){let o=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return o===-1?(this.error=this.valueBlock.error,o):(this.fromBuffer(this.valueBlock.valueHexView),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),o)}onAsciiEncoding(){return`${this.constructor.NAME} : '${this.valueBlock.value}'`}};nf.NAME="BaseStringBlock";var of=class extends Fr(et){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}};of.NAME="PrimitiveValueBlock";var Gv,sf=class extends He{constructor(e={}){super(e,of),this.idBlock.isConstructed=!1}};Gv=sf;U.Primitive=Gv;sf.NAME="PRIMITIVE";function kC(r,e){if(r instanceof e)return r;let t=new e;return t.idBlock=r.idBlock,t.lenBlock=r.lenBlock,t.warnings=r.warnings,t.valueBeforeDecodeView=r.valueBeforeDecodeView,t}function $f(r,e=0,t=r.length){let n=e,o=new He({},et),s=new Nr;if(!Ur(s,r,e,t))return o.error=s.error,{offset:-1,result:o};if(!r.subarray(e,e+t).length)return o.error="Zero buffer length",{offset:-1,result:o};let a=o.idBlock.fromBER(r,e,t);if(o.idBlock.warnings.length&&o.warnings.concat(o.idBlock.warnings),a===-1)return o.error=o.idBlock.error,{offset:-1,result:o};if(e=a,t-=o.idBlock.blockLength,a=o.lenBlock.fromBER(r,e,t),o.lenBlock.warnings.length&&o.warnings.concat(o.lenBlock.warnings),a===-1)return o.error=o.lenBlock.error,{offset:-1,result:o};if(e=a,t-=o.lenBlock.blockLength,!o.idBlock.isConstructed&&o.lenBlock.isIndefiniteForm)return o.error="Indefinite length form used for primitive encoding form",{offset:-1,result:o};let c=He;switch(o.idBlock.tagClass){case 1:if(o.idBlock.tagNumber>=37&&o.idBlock.isHexOnly===!1)return o.error="UNIVERSAL 37 and upper tags are reserved by ASN.1 standard",{offset:-1,result:o};switch(o.idBlock.tagNumber){case 0:if(o.idBlock.isConstructed&&o.lenBlock.length>0)return o.error="Type [UNIVERSAL 0] is reserved",{offset:-1,result:o};c=U.EndOfContent;break;case 1:c=U.Boolean;break;case 2:c=U.Integer;break;case 3:c=U.BitString;break;case 4:c=U.OctetString;break;case 5:c=U.Null;break;case 6:c=U.ObjectIdentifier;break;case 10:c=U.Enumerated;break;case 12:c=U.Utf8String;break;case 13:c=U.RelativeObjectIdentifier;break;case 14:c=U.TIME;break;case 15:return o.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:o};case 16:c=U.Sequence;break;case 17:c=U.Set;break;case 18:c=U.NumericString;break;case 19:c=U.PrintableString;break;case 20:c=U.TeletexString;break;case 21:c=U.VideotexString;break;case 22:c=U.IA5String;break;case 23:c=U.UTCTime;break;case 24:c=U.GeneralizedTime;break;case 25:c=U.GraphicString;break;case 26:c=U.VisibleString;break;case 27:c=U.GeneralString;break;case 28:c=U.UniversalString;break;case 29:c=U.CharacterString;break;case 30:c=U.BmpString;break;case 31:c=U.DATE;break;case 32:c=U.TimeOfDay;break;case 33:c=U.DateTime;break;case 34:c=U.Duration;break;default:{let l=o.idBlock.isConstructed?new U.Constructed:new U.Primitive;l.idBlock=o.idBlock,l.lenBlock=o.lenBlock,l.warnings=o.warnings,o=l}}break;case 2:case 3:case 4:default:c=o.idBlock.isConstructed?U.Constructed:U.Primitive}return o=kC(o,c),a=o.fromBER(r,e,o.lenBlock.isIndefiniteForm?t:o.lenBlock.length),o.valueBeforeDecodeView=r.subarray(n,n+o.blockLength),{offset:a,result:o}}function Vf(r){if(!r.byteLength){let e=new He({},et);return e.error="Input buffer has zero length",{offset:-1,result:e}}return $f(re.BufferSourceConverter.toUint8Array(r).slice(),0,r.byteLength)}function _C(r,e){return r?1:e}var hr=class extends et{constructor({value:e=[],isIndefiniteForm:t=!1,...n}={}){super(n),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,n){let o=re.BufferSourceConverter.toUint8Array(e);if(!Ur(this,o,t,n))return-1;if(this.valueBeforeDecodeView=o.subarray(t,t+n),this.valueBeforeDecodeView.length===0)return this.warnings.push("Zero buffer length"),t;let s=t;for(;_C(this.isIndefiniteForm,n)>0;){let i=$f(o,s,n);if(i.offset===-1)return this.error=i.result.error,this.warnings.concat(i.result.warnings),-1;if(s=i.offset,this.blockLength+=i.result.blockLength,n-=i.result.blockLength,this.value.push(i.result),this.isIndefiniteForm&&i.result.constructor.NAME===fa)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===fa?this.value.pop():this.warnings.push("No EndOfContent block encoded")),s}toBER(e,t){let n=t||new ua;for(let o=0;o<this.value.length;o++)this.value[o].toBER(e,n);return t?mr:n.final()}toJSON(){let e={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(let t of this.value)e.value.push(t.toJSON());return e}};hr.NAME="ConstructedValueBlock";var Wv,hn=class extends He{constructor(e={}){super(e,hr),this.idBlock.isConstructed=!0}fromBER(e,t,n){this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm;let o=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return o===-1?(this.error=this.valueBlock.error,o):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),o)}onAsciiEncoding(){let e=[];for(let n of this.valueBlock.value)e.push(n.toString("ascii").split(`
47
47
  `).map(o=>` ${o}`).join(`
48
48
  `));let t=this.idBlock.tagClass===3?`[${this.idBlock.tagNumber}]`:this.constructor.NAME;return e.length?`${t} :
49
49
  ${e.join(`
50
- `)}`:`${t} :`}};qv=hn;U.Constructed=qv;hn.NAME="CONSTRUCTED";var sf=class extends tt{fromBER(e,t,n){return t}toBER(e){return mr}};sf.override="EndOfContentValueBlock";var zv,af=class extends He{constructor(e={}){super(e,sf),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}};zv=af;U.EndOfContent=zv;af.NAME=da;var Gv,ao=class extends He{constructor(e={}){super(e,tt),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(e,t,n){return this.lenBlock.length>0&&this.warnings.push("Non-zero length of value block for Null type"),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=n,t+n>e.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):t+n}toBER(e,t){let n=new ArrayBuffer(2);if(!e){let o=new Uint8Array(n);o[0]=5,o[1]=0}return t&&t.write(n),n}onAsciiEncoding(){return`${this.constructor.NAME}`}};Gv=ao;U.Null=Gv;ao.NAME="NULL";var cf=class extends Fr(tt){get value(){for(let e of this.valueHexView)if(e>0)return!0;return!1}set value(e){this.valueHexView[0]=e?255:0}constructor({value:e,...t}={}){super(t),t.valueHex?this.valueHexView=re.BufferSourceConverter.toUint8Array(t.valueHex):this.valueHexView=new Uint8Array(1),e&&(this.value=e)}fromBER(e,t,n){let o=re.BufferSourceConverter.toUint8Array(e);return Ur(this,o,t,n)?(this.valueHexView=o.subarray(t,t+n),n>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,ig.call(this),this.blockLength=n,t+n):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}};cf.NAME="BooleanValueBlock";var Wv,lf=class extends He{getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}constructor(e={}){super(e,cf),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}};Wv=lf;U.Boolean=Wv;lf.NAME="BOOLEAN";var uf=class extends Fr(hr){constructor({isConstructed:e=!1,...t}={}){super(t),this.isConstructed=e}fromBER(e,t,n){let o=0;if(this.isConstructed){if(this.isHexOnly=!1,o=hr.prototype.fromBER.call(this,e,t,n),o===-1)return o;for(let s=0;s<this.value.length;s++){let i=this.value[s].constructor.NAME;if(i===da){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(i!==$v)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,o=super.fromBER(e,t,n),this.blockLength=n;return o}toBER(e,t){return this.isConstructed?hr.prototype.toBER.call(this,e,t):e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}};uf.NAME="OctetStringValueBlock";var lg,Rr=class extends He{constructor({idBlock:e={},lenBlock:t={},...n}={}){var o,s;(o=n.isConstructed)!==null&&o!==void 0||(n.isConstructed=!!(!((s=n.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},uf),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(e,t,n){if(this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,n===0)return this.idBlock.error.length===0&&(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length===0&&(this.blockLength+=this.lenBlock.blockLength),t;if(!this.valueBlock.isConstructed){let s=(e instanceof ArrayBuffer?new Uint8Array(e):e).subarray(t,t+n);try{if(s.byteLength){let i=Ff(s,0,s.byteLength);i.offset!==-1&&i.offset===n&&(this.valueBlock.value=[i.result])}}catch{}}return super.fromBER(e,t,n)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return hn.prototype.onAsciiEncoding.call(this);let e=this.constructor.NAME,t=re.Convert.ToHex(this.valueBlock.valueHexView);return`${e} : ${t}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;let e=[];for(let t of this.valueBlock.value)t instanceof lg&&e.push(t.valueBlock.valueHexView);return re.BufferSourceConverter.concat(e)}};lg=Rr;U.OctetString=lg;Rr.NAME=$v;var ff=class extends Fr(hr){constructor({unusedBits:e=0,isConstructed:t=!1,...n}={}){super(n),this.unusedBits=e,this.isConstructed=t,this.blockLength=this.valueHexView.byteLength}fromBER(e,t,n){if(!n)return t;let o=-1;if(this.isConstructed){if(o=hr.prototype.fromBER.call(this,e,t,n),o===-1)return o;for(let a of this.value){let c=a.constructor.NAME;if(c===da){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(c!==Vv)return this.error="BIT STRING may consists of BIT STRINGs only",-1;let l=a.valueBlock;if(this.unusedBits>0&&l.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=l.unusedBits}return o}let s=re.BufferSourceConverter.toUint8Array(e);if(!Ur(this,s,t,n))return-1;let i=s.subarray(t,t+n);if(this.unusedBits=i[0],this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1;if(!this.unusedBits){let a=i.subarray(1);try{if(a.byteLength){let c=Ff(a,0,a.byteLength);c.offset!==-1&&c.offset===n-1&&(this.value=[c.result])}}catch{}}return this.valueHexView=i.subarray(1),this.blockLength=i.length,t+n}toBER(e,t){if(this.isConstructed)return hr.prototype.toBER.call(this,e,t);if(e)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength){let o=new Uint8Array(1);return o[0]=0,o.buffer}let n=new Uint8Array(this.valueHexView.length+1);return n[0]=this.unusedBits,n.set(this.valueHexView,1),n.buffer}toJSON(){return{...super.toJSON(),unusedBits:this.unusedBits,isConstructed:this.isConstructed}}};ff.NAME="BitStringValueBlock";var jv,df=class extends He{constructor({idBlock:e={},lenBlock:t={},...n}={}){var o,s;(o=n.isConstructed)!==null&&o!==void 0||(n.isConstructed=!!(!((s=n.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},ff),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(e,t,n){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(e,t,n)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return hn.prototype.onAsciiEncoding.call(this);{let e=[],t=this.valueBlock.valueHexView;for(let i of t)e.push(i.toString(2).padStart(8,"0"));let n=e.join(""),o=this.constructor.NAME,s=n.substring(0,n.length-this.valueBlock.unusedBits);return`${o} : ${s}`}}};jv=df;U.BitString=jv;df.NAME=Vv;var Yv;function IC(r,e){let t=new Uint8Array([0]),n=new Uint8Array(r),o=new Uint8Array(e),s=n.slice(0),i=s.length-1,a=o.slice(0),c=a.length-1,l=0,u=c<i?i:c,f=0;for(let d=u;d>=0;d--,f++){switch(!0){case f<a.length:l=s[i-f]+a[c-f]+t[0];break;default:l=s[i-f]+t[0]}switch(t[0]=l/10,!0){case f>=s.length:s=Ju(new Uint8Array([l%10]),s);break;default:s[i-f]=l%10}}return t[0]>0&&(s=Ju(t,s)),s}function Fv(r){if(r>=la.length)for(let e=la.length;e<=r;e++){let t=new Uint8Array([0]),n=la[e-1].slice(0);for(let o=n.length-1;o>=0;o--){let s=new Uint8Array([(n[o]<<1)+t[0]]);t[0]=s[0]/10,n[o]=s[0]%10}t[0]>0&&(n=Ju(t,n)),la.push(n)}return la[r]}function kC(r,e){let t=0,n=new Uint8Array(r),o=new Uint8Array(e),s=n.slice(0),i=s.length-1,a=o.slice(0),c=a.length-1,l,u=0;for(let f=c;f>=0;f--,u++)switch(l=s[i-u]-a[c-u]-t,!0){case l<0:t=1,s[i-u]=l+10;break;default:t=0,s[i-u]=l}if(t>0)for(let f=i-c+1;f>=0;f--,u++)if(l=s[i-u]-t,l<0)t=1,s[i-u]=l+10;else{t=0,s[i-u]=l;break}return s.slice()}var ha=class extends Fr(tt){setValueHex(){this.valueHexView.length>=4?(this.warnings.push("Too big Integer for decoding, hex only"),this.isHexOnly=!0,this._valueDec=0):(this.isHexOnly=!1,this.valueHexView.length>0&&(this._valueDec=ig.call(this)))}constructor({value:e,...t}={}){super(t),this._valueDec=0,t.valueHex&&this.setValueHex(),e!==void 0&&(this.valueDec=e)}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this.valueHexView=new Uint8Array(Mv(e))}get valueDec(){return this._valueDec}fromDER(e,t,n,o=0){let s=this.fromBER(e,t,n);if(s===-1)return s;let i=this.valueHexView;return i[0]===0&&(i[1]&128)!==0?this.valueHexView=i.subarray(1):o!==0&&i.length<o&&(o-i.length>1&&(o=i.length+1),this.valueHexView=i.subarray(o-i.length)),s}toDER(e=!1){let t=this.valueHexView;switch(!0){case(t[0]&128)!==0:{let n=new Uint8Array(this.valueHexView.length+1);n[0]=0,n.set(t,1),this.valueHexView=n}break;case(t[0]===0&&(t[1]&128)===0):this.valueHexView=this.valueHexView.subarray(1);break}return this.toBER(e)}fromBER(e,t,n){let o=super.fromBER(e,t,n);return o===-1||this.setValueHex(),o}toBER(e){return e?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){let e=this.valueHexView.length*8-1,t=new Uint8Array(this.valueHexView.length*8/3),n=0,o,s=this.valueHexView,i="",a=!1;for(let c=s.byteLength-1;c>=0;c--){o=s[c];for(let l=0;l<8;l++){if((o&1)===1)switch(n){case e:t=kC(Fv(n),t),i="-";break;default:t=IC(t,Fv(n))}n++,o>>=1}}for(let c=0;c<t.length;c++)t[c]&&(a=!0),a&&(i+=Uv.charAt(t[c]));return a===!1&&(i+=Uv.charAt(0)),i}};Yv=ha;ha.NAME="IntegerValueBlock";Object.defineProperty(Yv.prototype,"valueHex",{set:function(r){this.valueHexView=new Uint8Array(r),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});var ua,Mr=class extends He{constructor(e={}){super(e,ha),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return Qu(),BigInt(this.valueBlock.toString())}static fromBigInt(e){Qu();let t=BigInt(e),n=new fa,o=t.toString(16).replace(/^-/,""),s=new Uint8Array(re.Convert.FromHex(o));if(t<0){let a=new Uint8Array(s.length+(s[0]&128?1:0));a[0]|=128;let l=BigInt(`0x${re.Convert.ToHex(a)}`)+t,u=re.BufferSourceConverter.toUint8Array(re.Convert.FromHex(l.toString(16)));u[0]|=128,n.write(u)}else s[0]&128&&n.write(new Uint8Array([0])),n.write(s);return new ua({valueHex:n.final()})}convertToDER(){let e=new ua({valueHex:this.valueBlock.valueHexView});return e.valueBlock.toDER(),e}convertFromDER(){return new ua({valueHex:this.valueBlock.valueHexView[0]===0?this.valueBlock.valueHexView.subarray(1):this.valueBlock.valueHexView})}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()}`}};ua=Mr;U.Integer=ua;Mr.NAME="INTEGER";var Zv,hf=class extends Mr{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}};Zv=hf;U.Enumerated=Zv;hf.NAME="ENUMERATED";var pa=class extends Fr(tt){constructor({valueDec:e=-1,isFirstSid:t=!1,...n}={}){super(n),this.valueDec=e,this.isFirstSid=t}fromBER(e,t,n){if(!n)return t;let o=re.BufferSourceConverter.toUint8Array(e);if(!Ur(this,o,t,n))return-1;let s=o.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,(s[a]&128)!==0);a++);let i=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)i[a]=this.valueHexView[a];return this.valueHexView=i,(s[this.blockLength-1]&128)!==0?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=io(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}set valueBigInt(e){Qu();let t=BigInt(e).toString(2);for(;t.length%7;)t="0"+t;let n=new Uint8Array(t.length/7);for(let o=0;o<n.length;o++)n[o]=parseInt(t.slice(o*7,o*7+7),2)+(o+1<n.length?128:0);this.fromBER(n.buffer,0,n.length)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let o=this.valueHexView,s=new Uint8Array(this.blockLength);for(let i=0;i<this.blockLength-1;i++)s[i]=o[i]|128;return s[this.blockLength-1]=o[this.blockLength-1],s.buffer}let t=dn(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",mr;let n=new Uint8Array(t.byteLength);if(!e){let o=new Uint8Array(t),s=t.byteLength-1;for(let i=0;i<s;i++)n[i]=o[i]|128;n[s]=o[s]}return n}toString(){let e="";if(this.isHexOnly)e=re.Convert.ToHex(this.valueHexView);else if(this.isFirstSid){let t=this.valueDec;this.valueDec<=39?e="0.":this.valueDec<=79?(e="1.",t-=40):(e="2.",t-=80),e+=t.toString()}else e=this.valueDec.toString();return e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}};pa.NAME="sidBlock";var pf=class extends tt{constructor({value:e=vs,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let o=t;for(;n>0;){let s=new pa;if(o=s.fromBER(e,o,n),o===-1)return this.blockLength=0,this.error=s.error,o;this.value.length===0&&(s.isFirstSid=!0),this.blockLength+=s.blockLength,n-=s.blockLength,this.value.push(s)}return o}toBER(e){let t=[];for(let n=0;n<this.value.length;n++){let o=this.value[n].toBER(e);if(o.byteLength===0)return this.error=this.value[n].error,mr;t.push(o)}return ag(t)}fromString(e){this.value=[];let t=0,n=0,o="",s=!1;do if(n=e.indexOf(".",t),n===-1?o=e.substring(t):o=e.substring(t,n),t=n+1,s){let i=this.value[0],a=0;switch(i.valueDec){case 0:break;case 1:a=40;break;case 2:a=80;break;default:this.value=[];return}let c=parseInt(o,10);if(isNaN(c))return;i.valueDec=c+a,s=!1}else{let i=new pa;if(o>Number.MAX_SAFE_INTEGER){Qu();let a=BigInt(o);i.valueBigInt=a}else if(i.valueDec=parseInt(o,10),isNaN(i.valueDec))return;this.value.length||(i.isFirstSid=!0,s=!0),this.value.push(i)}while(n!==-1)}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let o=this.value[n].toString();n!==0&&(e=`${e}.`),t?(o=`{${o}}`,this.value[n].isFirstSid?e=`2.{${o} - 80}`:e+=o):e+=o}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};pf.NAME="ObjectIdentifierValueBlock";var Xv,pr=class extends He{getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}constructor(e={}){super(e,pf),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};Xv=pr;U.ObjectIdentifier=Xv;pr.NAME="OBJECT IDENTIFIER";var ma=class extends Fr(Nr){constructor({valueDec:e=0,...t}={}){super(t),this.valueDec=e}fromBER(e,t,n){if(n===0)return t;let o=re.BufferSourceConverter.toUint8Array(e);if(!Ur(this,o,t,n))return-1;let s=o.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,(s[a]&128)!==0);a++);let i=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)i[a]=this.valueHexView[a];return this.valueHexView=i,(s[this.blockLength-1]&128)!==0?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=io(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let o=this.valueHexView,s=new Uint8Array(this.blockLength);for(let i=0;i<this.blockLength-1;i++)s[i]=o[i]|128;return s[this.blockLength-1]=o[this.blockLength-1],s.buffer}let t=dn(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",mr;let n=new Uint8Array(t.byteLength);if(!e){let o=new Uint8Array(t),s=t.byteLength-1;for(let i=0;i<s;i++)n[i]=o[i]|128;n[s]=o[s]}return n.buffer}toString(){let e="";return this.isHexOnly?e=re.Convert.ToHex(this.valueHexView):e=this.valueDec.toString(),e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}};ma.NAME="relativeSidBlock";var mf=class extends tt{constructor({value:e=vs,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let o=t;for(;n>0;){let s=new ma;if(o=s.fromBER(e,o,n),o===-1)return this.blockLength=0,this.error=s.error,o;this.blockLength+=s.blockLength,n-=s.blockLength,this.value.push(s)}return o}toBER(e,t){let n=[];for(let o=0;o<this.value.length;o++){let s=this.value[o].toBER(e);if(s.byteLength===0)return this.error=this.value[o].error,mr;n.push(s)}return ag(n)}fromString(e){this.value=[];let t=0,n=0,o="";do{n=e.indexOf(".",t),n===-1?o=e.substring(t):o=e.substring(t,n),t=n+1;let s=new ma;if(s.valueDec=parseInt(o,10),isNaN(s.valueDec))return!0;this.value.push(s)}while(n!==-1);return!0}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let o=this.value[n].toString();n!==0&&(e=`${e}.`),t&&(o=`{${o}}`),e+=o}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};mf.NAME="RelativeObjectIdentifierValueBlock";var Jv,gf=class extends He{getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}constructor(e={}){super(e,mf),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};Jv=gf;U.RelativeObjectIdentifier=Jv;gf.NAME="RelativeObjectIdentifier";var Qv,ft=class extends hn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}};Qv=ft;U.Sequence=Qv;ft.NAME="SEQUENCE";var eE,yf=class extends hn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}};eE=yf;U.Set=eE;yf.NAME="SET";var wf=class extends Fr(tt){constructor({...e}={}){super(e),this.isHexOnly=!0,this.value=vs}toJSON(){return{...super.toJSON(),value:this.value}}};wf.NAME="StringValueBlock";var bf=class extends wf{};bf.NAME="SimpleStringValueBlock";var st=class extends rf{constructor({...e}={}){super(e,bf)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,re.BufferSourceConverter.toUint8Array(e))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=e.charCodeAt(o);this.valueBlock.value=e}};st.NAME="SIMPLE STRING";var xf=class extends st{fromBuffer(e){this.valueBlock.valueHexView=re.BufferSourceConverter.toUint8Array(e);try{this.valueBlock.value=re.Convert.ToUtf8String(e)}catch(t){this.warnings.push(`Error during "decodeURIComponent": ${t}, using raw string`),this.valueBlock.value=re.Convert.ToBinary(e)}}fromString(e){this.valueBlock.valueHexView=new Uint8Array(re.Convert.FromUtf8String(e)),this.valueBlock.value=e}};xf.NAME="Utf8StringValueBlock";var tE,Or=class extends xf{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}};tE=Or;U.Utf8String=tE;Or.NAME="UTF8String";var vf=class extends st{fromBuffer(e){this.valueBlock.value=re.Convert.ToUtf16String(e),this.valueBlock.valueHexView=re.BufferSourceConverter.toUint8Array(e)}fromString(e){this.valueBlock.value=e,this.valueBlock.valueHexView=new Uint8Array(re.Convert.FromUtf16String(e))}};vf.NAME="BmpStringValueBlock";var rE,Ef=class extends vf{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}};rE=Ef;U.BmpString=rE;Ef.NAME="BMPString";var Af=class extends st{fromBuffer(e){let t=ArrayBuffer.isView(e)?e.slice().buffer:e.slice(0),n=new Uint8Array(t);for(let o=0;o<n.length;o+=4)n[o]=n[o+3],n[o+1]=n[o+2],n[o+2]=0,n[o+3]=0;this.valueBlock.value=String.fromCharCode.apply(null,new Uint32Array(t))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t*4);for(let o=0;o<t;o++){let s=dn(e.charCodeAt(o),8),i=new Uint8Array(s);if(i.length>4)continue;let a=4-i.length;for(let c=i.length-1;c>=0;c--)n[o*4+c+a]=i[c]}this.valueBlock.value=e}};Af.NAME="UniversalStringValueBlock";var nE,Sf=class extends Af{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}};nE=Sf;U.UniversalString=nE;Sf.NAME="UniversalString";var oE,If=class extends st{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}};oE=If;U.NumericString=oE;If.NAME="NumericString";var sE,kf=class extends st{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}};sE=kf;U.PrintableString=sE;kf.NAME="PrintableString";var iE,_f=class extends st{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}};iE=_f;U.TeletexString=iE;_f.NAME="TeletexString";var aE,Cf=class extends st{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}};aE=Cf;U.VideotexString=aE;Cf.NAME="VideotexString";var cE,Tf=class extends st{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}};cE=Tf;U.IA5String=cE;Tf.NAME="IA5String";var lE,Bf=class extends st{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}};lE=Bf;U.GraphicString=lE;Bf.NAME="GraphicString";var uE,ga=class extends st{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}};uE=ga;U.VisibleString=uE;ga.NAME="VisibleString";var fE,Lf=class extends st{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}};fE=Lf;U.GeneralString=fE;Lf.NAME="GeneralString";var dE,Pf=class extends st{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}};dE=Pf;U.CharacterString=dE;Pf.NAME="CharacterString";var hE,ya=class extends ga{constructor({value:e,valueDate:t,...n}={}){if(super(n),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,e){this.fromString(e),this.valueBlock.valueHexView=new Uint8Array(e.length);for(let o=0;o<e.length;o++)this.valueBlock.valueHexView[o]=e.charCodeAt(o)}t&&(this.fromDate(t),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(e){this.fromString(String.fromCharCode.apply(null,re.BufferSourceConverter.toUint8Array(e)))}toBuffer(){let e=this.toString(),t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let o=0;o<e.length;o++)n[o]=e.charCodeAt(o);return t}fromDate(e){this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(e){let n=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/ig.exec(e);if(n===null){this.error="Wrong input string for conversion";return}let o=parseInt(n[1],10);o>=50?this.year=1900+o:this.year=2e3+o,this.month=parseInt(n[2],10),this.day=parseInt(n[3],10),this.hour=parseInt(n[4],10),this.minute=parseInt(n[5],10),this.second=parseInt(n[6],10)}toString(e="iso"){if(e==="iso"){let t=new Array(7);return t[0]=ut(this.year<2e3?this.year-1900:this.year-2e3,2),t[1]=ut(this.month,2),t[2]=ut(this.day,2),t[3]=ut(this.hour,2),t[4]=ut(this.minute,2),t[5]=ut(this.second,2),t[6]="Z",t.join("")}return super.toString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.toDate().toISOString()}`}toJSON(){return{...super.toJSON(),year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second}}};hE=ya;U.UTCTime=hE;ya.NAME="UTCTime";var pE,Df=class extends ya{constructor(e={}){var t;super(e),(t=this.millisecond)!==null&&t!==void 0||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(e){super.fromDate(e),this.millisecond=e.getUTCMilliseconds()}toDate(){let e=Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond);return new Date(e)}fromString(e){let t=!1,n="",o="",s=0,i,a=0,c=0;if(e[e.length-1]==="Z")n=e.substring(0,e.length-1),t=!0;else{let f=new Number(e[e.length-1]);if(isNaN(f.valueOf()))throw new Error("Wrong input string for conversion");n=e}if(t){if(n.indexOf("+")!==-1)throw new Error("Wrong input string for conversion");if(n.indexOf("-")!==-1)throw new Error("Wrong input string for conversion")}else{let f=1,d=n.indexOf("+"),h="";if(d===-1&&(d=n.indexOf("-"),f=-1),d!==-1){if(h=n.substring(d+1),n=n.substring(0,d),h.length!==2&&h.length!==4)throw new Error("Wrong input string for conversion");let p=parseInt(h.substring(0,2),10);if(isNaN(p.valueOf()))throw new Error("Wrong input string for conversion");if(a=f*p,h.length===4){if(p=parseInt(h.substring(2,4),10),isNaN(p.valueOf()))throw new Error("Wrong input string for conversion");c=f*p}}}let l=n.indexOf(".");if(l===-1&&(l=n.indexOf(",")),l!==-1){let f=new Number(`0${n.substring(l)}`);if(isNaN(f.valueOf()))throw new Error("Wrong input string for conversion");s=f.valueOf(),o=n.substring(0,l)}else o=n;switch(!0){case o.length===8:if(i=/(\d{4})(\d{2})(\d{2})/ig,l!==-1)throw new Error("Wrong input string for conversion");break;case o.length===10:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let f=60*s;this.minute=Math.floor(f),f=60*(f-this.minute),this.second=Math.floor(f),f=1e3*(f-this.second),this.millisecond=Math.floor(f)}break;case o.length===12:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let f=60*s;this.second=Math.floor(f),f=1e3*(f-this.second),this.millisecond=Math.floor(f)}break;case o.length===14:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let f=1e3*s;this.millisecond=Math.floor(f)}break;default:throw new Error("Wrong input string for conversion")}let u=i.exec(o);if(u===null)throw new Error("Wrong input string for conversion");for(let f=1;f<u.length;f++)switch(f){case 1:this.year=parseInt(u[f],10);break;case 2:this.month=parseInt(u[f],10);break;case 3:this.day=parseInt(u[f],10);break;case 4:this.hour=parseInt(u[f],10)+a;break;case 5:this.minute=parseInt(u[f],10)+c;break;case 6:this.second=parseInt(u[f],10);break;default:throw new Error("Wrong input string for conversion")}if(t===!1){let f=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=f.getUTCFullYear(),this.month=f.getUTCMonth(),this.day=f.getUTCDay(),this.hour=f.getUTCHours(),this.minute=f.getUTCMinutes(),this.second=f.getUTCSeconds(),this.millisecond=f.getUTCMilliseconds()}}toString(e="iso"){if(e==="iso"){let t=[];return t.push(ut(this.year,4)),t.push(ut(this.month,2)),t.push(ut(this.day,2)),t.push(ut(this.hour,2)),t.push(ut(this.minute,2)),t.push(ut(this.second,2)),this.millisecond!==0&&(t.push("."),t.push(ut(this.millisecond,3))),t.push("Z"),t.join("")}return super.toString(e)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}};pE=Df;U.GeneralizedTime=pE;Df.NAME="GeneralizedTime";var mE,Nf=class extends Or{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}};mE=Nf;U.DATE=mE;Nf.NAME="DATE";var gE,Rf=class extends Or{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}};gE=Rf;U.TimeOfDay=gE;Rf.NAME="TimeOfDay";var yE,Mf=class extends Or{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}};yE=Mf;U.DateTime=yE;Mf.NAME="DateTime";var wE,Of=class extends Or{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}};wE=Of;U.Duration=wE;Of.NAME="Duration";var bE,Uf=class extends Or{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}};bE=Uf;U.TIME=bE;Uf.NAME="TIME";async function Vf(r,e){let n=await bs.create().encrypt(r,e);return je.encode(n)}async function ug(r,e,t){if(r.type==="RSA")return BC(r,e,t);if(r.type==="Ed25519")return _C(r,e,t);if(r.type==="secp256k1")return CC(r,e,t);if(r.type==="ECDSA")return TC(r,e,t);throw new Dt}async function _C(r,e,t="libp2p-key"){if(t==="libp2p-key")return Vf(Rn(r),e);throw new k(`export format '${t}' is not supported`)}async function CC(r,e,t="libp2p-key"){if(t==="libp2p-key")return Vf(Rn(r),e);throw new k("Export format is not supported")}async function TC(r,e,t="libp2p-key"){if(t==="libp2p-key")return Vf(Rn(r),e);throw new k(`export format '${t}' is not supported`)}async function BC(r,e,t="pkcs-8"){if(t==="pkcs-8")return LC(r,e);if(t==="libp2p-key")return Vf(Rn(r),e);throw new k("Export format is not supported")}async function LC(r,e){let t=Se.get(),o=new ft({value:[new Mr({value:0}),new ft({value:[new pr({value:"1.2.840.113549.1.1.1"}),new ao]}),new Rr({valueHex:r.raw})]}).toBER(),s=new Uint8Array(o,0,o.byteLength),i=Ft(16),a=await ec(jr,e,i,{c:1e4,dkLen:32}),c=Ft(16),l=await t.subtle.importKey("raw",a,"AES-CBC",!1,["encrypt"]),u=await t.subtle.encrypt({name:"AES-CBC",iv:c},l,s),f=new ft({value:[new Rr({valueHex:i}),new Mr({value:1e4}),new Mr({value:32}),new ft({value:[new pr({value:"1.2.840.113549.2.11"}),new ao]})]}),d=new ft({value:[new pr({value:"1.2.840.113549.1.5.13"}),new ft({value:[new ft({value:[new pr({value:"1.2.840.113549.1.5.12"}),f]}),new ft({value:[new pr({value:"2.16.840.1.101.3.4.1.42"}),new Rr({valueHex:c})]})]})]}),p=new ft({value:[d,new Rr({valueHex:u})]}).toBER(),g=new Uint8Array(p,0,p.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...M(g,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
51
- `)}async function fg(r,e){try{let t=await PC(r,e);return A0(t)}catch{}if(!r.includes("BEGIN"))throw new k("Encrypted key was not a libp2p-key or a PEM file");return DC(r,e)}async function PC(r,e){let t=je.decode(r);return bs.create().decrypt(t,e)}async function DC(r,e){let t=Se.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let s=B(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:i}=$f(s),{iv:a,salt:c,iterations:l,keySize:u,cipherText:f}=NC(i),d=await ec(jr,e,c,{c:l,dkLen:u}),h=await t.subtle.importKey("raw",d,"AES-CBC",!1,["decrypt"]),p=wa(await t.subtle.decrypt({name:"AES-CBC",iv:a},h,f)),{result:g}=$f(p);n=AE(g)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let s=B(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:i}=$f(s);n=AE(i)}else throw new k("Could not parse private key from PEM data");let o=S0(n);if(o.type!=="RSA")throw new k("Could not parse RSA private key from PEM data");return o}function NC(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new k("Only pkcs5PBES2 encrypted private keys are supported");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new k("Only pkcs5PBKDF2 key derivation functions are supported");let s=n.valueBlock.value[1],i=wa(s.valueBlock.value[0].getValue()),a=1e4,c=32;if(s.valueBlock.value.length===3)a=Number(s.valueBlock.value[1].toBigInt()),c=Number(s.valueBlock.value[2].toBigInt());else if(s.valueBlock.value.length===2)throw new k("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key");let l=e.valueBlock.value[1].valueBlock.value[1],u=l.valueBlock.value[0].toString();if(u!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(u!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(u!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(u!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(u!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new k("Only AES-CBC encryption schemes are supported")}}}}let f=wa(l.valueBlock.value[1].getValue());return{cipherText:wa(r.valueBlock.value[1].getValue()),salt:i,iterations:a,keySize:c,iv:f}}function AE(r){return wa(r.valueBlock.value[2].getValue())}function wa(r){return new Uint8Array(r,0,r.byteLength)}var RC="/pkcs8/",dg="/info/",ba=new WeakMap,co={minKeyLength:112/8,minSaltLength:128/8,minIterationCount:1e3};function Es(r){return r==null||typeof r!="string"?!1:r===(0,SE.default)(r.trim())&&r.length>0}async function qe(){let t=Math.random()*800+200;await new Promise(n=>setTimeout(n,t))}function lo(r){return new ge(RC+r)}function As(r){return new ge(dg+r)}async function MC(r){let e=Rn(r),t=await Rt.digest(e);return le.encode(t.bytes).substring(1)}var Kf=class{components;init;log;self;constructor(e,t){if(this.components=e,this.log=e.logger.forComponent("libp2p:keychain"),this.init={...t,dek:{...og,...t.dek}},this.self=t.selfKey??"self",this.init.pass!=null&&this.init.pass?.length<20)throw new Error("pass must be least 20 characters");if(this.init.dek?.keyLength!=null&&this.init.dek.keyLength<co.minKeyLength)throw new Error(`dek.keyLength must be least ${co.minKeyLength} bytes`);if(this.init.dek?.salt?.length!=null&&this.init.dek.salt.length<co.minSaltLength)throw new Error(`dek.saltLength must be least ${co.minSaltLength} bytes`);if(this.init.dek?.iterationCount!=null&&this.init.dek.iterationCount<co.minIterationCount)throw new Error(`dek.iterationCount must be least ${co.minIterationCount}`);let n=this.init.pass!=null&&this.init.dek?.salt!=null?ii(this.init.pass,this.init.dek?.salt,this.init.dek?.iterationCount,this.init.dek?.keyLength,this.init.dek?.hash):"";ba.set(this,{dek:n})}[Symbol.toStringTag]="@libp2p/keychain";[wn]=["@libp2p/keychain"];static generateOptions(){let e=Object.assign({},this.options),t=Math.ceil(co.minSaltLength/3)*3;return e.dek!=null&&(e.dek.salt=M(Ft(t),"base64")),e}static get options(){return{dek:{...og}}}async findKeyByName(e){if(!Es(e))throw await qe(),new k(`Invalid key name '${e}'`);let t=As(e);try{let n=await this.components.datastore.get(t);return JSON.parse(M(n))}catch(n){throw await qe(),this.log.error("could not read key from datastore - %e",n),new ke(`Key '${e}' does not exist.`)}}async findKeyById(e){try{let t={prefix:dg};for await(let n of this.components.datastore.query(t)){let o=JSON.parse(M(n.value));if(o.id===e)return o}throw new k(`Key with id '${e}' does not exist.`)}catch(t){throw await qe(),t}}async importKey(e,t){if(!Es(e))throw await qe(),new k(`Invalid key name '${e}'`);if(t==null)throw await qe(),new k("Key is required");let n=lo(e);if(await this.components.datastore.has(n))throw await qe(),new k(`Key '${e}' already exists`);let s,i;try{s=await MC(t);let l=ba.get(this);if(l==null)throw new k("dek missing");let u=l.dek;i=await ug(t,u,t.type==="RSA"?"pkcs-8":"libp2p-key")}catch(l){throw await qe(),l}let a={name:e,id:s},c=this.components.datastore.batch();return c.put(n,B(i)),c.put(As(e),B(JSON.stringify(a))),await c.commit(),a}async exportKey(e){if(!Es(e))throw await qe(),new k(`Invalid key name '${e}'`);let t=lo(e);try{let n=await this.components.datastore.get(t),o=M(n),s=ba.get(this);if(s==null)throw new k("dek missing");let i=s.dek;return await fg(o,i)}catch(n){throw await qe(),n}}async removeKey(e){if(!Es(e)||e===this.self)throw await qe(),new k(`Invalid key name '${e}'`);let t=lo(e),n=await this.findKeyByName(e),o=this.components.datastore.batch();return o.delete(t),o.delete(As(e)),await o.commit(),n}async listKeys(){let e={prefix:dg},t=[];for await(let n of this.components.datastore.query(e))t.push(JSON.parse(M(n.value)));return t}async renameKey(e,t){if(!Es(e)||e===this.self)throw await qe(),new k(`Invalid old key name '${e}'`);if(!Es(t)||t===this.self)throw await qe(),new k(`Invalid new key name '${t}'`);let n=lo(e),o=lo(t),s=As(e),i=As(t);if(await this.components.datastore.has(o))throw await qe(),new k(`Key '${t}' already exists`);try{let c=await this.components.datastore.get(n),l=await this.components.datastore.get(s),u=JSON.parse(M(l));u.name=t;let f=this.components.datastore.batch();return f.put(o,c),f.put(i,B(JSON.stringify(u))),f.delete(n),f.delete(s),await f.commit(),u}catch(c){throw await qe(),c}}async rotateKeychainPass(e,t){if(typeof e!="string")throw await qe(),new k(`Invalid old pass type '${typeof e}'`);if(typeof t!="string")throw await qe(),new k(`Invalid new pass type '${typeof t}'`);if(t.length<20)throw await qe(),new k(`Invalid pass length ${t.length}`);this.log("recreating keychain");let n=ba.get(this);if(n==null)throw new k("dek missing");let o=n.dek;this.init.pass=t;let s=t!=null&&this.init.dek?.salt!=null?ii(t,this.init.dek.salt,this.init.dek?.iterationCount,this.init.dek?.keyLength,this.init.dek?.hash):"";ba.set(this,{dek:s});let i=await this.listKeys();for(let a of i){let c=await this.components.datastore.get(lo(a.name)),l=M(c),u=await fg(l,o),f=s.toString(),d=await ug(u,f,u.type==="RSA"?"pkcs-8":"libp2p-key"),h=this.components.datastore.batch(),p={name:a.name,id:a.id};h.put(lo(a.name),B(d)),h.put(As(a.name),B(JSON.stringify(p))),await h.commit()}this.log("keychain reconstructed")}};function Hf(r={}){return e=>new Kf(e,r)}async function hg(r,e={}){let t=e.selfKey??"self",n=Hf(e)({datastore:r,logger:fr()}),o;return await r.has(new ge(`/pkcs8/${t}`))?o=await n.exportKey(t):(o=await Ja(e.keyType??"Ed25519"),await n.importKey(t,o)),o}function IE(r={}){let e=`@helia/http ${ju()}`;return{privateKey:r.privateKey,dns:r.dns,nodeInfo:{userAgent:e},addresses:{listen:[]},transports:[],connectionEncrypters:[],streamMuxers:[],peerDiscovery:[],services:{delegatedRouting:()=>Bx("https://delegated-ipfs.dev",{filterAddrs:["https"],filterProtocols:["transport-ipfs-gateway-http"]}),keychain:Hf(r.keychain)}}}async function kE(r){let e=r.libp2p??{};e.privateKey==null&&r.datastore!=null&&(e.privateKey=await hg(r.datastore,r.keychain));let t=IE(e);return t.datastore=t.datastore??r.datastore,await Sv({...t,...e,start:!1})}async function _E(r={}){let e=r.datastore??new no,t=r.blockstore??new Xi,n;return Iv(r.libp2p)?n=r.libp2p:n=await kE({...r,libp2p:{dns:r.dns,...r.libp2p,start:void 0},datastore:e}),{...r,libp2p:n,datastore:e,blockstore:t,blockBrokers:r.blockBrokers??[xm()],routers:r.routers??[Dm(n),Lm()],metrics:n.metrics}}async function OC(r={}){let e=await _E(r),t=new Ml(e);return e.start!==!1&&await t.start(),t}return DE(UC);})();
50
+ `)}`:`${t} :`}};Wv=hn;U.Constructed=Wv;hn.NAME="CONSTRUCTED";var af=class extends et{fromBER(e,t,n){return t}toBER(e){return mr}};af.override="EndOfContentValueBlock";var jv,cf=class extends He{constructor(e={}){super(e,af),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}};jv=cf;U.EndOfContent=jv;cf.NAME=fa;var Yv,ao=class extends He{constructor(e={}){super(e,et),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(e,t,n){return this.lenBlock.length>0&&this.warnings.push("Non-zero length of value block for Null type"),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=n,t+n>e.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):t+n}toBER(e,t){let n=new ArrayBuffer(2);if(!e){let o=new Uint8Array(n);o[0]=5,o[1]=0}return t&&t.write(n),n}onAsciiEncoding(){return`${this.constructor.NAME}`}};Yv=ao;U.Null=Yv;ao.NAME="NULL";var lf=class extends Fr(et){get value(){for(let e of this.valueHexView)if(e>0)return!0;return!1}set value(e){this.valueHexView[0]=e?255:0}constructor({value:e,...t}={}){super(t),t.valueHex?this.valueHexView=re.BufferSourceConverter.toUint8Array(t.valueHex):this.valueHexView=new Uint8Array(1),e&&(this.value=e)}fromBER(e,t,n){let o=re.BufferSourceConverter.toUint8Array(e);return Ur(this,o,t,n)?(this.valueHexView=o.subarray(t,t+n),n>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,ag.call(this),this.blockLength=n,t+n):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}};lf.NAME="BooleanValueBlock";var Zv,uf=class extends He{getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}constructor(e={}){super(e,lf),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}};Zv=uf;U.Boolean=Zv;uf.NAME="BOOLEAN";var ff=class extends Fr(hr){constructor({isConstructed:e=!1,...t}={}){super(t),this.isConstructed=e}fromBER(e,t,n){let o=0;if(this.isConstructed){if(this.isHexOnly=!1,o=hr.prototype.fromBER.call(this,e,t,n),o===-1)return o;for(let s=0;s<this.value.length;s++){let i=this.value[s].constructor.NAME;if(i===fa){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(i!==Hv)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,o=super.fromBER(e,t,n),this.blockLength=n;return o}toBER(e,t){return this.isConstructed?hr.prototype.toBER.call(this,e,t):e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}};ff.NAME="OctetStringValueBlock";var ug,Rr=class extends He{constructor({idBlock:e={},lenBlock:t={},...n}={}){var o,s;(o=n.isConstructed)!==null&&o!==void 0||(n.isConstructed=!!(!((s=n.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},ff),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(e,t,n){if(this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,n===0)return this.idBlock.error.length===0&&(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length===0&&(this.blockLength+=this.lenBlock.blockLength),t;if(!this.valueBlock.isConstructed){let s=(e instanceof ArrayBuffer?new Uint8Array(e):e).subarray(t,t+n);try{if(s.byteLength){let i=$f(s,0,s.byteLength);i.offset!==-1&&i.offset===n&&(this.valueBlock.value=[i.result])}}catch{}}return super.fromBER(e,t,n)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return hn.prototype.onAsciiEncoding.call(this);let e=this.constructor.NAME,t=re.Convert.ToHex(this.valueBlock.valueHexView);return`${e} : ${t}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;let e=[];for(let t of this.valueBlock.value)t instanceof ug&&e.push(t.valueBlock.valueHexView);return re.BufferSourceConverter.concat(e)}};ug=Rr;U.OctetString=ug;Rr.NAME=Hv;var df=class extends Fr(hr){constructor({unusedBits:e=0,isConstructed:t=!1,...n}={}){super(n),this.unusedBits=e,this.isConstructed=t,this.blockLength=this.valueHexView.byteLength}fromBER(e,t,n){if(!n)return t;let o=-1;if(this.isConstructed){if(o=hr.prototype.fromBER.call(this,e,t,n),o===-1)return o;for(let a of this.value){let c=a.constructor.NAME;if(c===fa){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(c!==qv)return this.error="BIT STRING may consists of BIT STRINGs only",-1;let l=a.valueBlock;if(this.unusedBits>0&&l.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=l.unusedBits}return o}let s=re.BufferSourceConverter.toUint8Array(e);if(!Ur(this,s,t,n))return-1;let i=s.subarray(t,t+n);if(this.unusedBits=i[0],this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1;if(!this.unusedBits){let a=i.subarray(1);try{if(a.byteLength){let c=$f(a,0,a.byteLength);c.offset!==-1&&c.offset===n-1&&(this.value=[c.result])}}catch{}}return this.valueHexView=i.subarray(1),this.blockLength=i.length,t+n}toBER(e,t){if(this.isConstructed)return hr.prototype.toBER.call(this,e,t);if(e)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength){let o=new Uint8Array(1);return o[0]=0,o.buffer}let n=new Uint8Array(this.valueHexView.length+1);return n[0]=this.unusedBits,n.set(this.valueHexView,1),n.buffer}toJSON(){return{...super.toJSON(),unusedBits:this.unusedBits,isConstructed:this.isConstructed}}};df.NAME="BitStringValueBlock";var Xv,hf=class extends He{constructor({idBlock:e={},lenBlock:t={},...n}={}){var o,s;(o=n.isConstructed)!==null&&o!==void 0||(n.isConstructed=!!(!((s=n.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},df),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(e,t,n){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(e,t,n)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return hn.prototype.onAsciiEncoding.call(this);{let e=[],t=this.valueBlock.valueHexView;for(let i of t)e.push(i.toString(2).padStart(8,"0"));let n=e.join(""),o=this.constructor.NAME,s=n.substring(0,n.length-this.valueBlock.unusedBits);return`${o} : ${s}`}}};Xv=hf;U.BitString=Xv;hf.NAME=qv;var Jv;function CC(r,e){let t=new Uint8Array([0]),n=new Uint8Array(r),o=new Uint8Array(e),s=n.slice(0),i=s.length-1,a=o.slice(0),c=a.length-1,l=0,u=c<i?i:c,f=0;for(let d=u;d>=0;d--,f++){switch(!0){case f<a.length:l=s[i-f]+a[c-f]+t[0];break;default:l=s[i-f]+t[0]}switch(t[0]=l/10,!0){case f>=s.length:s=Qu(new Uint8Array([l%10]),s);break;default:s[i-f]=l%10}}return t[0]>0&&(s=Qu(t,s)),s}function Kv(r){if(r>=ca.length)for(let e=ca.length;e<=r;e++){let t=new Uint8Array([0]),n=ca[e-1].slice(0);for(let o=n.length-1;o>=0;o--){let s=new Uint8Array([(n[o]<<1)+t[0]]);t[0]=s[0]/10,n[o]=s[0]%10}t[0]>0&&(n=Qu(t,n)),ca.push(n)}return ca[r]}function TC(r,e){let t=0,n=new Uint8Array(r),o=new Uint8Array(e),s=n.slice(0),i=s.length-1,a=o.slice(0),c=a.length-1,l,u=0;for(let f=c;f>=0;f--,u++)switch(l=s[i-u]-a[c-u]-t,!0){case l<0:t=1,s[i-u]=l+10;break;default:t=0,s[i-u]=l}if(t>0)for(let f=i-c+1;f>=0;f--,u++)if(l=s[i-u]-t,l<0)t=1,s[i-u]=l+10;else{t=0,s[i-u]=l;break}return s.slice()}var da=class extends Fr(et){setValueHex(){this.valueHexView.length>=4?(this.warnings.push("Too big Integer for decoding, hex only"),this.isHexOnly=!0,this._valueDec=0):(this.isHexOnly=!1,this.valueHexView.length>0&&(this._valueDec=ag.call(this)))}constructor({value:e,...t}={}){super(t),this._valueDec=0,t.valueHex&&this.setValueHex(),e!==void 0&&(this.valueDec=e)}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this.valueHexView=new Uint8Array(Fv(e))}get valueDec(){return this._valueDec}fromDER(e,t,n,o=0){let s=this.fromBER(e,t,n);if(s===-1)return s;let i=this.valueHexView;return i[0]===0&&(i[1]&128)!==0?this.valueHexView=i.subarray(1):o!==0&&i.length<o&&(o-i.length>1&&(o=i.length+1),this.valueHexView=i.subarray(o-i.length)),s}toDER(e=!1){let t=this.valueHexView;switch(!0){case(t[0]&128)!==0:{let n=new Uint8Array(this.valueHexView.length+1);n[0]=0,n.set(t,1),this.valueHexView=n}break;case(t[0]===0&&(t[1]&128)===0):this.valueHexView=this.valueHexView.subarray(1);break}return this.toBER(e)}fromBER(e,t,n){let o=super.fromBER(e,t,n);return o===-1||this.setValueHex(),o}toBER(e){return e?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){let e=this.valueHexView.length*8-1,t=new Uint8Array(this.valueHexView.length*8/3),n=0,o,s=this.valueHexView,i="",a=!1;for(let c=s.byteLength-1;c>=0;c--){o=s[c];for(let l=0;l<8;l++){if((o&1)===1)switch(n){case e:t=TC(Kv(n),t),i="-";break;default:t=CC(t,Kv(n))}n++,o>>=1}}for(let c=0;c<t.length;c++)t[c]&&(a=!0),a&&(i+=Vv.charAt(t[c]));return a===!1&&(i+=Vv.charAt(0)),i}};Jv=da;da.NAME="IntegerValueBlock";Object.defineProperty(Jv.prototype,"valueHex",{set:function(r){this.valueHexView=new Uint8Array(r),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});var la,Mr=class extends He{constructor(e={}){super(e,da),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return ef(),BigInt(this.valueBlock.toString())}static fromBigInt(e){ef();let t=BigInt(e),n=new ua,o=t.toString(16).replace(/^-/,""),s=new Uint8Array(re.Convert.FromHex(o));if(t<0){let a=new Uint8Array(s.length+(s[0]&128?1:0));a[0]|=128;let l=BigInt(`0x${re.Convert.ToHex(a)}`)+t,u=re.BufferSourceConverter.toUint8Array(re.Convert.FromHex(l.toString(16)));u[0]|=128,n.write(u)}else s[0]&128&&n.write(new Uint8Array([0])),n.write(s);return new la({valueHex:n.final()})}convertToDER(){let e=new la({valueHex:this.valueBlock.valueHexView});return e.valueBlock.toDER(),e}convertFromDER(){return new la({valueHex:this.valueBlock.valueHexView[0]===0?this.valueBlock.valueHexView.subarray(1):this.valueBlock.valueHexView})}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()}`}};la=Mr;U.Integer=la;Mr.NAME="INTEGER";var Qv,pf=class extends Mr{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}};Qv=pf;U.Enumerated=Qv;pf.NAME="ENUMERATED";var ha=class extends Fr(et){constructor({valueDec:e=-1,isFirstSid:t=!1,...n}={}){super(n),this.valueDec=e,this.isFirstSid=t}fromBER(e,t,n){if(!n)return t;let o=re.BufferSourceConverter.toUint8Array(e);if(!Ur(this,o,t,n))return-1;let s=o.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,(s[a]&128)!==0);a++);let i=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)i[a]=this.valueHexView[a];return this.valueHexView=i,(s[this.blockLength-1]&128)!==0?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=io(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}set valueBigInt(e){ef();let t=BigInt(e).toString(2);for(;t.length%7;)t="0"+t;let n=new Uint8Array(t.length/7);for(let o=0;o<n.length;o++)n[o]=parseInt(t.slice(o*7,o*7+7),2)+(o+1<n.length?128:0);this.fromBER(n.buffer,0,n.length)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let o=this.valueHexView,s=new Uint8Array(this.blockLength);for(let i=0;i<this.blockLength-1;i++)s[i]=o[i]|128;return s[this.blockLength-1]=o[this.blockLength-1],s.buffer}let t=dn(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",mr;let n=new Uint8Array(t.byteLength);if(!e){let o=new Uint8Array(t),s=t.byteLength-1;for(let i=0;i<s;i++)n[i]=o[i]|128;n[s]=o[s]}return n}toString(){let e="";if(this.isHexOnly)e=re.Convert.ToHex(this.valueHexView);else if(this.isFirstSid){let t=this.valueDec;this.valueDec<=39?e="0.":this.valueDec<=79?(e="1.",t-=40):(e="2.",t-=80),e+=t.toString()}else e=this.valueDec.toString();return e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}};ha.NAME="sidBlock";var mf=class extends et{constructor({value:e=vs,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let o=t;for(;n>0;){let s=new ha;if(o=s.fromBER(e,o,n),o===-1)return this.blockLength=0,this.error=s.error,o;this.value.length===0&&(s.isFirstSid=!0),this.blockLength+=s.blockLength,n-=s.blockLength,this.value.push(s)}return o}toBER(e){let t=[];for(let n=0;n<this.value.length;n++){let o=this.value[n].toBER(e);if(o.byteLength===0)return this.error=this.value[n].error,mr;t.push(o)}return cg(t)}fromString(e){this.value=[];let t=0,n=0,o="",s=!1;do if(n=e.indexOf(".",t),n===-1?o=e.substring(t):o=e.substring(t,n),t=n+1,s){let i=this.value[0],a=0;switch(i.valueDec){case 0:break;case 1:a=40;break;case 2:a=80;break;default:this.value=[];return}let c=parseInt(o,10);if(isNaN(c))return;i.valueDec=c+a,s=!1}else{let i=new ha;if(o>Number.MAX_SAFE_INTEGER){ef();let a=BigInt(o);i.valueBigInt=a}else if(i.valueDec=parseInt(o,10),isNaN(i.valueDec))return;this.value.length||(i.isFirstSid=!0,s=!0),this.value.push(i)}while(n!==-1)}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let o=this.value[n].toString();n!==0&&(e=`${e}.`),t?(o=`{${o}}`,this.value[n].isFirstSid?e=`2.{${o} - 80}`:e+=o):e+=o}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};mf.NAME="ObjectIdentifierValueBlock";var eE,pr=class extends He{getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}constructor(e={}){super(e,mf),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};eE=pr;U.ObjectIdentifier=eE;pr.NAME="OBJECT IDENTIFIER";var pa=class extends Fr(Nr){constructor({valueDec:e=0,...t}={}){super(t),this.valueDec=e}fromBER(e,t,n){if(n===0)return t;let o=re.BufferSourceConverter.toUint8Array(e);if(!Ur(this,o,t,n))return-1;let s=o.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,(s[a]&128)!==0);a++);let i=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)i[a]=this.valueHexView[a];return this.valueHexView=i,(s[this.blockLength-1]&128)!==0?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=io(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let o=this.valueHexView,s=new Uint8Array(this.blockLength);for(let i=0;i<this.blockLength-1;i++)s[i]=o[i]|128;return s[this.blockLength-1]=o[this.blockLength-1],s.buffer}let t=dn(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",mr;let n=new Uint8Array(t.byteLength);if(!e){let o=new Uint8Array(t),s=t.byteLength-1;for(let i=0;i<s;i++)n[i]=o[i]|128;n[s]=o[s]}return n.buffer}toString(){let e="";return this.isHexOnly?e=re.Convert.ToHex(this.valueHexView):e=this.valueDec.toString(),e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}};pa.NAME="relativeSidBlock";var gf=class extends et{constructor({value:e=vs,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let o=t;for(;n>0;){let s=new pa;if(o=s.fromBER(e,o,n),o===-1)return this.blockLength=0,this.error=s.error,o;this.blockLength+=s.blockLength,n-=s.blockLength,this.value.push(s)}return o}toBER(e,t){let n=[];for(let o=0;o<this.value.length;o++){let s=this.value[o].toBER(e);if(s.byteLength===0)return this.error=this.value[o].error,mr;n.push(s)}return cg(n)}fromString(e){this.value=[];let t=0,n=0,o="";do{n=e.indexOf(".",t),n===-1?o=e.substring(t):o=e.substring(t,n),t=n+1;let s=new pa;if(s.valueDec=parseInt(o,10),isNaN(s.valueDec))return!0;this.value.push(s)}while(n!==-1);return!0}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let o=this.value[n].toString();n!==0&&(e=`${e}.`),t&&(o=`{${o}}`),e+=o}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};gf.NAME="RelativeObjectIdentifierValueBlock";var tE,yf=class extends He{getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}constructor(e={}){super(e,gf),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};tE=yf;U.RelativeObjectIdentifier=tE;yf.NAME="RelativeObjectIdentifier";var rE,ut=class extends hn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}};rE=ut;U.Sequence=rE;ut.NAME="SEQUENCE";var nE,wf=class extends hn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}};nE=wf;U.Set=nE;wf.NAME="SET";var bf=class extends Fr(et){constructor({...e}={}){super(e),this.isHexOnly=!0,this.value=vs}toJSON(){return{...super.toJSON(),value:this.value}}};bf.NAME="StringValueBlock";var xf=class extends bf{};xf.NAME="SimpleStringValueBlock";var ot=class extends nf{constructor({...e}={}){super(e,xf)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,re.BufferSourceConverter.toUint8Array(e))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=e.charCodeAt(o);this.valueBlock.value=e}};ot.NAME="SIMPLE STRING";var vf=class extends ot{fromBuffer(e){this.valueBlock.valueHexView=re.BufferSourceConverter.toUint8Array(e);try{this.valueBlock.value=re.Convert.ToUtf8String(e)}catch(t){this.warnings.push(`Error during "decodeURIComponent": ${t}, using raw string`),this.valueBlock.value=re.Convert.ToBinary(e)}}fromString(e){this.valueBlock.valueHexView=new Uint8Array(re.Convert.FromUtf8String(e)),this.valueBlock.value=e}};vf.NAME="Utf8StringValueBlock";var oE,Or=class extends vf{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}};oE=Or;U.Utf8String=oE;Or.NAME="UTF8String";var Ef=class extends ot{fromBuffer(e){this.valueBlock.value=re.Convert.ToUtf16String(e),this.valueBlock.valueHexView=re.BufferSourceConverter.toUint8Array(e)}fromString(e){this.valueBlock.value=e,this.valueBlock.valueHexView=new Uint8Array(re.Convert.FromUtf16String(e))}};Ef.NAME="BmpStringValueBlock";var sE,Af=class extends Ef{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}};sE=Af;U.BmpString=sE;Af.NAME="BMPString";var Sf=class extends ot{fromBuffer(e){let t=ArrayBuffer.isView(e)?e.slice().buffer:e.slice(0),n=new Uint8Array(t);for(let o=0;o<n.length;o+=4)n[o]=n[o+3],n[o+1]=n[o+2],n[o+2]=0,n[o+3]=0;this.valueBlock.value=String.fromCharCode.apply(null,new Uint32Array(t))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t*4);for(let o=0;o<t;o++){let s=dn(e.charCodeAt(o),8),i=new Uint8Array(s);if(i.length>4)continue;let a=4-i.length;for(let c=i.length-1;c>=0;c--)n[o*4+c+a]=i[c]}this.valueBlock.value=e}};Sf.NAME="UniversalStringValueBlock";var iE,If=class extends Sf{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}};iE=If;U.UniversalString=iE;If.NAME="UniversalString";var aE,kf=class extends ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}};aE=kf;U.NumericString=aE;kf.NAME="NumericString";var cE,_f=class extends ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}};cE=_f;U.PrintableString=cE;_f.NAME="PrintableString";var lE,Cf=class extends ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}};lE=Cf;U.TeletexString=lE;Cf.NAME="TeletexString";var uE,Tf=class extends ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}};uE=Tf;U.VideotexString=uE;Tf.NAME="VideotexString";var fE,Bf=class extends ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}};fE=Bf;U.IA5String=fE;Bf.NAME="IA5String";var dE,Lf=class extends ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}};dE=Lf;U.GraphicString=dE;Lf.NAME="GraphicString";var hE,ma=class extends ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}};hE=ma;U.VisibleString=hE;ma.NAME="VisibleString";var pE,Pf=class extends ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}};pE=Pf;U.GeneralString=pE;Pf.NAME="GeneralString";var mE,Df=class extends ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}};mE=Df;U.CharacterString=mE;Df.NAME="CharacterString";var gE,ga=class extends ma{constructor({value:e,valueDate:t,...n}={}){if(super(n),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,e){this.fromString(e),this.valueBlock.valueHexView=new Uint8Array(e.length);for(let o=0;o<e.length;o++)this.valueBlock.valueHexView[o]=e.charCodeAt(o)}t&&(this.fromDate(t),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(e){this.fromString(String.fromCharCode.apply(null,re.BufferSourceConverter.toUint8Array(e)))}toBuffer(){let e=this.toString(),t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let o=0;o<e.length;o++)n[o]=e.charCodeAt(o);return t}fromDate(e){this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(e){let n=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/ig.exec(e);if(n===null){this.error="Wrong input string for conversion";return}let o=parseInt(n[1],10);o>=50?this.year=1900+o:this.year=2e3+o,this.month=parseInt(n[2],10),this.day=parseInt(n[3],10),this.hour=parseInt(n[4],10),this.minute=parseInt(n[5],10),this.second=parseInt(n[6],10)}toString(e="iso"){if(e==="iso"){let t=new Array(7);return t[0]=lt(this.year<2e3?this.year-1900:this.year-2e3,2),t[1]=lt(this.month,2),t[2]=lt(this.day,2),t[3]=lt(this.hour,2),t[4]=lt(this.minute,2),t[5]=lt(this.second,2),t[6]="Z",t.join("")}return super.toString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.toDate().toISOString()}`}toJSON(){return{...super.toJSON(),year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second}}};gE=ga;U.UTCTime=gE;ga.NAME="UTCTime";var yE,Nf=class extends ga{constructor(e={}){var t;super(e),(t=this.millisecond)!==null&&t!==void 0||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(e){super.fromDate(e),this.millisecond=e.getUTCMilliseconds()}toDate(){let e=Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond);return new Date(e)}fromString(e){let t=!1,n="",o="",s=0,i,a=0,c=0;if(e[e.length-1]==="Z")n=e.substring(0,e.length-1),t=!0;else{let f=new Number(e[e.length-1]);if(isNaN(f.valueOf()))throw new Error("Wrong input string for conversion");n=e}if(t){if(n.indexOf("+")!==-1)throw new Error("Wrong input string for conversion");if(n.indexOf("-")!==-1)throw new Error("Wrong input string for conversion")}else{let f=1,d=n.indexOf("+"),h="";if(d===-1&&(d=n.indexOf("-"),f=-1),d!==-1){if(h=n.substring(d+1),n=n.substring(0,d),h.length!==2&&h.length!==4)throw new Error("Wrong input string for conversion");let p=parseInt(h.substring(0,2),10);if(isNaN(p.valueOf()))throw new Error("Wrong input string for conversion");if(a=f*p,h.length===4){if(p=parseInt(h.substring(2,4),10),isNaN(p.valueOf()))throw new Error("Wrong input string for conversion");c=f*p}}}let l=n.indexOf(".");if(l===-1&&(l=n.indexOf(",")),l!==-1){let f=new Number(`0${n.substring(l)}`);if(isNaN(f.valueOf()))throw new Error("Wrong input string for conversion");s=f.valueOf(),o=n.substring(0,l)}else o=n;switch(!0){case o.length===8:if(i=/(\d{4})(\d{2})(\d{2})/ig,l!==-1)throw new Error("Wrong input string for conversion");break;case o.length===10:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let f=60*s;this.minute=Math.floor(f),f=60*(f-this.minute),this.second=Math.floor(f),f=1e3*(f-this.second),this.millisecond=Math.floor(f)}break;case o.length===12:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let f=60*s;this.second=Math.floor(f),f=1e3*(f-this.second),this.millisecond=Math.floor(f)}break;case o.length===14:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let f=1e3*s;this.millisecond=Math.floor(f)}break;default:throw new Error("Wrong input string for conversion")}let u=i.exec(o);if(u===null)throw new Error("Wrong input string for conversion");for(let f=1;f<u.length;f++)switch(f){case 1:this.year=parseInt(u[f],10);break;case 2:this.month=parseInt(u[f],10);break;case 3:this.day=parseInt(u[f],10);break;case 4:this.hour=parseInt(u[f],10)+a;break;case 5:this.minute=parseInt(u[f],10)+c;break;case 6:this.second=parseInt(u[f],10);break;default:throw new Error("Wrong input string for conversion")}if(t===!1){let f=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=f.getUTCFullYear(),this.month=f.getUTCMonth(),this.day=f.getUTCDay(),this.hour=f.getUTCHours(),this.minute=f.getUTCMinutes(),this.second=f.getUTCSeconds(),this.millisecond=f.getUTCMilliseconds()}}toString(e="iso"){if(e==="iso"){let t=[];return t.push(lt(this.year,4)),t.push(lt(this.month,2)),t.push(lt(this.day,2)),t.push(lt(this.hour,2)),t.push(lt(this.minute,2)),t.push(lt(this.second,2)),this.millisecond!==0&&(t.push("."),t.push(lt(this.millisecond,3))),t.push("Z"),t.join("")}return super.toString(e)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}};yE=Nf;U.GeneralizedTime=yE;Nf.NAME="GeneralizedTime";var wE,Rf=class extends Or{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}};wE=Rf;U.DATE=wE;Rf.NAME="DATE";var bE,Mf=class extends Or{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}};bE=Mf;U.TimeOfDay=bE;Mf.NAME="TimeOfDay";var xE,Of=class extends Or{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}};xE=Of;U.DateTime=xE;Of.NAME="DateTime";var vE,Uf=class extends Or{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}};vE=Uf;U.Duration=vE;Uf.NAME="Duration";var EE,Ff=class extends Or{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}};EE=Ff;U.TIME=EE;Ff.NAME="TIME";async function Kf(r,e){let n=await bs.create().encrypt(r,e);return je.encode(n)}async function fg(r,e,t){if(r.type==="RSA")return DC(r,e,t);if(r.type==="Ed25519")return BC(r,e,t);if(r.type==="secp256k1")return LC(r,e,t);if(r.type==="ECDSA")return PC(r,e,t);throw new Dt}async function BC(r,e,t="libp2p-key"){if(t==="libp2p-key")return Kf(Rn(r),e);throw new k(`export format '${t}' is not supported`)}async function LC(r,e,t="libp2p-key"){if(t==="libp2p-key")return Kf(Rn(r),e);throw new k("Export format is not supported")}async function PC(r,e,t="libp2p-key"){if(t==="libp2p-key")return Kf(Rn(r),e);throw new k(`export format '${t}' is not supported`)}async function DC(r,e,t="pkcs-8"){if(t==="pkcs-8")return NC(r,e);if(t==="libp2p-key")return Kf(Rn(r),e);throw new k("Export format is not supported")}async function NC(r,e){let t=Se.get(),o=new ut({value:[new Mr({value:0}),new ut({value:[new pr({value:"1.2.840.113549.1.1.1"}),new ao]}),new Rr({valueHex:r.raw})]}).toBER(),s=new Uint8Array(o,0,o.byteLength),i=Ft(16),a=await Qa(jr,e,i,{c:1e4,dkLen:32}),c=Ft(16),l=await t.subtle.importKey("raw",a,"AES-CBC",!1,["encrypt"]),u=await t.subtle.encrypt({name:"AES-CBC",iv:c},l,s),f=new ut({value:[new Rr({valueHex:i}),new Mr({value:1e4}),new Mr({value:32}),new ut({value:[new pr({value:"1.2.840.113549.2.11"}),new ao]})]}),d=new ut({value:[new pr({value:"1.2.840.113549.1.5.13"}),new ut({value:[new ut({value:[new pr({value:"1.2.840.113549.1.5.12"}),f]}),new ut({value:[new pr({value:"2.16.840.1.101.3.4.1.42"}),new Rr({valueHex:c})]})]})]}),p=new ut({value:[d,new Rr({valueHex:u})]}).toBER(),g=new Uint8Array(p,0,p.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...M(g,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
51
+ `)}async function dg(r,e){try{let t=await RC(r,e);return S0(t)}catch{}if(!r.includes("BEGIN"))throw new k("Encrypted key was not a libp2p-key or a PEM file");return MC(r,e)}async function RC(r,e){let t=je.decode(r);return bs.create().decrypt(t,e)}async function MC(r,e){let t=Se.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let s=B(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:i}=Vf(s),{iv:a,salt:c,iterations:l,keySize:u,cipherText:f}=OC(i),d=await Qa(jr,e,c,{c:l,dkLen:u}),h=await t.subtle.importKey("raw",d,"AES-CBC",!1,["decrypt"]),p=ya(await t.subtle.decrypt({name:"AES-CBC",iv:a},h,f)),{result:g}=Vf(p);n=kE(g)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let s=B(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:i}=Vf(s);n=kE(i)}else throw new k("Could not parse private key from PEM data");let o=I0(n);if(o.type!=="RSA")throw new k("Could not parse RSA private key from PEM data");return o}function OC(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new k("Only pkcs5PBES2 encrypted private keys are supported");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new k("Only pkcs5PBKDF2 key derivation functions are supported");let s=n.valueBlock.value[1],i=ya(s.valueBlock.value[0].getValue()),a=1e4,c=32;if(s.valueBlock.value.length===3)a=Number(s.valueBlock.value[1].toBigInt()),c=Number(s.valueBlock.value[2].toBigInt());else if(s.valueBlock.value.length===2)throw new k("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key");let l=e.valueBlock.value[1].valueBlock.value[1],u=l.valueBlock.value[0].toString();if(u!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(u!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(u!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(u!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(u!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new k("Only AES-CBC encryption schemes are supported")}}}}let f=ya(l.valueBlock.value[1].getValue());return{cipherText:ya(r.valueBlock.value[1].getValue()),salt:i,iterations:a,keySize:c,iv:f}}function kE(r){return ya(r.valueBlock.value[2].getValue())}function ya(r){return new Uint8Array(r,0,r.byteLength)}var UC="/pkcs8/",hg="/info/",wa=new WeakMap,co={minKeyLength:112/8,minSaltLength:128/8,minIterationCount:1e3};function Es(r){return r==null||typeof r!="string"?!1:r===(0,_E.default)(r.trim())&&r.length>0}async function qe(){let t=Math.random()*800+200;await new Promise(n=>setTimeout(n,t))}function lo(r){return new ge(UC+r)}function As(r){return new ge(hg+r)}async function FC(r){let e=Rn(r),t=await Rt.digest(e);return le.encode(t.bytes).substring(1)}var Hf=class{components;init;log;self;constructor(e,t){if(this.components=e,this.log=e.logger.forComponent("libp2p:keychain"),this.init={...t,dek:{...sg,...t.dek}},this.self=t.selfKey??"self",this.init.pass!=null&&this.init.pass?.length<20)throw new Error("pass must be least 20 characters");if(this.init.dek?.keyLength!=null&&this.init.dek.keyLength<co.minKeyLength)throw new Error(`dek.keyLength must be least ${co.minKeyLength} bytes`);if(this.init.dek?.salt?.length!=null&&this.init.dek.salt.length<co.minSaltLength)throw new Error(`dek.saltLength must be least ${co.minSaltLength} bytes`);if(this.init.dek?.iterationCount!=null&&this.init.dek.iterationCount<co.minIterationCount)throw new Error(`dek.iterationCount must be least ${co.minIterationCount}`);let n=this.init.pass!=null&&this.init.dek?.salt!=null?ii(this.init.pass,this.init.dek?.salt,this.init.dek?.iterationCount,this.init.dek?.keyLength,this.init.dek?.hash):"";wa.set(this,{dek:n})}[Symbol.toStringTag]="@libp2p/keychain";[wn]=["@libp2p/keychain"];static generateOptions(){let e=Object.assign({},this.options),t=Math.ceil(co.minSaltLength/3)*3;return e.dek!=null&&(e.dek.salt=M(Ft(t),"base64")),e}static get options(){return{dek:{...sg}}}async findKeyByName(e){if(!Es(e))throw await qe(),new k(`Invalid key name '${e}'`);let t=As(e);try{let n=await this.components.datastore.get(t);return JSON.parse(M(n))}catch(n){throw await qe(),this.log.error("could not read key from datastore - %e",n),new ke(`Key '${e}' does not exist.`)}}async findKeyById(e){try{let t={prefix:hg};for await(let n of this.components.datastore.query(t)){let o=JSON.parse(M(n.value));if(o.id===e)return o}throw new k(`Key with id '${e}' does not exist.`)}catch(t){throw await qe(),t}}async importKey(e,t){if(!Es(e))throw await qe(),new k(`Invalid key name '${e}'`);if(t==null)throw await qe(),new k("Key is required");let n=lo(e);if(await this.components.datastore.has(n))throw await qe(),new k(`Key '${e}' already exists`);let s,i;try{s=await FC(t);let l=wa.get(this);if(l==null)throw new k("dek missing");let u=l.dek;i=await fg(t,u,t.type==="RSA"?"pkcs-8":"libp2p-key")}catch(l){throw await qe(),l}let a={name:e,id:s},c=this.components.datastore.batch();return c.put(n,B(i)),c.put(As(e),B(JSON.stringify(a))),await c.commit(),a}async exportKey(e){if(!Es(e))throw await qe(),new k(`Invalid key name '${e}'`);let t=lo(e);try{let n=await this.components.datastore.get(t),o=M(n),s=wa.get(this);if(s==null)throw new k("dek missing");let i=s.dek;return await dg(o,i)}catch(n){throw await qe(),n}}async removeKey(e){if(!Es(e)||e===this.self)throw await qe(),new k(`Invalid key name '${e}'`);let t=lo(e),n=await this.findKeyByName(e),o=this.components.datastore.batch();return o.delete(t),o.delete(As(e)),await o.commit(),n}async listKeys(){let e={prefix:hg},t=[];for await(let n of this.components.datastore.query(e))t.push(JSON.parse(M(n.value)));return t}async renameKey(e,t){if(!Es(e)||e===this.self)throw await qe(),new k(`Invalid old key name '${e}'`);if(!Es(t)||t===this.self)throw await qe(),new k(`Invalid new key name '${t}'`);let n=lo(e),o=lo(t),s=As(e),i=As(t);if(await this.components.datastore.has(o))throw await qe(),new k(`Key '${t}' already exists`);try{let c=await this.components.datastore.get(n),l=await this.components.datastore.get(s),u=JSON.parse(M(l));u.name=t;let f=this.components.datastore.batch();return f.put(o,c),f.put(i,B(JSON.stringify(u))),f.delete(n),f.delete(s),await f.commit(),u}catch(c){throw await qe(),c}}async rotateKeychainPass(e,t){if(typeof e!="string")throw await qe(),new k(`Invalid old pass type '${typeof e}'`);if(typeof t!="string")throw await qe(),new k(`Invalid new pass type '${typeof t}'`);if(t.length<20)throw await qe(),new k(`Invalid pass length ${t.length}`);this.log("recreating keychain");let n=wa.get(this);if(n==null)throw new k("dek missing");let o=n.dek;this.init.pass=t;let s=t!=null&&this.init.dek?.salt!=null?ii(t,this.init.dek.salt,this.init.dek?.iterationCount,this.init.dek?.keyLength,this.init.dek?.hash):"";wa.set(this,{dek:s});let i=await this.listKeys();for(let a of i){let c=await this.components.datastore.get(lo(a.name)),l=M(c),u=await dg(l,o),f=s.toString(),d=await fg(u,f,u.type==="RSA"?"pkcs-8":"libp2p-key"),h=this.components.datastore.batch(),p={name:a.name,id:a.id};h.put(lo(a.name),B(d)),h.put(As(a.name),B(JSON.stringify(p))),await h.commit()}this.log("keychain reconstructed")}};function qf(r={}){return e=>new Hf(e,r)}async function pg(r,e={}){let t=e.selfKey??"self",n=qf(e)({datastore:r,logger:fr()}),o;return await r.has(new ge(`/pkcs8/${t}`))?o=await n.exportKey(t):(o=await Xa(e.keyType??"Ed25519"),await n.importKey(t,o)),o}function CE(r={}){let e=`@helia/http ${Yu()}`;return{privateKey:r.privateKey,dns:r.dns,nodeInfo:{userAgent:e},addresses:{listen:[]},transports:[],connectionEncrypters:[],streamMuxers:[],peerDiscovery:[],services:{delegatedRouting:()=>Dx("https://delegated-ipfs.dev",{filterAddrs:["https"],filterProtocols:["transport-ipfs-gateway-http"]}),keychain:qf(r.keychain)}}}async function TE(r){let e=r.libp2p??{};e.privateKey==null&&r.datastore!=null&&(e.privateKey=await pg(r.datastore,r.keychain));let t=CE(e);return t.datastore=t.datastore??r.datastore,await _v({...t,...e,start:!1})}async function BE(r={}){let e=r.datastore??new no,t=r.blockstore??new Zi,n;return Cv(r.libp2p)?n=r.libp2p:n=await TE({...r,libp2p:{dns:r.dns,...r.libp2p,start:void 0},datastore:e}),{...r,libp2p:n,datastore:e,blockstore:t,blockBrokers:r.blockBrokers??[vm()],routers:r.routers??[Nm(n),Pm()],metrics:n.metrics}}async function $C(r={}){let e=await BE(r),t=new Ol(e);return e.start!==!1&&await t.start(),t}return ME(VC);})();
52
52
  /*! Bundled license information:
53
53
 
54
54
  pvtsutils/build/index.js: