@helia/http 1.0.5-52dbcf2 → 1.0.5-5e98950
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 +1 -1
- package/package.json +5 -5
package/dist/index.min.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
`));let e=this.idBlock.tagClass===3?`[${this.idBlock.tagNumber}]`:this.constructor.NAME;return t.length?`${e} :
|
|
6
6
|
${t.join(`
|
|
7
7
|
`)}`:`${e} :`}};Id=Rr;O.Constructed=Id;Rr.NAME="CONSTRUCTED";var di=class extends Vt{fromBER(t,e,n){return e}toBER(t){return Se}};di.override="EndOfContentValueBlock";var _d,pi=class extends Lt{constructor(t={}){super(t,di),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}};_d=pi;O.EndOfContent=_d;pi.NAME=Co;var Rd,Tr=class extends Lt{constructor(t={}){super(t,Vt),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(t,e,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,e+n>t.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):e+n}toBER(t,e){let n=new ArrayBuffer(2);if(!t){let o=new Uint8Array(n);o[0]=5,o[1]=0}return e&&e.write(n),n}onAsciiEncoding(){return`${this.constructor.NAME}`}};Rd=Tr;O.Null=Rd;Tr.NAME="NULL";var mi=class extends ar(Vt){constructor({value:t,...e}={}){super(e),e.valueHex?this.valueHexView=Z.BufferSourceConverter.toUint8Array(e.valueHex):this.valueHexView=new Uint8Array(1),t&&(this.value=t)}get value(){for(let t of this.valueHexView)if(t>0)return!0;return!1}set value(t){this.valueHexView[0]=t?255:0}fromBER(t,e,n){let o=Z.BufferSourceConverter.toUint8Array(t);return ir(this,o,e,n)?(this.valueHexView=o.subarray(e,e+n),n>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,au.call(this),this.blockLength=n,e+n):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}};mi.NAME="BooleanValueBlock";var Td,gi=class extends Lt{constructor(t={}){super(t,mi),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}getValue(){return this.valueBlock.value}setValue(t){this.valueBlock.value=t}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}};Td=gi;O.Boolean=Td;gi.NAME="BOOLEAN";var yi=class extends ar(Pe){constructor({isConstructed:t=!1,...e}={}){super(e),this.isConstructed=t}fromBER(t,e,n){let o=0;if(this.isConstructed){if(this.isHexOnly=!1,o=Pe.prototype.fromBER.call(this,t,e,n),o===-1)return o;for(let s=0;s<this.value.length;s++){let i=this.value[s].constructor.NAME;if(i===Co){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(i!==Ad)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,o=super.fromBER(t,e,n),this.blockLength=n;return o}toBER(t,e){return this.isConstructed?Pe.prototype.toBER.call(this,t,e):t?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}};yi.NAME="OctetStringValueBlock";var Cd,or=class r extends Lt{constructor({idBlock:t={},lenBlock:e={},...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,...t},lenBlock:{...e,isIndefiniteForm:!!n.isIndefiniteForm},...n},yi),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(t,e,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),e;if(!this.valueBlock.isConstructed){let s=(t instanceof ArrayBuffer?new Uint8Array(t):t).subarray(e,e+n);try{if(s.byteLength){let i=zi(s,0,s.byteLength);i.offset!==-1&&i.offset===n&&(this.valueBlock.value=[i.result])}}catch{}}return super.fromBER(t,e,n)}onAsciiEncoding(){return this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length?Rr.prototype.onAsciiEncoding.call(this):`${this.constructor.NAME} : ${Z.Convert.ToHex(this.valueBlock.valueHexView)}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;let t=[];for(let e of this.valueBlock.value)e instanceof r&&t.push(e.valueBlock.valueHexView);return Z.BufferSourceConverter.concat(t)}};Cd=or;O.OctetString=Cd;or.NAME=Ad;var wi=class extends ar(Pe){constructor({unusedBits:t=0,isConstructed:e=!1,...n}={}){super(n),this.unusedBits=t,this.isConstructed=e,this.blockLength=this.valueHexView.byteLength}fromBER(t,e,n){if(!n)return e;let o=-1;if(this.isConstructed){if(o=Pe.prototype.fromBER.call(this,t,e,n),o===-1)return o;for(let a of this.value){let c=a.constructor.NAME;if(c===Co){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(c!==Bd)return this.error="BIT STRING may consists of BIT STRINGs only",-1;let u=a.valueBlock;if(this.unusedBits>0&&u.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=u.unusedBits}return o}let s=Z.BufferSourceConverter.toUint8Array(t);if(!ir(this,s,e,n))return-1;let i=s.subarray(e,e+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=zi(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,e+n}toBER(t,e){if(this.isConstructed)return Pe.prototype.toBER.call(this,t,e);if(t)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength)return Se;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}}};wi.NAME="BitStringValueBlock";var Nd,Gn=class extends Lt{constructor({idBlock:t={},lenBlock:e={},...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,...t},lenBlock:{...e,isIndefiniteForm:!!n.isIndefiniteForm},...n},wi),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(t,e,n){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(t,e,n)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return Rr.prototype.onAsciiEncoding.call(this);{let t=[],e=this.valueBlock.valueHexView;for(let o of e)t.push(o.toString(2).padStart(8,"0"));let n=t.join("");return`${this.constructor.NAME} : ${n.substring(0,n.length-this.valueBlock.unusedBits)}`}}};Nd=Gn;O.BitString=Nd;Gn.NAME=Bd;var Ld;function ub(r,t){let e=new Uint8Array([0]),n=new Uint8Array(r),o=new Uint8Array(t),s=n.slice(0),i=s.length-1,a=o.slice(0),c=a.length-1,u=0,f=c<i?i:c,l=0;for(let m=f;m>=0;m--,l++){switch(!0){case l<a.length:u=s[i-l]+a[c-l]+e[0];break;default:u=s[i-l]+e[0]}switch(e[0]=u/10,!0){case l>=s.length:s=ii(new Uint8Array([u%10]),s);break;default:s[i-l]=u%10}}return e[0]>0&&(s=ii(e,s)),s}function vd(r){if(r>=Ro.length)for(let t=Ro.length;t<=r;t++){let e=new Uint8Array([0]),n=Ro[t-1].slice(0);for(let o=n.length-1;o>=0;o--){let s=new Uint8Array([(n[o]<<1)+e[0]]);e[0]=s[0]/10,n[o]=s[0]%10}e[0]>0&&(n=ii(e,n)),Ro.push(n)}return Ro[r]}function lb(r,t){let e=0,n=new Uint8Array(r),o=new Uint8Array(t),s=n.slice(0),i=s.length-1,a=o.slice(0),c=a.length-1,u,f=0;for(let l=c;l>=0;l--,f++)switch(u=s[i-f]-a[c-f]-e,!0){case u<0:e=1,s[i-f]=u+10;break;default:e=0,s[i-f]=u}if(e>0)for(let l=i-c+1;l>=0;l--,f++)if(u=s[i-f]-e,u<0)e=1,s[i-f]=u+10;else{e=0,s[i-f]=u;break}return s.slice()}var No=class extends ar(Vt){constructor({value:t,...e}={}){super(e),this._valueDec=0,e.valueHex&&this.setValueHex(),t!==void 0&&(this.valueDec=t)}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=au.call(this)))}set valueDec(t){this._valueDec=t,this.isHexOnly=!1,this.valueHexView=new Uint8Array(bd(t))}get valueDec(){return this._valueDec}fromDER(t,e,n,o=0){let s=this.fromBER(t,e,n);if(s===-1)return s;let i=this.valueHexView;return i[0]===0&&i[1]&128?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(t=!1){let e=this.valueHexView;switch(!0){case(e[0]&128)!==0:{let n=new Uint8Array(this.valueHexView.length+1);n[0]=0,n.set(e,1),this.valueHexView=n}break;case(e[0]===0&&(e[1]&128)===0):this.valueHexView=this.valueHexView.subarray(1);break}return this.toBER(t)}fromBER(t,e,n){let o=super.fromBER(t,e,n);return o===-1||this.setValueHex(),o}toBER(t){return t?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){let t=this.valueHexView.length*8-1,e=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 u=0;u<8;u++){if((o&1)===1)switch(n){case t:e=lb(vd(n),e),i="-";break;default:e=ub(e,vd(n))}n++,o>>=1}}for(let c=0;c<e.length;c++)e[c]&&(a=!0),a&&(i+=Ed.charAt(e[c]));return a===!1&&(i+=Ed.charAt(0)),i}};Ld=No;No.NAME="IntegerValueBlock";Object.defineProperty(Ld.prototype,"valueHex",{set:function(r){this.valueHexView=new Uint8Array(r),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});var Ud,bt=class r extends Lt{constructor(t={}){super(t,No),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return ai(),BigInt(this.valueBlock.toString())}static fromBigInt(t){ai();let e=BigInt(t),n=new To,o=e.toString(16).replace(/^-/,""),s=new Uint8Array(Z.Convert.FromHex(o));if(e<0){let a=new Uint8Array(s.length+(s[0]&128?1:0));a[0]|=128;let u=BigInt(`0x${Z.Convert.ToHex(a)}`)+e,f=Z.BufferSourceConverter.toUint8Array(Z.Convert.FromHex(u.toString(16)));f[0]|=128,n.write(f)}else s[0]&128&&n.write(new Uint8Array([0])),n.write(s);return new r({valueHex:n.final()})}convertToDER(){let t=new r({valueHex:this.valueBlock.valueHexView});return t.valueBlock.toDER(),t}convertFromDER(){return new r({valueHex:this.valueBlock.valueHexView[0]===0?this.valueBlock.valueHexView.subarray(1):this.valueBlock.valueHexView})}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()}`}};Ud=bt;O.Integer=Ud;bt.NAME="INTEGER";var Dd,bi=class extends bt{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}};Dd=bi;O.Enumerated=Dd;bi.NAME="ENUMERATED";var Lo=class extends ar(Vt){constructor({valueDec:t=-1,isFirstSid:e=!1,...n}={}){super(n),this.valueDec=t,this.isFirstSid=e}fromBER(t,e,n){if(!n)return e;let o=Z.BufferSourceConverter.toUint8Array(t);if(!ir(this,o,e,n))return-1;let s=o.subarray(e,e+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,!!(s[a]&128));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?(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=Yr(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),e+this.blockLength)}set valueBigInt(t){ai();let e=BigInt(t).toString(2);for(;e.length%7;)e="0"+e;let n=new Uint8Array(e.length/7);for(let o=0;o<n.length;o++)n[o]=parseInt(e.slice(o*7,o*7+7),2)+(o+1<n.length?128:0);this.fromBER(n.buffer,0,n.length)}toBER(t){if(this.isHexOnly){if(t)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 e=_r(this.valueDec,7);if(e.byteLength===0)return this.error="Error during encoding SID value",Se;let n=new Uint8Array(e.byteLength);if(!t){let o=new Uint8Array(e),s=e.byteLength-1;for(let i=0;i<s;i++)n[i]=o[i]|128;n[s]=o[s]}return n}toString(){let t="";if(this.isHexOnly)t=Z.Convert.ToHex(this.valueHexView);else if(this.isFirstSid){let e=this.valueDec;this.valueDec<=39?t="0.":this.valueDec<=79?(t="1.",e-=40):(t="2.",e-=80),t+=e.toString()}else t=this.valueDec.toString();return t}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}};Lo.NAME="sidBlock";var xi=class extends Vt{constructor({value:t=jn,...e}={}){super(e),this.value=[],t&&this.fromString(t)}fromBER(t,e,n){let o=e;for(;n>0;){let s=new Lo;if(o=s.fromBER(t,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(t){let e=[];for(let n=0;n<this.value.length;n++){let o=this.value[n].toBER(t);if(o.byteLength===0)return this.error=this.value[n].error,Se;e.push(o)}return cu(e)}fromString(t){this.value=[];let e=0,n=0,o="",s=!1;do if(n=t.indexOf(".",e),n===-1?o=t.substring(e):o=t.substring(e,n),e=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 Lo;if(o>Number.MAX_SAFE_INTEGER){ai();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 t="",e=!1;for(let n=0;n<this.value.length;n++){e=this.value[n].isHexOnly;let o=this.value[n].toString();n!==0&&(t=`${t}.`),e?(o=`{${o}}`,this.value[n].isFirstSid?t=`2.{${o} - 80}`:t+=o):t+=o}return t}toJSON(){let t={...super.toJSON(),value:this.toString(),sidArray:[]};for(let e=0;e<this.value.length;e++)t.sidArray.push(this.value[e].toJSON());return t}};xi.NAME="ObjectIdentifierValueBlock";var Pd,ke=class extends Lt{constructor(t={}){super(t,xi),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}getValue(){return this.valueBlock.toString()}setValue(t){this.valueBlock.fromString(t)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};Pd=ke;O.ObjectIdentifier=Pd;ke.NAME="OBJECT IDENTIFIER";var Uo=class extends ar(nr){constructor({valueDec:t=0,...e}={}){super(e),this.valueDec=t}fromBER(t,e,n){if(n===0)return e;let o=Z.BufferSourceConverter.toUint8Array(t);if(!ir(this,o,e,n))return-1;let s=o.subarray(e,e+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,!!(s[a]&128));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?(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=Yr(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),e+this.blockLength)}toBER(t){if(this.isHexOnly){if(t)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 e=_r(this.valueDec,7);if(e.byteLength===0)return this.error="Error during encoding SID value",Se;let n=new Uint8Array(e.byteLength);if(!t){let o=new Uint8Array(e),s=e.byteLength-1;for(let i=0;i<s;i++)n[i]=o[i]|128;n[s]=o[s]}return n.buffer}toString(){let t="";return this.isHexOnly?t=Z.Convert.ToHex(this.valueHexView):t=this.valueDec.toString(),t}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}};Uo.NAME="relativeSidBlock";var Ei=class extends Vt{constructor({value:t=jn,...e}={}){super(e),this.value=[],t&&this.fromString(t)}fromBER(t,e,n){let o=e;for(;n>0;){let s=new Uo;if(o=s.fromBER(t,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(t,e){let n=[];for(let o=0;o<this.value.length;o++){let s=this.value[o].toBER(t);if(s.byteLength===0)return this.error=this.value[o].error,Se;n.push(s)}return cu(n)}fromString(t){this.value=[];let e=0,n=0,o="";do{n=t.indexOf(".",e),n===-1?o=t.substring(e):o=t.substring(e,n),e=n+1;let s=new Uo;if(s.valueDec=parseInt(o,10),isNaN(s.valueDec))return!0;this.value.push(s)}while(n!==-1);return!0}toString(){let t="",e=!1;for(let n=0;n<this.value.length;n++){e=this.value[n].isHexOnly;let o=this.value[n].toString();n!==0&&(t=`${t}.`),e&&(o=`{${o}}`),t+=o}return t}toJSON(){let t={...super.toJSON(),value:this.toString(),sidArray:[]};for(let e=0;e<this.value.length;e++)t.sidArray.push(this.value[e].toJSON());return t}};Ei.NAME="RelativeObjectIdentifierValueBlock";var Od,vi=class extends Lt{constructor(t={}){super(t,Ei),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}getValue(){return this.valueBlock.toString()}setValue(t){this.valueBlock.fromString(t)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};Od=vi;O.RelativeObjectIdentifier=Od;vi.NAME="RelativeObjectIdentifier";var Fd,It=class extends Rr{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}};Fd=It;O.Sequence=Fd;It.NAME="SEQUENCE";var Vd,Ai=class extends Rr{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}};Vd=Ai;O.Set=Vd;Ai.NAME="SET";var Bi=class extends ar(Vt){constructor({...t}={}){super(t),this.isHexOnly=!0,this.value=jn}toJSON(){return{...super.toJSON(),value:this.value}}};Bi.NAME="StringValueBlock";var ki=class extends Bi{};ki.NAME="SimpleStringValueBlock";var Kt=class extends li{constructor({...t}={}){super(t,ki)}fromBuffer(t){this.valueBlock.value=String.fromCharCode.apply(null,Z.BufferSourceConverter.toUint8Array(t))}fromString(t){let e=t.length,n=this.valueBlock.valueHexView=new Uint8Array(e);for(let o=0;o<e;o++)n[o]=t.charCodeAt(o);this.valueBlock.value=t}};Kt.NAME="SIMPLE STRING";var Si=class extends Kt{fromBuffer(t){this.valueBlock.valueHexView=Z.BufferSourceConverter.toUint8Array(t);try{this.valueBlock.value=Z.Convert.ToUtf8String(t)}catch(e){this.warnings.push(`Error during "decodeURIComponent": ${e}, using raw string`),this.valueBlock.value=Z.Convert.ToBinary(t)}}fromString(t){this.valueBlock.valueHexView=new Uint8Array(Z.Convert.FromUtf8String(t)),this.valueBlock.value=t}};Si.NAME="Utf8StringValueBlock";var Md,sr=class extends Si{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}};Md=sr;O.Utf8String=Md;sr.NAME="UTF8String";var Ii=class extends Kt{fromBuffer(t){this.valueBlock.value=Z.Convert.ToUtf16String(t),this.valueBlock.valueHexView=Z.BufferSourceConverter.toUint8Array(t)}fromString(t){this.valueBlock.value=t,this.valueBlock.valueHexView=new Uint8Array(Z.Convert.FromUtf16String(t))}};Ii.NAME="BmpStringValueBlock";var $d,_i=class extends Ii{constructor({...t}={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}};$d=_i;O.BmpString=$d;_i.NAME="BMPString";var Ri=class extends Kt{fromBuffer(t){let e=ArrayBuffer.isView(t)?t.slice().buffer:t.slice(0),n=new Uint8Array(e);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(e))}fromString(t){let e=t.length,n=this.valueBlock.valueHexView=new Uint8Array(e*4);for(let o=0;o<e;o++){let s=_r(t.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=t}};Ri.NAME="UniversalStringValueBlock";var Hd,Ti=class extends Ri{constructor({...t}={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}};Hd=Ti;O.UniversalString=Hd;Ti.NAME="UniversalString";var Kd,Ci=class extends Kt{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}};Kd=Ci;O.NumericString=Kd;Ci.NAME="NumericString";var qd,Ni=class extends Kt{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}};qd=Ni;O.PrintableString=qd;Ni.NAME="PrintableString";var zd,Li=class extends Kt{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}};zd=Li;O.TeletexString=zd;Li.NAME="TeletexString";var Gd,Ui=class extends Kt{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}};Gd=Ui;O.VideotexString=Gd;Ui.NAME="VideotexString";var jd,Di=class extends Kt{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}};jd=Di;O.IA5String=jd;Di.NAME="IA5String";var Wd,Pi=class extends Kt{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}};Wd=Pi;O.GraphicString=Wd;Pi.NAME="GraphicString";var Yd,Do=class extends Kt{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}};Yd=Do;O.VisibleString=Yd;Do.NAME="VisibleString";var Zd,Oi=class extends Kt{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}};Zd=Oi;O.GeneralString=Zd;Oi.NAME="GeneralString";var Jd,Fi=class extends Kt{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}};Jd=Fi;O.CharacterString=Jd;Fi.NAME="CharacterString";var Xd,Po=class extends Do{constructor({value:t,valueDate:e,...n}={}){if(super(n),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,t){this.fromString(t),this.valueBlock.valueHexView=new Uint8Array(t.length);for(let o=0;o<t.length;o++)this.valueBlock.valueHexView[o]=t.charCodeAt(o)}e&&(this.fromDate(e),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(t){this.fromString(String.fromCharCode.apply(null,Z.BufferSourceConverter.toUint8Array(t)))}toBuffer(){let t=this.toString(),e=new ArrayBuffer(t.length),n=new Uint8Array(e);for(let o=0;o<t.length;o++)n[o]=t.charCodeAt(o);return e}fromDate(t){this.year=t.getUTCFullYear(),this.month=t.getUTCMonth()+1,this.day=t.getUTCDate(),this.hour=t.getUTCHours(),this.minute=t.getUTCMinutes(),this.second=t.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(t){let n=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/ig.exec(t);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(t="iso"){if(t==="iso"){let e=new Array(7);return e[0]=jt(this.year<2e3?this.year-1900:this.year-2e3,2),e[1]=jt(this.month,2),e[2]=jt(this.day,2),e[3]=jt(this.hour,2),e[4]=jt(this.minute,2),e[5]=jt(this.second,2),e[6]="Z",e.join("")}return super.toString(t)}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}}};Xd=Po;O.UTCTime=Xd;Po.NAME="UTCTime";var Qd,Vi=class extends Po{constructor(t={}){var e;super(t),(e=this.millisecond)!==null&&e!==void 0||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(t){super.fromDate(t),this.millisecond=t.getUTCMilliseconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond))}fromString(t){let e=!1,n="",o="",s=0,i,a=0,c=0;if(t[t.length-1]==="Z")n=t.substring(0,t.length-1),e=!0;else{let l=new Number(t[t.length-1]);if(isNaN(l.valueOf()))throw new Error("Wrong input string for conversion");n=t}if(e){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 l=1,m=n.indexOf("+"),h="";if(m===-1&&(m=n.indexOf("-"),l=-1),m!==-1){if(h=n.substring(m+1),n=n.substring(0,m),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=l*p,h.length===4){if(p=parseInt(h.substring(2,4),10),isNaN(p.valueOf()))throw new Error("Wrong input string for conversion");c=l*p}}}let u=n.indexOf(".");if(u===-1&&(u=n.indexOf(",")),u!==-1){let l=new Number(`0${n.substring(u)}`);if(isNaN(l.valueOf()))throw new Error("Wrong input string for conversion");s=l.valueOf(),o=n.substring(0,u)}else o=n;switch(!0){case o.length===8:if(i=/(\d{4})(\d{2})(\d{2})/ig,u!==-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,u!==-1){let l=60*s;this.minute=Math.floor(l),l=60*(l-this.minute),this.second=Math.floor(l),l=1e3*(l-this.second),this.millisecond=Math.floor(l)}break;case o.length===12:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/ig,u!==-1){let l=60*s;this.second=Math.floor(l),l=1e3*(l-this.second),this.millisecond=Math.floor(l)}break;case o.length===14:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/ig,u!==-1){let l=1e3*s;this.millisecond=Math.floor(l)}break;default:throw new Error("Wrong input string for conversion")}let f=i.exec(o);if(f===null)throw new Error("Wrong input string for conversion");for(let l=1;l<f.length;l++)switch(l){case 1:this.year=parseInt(f[l],10);break;case 2:this.month=parseInt(f[l],10);break;case 3:this.day=parseInt(f[l],10);break;case 4:this.hour=parseInt(f[l],10)+a;break;case 5:this.minute=parseInt(f[l],10)+c;break;case 6:this.second=parseInt(f[l],10);break;default:throw new Error("Wrong input string for conversion")}if(e===!1){let l=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=l.getUTCFullYear(),this.month=l.getUTCMonth(),this.day=l.getUTCDay(),this.hour=l.getUTCHours(),this.minute=l.getUTCMinutes(),this.second=l.getUTCSeconds(),this.millisecond=l.getUTCMilliseconds()}}toString(t="iso"){if(t==="iso"){let e=[];return e.push(jt(this.year,4)),e.push(jt(this.month,2)),e.push(jt(this.day,2)),e.push(jt(this.hour,2)),e.push(jt(this.minute,2)),e.push(jt(this.second,2)),this.millisecond!==0&&(e.push("."),e.push(jt(this.millisecond,3))),e.push("Z"),e.join("")}return super.toString(t)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}};Qd=Vi;O.GeneralizedTime=Qd;Vi.NAME="GeneralizedTime";var tp,Mi=class extends sr{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}};tp=Mi;O.DATE=tp;Mi.NAME="DATE";var ep,$i=class extends sr{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}};ep=$i;O.TimeOfDay=ep;$i.NAME="TimeOfDay";var rp,Hi=class extends sr{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}};rp=Hi;O.DateTime=rp;Hi.NAME="DateTime";var np,Ki=class extends sr{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}};np=Ki;O.Duration=np;Ki.NAME="Duration";var op,qi=class extends sr{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}};op=qi;O.TIME=op;qi.NAME="TIME";function hb(r){let{result:t}=Wn(r),e=t.valueBlock.value;return{n:G(Oe(e[1].toBigInt()),"base64url"),e:G(Oe(e[2].toBigInt()),"base64url"),d:G(Oe(e[3].toBigInt()),"base64url"),p:G(Oe(e[4].toBigInt()),"base64url"),q:G(Oe(e[5].toBigInt()),"base64url"),dp:G(Oe(e[6].toBigInt()),"base64url"),dq:G(Oe(e[7].toBigInt()),"base64url"),qi:G(Oe(e[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function db(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 D("JWK was missing components","ERR_INVALID_PARAMETERS");let e=new It({value:[new bt({value:0}),bt.fromBigInt(Fe(q(r.n,"base64url"))),bt.fromBigInt(Fe(q(r.e,"base64url"))),bt.fromBigInt(Fe(q(r.d,"base64url"))),bt.fromBigInt(Fe(q(r.p,"base64url"))),bt.fromBigInt(Fe(q(r.q,"base64url"))),bt.fromBigInt(Fe(q(r.dp,"base64url"))),bt.fromBigInt(Fe(q(r.dq,"base64url"))),bt.fromBigInt(Fe(q(r.qi,"base64url")))]}).toBER();return new Uint8Array(e,0,e.byteLength)}function pb(r){let{result:t}=Wn(r),e=t.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:G(Oe(e[0].toBigInt()),"base64url"),e:G(Oe(e[1].toBigInt()),"base64url")}}function mb(r){if(r.n==null||r.e==null)throw new D("JWK was missing components","ERR_INVALID_PARAMETERS");let e=new It({value:[new It({value:[new ke({value:"1.2.840.113549.1.1.1"}),new Tr]}),new Gn({valueHex:new It({value:[bt.fromBigInt(Fe(q(r.n,"base64url"))),bt.fromBigInt(Fe(q(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(e,0,e.byteLength)}function Oe(r){let t=r.toString(16);t.length%2>0&&(t=`0${t}`);let e=t.length/2,n=new Uint8Array(e),o=0,s=0;for(;o<e;)n[o]=parseInt(t.slice(s,s+2),16),o+=1,s+=2;return n}function Fe(r){let t=[];return r.forEach(function(e){let n=e.toString(16);n.length%2>0&&(n=`0${n}`),t.push(n)}),BigInt("0x"+t.join(""))}var gb=16,lu=32,fu=1e4;async function yb(r,t){let e=Ht.get(),o=new It({value:[new bt({value:0}),new It({value:[new ke({value:"1.2.840.113549.1.1.1"}),new Tr]}),new or({valueHex:r.marshal()})]}).toBER(),s=new Uint8Array(o,0,o.byteLength),i=De(gb),a=await su(Vn,t,i,{c:fu,dkLen:lu}),c=De(16),u=await e.subtle.importKey("raw",a,"AES-CBC",!1,["encrypt"]),f=await e.subtle.encrypt({name:"AES-CBC",iv:c},u,s),l=new It({value:[new or({valueHex:i}),new bt({value:fu}),new bt({value:lu}),new It({value:[new ke({value:"1.2.840.113549.2.11"}),new Tr]})]}),m=new It({value:[new ke({value:"1.2.840.113549.1.5.13"}),new It({value:[new It({value:[new ke({value:"1.2.840.113549.1.5.12"}),l]}),new It({value:[new ke({value:"2.16.840.1.101.3.4.1.42"}),new or({valueHex:c})]})]})]}),p=new It({value:[m,new or({valueHex:f})]}).toBER(),d=new Uint8Array(p,0,p.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...G(d,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
|
|
8
|
-
`)}async function wb(r,t){let e=Ht.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let o=q(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Wn(o),{iv:i,salt:a,iterations:c,keySize:u,cipherText:f}=bb(s),l=await su(Vn,t,a,{c,dkLen:u}),m=await e.subtle.importKey("raw",l,"AES-CBC",!1,["decrypt"]),h=Oo(await e.subtle.decrypt({name:"AES-CBC",iv:i},m,f)),{result:p}=Wn(h);n=sp(p)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let o=q(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Wn(o);n=sp(s)}else throw new D("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return hu(n)}function bb(r){let t=r.valueBlock.value[0];if(t.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new D("Only pkcs5PBES2 encrypted private keys are supported","ERR_INVALID_PARAMS");let n=t.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new D("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let s=n.valueBlock.value[1],i=Oo(s.valueBlock.value[0].getValue()),a=fu,c=lu;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 D("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key","ERR_INVALID_PARAMS");let u=t.valueBlock.value[1].valueBlock.value[1],f=u.valueBlock.value[0].toString();if(f!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(f!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new D("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let l=Oo(u.valueBlock.value[1].getValue());return{cipherText:Oo(r.valueBlock.value[1].getValue()),salt:i,iterations:a,keySize:c,iv:l}}function sp(r){return Oo(r.valueBlock.value[2].getValue())}function Oo(r){return new Uint8Array(r,0,r.byteLength)}async function ip(r){let t=await Ht.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),e=await up(t);return{privateKey:e[0],publicKey:e[1]}}async function du(r){let e=[await Ht.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await xb(r)],n=await up({privateKey:e[0],publicKey:e[1]});return{privateKey:n[0],publicKey:n[1]}}async function ap(r,t){let e=await Ht.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await Ht.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},e,t instanceof Uint8Array?t:t.subarray());return new Uint8Array(n,0,n.byteLength)}async function cp(r,t,e){let n=await Ht.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return Ht.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,t,e instanceof Uint8Array?e:e.subarray())}async function up(r){if(r.privateKey==null||r.publicKey==null)throw new D("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([Ht.get().subtle.exportKey("jwk",r.privateKey),Ht.get().subtle.exportKey("jwk",r.publicKey)])}async function xb(r){return Ht.get().subtle.importKey("jwk",{kty:r.kty,n:r.n,e:r.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}function Gi(r){if(r.kty!=="RSA")throw new D("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new D("invalid key modulus","ERR_INVALID_KEY_MODULUS");return q(r.n,"base64url").length*8}var Vo=8192,Fo=class{_key;constructor(t){this._key=t}verify(t,e){return cp(this._key,e,t)}marshal(){return Cr.jwkToPkix(this._key)}get bytes(){return Ue.encode({Type:gt.RSA,Data:this.marshal()}).subarray()}equals(t){return it(this.bytes,t.bytes)}hash(){let t=vt.digest(this.bytes);return de(t)?t.then(({bytes:e})=>e):t.bytes}},Yn=class{_key;_publicKey;constructor(t,e){this._key=t,this._publicKey=e}genSecret(){return De(16)}sign(t){return ap(this._key,t)}get public(){if(this._publicKey==null)throw new D("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new Fo(this._publicKey)}marshal(){return Cr.jwkToPkcs1(this._key)}get bytes(){return er.encode({Type:gt.RSA,Data:this.marshal()}).subarray()}equals(t){return it(this.bytes,t.bytes)}hash(){let t=vt.digest(this.bytes);return de(t)?t.then(({bytes:e})=>e):t.bytes}async id(){let t=await this.public.hash();return G(t,"base58btc")}async export(t,e="pkcs-8"){if(e==="pkcs-8")return Cr.exportToPem(this,t);if(e==="libp2p-key")return Kn(this.bytes,t);throw new D(`export format '${e}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function hu(r){let t=Cr.pkcs1ToJwk(r);if(Gi(t)>Vo)throw new D("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await du(t);return new Yn(e.privateKey,e.publicKey)}function vb(r){let t=Cr.pkixToJwk(r);if(Gi(t)>Vo)throw new D("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new Fo(t)}async function Ab(r){if(Gi(r)>Vo)throw new D("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await du(r);return new Yn(t.privateKey,t.publicKey)}async function Bb(r){if(r>Vo)throw new D("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await ip(r);return new Yn(t.privateKey,t.publicKey)}var bu={};Et(bu,{Secp256k1PrivateKey:()=>$o,Secp256k1PublicKey:()=>Mo,generateKeyPair:()=>Ob,unmarshalSecp256k1PrivateKey:()=>Db,unmarshalSecp256k1PublicKey:()=>Pb});var kb=new Uint32Array([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]),Nr=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Lr=new Uint32Array(64),mu=class extends Fn{constructor(){super(64,32,8,!1),this.A=Nr[0]|0,this.B=Nr[1]|0,this.C=Nr[2]|0,this.D=Nr[3]|0,this.E=Nr[4]|0,this.F=Nr[5]|0,this.G=Nr[6]|0,this.H=Nr[7]|0}get(){let{A:t,B:e,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[t,e,n,o,s,i,a,c]}set(t,e,n,o,s,i,a,c){this.A=t|0,this.B=e|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(t,e){for(let l=0;l<16;l++,e+=4)Lr[l]=t.getUint32(e,!1);for(let l=16;l<64;l++){let m=Lr[l-15],h=Lr[l-2],p=Ae(m,7)^Ae(m,18)^m>>>3,d=Ae(h,17)^Ae(h,19)^h>>>10;Lr[l]=d+Lr[l-7]+p+Lr[l-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:u,H:f}=this;for(let l=0;l<64;l++){let m=Ae(a,6)^Ae(a,11)^Ae(a,25),h=f+m+Wh(a,c,u)+kb[l]+Lr[l]|0,d=(Ae(n,2)^Ae(n,13)^Ae(n,22))+Yh(n,o,s)|0;f=u,u=c,c=a,a=i+h|0,i=s,s=o,o=n,n=h+d|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,u=u+this.G|0,f=f+this.H|0,this.set(n,o,s,i,a,c,u,f)}roundClean(){Lr.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var lp=Gs(()=>new mu);function Sb(r){let t=So(r);Le(t,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:e,Fp:n,a:o}=t;if(e){if(!n.eql(o,n.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if(typeof e!="object"||typeof e.beta!="bigint"||typeof e.splitScalar!="function")throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...t})}var{bytesToNumberBE:Ib,hexToBytes:_b}=Ys,Zr={Err:class extends Error{constructor(t=""){super(t)}},_parseInt(r){let{Err:t}=Zr;if(r.length<2||r[0]!==2)throw new t("Invalid signature integer tag");let e=r[1],n=r.subarray(2,e+2);if(!e||n.length!==e)throw new t("Invalid signature integer: wrong length");if(n[0]&128)throw new t("Invalid signature integer: negative");if(n[0]===0&&!(n[1]&128))throw new t("Invalid signature integer: unnecessary leading zero");return{d:Ib(n),l:r.subarray(e+2)}},toSig(r){let{Err:t}=Zr,e=typeof r=="string"?_b(r):r;Mn(e);let n=e.length;if(n<2||e[0]!=48)throw new t("Invalid signature tag");if(e[1]!==n-2)throw new t("Invalid signature: incorrect length");let{d:o,l:s}=Zr._parseInt(e.subarray(2)),{d:i,l:a}=Zr._parseInt(s);if(a.length)throw new t("Invalid signature: left bytes after parsing");return{r:o,s:i}},hexFromSig(r){let t=u=>Number.parseInt(u[0],16)&8?"00"+u:u,e=u=>{let f=u.toString(16);return f.length&1?`0${f}`:f},n=t(e(r.s)),o=t(e(r.r)),s=n.length/2,i=o.length/2,a=e(s),c=e(i);return`30${e(i+s+4)}02${c}${o}02${a}${n}`}},cr=BigInt(0),me=BigInt(1),tS=BigInt(2),fp=BigInt(3),eS=BigInt(4);function Rb(r){let t=Sb(r),{Fp:e}=t,n=t.toBytes||((p,d,w)=>{let g=d.toAffine();return Xe(Uint8Array.from([4]),e.toBytes(g.x),e.toBytes(g.y))}),o=t.fromBytes||(p=>{let d=p.subarray(1),w=e.fromBytes(d.subarray(0,e.BYTES)),g=e.fromBytes(d.subarray(e.BYTES,2*e.BYTES));return{x:w,y:g}});function s(p){let{a:d,b:w}=t,g=e.sqr(p),x=e.mul(g,p);return e.add(e.add(x,e.mul(p,d)),w)}if(!e.eql(e.sqr(t.Gy),s(t.Gx)))throw new Error("bad generator point: equation left != right");function i(p){return typeof p=="bigint"&&cr<p&&p<t.n}function a(p){if(!i(p))throw new Error("Expected valid bigint: 0 < bigint < curve.n")}function c(p){let{allowedPrivateKeyLengths:d,nByteLength:w,wrapPrivateKey:g,n:x}=t;if(d&&typeof p!="bigint"){if(kr(p)&&(p=Ze(p)),typeof p!="string"||!d.includes(p.length))throw new Error("Invalid key");p=p.padStart(w*2,"0")}let b;try{b=typeof p=="bigint"?p:Je(mt("private key",p,w))}catch{throw new Error(`private key must be ${w} bytes, hex or bigint, not ${typeof p}`)}return g&&(b=at(b,x)),a(b),b}let u=new Map;function f(p){if(!(p instanceof l))throw new Error("ProjectivePoint expected")}class l{constructor(d,w,g){if(this.px=d,this.py=w,this.pz=g,d==null||!e.isValid(d))throw new Error("x required");if(w==null||!e.isValid(w))throw new Error("y required");if(g==null||!e.isValid(g))throw new Error("z required")}static fromAffine(d){let{x:w,y:g}=d||{};if(!d||!e.isValid(w)||!e.isValid(g))throw new Error("invalid affine point");if(d instanceof l)throw new Error("projective point not allowed");let x=b=>e.eql(b,e.ZERO);return x(w)&&x(g)?l.ZERO:new l(w,g,e.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(d){let w=e.invertBatch(d.map(g=>g.pz));return d.map((g,x)=>g.toAffine(w[x])).map(l.fromAffine)}static fromHex(d){let w=l.fromAffine(o(mt("pointHex",d)));return w.assertValidity(),w}static fromPrivateKey(d){return l.BASE.multiply(c(d))}_setWindowSize(d){this._WINDOW_SIZE=d,u.delete(this)}assertValidity(){if(this.is0()){if(t.allowInfinityPoint&&!e.is0(this.py))return;throw new Error("bad point: ZERO")}let{x:d,y:w}=this.toAffine();if(!e.isValid(d)||!e.isValid(w))throw new Error("bad point: x or y not FE");let g=e.sqr(w),x=s(d);if(!e.eql(g,x))throw new Error("bad point: equation left != right");if(!this.isTorsionFree())throw new Error("bad point: not in prime-order subgroup")}hasEvenY(){let{y:d}=this.toAffine();if(e.isOdd)return!e.isOdd(d);throw new Error("Field doesn't support isOdd")}equals(d){f(d);let{px:w,py:g,pz:x}=this,{px:b,py:B,pz:A}=d,I=e.eql(e.mul(w,A),e.mul(b,x)),v=e.eql(e.mul(g,A),e.mul(B,x));return I&&v}negate(){return new l(this.px,e.neg(this.py),this.pz)}double(){let{a:d,b:w}=t,g=e.mul(w,fp),{px:x,py:b,pz:B}=this,A=e.ZERO,I=e.ZERO,v=e.ZERO,E=e.mul(x,x),U=e.mul(b,b),P=e.mul(B,B),N=e.mul(x,b);return N=e.add(N,N),v=e.mul(x,B),v=e.add(v,v),A=e.mul(d,v),I=e.mul(g,P),I=e.add(A,I),A=e.sub(U,I),I=e.add(U,I),I=e.mul(A,I),A=e.mul(N,A),v=e.mul(g,v),P=e.mul(d,P),N=e.sub(E,P),N=e.mul(d,N),N=e.add(N,v),v=e.add(E,E),E=e.add(v,E),E=e.add(E,P),E=e.mul(E,N),I=e.add(I,E),P=e.mul(b,B),P=e.add(P,P),E=e.mul(P,N),A=e.sub(A,E),v=e.mul(P,U),v=e.add(v,v),v=e.add(v,v),new l(A,I,v)}add(d){f(d);let{px:w,py:g,pz:x}=this,{px:b,py:B,pz:A}=d,I=e.ZERO,v=e.ZERO,E=e.ZERO,U=t.a,P=e.mul(t.b,fp),N=e.mul(w,b),M=e.mul(g,B),C=e.mul(x,A),X=e.add(w,g),S=e.add(b,B);X=e.mul(X,S),S=e.add(N,M),X=e.sub(X,S),S=e.add(w,x);let T=e.add(b,A);return S=e.mul(S,T),T=e.add(N,C),S=e.sub(S,T),T=e.add(g,x),I=e.add(B,A),T=e.mul(T,I),I=e.add(M,C),T=e.sub(T,I),E=e.mul(U,S),I=e.mul(P,C),E=e.add(I,E),I=e.sub(M,E),E=e.add(M,E),v=e.mul(I,E),M=e.add(N,N),M=e.add(M,N),C=e.mul(U,C),S=e.mul(P,S),M=e.add(M,C),C=e.sub(N,C),C=e.mul(U,C),S=e.add(S,C),N=e.mul(M,S),v=e.add(v,N),N=e.mul(T,S),I=e.mul(X,I),I=e.sub(I,N),N=e.mul(X,M),E=e.mul(T,E),E=e.add(E,N),new l(I,v,E)}subtract(d){return this.add(d.negate())}is0(){return this.equals(l.ZERO)}wNAF(d){return h.wNAFCached(this,u,d,w=>{let g=e.invertBatch(w.map(x=>x.pz));return w.map((x,b)=>x.toAffine(g[b])).map(l.fromAffine)})}multiplyUnsafe(d){let w=l.ZERO;if(d===cr)return w;if(a(d),d===me)return this;let{endo:g}=t;if(!g)return h.unsafeLadder(this,d);let{k1neg:x,k1:b,k2neg:B,k2:A}=g.splitScalar(d),I=w,v=w,E=this;for(;b>cr||A>cr;)b&me&&(I=I.add(E)),A&me&&(v=v.add(E)),E=E.double(),b>>=me,A>>=me;return x&&(I=I.negate()),B&&(v=v.negate()),v=new l(e.mul(v.px,g.beta),v.py,v.pz),I.add(v)}multiply(d){a(d);let w=d,g,x,{endo:b}=t;if(b){let{k1neg:B,k1:A,k2neg:I,k2:v}=b.splitScalar(w),{p:E,f:U}=this.wNAF(A),{p:P,f:N}=this.wNAF(v);E=h.constTimeNegate(B,E),P=h.constTimeNegate(I,P),P=new l(e.mul(P.px,b.beta),P.py,P.pz),g=E.add(P),x=U.add(N)}else{let{p:B,f:A}=this.wNAF(w);g=B,x=A}return l.normalizeZ([g,x])[0]}multiplyAndAddUnsafe(d,w,g){let x=l.BASE,b=(A,I)=>I===cr||I===me||!A.equals(x)?A.multiplyUnsafe(I):A.multiply(I),B=b(this,w).add(b(d,g));return B.is0()?void 0:B}toAffine(d){let{px:w,py:g,pz:x}=this,b=this.is0();d==null&&(d=b?e.ONE:e.inv(x));let B=e.mul(w,d),A=e.mul(g,d),I=e.mul(x,d);if(b)return{x:e.ZERO,y:e.ZERO};if(!e.eql(I,e.ONE))throw new Error("invZ was invalid");return{x:B,y:A}}isTorsionFree(){let{h:d,isTorsionFree:w}=t;if(d===me)return!0;if(w)return w(l,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:d,clearCofactor:w}=t;return d===me?this:w?w(l,this):this.multiplyUnsafe(t.h)}toRawBytes(d=!0){return this.assertValidity(),n(l,this,d)}toHex(d=!0){return Ze(this.toRawBytes(d))}}l.BASE=new l(t.Gx,t.Gy,e.ONE),l.ZERO=new l(e.ZERO,e.ONE,e.ZERO);let m=t.nBitLength,h=Xs(l,t.endo?Math.ceil(m/2):m);return{CURVE:t,ProjectivePoint:l,normPrivateKeyToScalar:c,weierstrassEquation:s,isWithinCurveOrder:i}}function Tb(r){let t=So(r);return Le(t,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...t})}function hp(r){let t=Tb(r),{Fp:e,n}=t,o=e.BYTES+1,s=2*e.BYTES+1;function i(S){return cr<S&&S<e.ORDER}function a(S){return at(S,n)}function c(S){return Zs(S,n)}let{ProjectivePoint:u,normPrivateKeyToScalar:f,weierstrassEquation:l,isWithinCurveOrder:m}=Rb({...t,toBytes(S,T,H){let R=T.toAffine(),k=e.toBytes(R.x),F=Xe;return H?F(Uint8Array.from([T.hasEvenY()?2:3]),k):F(Uint8Array.from([4]),k,e.toBytes(R.y))},fromBytes(S){let T=S.length,H=S[0],R=S.subarray(1);if(T===o&&(H===2||H===3)){let k=Je(R);if(!i(k))throw new Error("Point is not on curve");let F=l(k),$;try{$=e.sqrt(F)}catch(Y){let et=Y instanceof Error?": "+Y.message:"";throw new Error("Point is not on curve"+et)}let K=($&me)===me;return(H&1)===1!==K&&($=e.neg($)),{x:k,y:$}}else if(T===s&&H===4){let k=e.fromBytes(R.subarray(0,e.BYTES)),F=e.fromBytes(R.subarray(e.BYTES,2*e.BYTES));return{x:k,y:F}}else throw new Error(`Point of length ${T} was invalid. Expected ${o} compressed bytes or ${s} uncompressed bytes`)}}),h=S=>Ze(Ir(S,t.nByteLength));function p(S){let T=n>>me;return S>T}function d(S){return p(S)?a(-S):S}let w=(S,T,H)=>Je(S.slice(T,H));class g{constructor(T,H,R){this.r=T,this.s=H,this.recovery=R,this.assertValidity()}static fromCompact(T){let H=t.nByteLength;return T=mt("compactSignature",T,H*2),new g(w(T,0,H),w(T,H,2*H))}static fromDER(T){let{r:H,s:R}=Zr.toSig(mt("DER",T));return new g(H,R)}assertValidity(){if(!m(this.r))throw new Error("r must be 0 < r < CURVE.n");if(!m(this.s))throw new Error("s must be 0 < s < CURVE.n")}addRecoveryBit(T){return new g(this.r,this.s,T)}recoverPublicKey(T){let{r:H,s:R,recovery:k}=this,F=v(mt("msgHash",T));if(k==null||![0,1,2,3].includes(k))throw new Error("recovery id invalid");let $=k===2||k===3?H+t.n:H;if($>=e.ORDER)throw new Error("recovery id 2 or 3 invalid");let K=k&1?"03":"02",W=u.fromHex(K+h($)),Y=c($),et=a(-F*Y),J=a(R*Y),Q=u.BASE.multiplyAndAddUnsafe(W,et,J);if(!Q)throw new Error("point at infinify");return Q.assertValidity(),Q}hasHighS(){return p(this.s)}normalizeS(){return this.hasHighS()?new g(this.r,a(-this.s),this.recovery):this}toDERRawBytes(){return zr(this.toDERHex())}toDERHex(){return Zr.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return zr(this.toCompactHex())}toCompactHex(){return h(this.r)+h(this.s)}}let x={isValidPrivateKey(S){try{return f(S),!0}catch{return!1}},normPrivateKeyToScalar:f,randomPrivateKey:()=>{let S=Jc(t.n);return id(t.randomBytes(S),t.n)},precompute(S=8,T=u.BASE){return T._setWindowSize(S),T.multiply(BigInt(3)),T}};function b(S,T=!0){return u.fromPrivateKey(S).toRawBytes(T)}function B(S){let T=kr(S),H=typeof S=="string",R=(T||H)&&S.length;return T?R===o||R===s:H?R===2*o||R===2*s:S instanceof u}function A(S,T,H=!0){if(B(S))throw new Error("first arg must be private key");if(!B(T))throw new Error("second arg must be public key");return u.fromHex(T).multiply(f(S)).toRawBytes(H)}let I=t.bits2int||function(S){let T=Je(S),H=S.length*8-t.nBitLength;return H>0?T>>BigInt(H):T},v=t.bits2int_modN||function(S){return a(I(S))},E=ko(t.nBitLength);function U(S){if(typeof S!="bigint")throw new Error("bigint expected");if(!(cr<=S&&S<E))throw new Error(`bigint expected < 2^${t.nBitLength}`);return Ir(S,t.nByteLength)}function P(S,T,H=N){if(["recovered","canonical"].some(dt=>dt in H))throw new Error("sign() legacy options not supported");let{hash:R,randomBytes:k}=t,{lowS:F,prehash:$,extraEntropy:K}=H;F==null&&(F=!0),S=mt("msgHash",S),$&&(S=mt("prehashed msgHash",R(S)));let W=v(S),Y=f(T),et=[U(Y),U(W)];if(K!=null&&K!==!1){let dt=K===!0?k(e.BYTES):K;et.push(mt("extraEntropy",dt))}let J=Xe(...et),Q=W;function wt(dt){let _t=I(dt);if(!m(_t))return;let Rt=c(_t),xt=u.BASE.multiply(_t).toAffine(),Dt=a(xt.x);if(Dt===cr)return;let $e=a(Rt*a(Q+Dt*Y));if($e===cr)return;let Ur=(xt.x===Dt?0:2)|Number(xt.y&me),eo=$e;return F&&p($e)&&(eo=d($e),Ur^=1),new g(Dt,eo,Ur)}return{seed:J,k2sig:wt}}let N={lowS:t.lowS,prehash:!1},M={lowS:t.lowS,prehash:!1};function C(S,T,H=N){let{seed:R,k2sig:k}=P(S,T,H),F=t;return jc(F.hash.outputLen,F.nByteLength,F.hmac)(R,k)}u.BASE._setWindowSize(8);function X(S,T,H,R=M){let k=S;if(T=mt("msgHash",T),H=mt("publicKey",H),"strict"in R)throw new Error("options.strict was renamed to lowS");let{lowS:F,prehash:$}=R,K,W;try{if(typeof k=="string"||kr(k))try{K=g.fromDER(k)}catch(xt){if(!(xt instanceof Zr.Err))throw xt;K=g.fromCompact(k)}else if(typeof k=="object"&&typeof k.r=="bigint"&&typeof k.s=="bigint"){let{r:xt,s:Dt}=k;K=new g(xt,Dt)}else throw new Error("PARSE");W=u.fromHex(H)}catch(xt){if(xt.message==="PARSE")throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(F&&K.hasHighS())return!1;$&&(T=t.hash(T));let{r:Y,s:et}=K,J=v(T),Q=c(et),wt=a(J*Q),dt=a(Y*Q),_t=u.BASE.multiplyAndAddUnsafe(W,wt,dt)?.toAffine();return _t?a(_t.x)===Y:!1}return{CURVE:t,getPublicKey:b,getSharedSecret:A,sign:C,verify:X,ProjectivePoint:u,Signature:g,utils:x}}function Cb(r){return{hash:r,hmac:(t,...e)=>_o(r,t,zs(...e)),randomBytes:On}}function dp(r,t){let e=n=>hp({...r,...Cb(n)});return Object.freeze({...e(t),create:e})}var gp=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),pp=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),Nb=BigInt(1),gu=BigInt(2),mp=(r,t)=>(r+t/gu)/t;function Lb(r){let t=gp,e=BigInt(3),n=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),u=r*r*r%t,f=u*u*r%t,l=lt(f,e,t)*f%t,m=lt(l,e,t)*f%t,h=lt(m,gu,t)*u%t,p=lt(h,o,t)*h%t,d=lt(p,s,t)*p%t,w=lt(d,a,t)*d%t,g=lt(w,c,t)*w%t,x=lt(g,a,t)*d%t,b=lt(x,e,t)*f%t,B=lt(b,i,t)*p%t,A=lt(B,n,t)*u%t,I=lt(A,gu,t);if(!yu.eql(yu.sqr(I),r))throw new Error("Cannot find square root");return I}var yu=Js(gp,void 0,void 0,{sqrt:Lb}),Ie=dp({a:BigInt(0),b:BigInt(7),Fp:yu,n:pp,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let t=pp,e=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-Nb*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),o=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),s=e,i=BigInt("0x100000000000000000000000000000000"),a=mp(s*r,t),c=mp(-n*r,t),u=at(r-a*e-c*o,t),f=at(-a*n-c*s,t),l=u>i,m=f>i;if(l&&(u=t-u),m&&(f=t-f),u>i||f>i)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:l,k1:u,k2neg:m,k2:f}}}},lp),lS=BigInt(0);var fS=Ie.ProjectivePoint;function yp(){return Ie.utils.randomPrivateKey()}function wp(r,t){let e=vt.digest(t instanceof Uint8Array?t:t.subarray());if(de(e))return e.then(({digest:n})=>Ie.sign(n,r).toDERRawBytes()).catch(n=>{throw new D(String(n),"ERR_INVALID_INPUT")});try{return Ie.sign(e.digest,r).toDERRawBytes()}catch(n){throw new D(String(n),"ERR_INVALID_INPUT")}}function bp(r,t,e){let n=vt.digest(e instanceof Uint8Array?e:e.subarray());if(de(n))return n.then(({digest:o})=>Ie.verify(t,o,r)).catch(o=>{throw new D(String(o),"ERR_INVALID_INPUT")});try{return Ie.verify(t,n.digest,r)}catch(o){throw new D(String(o),"ERR_INVALID_INPUT")}}function xp(r){return Ie.ProjectivePoint.fromHex(r).toRawBytes(!0)}function Ep(r){try{Ie.getPublicKey(r,!0)}catch(t){throw new D(String(t),"ERR_INVALID_PRIVATE_KEY")}}function wu(r){try{Ie.ProjectivePoint.fromHex(r)}catch(t){throw new D(String(t),"ERR_INVALID_PUBLIC_KEY")}}function vp(r){try{return Ie.getPublicKey(r,!0)}catch(t){throw new D(String(t),"ERR_INVALID_PRIVATE_KEY")}}var Mo=class{_key;constructor(t){wu(t),this._key=t}verify(t,e){return bp(this._key,e,t)}marshal(){return xp(this._key)}get bytes(){return Ue.encode({Type:gt.Secp256k1,Data:this.marshal()}).subarray()}equals(t){return it(this.bytes,t.bytes)}async hash(){let t=vt.digest(this.bytes),e;return de(t)?{bytes:e}=await t:e=t.bytes,e}},$o=class{_key;_publicKey;constructor(t,e){this._key=t,this._publicKey=e??vp(t),Ep(this._key),wu(this._publicKey)}sign(t){return wp(this._key,t)}get public(){return new Mo(this._publicKey)}marshal(){return this._key}get bytes(){return er.encode({Type:gt.Secp256k1,Data:this.marshal()}).subarray()}equals(t){return it(this.bytes,t.bytes)}hash(){let t=vt.digest(this.bytes);return de(t)?t.then(({bytes:e})=>e):t.bytes}async id(){let t=await this.public.hash();return G(t,"base58btc")}async export(t,e="libp2p-key"){if(e==="libp2p-key")return Kn(this.bytes,t);throw new D(`export format '${e}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function Db(r){return new $o(r)}function Pb(r){return new Mo(r)}async function Ob(){let r=yp();return new $o(r)}var ji={rsa:pu,ed25519:ou,secp256k1:bu};function Fb(r){let t=Object.keys(ji).join(" / ");return new D(`invalid or unsupported key type ${r}. Must be ${t}`,"ERR_UNSUPPORTED_KEY_TYPE")}function xu(r){let t=Ue.decode(r),e=t.Data??new Uint8Array;switch(t.Type){case gt.RSA:return ji.rsa.unmarshalRsaPublicKey(e);case gt.Ed25519:return ji.ed25519.unmarshalEd25519PublicKey(e);case gt.Secp256k1:return ji.secp256k1.unmarshalSecp256k1PublicKey(e);default:throw Fb(t.Type??"unknown")}}var Eu=Yt(kp(),1);var Vb=Math.LN2*Math.LN2,Yi=class r{static create(t,e=.005){let n=Mb(t,e);return new r(n)}seeds;bits;buffer;constructor(t={}){t.seeds!=null?this.seeds=t.seeds:this.seeds=$b(t.hashes??8),this.bits=t.bits??1024,this.buffer=ye(Math.ceil(this.bits/8))}add(t){typeof t=="string"&&(t=q(t));for(let e=0;e<this.seeds.length;e++){let o=Eu.default.x86.hash32(t,this.seeds[e])%this.bits;this.setbit(o)}}has(t){typeof t=="string"&&(t=q(t));for(let e=0;e<this.seeds.length;e++){let o=Eu.default.x86.hash32(t,this.seeds[e])%this.bits;if(!this.getbit(o))return!1}return!0}clear(){this.buffer.fill(0)}setbit(t){let e=0,n=t;for(;n>7;)e++,n-=8;let o=this.buffer[e];o|=1<<n,this.buffer[e]=o}getbit(t){let e=0,n=t;for(;n>7;)e++,n-=8;return(this.buffer[e]&1<<n)!==0}};function Mb(r,t=.005){let e=Math.round(-1*r*Math.log(t)/Vb),n=Math.round(e/r*Math.LN2);return{bits:e,hashes:n}}function $b(r){let t,e,n=[];for(let o=0;o<r;o++)for(t=new ss(De(4)),n[o]=t.getUint32(0,!0),e=0;e<o;e++)if(n[o]===n[e]){o--;break}return n}var Ko=class extends tn{intialPeerSearchComplete;requests;name;log;logger;minProviders;maxProviders;providers;evictionFilter;constructor(t,e){super(),ft(1/0,this),this.name=e.name,this.logger=t.logger,this.log=t.logger.forComponent(this.name),this.requests=new Map,this.minProviders=e.minProviders??1,this.maxProviders=e.maxProviders??5,this.providers=[],this.evictionFilter=Yi.create(this.maxProviders)}async retrieve(t,e={}){let n=ce.encode(t.multihash.bytes),o=this.requests.get(n);if(o!=null)return this.log("join existing request for %c",t),o;let s=Bt();if(this.requests.set(n,s.promise),this.providers.length===0){let u=!1;this.intialPeerSearchComplete==null&&(u=!0,this.log=this.logger.forComponent(`${this.name}:${t}`),this.intialPeerSearchComplete=this.findProviders(t,this.minProviders,e)),await this.intialPeerSearchComplete,u&&this.log("found initial session peers for %c",t)}let i=!1,a=new He({concurrency:this.maxProviders});a.addEventListener("error",()=>{}),a.addEventListener("failure",u=>{this.log.error("error querying provider %o, evicting from session",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",()=>{i||e.signal?.aborted===!0||Promise.resolve().then(async()=>{this.log("no session peers had block for for %c, finding new providers",t);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(t,this.minProviders,e),this.log("found new providers re-retrieving %c",t),this.requests.delete(n),s.resolve(await this.retrieve(t,e))}).catch(u=>{this.log.error("could not find new providers for %c",t,u),s.reject(u)})});let c=u=>{a.add(async()=>this.queryProvider(t,u.detail,e),{provider:u.detail}).catch(f=>{e.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c",t,f)})};this.addEventListener("provider",c),Promise.all([...this.providers].map(async u=>a.add(async()=>this.queryProvider(t,u,e),{provider:u}))).catch(u=>{e.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c",t,u)});try{return await s.promise}finally{this.removeEventListener("provider",c),a.clear(),this.requests.delete(n)}}evict(t){this.evictionFilter.add(this.toEvictionKey(t));let e=this.providers.findIndex(n=>this.equals(n,t));e!==-1&&this.providers.splice(e,1)}isEvicted(t){return this.providers.some(e=>this.equals(e,t))}hasProvider(t){return!!(this.providers.find(e=>this.equals(e,t))!=null||this.isEvicted(t))}async findProviders(t,e,n){let o=Bt(),s=0;return Promise.resolve().then(async()=>{this.log("finding %d-%d new provider(s) for %c",e,this.maxProviders,t);for await(let i of this.findNewProviders(t,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===e&&(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<e)throw new D(`Found ${s} of ${e} ${this.name} providers for ${t}`,"ERR_INSUFFICIENT_PROVIDERS_FOUND")}).catch(i=>{this.log.error("error searching routing for potential session peers for %c",t,i.errors??i),o.reject(i)}),o.promise}};var Zi=class{blockstore;datastore;pins;logger;routing;dagWalkers;hashers;dns;log;constructor(t){this.logger=t.logger??Jl(),this.log=this.logger.forComponent("helia"),this.hashers=Oh(t.hashers),this.dagWalkers=Uh(t.dagWalkers),this.dns=t.dns??cf();let e={blockstore:t.blockstore,datastore:t.datastore,hashers:this.hashers,dagWalkers:this.dagWalkers,logger:this.logger,blockBrokers:[],dns:this.dns,...t.components??{}};this.routing=e.routing=new Ds(e,{routers:(t.routers??[]).flatMap(o=>{let s=[o];return o[ro]!=null&&s.push(o[ro]),o[no]!=null&&s.push(o[no]),s}),providerLookupConcurrency:t.providerLookupConcurrency});let n=new Hs(e);this.pins=new Us(t.datastore,n,this.dagWalkers),this.blockstore=new Ps(n,this.pins,{holdGcLock:t.holdGcLock??!0}),this.datastore=t.datastore,e.blockBrokers=t.blockBrokers.map(o=>o(e))}async start(){await Ph(this.datastore),await hr(this.blockstore,this.datastore,this.routing)}async stop(){await dr(this.blockstore,this.datastore,this.routing)}async gc(t={}){let e=await this.blockstore.lock.writeLock();try{let n=this,o=this.blockstore.unwrap();this.log("gc start"),await Pr(o.deleteMany(async function*(){for await(let{cid:s}of o.getAll())try{if(await n.pins.isPinned(s,t))continue;yield s,t.onProgress?.(new rt("helia:gc:deleted",s))}catch(i){n.log.error("Error during gc",i),t.onProgress?.(new rt("helia:gc:error",i))}}()))}finally{e()}this.log("gc finished")}};function Hb(r){return r[Symbol.asyncIterator]!=null}function Kb(r){if(Hb(r))return(async()=>{let e=[];for await(let n of r)e.push(n);return e})();let t=[];for(let e of r)t.push(e);return t}var vu=Kb;var Ji=class{index=0;input="";new(t){return this.index=0,this.input=t,this}readAtomically(t){let e=this.index,n=t();return n===void 0&&(this.index=e),n}parseWith(t){let e=t();if(this.index===this.input.length)return e}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(t){return this.readAtomically(()=>{let e=this.readChar();if(e===t)return e})}readSeparator(t,e,n){return this.readAtomically(()=>{if(!(e>0&&this.readGivenChar(t)===void 0))return n()})}readNumber(t,e,n,o){return this.readAtomically(()=>{let s=0,i=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",u=2**(8*o)-1;for(;;){let f=this.readAtomically(()=>{let l=this.readChar();if(l===void 0)return;let m=Number.parseInt(l,t);if(!Number.isNaN(m))return m});if(f===void 0)break;if(s*=t,s+=f,s>u||(i+=1,e!==void 0&&i>e))return}if(i!==0)return!n&&c&&i>1?void 0:s})}readIPv4Addr(){return this.readAtomically(()=>{let t=new Uint8Array(4);for(let e=0;e<t.length;e++){let n=this.readSeparator(".",e,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;t[e]=n}return t})}readIPv6Addr(){let t=e=>{for(let n=0;n<e.length/2;n++){let o=n*2;if(n<e.length-3){let i=this.readSeparator(":",n,()=>this.readIPv4Addr());if(i!==void 0)return e[o]=i[0],e[o+1]=i[1],e[o+2]=i[2],e[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];e[o]=s>>8,e[o+1]=s&255}return[e.length,!1]};return this.readAtomically(()=>{let e=new Uint8Array(16),[n,o]=t(e);if(n===16)return e;if(o||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let s=new Uint8Array(14),i=16-(n+2),[a]=t(s.subarray(0,i));return e.set(s.subarray(0,a),16-a),e})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var Sp=45,qb=15,Zn=new Ji;function Au(r){if(!(r.length>qb))return Zn.new(r).parseWith(()=>Zn.readIPv4Addr())}function Bu(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Sp))return Zn.new(r).parseWith(()=>Zn.readIPv6Addr())}function Xi(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Sp))return Zn.new(r).parseWith(()=>Zn.readIPAddr())}function Jn(r){return!!Au(r)}function Xn(r){return!!Bu(r)}function Qi(r){return!!Xi(r)}var _p=Yt(Ip(),1),zb=["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"],Gb=zb.map(r=>new _p.Netmask(r));function jb(r){for(let t of Gb)if(t.contains(r))return!0;return!1}function Wb(r){return/^::$/.test(r)||/^::1$/.test(r)||/^::f{4}:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^::f{4}:0.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.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 Rp(r){return Jn(r)?jb(r):Xn(r)?Wb(r):void 0}var mI=parseInt("0xFFFF",16),gI=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);var Np=Jn,Qb=Xn,ku=function(r){let t=0;if(r=r.toString().trim(),Np(r)){let e=new Uint8Array(t+4);return r.split(/\./g).forEach(n=>{e[t++]=parseInt(n,10)&255}),e}if(Qb(r)){let e=r.split(":",8),n;for(n=0;n<e.length;n++){let s=Np(e[n]),i;s&&(i=ku(e[n]),e[n]=G(i.slice(0,2),"base16")),i!=null&&++n<8&&e.splice(n,0,G(i.slice(2,4),"base16"))}if(e[0]==="")for(;e.length<8;)e.unshift("0");else if(e[e.length-1]==="")for(;e.length<8;)e.push("0");else if(e.length<8){for(n=0;n<e.length&&e[n]!=="";n++);let s=[n,1];for(n=9-e.length;n>0;n--)s.push("0");e.splice.apply(e,s)}let o=new Uint8Array(t+16);for(n=0;n<e.length;n++){let s=parseInt(e[n],16);o[t++]=s>>8&255,o[t++]=s&255}return o}throw new Error("invalid ip address")},Lp=function(r,t=0,e){t=~~t,e=e??r.length-t;let n=new DataView(r.buffer);if(e===4){let o=[];for(let s=0;s<e;s++)o.push(r[t+s]);return o.join(".")}if(e===16){let o=[];for(let s=0;s<e;s+=2)o.push(n.getUint16(t+s).toString(16));return o.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var Qn={},Su={},ex=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,-1,"ip6zone"],[43,8,"ipcidr"],[53,-1,"dns",!0],[54,-1,"dns4",!0],[55,-1,"dns6",!0],[56,-1,"dnsaddr",!0],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[280,0,"webrtc-direct"],[281,0,"webrtc"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,-1,"unix",!1,!0],[421,-1,"ipfs"],[421,-1,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,-1,"garlic64"],[448,0,"tls"],[449,-1,"sni"],[460,0,"quic"],[461,0,"quic-v1"],[465,0,"webtransport"],[466,-1,"certhash"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"],[777,-1,"memory"]];ex.forEach(r=>{let t=rx(...r);Su[t.code]=t,Qn[t.name]=t});function rx(r,t,e,n,o){return{code:r,size:t,name:e,resolvable:!!n,path:!!o}}function j(r){if(typeof r=="number"){if(Su[r]!=null)return Su[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(Qn[r]!=null)return Qn[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var JI=j("ip4"),XI=j("ip6"),QI=j("ipcidr");function _u(r,t){switch(j(r).code){case 4:case 41:return ox(t);case 42:return Pp(t);case 6:case 273:case 33:case 132:return Fp(t).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return Pp(t);case 421:return cx(t);case 444:return Op(t);case 445:return Op(t);case 466:return ax(t);default:return G(t,"base16")}}function Ru(r,t){switch(j(r).code){case 4:return Up(t);case 41:return Up(t);case 42:return Dp(t);case 6:case 273:case 33:case 132:return Tu(parseInt(t,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return Dp(t);case 421:return sx(t);case 444:return ux(t);case 445:return lx(t);case 466:return ix(t);default:return q(t,"base16")}}var Iu=Object.values(yr).map(r=>r.decoder),nx=function(){let r=Iu[0].or(Iu[1]);return Iu.slice(2).forEach(t=>r=r.or(t)),r}();function Up(r){if(!Qi(r))throw new Error("invalid ip address");return ku(r)}function ox(r){let t=Lp(r,0,r.length);if(t==null)throw new Error("ipBuff is required");if(!Qi(t))throw new Error("invalid ip address");return t}function Tu(r){let t=new ArrayBuffer(2);return new DataView(t).setUint16(0,r),new Uint8Array(t)}function Fp(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function Dp(r){let t=q(r),e=Uint8Array.from(rn(t.length));return kt([e,t],e.length+t.length)}function Pp(r){let t=Or(r);if(r=r.slice(Gt(t)),r.length!==t)throw new Error("inconsistent lengths");return G(r)}function sx(r){let t;r[0]==="Q"||r[0]==="1"?t=Te(ht.decode(`z${r}`)).bytes:t=st.parse(r).multihash.bytes;let e=Uint8Array.from(rn(t.length));return kt([e,t],e.length+t.length)}function ix(r){let t=nx.decode(r),e=Uint8Array.from(rn(t.length));return kt([e,t],e.length+t.length)}function ax(r){let t=Or(r),e=r.slice(Gt(t));if(e.length!==t)throw new Error("inconsistent lengths");return"u"+G(e,"base64url")}function cx(r){let t=Or(r),e=r.slice(Gt(t));if(e.length!==t)throw new Error("inconsistent lengths");return G(e,"base58btc")}function ux(r){let t=r.split(":");if(t.length!==2)throw new Error(`failed to parse onion addr: ["'${t.join('", "')}'"]' does not contain a port number`);if(t[0].length!==16)throw new Error(`failed to parse onion addr: ${t[0]} not a Tor onion address.`);let e=Tt.decode("b"+t[0]),n=parseInt(t[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=Tu(n);return kt([e,o],e.length+o.length)}function lx(r){let t=r.split(":");if(t.length!==2)throw new Error(`failed to parse onion addr: ["'${t.join('", "')}'"]' does not contain a port number`);if(t[0].length!==56)throw new Error(`failed to parse onion addr: ${t[0]} not a Tor onion3 address.`);let e=Tt.decode(`b${t[0]}`),n=parseInt(t[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=Tu(n);return kt([e,o],e.length+o.length)}function Op(r){let t=r.slice(0,r.length-2),e=r.slice(r.length-2),n=G(t,"base32"),o=Fp(e);return`${n}:${o}`}function Vp(r){r=Cu(r);let t=[],e=[],n=null,o=r.split("/").slice(1);if(o.length===1&&o[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let s=0;s<o.length;s++){let i=o[s],a=j(i);if(a.size===0){t.push([a.code]),e.push([a.code]);continue}if(s++,s>=o.length)throw $p("invalid address: "+r);if(a.path===!0){n=Cu(o.slice(s).join("/")),t.push([a.code,Ru(a.code,n)]),e.push([a.code,n]);break}let c=Ru(a.code,o[s]);t.push([a.code,c]),e.push([a.code,_u(a.code,c)])}return{string:Mp(e),bytes:Lu(t),tuples:t,stringTuples:e,path:n}}function Nu(r){let t=[],e=[],n=null,o=0;for(;o<r.length;){let s=Or(r,o),i=Gt(s),a=j(s),c=fx(a,r.slice(o+i));if(c===0){t.push([s]),e.push([s]),o+=i;continue}let u=r.slice(o+i,o+i+c);if(o+=c+i,o>r.length)throw $p("Invalid address Uint8Array: "+G(r,"base16"));t.push([s,u]);let f=_u(s,u);if(e.push([s,f]),a.path===!0){n=f;break}}return{bytes:Uint8Array.from(r),string:Mp(e),tuples:t,stringTuples:e,path:n}}function Mp(r){let t=[];return r.map(e=>{let n=j(e[0]);return t.push(n.name),e.length>1&&e[1]!=null&&t.push(e[1]),null}),Cu(t.join("/"))}function Lu(r){return kt(r.map(t=>{let e=j(t[0]),n=Uint8Array.from(rn(e.code));return t.length>1&&t[1]!=null&&(n=kt([n,t[1]])),n}))}function fx(r,t){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let e=Or(t instanceof Uint8Array?t:Uint8Array.from(t));return e+Gt(e)}}function Cu(r){return"/"+r.trim().split("/").filter(t=>t).join("/")}function $p(r){return new Error("Error parsing address: "+r)}var hx=Symbol.for("nodejs.util.inspect.custom"),Uu=Symbol.for("@multiformats/js-multiaddr/multiaddr"),dx=[j("dns").code,j("dns4").code,j("dns6").code,j("dnsaddr").code],ta=class r{bytes;#t;#e;#r;#o;[Uu]=!0;constructor(t){t==null&&(t="");let e;if(t instanceof Uint8Array)e=Nu(t);else if(typeof t=="string"){if(t.length>0&&t.charAt(0)!=="/")throw new Error(`multiaddr "${t}" must start with a "/"`);e=Vp(t)}else if(Kp(t))e=Nu(t.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=e.bytes,this.#t=e.string,this.#e=e.tuples,this.#r=e.stringTuples,this.#o=e.path}toString(){return this.#t}toJSON(){return this.toString()}toOptions(){let t,e,n,o,s="",i=j("tcp"),a=j("udp"),c=j("ip4"),u=j("ip6"),f=j("dns6"),l=j("ip6zone");for(let[h,p]of this.stringTuples())h===l.code&&(s=`%${p??""}`),dx.includes(h)&&(e=i.name,o=443,n=`${p??""}${s}`,t=h===f.code?6:4),(h===i.code||h===a.code)&&(e=j(h).name,o=parseInt(p??"")),(h===c.code||h===u.code)&&(e=j(h).name,n=`${p??""}${s}`,t=h===u.code?6:4);if(t==null||e==null||n==null||o==null)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".');return{family:t,host:n,transport:e,port:o}}protos(){return this.#e.map(([t])=>Object.assign({},j(t)))}protoCodes(){return this.#e.map(([t])=>t)}protoNames(){return this.#e.map(([t])=>j(t).name)}tuples(){return this.#e}stringTuples(){return this.#r}encapsulate(t){return t=new r(t),new r(this.toString()+t.toString())}decapsulate(t){let e=t.toString(),n=this.toString(),o=n.lastIndexOf(e);if(o<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${t.toString()}`);return new r(n.slice(0,o))}decapsulateCode(t){let e=this.tuples();for(let n=e.length-1;n>=0;n--)if(e[n][0]===t)return new r(Lu(e.slice(0,n)));return this}getPeerId(){try{let t=[];this.stringTuples().forEach(([n,o])=>{n===Qn.p2p.code&&t.push([n,o]),n===Qn["p2p-circuit"].code&&(t=[])});let e=t.pop();if(e?.[1]!=null){let n=e[1];return n[0]==="Q"||n[0]==="1"?G(ht.decode(`z${n}`),"base58btc"):G(st.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#o}equals(t){return it(this.bytes,t.bytes)}async resolve(t){let e=this.protos().find(s=>s.resolvable);if(e==null)return[this];let n=Hp.get(e.name);if(n==null)throw new D(`no available resolver for ${e.name}`,"ERR_NO_AVAILABLE_RESOLVER");return(await n(this,t)).map(s=>Jr(s))}nodeAddress(){let t=this.toOptions();if(t.transport!=="tcp"&&t.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${t.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:t.family,address:t.host,port:t.port}}isThinWaistAddress(t){let e=(t??this).protos();return!(e.length!==2||e[0].code!==4&&e[0].code!==41||e[1].code!==6&&e[1].code!==273)}[hx](){return`Multiaddr(${this.#t})`}};var Hp=new Map;function Kp(r){return!!r?.[Uu]}function Jr(r){return new ta(r)}var px=r=>r.toString().split("/").slice(1),zo=r=>({match:t=>t.length<1?!1:r(t[0])?t.slice(1):!1,pattern:"fn"}),nt=r=>({match:t=>zo(e=>e===r).match(t),pattern:r}),na=()=>({match:r=>zo(t=>typeof t=="string").match(r),pattern:"{string}"}),oa=()=>({match:r=>zo(t=>!isNaN(parseInt(t))).match(r),pattern:"{number}"}),Ut=()=>({match:r=>{if(r.length<2||r[0]!=="p2p"&&r[0]!=="ipfs")return!1;if(r[1].startsWith("Q")||r[1].startsWith("1"))try{ht.decode(`z${r[1]}`)}catch{return!1}else return!1;return r.slice(2)},pattern:"/p2p/{peerid}"}),ea=()=>({match:r=>{if(r.length<2||r[0]!=="certhash")return!1;try{qa.decode(r[1])}catch{return!1}return r.slice(2)},pattern:"/certhash/{certhash}"}),qt=r=>({match:t=>{let e=r.match(t);return e===!1?t:e},pattern:`optional(${r.pattern})`}),se=(...r)=>({match:t=>{let e;for(let n of r){let o=n.match(t);o!==!1&&(e==null||o.length<e.length)&&(e=o)}return e??!1},pattern:`or(${r.map(t=>t.pattern).join(", ")})`}),ct=(...r)=>({match:t=>{for(let e of r){let n=e.match(t);if(n===!1)return!1;t=n}return t},pattern:`and(${r.map(t=>t.pattern).join(", ")})`});function yt(...r){function t(o){let s=px(o);for(let i of r){let a=i.match(s);if(a===!1)return!1;s=a}return s}function e(o){return t(o)!==!1}function n(o){let s=t(o);return s===!1?!1:s.length===0}return{matches:e,exactMatch:n}}var Pu=ct(nt("dns4"),na()),Ou=ct(nt("dns6"),na()),Fu=ct(nt("dnsaddr"),na()),qp=ct(nt("dns"),na()),_6=yt(Pu),R6=yt(Ou),T6=yt(Fu),zp=yt(se(qp,Fu,Pu,Ou)),Gp=ct(nt("ip4"),zo(Jn)),jp=ct(nt("ip6"),zo(Xn)),Wp=se(Gp,jp),Ve=se(Wp,qp,Pu,Ou,Fu),C6=yt(Ve),N6=yt(Gp),L6=yt(jp),U6=yt(Wp),sa=ct(Ve,nt("tcp"),oa()),Go=ct(Ve,nt("udp"),oa()),mx=se(sa,Go),D6=yt(sa),P6=yt(Go),Vu=ct(Go,nt("quic")),ia=ct(Go,nt("quic-v1")),gx=se(Vu,ia),O6=yt(Vu),F6=yt(ia),Du=se(Ve,sa,Go,Vu,ia),Yp=se(ct(Du,nt("ws"),qt(Ut()))),V6=yt(Yp),Zp=se(ct(Du,nt("wss"),qt(Ut())),ct(Du,nt("tls"),nt("ws"),qt(Ut()))),M6=yt(Zp),Jp=ct(mx,nt("webrtc-direct"),ea(),qt(ea()),qt(Ut())),$6=yt(Jp),Xp=ct(ia,nt("webtransport"),ea(),ea(),qt(Ut())),H6=yt(Xp),ra=se(Yp,Zp,ct(sa,qt(Ut())),ct(gx,qt(Ut())),ct(Ve,qt(Ut())),Jp,Xp,Ut()),K6=yt(ra),yx=ct(ra,nt("p2p-circuit"),Ut()),q6=yt(yx),wx=se(ct(ra,nt("p2p-circuit"),nt("webrtc"),Ut()),ct(ra,nt("webrtc"),qt(Ut())),nt("webrtc")),z6=yt(wx),bx=se(ct(Ve,nt("tcp"),oa(),nt("http"),qt(Ut())),ct(Ve,nt("http"),qt(Ut()))),Qp=yt(bx),xx=se(ct(Ve,nt("tcp"),se(ct(nt("443"),nt("http")),ct(oa(),nt("https"))),qt(Ut())),ct(Ve,nt("tls"),nt("http"),qt(Ut())),ct(Ve,nt("https"),qt(Ut()))),t0=yt(xx);var Ex=[j("tcp").code,j("dns").code,j("dnsaddr").code,j("dns4").code,j("dns6").code];function e0(r){let t;try{t=j("sni").code}catch{return null}for(let[e,n]of r)if(e===t&&n!==void 0)return n;return null}function r0(r){return r.some(([t,e])=>t===j("tls").code)}function ie(r,t,e){let n=n0[j(r).name];if(n===void 0)throw new Error(`Can't interpret protocol ${j(r).name}`);let o=n(t,e);return r===j("ip6").code?`[${o}]`:o}var n0={ip4:(r,t)=>r,ip6:(r,t)=>t.length===0?r:`[${r}]`,tcp:(r,t)=>{let e=t.pop();if(e===void 0)throw new Error("Unexpected end of multiaddr");return`tcp://${ie(e[0],e[1]??"",t)}:${r}`},udp:(r,t)=>{let e=t.pop();if(e===void 0)throw new Error("Unexpected end of multiaddr");return`udp://${ie(e[0],e[1]??"",t)}:${r}`},dnsaddr:(r,t)=>r,dns4:(r,t)=>r,dns6:(r,t)=>r,dns:(r,t)=>r,ipfs:(r,t)=>{let e=t.pop();if(e===void 0)throw new Error("Unexpected end of multiaddr");return`${ie(e[0],e[1]??"",t)}/ipfs/${r}`},p2p:(r,t)=>{let e=t.pop();if(e===void 0)throw new Error("Unexpected end of multiaddr");return`${ie(e[0],e[1]??"",t)}/p2p/${r}`},http:(r,t)=>{let e=r0(t),n=e0(t);if(e&&n!==null)return`https://${n}`;let o=e?"https://":"http://",s=t.pop();if(s===void 0)throw new Error("Unexpected end of multiaddr");let i=ie(s[0],s[1]??"",t);return i=i.replace("tcp://",""),`${o}${i}`},tls:(r,t)=>{let e=t.pop();if(e===void 0)throw new Error("Unexpected end of multiaddr");return ie(e[0],e[1]??"",t)},sni:(r,t)=>{let e=t.pop();if(e===void 0)throw new Error("Unexpected end of multiaddr");return ie(e[0],e[1]??"",t)},https:(r,t)=>{let e=t.pop();if(e===void 0)throw new Error("Unexpected end of multiaddr");let n=ie(e[0],e[1]??"",t);return n=n.replace("tcp://",""),`https://${n}`},ws:(r,t)=>{let e=r0(t),n=e0(t);if(e&&n!==null)return`wss://${n}`;let o=e?"wss://":"ws://",s=t.pop();if(s===void 0)throw new Error("Unexpected end of multiaddr");let i=ie(s[0],s[1]??"",t);return i=i.replace("tcp://",""),`${o}${i}`},wss:(r,t)=>{let e=t.pop();if(e===void 0)throw new Error("Unexpected end of multiaddr");let n=ie(e[0],e[1]??"",t);return n=n.replace("tcp://",""),`wss://${n}`},"p2p-websocket-star":(r,t)=>{let e=t.pop();if(e===void 0)throw new Error("Unexpected end of multiaddr");return`${ie(e[0],e[1]??"",t)}/p2p-websocket-star`},"p2p-webrtc-star":(r,t)=>{let e=t.pop();if(e===void 0)throw new Error("Unexpected end of multiaddr");return`${ie(e[0],e[1]??"",t)}/p2p-webrtc-star`},"p2p-webrtc-direct":(r,t)=>{let e=t.pop();if(e===void 0)throw new Error("Unexpected end of multiaddr");return`${ie(e[0],e[1]??"",t)}/p2p-webrtc-direct`}};function o0(r,t){let n=Jr(r).stringTuples(),o=n.pop();if(o===void 0)throw new Error("Unexpected end of multiaddr");let s=j(o[0]),i=n0[s.name];if(i==null)throw new Error(`No interpreter found for ${s.name}`);let a=i(o[1]??"",n);return t?.assumeHttp!==!1&&Ex.includes(o[0])&&(a=a.replace(/^.*:\/\//,""),o[1]==="443"?a=`https://${a}`:a=`http://${a}`),(a.startsWith("http://")||a.startsWith("https://"))&&(a=new URL(a).toString(),a.endsWith("/")&&(a=a.substring(0,a.length-1))),a}var Xr=class{url;#t=0;#e=0;#r=0;#o=0;#a=new Map;log;constructor(t,e){this.url=t instanceof URL?t:new URL(t),this.log=e.forComponent(`helia:trustless-gateway-block-broker:${this.url.hostname}`)}#u(t){let e=t.multihash.bytes;return ce.encode(e)}async getRawBlock(t,e){let n=new URL(this.url.toString());if(n.pathname=`/ipfs/${t.toString()}`,n.search="?format=raw",e?.aborted===!0)throw new Error(`Signal to fetch raw block for CID ${t} from gateway ${this.url} was aborted prior to fetch`);let o=this.#u(t);try{let s=this.#a.get(o);return s==null&&(this.#t++,s=fetch(n.toString(),{signal:e,headers:{Accept:"application/vnd.ipld.raw"},cache:"force-cache"}).then(async i=>{if(this.log("GET %s %d",n,i.status),!i.ok)throw this.#e++,new Error(`unable to fetch raw block for CID ${t} from gateway ${this.url}`);return this.#o++,new Uint8Array(await i.arrayBuffer())}),this.#a.set(o,s)),await s}catch{throw e?.aborted===!0?new Error(`fetching raw block for CID ${t} from gateway ${this.url} was aborted`):(this.#e++,new Error(`unable to fetch raw block for CID ${t}`))}finally{this.#a.delete(o)}}reliability(){return this.#t===0?1:this.#r>0?-1/0:this.#o/(this.#t+this.#e*3)}incrementInvalidBlocks(){this.#r++}getStats(){return{attempts:this.#t,errors:this.#e,invalidBlocks:this.#r,successes:this.#o,pendingResponses:this.#a.size}}};var vx=!1,Ax=!1,Mu=class extends Ko{routing;allowInsecure;allowLocal;constructor(t,e){super(t,{...e,name:"helia:trustless-gateway:session"}),this.routing=t.routing,this.allowInsecure=e.allowInsecure??vx,this.allowLocal=e.allowLocal??Ax}async queryProvider(t,e,n){this.log("fetching BLOCK for %c from %s",t,e.url);let o=await e.getRawBlock(t,n.signal);return this.log.trace("got block for %c from %s",t,e.url),await n.validateFn?.(o),o}async*findNewProviders(t,e={}){for await(let n of this.routing.findProviders(t,e)){let o=Bx(n.multiaddrs,this.allowInsecure,this.allowLocal);if(o.length===0)continue;let s=o0(o[0]);this.log("found http-gateway provider %p %s for cid %c",n.id,s,t),yield new Xr(s,this.logger)}}toEvictionKey(t){return t.url.toString()}equals(t,e){return t.url.toString()===e.url.toString()}};function Bx(r,t,e){return r.filter(n=>t0.matches(n)||t&&Qp.matches(n)?e||zp.matches(n)?!0:Rp(n.toOptions().host)===!1:!1)}function s0(r,t){return new Mu(r,t)}var aa=class{components;gateways;routing;log;logger;constructor(t,e={}){this.components=t,this.log=t.logger.forComponent("helia:trustless-gateway-block-broker"),this.logger=t.logger,this.routing=t.routing,this.gateways=(e.gateways??i0).map(n=>new Xr(n,t.logger))}addGateway(t){this.gateways.push(new Xr(t,this.components.logger))}async retrieve(t,e={}){let n=this.gateways.sort((s,i)=>i.reliability()-s.reliability()),o=[];for(let s of n){this.log("getting block for %c from %s",t,s.url);try{let i=await s.getRawBlock(t,e.signal);this.log.trace("got block for %c from %s",t,s.url);try{await e.validateFn?.(i)}catch(a){throw this.log.error("failed to validate block for %c from %s",t,s.url,a),s.incrementInvalidBlocks(),new Error(`Block for CID ${t} from gateway ${s.url} failed validation`)}return i}catch(i){if(this.log.error("failed to get block for %c from %s",t,s.url,i),i instanceof Error?o.push(i):o.push(new Error(`Unable to fetch raw block for CID ${t} from gateway ${s.url}`)),e.signal?.aborted===!0){this.log.trace("request aborted while fetching raw block for CID %c from gateway %s",t,s.url);break}}}throw o.length>0?new AggregateError(o,`Unable to fetch raw block for CID ${t} from any gateway`):new Error(`Unable to fetch raw block for CID ${t} from any gateway`)}createSession(t={}){return s0({logger:this.logger,routing:this.routing},t)}};var i0=["https://trustless-gateway.link","https://cloudflare-ipfs.com","https://4everland.io"];function $u(r={}){return t=>new aa(t,r)}async function*ca(r,t={}){let e=r.getReader();try{for(;;){let n=await e.read();if(n.done)return;yield n.value}}finally{t.preventCancel!==!0&&await e.cancel(),e.releaseLock()}}var _x=Yt(nn(),1);var Rx=Yt(Ku(),1);var a0="ERR_IPNS_EXPIRED_RECORD",ua="ERR_UNRECOGNIZED_VALIDITY";var ur="ERR_SIGNATURE_VERIFICATION";var qu="ERR_UNDEFINED_PARAMETER",c0="ERR_INVALID_RECORD_DATA",u0="ERR_INVALID_VALUE",l0="ERR_INVALID_EMBEDDED_KEY";var f0="ERR_RECORD_TOO_LARGE";var _e;(function(r){let t;(function(o){o.EOL="EOL"})(t=r.ValidityType||(r.ValidityType={}));let e;(function(o){o[o.EOL=0]="EOL"})(e||(e={})),function(o){o.codec=()=>uo(e)}(t=r.ValidityType||(r.ValidityType={}));let n;r.codec=()=>(n==null&&(n=pn((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)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.value=o.bytes();break;case 2:i.signatureV1=o.bytes();break;case 3:i.validityType=r.ValidityType.codec().decode(o);break;case 4:i.validity=o.bytes();break;case 5:i.sequence=o.uint64();break;case 6:i.ttl=o.uint64();break;case 7:i.pubKey=o.bytes();break;case 8:i.signatureV2=o.bytes();break;case 9:i.data=o.bytes();break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>hn(o,r.codec()),r.decode=o=>an(o,r.codec())})(_e||(_e={}));var ae=Yt(nn(),1);var d0=Qt("ipns:utils"),p0=q("/ipns/"),kx=114,m0=async(r,t)=>{if(t==null||r==null){let n=new Error("one or more of the provided parameters are not defined");throw d0.error(n),(0,ae.default)(n,qu)}let e;if(t.pubKey!=null){try{e=xu(t.pubKey)}catch(o){throw d0.error(o),o}if(!(await zl(t.pubKey)).equals(r))throw(0,ae.default)(new Error("Embedded public key did not match PeerID"),l0)}else r.publicKey!=null&&(e=xu(r.publicKey));if(e!=null)return e;throw(0,ae.default)(new Error("no public key is available"),qu)};var g0=r=>{let t=q("ipns-signature:");return kt([t,r])},Qr=r=>"signatureV1"in r?_e.encode({value:q(r.value),signatureV1:r.signatureV1,validityType:r.validityType,validity:q(r.validity),sequence:r.sequence,ttl:r.ttl,pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data}):_e.encode({pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data});function Me(r){let t=_e.decode(r);if(t.sequence!=null&&(t.sequence=BigInt(t.sequence)),t.ttl!=null&&(t.ttl=BigInt(t.ttl)),t.signatureV2==null||t.data==null)throw(0,ae.default)(new Error("missing data or signatureV2"),ur);let e=y0(t.data),n=Sx(e.Value),o=G(e.Validity);if(t.value!=null&&t.signatureV1!=null)return Ix(t),{value:n,validityType:_e.ValidityType.EOL,validity:o,sequence:e.Sequence,ttl:e.TTL,pubKey:t.pubKey,signatureV1:t.signatureV1,signatureV2:t.signatureV2,data:t.data};if(t.signatureV2!=null)return{value:n,validityType:_e.ValidityType.EOL,validity:o,sequence:e.Sequence,ttl:e.TTL,pubKey:t.pubKey,signatureV2:t.signatureV2,data:t.data};throw new Error("invalid record: does not include signatureV1 or signatureV2")}var zu=r=>kt([p0,r.toBytes()]),to=r=>fo(r.slice(p0.length));var y0=r=>{let t=he(r);if(t.ValidityType===0)t.ValidityType=_e.ValidityType.EOL;else throw(0,ae.default)(new Error("Unknown validity type"),ua);return Number.isInteger(t.Sequence)&&(t.Sequence=BigInt(t.Sequence)),Number.isInteger(t.TTL)&&(t.TTL=BigInt(t.TTL)),t},Sx=r=>{if(r!=null){if(ol(r))return`/ipns/${r.toCID().toString(gr)}`;if(r instanceof Uint8Array){let n=G(r);n.startsWith("/")&&(r=n)}let t=r.toString().trim();if(t.startsWith("/")&&t.length>1)return t;let e=st.asCID(r);if(e!=null)return e.code===kx?`/ipns/${e.toString(gr)}`:`/ipfs/${e.toV1().toString()}`;try{return r instanceof Uint8Array?`/ipfs/${st.decode(r).toV1().toString()}`:`/ipfs/${st.parse(t).toV1().toString()}`}catch{}}throw(0,ae.default)(new Error("Value must be a valid content path starting with /"),u0)},Ix=r=>{if(r.data==null)throw(0,ae.default)(new Error("Record data is missing"),c0);let t=y0(r.data);if(!it(t.Value,r.value??new Uint8Array(0)))throw(0,ae.default)(new Error('Field "value" did not match between protobuf and CBOR'),ur);if(!it(t.Validity,r.validity??new Uint8Array(0)))throw(0,ae.default)(new Error('Field "validity" did not match between protobuf and CBOR'),ur);if(t.ValidityType!==r.validityType)throw(0,ae.default)(new Error('Field "validityType" did not match between protobuf and CBOR'),ur);if(t.Sequence!==r.sequence)throw(0,ae.default)(new Error('Field "sequence" did not match between protobuf and CBOR'),ur);if(t.TTL!==r.ttl)throw(0,ae.default)(new Error('Field "ttl" did not match between protobuf and CBOR'),ur)};var P4=Qt("ipns"),O4=ue.code,F4=60*60*1e9,Tx="/ipns/",V4=Tx.length;var jo=Yt(nn(),1),w0=Yt(Ku(),1);var la=Qt("ipns:validator"),Cx=1024*10,Nx=async(r,t)=>{let e=Me(t),n;try{let o=g0(e.data);n=await r.verify(o,e.signatureV2)}catch{n=!1}if(!n)throw la.error("record signature verification failed"),(0,jo.default)(new Error("record signature verification failed"),ur);if(e.validityType===_e.ValidityType.EOL){if(w0.default.fromString(e.validity).toDate().getTime()<Date.now())throw la.error("record has expired"),(0,jo.default)(new Error("record has expired"),a0)}else if(e.validityType!=null)throw la.error("unrecognized validity type"),(0,jo.default)(new Error("unrecognized validity type"),ua);la("ipns record for %s is valid",e.value)};async function b0(r,t){if(t.byteLength>Cx)throw(0,jo.default)(new Error("record too large"),f0);let e=to(r),n=Me(t),o=await m0(e,n);await Nx(o,t)}async function*Wo(r){let t=/\r?\n/,e=new TextDecoder("utf8"),n="";for await(let o of r){typeof o=="string"&&(o=new TextEncoder().encode(o)),n+=e.decode(o,{stream:!0});let s=n.split(t);n=s.pop()??"";for(let i=0;i<s.length;i++)yield JSON.parse(s[i])}n+=e.decode(),n!==""&&(yield JSON.parse(n))}function Lx(r){return r[Symbol.asyncIterator]!=null}function Ux(r){if(Lx(r))return(async()=>{for await(let t of r)return t})();for(let t of r)return t}var fa=Ux;var Gu=q("/ipns/");function x0(r){return it(r.subarray(0,Gu.byteLength),Gu)}var E0=r=>fo(r.slice(Gu.length)),ha=class{client;constructor(t){this.client=t}async*findProviders(t,e={}){yield*sn(this.client.getProviders(t,e),n=>({id:n.ID,multiaddrs:n.Addrs??[]}))}async provide(){}async put(t,e,n){if(!x0(t))return;let o=E0(t),s=Me(e);await this.client.putIPNS(o,s,n)}async get(t,e){if(!x0(t))throw new D("Not found","ERR_NOT_FOUND");let n=E0(t);try{let o=await this.client.getIPNS(n,e);return Qr(o)}catch(o){throw o.code==="ERR_BAD_RESPONSE"?new D("Not found","ERR_NOT_FOUND"):o}}},da=class{client;constructor(t){this.client=t}async findPeer(t,e={}){let n=await fa(this.client.getPeers(t,e));if(n!=null)return{id:n.ID,multiaddrs:n.Addrs??[]};throw new D("Not found","ERR_NOT_FOUND")}async*getClosestPeers(t,e={}){}};var Wt=Qt("delegated-routing-v1-http-api-client"),v0={concurrentRequests:4,timeout:3e4},pa=class{started;httpQueue;shutDownController;clientUrl;timeout;contentRouting;peerRouting;constructor(t,e={}){this.started=!1,this.shutDownController=new AbortController,ft(1/0,this.shutDownController.signal),this.httpQueue=new Ce({concurrency:e.concurrentRequests??v0.concurrentRequests}),this.clientUrl=t instanceof URL?t:new URL(t),this.timeout=e.timeout??v0.timeout,this.contentRouting=new ha(this),this.peerRouting=new da(this)}get[ro](){return this.contentRouting}get[no](){return this.peerRouting}isStarted(){return this.started}start(){this.started=!0}stop(){this.httpQueue.clear(),this.shutDownController.abort(),this.started=!1}async*getProviders(t,e={}){Wt("getProviders starts: %c",t);let n=AbortSignal.timeout(this.timeout),o=Mt([this.shutDownController.signal,n,e.signal]);ft(1/0,n,o);let s=Bt(),i=Bt();this.httpQueue.add(async()=>(s.resolve(),i.promise));try{await s.promise;let a=`${this.clientUrl}routing/v1/providers/${t.toString()}`,u=await fetch(a,{headers:{Accept:"application/x-ndjson"},signal:o});if(u.status===404)throw new D("No matching records found.","ERR_NOT_FOUND");if(u.status===422)throw new D("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(u.body==null)throw new D("Routing response had no body","ERR_BAD_RESPONSE");if(u.headers.get("Content-Type")==="application/json"){let l=await u.json();for(let m of l.Providers){let h=this.#t(m);h!=null&&(yield h)}}else for await(let l of Wo(ca(u.body))){let m=this.#t(l);m!=null&&(yield m)}}catch(a){Wt.error("getProviders errored:",a)}finally{o.clear(),i.resolve(),Wt("getProviders finished: %c",t)}}async*getPeers(t,e={}){Wt("getPeers starts: %c",t);let n=AbortSignal.timeout(this.timeout),o=Mt([this.shutDownController.signal,n,e.signal]);ft(1/0,n,o);let s=Bt(),i=Bt();this.httpQueue.add(async()=>(s.resolve(),i.promise));try{await s.promise;let a=`${this.clientUrl}routing/v1/peers/${t.toCID().toString()}`,u=await fetch(a,{headers:{Accept:"application/x-ndjson"},signal:o});if(u.status===404)throw new D("No matching records found.","ERR_NOT_FOUND");if(u.status===422)throw new D("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(u.body==null)throw new D("Routing response had no body","ERR_BAD_RESPONSE");if(u.headers.get("Content-Type")==="application/json"){let l=await u.json();for(let m of l.Peers){let h=this.#t(m);h!=null&&(yield h)}}else for await(let l of Wo(ca(u.body))){let m=this.#t(l);m!=null&&(yield m)}}catch(a){Wt.error("getPeers errored:",a)}finally{o.clear(),i.resolve(),Wt("getPeers finished: %c",t)}}async getIPNS(t,e={}){Wt("getIPNS starts: %c",t);let n=AbortSignal.timeout(this.timeout),o=Mt([this.shutDownController.signal,n,e.signal]);ft(1/0,n,o);let s=Bt(),i=Bt();this.httpQueue.add(async()=>(s.resolve(),i.promise));let a=`${this.clientUrl}routing/v1/ipns/${t.toCID().toString()}`;try{await s.promise;let u=await fetch(a,{headers:{Accept:"application/vnd.ipfs.ipns-record"},signal:o});if(Wt("getIPNS GET %s %d",a,u.status),u.status===404)throw new D("No matching records found.","ERR_NOT_FOUND");if(u.status===422)throw new D("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(u.body==null)throw new D("GET ipns response had no body","ERR_BAD_RESPONSE");let f=await u.arrayBuffer(),l=new Uint8Array(f,0,f.byteLength);return e.validate!==!1&&await b0(zu(t),l),Me(l)}catch(c){throw Wt.error("getIPNS GET %s error:",a,c),c}finally{o.clear(),i.resolve(),Wt("getIPNS finished: %c",t)}}async putIPNS(t,e,n={}){Wt("putIPNS starts: %c",t);let o=AbortSignal.timeout(this.timeout),s=Mt([this.shutDownController.signal,o,n.signal]);ft(1/0,o,s);let i=Bt(),a=Bt();this.httpQueue.add(async()=>(i.resolve(),a.promise));let c=`${this.clientUrl}routing/v1/ipns/${t.toCID().toString()}`;try{await i.promise;let u=Qr(e),l=await fetch(c,{method:"PUT",headers:{"Content-Type":"application/vnd.ipfs.ipns-record"},body:u,signal:s});if(Wt("putIPNS PUT %s %d",c,l.status),l.status!==200)throw new D("PUT ipns response had status other than 200","ERR_BAD_RESPONSE")}catch(u){throw Wt.error("putIPNS PUT %s error:",c,u.stack),u}finally{s.clear(),a.resolve(),Wt("putIPNS finished: %c",t)}}#t(t){let e=[],n=t.Addrs?.map(Jr)??[];return t.Protocols!=null&&e.push(...t.Protocols),t.Protocol!=null&&(e.push(t.Protocol),delete t.Protocol),{...t,Schema:"peer",ID:fc(t.ID),Addrs:n,Protocols:e}}};function A0(r,t={}){return new pa(new URL(r),t)}var B0=q("/ipns/");function k0(r){return it(r.subarray(0,B0.byteLength),B0)}var ju=class{client;constructor(t){this.client=A0(t)}async provide(t,e){}async*findProviders(t,e){yield*sn(this.client.getProviders(t,e),n=>({id:n.ID,multiaddrs:n.Addrs,protocols:n.Protocols}))}async put(t,e,n){if(!k0(t))return;let o=to(t),s=Me(e);await this.client.putIPNS(o,s,n)}async get(t,e){if(!k0(t))throw new D("Not found","ERR_NOT_FOUND");let n=to(t);try{let o=await this.client.getIPNS(n,e);return Qr(o)}catch(o){throw o.code==="ERR_BAD_RESPONSE"?new D("Not found","ERR_NOT_FOUND"):o}}async findPeer(t,e){let n=await fa(this.client.getPeers(t,e));if(n!=null)return{id:n.ID,multiaddrs:n.Addrs??[]};throw new D("Not found","ERR_NOT_FOUND")}async*getClosestPeers(t,e){}};function Wu(r){return new ju(new URL(r))}var S0=Yt(nn(),1);function ma(r){return r=r??new Error("Not Found"),(0,S0.default)(r,"ERR_NOT_FOUND")}var I0="SHARDING";function Px(r){return r[Symbol.asyncIterator]!=null}function Ox(r,t){return Px(r)?async function*(){yield*(await vu(r)).sort(t)}():function*(){yield*vu(r).sort(t)}()}var ga=Ox;var lr=class{put(t,e,n){return Promise.reject(new Error(".put is not implemented"))}get(t,e){return Promise.reject(new Error(".get is not implemented"))}has(t,e){return Promise.reject(new Error(".has is not implemented"))}delete(t,e){return Promise.reject(new Error(".delete is not implemented"))}async*putMany(t,e={}){for await(let{key:n,value:o}of t)await this.put(n,o,e),yield n}async*getMany(t,e={}){for await(let n of t)yield{key:n,value:await this.get(n,e)}}async*deleteMany(t,e={}){for await(let n of t)await this.delete(n,e),yield n}batch(){let t=[],e=[];return{put(n,o){t.push({key:n,value:o})},delete(n){e.push(n)},commit:async n=>{await Pr(this.putMany(t,n)),t=[],await Pr(this.deleteMany(e,n)),e=[]}}}async*_all(t,e){throw new Error("._all is not implemented")}async*_allKeys(t,e){throw new Error("._allKeys is not implemented")}query(t,e){let n=this._all(t,e);if(t.prefix!=null){let o=t.prefix;n=ve(n,s=>s.key.toString().startsWith(o))}if(Array.isArray(t.filters)&&(n=t.filters.reduce((o,s)=>ve(o,s),n)),Array.isArray(t.orders)&&(n=t.orders.reduce((o,s)=>ga(o,s),n)),t.offset!=null){let o=0,s=t.offset;n=ve(n,()=>o++>=s)}return t.limit!=null&&(n=is(n,t.limit)),n}queryKeys(t,e){let n=this._allKeys(t,e);if(t.prefix!=null){let o=t.prefix;n=ve(n,s=>s.toString().startsWith(o))}if(Array.isArray(t.filters)&&(n=t.filters.reduce((o,s)=>ve(o,s),n)),Array.isArray(t.orders)&&(n=t.orders.reduce((o,s)=>ga(o,s),n)),t.offset!=null){let o=t.offset,s=0;n=ve(n,()=>s++>=o)}return t.limit!=null&&(n=is(n,t.limit)),n}};var Zo=class extends lr{data;constructor(){super(),this.data=new Map}put(t,e){return this.data.set(t.toString(),e),t}get(t){let e=this.data.get(t.toString());if(e==null)throw ma();return e}has(t){return this.data.has(t.toString())}delete(t){this.data.delete(t.toString())}*_all(){for(let[t,e]of this.data.entries())yield{key:new Nt(t),value:e}}*_allKeys(){for(let t of this.data.keys())yield new Nt(t)}};var n_=new Nt(I0);var m_=Qt("datastore:core:tiered");async function Mx(r={}){let t=r.datastore??new Zo,e=r.blockstore??new Bo,n=new Zi({...r,datastore:t,blockstore:e,blockBrokers:r.blockBrokers??[$u()],routers:r.routers??[Wu("https://delegated-ipfs.dev")]});return r.start!==!1&&await n.start(),n}return H0($x);})();
|
|
8
|
+
`)}async function wb(r,t){let e=Ht.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let o=q(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Wn(o),{iv:i,salt:a,iterations:c,keySize:u,cipherText:f}=bb(s),l=await su(Vn,t,a,{c,dkLen:u}),m=await e.subtle.importKey("raw",l,"AES-CBC",!1,["decrypt"]),h=Oo(await e.subtle.decrypt({name:"AES-CBC",iv:i},m,f)),{result:p}=Wn(h);n=sp(p)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let o=q(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Wn(o);n=sp(s)}else throw new D("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return hu(n)}function bb(r){let t=r.valueBlock.value[0];if(t.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new D("Only pkcs5PBES2 encrypted private keys are supported","ERR_INVALID_PARAMS");let n=t.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new D("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let s=n.valueBlock.value[1],i=Oo(s.valueBlock.value[0].getValue()),a=fu,c=lu;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 D("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key","ERR_INVALID_PARAMS");let u=t.valueBlock.value[1].valueBlock.value[1],f=u.valueBlock.value[0].toString();if(f!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(f!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new D("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let l=Oo(u.valueBlock.value[1].getValue());return{cipherText:Oo(r.valueBlock.value[1].getValue()),salt:i,iterations:a,keySize:c,iv:l}}function sp(r){return Oo(r.valueBlock.value[2].getValue())}function Oo(r){return new Uint8Array(r,0,r.byteLength)}async function ip(r){let t=await Ht.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),e=await up(t);return{privateKey:e[0],publicKey:e[1]}}async function du(r){let e=[await Ht.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await xb(r)],n=await up({privateKey:e[0],publicKey:e[1]});return{privateKey:n[0],publicKey:n[1]}}async function ap(r,t){let e=await Ht.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await Ht.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},e,t instanceof Uint8Array?t:t.subarray());return new Uint8Array(n,0,n.byteLength)}async function cp(r,t,e){let n=await Ht.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return Ht.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,t,e instanceof Uint8Array?e:e.subarray())}async function up(r){if(r.privateKey==null||r.publicKey==null)throw new D("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([Ht.get().subtle.exportKey("jwk",r.privateKey),Ht.get().subtle.exportKey("jwk",r.publicKey)])}async function xb(r){return Ht.get().subtle.importKey("jwk",{kty:r.kty,n:r.n,e:r.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}function Gi(r){if(r.kty!=="RSA")throw new D("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new D("invalid key modulus","ERR_INVALID_KEY_MODULUS");return q(r.n,"base64url").length*8}var Vo=8192,Fo=class{_key;constructor(t){this._key=t}verify(t,e){return cp(this._key,e,t)}marshal(){return Cr.jwkToPkix(this._key)}get bytes(){return Ue.encode({Type:gt.RSA,Data:this.marshal()}).subarray()}equals(t){return it(this.bytes,t.bytes)}hash(){let t=vt.digest(this.bytes);return de(t)?t.then(({bytes:e})=>e):t.bytes}},Yn=class{_key;_publicKey;constructor(t,e){this._key=t,this._publicKey=e}genSecret(){return De(16)}sign(t){return ap(this._key,t)}get public(){if(this._publicKey==null)throw new D("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new Fo(this._publicKey)}marshal(){return Cr.jwkToPkcs1(this._key)}get bytes(){return er.encode({Type:gt.RSA,Data:this.marshal()}).subarray()}equals(t){return it(this.bytes,t.bytes)}hash(){let t=vt.digest(this.bytes);return de(t)?t.then(({bytes:e})=>e):t.bytes}async id(){let t=await this.public.hash();return G(t,"base58btc")}async export(t,e="pkcs-8"){if(e==="pkcs-8")return Cr.exportToPem(this,t);if(e==="libp2p-key")return Kn(this.bytes,t);throw new D(`export format '${e}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function hu(r){let t=Cr.pkcs1ToJwk(r);if(Gi(t)>Vo)throw new D("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await du(t);return new Yn(e.privateKey,e.publicKey)}function vb(r){let t=Cr.pkixToJwk(r);if(Gi(t)>Vo)throw new D("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new Fo(t)}async function Ab(r){if(Gi(r)>Vo)throw new D("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await du(r);return new Yn(t.privateKey,t.publicKey)}async function Bb(r){if(r>Vo)throw new D("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await ip(r);return new Yn(t.privateKey,t.publicKey)}var bu={};Et(bu,{Secp256k1PrivateKey:()=>$o,Secp256k1PublicKey:()=>Mo,generateKeyPair:()=>Ob,unmarshalSecp256k1PrivateKey:()=>Db,unmarshalSecp256k1PublicKey:()=>Pb});var kb=new Uint32Array([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]),Nr=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Lr=new Uint32Array(64),mu=class extends Fn{constructor(){super(64,32,8,!1),this.A=Nr[0]|0,this.B=Nr[1]|0,this.C=Nr[2]|0,this.D=Nr[3]|0,this.E=Nr[4]|0,this.F=Nr[5]|0,this.G=Nr[6]|0,this.H=Nr[7]|0}get(){let{A:t,B:e,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[t,e,n,o,s,i,a,c]}set(t,e,n,o,s,i,a,c){this.A=t|0,this.B=e|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(t,e){for(let l=0;l<16;l++,e+=4)Lr[l]=t.getUint32(e,!1);for(let l=16;l<64;l++){let m=Lr[l-15],h=Lr[l-2],p=Ae(m,7)^Ae(m,18)^m>>>3,d=Ae(h,17)^Ae(h,19)^h>>>10;Lr[l]=d+Lr[l-7]+p+Lr[l-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:u,H:f}=this;for(let l=0;l<64;l++){let m=Ae(a,6)^Ae(a,11)^Ae(a,25),h=f+m+Wh(a,c,u)+kb[l]+Lr[l]|0,d=(Ae(n,2)^Ae(n,13)^Ae(n,22))+Yh(n,o,s)|0;f=u,u=c,c=a,a=i+h|0,i=s,s=o,o=n,n=h+d|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,u=u+this.G|0,f=f+this.H|0,this.set(n,o,s,i,a,c,u,f)}roundClean(){Lr.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var lp=Gs(()=>new mu);function Sb(r){let t=So(r);Le(t,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:e,Fp:n,a:o}=t;if(e){if(!n.eql(o,n.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if(typeof e!="object"||typeof e.beta!="bigint"||typeof e.splitScalar!="function")throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...t})}var{bytesToNumberBE:Ib,hexToBytes:_b}=Ys,Zr={Err:class extends Error{constructor(t=""){super(t)}},_parseInt(r){let{Err:t}=Zr;if(r.length<2||r[0]!==2)throw new t("Invalid signature integer tag");let e=r[1],n=r.subarray(2,e+2);if(!e||n.length!==e)throw new t("Invalid signature integer: wrong length");if(n[0]&128)throw new t("Invalid signature integer: negative");if(n[0]===0&&!(n[1]&128))throw new t("Invalid signature integer: unnecessary leading zero");return{d:Ib(n),l:r.subarray(e+2)}},toSig(r){let{Err:t}=Zr,e=typeof r=="string"?_b(r):r;Mn(e);let n=e.length;if(n<2||e[0]!=48)throw new t("Invalid signature tag");if(e[1]!==n-2)throw new t("Invalid signature: incorrect length");let{d:o,l:s}=Zr._parseInt(e.subarray(2)),{d:i,l:a}=Zr._parseInt(s);if(a.length)throw new t("Invalid signature: left bytes after parsing");return{r:o,s:i}},hexFromSig(r){let t=u=>Number.parseInt(u[0],16)&8?"00"+u:u,e=u=>{let f=u.toString(16);return f.length&1?`0${f}`:f},n=t(e(r.s)),o=t(e(r.r)),s=n.length/2,i=o.length/2,a=e(s),c=e(i);return`30${e(i+s+4)}02${c}${o}02${a}${n}`}},cr=BigInt(0),me=BigInt(1),tS=BigInt(2),fp=BigInt(3),eS=BigInt(4);function Rb(r){let t=Sb(r),{Fp:e}=t,n=t.toBytes||((p,d,w)=>{let g=d.toAffine();return Xe(Uint8Array.from([4]),e.toBytes(g.x),e.toBytes(g.y))}),o=t.fromBytes||(p=>{let d=p.subarray(1),w=e.fromBytes(d.subarray(0,e.BYTES)),g=e.fromBytes(d.subarray(e.BYTES,2*e.BYTES));return{x:w,y:g}});function s(p){let{a:d,b:w}=t,g=e.sqr(p),x=e.mul(g,p);return e.add(e.add(x,e.mul(p,d)),w)}if(!e.eql(e.sqr(t.Gy),s(t.Gx)))throw new Error("bad generator point: equation left != right");function i(p){return typeof p=="bigint"&&cr<p&&p<t.n}function a(p){if(!i(p))throw new Error("Expected valid bigint: 0 < bigint < curve.n")}function c(p){let{allowedPrivateKeyLengths:d,nByteLength:w,wrapPrivateKey:g,n:x}=t;if(d&&typeof p!="bigint"){if(kr(p)&&(p=Ze(p)),typeof p!="string"||!d.includes(p.length))throw new Error("Invalid key");p=p.padStart(w*2,"0")}let b;try{b=typeof p=="bigint"?p:Je(mt("private key",p,w))}catch{throw new Error(`private key must be ${w} bytes, hex or bigint, not ${typeof p}`)}return g&&(b=at(b,x)),a(b),b}let u=new Map;function f(p){if(!(p instanceof l))throw new Error("ProjectivePoint expected")}class l{constructor(d,w,g){if(this.px=d,this.py=w,this.pz=g,d==null||!e.isValid(d))throw new Error("x required");if(w==null||!e.isValid(w))throw new Error("y required");if(g==null||!e.isValid(g))throw new Error("z required")}static fromAffine(d){let{x:w,y:g}=d||{};if(!d||!e.isValid(w)||!e.isValid(g))throw new Error("invalid affine point");if(d instanceof l)throw new Error("projective point not allowed");let x=b=>e.eql(b,e.ZERO);return x(w)&&x(g)?l.ZERO:new l(w,g,e.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(d){let w=e.invertBatch(d.map(g=>g.pz));return d.map((g,x)=>g.toAffine(w[x])).map(l.fromAffine)}static fromHex(d){let w=l.fromAffine(o(mt("pointHex",d)));return w.assertValidity(),w}static fromPrivateKey(d){return l.BASE.multiply(c(d))}_setWindowSize(d){this._WINDOW_SIZE=d,u.delete(this)}assertValidity(){if(this.is0()){if(t.allowInfinityPoint&&!e.is0(this.py))return;throw new Error("bad point: ZERO")}let{x:d,y:w}=this.toAffine();if(!e.isValid(d)||!e.isValid(w))throw new Error("bad point: x or y not FE");let g=e.sqr(w),x=s(d);if(!e.eql(g,x))throw new Error("bad point: equation left != right");if(!this.isTorsionFree())throw new Error("bad point: not in prime-order subgroup")}hasEvenY(){let{y:d}=this.toAffine();if(e.isOdd)return!e.isOdd(d);throw new Error("Field doesn't support isOdd")}equals(d){f(d);let{px:w,py:g,pz:x}=this,{px:b,py:B,pz:A}=d,I=e.eql(e.mul(w,A),e.mul(b,x)),v=e.eql(e.mul(g,A),e.mul(B,x));return I&&v}negate(){return new l(this.px,e.neg(this.py),this.pz)}double(){let{a:d,b:w}=t,g=e.mul(w,fp),{px:x,py:b,pz:B}=this,A=e.ZERO,I=e.ZERO,v=e.ZERO,E=e.mul(x,x),U=e.mul(b,b),P=e.mul(B,B),N=e.mul(x,b);return N=e.add(N,N),v=e.mul(x,B),v=e.add(v,v),A=e.mul(d,v),I=e.mul(g,P),I=e.add(A,I),A=e.sub(U,I),I=e.add(U,I),I=e.mul(A,I),A=e.mul(N,A),v=e.mul(g,v),P=e.mul(d,P),N=e.sub(E,P),N=e.mul(d,N),N=e.add(N,v),v=e.add(E,E),E=e.add(v,E),E=e.add(E,P),E=e.mul(E,N),I=e.add(I,E),P=e.mul(b,B),P=e.add(P,P),E=e.mul(P,N),A=e.sub(A,E),v=e.mul(P,U),v=e.add(v,v),v=e.add(v,v),new l(A,I,v)}add(d){f(d);let{px:w,py:g,pz:x}=this,{px:b,py:B,pz:A}=d,I=e.ZERO,v=e.ZERO,E=e.ZERO,U=t.a,P=e.mul(t.b,fp),N=e.mul(w,b),M=e.mul(g,B),C=e.mul(x,A),X=e.add(w,g),S=e.add(b,B);X=e.mul(X,S),S=e.add(N,M),X=e.sub(X,S),S=e.add(w,x);let T=e.add(b,A);return S=e.mul(S,T),T=e.add(N,C),S=e.sub(S,T),T=e.add(g,x),I=e.add(B,A),T=e.mul(T,I),I=e.add(M,C),T=e.sub(T,I),E=e.mul(U,S),I=e.mul(P,C),E=e.add(I,E),I=e.sub(M,E),E=e.add(M,E),v=e.mul(I,E),M=e.add(N,N),M=e.add(M,N),C=e.mul(U,C),S=e.mul(P,S),M=e.add(M,C),C=e.sub(N,C),C=e.mul(U,C),S=e.add(S,C),N=e.mul(M,S),v=e.add(v,N),N=e.mul(T,S),I=e.mul(X,I),I=e.sub(I,N),N=e.mul(X,M),E=e.mul(T,E),E=e.add(E,N),new l(I,v,E)}subtract(d){return this.add(d.negate())}is0(){return this.equals(l.ZERO)}wNAF(d){return h.wNAFCached(this,u,d,w=>{let g=e.invertBatch(w.map(x=>x.pz));return w.map((x,b)=>x.toAffine(g[b])).map(l.fromAffine)})}multiplyUnsafe(d){let w=l.ZERO;if(d===cr)return w;if(a(d),d===me)return this;let{endo:g}=t;if(!g)return h.unsafeLadder(this,d);let{k1neg:x,k1:b,k2neg:B,k2:A}=g.splitScalar(d),I=w,v=w,E=this;for(;b>cr||A>cr;)b&me&&(I=I.add(E)),A&me&&(v=v.add(E)),E=E.double(),b>>=me,A>>=me;return x&&(I=I.negate()),B&&(v=v.negate()),v=new l(e.mul(v.px,g.beta),v.py,v.pz),I.add(v)}multiply(d){a(d);let w=d,g,x,{endo:b}=t;if(b){let{k1neg:B,k1:A,k2neg:I,k2:v}=b.splitScalar(w),{p:E,f:U}=this.wNAF(A),{p:P,f:N}=this.wNAF(v);E=h.constTimeNegate(B,E),P=h.constTimeNegate(I,P),P=new l(e.mul(P.px,b.beta),P.py,P.pz),g=E.add(P),x=U.add(N)}else{let{p:B,f:A}=this.wNAF(w);g=B,x=A}return l.normalizeZ([g,x])[0]}multiplyAndAddUnsafe(d,w,g){let x=l.BASE,b=(A,I)=>I===cr||I===me||!A.equals(x)?A.multiplyUnsafe(I):A.multiply(I),B=b(this,w).add(b(d,g));return B.is0()?void 0:B}toAffine(d){let{px:w,py:g,pz:x}=this,b=this.is0();d==null&&(d=b?e.ONE:e.inv(x));let B=e.mul(w,d),A=e.mul(g,d),I=e.mul(x,d);if(b)return{x:e.ZERO,y:e.ZERO};if(!e.eql(I,e.ONE))throw new Error("invZ was invalid");return{x:B,y:A}}isTorsionFree(){let{h:d,isTorsionFree:w}=t;if(d===me)return!0;if(w)return w(l,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:d,clearCofactor:w}=t;return d===me?this:w?w(l,this):this.multiplyUnsafe(t.h)}toRawBytes(d=!0){return this.assertValidity(),n(l,this,d)}toHex(d=!0){return Ze(this.toRawBytes(d))}}l.BASE=new l(t.Gx,t.Gy,e.ONE),l.ZERO=new l(e.ZERO,e.ONE,e.ZERO);let m=t.nBitLength,h=Xs(l,t.endo?Math.ceil(m/2):m);return{CURVE:t,ProjectivePoint:l,normPrivateKeyToScalar:c,weierstrassEquation:s,isWithinCurveOrder:i}}function Tb(r){let t=So(r);return Le(t,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...t})}function hp(r){let t=Tb(r),{Fp:e,n}=t,o=e.BYTES+1,s=2*e.BYTES+1;function i(S){return cr<S&&S<e.ORDER}function a(S){return at(S,n)}function c(S){return Zs(S,n)}let{ProjectivePoint:u,normPrivateKeyToScalar:f,weierstrassEquation:l,isWithinCurveOrder:m}=Rb({...t,toBytes(S,T,H){let R=T.toAffine(),k=e.toBytes(R.x),F=Xe;return H?F(Uint8Array.from([T.hasEvenY()?2:3]),k):F(Uint8Array.from([4]),k,e.toBytes(R.y))},fromBytes(S){let T=S.length,H=S[0],R=S.subarray(1);if(T===o&&(H===2||H===3)){let k=Je(R);if(!i(k))throw new Error("Point is not on curve");let F=l(k),$;try{$=e.sqrt(F)}catch(Y){let et=Y instanceof Error?": "+Y.message:"";throw new Error("Point is not on curve"+et)}let K=($&me)===me;return(H&1)===1!==K&&($=e.neg($)),{x:k,y:$}}else if(T===s&&H===4){let k=e.fromBytes(R.subarray(0,e.BYTES)),F=e.fromBytes(R.subarray(e.BYTES,2*e.BYTES));return{x:k,y:F}}else throw new Error(`Point of length ${T} was invalid. Expected ${o} compressed bytes or ${s} uncompressed bytes`)}}),h=S=>Ze(Ir(S,t.nByteLength));function p(S){let T=n>>me;return S>T}function d(S){return p(S)?a(-S):S}let w=(S,T,H)=>Je(S.slice(T,H));class g{constructor(T,H,R){this.r=T,this.s=H,this.recovery=R,this.assertValidity()}static fromCompact(T){let H=t.nByteLength;return T=mt("compactSignature",T,H*2),new g(w(T,0,H),w(T,H,2*H))}static fromDER(T){let{r:H,s:R}=Zr.toSig(mt("DER",T));return new g(H,R)}assertValidity(){if(!m(this.r))throw new Error("r must be 0 < r < CURVE.n");if(!m(this.s))throw new Error("s must be 0 < s < CURVE.n")}addRecoveryBit(T){return new g(this.r,this.s,T)}recoverPublicKey(T){let{r:H,s:R,recovery:k}=this,F=v(mt("msgHash",T));if(k==null||![0,1,2,3].includes(k))throw new Error("recovery id invalid");let $=k===2||k===3?H+t.n:H;if($>=e.ORDER)throw new Error("recovery id 2 or 3 invalid");let K=k&1?"03":"02",W=u.fromHex(K+h($)),Y=c($),et=a(-F*Y),J=a(R*Y),Q=u.BASE.multiplyAndAddUnsafe(W,et,J);if(!Q)throw new Error("point at infinify");return Q.assertValidity(),Q}hasHighS(){return p(this.s)}normalizeS(){return this.hasHighS()?new g(this.r,a(-this.s),this.recovery):this}toDERRawBytes(){return zr(this.toDERHex())}toDERHex(){return Zr.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return zr(this.toCompactHex())}toCompactHex(){return h(this.r)+h(this.s)}}let x={isValidPrivateKey(S){try{return f(S),!0}catch{return!1}},normPrivateKeyToScalar:f,randomPrivateKey:()=>{let S=Jc(t.n);return id(t.randomBytes(S),t.n)},precompute(S=8,T=u.BASE){return T._setWindowSize(S),T.multiply(BigInt(3)),T}};function b(S,T=!0){return u.fromPrivateKey(S).toRawBytes(T)}function B(S){let T=kr(S),H=typeof S=="string",R=(T||H)&&S.length;return T?R===o||R===s:H?R===2*o||R===2*s:S instanceof u}function A(S,T,H=!0){if(B(S))throw new Error("first arg must be private key");if(!B(T))throw new Error("second arg must be public key");return u.fromHex(T).multiply(f(S)).toRawBytes(H)}let I=t.bits2int||function(S){let T=Je(S),H=S.length*8-t.nBitLength;return H>0?T>>BigInt(H):T},v=t.bits2int_modN||function(S){return a(I(S))},E=ko(t.nBitLength);function U(S){if(typeof S!="bigint")throw new Error("bigint expected");if(!(cr<=S&&S<E))throw new Error(`bigint expected < 2^${t.nBitLength}`);return Ir(S,t.nByteLength)}function P(S,T,H=N){if(["recovered","canonical"].some(dt=>dt in H))throw new Error("sign() legacy options not supported");let{hash:R,randomBytes:k}=t,{lowS:F,prehash:$,extraEntropy:K}=H;F==null&&(F=!0),S=mt("msgHash",S),$&&(S=mt("prehashed msgHash",R(S)));let W=v(S),Y=f(T),et=[U(Y),U(W)];if(K!=null&&K!==!1){let dt=K===!0?k(e.BYTES):K;et.push(mt("extraEntropy",dt))}let J=Xe(...et),Q=W;function wt(dt){let _t=I(dt);if(!m(_t))return;let Rt=c(_t),xt=u.BASE.multiply(_t).toAffine(),Dt=a(xt.x);if(Dt===cr)return;let $e=a(Rt*a(Q+Dt*Y));if($e===cr)return;let Ur=(xt.x===Dt?0:2)|Number(xt.y&me),eo=$e;return F&&p($e)&&(eo=d($e),Ur^=1),new g(Dt,eo,Ur)}return{seed:J,k2sig:wt}}let N={lowS:t.lowS,prehash:!1},M={lowS:t.lowS,prehash:!1};function C(S,T,H=N){let{seed:R,k2sig:k}=P(S,T,H),F=t;return jc(F.hash.outputLen,F.nByteLength,F.hmac)(R,k)}u.BASE._setWindowSize(8);function X(S,T,H,R=M){let k=S;if(T=mt("msgHash",T),H=mt("publicKey",H),"strict"in R)throw new Error("options.strict was renamed to lowS");let{lowS:F,prehash:$}=R,K,W;try{if(typeof k=="string"||kr(k))try{K=g.fromDER(k)}catch(xt){if(!(xt instanceof Zr.Err))throw xt;K=g.fromCompact(k)}else if(typeof k=="object"&&typeof k.r=="bigint"&&typeof k.s=="bigint"){let{r:xt,s:Dt}=k;K=new g(xt,Dt)}else throw new Error("PARSE");W=u.fromHex(H)}catch(xt){if(xt.message==="PARSE")throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(F&&K.hasHighS())return!1;$&&(T=t.hash(T));let{r:Y,s:et}=K,J=v(T),Q=c(et),wt=a(J*Q),dt=a(Y*Q),_t=u.BASE.multiplyAndAddUnsafe(W,wt,dt)?.toAffine();return _t?a(_t.x)===Y:!1}return{CURVE:t,getPublicKey:b,getSharedSecret:A,sign:C,verify:X,ProjectivePoint:u,Signature:g,utils:x}}function Cb(r){return{hash:r,hmac:(t,...e)=>_o(r,t,zs(...e)),randomBytes:On}}function dp(r,t){let e=n=>hp({...r,...Cb(n)});return Object.freeze({...e(t),create:e})}var gp=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),pp=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),Nb=BigInt(1),gu=BigInt(2),mp=(r,t)=>(r+t/gu)/t;function Lb(r){let t=gp,e=BigInt(3),n=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),u=r*r*r%t,f=u*u*r%t,l=lt(f,e,t)*f%t,m=lt(l,e,t)*f%t,h=lt(m,gu,t)*u%t,p=lt(h,o,t)*h%t,d=lt(p,s,t)*p%t,w=lt(d,a,t)*d%t,g=lt(w,c,t)*w%t,x=lt(g,a,t)*d%t,b=lt(x,e,t)*f%t,B=lt(b,i,t)*p%t,A=lt(B,n,t)*u%t,I=lt(A,gu,t);if(!yu.eql(yu.sqr(I),r))throw new Error("Cannot find square root");return I}var yu=Js(gp,void 0,void 0,{sqrt:Lb}),Ie=dp({a:BigInt(0),b:BigInt(7),Fp:yu,n:pp,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let t=pp,e=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-Nb*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),o=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),s=e,i=BigInt("0x100000000000000000000000000000000"),a=mp(s*r,t),c=mp(-n*r,t),u=at(r-a*e-c*o,t),f=at(-a*n-c*s,t),l=u>i,m=f>i;if(l&&(u=t-u),m&&(f=t-f),u>i||f>i)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:l,k1:u,k2neg:m,k2:f}}}},lp),lS=BigInt(0);var fS=Ie.ProjectivePoint;function yp(){return Ie.utils.randomPrivateKey()}function wp(r,t){let e=vt.digest(t instanceof Uint8Array?t:t.subarray());if(de(e))return e.then(({digest:n})=>Ie.sign(n,r).toDERRawBytes()).catch(n=>{throw new D(String(n),"ERR_INVALID_INPUT")});try{return Ie.sign(e.digest,r).toDERRawBytes()}catch(n){throw new D(String(n),"ERR_INVALID_INPUT")}}function bp(r,t,e){let n=vt.digest(e instanceof Uint8Array?e:e.subarray());if(de(n))return n.then(({digest:o})=>Ie.verify(t,o,r)).catch(o=>{throw new D(String(o),"ERR_INVALID_INPUT")});try{return Ie.verify(t,n.digest,r)}catch(o){throw new D(String(o),"ERR_INVALID_INPUT")}}function xp(r){return Ie.ProjectivePoint.fromHex(r).toRawBytes(!0)}function Ep(r){try{Ie.getPublicKey(r,!0)}catch(t){throw new D(String(t),"ERR_INVALID_PRIVATE_KEY")}}function wu(r){try{Ie.ProjectivePoint.fromHex(r)}catch(t){throw new D(String(t),"ERR_INVALID_PUBLIC_KEY")}}function vp(r){try{return Ie.getPublicKey(r,!0)}catch(t){throw new D(String(t),"ERR_INVALID_PRIVATE_KEY")}}var Mo=class{_key;constructor(t){wu(t),this._key=t}verify(t,e){return bp(this._key,e,t)}marshal(){return xp(this._key)}get bytes(){return Ue.encode({Type:gt.Secp256k1,Data:this.marshal()}).subarray()}equals(t){return it(this.bytes,t.bytes)}async hash(){let t=vt.digest(this.bytes),e;return de(t)?{bytes:e}=await t:e=t.bytes,e}},$o=class{_key;_publicKey;constructor(t,e){this._key=t,this._publicKey=e??vp(t),Ep(this._key),wu(this._publicKey)}sign(t){return wp(this._key,t)}get public(){return new Mo(this._publicKey)}marshal(){return this._key}get bytes(){return er.encode({Type:gt.Secp256k1,Data:this.marshal()}).subarray()}equals(t){return it(this.bytes,t.bytes)}hash(){let t=vt.digest(this.bytes);return de(t)?t.then(({bytes:e})=>e):t.bytes}async id(){let t=await this.public.hash();return G(t,"base58btc")}async export(t,e="libp2p-key"){if(e==="libp2p-key")return Kn(this.bytes,t);throw new D(`export format '${e}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function Db(r){return new $o(r)}function Pb(r){return new Mo(r)}async function Ob(){let r=yp();return new $o(r)}var ji={rsa:pu,ed25519:ou,secp256k1:bu};function Fb(r){let t=Object.keys(ji).join(" / ");return new D(`invalid or unsupported key type ${r}. Must be ${t}`,"ERR_UNSUPPORTED_KEY_TYPE")}function xu(r){let t=Ue.decode(r),e=t.Data??new Uint8Array;switch(t.Type){case gt.RSA:return ji.rsa.unmarshalRsaPublicKey(e);case gt.Ed25519:return ji.ed25519.unmarshalEd25519PublicKey(e);case gt.Secp256k1:return ji.secp256k1.unmarshalSecp256k1PublicKey(e);default:throw Fb(t.Type??"unknown")}}var Eu=Yt(kp(),1);var Vb=Math.LN2*Math.LN2,Yi=class r{static create(t,e=.005){let n=Mb(t,e);return new r(n)}seeds;bits;buffer;constructor(t={}){t.seeds!=null?this.seeds=t.seeds:this.seeds=$b(t.hashes??8),this.bits=t.bits??1024,this.buffer=ye(Math.ceil(this.bits/8))}add(t){typeof t=="string"&&(t=q(t));for(let e=0;e<this.seeds.length;e++){let o=Eu.default.x86.hash32(t,this.seeds[e])%this.bits;this.setbit(o)}}has(t){typeof t=="string"&&(t=q(t));for(let e=0;e<this.seeds.length;e++){let o=Eu.default.x86.hash32(t,this.seeds[e])%this.bits;if(!this.getbit(o))return!1}return!0}clear(){this.buffer.fill(0)}setbit(t){let e=0,n=t;for(;n>7;)e++,n-=8;let o=this.buffer[e];o|=1<<n,this.buffer[e]=o}getbit(t){let e=0,n=t;for(;n>7;)e++,n-=8;return(this.buffer[e]&1<<n)!==0}};function Mb(r,t=.005){let e=Math.round(-1*r*Math.log(t)/Vb),n=Math.round(e/r*Math.LN2);return{bits:e,hashes:n}}function $b(r){let t,e,n=[];for(let o=0;o<r;o++)for(t=new ss(De(4)),n[o]=t.getUint32(0,!0),e=0;e<o;e++)if(n[o]===n[e]){o--;break}return n}var Ko=class extends tn{intialPeerSearchComplete;requests;name;log;logger;minProviders;maxProviders;providers;evictionFilter;constructor(t,e){super(),ft(1/0,this),this.name=e.name,this.logger=t.logger,this.log=t.logger.forComponent(this.name),this.requests=new Map,this.minProviders=e.minProviders??1,this.maxProviders=e.maxProviders??5,this.providers=[],this.evictionFilter=Yi.create(this.maxProviders)}async retrieve(t,e={}){let n=ce.encode(t.multihash.bytes),o=this.requests.get(n);if(o!=null)return this.log("join existing request for %c",t),o;let s=Bt();if(this.requests.set(n,s.promise),this.providers.length===0){let u=!1;this.intialPeerSearchComplete==null&&(u=!0,this.log=this.logger.forComponent(`${this.name}:${t}`),this.intialPeerSearchComplete=this.findProviders(t,this.minProviders,e)),await this.intialPeerSearchComplete,u&&this.log("found initial session peers for %c",t)}let i=!1,a=new He({concurrency:this.maxProviders});a.addEventListener("error",()=>{}),a.addEventListener("failure",u=>{this.log.error("error querying provider %o, evicting from session",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",()=>{i||e.signal?.aborted===!0||Promise.resolve().then(async()=>{this.log("no session peers had block for for %c, finding new providers",t);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(t,this.minProviders,e),this.log("found new providers re-retrieving %c",t),this.requests.delete(n),s.resolve(await this.retrieve(t,e))}).catch(u=>{this.log.error("could not find new providers for %c",t,u),s.reject(u)})});let c=u=>{a.add(async()=>this.queryProvider(t,u.detail,e),{provider:u.detail}).catch(f=>{e.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c",t,f)})};this.addEventListener("provider",c),Promise.all([...this.providers].map(async u=>a.add(async()=>this.queryProvider(t,u,e),{provider:u}))).catch(u=>{e.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c",t,u)});try{return await s.promise}finally{this.removeEventListener("provider",c),a.clear(),this.requests.delete(n)}}evict(t){this.evictionFilter.add(this.toEvictionKey(t));let e=this.providers.findIndex(n=>this.equals(n,t));e!==-1&&this.providers.splice(e,1)}isEvicted(t){return this.providers.some(e=>this.equals(e,t))}hasProvider(t){return!!(this.providers.find(e=>this.equals(e,t))!=null||this.isEvicted(t))}async findProviders(t,e,n){let o=Bt(),s=0;return Promise.resolve().then(async()=>{this.log("finding %d-%d new provider(s) for %c",e,this.maxProviders,t);for await(let i of this.findNewProviders(t,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===e&&(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<e)throw new D(`Found ${s} of ${e} ${this.name} providers for ${t}`,"ERR_INSUFFICIENT_PROVIDERS_FOUND")}).catch(i=>{this.log.error("error searching routing for potential session peers for %c",t,i.errors??i),o.reject(i)}),o.promise}};var Zi=class{blockstore;datastore;pins;logger;routing;dagWalkers;hashers;dns;log;constructor(t){this.logger=t.logger??Jl(),this.log=this.logger.forComponent("helia"),this.hashers=Oh(t.hashers),this.dagWalkers=Uh(t.dagWalkers),this.dns=t.dns??cf();let e={blockstore:t.blockstore,datastore:t.datastore,hashers:this.hashers,dagWalkers:this.dagWalkers,logger:this.logger,blockBrokers:[],dns:this.dns,...t.components??{}};this.routing=e.routing=new Ds(e,{routers:(t.routers??[]).flatMap(o=>{let s=[o];return o[ro]!=null&&s.push(o[ro]),o[no]!=null&&s.push(o[no]),s}),providerLookupConcurrency:t.providerLookupConcurrency});let n=new Hs(e);this.pins=new Us(t.datastore,n,this.dagWalkers),this.blockstore=new Ps(n,this.pins,{holdGcLock:t.holdGcLock??!0}),this.datastore=t.datastore,e.blockBrokers=t.blockBrokers.map(o=>o(e))}async start(){await Ph(this.datastore),await hr(this.blockstore,this.datastore,this.routing)}async stop(){await dr(this.blockstore,this.datastore,this.routing)}async gc(t={}){let e=await this.blockstore.lock.writeLock();try{let n=this,o=this.blockstore.unwrap();this.log("gc start"),await Pr(o.deleteMany(async function*(){for await(let{cid:s}of o.getAll())try{if(await n.pins.isPinned(s,t))continue;yield s,t.onProgress?.(new rt("helia:gc:deleted",s))}catch(i){n.log.error("Error during gc",i),t.onProgress?.(new rt("helia:gc:error",i))}}()))}finally{e()}this.log("gc finished")}};function Hb(r){return r[Symbol.asyncIterator]!=null}function Kb(r){if(Hb(r))return(async()=>{let e=[];for await(let n of r)e.push(n);return e})();let t=[];for(let e of r)t.push(e);return t}var vu=Kb;var Ji=class{index=0;input="";new(t){return this.index=0,this.input=t,this}readAtomically(t){let e=this.index,n=t();return n===void 0&&(this.index=e),n}parseWith(t){let e=t();if(this.index===this.input.length)return e}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(t){return this.readAtomically(()=>{let e=this.readChar();if(e===t)return e})}readSeparator(t,e,n){return this.readAtomically(()=>{if(!(e>0&&this.readGivenChar(t)===void 0))return n()})}readNumber(t,e,n,o){return this.readAtomically(()=>{let s=0,i=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",u=2**(8*o)-1;for(;;){let f=this.readAtomically(()=>{let l=this.readChar();if(l===void 0)return;let m=Number.parseInt(l,t);if(!Number.isNaN(m))return m});if(f===void 0)break;if(s*=t,s+=f,s>u||(i+=1,e!==void 0&&i>e))return}if(i!==0)return!n&&c&&i>1?void 0:s})}readIPv4Addr(){return this.readAtomically(()=>{let t=new Uint8Array(4);for(let e=0;e<t.length;e++){let n=this.readSeparator(".",e,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;t[e]=n}return t})}readIPv6Addr(){let t=e=>{for(let n=0;n<e.length/2;n++){let o=n*2;if(n<e.length-3){let i=this.readSeparator(":",n,()=>this.readIPv4Addr());if(i!==void 0)return e[o]=i[0],e[o+1]=i[1],e[o+2]=i[2],e[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];e[o]=s>>8,e[o+1]=s&255}return[e.length,!1]};return this.readAtomically(()=>{let e=new Uint8Array(16),[n,o]=t(e);if(n===16)return e;if(o||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let s=new Uint8Array(14),i=16-(n+2),[a]=t(s.subarray(0,i));return e.set(s.subarray(0,a),16-a),e})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var Sp=45,qb=15,Zn=new Ji;function Au(r){if(!(r.length>qb))return Zn.new(r).parseWith(()=>Zn.readIPv4Addr())}function Bu(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Sp))return Zn.new(r).parseWith(()=>Zn.readIPv6Addr())}function Xi(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Sp))return Zn.new(r).parseWith(()=>Zn.readIPAddr())}function Jn(r){return!!Au(r)}function Xn(r){return!!Bu(r)}function Qi(r){return!!Xi(r)}var _p=Yt(Ip(),1),zb=["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"],Gb=zb.map(r=>new _p.Netmask(r));function jb(r){for(let t of Gb)if(t.contains(r))return!0;return!1}function Wb(r){return/^::$/.test(r)||/^::1$/.test(r)||/^::f{4}:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^::f{4}:0.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.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 Rp(r){return Jn(r)?jb(r):Xn(r)?Wb(r):void 0}var mI=parseInt("0xFFFF",16),gI=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);var Np=Jn,Qb=Xn,ku=function(r){let t=0;if(r=r.toString().trim(),Np(r)){let e=new Uint8Array(t+4);return r.split(/\./g).forEach(n=>{e[t++]=parseInt(n,10)&255}),e}if(Qb(r)){let e=r.split(":",8),n;for(n=0;n<e.length;n++){let s=Np(e[n]),i;s&&(i=ku(e[n]),e[n]=G(i.slice(0,2),"base16")),i!=null&&++n<8&&e.splice(n,0,G(i.slice(2,4),"base16"))}if(e[0]==="")for(;e.length<8;)e.unshift("0");else if(e[e.length-1]==="")for(;e.length<8;)e.push("0");else if(e.length<8){for(n=0;n<e.length&&e[n]!=="";n++);let s=[n,1];for(n=9-e.length;n>0;n--)s.push("0");e.splice.apply(e,s)}let o=new Uint8Array(t+16);for(n=0;n<e.length;n++){let s=parseInt(e[n],16);o[t++]=s>>8&255,o[t++]=s&255}return o}throw new Error("invalid ip address")},Lp=function(r,t=0,e){t=~~t,e=e??r.length-t;let n=new DataView(r.buffer);if(e===4){let o=[];for(let s=0;s<e;s++)o.push(r[t+s]);return o.join(".")}if(e===16){let o=[];for(let s=0;s<e;s+=2)o.push(n.getUint16(t+s).toString(16));return o.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var Qn={},Su={},ex=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,-1,"ip6zone"],[43,8,"ipcidr"],[53,-1,"dns",!0],[54,-1,"dns4",!0],[55,-1,"dns6",!0],[56,-1,"dnsaddr",!0],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[280,0,"webrtc-direct"],[281,0,"webrtc"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,-1,"unix",!1,!0],[421,-1,"ipfs"],[421,-1,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,-1,"garlic64"],[448,0,"tls"],[449,-1,"sni"],[460,0,"quic"],[461,0,"quic-v1"],[465,0,"webtransport"],[466,-1,"certhash"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"],[777,-1,"memory"]];ex.forEach(r=>{let t=rx(...r);Su[t.code]=t,Qn[t.name]=t});function rx(r,t,e,n,o){return{code:r,size:t,name:e,resolvable:!!n,path:!!o}}function j(r){if(typeof r=="number"){if(Su[r]!=null)return Su[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(Qn[r]!=null)return Qn[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var JI=j("ip4"),XI=j("ip6"),QI=j("ipcidr");function _u(r,t){switch(j(r).code){case 4:case 41:return ox(t);case 42:return Pp(t);case 6:case 273:case 33:case 132:return Fp(t).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return Pp(t);case 421:return cx(t);case 444:return Op(t);case 445:return Op(t);case 466:return ax(t);default:return G(t,"base16")}}function Ru(r,t){switch(j(r).code){case 4:return Up(t);case 41:return Up(t);case 42:return Dp(t);case 6:case 273:case 33:case 132:return Tu(parseInt(t,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return Dp(t);case 421:return sx(t);case 444:return ux(t);case 445:return lx(t);case 466:return ix(t);default:return q(t,"base16")}}var Iu=Object.values(yr).map(r=>r.decoder),nx=function(){let r=Iu[0].or(Iu[1]);return Iu.slice(2).forEach(t=>r=r.or(t)),r}();function Up(r){if(!Qi(r))throw new Error("invalid ip address");return ku(r)}function ox(r){let t=Lp(r,0,r.length);if(t==null)throw new Error("ipBuff is required");if(!Qi(t))throw new Error("invalid ip address");return t}function Tu(r){let t=new ArrayBuffer(2);return new DataView(t).setUint16(0,r),new Uint8Array(t)}function Fp(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function Dp(r){let t=q(r),e=Uint8Array.from(rn(t.length));return kt([e,t],e.length+t.length)}function Pp(r){let t=Or(r);if(r=r.slice(Gt(t)),r.length!==t)throw new Error("inconsistent lengths");return G(r)}function sx(r){let t;r[0]==="Q"||r[0]==="1"?t=Te(ht.decode(`z${r}`)).bytes:t=st.parse(r).multihash.bytes;let e=Uint8Array.from(rn(t.length));return kt([e,t],e.length+t.length)}function ix(r){let t=nx.decode(r),e=Uint8Array.from(rn(t.length));return kt([e,t],e.length+t.length)}function ax(r){let t=Or(r),e=r.slice(Gt(t));if(e.length!==t)throw new Error("inconsistent lengths");return"u"+G(e,"base64url")}function cx(r){let t=Or(r),e=r.slice(Gt(t));if(e.length!==t)throw new Error("inconsistent lengths");return G(e,"base58btc")}function ux(r){let t=r.split(":");if(t.length!==2)throw new Error(`failed to parse onion addr: ["'${t.join('", "')}'"]' does not contain a port number`);if(t[0].length!==16)throw new Error(`failed to parse onion addr: ${t[0]} not a Tor onion address.`);let e=Tt.decode("b"+t[0]),n=parseInt(t[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=Tu(n);return kt([e,o],e.length+o.length)}function lx(r){let t=r.split(":");if(t.length!==2)throw new Error(`failed to parse onion addr: ["'${t.join('", "')}'"]' does not contain a port number`);if(t[0].length!==56)throw new Error(`failed to parse onion addr: ${t[0]} not a Tor onion3 address.`);let e=Tt.decode(`b${t[0]}`),n=parseInt(t[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=Tu(n);return kt([e,o],e.length+o.length)}function Op(r){let t=r.slice(0,r.length-2),e=r.slice(r.length-2),n=G(t,"base32"),o=Fp(e);return`${n}:${o}`}function Vp(r){r=Cu(r);let t=[],e=[],n=null,o=r.split("/").slice(1);if(o.length===1&&o[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let s=0;s<o.length;s++){let i=o[s],a=j(i);if(a.size===0){t.push([a.code]),e.push([a.code]);continue}if(s++,s>=o.length)throw $p("invalid address: "+r);if(a.path===!0){n=Cu(o.slice(s).join("/")),t.push([a.code,Ru(a.code,n)]),e.push([a.code,n]);break}let c=Ru(a.code,o[s]);t.push([a.code,c]),e.push([a.code,_u(a.code,c)])}return{string:Mp(e),bytes:Lu(t),tuples:t,stringTuples:e,path:n}}function Nu(r){let t=[],e=[],n=null,o=0;for(;o<r.length;){let s=Or(r,o),i=Gt(s),a=j(s),c=fx(a,r.slice(o+i));if(c===0){t.push([s]),e.push([s]),o+=i;continue}let u=r.slice(o+i,o+i+c);if(o+=c+i,o>r.length)throw $p("Invalid address Uint8Array: "+G(r,"base16"));t.push([s,u]);let f=_u(s,u);if(e.push([s,f]),a.path===!0){n=f;break}}return{bytes:Uint8Array.from(r),string:Mp(e),tuples:t,stringTuples:e,path:n}}function Mp(r){let t=[];return r.map(e=>{let n=j(e[0]);return t.push(n.name),e.length>1&&e[1]!=null&&t.push(e[1]),null}),Cu(t.join("/"))}function Lu(r){return kt(r.map(t=>{let e=j(t[0]),n=Uint8Array.from(rn(e.code));return t.length>1&&t[1]!=null&&(n=kt([n,t[1]])),n}))}function fx(r,t){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let e=Or(t instanceof Uint8Array?t:Uint8Array.from(t));return e+Gt(e)}}function Cu(r){return"/"+r.trim().split("/").filter(t=>t).join("/")}function $p(r){return new Error("Error parsing address: "+r)}var hx=Symbol.for("nodejs.util.inspect.custom"),Uu=Symbol.for("@multiformats/js-multiaddr/multiaddr"),dx=[j("dns").code,j("dns4").code,j("dns6").code,j("dnsaddr").code],ta=class r{bytes;#t;#e;#r;#o;[Uu]=!0;constructor(t){t==null&&(t="");let e;if(t instanceof Uint8Array)e=Nu(t);else if(typeof t=="string"){if(t.length>0&&t.charAt(0)!=="/")throw new Error(`multiaddr "${t}" must start with a "/"`);e=Vp(t)}else if(Kp(t))e=Nu(t.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=e.bytes,this.#t=e.string,this.#e=e.tuples,this.#r=e.stringTuples,this.#o=e.path}toString(){return this.#t}toJSON(){return this.toString()}toOptions(){let t,e,n,o,s="",i=j("tcp"),a=j("udp"),c=j("ip4"),u=j("ip6"),f=j("dns6"),l=j("ip6zone");for(let[h,p]of this.stringTuples())h===l.code&&(s=`%${p??""}`),dx.includes(h)&&(e=i.name,o=443,n=`${p??""}${s}`,t=h===f.code?6:4),(h===i.code||h===a.code)&&(e=j(h).name,o=parseInt(p??"")),(h===c.code||h===u.code)&&(e=j(h).name,n=`${p??""}${s}`,t=h===u.code?6:4);if(t==null||e==null||n==null||o==null)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".');return{family:t,host:n,transport:e,port:o}}protos(){return this.#e.map(([t])=>Object.assign({},j(t)))}protoCodes(){return this.#e.map(([t])=>t)}protoNames(){return this.#e.map(([t])=>j(t).name)}tuples(){return this.#e}stringTuples(){return this.#r}encapsulate(t){return t=new r(t),new r(this.toString()+t.toString())}decapsulate(t){let e=t.toString(),n=this.toString(),o=n.lastIndexOf(e);if(o<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${t.toString()}`);return new r(n.slice(0,o))}decapsulateCode(t){let e=this.tuples();for(let n=e.length-1;n>=0;n--)if(e[n][0]===t)return new r(Lu(e.slice(0,n)));return this}getPeerId(){try{let t=[];this.stringTuples().forEach(([n,o])=>{n===Qn.p2p.code&&t.push([n,o]),n===Qn["p2p-circuit"].code&&(t=[])});let e=t.pop();if(e?.[1]!=null){let n=e[1];return n[0]==="Q"||n[0]==="1"?G(ht.decode(`z${n}`),"base58btc"):G(st.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#o}equals(t){return it(this.bytes,t.bytes)}async resolve(t){let e=this.protos().find(s=>s.resolvable);if(e==null)return[this];let n=Hp.get(e.name);if(n==null)throw new D(`no available resolver for ${e.name}`,"ERR_NO_AVAILABLE_RESOLVER");return(await n(this,t)).map(s=>Jr(s))}nodeAddress(){let t=this.toOptions();if(t.transport!=="tcp"&&t.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${t.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:t.family,address:t.host,port:t.port}}isThinWaistAddress(t){let e=(t??this).protos();return!(e.length!==2||e[0].code!==4&&e[0].code!==41||e[1].code!==6&&e[1].code!==273)}[hx](){return`Multiaddr(${this.#t})`}};var Hp=new Map;function Kp(r){return!!r?.[Uu]}function Jr(r){return new ta(r)}var px=r=>r.toString().split("/").slice(1),zo=r=>({match:t=>t.length<1?!1:r(t[0])?t.slice(1):!1,pattern:"fn"}),nt=r=>({match:t=>zo(e=>e===r).match(t),pattern:r}),na=()=>({match:r=>zo(t=>typeof t=="string").match(r),pattern:"{string}"}),oa=()=>({match:r=>zo(t=>!isNaN(parseInt(t))).match(r),pattern:"{number}"}),Ut=()=>({match:r=>{if(r.length<2||r[0]!=="p2p"&&r[0]!=="ipfs")return!1;if(r[1].startsWith("Q")||r[1].startsWith("1"))try{ht.decode(`z${r[1]}`)}catch{return!1}else return!1;return r.slice(2)},pattern:"/p2p/{peerid}"}),ea=()=>({match:r=>{if(r.length<2||r[0]!=="certhash")return!1;try{qa.decode(r[1])}catch{return!1}return r.slice(2)},pattern:"/certhash/{certhash}"}),qt=r=>({match:t=>{let e=r.match(t);return e===!1?t:e},pattern:`optional(${r.pattern})`}),se=(...r)=>({match:t=>{let e;for(let n of r){let o=n.match(t);o!==!1&&(e==null||o.length<e.length)&&(e=o)}return e??!1},pattern:`or(${r.map(t=>t.pattern).join(", ")})`}),ct=(...r)=>({match:t=>{for(let e of r){let n=e.match(t);if(n===!1)return!1;t=n}return t},pattern:`and(${r.map(t=>t.pattern).join(", ")})`});function yt(...r){function t(o){let s=px(o);for(let i of r){let a=i.match(s);if(a===!1)return!1;s=a}return s}function e(o){return t(o)!==!1}function n(o){let s=t(o);return s===!1?!1:s.length===0}return{matches:e,exactMatch:n}}var Pu=ct(nt("dns4"),na()),Ou=ct(nt("dns6"),na()),Fu=ct(nt("dnsaddr"),na()),qp=ct(nt("dns"),na()),_6=yt(Pu),R6=yt(Ou),T6=yt(Fu),zp=yt(se(qp,Fu,Pu,Ou)),Gp=ct(nt("ip4"),zo(Jn)),jp=ct(nt("ip6"),zo(Xn)),Wp=se(Gp,jp),Ve=se(Wp,qp,Pu,Ou,Fu),C6=yt(Ve),N6=yt(Gp),L6=yt(jp),U6=yt(Wp),sa=ct(Ve,nt("tcp"),oa()),Go=ct(Ve,nt("udp"),oa()),mx=se(sa,Go),D6=yt(sa),P6=yt(Go),Vu=ct(Go,nt("quic")),ia=ct(Go,nt("quic-v1")),gx=se(Vu,ia),O6=yt(Vu),F6=yt(ia),Du=se(Ve,sa,Go,Vu,ia),Yp=se(ct(Du,nt("ws"),qt(Ut()))),V6=yt(Yp),Zp=se(ct(Du,nt("wss"),qt(Ut())),ct(Du,nt("tls"),nt("ws"),qt(Ut()))),M6=yt(Zp),Jp=ct(mx,nt("webrtc-direct"),ea(),qt(ea()),qt(Ut())),$6=yt(Jp),Xp=ct(ia,nt("webtransport"),ea(),ea(),qt(Ut())),H6=yt(Xp),ra=se(Yp,Zp,ct(sa,qt(Ut())),ct(gx,qt(Ut())),ct(Ve,qt(Ut())),Jp,Xp,Ut()),K6=yt(ra),yx=ct(ra,nt("p2p-circuit"),Ut()),q6=yt(yx),wx=se(ct(ra,nt("p2p-circuit"),nt("webrtc"),Ut()),ct(ra,nt("webrtc"),qt(Ut())),nt("webrtc")),z6=yt(wx),bx=se(ct(Ve,nt("tcp"),oa(),nt("http"),qt(Ut())),ct(Ve,nt("http"),qt(Ut()))),Qp=yt(bx),xx=se(ct(Ve,nt("tcp"),se(ct(nt("443"),nt("http")),ct(oa(),nt("https"))),qt(Ut())),ct(Ve,nt("tls"),nt("http"),qt(Ut())),ct(Ve,nt("https"),qt(Ut()))),t0=yt(xx);var Ex=[j("tcp").code,j("dns").code,j("dnsaddr").code,j("dns4").code,j("dns6").code];function e0(r){let t;try{t=j("sni").code}catch{return null}for(let[e,n]of r)if(e===t&&n!==void 0)return n;return null}function r0(r){return r.some(([t,e])=>t===j("tls").code)}function ie(r,t,e){let n=n0[j(r).name];if(n===void 0)throw new Error(`Can't interpret protocol ${j(r).name}`);let o=n(t,e);return r===j("ip6").code?`[${o}]`:o}var n0={ip4:(r,t)=>r,ip6:(r,t)=>t.length===0?r:`[${r}]`,tcp:(r,t)=>{let e=t.pop();if(e===void 0)throw new Error("Unexpected end of multiaddr");return`tcp://${ie(e[0],e[1]??"",t)}:${r}`},udp:(r,t)=>{let e=t.pop();if(e===void 0)throw new Error("Unexpected end of multiaddr");return`udp://${ie(e[0],e[1]??"",t)}:${r}`},dnsaddr:(r,t)=>r,dns4:(r,t)=>r,dns6:(r,t)=>r,dns:(r,t)=>r,ipfs:(r,t)=>{let e=t.pop();if(e===void 0)throw new Error("Unexpected end of multiaddr");return`${ie(e[0],e[1]??"",t)}/ipfs/${r}`},p2p:(r,t)=>{let e=t.pop();if(e===void 0)throw new Error("Unexpected end of multiaddr");return`${ie(e[0],e[1]??"",t)}/p2p/${r}`},http:(r,t)=>{let e=r0(t),n=e0(t);if(e&&n!==null)return`https://${n}`;let o=e?"https://":"http://",s=t.pop();if(s===void 0)throw new Error("Unexpected end of multiaddr");let i=ie(s[0],s[1]??"",t);return i=i.replace("tcp://",""),`${o}${i}`},tls:(r,t)=>{let e=t.pop();if(e===void 0)throw new Error("Unexpected end of multiaddr");return ie(e[0],e[1]??"",t)},sni:(r,t)=>{let e=t.pop();if(e===void 0)throw new Error("Unexpected end of multiaddr");return ie(e[0],e[1]??"",t)},https:(r,t)=>{let e=t.pop();if(e===void 0)throw new Error("Unexpected end of multiaddr");let n=ie(e[0],e[1]??"",t);return n=n.replace("tcp://",""),`https://${n}`},ws:(r,t)=>{let e=r0(t),n=e0(t);if(e&&n!==null)return`wss://${n}`;let o=e?"wss://":"ws://",s=t.pop();if(s===void 0)throw new Error("Unexpected end of multiaddr");let i=ie(s[0],s[1]??"",t);return i=i.replace("tcp://",""),`${o}${i}`},wss:(r,t)=>{let e=t.pop();if(e===void 0)throw new Error("Unexpected end of multiaddr");let n=ie(e[0],e[1]??"",t);return n=n.replace("tcp://",""),`wss://${n}`},"p2p-websocket-star":(r,t)=>{let e=t.pop();if(e===void 0)throw new Error("Unexpected end of multiaddr");return`${ie(e[0],e[1]??"",t)}/p2p-websocket-star`},"p2p-webrtc-star":(r,t)=>{let e=t.pop();if(e===void 0)throw new Error("Unexpected end of multiaddr");return`${ie(e[0],e[1]??"",t)}/p2p-webrtc-star`},"p2p-webrtc-direct":(r,t)=>{let e=t.pop();if(e===void 0)throw new Error("Unexpected end of multiaddr");return`${ie(e[0],e[1]??"",t)}/p2p-webrtc-direct`}};function o0(r,t){let n=Jr(r).stringTuples(),o=n.pop();if(o===void 0)throw new Error("Unexpected end of multiaddr");let s=j(o[0]),i=n0[s.name];if(i==null)throw new Error(`No interpreter found for ${s.name}`);let a=i(o[1]??"",n);return t?.assumeHttp!==!1&&Ex.includes(o[0])&&(a=a.replace(/^.*:\/\//,""),o[1]==="443"?a=`https://${a}`:a=`http://${a}`),(a.startsWith("http://")||a.startsWith("https://"))&&(a=new URL(a).toString(),a.endsWith("/")&&(a=a.substring(0,a.length-1))),a}var Xr=class{url;#t=0;#e=0;#r=0;#o=0;#a=new Map;log;constructor(t,e){this.url=t instanceof URL?t:new URL(t),this.log=e.forComponent(`helia:trustless-gateway-block-broker:${this.url.hostname}`)}#u(t){let e=t.multihash.bytes;return ce.encode(e)}async getRawBlock(t,e){let n=new URL(this.url.toString());if(n.pathname=`/ipfs/${t.toString()}`,n.search="?format=raw",e?.aborted===!0)throw new Error(`Signal to fetch raw block for CID ${t} from gateway ${this.url} was aborted prior to fetch`);let o=this.#u(t),s=new AbortController,i=()=>{s.abort()};e?.addEventListener("abort",i);try{let a=this.#a.get(o);return a==null&&(this.#t++,a=fetch(n.toString(),{signal:s.signal,headers:{Accept:"application/vnd.ipld.raw"},cache:"force-cache"}).then(async c=>{if(this.log("GET %s %d",n,c.status),!c.ok)throw this.#e++,new Error(`unable to fetch raw block for CID ${t} from gateway ${this.url}`);return this.#o++,new Uint8Array(await c.arrayBuffer())}),this.#a.set(o,a)),await a}catch{throw e?.aborted===!0?new Error(`fetching raw block for CID ${t} from gateway ${this.url} was aborted`):(this.#e++,new Error(`unable to fetch raw block for CID ${t}`))}finally{e?.removeEventListener("abort",i),this.#a.delete(o)}}reliability(){return this.#t===0?1:this.#r>0?-1/0:this.#o/(this.#t+this.#e*3)}incrementInvalidBlocks(){this.#r++}getStats(){return{attempts:this.#t,errors:this.#e,invalidBlocks:this.#r,successes:this.#o,pendingResponses:this.#a.size}}};var vx=!1,Ax=!1,Mu=class extends Ko{routing;allowInsecure;allowLocal;constructor(t,e){super(t,{...e,name:"helia:trustless-gateway:session"}),this.routing=t.routing,this.allowInsecure=e.allowInsecure??vx,this.allowLocal=e.allowLocal??Ax}async queryProvider(t,e,n){this.log("fetching BLOCK for %c from %s",t,e.url);let o=await e.getRawBlock(t,n.signal);return this.log.trace("got block for %c from %s",t,e.url),await n.validateFn?.(o),o}async*findNewProviders(t,e={}){for await(let n of this.routing.findProviders(t,e)){let o=Bx(n.multiaddrs,this.allowInsecure,this.allowLocal);if(o.length===0)continue;let s=o0(o[0]);this.log("found http-gateway provider %p %s for cid %c",n.id,s,t),yield new Xr(s,this.logger)}}toEvictionKey(t){return t.url.toString()}equals(t,e){return t.url.toString()===e.url.toString()}};function Bx(r,t,e){return r.filter(n=>t0.matches(n)||t&&Qp.matches(n)?e||zp.matches(n)?!0:Rp(n.toOptions().host)===!1:!1)}function s0(r,t){return new Mu(r,t)}var aa=class{components;gateways;routing;log;logger;constructor(t,e={}){this.components=t,this.log=t.logger.forComponent("helia:trustless-gateway-block-broker"),this.logger=t.logger,this.routing=t.routing,this.gateways=(e.gateways??i0).map(n=>new Xr(n,t.logger))}addGateway(t){this.gateways.push(new Xr(t,this.components.logger))}async retrieve(t,e={}){let n=this.gateways.sort((s,i)=>i.reliability()-s.reliability()),o=[];for(let s of n){this.log("getting block for %c from %s",t,s.url);try{let i=await s.getRawBlock(t,e.signal);this.log.trace("got block for %c from %s",t,s.url);try{await e.validateFn?.(i)}catch(a){throw this.log.error("failed to validate block for %c from %s",t,s.url,a),s.incrementInvalidBlocks(),new Error(`Block for CID ${t} from gateway ${s.url} failed validation`)}return i}catch(i){if(this.log.error("failed to get block for %c from %s",t,s.url,i),i instanceof Error?o.push(i):o.push(new Error(`Unable to fetch raw block for CID ${t} from gateway ${s.url}`)),e.signal?.aborted===!0){this.log.trace("request aborted while fetching raw block for CID %c from gateway %s",t,s.url);break}}}throw o.length>0?new AggregateError(o,`Unable to fetch raw block for CID ${t} from any gateway`):new Error(`Unable to fetch raw block for CID ${t} from any gateway`)}createSession(t={}){return s0({logger:this.logger,routing:this.routing},t)}};var i0=["https://trustless-gateway.link","https://cloudflare-ipfs.com","https://4everland.io"];function $u(r={}){return t=>new aa(t,r)}async function*ca(r,t={}){let e=r.getReader();try{for(;;){let n=await e.read();if(n.done)return;yield n.value}}finally{t.preventCancel!==!0&&await e.cancel(),e.releaseLock()}}var _x=Yt(nn(),1);var Rx=Yt(Ku(),1);var a0="ERR_IPNS_EXPIRED_RECORD",ua="ERR_UNRECOGNIZED_VALIDITY";var ur="ERR_SIGNATURE_VERIFICATION";var qu="ERR_UNDEFINED_PARAMETER",c0="ERR_INVALID_RECORD_DATA",u0="ERR_INVALID_VALUE",l0="ERR_INVALID_EMBEDDED_KEY";var f0="ERR_RECORD_TOO_LARGE";var _e;(function(r){let t;(function(o){o.EOL="EOL"})(t=r.ValidityType||(r.ValidityType={}));let e;(function(o){o[o.EOL=0]="EOL"})(e||(e={})),function(o){o.codec=()=>uo(e)}(t=r.ValidityType||(r.ValidityType={}));let n;r.codec=()=>(n==null&&(n=pn((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)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.value=o.bytes();break;case 2:i.signatureV1=o.bytes();break;case 3:i.validityType=r.ValidityType.codec().decode(o);break;case 4:i.validity=o.bytes();break;case 5:i.sequence=o.uint64();break;case 6:i.ttl=o.uint64();break;case 7:i.pubKey=o.bytes();break;case 8:i.signatureV2=o.bytes();break;case 9:i.data=o.bytes();break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>hn(o,r.codec()),r.decode=o=>an(o,r.codec())})(_e||(_e={}));var ae=Yt(nn(),1);var d0=Qt("ipns:utils"),p0=q("/ipns/"),kx=114,m0=async(r,t)=>{if(t==null||r==null){let n=new Error("one or more of the provided parameters are not defined");throw d0.error(n),(0,ae.default)(n,qu)}let e;if(t.pubKey!=null){try{e=xu(t.pubKey)}catch(o){throw d0.error(o),o}if(!(await zl(t.pubKey)).equals(r))throw(0,ae.default)(new Error("Embedded public key did not match PeerID"),l0)}else r.publicKey!=null&&(e=xu(r.publicKey));if(e!=null)return e;throw(0,ae.default)(new Error("no public key is available"),qu)};var g0=r=>{let t=q("ipns-signature:");return kt([t,r])},Qr=r=>"signatureV1"in r?_e.encode({value:q(r.value),signatureV1:r.signatureV1,validityType:r.validityType,validity:q(r.validity),sequence:r.sequence,ttl:r.ttl,pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data}):_e.encode({pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data});function Me(r){let t=_e.decode(r);if(t.sequence!=null&&(t.sequence=BigInt(t.sequence)),t.ttl!=null&&(t.ttl=BigInt(t.ttl)),t.signatureV2==null||t.data==null)throw(0,ae.default)(new Error("missing data or signatureV2"),ur);let e=y0(t.data),n=Sx(e.Value),o=G(e.Validity);if(t.value!=null&&t.signatureV1!=null)return Ix(t),{value:n,validityType:_e.ValidityType.EOL,validity:o,sequence:e.Sequence,ttl:e.TTL,pubKey:t.pubKey,signatureV1:t.signatureV1,signatureV2:t.signatureV2,data:t.data};if(t.signatureV2!=null)return{value:n,validityType:_e.ValidityType.EOL,validity:o,sequence:e.Sequence,ttl:e.TTL,pubKey:t.pubKey,signatureV2:t.signatureV2,data:t.data};throw new Error("invalid record: does not include signatureV1 or signatureV2")}var zu=r=>kt([p0,r.toBytes()]),to=r=>fo(r.slice(p0.length));var y0=r=>{let t=he(r);if(t.ValidityType===0)t.ValidityType=_e.ValidityType.EOL;else throw(0,ae.default)(new Error("Unknown validity type"),ua);return Number.isInteger(t.Sequence)&&(t.Sequence=BigInt(t.Sequence)),Number.isInteger(t.TTL)&&(t.TTL=BigInt(t.TTL)),t},Sx=r=>{if(r!=null){if(ol(r))return`/ipns/${r.toCID().toString(gr)}`;if(r instanceof Uint8Array){let n=G(r);n.startsWith("/")&&(r=n)}let t=r.toString().trim();if(t.startsWith("/")&&t.length>1)return t;let e=st.asCID(r);if(e!=null)return e.code===kx?`/ipns/${e.toString(gr)}`:`/ipfs/${e.toV1().toString()}`;try{return r instanceof Uint8Array?`/ipfs/${st.decode(r).toV1().toString()}`:`/ipfs/${st.parse(t).toV1().toString()}`}catch{}}throw(0,ae.default)(new Error("Value must be a valid content path starting with /"),u0)},Ix=r=>{if(r.data==null)throw(0,ae.default)(new Error("Record data is missing"),c0);let t=y0(r.data);if(!it(t.Value,r.value??new Uint8Array(0)))throw(0,ae.default)(new Error('Field "value" did not match between protobuf and CBOR'),ur);if(!it(t.Validity,r.validity??new Uint8Array(0)))throw(0,ae.default)(new Error('Field "validity" did not match between protobuf and CBOR'),ur);if(t.ValidityType!==r.validityType)throw(0,ae.default)(new Error('Field "validityType" did not match between protobuf and CBOR'),ur);if(t.Sequence!==r.sequence)throw(0,ae.default)(new Error('Field "sequence" did not match between protobuf and CBOR'),ur);if(t.TTL!==r.ttl)throw(0,ae.default)(new Error('Field "ttl" did not match between protobuf and CBOR'),ur)};var P4=Qt("ipns"),O4=ue.code,F4=60*60*1e9,Tx="/ipns/",V4=Tx.length;var jo=Yt(nn(),1),w0=Yt(Ku(),1);var la=Qt("ipns:validator"),Cx=1024*10,Nx=async(r,t)=>{let e=Me(t),n;try{let o=g0(e.data);n=await r.verify(o,e.signatureV2)}catch{n=!1}if(!n)throw la.error("record signature verification failed"),(0,jo.default)(new Error("record signature verification failed"),ur);if(e.validityType===_e.ValidityType.EOL){if(w0.default.fromString(e.validity).toDate().getTime()<Date.now())throw la.error("record has expired"),(0,jo.default)(new Error("record has expired"),a0)}else if(e.validityType!=null)throw la.error("unrecognized validity type"),(0,jo.default)(new Error("unrecognized validity type"),ua);la("ipns record for %s is valid",e.value)};async function b0(r,t){if(t.byteLength>Cx)throw(0,jo.default)(new Error("record too large"),f0);let e=to(r),n=Me(t),o=await m0(e,n);await Nx(o,t)}async function*Wo(r){let t=/\r?\n/,e=new TextDecoder("utf8"),n="";for await(let o of r){typeof o=="string"&&(o=new TextEncoder().encode(o)),n+=e.decode(o,{stream:!0});let s=n.split(t);n=s.pop()??"";for(let i=0;i<s.length;i++)yield JSON.parse(s[i])}n+=e.decode(),n!==""&&(yield JSON.parse(n))}function Lx(r){return r[Symbol.asyncIterator]!=null}function Ux(r){if(Lx(r))return(async()=>{for await(let t of r)return t})();for(let t of r)return t}var fa=Ux;var Gu=q("/ipns/");function x0(r){return it(r.subarray(0,Gu.byteLength),Gu)}var E0=r=>fo(r.slice(Gu.length)),ha=class{client;constructor(t){this.client=t}async*findProviders(t,e={}){yield*sn(this.client.getProviders(t,e),n=>({id:n.ID,multiaddrs:n.Addrs??[]}))}async provide(){}async put(t,e,n){if(!x0(t))return;let o=E0(t),s=Me(e);await this.client.putIPNS(o,s,n)}async get(t,e){if(!x0(t))throw new D("Not found","ERR_NOT_FOUND");let n=E0(t);try{let o=await this.client.getIPNS(n,e);return Qr(o)}catch(o){throw o.code==="ERR_BAD_RESPONSE"?new D("Not found","ERR_NOT_FOUND"):o}}},da=class{client;constructor(t){this.client=t}async findPeer(t,e={}){let n=await fa(this.client.getPeers(t,e));if(n!=null)return{id:n.ID,multiaddrs:n.Addrs??[]};throw new D("Not found","ERR_NOT_FOUND")}async*getClosestPeers(t,e={}){}};var Wt=Qt("delegated-routing-v1-http-api-client"),v0={concurrentRequests:4,timeout:3e4},pa=class{started;httpQueue;shutDownController;clientUrl;timeout;contentRouting;peerRouting;constructor(t,e={}){this.started=!1,this.shutDownController=new AbortController,ft(1/0,this.shutDownController.signal),this.httpQueue=new Ce({concurrency:e.concurrentRequests??v0.concurrentRequests}),this.clientUrl=t instanceof URL?t:new URL(t),this.timeout=e.timeout??v0.timeout,this.contentRouting=new ha(this),this.peerRouting=new da(this)}get[ro](){return this.contentRouting}get[no](){return this.peerRouting}isStarted(){return this.started}start(){this.started=!0}stop(){this.httpQueue.clear(),this.shutDownController.abort(),this.started=!1}async*getProviders(t,e={}){Wt("getProviders starts: %c",t);let n=AbortSignal.timeout(this.timeout),o=Mt([this.shutDownController.signal,n,e.signal]);ft(1/0,n,o);let s=Bt(),i=Bt();this.httpQueue.add(async()=>(s.resolve(),i.promise));try{await s.promise;let a=`${this.clientUrl}routing/v1/providers/${t.toString()}`,u=await fetch(a,{headers:{Accept:"application/x-ndjson"},signal:o});if(u.status===404)throw new D("No matching records found.","ERR_NOT_FOUND");if(u.status===422)throw new D("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(u.body==null)throw new D("Routing response had no body","ERR_BAD_RESPONSE");if(u.headers.get("Content-Type")==="application/json"){let l=await u.json();for(let m of l.Providers){let h=this.#t(m);h!=null&&(yield h)}}else for await(let l of Wo(ca(u.body))){let m=this.#t(l);m!=null&&(yield m)}}catch(a){Wt.error("getProviders errored:",a)}finally{o.clear(),i.resolve(),Wt("getProviders finished: %c",t)}}async*getPeers(t,e={}){Wt("getPeers starts: %c",t);let n=AbortSignal.timeout(this.timeout),o=Mt([this.shutDownController.signal,n,e.signal]);ft(1/0,n,o);let s=Bt(),i=Bt();this.httpQueue.add(async()=>(s.resolve(),i.promise));try{await s.promise;let a=`${this.clientUrl}routing/v1/peers/${t.toCID().toString()}`,u=await fetch(a,{headers:{Accept:"application/x-ndjson"},signal:o});if(u.status===404)throw new D("No matching records found.","ERR_NOT_FOUND");if(u.status===422)throw new D("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(u.body==null)throw new D("Routing response had no body","ERR_BAD_RESPONSE");if(u.headers.get("Content-Type")==="application/json"){let l=await u.json();for(let m of l.Peers){let h=this.#t(m);h!=null&&(yield h)}}else for await(let l of Wo(ca(u.body))){let m=this.#t(l);m!=null&&(yield m)}}catch(a){Wt.error("getPeers errored:",a)}finally{o.clear(),i.resolve(),Wt("getPeers finished: %c",t)}}async getIPNS(t,e={}){Wt("getIPNS starts: %c",t);let n=AbortSignal.timeout(this.timeout),o=Mt([this.shutDownController.signal,n,e.signal]);ft(1/0,n,o);let s=Bt(),i=Bt();this.httpQueue.add(async()=>(s.resolve(),i.promise));let a=`${this.clientUrl}routing/v1/ipns/${t.toCID().toString()}`;try{await s.promise;let u=await fetch(a,{headers:{Accept:"application/vnd.ipfs.ipns-record"},signal:o});if(Wt("getIPNS GET %s %d",a,u.status),u.status===404)throw new D("No matching records found.","ERR_NOT_FOUND");if(u.status===422)throw new D("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(u.body==null)throw new D("GET ipns response had no body","ERR_BAD_RESPONSE");let f=await u.arrayBuffer(),l=new Uint8Array(f,0,f.byteLength);return e.validate!==!1&&await b0(zu(t),l),Me(l)}catch(c){throw Wt.error("getIPNS GET %s error:",a,c),c}finally{o.clear(),i.resolve(),Wt("getIPNS finished: %c",t)}}async putIPNS(t,e,n={}){Wt("putIPNS starts: %c",t);let o=AbortSignal.timeout(this.timeout),s=Mt([this.shutDownController.signal,o,n.signal]);ft(1/0,o,s);let i=Bt(),a=Bt();this.httpQueue.add(async()=>(i.resolve(),a.promise));let c=`${this.clientUrl}routing/v1/ipns/${t.toCID().toString()}`;try{await i.promise;let u=Qr(e),l=await fetch(c,{method:"PUT",headers:{"Content-Type":"application/vnd.ipfs.ipns-record"},body:u,signal:s});if(Wt("putIPNS PUT %s %d",c,l.status),l.status!==200)throw new D("PUT ipns response had status other than 200","ERR_BAD_RESPONSE")}catch(u){throw Wt.error("putIPNS PUT %s error:",c,u.stack),u}finally{s.clear(),a.resolve(),Wt("putIPNS finished: %c",t)}}#t(t){let e=[],n=t.Addrs?.map(Jr)??[];return t.Protocols!=null&&e.push(...t.Protocols),t.Protocol!=null&&(e.push(t.Protocol),delete t.Protocol),{...t,Schema:"peer",ID:fc(t.ID),Addrs:n,Protocols:e}}};function A0(r,t={}){return new pa(new URL(r),t)}var B0=q("/ipns/");function k0(r){return it(r.subarray(0,B0.byteLength),B0)}var ju=class{client;constructor(t){this.client=A0(t)}async provide(t,e){}async*findProviders(t,e){yield*sn(this.client.getProviders(t,e),n=>({id:n.ID,multiaddrs:n.Addrs,protocols:n.Protocols}))}async put(t,e,n){if(!k0(t))return;let o=to(t),s=Me(e);await this.client.putIPNS(o,s,n)}async get(t,e){if(!k0(t))throw new D("Not found","ERR_NOT_FOUND");let n=to(t);try{let o=await this.client.getIPNS(n,e);return Qr(o)}catch(o){throw o.code==="ERR_BAD_RESPONSE"?new D("Not found","ERR_NOT_FOUND"):o}}async findPeer(t,e){let n=await fa(this.client.getPeers(t,e));if(n!=null)return{id:n.ID,multiaddrs:n.Addrs??[]};throw new D("Not found","ERR_NOT_FOUND")}async*getClosestPeers(t,e){}};function Wu(r){return new ju(new URL(r))}var S0=Yt(nn(),1);function ma(r){return r=r??new Error("Not Found"),(0,S0.default)(r,"ERR_NOT_FOUND")}var I0="SHARDING";function Px(r){return r[Symbol.asyncIterator]!=null}function Ox(r,t){return Px(r)?async function*(){yield*(await vu(r)).sort(t)}():function*(){yield*vu(r).sort(t)}()}var ga=Ox;var lr=class{put(t,e,n){return Promise.reject(new Error(".put is not implemented"))}get(t,e){return Promise.reject(new Error(".get is not implemented"))}has(t,e){return Promise.reject(new Error(".has is not implemented"))}delete(t,e){return Promise.reject(new Error(".delete is not implemented"))}async*putMany(t,e={}){for await(let{key:n,value:o}of t)await this.put(n,o,e),yield n}async*getMany(t,e={}){for await(let n of t)yield{key:n,value:await this.get(n,e)}}async*deleteMany(t,e={}){for await(let n of t)await this.delete(n,e),yield n}batch(){let t=[],e=[];return{put(n,o){t.push({key:n,value:o})},delete(n){e.push(n)},commit:async n=>{await Pr(this.putMany(t,n)),t=[],await Pr(this.deleteMany(e,n)),e=[]}}}async*_all(t,e){throw new Error("._all is not implemented")}async*_allKeys(t,e){throw new Error("._allKeys is not implemented")}query(t,e){let n=this._all(t,e);if(t.prefix!=null){let o=t.prefix;n=ve(n,s=>s.key.toString().startsWith(o))}if(Array.isArray(t.filters)&&(n=t.filters.reduce((o,s)=>ve(o,s),n)),Array.isArray(t.orders)&&(n=t.orders.reduce((o,s)=>ga(o,s),n)),t.offset!=null){let o=0,s=t.offset;n=ve(n,()=>o++>=s)}return t.limit!=null&&(n=is(n,t.limit)),n}queryKeys(t,e){let n=this._allKeys(t,e);if(t.prefix!=null){let o=t.prefix;n=ve(n,s=>s.toString().startsWith(o))}if(Array.isArray(t.filters)&&(n=t.filters.reduce((o,s)=>ve(o,s),n)),Array.isArray(t.orders)&&(n=t.orders.reduce((o,s)=>ga(o,s),n)),t.offset!=null){let o=t.offset,s=0;n=ve(n,()=>s++>=o)}return t.limit!=null&&(n=is(n,t.limit)),n}};var Zo=class extends lr{data;constructor(){super(),this.data=new Map}put(t,e){return this.data.set(t.toString(),e),t}get(t){let e=this.data.get(t.toString());if(e==null)throw ma();return e}has(t){return this.data.has(t.toString())}delete(t){this.data.delete(t.toString())}*_all(){for(let[t,e]of this.data.entries())yield{key:new Nt(t),value:e}}*_allKeys(){for(let t of this.data.keys())yield new Nt(t)}};var n_=new Nt(I0);var m_=Qt("datastore:core:tiered");async function Mx(r={}){let t=r.datastore??new Zo,e=r.blockstore??new Bo,n=new Zi({...r,datastore:t,blockstore:e,blockBrokers:r.blockBrokers??[$u()],routers:r.routers??[Wu("https://delegated-ipfs.dev")]});return r.start!==!1&&await n.start(),n}return H0($x);})();
|
|
9
9
|
/*! Bundled license information:
|
|
10
10
|
|
|
11
11
|
pvtsutils/build/index.js:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@helia/http",
|
|
3
|
-
"version": "1.0.5-
|
|
3
|
+
"version": "1.0.5-5e98950",
|
|
4
4
|
"description": "A lightweight implementation of IPFS over HTTP in JavaScript",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/ipfs/helia/tree/main/packages/http#readme",
|
|
@@ -53,10 +53,10 @@
|
|
|
53
53
|
"test:electron-main": "aegir test -t electron-main"
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
|
-
"@helia/block-brokers": "2.1.1-
|
|
57
|
-
"@helia/interface": "4.2.0-
|
|
58
|
-
"@helia/routers": "1.0.3-
|
|
59
|
-
"@helia/utils": "0.2.0-
|
|
56
|
+
"@helia/block-brokers": "2.1.1-5e98950",
|
|
57
|
+
"@helia/interface": "4.2.0-5e98950",
|
|
58
|
+
"@helia/routers": "1.0.3-5e98950",
|
|
59
|
+
"@helia/utils": "0.2.0-5e98950",
|
|
60
60
|
"blockstore-core": "^4.4.0",
|
|
61
61
|
"datastore-core": "^9.2.9"
|
|
62
62
|
},
|