@helia/bitswap 1.0.0 → 1.0.1

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.
Files changed (45) hide show
  1. package/dist/index.min.js +1 -1
  2. package/dist/src/constants.d.ts +2 -0
  3. package/dist/src/constants.d.ts.map +1 -1
  4. package/dist/src/constants.js +2 -0
  5. package/dist/src/constants.js.map +1 -1
  6. package/dist/src/index.d.ts +20 -7
  7. package/dist/src/index.d.ts.map +1 -1
  8. package/dist/src/index.js.map +1 -1
  9. package/dist/src/network.d.ts +5 -3
  10. package/dist/src/network.d.ts.map +1 -1
  11. package/dist/src/network.js +52 -128
  12. package/dist/src/network.js.map +1 -1
  13. package/dist/src/pb/message.d.ts +6 -6
  14. package/dist/src/pb/message.d.ts.map +1 -1
  15. package/dist/src/pb/message.js +37 -20
  16. package/dist/src/pb/message.js.map +1 -1
  17. package/dist/src/peer-want-lists/index.d.ts +1 -0
  18. package/dist/src/peer-want-lists/index.d.ts.map +1 -1
  19. package/dist/src/peer-want-lists/index.js +5 -1
  20. package/dist/src/peer-want-lists/index.js.map +1 -1
  21. package/dist/src/peer-want-lists/ledger.d.ts +3 -1
  22. package/dist/src/peer-want-lists/ledger.d.ts.map +1 -1
  23. package/dist/src/peer-want-lists/ledger.js +8 -0
  24. package/dist/src/peer-want-lists/ledger.js.map +1 -1
  25. package/dist/src/utils/merge-messages.d.ts +3 -0
  26. package/dist/src/utils/merge-messages.d.ts.map +1 -0
  27. package/dist/src/utils/merge-messages.js +51 -0
  28. package/dist/src/utils/merge-messages.js.map +1 -0
  29. package/dist/src/utils/split-message.d.ts +18 -0
  30. package/dist/src/utils/split-message.d.ts.map +1 -0
  31. package/dist/src/utils/split-message.js +101 -0
  32. package/dist/src/utils/split-message.js.map +1 -0
  33. package/dist/src/want-list.d.ts.map +1 -1
  34. package/dist/src/want-list.js +6 -3
  35. package/dist/src/want-list.js.map +1 -1
  36. package/package.json +2 -2
  37. package/src/constants.ts +2 -0
  38. package/src/index.ts +22 -8
  39. package/src/network.ts +60 -150
  40. package/src/pb/message.ts +40 -20
  41. package/src/peer-want-lists/index.ts +5 -1
  42. package/src/peer-want-lists/ledger.ts +11 -1
  43. package/src/utils/merge-messages.ts +70 -0
  44. package/src/utils/split-message.ts +133 -0
  45. package/src/want-list.ts +8 -3
package/dist/index.min.js CHANGED
@@ -1,5 +1,5 @@
1
1
  (function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.HeliaBitswap = factory()}(typeof self !== 'undefined' ? self : this, function () {
2
- "use strict";var HeliaBitswap=(()=>{var Yn=Object.create;var et=Object.defineProperty;var Zn=Object.getOwnPropertyDescriptor;var es=Object.getOwnPropertyNames;var ts=Object.getPrototypeOf,rs=Object.prototype.hasOwnProperty;var ne=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),P=(r,e)=>{for(var t in e)et(r,t,{get:e[t],enumerable:!0})},Vr=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of es(e))!rs.call(r,s)&&s!==t&&et(r,s,{get:()=>e[s],enumerable:!(n=Zn(e,s))||n.enumerable});return r};var tt=(r,e,t)=>(t=r!=null?Yn(ts(r)):{},Vr(e||!r||!r.__esModule?et(t,"default",{value:r,enumerable:!0}):t,r)),ns=r=>Vr(et({},"__esModule",{value:!0}),r);var Gr=ne((Zo,Wr)=>{var me=1e3,ge=me*60,we=ge*60,se=we*24,cs=se*7,ls=se*365.25;Wr.exports=function(r,e){e=e||{};var t=typeof r;if(t==="string"&&r.length>0)return us(r);if(t==="number"&&isFinite(r))return e.long?fs(r):hs(r);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(r))};function us(r){if(r=String(r),!(r.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(r);if(e){var t=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return t*ls;case"weeks":case"week":case"w":return t*cs;case"days":case"day":case"d":return t*se;case"hours":case"hour":case"hrs":case"hr":case"h":return t*we;case"minutes":case"minute":case"mins":case"min":case"m":return t*ge;case"seconds":case"second":case"secs":case"sec":case"s":return t*me;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return t;default:return}}}}function hs(r){var e=Math.abs(r);return e>=se?Math.round(r/se)+"d":e>=we?Math.round(r/we)+"h":e>=ge?Math.round(r/ge)+"m":e>=me?Math.round(r/me)+"s":r+"ms"}function fs(r){var e=Math.abs(r);return e>=se?lt(r,e,se,"day"):e>=we?lt(r,e,we,"hour"):e>=ge?lt(r,e,ge,"minute"):e>=me?lt(r,e,me,"second"):r+" ms"}function lt(r,e,t,n){var s=e>=t*1.5;return Math.round(r/t)+" "+n+(s?"s":"")}});var Xr=ne((ea,$r)=>{function ds(r){t.debug=t,t.default=t,t.coerce=u,t.disable=i,t.enable=s,t.enabled=o,t.humanize=Gr(),t.destroy=g,Object.keys(r).forEach(p=>{t[p]=r[p]}),t.names=[],t.skips=[],t.formatters={};function e(p){let h=0;for(let v=0;v<p.length;v++)h=(h<<5)-h+p.charCodeAt(v),h|=0;return t.colors[Math.abs(h)%t.colors.length]}t.selectColor=e;function t(p){let h,v=null,a,l;function f(...x){if(!f.enabled)return;let d=f,m=Number(new Date),w=m-(h||m);d.diff=w,d.prev=h,d.curr=m,h=m,x[0]=t.coerce(x[0]),typeof x[0]!="string"&&x.unshift("%O");let b=0;x[0]=x[0].replace(/%([a-zA-Z%])/g,(S,y)=>{if(S==="%%")return"%";b++;let A=t.formatters[y];if(typeof A=="function"){let G=x[b];S=A.call(d,G),x.splice(b,1),b--}return S}),t.formatArgs.call(d,x),(d.log||t.log).apply(d,x)}return f.namespace=p,f.useColors=t.useColors(),f.color=t.selectColor(p),f.extend=n,f.destroy=t.destroy,Object.defineProperty(f,"enabled",{enumerable:!0,configurable:!1,get:()=>v!==null?v:(a!==t.namespaces&&(a=t.namespaces,l=t.enabled(p)),l),set:x=>{v=x}}),typeof t.init=="function"&&t.init(f),f}function n(p,h){let v=t(this.namespace+(typeof h>"u"?":":h)+p);return v.log=this.log,v}function s(p){t.save(p),t.namespaces=p,t.names=[],t.skips=[];let h,v=(typeof p=="string"?p:"").split(/[\s,]+/),a=v.length;for(h=0;h<a;h++)v[h]&&(p=v[h].replace(/\*/g,".*?"),p[0]==="-"?t.skips.push(new RegExp("^"+p.slice(1)+"$")):t.names.push(new RegExp("^"+p+"$")))}function i(){let p=[...t.names.map(c),...t.skips.map(c).map(h=>"-"+h)].join(",");return t.enable(""),p}function o(p){if(p[p.length-1]==="*")return!0;let h,v;for(h=0,v=t.skips.length;h<v;h++)if(t.skips[h].test(p))return!1;for(h=0,v=t.names.length;h<v;h++)if(t.names[h].test(p))return!0;return!1}function c(p){return p.toString().substring(2,p.toString().length-2).replace(/\.\*\?$/,"*")}function u(p){return p instanceof Error?p.stack||p.message:p}function g(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return t.enable(t.load()),t}$r.exports=ds});var Qr=ne((z,ut)=>{z.formatArgs=ms;z.save=gs;z.load=ws;z.useColors=ps;z.storage=bs();z.destroy=(()=>{let r=!1;return()=>{r||(r=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();z.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function ps(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function ms(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+ut.exports.humanize(this.diff),!this.useColors)return;let e="color: "+this.color;r.splice(1,0,e,"color: inherit");let t=0,n=0;r[0].replace(/%[a-zA-Z%]/g,s=>{s!=="%%"&&(t++,s==="%c"&&(n=t))}),r.splice(n,0,e)}z.log=console.debug||console.log||(()=>{});function gs(r){try{r?z.storage.setItem("debug",r):z.storage.removeItem("debug")}catch{}}function ws(){let r;try{r=z.storage.getItem("debug")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function bs(){try{return localStorage}catch{}}ut.exports=Xr()(z);var{formatters:ys}=ut.exports;ys.j=function(r){try{return JSON.stringify(r)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var en=ne((ya,Zr)=>{"use strict";function Yr(r,e){for(let t in e)Object.defineProperty(r,t,{value:e[t],enumerable:!0,configurable:!0});return r}function Cs(r,e,t){if(!r||typeof r=="string")throw new TypeError("Please pass an Error to err-code");t||(t={}),typeof e=="object"&&(t=e,e=""),e&&(t.code=e);try{return Yr(r,t)}catch{t.message=r.message,t.stack=r.stack;let s=function(){};return s.prototype=Object.create(Object.getPrototypeOf(r)),Yr(new s,t)}}Zr.exports=Cs});var Wn=ne((Lu,qn)=>{qn.exports=function(r){if(!r)throw Error("hashlru must have a max value, of type number, greater than 0");var e=0,t=Object.create(null),n=Object.create(null);function s(i,o){t[i]=o,e++,e>=r&&(e=0,n=t,t=Object.create(null))}return{has:function(i){return t[i]!==void 0||n[i]!==void 0},remove:function(i){t[i]!==void 0&&(t[i]=void 0),n[i]!==void 0&&(n[i]=void 0)},get:function(i){var o=t[i];if(o!==void 0)return o;if((o=n[i])!==void 0)return s(i,o),o},set:function(i,o){t[i]!==void 0?t[i]=o:s(i,o)},clear:function(){t=Object.create(null),n=Object.create(null)}}}});var $n=ne((Je,Mt)=>{(function(r,e){"use strict";var t={version:"3.0.0",x86:{},x64:{},inputValidation:!0};function n(a){if(!Array.isArray(a)&&!ArrayBuffer.isView(a))return!1;for(var l=0;l<a.length;l++)if(!Number.isInteger(a[l])||a[l]<0||a[l]>255)return!1;return!0}function s(a,l){return(a&65535)*l+(((a>>>16)*l&65535)<<16)}function i(a,l){return a<<l|a>>>32-l}function o(a){return a^=a>>>16,a=s(a,2246822507),a^=a>>>13,a=s(a,3266489909),a^=a>>>16,a}function c(a,l){a=[a[0]>>>16,a[0]&65535,a[1]>>>16,a[1]&65535],l=[l[0]>>>16,l[0]&65535,l[1]>>>16,l[1]&65535];var f=[0,0,0,0];return f[3]+=a[3]+l[3],f[2]+=f[3]>>>16,f[3]&=65535,f[2]+=a[2]+l[2],f[1]+=f[2]>>>16,f[2]&=65535,f[1]+=a[1]+l[1],f[0]+=f[1]>>>16,f[1]&=65535,f[0]+=a[0]+l[0],f[0]&=65535,[f[0]<<16|f[1],f[2]<<16|f[3]]}function u(a,l){a=[a[0]>>>16,a[0]&65535,a[1]>>>16,a[1]&65535],l=[l[0]>>>16,l[0]&65535,l[1]>>>16,l[1]&65535];var f=[0,0,0,0];return f[3]+=a[3]*l[3],f[2]+=f[3]>>>16,f[3]&=65535,f[2]+=a[2]*l[3],f[1]+=f[2]>>>16,f[2]&=65535,f[2]+=a[3]*l[2],f[1]+=f[2]>>>16,f[2]&=65535,f[1]+=a[1]*l[3],f[0]+=f[1]>>>16,f[1]&=65535,f[1]+=a[2]*l[2],f[0]+=f[1]>>>16,f[1]&=65535,f[1]+=a[3]*l[1],f[0]+=f[1]>>>16,f[1]&=65535,f[0]+=a[0]*l[3]+a[1]*l[2]+a[2]*l[1]+a[3]*l[0],f[0]&=65535,[f[0]<<16|f[1],f[2]<<16|f[3]]}function g(a,l){return l%=64,l===32?[a[1],a[0]]:l<32?[a[0]<<l|a[1]>>>32-l,a[1]<<l|a[0]>>>32-l]:(l-=32,[a[1]<<l|a[0]>>>32-l,a[0]<<l|a[1]>>>32-l])}function p(a,l){return l%=64,l===0?a:l<32?[a[0]<<l|a[1]>>>32-l,a[1]<<l]:[a[1]<<l-32,0]}function h(a,l){return[a[0]^l[0],a[1]^l[1]]}function v(a){return a=h(a,[0,a[0]>>>1]),a=u(a,[4283543511,3981806797]),a=h(a,[0,a[0]>>>1]),a=u(a,[3301882366,444984403]),a=h(a,[0,a[0]>>>1]),a}t.x86.hash32=function(a,l){if(t.inputValidation&&!n(a))return e;l=l||0;for(var f=a.length%4,x=a.length-f,d=l,m=0,w=3432918353,b=461845907,E=0;E<x;E=E+4)m=a[E]|a[E+1]<<8|a[E+2]<<16|a[E+3]<<24,m=s(m,w),m=i(m,15),m=s(m,b),d^=m,d=i(d,13),d=s(d,5)+3864292196;switch(m=0,f){case 3:m^=a[E+2]<<16;case 2:m^=a[E+1]<<8;case 1:m^=a[E],m=s(m,w),m=i(m,15),m=s(m,b),d^=m}return d^=a.length,d=o(d),d>>>0},t.x86.hash128=function(a,l){if(t.inputValidation&&!n(a))return e;l=l||0;for(var f=a.length%16,x=a.length-f,d=l,m=l,w=l,b=l,E=0,S=0,y=0,A=0,G=597399067,je=2869860233,Ye=951274213,Ze=2716044179,L=0;L<x;L=L+16)E=a[L]|a[L+1]<<8|a[L+2]<<16|a[L+3]<<24,S=a[L+4]|a[L+5]<<8|a[L+6]<<16|a[L+7]<<24,y=a[L+8]|a[L+9]<<8|a[L+10]<<16|a[L+11]<<24,A=a[L+12]|a[L+13]<<8|a[L+14]<<16|a[L+15]<<24,E=s(E,G),E=i(E,15),E=s(E,je),d^=E,d=i(d,19),d+=m,d=s(d,5)+1444728091,S=s(S,je),S=i(S,16),S=s(S,Ye),m^=S,m=i(m,17),m+=w,m=s(m,5)+197830471,y=s(y,Ye),y=i(y,17),y=s(y,Ze),w^=y,w=i(w,15),w+=b,w=s(w,5)+2530024501,A=s(A,Ze),A=i(A,18),A=s(A,G),b^=A,b=i(b,13),b+=d,b=s(b,5)+850148119;switch(E=0,S=0,y=0,A=0,f){case 15:A^=a[L+14]<<16;case 14:A^=a[L+13]<<8;case 13:A^=a[L+12],A=s(A,Ze),A=i(A,18),A=s(A,G),b^=A;case 12:y^=a[L+11]<<24;case 11:y^=a[L+10]<<16;case 10:y^=a[L+9]<<8;case 9:y^=a[L+8],y=s(y,Ye),y=i(y,17),y=s(y,Ze),w^=y;case 8:S^=a[L+7]<<24;case 7:S^=a[L+6]<<16;case 6:S^=a[L+5]<<8;case 5:S^=a[L+4],S=s(S,je),S=i(S,16),S=s(S,Ye),m^=S;case 4:E^=a[L+3]<<24;case 3:E^=a[L+2]<<16;case 2:E^=a[L+1]<<8;case 1:E^=a[L],E=s(E,G),E=i(E,15),E=s(E,je),d^=E}return d^=a.length,m^=a.length,w^=a.length,b^=a.length,d+=m,d+=w,d+=b,m+=d,w+=d,b+=d,d=o(d),m=o(m),w=o(w),b=o(b),d+=m,d+=w,d+=b,m+=d,w+=d,b+=d,("00000000"+(d>>>0).toString(16)).slice(-8)+("00000000"+(m>>>0).toString(16)).slice(-8)+("00000000"+(w>>>0).toString(16)).slice(-8)+("00000000"+(b>>>0).toString(16)).slice(-8)},t.x64.hash128=function(a,l){if(t.inputValidation&&!n(a))return e;l=l||0;for(var f=a.length%16,x=a.length-f,d=[0,l],m=[0,l],w=[0,0],b=[0,0],E=[2277735313,289559509],S=[1291169091,658871167],y=0;y<x;y=y+16)w=[a[y+4]|a[y+5]<<8|a[y+6]<<16|a[y+7]<<24,a[y]|a[y+1]<<8|a[y+2]<<16|a[y+3]<<24],b=[a[y+12]|a[y+13]<<8|a[y+14]<<16|a[y+15]<<24,a[y+8]|a[y+9]<<8|a[y+10]<<16|a[y+11]<<24],w=u(w,E),w=g(w,31),w=u(w,S),d=h(d,w),d=g(d,27),d=c(d,m),d=c(u(d,[0,5]),[0,1390208809]),b=u(b,S),b=g(b,33),b=u(b,E),m=h(m,b),m=g(m,31),m=c(m,d),m=c(u(m,[0,5]),[0,944331445]);switch(w=[0,0],b=[0,0],f){case 15:b=h(b,p([0,a[y+14]],48));case 14:b=h(b,p([0,a[y+13]],40));case 13:b=h(b,p([0,a[y+12]],32));case 12:b=h(b,p([0,a[y+11]],24));case 11:b=h(b,p([0,a[y+10]],16));case 10:b=h(b,p([0,a[y+9]],8));case 9:b=h(b,[0,a[y+8]]),b=u(b,S),b=g(b,33),b=u(b,E),m=h(m,b);case 8:w=h(w,p([0,a[y+7]],56));case 7:w=h(w,p([0,a[y+6]],48));case 6:w=h(w,p([0,a[y+5]],40));case 5:w=h(w,p([0,a[y+4]],32));case 4:w=h(w,p([0,a[y+3]],24));case 3:w=h(w,p([0,a[y+2]],16));case 2:w=h(w,p([0,a[y+1]],8));case 1:w=h(w,[0,a[y]]),w=u(w,E),w=g(w,31),w=u(w,S),d=h(d,w)}return d=h(d,[0,a.length]),m=h(m,[0,a.length]),d=c(d,m),m=c(m,d),d=v(d),m=v(m),d=c(d,m),m=c(m,d),("00000000"+(d[0]>>>0).toString(16)).slice(-8)+("00000000"+(d[1]>>>0).toString(16)).slice(-8)+("00000000"+(m[0]>>>0).toString(16)).slice(-8)+("00000000"+(m[1]>>>0).toString(16)).slice(-8)},typeof Je<"u"?(typeof Mt<"u"&&Mt.exports&&(Je=Mt.exports=t),Je.murmurHash3=t):typeof define=="function"&&define.amd?define([],function(){return t}):(t._murmurHash3=r.murmurHash3,t.noConflict=function(){return r.murmurHash3=t._murmurHash3,t._murmurHash3=e,t.noConflict=e,t},r.murmurHash3=t)})(Je)});var Qn=ne((ju,Xn)=>{Xn.exports=$n()});var Lo={};P(Lo,{createBitswap:()=>So});var qr=Symbol.for("@libp2p/peer-id");var Z=class r extends Error{code;type;constructor(e="The operation was aborted"){super(e),this.name="AbortError",this.code=r.code,this.type=r.type}static code="ABORT_ERR";static type="aborted"},O=class extends Error{code;props;constructor(e,t,n){super(e),this.code=t,this.name=n?.name??"CodeError",this.props=n??{}}};var B=(r,...e)=>{try{[...e]}catch{}};var Q=class extends EventTarget{#e=new Map;constructor(){super(),B(1/0,this)}listenerCount(e){let t=this.#e.get(e);return t==null?0:t.length}addEventListener(e,t,n){super.addEventListener(e,t,n);let s=this.#e.get(e);s==null&&(s=[],this.#e.set(e,s)),s.push({callback:t,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(e,t,n){super.removeEventListener(e.toString(),t??null,n);let s=this.#e.get(e);s!=null&&(s=s.filter(({callback:i})=>i!==t),this.#e.set(e,s))}dispatchEvent(e){let t=super.dispatchEvent(e),n=this.#e.get(e.type);return n==null||(n=n.filter(({once:s})=>!s),this.#e.set(e.type,n)),t}safeDispatchEvent(e,t={}){return this.dispatchEvent(new ss(e,t))}},Ot=class extends Event{detail;constructor(e,t){super(e,t),this.detail=t?.detail}},ss=globalThis.CustomEvent??Ot;function rt(r){let e=new globalThis.AbortController;function t(){e.abort();for(let i of r)i?.removeEventListener!=null&&i.removeEventListener("abort",t)}for(let i of r){if(i?.aborted===!0){t();break}i?.addEventListener!=null&&i.addEventListener("abort",t)}function n(){for(let i of r)i?.removeEventListener!=null&&i.removeEventListener("abort",t)}let s=e.signal;return s.clear=n,s}function T(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var nt=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||e-1&e)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},fe=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new nt(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){let t=this.head;this.head=t.next=new nt(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){let t=this.tail.next;this.tail.next=null,this.tail=t,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}};var zt=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function de(r={}){return is(t=>{let n=t.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function is(r,e){e=e??{};let t=e.onEnd,n=new fe,s,i,o,c=T(),u=async()=>{try{return n.isEmpty()?o?{done:!0}:await new Promise((x,d)=>{i=m=>{i=null,n.push(m);try{x(r(n))}catch(w){d(w)}return s}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{c.resolve(),c=T()})}},g=x=>i!=null?i(x):(n.push(x),s),p=x=>(n=new fe,i!=null?i({error:x}):(n.push({error:x}),s)),h=x=>{if(o)return s;if(e?.objectMode!==!0&&x?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return g({done:!1,value:x})},v=x=>o?s:(o=!0,x!=null?p(x):g({done:!0})),a=()=>(n=new fe,v(),{done:!0}),l=x=>(v(x),{done:!0});if(s={[Symbol.asyncIterator](){return this},next:u,return:a,throw:l,push:h,end:v,get readableLength(){return n.size},onEmpty:async x=>{let d=x?.signal;if(d?.throwIfAborted(),n.isEmpty())return;let m,w;d!=null&&(m=new Promise((b,E)=>{w=()=>{E(new zt)},d.addEventListener("abort",w)}));try{await Promise.race([c.promise,m])}finally{w!=null&&d!=null&&d?.removeEventListener("abort",w)}}},t==null)return s;let f=s;return s={[Symbol.asyncIterator](){return this},next(){return f.next()},throw(x){return f.throw(x),t!=null&&(t(x),t=void 0),{done:!0}},return(){return f.return(),t!=null&&(t(),t=void 0),{done:!0}},push:h,end(x){return f.end(x),t!=null&&(t(x),t=void 0),s},get readableLength(){return f.readableLength},onEmpty:x=>f.onEmpty(x)},s}var Ht=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function $(r,e,t,n){let s=new Ht(n?.errorMessage,n?.errorCode);return t?.aborted===!0?Promise.reject(s):new Promise((i,o)=>{let c=g=>{try{if(n?.filter?.(g)===!1)return}catch(p){r.removeEventListener(e,c),t?.removeEventListener("abort",u),o(p);return}r.removeEventListener(e,c),t?.removeEventListener("abort",u),i(g)},u=()=>{r.removeEventListener(e,c),t?.removeEventListener("abort",u),o(s)};r.addEventListener(e,c),t?.addEventListener("abort",u)})}var st=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function it(r,e,t){if(e==null)return r;if(e.aborted)return Promise.reject(new st(t?.errorMessage,t?.errorCode));let n,s=new st(t?.errorMessage,t?.errorCode);try{return await Promise.race([r,new Promise((i,o)=>{n=()=>{o(s)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var ot=class{deferred;signal;where;constructor(e,t){this.signal=t,this.deferred=T(),this.where=e,this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(new Z)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function os(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var at=class{id;fn;options;priority;recipients;status;timeline;controller;constructor(e,t,n=0){this.id=os(),this.status="queued",this.fn=e,this.priority=n,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,B(1/0,this.controller.signal),this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&this.controller.abort(new Z)}async join(e={}){let t=new ot(new Error("where").stack,e.signal);return this.recipients.push(t),e.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await it(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.signal?.removeEventListener("abort",this.onAbort)})}};function as(r,e,t){let n=0,s=r.length;for(;s>0;){let i=Math.trunc(s/2),o=n+i;t(r[o],e)<=0?(n=++o,s-=i+1):s=i}return n}var pe=class extends Q{concurrency;queue;pending;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.pending=0,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.queue=[]}tryToStartAnother(){if(this.size===0)return queueMicrotask(()=>{this.safeDispatchEvent("empty")}),this.running===0&&queueMicrotask(()=>{this.safeDispatchEvent("idle")}),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(e){if(this.queue[this.size-1]?.priority>=e.priority){this.queue.push(e);return}let t=as(this.queue,e,(n,s)=>s.priority-n.priority);this.queue.splice(t,0,e)}async add(e,t){t?.signal?.throwIfAborted();let n=new at(e,t,t?.priority),s=n.join(t).then(i=>(this.safeDispatchEvent("completed",{detail:i}),this.safeDispatchEvent("success",{detail:{job:n,result:i}}),i)).catch(i=>{throw this.safeDispatchEvent("error",{detail:i}),this.safeDispatchEvent("failure",{detail:{job:n,error:i}}),i});return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),s}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new Z)}),this.clear()}async onEmpty(e){this.size!==0&&await $(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await $(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await $(this,"idle",e?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=de({objectMode:!0}),n=u=>{u!=null?this.abort():this.clear(),t.end(u)},s=u=>{u.detail!=null&&t.push(u.detail)},i=u=>{n(u.detail)},o=()=>{n()},c=()=>{n(new O("Queue aborted","ERR_QUEUE_ABORTED"))};this.addEventListener("completed",s),this.addEventListener("error",i),this.addEventListener("idle",o),e?.signal?.addEventListener("abort",c);try{yield*t}finally{this.removeEventListener("completed",s),this.removeEventListener("error",i),this.removeEventListener("idle",o),e?.signal?.removeEventListener("abort",c),n()}}};var ct=class extends pe{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};var Bn=tt(Qr(),1);function xs(r){return r[Symbol.asyncIterator]!=null}function Es(r){if(xs(r))return(async()=>{for await(let e of r);})();for(let e of r);}var Vt=Es;function R(r=0){return new Uint8Array(r)}function I(r=0){return new Uint8Array(r)}var vs=Math.pow(2,7),Ss=Math.pow(2,14),Ls=Math.pow(2,21),qt=Math.pow(2,28),Wt=Math.pow(2,35),Gt=Math.pow(2,42),$t=Math.pow(2,49),k=128,N=127;function _(r){if(r<vs)return 1;if(r<Ss)return 2;if(r<Ls)return 3;if(r<qt)return 4;if(r<Wt)return 5;if(r<Gt)return 6;if(r<$t)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Xt(r,e,t=0){switch(_(r)){case 8:e[t++]=r&255|k,r/=128;case 7:e[t++]=r&255|k,r/=128;case 6:e[t++]=r&255|k,r/=128;case 5:e[t++]=r&255|k,r/=128;case 4:e[t++]=r&255|k,r>>>=7;case 3:e[t++]=r&255|k,r>>>=7;case 2:e[t++]=r&255|k,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function As(r,e,t=0){switch(_(r)){case 8:e.set(t++,r&255|k),r/=128;case 7:e.set(t++,r&255|k),r/=128;case 6:e.set(t++,r&255|k),r/=128;case 5:e.set(t++,r&255|k),r/=128;case 4:e.set(t++,r&255|k),r>>>=7;case 3:e.set(t++,r&255|k),r>>>=7;case 2:e.set(t++,r&255|k),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function Qt(r,e){let t=r[e],n=0;if(n+=t&N,t<k||(t=r[e+1],n+=(t&N)<<7,t<k)||(t=r[e+2],n+=(t&N)<<14,t<k)||(t=r[e+3],n+=(t&N)<<21,t<k)||(t=r[e+4],n+=(t&N)*qt,t<k)||(t=r[e+5],n+=(t&N)*Wt,t<k)||(t=r[e+6],n+=(t&N)*Gt,t<k)||(t=r[e+7],n+=(t&N)*$t,t<k))return n;throw new RangeError("Could not decode varint")}function ks(r,e){let t=r.get(e),n=0;if(n+=t&N,t<k||(t=r.get(e+1),n+=(t&N)<<7,t<k)||(t=r.get(e+2),n+=(t&N)<<14,t<k)||(t=r.get(e+3),n+=(t&N)<<21,t<k)||(t=r.get(e+4),n+=(t&N)*qt,t<k)||(t=r.get(e+5),n+=(t&N)*Wt,t<k)||(t=r.get(e+6),n+=(t&N)*Gt,t<k)||(t=r.get(e+7),n+=(t&N)*$t,t<k))return n;throw new RangeError("Could not decode varint")}function be(r,e,t=0){return e==null&&(e=I(_(r))),e instanceof Uint8Array?Xt(r,e,t):As(r,e,t)}function ye(r,e=0){return r instanceof Uint8Array?Qt(r,e):ks(r,e)}function Kt(r,e){e==null&&(e=r.reduce((s,i)=>s+i.length,0));let t=I(e),n=0;for(let s of r)t.set(s,n),n+=s.length;return t}function J(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}var Kr=Symbol.for("@achingbrain/uint8arraylist");function Jr(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let s=t+n.byteLength;if(e<s)return{buf:n,index:e-t};t=s}throw new RangeError("index is out of bounds")}function ht(r){return!!r?.[Kr]}var F=class r{bufs;length;[Kr]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(ht(n))t+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(ht(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=Jr(this.bufs,e);return t.buf[t.index]}set(e,t){let n=Jr(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(ht(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:s}=this._subList(e,t);return Kt(n,s)}subarray(e,t){let{bufs:n,length:s}=this._subList(e,t);return n.length===1?n[0]:Kt(n,s)}sublist(e,t){let{bufs:n,length:s}=this._subList(e,t),i=new r;return i.length=s,i.bufs=[...n],i}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:this.bufs,length:this.length};let n=[],s=0;for(let i=0;i<this.bufs.length;i++){let o=this.bufs[i],c=s,u=c+o.byteLength;if(s=u,e>=u)continue;let g=e>=c&&e<u,p=t>c&&t<=u;if(g&&p){if(e===c&&t===u){n.push(o);break}let h=e-c;n.push(o.subarray(h,h+(t-e)));break}if(g){if(e===0){n.push(o);continue}n.push(o.subarray(e-c));continue}if(p){if(t===u){n.push(o);break}n.push(o.subarray(0,t-c));break}n.push(o)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!ht(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let s=n.byteLength;if(s===0)throw new TypeError("search must be at least 1 byte long");let i=256,o=new Int32Array(i);for(let h=0;h<i;h++)o[h]=-1;for(let h=0;h<s;h++)o[n[h]]=h;let c=o,u=this.byteLength-n.byteLength,g=n.byteLength-1,p;for(let h=t;h<=u;h+=p){p=0;for(let v=g;v>=0;v--){let a=this.get(h+v);if(n[v]!==a){p=Math.max(1,v-c[a]);break}}if(p===0)return h}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=I(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let s=R(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt16(0,t,n),this.write(s,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let s=R(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt32(0,t,n),this.write(s,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let s=R(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigInt64(0,t,n),this.write(s,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=I(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let s=R(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint16(0,t,n),this.write(s,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let s=R(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint32(0,t,n),this.write(s,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let s=R(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigUint64(0,t,n),this.write(s,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let s=R(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat32(0,t,n),this.write(s,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let s=R(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat64(0,t,n),this.write(s,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!J(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((s,i)=>s+i.byteLength,0)),n.length=t,n}};function ft(r){return r[Symbol.asyncIterator]!=null}var dt=r=>{let e=_(r),t=I(e);return be(r,t),dt.bytes=e,t};dt.bytes=0;function jr(r,e){e=e??{};let t=e.lengthEncoder??dt;function*n(s){let i=t(s.byteLength);i instanceof Uint8Array?yield i:yield*i,s instanceof Uint8Array?yield s:yield*s}return ft(r)?async function*(){for await(let s of r)yield*n(s)}():function*(){for(let s of r)yield*n(s)}()}jr.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??dt;return new F(t(r.byteLength),r)};var xe=tt(en(),1);var Ds=8,_s=1024*1024*4,ie;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(ie||(ie={}));var jt=r=>{let e=ye(r);return jt.bytes=_(e),e};jt.bytes=0;function Te(r,e){let t=new F,n=ie.LENGTH,s=-1,i=e?.lengthDecoder??jt,o=e?.maxLengthLength??Ds,c=e?.maxDataLength??_s;function*u(){for(;t.byteLength>0;){if(n===ie.LENGTH)try{if(s=i(t),s<0)throw(0,xe.default)(new Error("invalid message length"),"ERR_INVALID_MSG_LENGTH");if(s>c)throw(0,xe.default)(new Error("message length too long"),"ERR_MSG_DATA_TOO_LONG");let g=i.bytes;t.consume(g),e?.onLength!=null&&e.onLength(s),n=ie.DATA}catch(g){if(g instanceof RangeError){if(t.byteLength>o)throw(0,xe.default)(new Error("message length length too long"),"ERR_MSG_LENGTH_TOO_LONG");break}throw g}if(n===ie.DATA){if(t.byteLength<s)break;let g=t.sublist(0,s);t.consume(s),e?.onData!=null&&e.onData(g),yield g,n=ie.LENGTH}}}return ft(r)?async function*(){for await(let g of r)t.append(g),yield*u();if(t.byteLength>0)throw(0,xe.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}():function*(){for(let g of r)t.append(g),yield*u();if(t.byteLength>0)throw(0,xe.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}()}Te.fromReader=(r,e)=>{let t=1,n=async function*(){for(;;)try{let{done:i,value:o}=await r.next(t);if(i===!0)return;o!=null&&(yield o)}catch(i){if(i.code==="ERR_UNDER_READ")return{done:!0,value:null};throw i}finally{t=1}}();return Te(n,{...e??{},onLength:i=>{t=i}})};var Yt=class{readNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.readNext=T(),this.haveNext=T()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let e=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=T(),e}async throw(e){return this.ended=!0,e!=null&&this.haveNext.reject(e),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return await this._push(void 0),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw new Error("Cannot push value onto an ended pushable");if(this.nextResult!=null&&(await this.readNext.promise,this.nextResult!=null))throw new Error("NeedNext promise resolved but nextResult was not consumed");e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=T(),await it(this.readNext.promise,t?.signal,t)}};function tn(){return new Yt}var pt=class extends Error{code;constructor(e,t){super(e),this.code=t}},Zt=class extends pt{type;constructor(e){super(e,"ABORT_ERR"),this.type="aborted"}};function rn(r,e){let t=tn();r.sink(t).catch(async o=>{await t.end(o)}),r.sink=async o=>{for await(let c of o)await t.push(c);await t.end()};let n=r.source;r.source[Symbol.iterator]!=null?n=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(n=r.source[Symbol.asyncIterator]());let s=new F;return{read:async(o,c)=>{c?.signal?.throwIfAborted();let u,g=new Promise((p,h)=>{u=()=>{h(new Zt("Read aborted"))},c?.signal?.addEventListener("abort",u)});try{if(o==null){let{done:h,value:v}=await Promise.race([n.next(),g]);return h===!0?new F:v}for(;s.byteLength<o;){let{value:h,done:v}=await Promise.race([n.next(),g]);if(v===!0)throw new pt("unexpected end of input","ERR_UNEXPECTED_EOF");s.append(h)}let p=s.sublist(0,o);return s.consume(o),p}finally{u!=null&&c?.signal?.removeEventListener("abort",u)}},write:async(o,c)=>{c?.signal?.throwIfAborted(),o instanceof Uint8Array?await t.push(o,c):await t.push(o.subarray(),c)},unwrap:()=>{if(s.byteLength>0){let o=r.source;r.source=async function*(){e?.yieldBytes===!1?yield s:yield*s,yield*o}()}return r}}}var mt=class extends Error{code;constructor(e,t){super(e),this.code=t}};function nn(r,e={}){let t=rn(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=_(e.maxDataLength));let n=e?.lengthDecoder??ye,s=e?.lengthEncoder??be;return{read:async o=>{let c=-1,u=new F;for(;;){u.append(await t.read(1,o));try{c=n(u)}catch(g){if(g instanceof RangeError)continue;throw g}if(e?.maxLengthLength!=null&&u.byteLength>e.maxLengthLength)throw new mt("message length length too long","ERR_MSG_LENGTH_TOO_LONG");if(c>-1)break}if(e?.maxDataLength!=null&&c>e.maxDataLength)throw new mt("message length too long","ERR_MSG_DATA_TOO_LONG");return t.read(c,o)},write:async(o,c)=>{await t.write(new F(s(o.byteLength),o),c)},writeV:async(o,c)=>{let u=new F(...o.flatMap(g=>[s(g.byteLength),g]));await t.write(u,c)},unwrap:()=>t.unwrap()}}function Rs(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:s=>{n.push(s)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var gt=Rs;function Is(r){return r[Symbol.asyncIterator]!=null}function Ns(r,e){if(Is(r))return async function*(){for await(let c of r)yield e(c)}();let t=gt(r),{value:n,done:s}=t.next();if(s===!0)return function*(){}();let i=e(n);if(typeof i.then=="function")return async function*(){yield await i;for await(let c of t)yield e(c)}();let o=e;return function*(){yield i;for(let c of t)yield o(c)}()}var Re=Ns;function Ms(r){return r[Symbol.asyncIterator]!=null}function Fs(...r){let e=[];for(let t of r)Ms(t)||e.push(t);return e.length===r.length?function*(){for(let t of e)yield*t}():async function*(){let t=de({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(r.map(async n=>{for await(let s of n)t.push(s)})),t.end()}catch(n){t.end(n)}}),yield*t}()}var sn=Fs;function Ie(r,...e){if(r==null)throw new Error("Empty pipeline");if(er(r)){let n=r;r=()=>n.source}else if(an(r)||on(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&er(t[t.length-1])&&(t[t.length-1]=t[t.length-1].sink),t.length>2)for(let n=1;n<t.length-1;n++)er(t[n])&&(t[n]=Bs(t[n]));return Us(...t)}var Us=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},on=r=>r?.[Symbol.asyncIterator]!=null,an=r=>r?.[Symbol.iterator]!=null,er=r=>r==null?!1:r.sink!=null&&r.source!=null,Bs=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=de({objectMode:!0});t.then(()=>{n.end()},o=>{n.end(o)});let s,i=r.source;if(on(i))s=async function*(){yield*i,n.end()};else if(an(i))s=function*(){yield*i,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return sn(n,s())}return r.source};function Ps(r){return r[Symbol.asyncIterator]!=null}function Os(r,e){return Ps(r)?async function*(){let t=0;if(!(e<1)){for await(let n of r)if(yield n,t++,t===e)return}}():function*(){let t=0;if(!(e<1)){for(let n of r)if(yield n,t++,t===e)return}}()}var cn=Os;var ir={};P(ir,{base64:()=>K,base64pad:()=>Gs,base64url:()=>$s,base64urlpad:()=>Xs});var Wa=new Uint8Array(0);function ln(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function Y(r){if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")}function un(r){return new TextEncoder().encode(r)}function hn(r){return new TextDecoder().decode(r)}function zs(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var s=0;s<r.length;s++){var i=r.charAt(s),o=i.charCodeAt(0);if(t[o]!==255)throw new TypeError(i+" is ambiguous");t[o]=s}var c=r.length,u=r.charAt(0),g=Math.log(c)/Math.log(256),p=Math.log(256)/Math.log(c);function h(l){if(l instanceof Uint8Array||(ArrayBuffer.isView(l)?l=new Uint8Array(l.buffer,l.byteOffset,l.byteLength):Array.isArray(l)&&(l=Uint8Array.from(l))),!(l instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(l.length===0)return"";for(var f=0,x=0,d=0,m=l.length;d!==m&&l[d]===0;)d++,f++;for(var w=(m-d)*p+1>>>0,b=new Uint8Array(w);d!==m;){for(var E=l[d],S=0,y=w-1;(E!==0||S<x)&&y!==-1;y--,S++)E+=256*b[y]>>>0,b[y]=E%c>>>0,E=E/c>>>0;if(E!==0)throw new Error("Non-zero carry");x=S,d++}for(var A=w-x;A!==w&&b[A]===0;)A++;for(var G=u.repeat(f);A<w;++A)G+=r.charAt(b[A]);return G}function v(l){if(typeof l!="string")throw new TypeError("Expected String");if(l.length===0)return new Uint8Array;var f=0;if(l[f]!==" "){for(var x=0,d=0;l[f]===u;)x++,f++;for(var m=(l.length-f)*g+1>>>0,w=new Uint8Array(m);l[f];){var b=t[l.charCodeAt(f)];if(b===255)return;for(var E=0,S=m-1;(b!==0||E<d)&&S!==-1;S--,E++)b+=c*w[S]>>>0,w[S]=b%256>>>0,b=b/256>>>0;if(b!==0)throw new Error("Non-zero carry");d=E,f++}if(l[f]!==" "){for(var y=m-d;y!==m&&w[y]===0;)y++;for(var A=new Uint8Array(x+(m-y)),G=x;y!==m;)A[G++]=w[y++];return A}}}function a(l){var f=v(l);if(f)return f;throw new Error(`Non-${e} character`)}return{encode:h,decodeUnsafe:v,decode:a}}var Hs=zs,Vs=Hs,dn=Vs;var tr=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},rr=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return pn(this,e)}},nr=class{decoders;constructor(e){this.decoders=e}or(e){return pn(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function pn(r,e){return new nr({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var sr=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,s){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=s,this.encoder=new tr(e,t,n),this.decoder=new rr(e,t,s)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function Ee({name:r,prefix:e,encode:t,decode:n}){return new sr(r,e,t,n)}function ee({name:r,prefix:e,alphabet:t}){let{encode:n,decode:s}=dn(t,r);return Ee({prefix:e,name:r,encode:n,decode:i=>Y(s(i))})}function qs(r,e,t,n){let s={};for(let p=0;p<e.length;++p)s[e[p]]=p;let i=r.length;for(;r[i-1]==="=";)--i;let o=new Uint8Array(i*t/8|0),c=0,u=0,g=0;for(let p=0;p<i;++p){let h=s[r[p]];if(h===void 0)throw new SyntaxError(`Non-${n} character`);u=u<<t|h,c+=t,c>=8&&(c-=8,o[g++]=255&u>>c)}if(c>=t||255&u<<8-c)throw new SyntaxError("Unexpected end of data");return o}function Ws(r,e,t){let n=e[e.length-1]==="=",s=(1<<t)-1,i="",o=0,c=0;for(let u=0;u<r.length;++u)for(c=c<<8|r[u],o+=8;o>t;)o-=t,i+=e[s&c>>o];if(o!==0&&(i+=e[s&c<<t-o]),n)for(;i.length*t&7;)i+="=";return i}function C({name:r,prefix:e,bitsPerChar:t,alphabet:n}){return Ee({prefix:e,name:r,encode(s){return Ws(s,n,t)},decode(s){return qs(s,n,t,r)}})}var K=C({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Gs=C({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),$s=C({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Xs=C({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var or={};P(or,{base32:()=>ve,base32hex:()=>js,base32hexpad:()=>Zs,base32hexpadupper:()=>ei,base32hexupper:()=>Ys,base32pad:()=>Js,base32padupper:()=>Ks,base32upper:()=>Qs,base32z:()=>ti});var ve=C({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Qs=C({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Js=C({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),Ks=C({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),js=C({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),Ys=C({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Zs=C({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),ei=C({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),ti=C({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var ar={};P(ar,{base58btc:()=>H,base58flickr:()=>ri});var H=ee({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),ri=ee({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var ni=wn,mn=128,si=127,ii=~si,oi=Math.pow(2,31);function wn(r,e,t){e=e||[],t=t||0;for(var n=t;r>=oi;)e[t++]=r&255|mn,r/=128;for(;r&ii;)e[t++]=r&255|mn,r>>>=7;return e[t]=r|0,wn.bytes=t-n+1,e}var ai=cr,ci=128,gn=127;function cr(r,n){var t=0,n=n||0,s=0,i=n,o,c=r.length;do{if(i>=c)throw cr.bytes=0,new RangeError("Could not decode varint");o=r[i++],t+=s<28?(o&gn)<<s:(o&gn)*Math.pow(2,s),s+=7}while(o>=ci);return cr.bytes=i-n,t}var li=Math.pow(2,7),ui=Math.pow(2,14),hi=Math.pow(2,21),fi=Math.pow(2,28),di=Math.pow(2,35),pi=Math.pow(2,42),mi=Math.pow(2,49),gi=Math.pow(2,56),wi=Math.pow(2,63),bi=function(r){return r<li?1:r<ui?2:r<hi?3:r<fi?4:r<di?5:r<pi?6:r<mi?7:r<gi?8:r<wi?9:10},yi={encode:ni,decode:ai,encodingLength:bi},xi=yi,Ne=xi;function Me(r,e=0){return[Ne.decode(r,e),Ne.decode.bytes]}function Se(r,e,t=0){return Ne.encode(r,e,t),e}function Le(r){return Ne.encodingLength(r)}function te(r,e){let t=e.byteLength,n=Le(r),s=n+Le(t),i=new Uint8Array(s+t);return Se(r,i,0),Se(t,i,n),i.set(e,s),new Ae(r,t,e,i)}function Fe(r){let e=Y(r),[t,n]=Me(e),[s,i]=Me(e.subarray(n)),o=e.subarray(n+i);if(o.byteLength!==s)throw new Error("Incorrect length");return new Ae(t,s,o,e)}function bn(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&ln(r.bytes,t.bytes)}}var Ae=class{code;size;digest;bytes;constructor(e,t,n,s){this.code=e,this.size=t,this.digest=n,this.bytes=s}};function yn(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return vi(t,lr(r),e??H.encoder);default:return Si(t,lr(r),e??ve.encoder)}}var xn=new WeakMap;function lr(r){let e=xn.get(r);if(e==null){let t=new Map;return xn.set(r,t),t}return e}var U=class r{code;version;multihash;bytes;"/";constructor(e,t,n,s){this.code=t,this.version=e,this.multihash=n,this.bytes=s,this["/"]=s}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==Ue)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==Li)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=te(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&bn(e.multihash,n.multihash)}toString(e){return yn(this,e)}toJSON(){return{"/":yn(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:s,multihash:i,bytes:o}=t;return new r(n,s,i,o??En(n,s,i.bytes))}else if(t[Ai]===!0){let{version:n,multihash:s,code:i}=t,o=Fe(s);return r.create(n,i,o)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==Ue)throw new Error(`Version 0 CID must use dag-pb (code: ${Ue}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let s=En(e,t,n.bytes);return new r(e,t,n,s)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Ue,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,s=Y(e.subarray(n,n+t.multihashSize));if(s.byteLength!==t.multihashSize)throw new Error("Incorrect length");let i=s.subarray(t.multihashSize-t.digestSize),o=new Ae(t.multihashCode,t.digestSize,i,s);return[t.version===0?r.createV0(o):r.createV1(t.codec,o),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[h,v]=Me(e.subarray(t));return t+=v,h},s=n(),i=Ue;if(s===18?(s=0,t=0):i=n(),s!==0&&s!==1)throw new RangeError(`Invalid CID version ${s}`);let o=t,c=n(),u=n(),g=t+u,p=g-o;return{version:s,codec:i,multihashCode:c,digestSize:u,multihashSize:p,size:g}}static parse(e,t){let[n,s]=Ei(e,t),i=r.decode(s);if(i.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return lr(i).set(n,e),i}};function Ei(r,e){switch(r[0]){case"Q":{let t=e??H;return[H.prefix,t.decode(`${H.prefix}${r}`)]}case H.prefix:{let t=e??H;return[H.prefix,t.decode(r)]}case ve.prefix:{let t=e??ve;return[ve.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function vi(r,e,t){let{prefix:n}=t;if(n!==H.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let s=e.get(n);if(s==null){let i=t.encode(r).slice(1);return e.set(n,i),i}else return s}function Si(r,e,t){let{prefix:n}=t,s=e.get(n);if(s==null){let i=t.encode(r);return e.set(n,i),i}else return s}var Ue=112,Li=18;function En(r,e,t){let n=Le(r),s=n+Le(e),i=new Uint8Array(s+t.byteLength);return Se(r,i,0),Se(e,i,n),i.set(t,s),i}var Ai=Symbol.for("@ipld/js-cid/CID");var j=class extends Event{constructor(e,t){super(e),this.detail=t}};var ur={};P(ur,{base10:()=>ki});var ki=ee({prefix:"9",name:"base10",alphabet:"0123456789"});var hr={};P(hr,{base16:()=>Ci,base16upper:()=>Di});var Ci=C({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Di=C({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var fr={};P(fr,{base2:()=>_i});var _i=C({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var dr={};P(dr,{base256emoji:()=>Mi});var vn=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),Ti=vn.reduce((r,e,t)=>(r[t]=e,r),[]),Ri=vn.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function Ii(r){return r.reduce((e,t)=>(e+=Ti[t],e),"")}function Ni(r){let e=[];for(let t of r){let n=Ri[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var Mi=Ee({prefix:"\u{1F680}",name:"base256emoji",encode:Ii,decode:Ni});var pr={};P(pr,{base36:()=>Fi,base36upper:()=>Ui});var Fi=ee({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Ui=ee({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var mr={};P(mr,{base8:()=>Bi});var Bi=C({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var gr={};P(gr,{identity:()=>Pi});var Pi=Ee({prefix:"\0",name:"identity",encode:r=>hn(r),decode:r=>un(r)});var mc=new TextEncoder,gc=new TextDecoder;var wr={};P(wr,{identity:()=>bt});var Sn=0,Hi="identity",Ln=Y;function Vi(r){return te(Sn,Ln(r))}var bt={code:Sn,name:Hi,encode:Ln,digest:Vi};var xr={};P(xr,{sha256:()=>oe,sha512:()=>qi});function yr({name:r,code:e,encode:t}){return new br(r,e,t)}var br=class{name;code;encode;constructor(e,t,n){this.name=e,this.code=t,this.encode=n}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?te(this.code,t):t.then(n=>te(this.code,n))}else throw Error("Unknown type, must be binary type")}};function kn(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var oe=yr({name:"sha2-256",code:18,encode:kn("SHA-256")}),qi=yr({name:"sha2-512",code:19,encode:kn("SHA-512")});var Ce={...gr,...fr,...mr,...ur,...hr,...or,...pr,...ar,...ir,...dr},_c={...xr,...wr};function Dn(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var Cn=Dn("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),Er=Dn("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=I(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),Wi={utf8:Cn,"utf-8":Cn,hex:Ce.base16,latin1:Er,ascii:Er,binary:Er,...Ce},yt=Wi;function q(r,e="utf8"){let t=yt[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}var Be="/ipfs/bitswap/1.2.0";var vr=new Float32Array([-0]),re=new Uint8Array(vr.buffer);function _n(r,e,t){vr[0]=r,e[t]=re[0],e[t+1]=re[1],e[t+2]=re[2],e[t+3]=re[3]}function Tn(r,e){return re[0]=r[e],re[1]=r[e+1],re[2]=r[e+2],re[3]=r[e+3],vr[0]}var Sr=new Float64Array([-0]),M=new Uint8Array(Sr.buffer);function Rn(r,e,t){Sr[0]=r,e[t]=M[0],e[t+1]=M[1],e[t+2]=M[2],e[t+3]=M[3],e[t+4]=M[4],e[t+5]=M[5],e[t+6]=M[6],e[t+7]=M[7]}function In(r,e){return M[0]=r[e],M[1]=r[e+1],M[2]=r[e+2],M[3]=r[e+3],M[4]=r[e+4],M[5]=r[e+5],M[6]=r[e+6],M[7]=r[e+7],Sr[0]}var Gi=BigInt(Number.MAX_SAFE_INTEGER),$i=BigInt(Number.MIN_SAFE_INTEGER),V=class r{lo;hi;constructor(e,t){this.lo=e|0,this.hi=t|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(t+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(BigInt(t)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){let e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){let e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){let e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?t===0?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return ae;if(e<Gi&&e>$i)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,s=e-(n<<32n);return t&&(n=~n|0n,s=~s|0n,++s>Nn&&(s=0n,++n>Nn&&(n=0n))),new r(Number(s),Number(n))}static fromNumber(e){if(e===0)return ae;let t=e<0;t&&(e=-e);let n=e>>>0,s=(e-n)/4294967296>>>0;return t&&(s=~s>>>0,n=~n>>>0,++n>4294967295&&(n=0,++s>4294967295&&(s=0))),new r(n,s)}static from(e){return typeof e=="number"?r.fromNumber(e):typeof e=="bigint"?r.fromBigInt(e):typeof e=="string"?r.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new r(e.low>>>0,e.high>>>0):ae}},ae=new V(0,0);ae.toBigInt=function(){return 0n};ae.zzEncode=ae.zzDecode=function(){return this};ae.length=function(){return 1};var Nn=4294967296n;function Mn(r){let e=0,t=0;for(let n=0;n<r.length;++n)t=r.charCodeAt(n),t<128?e+=1:t<2048?e+=2:(t&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function Fn(r,e,t){if(t-e<1)return"";let s,i=[],o=0,c;for(;e<t;)c=r[e++],c<128?i[o++]=c:c>191&&c<224?i[o++]=(c&31)<<6|r[e++]&63:c>239&&c<365?(c=((c&7)<<18|(r[e++]&63)<<12|(r[e++]&63)<<6|r[e++]&63)-65536,i[o++]=55296+(c>>10),i[o++]=56320+(c&1023)):i[o++]=(c&15)<<12|(r[e++]&63)<<6|r[e++]&63,o>8191&&((s??(s=[])).push(String.fromCharCode.apply(String,i)),o=0);return s!=null?(o>0&&s.push(String.fromCharCode.apply(String,i.slice(0,o))),s.join("")):String.fromCharCode.apply(String,i.slice(0,o))}function Lr(r,e,t){let n=t,s,i;for(let o=0;o<r.length;++o)s=r.charCodeAt(o),s<128?e[t++]=s:s<2048?(e[t++]=s>>6|192,e[t++]=s&63|128):(s&64512)===55296&&((i=r.charCodeAt(o+1))&64512)===56320?(s=65536+((s&1023)<<10)+(i&1023),++o,e[t++]=s>>18|240,e[t++]=s>>12&63|128,e[t++]=s>>6&63|128,e[t++]=s&63|128):(e[t++]=s>>12|224,e[t++]=s>>6&63|128,e[t++]=s&63|128);return t-n}function X(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function xt(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var Ar=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(e){this.buf=e,this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,X(this,10);return e}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw X(this,4);return xt(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw X(this,4);return xt(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw X(this,4);let e=Tn(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw X(this,4);let e=In(this.buf,this.pos);return this.pos+=8,e}bytes(){let e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw X(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return Fn(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw X(this,e);this.pos+=e}else do if(this.pos>=this.len)throw X(this);while(this.buf[this.pos++]&128);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new V(0,0),t=0;if(this.len-this.pos>4){for(;t<4;++t)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw X(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<t*7)>>>0,e}if(this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw X(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw X(this,8);let e=xt(this.buf,this.pos+=4),t=xt(this.buf,this.pos+=4);return new V(e,t)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let e=Qt(this.buf,this.pos);return this.pos+=_(e),e}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}};function kr(r){return new Ar(r instanceof Uint8Array?r:r.subarray())}function ce(r,e,t){let n=kr(r);return e.decode(n,void 0,t)}function Pe(r,e="utf8"){let t=yt[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function Cr(r){let e=r??8192,t=e>>>1,n,s=e;return function(o){if(o<1||o>t)return I(o);s+o>e&&(n=I(e),s=0);let c=n.subarray(s,s+=o);return s&7&&(s=(s|7)+1),c}}var le=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function Dr(){}var Tr=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},Xi=Cr();function Qi(r){return globalThis.Buffer!=null?I(r):Xi(r)}var ze=class{len;head;tail;states;constructor(){this.len=0,this.head=new le(Dr,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new le(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new Rr((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(Et,10,V.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=V.fromBigInt(e);return this._push(Et,t.length(),t)}uint64Number(e){return this._push(Xt,_(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){let t=V.fromBigInt(e).zzEncode();return this._push(Et,t.length(),t)}sint64Number(e){let t=V.fromNumber(e).zzEncode();return this._push(Et,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(_r,1,e?1:0)}fixed32(e){return this._push(Oe,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=V.fromBigInt(e);return this._push(Oe,4,t.lo)._push(Oe,4,t.hi)}fixed64Number(e){let t=V.fromNumber(e);return this._push(Oe,4,t.lo)._push(Oe,4,t.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push(_n,4,e)}double(e){return this._push(Rn,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(_r,1,0):this.uint32(t)._push(Ki,t,e)}string(e){let t=Mn(e);return t!==0?this.uint32(t)._push(Lr,t,e):this._push(_r,1,0)}fork(){return this.states=new Tr(this),this.head=this.tail=new le(Dr,0,0),this.len=0,this}reset(){return this.states!=null?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new le(Dr,0,0),this.len=0),this}ldelim(){let e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=t,this.len+=n),this}finish(){let e=this.head.next,t=Qi(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function _r(r,e,t){e[t]=r&255}function Ji(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var Rr=class extends le{next;constructor(e,t){super(Ji,e,t),this.next=void 0}};function Et(r,e,t){for(;r.hi!==0;)e[t++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)e[t++]=r.lo&127|128,r.lo=r.lo>>>7;e[t++]=r.lo}function Oe(r,e,t){e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24}function Ki(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(ze.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(ji,e,r),this},ze.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(Yi,e,r),this});function ji(r,e,t){e.set(r,t)}function Yi(r,e,t){r.length<40?Lr(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(Pe(r),t)}function Ir(){return new ze}function ue(r,e){let t=Ir();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var De;(function(r){r[r.VARINT=0]="VARINT",r[r.BIT64=1]="BIT64",r[r.LENGTH_DELIMITED=2]="LENGTH_DELIMITED",r[r.START_GROUP=3]="START_GROUP",r[r.END_GROUP=4]="END_GROUP",r[r.BIT32=5]="BIT32"})(De||(De={}));function vt(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function St(r){function e(s){if(r[s.toString()]==null)throw new Error("Invalid enum value");return r[s]}let t=function(i,o){let c=e(i);o.int32(c)},n=function(i){let o=i.int32();return e(o)};return vt("enum",De.VARINT,t,n)}function he(r,e){return vt("message",De.LENGTH_DELIMITED,r,e)}var D;(function(r){r.WantBlock="WantBlock",r.WantHave="WantHave"})(D||(D={}));var Nr;(function(r){r[r.WantBlock=0]="WantBlock",r[r.WantHave=1]="WantHave"})(Nr||(Nr={}));(function(r){r.codec=()=>St(Nr)})(D||(D={}));var Lt;(function(r){let e;r.codec=()=>(e==null&&(e=he((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.cid!=null&&t.cid.byteLength>0&&(n.uint32(10),n.bytes(t.cid)),t.priority!=null&&t.priority!==0&&(n.uint32(16),n.int32(t.priority)),t.cancel!=null&&(n.uint32(24),n.bool(t.cancel)),t.wantType!=null&&(n.uint32(32),D.codec().encode(t.wantType,n)),t.sendDontHave!=null&&(n.uint32(40),n.bool(t.sendDontHave)),s.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let s={cid:R(0),priority:0},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let o=t.uint32();switch(o>>>3){case 1:{s.cid=t.bytes();break}case 2:{s.priority=t.int32();break}case 3:{s.cancel=t.bool();break}case 4:{s.wantType=D.codec().decode(t);break}case 5:{s.sendDontHave=t.bool();break}default:{t.skipType(o&7);break}}}return s})),e),r.encode=t=>ue(t,r.codec()),r.decode=t=>ce(t,r.codec())})(Lt||(Lt={}));var At;(function(r){let e;r.codec=()=>(e==null&&(e=he((t,n,s={})=>{if(s.lengthDelimited!==!1&&n.fork(),t.entries!=null)for(let i of t.entries)n.uint32(10),Lt.codec().encode(i,n);t.full!=null&&(n.uint32(16),n.bool(t.full)),s.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let s={entries:[]},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let o=t.uint32();switch(o>>>3){case 1:{s.entries.push(Lt.codec().decode(t,t.uint32()));break}case 2:{s.full=t.bool();break}default:{t.skipType(o&7);break}}}return s})),e),r.encode=t=>ue(t,r.codec()),r.decode=t=>ce(t,r.codec())})(At||(At={}));var kt;(function(r){let e;r.codec=()=>(e==null&&(e=he((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.prefix!=null&&t.prefix.byteLength>0&&(n.uint32(10),n.bytes(t.prefix)),t.data!=null&&t.data.byteLength>0&&(n.uint32(18),n.bytes(t.data)),s.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let s={prefix:R(0),data:R(0)},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let o=t.uint32();switch(o>>>3){case 1:{s.prefix=t.bytes();break}case 2:{s.data=t.bytes();break}default:{t.skipType(o&7);break}}}return s})),e),r.encode=t=>ue(t,r.codec()),r.decode=t=>ce(t,r.codec())})(kt||(kt={}));var W;(function(r){r.HaveBlock="HaveBlock",r.DontHaveBlock="DontHaveBlock"})(W||(W={}));var Ct;(function(r){r[r.HaveBlock=0]="HaveBlock",r[r.DontHaveBlock=1]="DontHaveBlock"})(Ct||(Ct={}));(function(r){r.codec=()=>St(Ct)})(W||(W={}));var Dt;(function(r){let e;r.codec=()=>(e==null&&(e=he((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.cid!=null&&t.cid.byteLength>0&&(n.uint32(10),n.bytes(t.cid)),t.type!=null&&Ct[t.type]!==0&&(n.uint32(16),W.codec().encode(t.type,n)),s.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let s={cid:R(0),type:W.HaveBlock},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let o=t.uint32();switch(o>>>3){case 1:{s.cid=t.bytes();break}case 2:{s.type=W.codec().decode(t);break}default:{t.skipType(o&7);break}}}return s})),e),r.encode=t=>ue(t,r.codec()),r.decode=t=>ce(t,r.codec())})(Dt||(Dt={}));var He;(function(r){let e;r.codec=()=>(e==null&&(e=he((t,n,s={})=>{if(s.lengthDelimited!==!1&&n.fork(),t.wantlist!=null&&(n.uint32(10),At.codec().encode(t.wantlist,n)),t.blocks!=null)for(let i of t.blocks)n.uint32(26),kt.codec().encode(i,n);if(t.blockPresences!=null)for(let i of t.blockPresences)n.uint32(34),Dt.codec().encode(i,n);t.pendingBytes!=null&&t.pendingBytes!==0&&(n.uint32(40),n.int32(t.pendingBytes)),s.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let s={blocks:[],blockPresences:[],pendingBytes:0},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let o=t.uint32();switch(o>>>3){case 1:{s.wantlist=At.codec().decode(t,t.uint32());break}case 3:{s.blocks.push(kt.codec().decode(t,t.uint32()));break}case 4:{s.blockPresences.push(Dt.codec().decode(t,t.uint32()));break}case 5:{s.pendingBytes=t.int32();break}default:{t.skipType(o&7);break}}}return s})),e),r.encode=t=>ue(t,r.codec()),r.decode=t=>ce(t,r.codec())})(He||(He={}));Bn.default.formatters.B=r=>r==null?"undefined":JSON.stringify({blocks:r.blocks?.map(e=>({data:`${q(e.data,"base64").substring(0,10)}...`,prefix:q(e.prefix,"base64")})),blockPresences:r.blockPresences?.map(e=>({...e,cid:U.decode(e.cid).toString()})),wantlist:r.wantlist==null?void 0:{full:r.wantlist.full,entries:r.wantlist.entries.map(e=>({...e,cid:U.decode(e.cid).toString()}))}},null,2);var _t=class extends Q{log;libp2p;routing;protocols;running;maxInboundStreams;maxOutboundStreams;messageReceiveTimeout;registrarIds;metrics;sendQueue;messageSendTimeout;runOnTransientConnections;constructor(e,t={}){super(),this.log=e.logger.forComponent("helia:bitswap:network"),this.libp2p=e.libp2p,this.routing=e.routing,this.protocols=t.protocols??[Be],this.registrarIds=[],this.running=!1,this._onStream=this._onStream.bind(this),this.maxInboundStreams=t.maxInboundStreams??1024,this.maxOutboundStreams=t.maxOutboundStreams??1024,this.messageReceiveTimeout=t.messageReceiveTimeout??5e3,this.messageSendTimeout=t.messageSendTimeout??5e3,this.runOnTransientConnections=t.runOnTransientConnections??!1,this.metrics={blocksSent:e.libp2p.metrics?.registerCounter("helia_bitswap_sent_blocks_total"),dataSent:e.libp2p.metrics?.registerCounter("helia_bitswap_sent_data_bytes_total")},this.sendQueue=new ct({concurrency:t.messageSendConcurrency??50,metrics:e.libp2p.metrics,metricName:"helia_bitswap_message_send_queue"}),this.sendQueue.addEventListener("error",n=>{this.log.error("error sending wantlist to peer",n.detail)})}async start(){if(this.running)return;this.running=!0,await this.libp2p.handle(this.protocols,this._onStream,{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:this.runOnTransientConnections});let e={onConnect:t=>{this.safeDispatchEvent("peer:connected",{detail:t})},onDisconnect:t=>{this.safeDispatchEvent("peer:disconnected",{detail:t})}};this.registrarIds=[];for(let t of this.protocols)this.registrarIds.push(await this.libp2p.register(t,e));this.libp2p.getConnections().forEach(t=>{this.safeDispatchEvent("peer:connected",{detail:t.remotePeer})})}async stop(){if(this.running=!1,await this.libp2p.unhandle(this.protocols),this.registrarIds!=null){for(let e of this.registrarIds)this.libp2p.unregister(e);this.registrarIds=[]}}_onStream(e){if(!this.running)return;let{stream:t,connection:n}=e;Promise.resolve().then(async()=>{this.log("incoming new bitswap %s stream from %p",t.protocol,n.remotePeer);let s=()=>{t.abort(new O("Incoming Bitswap stream timed out","ERR_TIMEOUT"))},i=AbortSignal.timeout(this.messageReceiveTimeout);B(1/0,i),i.addEventListener("abort",s),await Ie(t,o=>Te(o),async o=>{for await(let c of o)try{let u=He.decode(c);this.log("incoming new bitswap %s message from %p %B",t.protocol,n.remotePeer,u),this.safeDispatchEvent("bitswap:message",{detail:{peer:n.remotePeer,message:u}}),i.removeEventListener("abort",s),i=AbortSignal.timeout(this.messageReceiveTimeout),B(1/0,i),i.addEventListener("abort",s)}catch(u){this.log.error("error reading incoming bitswap message from %p",n.remotePeer,u),t.abort(u);break}})}).catch(s=>{this.log.error("error handling incoming stream from %p",n.remotePeer,s),t.abort(s)})}async*findProviders(e,t){t?.onProgress?.(new j("bitswap:network:find-providers",e));for await(let n of this.routing.findProviders(e,t))await this.libp2p.isDialable(n.multiaddrs,{runOnTransientConnection:this.runOnTransientConnections})&&(yield n)}async findAndConnect(e,t){await Vt(Re(cn(this.findProviders(e,t),t?.maxProviders??3),async n=>this.connectTo(n.id,t))).catch(n=>{this.log.error(n)})}async sendMessage(e,t,n){if(!this.running)throw new Error("network isn't running");let s={wantlist:{full:t.wantlist?.full??!1,entries:t.wantlist?.entries??[]},blocks:t.blocks??[],blockPresences:t.blockPresences??[],pendingBytes:t.pendingBytes??0},i=AbortSignal.timeout(this.messageSendTimeout),o=rt([i,n?.signal]);B(1/0,i,o);try{let c=this.sendQueue.queue.find(u=>e.equals(u.options.peerId)&&u.status==="queued");if(c!=null){c.options.message=oo(c.options.message,s),await c.join({signal:o});return}await this.sendQueue.add(async u=>{let g=u?.message;if(g==null)throw new O("No message to send","ERR_NO_MESSAGE");this.log("sendMessage to %p %B",e,g),u?.onProgress?.(new j("bitswap:network:send-wantlist",e));let p=await this.libp2p.dialProtocol(e,Be,u);try{let h=nn(p);await h.write(He.encode(g),u),await h.unwrap().close(u)}catch(h){u?.onProgress?.(new j("bitswap:network:send-wantlist:error",{peer:e,error:h})),this.log.error("error sending message to %p",e,h),p.abort(h)}this._updateSentStats(g.blocks)},{peerId:e,signal:o,message:s})}finally{o.clear()}}async connectTo(e,t){if(!this.running)throw new O("Network isn't running","ERR_NOT_STARTED");t?.onProgress?.(new j("bitswap:network:dial",e));let[n]=await Promise.all([this.libp2p.dial(e,t),$(this.libp2p,"peer:identify",t?.signal,{filter:s=>{if(!s.detail.peerId.equals(e))return!1;if(s.detail.protocols.includes(Be))return!0;throw new O(`${e} did not support ${Be}`,"ERR_BITSWAP_UNSUPPORTED_BY_PEER")}})]);return n}_updateSentStats(e=[]){let t=0;for(let n of e.values())t+=n.data.byteLength;this.metrics.dataSent?.increment(t),this.metrics.blocksSent?.increment(e.length)}};function oo(r,e){let t=new Map((r.wantlist?.entries??[]).map(o=>[K.encode(o.cid),o]));for(let o of e.wantlist?.entries??[]){let c=K.encode(o.cid),u=t.get(c);u!=null&&(u.priority>o.priority&&(o.priority=u.priority),o.cancel=o.cancel??u.cancel,o.wantType=o.wantType??u.wantType,o.sendDontHave=o.sendDontHave??u.sendDontHave),t.set(c,o)}let n=new Map(r.blockPresences.map(o=>[K.encode(o.cid),o]));for(let o of e.blockPresences){let c=K.encode(o.cid);n.set(c,o)}let s=new Map(r.blocks.map(o=>[K.encode(o.data),o]));for(let o of e.blocks){let c=K.encode(o.data);s.set(c,o)}return{wantlist:{full:r.wantlist?.full??e.wantlist?.full??!1,entries:[...t.values()]},blockPresences:[...n.values()],blocks:[...s.values()],pendingBytes:r.pendingBytes+e.pendingBytes}}var ao=Symbol.for("nodejs.util.inspect.custom"),Pn=Object.values(Ce).map(r=>r.decoder).reduce((r,e)=>r.or(e),Ce.identity.decoder),On=114,zn=36,Hn=37,Ve=class{type;multihash;privateKey;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,this.privateKey=e.privateKey,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[qr]=!0;toString(){return this.string==null&&(this.string=H.encode(this.multihash.bytes).slice(1)),this.string}toCID(){return U.createV1(On,this.multihash)}toBytes(){return this.multihash.bytes}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return J(this.multihash.bytes,e);if(typeof e=="string")return $e(e).equals(this);if(e?.multihash?.bytes!=null)return J(this.multihash.bytes,e.multihash.bytes);throw new Error("not valid Id")}[ao](){return`PeerId(${this.toString()})`}},qe=class extends Ve{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},We=class extends Ve{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.multihash.digest}},Ge=class extends Ve{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.multihash.digest}};function $e(r,e){if(e=e??Pn,r.charAt(0)==="1"||r.charAt(0)==="Q"){let t=Fe(H.decode(`z${r}`));return r.startsWith("12D")?new We({multihash:t}):r.startsWith("16U")?new Ge({multihash:t}):new qe({multihash:t})}return co(Pn.decode(r))}function co(r){try{let e=Fe(r);if(e.code===bt.code){if(e.digest.length===zn)return new We({multihash:e});if(e.digest.length===Hn)return new Ge({multihash:e})}if(e.code===oe.code)return new qe({multihash:e})}catch{return lo(U.decode(r))}throw new Error("Supplied PeerID CID is invalid")}function lo(r){if(r==null||r.multihash==null||r.version==null||r.version===1&&r.code!==On)throw new Error("Supplied PeerID CID is invalid");let e=r.multihash;if(e.code===oe.code)return new qe({multihash:r.multihash});if(e.code===bt.code){if(e.digest.length===zn)return new We({multihash:r.multihash});if(e.digest.length===Hn)return new Ge({multihash:r.multihash})}throw new Error("Supplied PeerID CID is invalid")}function Mr(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let n=r.next(),s=n.value;return n.done===!0||s==null?{done:!0,value:void 0}:{done:!1,value:e(s)}}};return t}var Xe=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),n)}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return Mr(this.map.entries(),e=>[$e(e[0]),e[1]])}forEach(e){this.map.forEach((t,n)=>{e(t,$e(n),this)})}get(e){return this.map.get(e.toString())}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),t)}keys(){return Mr(this.map.keys(),e=>$e(e))}values(){return this.map.values()}get size(){return this.map.size}};var Fr=class extends Xe{metric;constructor(e){super();let{name:t,metrics:n}=e;this.metric=n.registerMetric(t),this.updateComponentMetric()}set(e,t){return super.set(e,t),this.updateComponentMetric(),this}delete(e){let t=super.delete(e);return this.updateComponentMetric(),t}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function Qe(r){let{name:e,metrics:t}=r,n;return t!=null?n=new Fr({name:e,metrics:t}):n=new Xe,n}function uo(r){let e=new Uint8Array(r.reduce((n,s)=>n+_(s),0)),t=0;for(let n of r)e=be(n,e,t),t+=_(n);return e}var Vn=uo;function Ur(r){return Vn([r.version,r.code,r.multihash.code,r.multihash.digest.byteLength])}var Tt=class{peerId;blockstore;network;wants;exchangeCount;bytesSent;bytesReceived;lastExchange;maxSizeReplaceHasWithBlock;constructor(e,t){this.peerId=e.peerId,this.blockstore=e.blockstore,this.network=e.network,this.wants=new Map,this.exchangeCount=0,this.bytesSent=0,this.bytesReceived=0,this.maxSizeReplaceHasWithBlock=t.maxSizeReplaceHasWithBlock??1024}sentBytes(e){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.bytesSent+=e}receivedBytes(e){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.bytesReceived+=e}debtRatio(){return this.bytesSent/(this.bytesReceived+1)}async sendBlocksToPeer(e){let t={blockPresences:[],blocks:[]},n=new Set;for(let[s,i]of this.wants.entries()){if(!await this.blockstore.has(i.cid,e)){if(!i.sendDontHave||i.sentDontHave===!0)continue;i.sentDontHave=!0,t.blockPresences.push({cid:i.cid.bytes,type:W.DontHaveBlock});continue}let c=await this.blockstore.get(i.cid,e);i.wantType===D.WantHave?c.byteLength<this.maxSizeReplaceHasWithBlock?(n.add(s),t.blocks.push({data:c,prefix:Ur(i.cid)})):t.blockPresences.push({cid:i.cid.bytes,type:W.HaveBlock}):(n.add(s),t.blocks.push({data:c,prefix:Ur(i.cid)}))}if(t.blocks.length>0||t.blockPresences.length>0){await this.network.sendMessage(this.peerId,t,e),this.sentBytes(t.blocks.reduce((s,i)=>s+i.data.byteLength,0));for(let s of n)this.wants.delete(s)}}};var Rt=class{blockstore;network;ledgerMap;maxSizeReplaceHasWithBlock;log;constructor(e,t={}){this.blockstore=e.blockstore,this.network=e.network,this.maxSizeReplaceHasWithBlock=t.maxSizeReplaceHasWithBlock,this.log=e.logger.forComponent("helia:bitswap:peer-want-lists"),this.ledgerMap=Qe({name:"helia_bitswap_ledger_map",metrics:e.libp2p.metrics}),this.network.addEventListener("bitswap:message",n=>{this.receiveMessage(n.detail.peer,n.detail.message).catch(s=>{this.log.error("error receiving bitswap message from %p",n.detail.peer,s)})}),this.network.addEventListener("peer:disconnected",n=>{this.peerDisconnected(n.detail)})}ledgerForPeer(e){let t=this.ledgerMap.get(e);if(t!=null)return{peer:t.peerId,value:t.debtRatio(),sent:t.bytesSent,received:t.bytesReceived,exchanged:t.exchangeCount}}wantListForPeer(e){let t=this.ledgerMap.get(e);if(t!=null)return[...t.wants.values()]}peers(){return Array.from(this.ledgerMap.values()).map(e=>e.peerId)}async receiveMessage(e,t){let n=this.ledgerMap.get(e);if(n==null&&(n=new Tt({peerId:e,blockstore:this.blockstore,network:this.network},{maxSizeReplaceHasWithBlock:this.maxSizeReplaceHasWithBlock}),this.ledgerMap.set(e,n)),n.receivedBytes(t.blocks?.reduce((s,i)=>s+i.data.byteLength,0)??0),t.wantlist!=null){t.wantlist.full===!0&&n.wants.clear();for(let s of t.wantlist.entries){let i=U.decode(s.cid),o=q(i.multihash.bytes,"base64");s.cancel===!0?(this.log("peer %p cancelled want of block for %c",e,i),n.wants.delete(o)):(s.wantType===D.WantHave?this.log("peer %p wanted block presence for %c",e,i):this.log("peer %p wanted block for %c",e,i),n.wants.set(o,{cid:i,priority:s.priority,wantType:s.wantType??D.WantBlock,sendDontHave:s.sendDontHave??!1}))}}await n.sendBlocksToPeer()}async receivedBlock(e,t){let n=q(e.multihash.bytes,"base64"),s=[];for(let i of this.ledgerMap.values())i.wants.has(n)&&s.push(i);await Promise.all(s.map(async i=>i.sendBlocksToPeer(t)))}peerDisconnected(e){this.ledgerMap.delete(e)}};var po=tt(Wn(),1);var _e;(function(r){r[r.A=1]="A",r[r.CNAME=5]="CNAME",r[r.TXT=16]="TXT",r[r.AAAA=28]="AAAA"})(_e||(_e={}));function mo(r){return r[Symbol.asyncIterator]!=null}function go(r,e){if(mo(r))return async function*(){for await(let c of r)await e(c)&&(yield c)}();let t=gt(r),{value:n,done:s}=t.next();if(s===!0)return function*(){}();let i=e(n);if(typeof i.then=="function")return async function*(){await i&&(yield n);for await(let c of t)await e(c)&&(yield c)}();let o=e;return function*(){i===!0&&(yield n);for(let c of t)o(c)&&(yield c)}()}var Br=go;var It=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;var qu=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;var Wu={}.toString;function Gn(r=32){if(It&&typeof It.getRandomValues=="function")return It.getRandomValues(new Uint8Array(r));throw new Error("crypto.getRandomValues must be defined")}function Nt(r){if(isNaN(r)||r<=0)throw new O("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return Gn(r)}var Pr=tt(Qn(),1);var wo=Math.LN2*Math.LN2,Ft=class r{static create(e,t=.005){let n=bo(e,t);return new r(n)}seeds;bits;buffer;constructor(e={}){e.seeds!=null?this.seeds=e.seeds:this.seeds=yo(e.hashes??8),this.bits=e.bits??1024,this.buffer=R(Math.ceil(this.bits/8))}add(e){typeof e=="string"&&(e=Pe(e));for(let t=0;t<this.seeds.length;t++){let s=Pr.default.x86.hash32(e,this.seeds[t])%this.bits;this.setbit(s)}}has(e){typeof e=="string"&&(e=Pe(e));for(let t=0;t<this.seeds.length;t++){let s=Pr.default.x86.hash32(e,this.seeds[t])%this.bits;if(!this.getbit(s))return!1}return!0}clear(){this.buffer.fill(0)}setbit(e){let t=0,n=e;for(;n>7;)t++,n-=8;let s=this.buffer[t];s|=1<<n,this.buffer[t]=s}getbit(e){let t=0,n=e;for(;n>7;)t++,n-=8;return(this.buffer[t]&1<<n)!==0}};function bo(r,e=.005){let t=Math.round(-1*r*Math.log(e)/wo),n=Math.round(t/r*Math.LN2);return{bits:t,hashes:n}}function yo(r){let e,t,n=[];for(let s=0;s<r;s++)for(e=new F(Nt(4)),n[s]=e.getUint32(0,!0),t=0;t<s;t++)if(n[s]===n[t]){s--;break}return n}var Ke=class extends Q{intialPeerSearchComplete;requests;name;log;logger;minProviders;maxProviders;providers;evictionFilter;constructor(e,t){super(),B(1/0,this),this.name=t.name,this.logger=e.logger,this.log=e.logger.forComponent(this.name),this.requests=new Map,this.minProviders=t.minProviders??1,this.maxProviders=t.maxProviders??5,this.providers=[],this.evictionFilter=Ft.create(this.maxProviders)}async retrieve(e,t={}){let n=K.encode(e.multihash.bytes),s=this.requests.get(n);if(s!=null)return this.log("join existing request for %c",e),s;let i=T();if(this.requests.set(n,i.promise),this.providers.length===0){let g=!1;this.intialPeerSearchComplete==null&&(g=!0,this.log=this.logger.forComponent(`${this.name}:${e}`),this.intialPeerSearchComplete=this.findProviders(e,this.minProviders,t)),await this.intialPeerSearchComplete,g&&this.log("found initial session peers for %c",e)}let o=!1,c=new pe({concurrency:this.maxProviders});c.addEventListener("error",()=>{}),c.addEventListener("failure",g=>{this.log.error("error querying provider %o, evicting from session",g.detail.job.options.provider,g.detail.error),this.evict(g.detail.job.options.provider)}),c.addEventListener("success",g=>{o=!0,i.resolve(g.detail.result)}),c.addEventListener("idle",()=>{o||t.signal?.aborted===!0||Promise.resolve().then(async()=>{this.log("no session peers had block for for %c, finding new providers",e);for(let g=0;g<this.minProviders&&this.providers.length!==0;g++){let p=this.providers[Math.floor(Math.random()*this.providers.length)];this.evict(p)}await this.findProviders(e,this.minProviders,t),this.log("found new providers re-retrieving %c",e),this.requests.delete(n),i.resolve(await this.retrieve(e,t))}).catch(g=>{this.log.error("could not find new providers for %c",e,g),i.reject(g)})});let u=g=>{c.add(async()=>this.queryProvider(e,g.detail,t),{provider:g.detail}).catch(p=>{t.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c",e,p)})};this.addEventListener("provider",u),Promise.all([...this.providers].map(async g=>c.add(async()=>this.queryProvider(e,g,t),{provider:g}))).catch(g=>{t.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c",e,g)});try{return await i.promise}finally{this.removeEventListener("provider",u),c.clear(),this.requests.delete(n)}}evict(e){this.evictionFilter.add(this.toEvictionKey(e));let t=this.providers.findIndex(n=>this.equals(n,e));t!==-1&&this.providers.splice(t,1)}isEvicted(e){return this.providers.some(t=>this.equals(t,e))}hasProvider(e){return!!(this.providers.find(t=>this.equals(t,e))!=null||this.isEvicted(e))}async findProviders(e,t,n){let s=T(),i=0;return Promise.resolve().then(async()=>{this.log("finding %d-%d new provider(s) for %c",t,this.maxProviders,e);for await(let o of this.findNewProviders(e,n)){if(i===this.maxProviders||n.signal?.aborted===!0)break;if(!this.hasProvider(o)&&(this.log("found %d/%d new providers",i,this.maxProviders),this.providers.push(o),this.safeDispatchEvent("provider",{detail:o}),i++,i===t&&(this.log("session is ready"),s.resolve()),this.providers.length===this.maxProviders)){this.log("found max session peers",i);break}}if(this.log("found %d/%d new session peers",i,this.maxProviders),i<t)throw new O(`Found ${i} of ${t} ${this.name} providers for ${e}`,"ERR_INSUFFICIENT_PROVIDERS_FOUND")}).catch(o=>{this.log.error("error searching routing for potential session peers for %c",e,o.errors??o),s.reject(o)}),s.promise}};var Or=class extends Ke{wantList;network;constructor(e,t){super(e,{...t,name:"helia:bitswap:session"}),this.wantList=e.wantList,this.network=e.network}async queryProvider(e,t,n){this.log("sending WANT-BLOCK for %c to %p",e,t);let s=await this.wantList.wantSessionBlock(e,t,n);if(this.log("%p %s %c",t,s.has?"has":"does not have",e),s.has&&s.block!=null)return s.block;throw new Error("Provider did not have block")}async*findNewProviders(e,t={}){for await(let n of this.network.findProviders(e,t))yield n.id}toEvictionKey(e){return e.toBytes()}equals(e,t){return e.equals(t)}};function Jn(r,e){return new Or(r,e)}var Ut=class{blocksReceived;duplicateBlocksReceived;dataReceived;duplicateDataReceived;constructor(e){this.blocksReceived=e.libp2p.metrics?.registerMetricGroup("helia_bitswap_received_blocks"),this.duplicateBlocksReceived=e.libp2p.metrics?.registerMetricGroup("helia_bitswap_duplicate_received_blocks"),this.dataReceived=e.libp2p.metrics?.registerMetricGroup("helia_bitswap_data_received_bytes"),this.duplicateDataReceived=e.libp2p.metrics?.registerMetricGroup("helia_bitswap_duplicate_data_received_bytes")}updateBlocksReceived(e=1,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.blocksReceived?.increment(n)}updateDuplicateBlocksReceived(e=1,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.duplicateBlocksReceived?.increment(n)}updateDataReceived(e,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.dataReceived?.increment(n)}updateDuplicateDataReceived(e,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.duplicateDataReceived?.increment(n)}};var zr=class extends Map{metric;constructor(e){super();let{name:t,metrics:n}=e;this.metric=n.registerMetric(t),this.updateComponentMetric()}set(e,t){return super.set(e,t),this.updateComponentMetric(),this}delete(e){let t=super.delete(e);return this.updateComponentMetric(),t}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function Kn(r){let{name:e,metrics:t}=r,n;return t!=null?n=new zr({name:e,metrics:t}):n=new Map,n}function xo(r){return r[Symbol.asyncIterator]!=null}function Eo(r){if(xo(r))return(async()=>{let t=[];for await(let n of r)t.push(n);return t})();let e=[];for(let t of r)e.push(t);return e}var Hr=Eo;function vo(r){if(!(r instanceof Uint8Array))throw new Error("arg needs to be a Uint8Array");let e=[];for(;r.length>0;){let t=ye(r);e.push(t),r=r.slice(_(t))}return e}var jn=vo;var Bt=class extends Q{peers;wants;network;log;sendMessagesDelay;sendMessagesTimeout;hashLoader;sendingMessages;constructor(e,t={}){super(),B(1/0,this),this.peers=Qe({name:"helia_bitswap_peers",metrics:e.libp2p.metrics}),this.wants=Kn({name:"helia_bitswap_wantlist",metrics:e.libp2p.metrics}),this.network=e.network,this.sendMessagesDelay=t.sendMessagesDelay??10,this.log=e.logger.forComponent("helia:bitswap:wantlist"),this.hashLoader=t.hashLoader,this.network.addEventListener("bitswap:message",n=>{this.receiveMessage(n.detail.peer,n.detail.message).catch(s=>{this.log.error("error receiving bitswap message from %p",n.detail.peer,s)})}),this.network.addEventListener("peer:connected",n=>{this.peerConnected(n.detail).catch(s=>{this.log.error("error processing newly connected bitswap peer %p",n.detail,s)})}),this.network.addEventListener("peer:disconnected",n=>{this.peerDisconnected(n.detail)})}async addEntry(e,t){let n=q(e.multihash.bytes,"base64"),s=this.wants.get(n);s==null&&(s={cid:e,priority:t.priority??1,wantType:t.wantType??D.WantBlock,cancel:!1,sendDontHave:!0},this.wants.set(n,s)),s.wantType===D.WantHave&&t.wantType===D.WantBlock&&(s.wantType=D.WantBlock),await this.sendMessagesDebounced();try{return t.wantType===D.WantBlock?(await $(this,"block",t?.signal,{filter:c=>J(e.multihash.digest,c.detail.cid.multihash.digest),errorMessage:"Want was aborted"})).detail:(await $(this,"presence",t?.signal,{filter:o=>J(e.multihash.digest,o.detail.cid.multihash.digest),errorMessage:"Want was aborted"})).detail}finally{t.signal?.aborted===!0&&(this.log("want for %c was aborted, cancelling want",e),s.cancel=!0,await this.sendMessagesDebounced())}}async sendMessagesDebounced(){await this.sendingMessages?.promise,clearTimeout(this.sendMessagesTimeout),this.sendMessagesTimeout=setTimeout(()=>{this.sendMessages().catch(e=>{this.log("error sending messages to peers",e)})},this.sendMessagesDelay)}async sendMessages(){this.sendingMessages=T(),await Promise.all([...this.peers.entries()].map(async([e,t])=>{let n=new Set,s={wantlist:{full:!1,entries:Ie(this.wants.entries(),i=>Br(i,([o,c])=>{let u=t.has(o);return c.cancel?u:!u}),i=>Re(i,([o,c])=>(n.add(o),{cid:c.cid.bytes,priority:c.priority,wantType:c.wantType,cancel:c.cancel,sendDontHave:c.sendDontHave})),i=>Hr(i))}};if(s.wantlist?.entries.length!==0)try{await this.network.sendMessage(e,s);for(let i of n)t.add(i)}catch(i){this.log.error("error sending full wantlist to new peer",i)}})).catch(e=>{this.log.error("error sending messages",e)});for(let[e,t]of this.wants)if(t.cancel){this.wants.delete(e);for(let n of this.peers.values())n.delete(e)}this.sendingMessages.resolve()}has(e){let t=q(e.multihash.bytes,"base64");return this.wants.has(t)}async wantSessionPresence(e,t,n={}){return await this.network.sendMessage(t,{wantlist:{full:!1,entries:[{cid:e.bytes,sendDontHave:!0,wantType:D.WantHave,priority:1}]}}),(await $(this,"presence",n.signal,{filter:i=>t.equals(i.detail.sender)&&J(e.multihash.digest,i.detail.cid.multihash.digest)})).detail}async wantBlock(e,t={}){return this.addEntry(e,{...t,wantType:D.WantBlock})}async wantSessionBlock(e,t,n={}){return await this.network.sendMessage(t,{wantlist:{full:!1,entries:[{cid:e.bytes,sendDontHave:!0,wantType:D.WantBlock,priority:1}]}}),(await $(this,"presence",n.signal,{filter:i=>t.equals(i.detail.sender)&&J(e.multihash.digest,i.detail.cid.multihash.digest)})).detail}async receivedBlock(e,t){let n=q(e.multihash.bytes,"base64"),s=this.wants.get(n);s!=null&&(s.cancel=!0,await this.sendMessagesDebounced())}async receiveMessage(e,t){this.log("received message from %p",e);let n=!1;for(let s of t.blocks){if(s.prefix==null||s.data==null)continue;let i=jn(s.prefix),o=i[0],c=i[1],u=i[2],g=u===oe.code?oe:await this.hashLoader?.getHasher(u);if(g==null){this.log.error("unknown hash algorithm",u);continue}let p=await g.digest(s.data),h=U.create(o===0?0:1,c,p);this.log("received block from %p for %c",e,h),this.safeDispatchEvent("block",{detail:{sender:e,cid:h,block:s.data}}),this.safeDispatchEvent("presence",{detail:{sender:e,cid:h,has:!0,block:s.data}});let v=q(h.multihash.bytes,"base64"),a=this.wants.get(v);if(a==null)return;a.cancel=!0,n=!0}for(let{cid:s,type:i}of t.blockPresences){let o=U.decode(s);this.log("received %s from %p for %c",i,e,o),this.safeDispatchEvent("presence",{detail:{sender:e,cid:o,has:i===W.HaveBlock}})}n&&await this.sendMessagesDebounced()}async peerConnected(e){let t=new Set,n={wantlist:{full:!0,entries:Ie(this.wants.entries(),s=>Br(s,([i,o])=>!o.cancel),s=>Re(s,([i,o])=>(t.add(i),{cid:o.cid.bytes,priority:1,wantType:D.WantBlock,cancel:!1,sendDontHave:!1})),s=>Hr(s))}};if(n.wantlist?.entries.length===0){this.peers.set(e,t);return}try{await this.network.sendMessage(e,n),this.peers.set(e,t)}catch(s){this.log.error("error sending full wantlist to new peer %p",e,s)}}peerDisconnected(e){this.peers.delete(e)}start(){}stop(){this.peers.clear(),clearTimeout(this.sendMessagesTimeout)}};var Pt=class{log;logger;stats;network;blockstore;peerWantLists;wantList;constructor(e,t={}){this.logger=e.logger,this.log=e.logger.forComponent("helia:bitswap"),this.blockstore=e.blockstore,this.stats=new Ut(e),this.network=new _t(e,t),this.peerWantLists=new Rt({...e,network:this.network},t),this.wantList=new Bt({...e,network:this.network},t)}createSession(e={}){return Jn({wantList:this.wantList,network:this.network,logger:this.logger},e)}async want(e,t={}){let n=new AbortController,s=rt([n.signal,t.signal]);B(1/0,n.signal,s),this.network.findAndConnect(e,{...t,signal:s}).catch(i=>{n.signal.aborted||this.log.error("error during finding and connect for cid %c",e,i)});try{return(await this.wantList.wantBlock(e,{...t,signal:s})).block}finally{n.abort(),s.clear()}}async notify(e,t,n={}){await Promise.all([this.peerWantLists.receivedBlock(e,n),this.wantList.receivedBlock(e,n)])}getWantlist(){return[...this.wantList.wants.values()].filter(e=>!e.cancel).map(e=>({cid:e.cid,priority:e.priority,wantType:e.wantType}))}getPeerWantlist(e){return this.peerWantLists.wantListForPeer(e)}async start(){this.wantList.start(),await this.network.start()}async stop(){this.wantList.stop(),await this.network.stop()}};var So=(r,e={})=>new Pt(r,e);return ns(Lo);})();
2
+ "use strict";var HeliaBitswap=(()=>{var Pn=Object.create;var Je=Object.defineProperty;var On=Object.getOwnPropertyDescriptor;var Fn=Object.getOwnPropertyNames;var zn=Object.getPrototypeOf,Hn=Object.prototype.hasOwnProperty;var Ze=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),B=(r,e)=>{for(var t in e)Je(r,t,{get:e[t],enumerable:!0})},Rr=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Fn(e))!Hn.call(r,s)&&s!==t&&Je(r,s,{get:()=>e[s],enumerable:!(n=On(e,s))||n.enumerable});return r};var Tt=(r,e,t)=>(t=r!=null?Pn(zn(r)):{},Rr(e||!r||!r.__esModule?Je(t,"default",{value:r,enumerable:!0}):t,r)),Vn=r=>Rr(Je({},"__esModule",{value:!0}),r);var Hr=Ze((Ko,zr)=>{"use strict";function Fr(r,e){for(let t in e)Object.defineProperty(r,t,{value:e[t],enumerable:!0,configurable:!0});return r}function es(r,e,t){if(!r||typeof r=="string")throw new TypeError("Please pass an Error to err-code");t||(t={}),typeof e=="object"&&(t=e,e=""),e&&(t.code=e);try{return Fr(r,t)}catch{t.message=r.message,t.stack=r.stack;let s=function(){};return s.prototype=Object.create(Object.getPrototypeOf(r)),Fr(new s,t)}}zr.exports=es});var Tn=Ze((Xl,_n)=>{_n.exports=function(r){if(!r)throw Error("hashlru must have a max value, of type number, greater than 0");var e=0,t=Object.create(null),n=Object.create(null);function s(i,o){t[i]=o,e++,e>=r&&(e=0,n=t,t=Object.create(null))}return{has:function(i){return t[i]!==void 0||n[i]!==void 0},remove:function(i){t[i]!==void 0&&(t[i]=void 0),n[i]!==void 0&&(n[i]=void 0)},get:function(i){var o=t[i];if(o!==void 0)return o;if((o=n[i])!==void 0)return s(i,o),o},set:function(i,o){t[i]!==void 0?t[i]=o:s(i,o)},clear:function(){t=Object.create(null),n=Object.create(null)}}}});var In=Ze((We,kt)=>{(function(r,e){"use strict";var t={version:"3.0.0",x86:{},x64:{},inputValidation:!0};function n(a){if(!Array.isArray(a)&&!ArrayBuffer.isView(a))return!1;for(var l=0;l<a.length;l++)if(!Number.isInteger(a[l])||a[l]<0||a[l]>255)return!1;return!0}function s(a,l){return(a&65535)*l+(((a>>>16)*l&65535)<<16)}function i(a,l){return a<<l|a>>>32-l}function o(a){return a^=a>>>16,a=s(a,2246822507),a^=a>>>13,a=s(a,3266489909),a^=a>>>16,a}function c(a,l){a=[a[0]>>>16,a[0]&65535,a[1]>>>16,a[1]&65535],l=[l[0]>>>16,l[0]&65535,l[1]>>>16,l[1]&65535];var h=[0,0,0,0];return h[3]+=a[3]+l[3],h[2]+=h[3]>>>16,h[3]&=65535,h[2]+=a[2]+l[2],h[1]+=h[2]>>>16,h[2]&=65535,h[1]+=a[1]+l[1],h[0]+=h[1]>>>16,h[1]&=65535,h[0]+=a[0]+l[0],h[0]&=65535,[h[0]<<16|h[1],h[2]<<16|h[3]]}function u(a,l){a=[a[0]>>>16,a[0]&65535,a[1]>>>16,a[1]&65535],l=[l[0]>>>16,l[0]&65535,l[1]>>>16,l[1]&65535];var h=[0,0,0,0];return h[3]+=a[3]*l[3],h[2]+=h[3]>>>16,h[3]&=65535,h[2]+=a[2]*l[3],h[1]+=h[2]>>>16,h[2]&=65535,h[2]+=a[3]*l[2],h[1]+=h[2]>>>16,h[2]&=65535,h[1]+=a[1]*l[3],h[0]+=h[1]>>>16,h[1]&=65535,h[1]+=a[2]*l[2],h[0]+=h[1]>>>16,h[1]&=65535,h[1]+=a[3]*l[1],h[0]+=h[1]>>>16,h[1]&=65535,h[0]+=a[0]*l[3]+a[1]*l[2]+a[2]*l[1]+a[3]*l[0],h[0]&=65535,[h[0]<<16|h[1],h[2]<<16|h[3]]}function d(a,l){return l%=64,l===32?[a[1],a[0]]:l<32?[a[0]<<l|a[1]>>>32-l,a[1]<<l|a[0]>>>32-l]:(l-=32,[a[1]<<l|a[0]>>>32-l,a[0]<<l|a[1]>>>32-l])}function y(a,l){return l%=64,l===0?a:l<32?[a[0]<<l|a[1]>>>32-l,a[1]<<l]:[a[1]<<l-32,0]}function w(a,l){return[a[0]^l[0],a[1]^l[1]]}function L(a){return a=w(a,[0,a[0]>>>1]),a=u(a,[4283543511,3981806797]),a=w(a,[0,a[0]>>>1]),a=u(a,[3301882366,444984403]),a=w(a,[0,a[0]>>>1]),a}t.x86.hash32=function(a,l){if(t.inputValidation&&!n(a))return e;l=l||0;for(var h=a.length%4,E=a.length-h,f=l,p=0,m=3432918353,b=461845907,x=0;x<E;x=x+4)p=a[x]|a[x+1]<<8|a[x+2]<<16|a[x+3]<<24,p=s(p,m),p=i(p,15),p=s(p,b),f^=p,f=i(f,13),f=s(f,5)+3864292196;switch(p=0,h){case 3:p^=a[x+2]<<16;case 2:p^=a[x+1]<<8;case 1:p^=a[x],p=s(p,m),p=i(p,15),p=s(p,b),f^=p}return f^=a.length,f=o(f),f>>>0},t.x86.hash128=function(a,l){if(t.inputValidation&&!n(a))return e;l=l||0;for(var h=a.length%16,E=a.length-h,f=l,p=l,m=l,b=l,x=0,v=0,g=0,A=0,Q=597399067,Xe=2869860233,Qe=951274213,Ke=2716044179,S=0;S<E;S=S+16)x=a[S]|a[S+1]<<8|a[S+2]<<16|a[S+3]<<24,v=a[S+4]|a[S+5]<<8|a[S+6]<<16|a[S+7]<<24,g=a[S+8]|a[S+9]<<8|a[S+10]<<16|a[S+11]<<24,A=a[S+12]|a[S+13]<<8|a[S+14]<<16|a[S+15]<<24,x=s(x,Q),x=i(x,15),x=s(x,Xe),f^=x,f=i(f,19),f+=p,f=s(f,5)+1444728091,v=s(v,Xe),v=i(v,16),v=s(v,Qe),p^=v,p=i(p,17),p+=m,p=s(p,5)+197830471,g=s(g,Qe),g=i(g,17),g=s(g,Ke),m^=g,m=i(m,15),m+=b,m=s(m,5)+2530024501,A=s(A,Ke),A=i(A,18),A=s(A,Q),b^=A,b=i(b,13),b+=f,b=s(b,5)+850148119;switch(x=0,v=0,g=0,A=0,h){case 15:A^=a[S+14]<<16;case 14:A^=a[S+13]<<8;case 13:A^=a[S+12],A=s(A,Ke),A=i(A,18),A=s(A,Q),b^=A;case 12:g^=a[S+11]<<24;case 11:g^=a[S+10]<<16;case 10:g^=a[S+9]<<8;case 9:g^=a[S+8],g=s(g,Qe),g=i(g,17),g=s(g,Ke),m^=g;case 8:v^=a[S+7]<<24;case 7:v^=a[S+6]<<16;case 6:v^=a[S+5]<<8;case 5:v^=a[S+4],v=s(v,Xe),v=i(v,16),v=s(v,Qe),p^=v;case 4:x^=a[S+3]<<24;case 3:x^=a[S+2]<<16;case 2:x^=a[S+1]<<8;case 1:x^=a[S],x=s(x,Q),x=i(x,15),x=s(x,Xe),f^=x}return f^=a.length,p^=a.length,m^=a.length,b^=a.length,f+=p,f+=m,f+=b,p+=f,m+=f,b+=f,f=o(f),p=o(p),m=o(m),b=o(b),f+=p,f+=m,f+=b,p+=f,m+=f,b+=f,("00000000"+(f>>>0).toString(16)).slice(-8)+("00000000"+(p>>>0).toString(16)).slice(-8)+("00000000"+(m>>>0).toString(16)).slice(-8)+("00000000"+(b>>>0).toString(16)).slice(-8)},t.x64.hash128=function(a,l){if(t.inputValidation&&!n(a))return e;l=l||0;for(var h=a.length%16,E=a.length-h,f=[0,l],p=[0,l],m=[0,0],b=[0,0],x=[2277735313,289559509],v=[1291169091,658871167],g=0;g<E;g=g+16)m=[a[g+4]|a[g+5]<<8|a[g+6]<<16|a[g+7]<<24,a[g]|a[g+1]<<8|a[g+2]<<16|a[g+3]<<24],b=[a[g+12]|a[g+13]<<8|a[g+14]<<16|a[g+15]<<24,a[g+8]|a[g+9]<<8|a[g+10]<<16|a[g+11]<<24],m=u(m,x),m=d(m,31),m=u(m,v),f=w(f,m),f=d(f,27),f=c(f,p),f=c(u(f,[0,5]),[0,1390208809]),b=u(b,v),b=d(b,33),b=u(b,x),p=w(p,b),p=d(p,31),p=c(p,f),p=c(u(p,[0,5]),[0,944331445]);switch(m=[0,0],b=[0,0],h){case 15:b=w(b,y([0,a[g+14]],48));case 14:b=w(b,y([0,a[g+13]],40));case 13:b=w(b,y([0,a[g+12]],32));case 12:b=w(b,y([0,a[g+11]],24));case 11:b=w(b,y([0,a[g+10]],16));case 10:b=w(b,y([0,a[g+9]],8));case 9:b=w(b,[0,a[g+8]]),b=u(b,v),b=d(b,33),b=u(b,x),p=w(p,b);case 8:m=w(m,y([0,a[g+7]],56));case 7:m=w(m,y([0,a[g+6]],48));case 6:m=w(m,y([0,a[g+5]],40));case 5:m=w(m,y([0,a[g+4]],32));case 4:m=w(m,y([0,a[g+3]],24));case 3:m=w(m,y([0,a[g+2]],16));case 2:m=w(m,y([0,a[g+1]],8));case 1:m=w(m,[0,a[g]]),m=u(m,x),m=d(m,31),m=u(m,v),f=w(f,m)}return f=w(f,[0,a.length]),p=w(p,[0,a.length]),f=c(f,p),p=c(p,f),f=L(f),p=L(p),f=c(f,p),p=c(p,f),("00000000"+(f[0]>>>0).toString(16)).slice(-8)+("00000000"+(f[1]>>>0).toString(16)).slice(-8)+("00000000"+(p[0]>>>0).toString(16)).slice(-8)+("00000000"+(p[1]>>>0).toString(16)).slice(-8)},typeof We<"u"?(typeof kt<"u"&&kt.exports&&(We=kt.exports=t),We.murmurHash3=t):typeof define=="function"&&define.amd?define([],function(){return t}):(t._murmurHash3=r.murmurHash3,t.noConflict=function(){return r.murmurHash3=t._murmurHash3,t._murmurHash3=e,t.noConflict=e,t},r.murmurHash3=t)})(We)});var Nn=Ze((xu,Rn)=>{Rn.exports=In()});var to={};B(to,{createBitswap:()=>eo});var Nr=Symbol.for("@libp2p/peer-id");var Z=class r extends Error{code;type;constructor(e="The operation was aborted"){super(e),this.name="AbortError",this.code=r.code,this.type=r.type}static code="ABORT_ERR";static type="aborted"},C=class extends Error{code;props;constructor(e,t,n){super(e),this.code=t,this.name=n?.name??"CodeError",this.props=n??{}}};var U=(r,...e)=>{try{[...e]}catch{}};var G=class extends EventTarget{#e=new Map;constructor(){super(),U(1/0,this)}listenerCount(e){let t=this.#e.get(e);return t==null?0:t.length}addEventListener(e,t,n){super.addEventListener(e,t,n);let s=this.#e.get(e);s==null&&(s=[],this.#e.set(e,s)),s.push({callback:t,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(e,t,n){super.removeEventListener(e.toString(),t??null,n);let s=this.#e.get(e);s!=null&&(s=s.filter(({callback:i})=>i!==t),this.#e.set(e,s))}dispatchEvent(e){let t=super.dispatchEvent(e),n=this.#e.get(e.type);return n==null||(n=n.filter(({once:s})=>!s),this.#e.set(e.type,n)),t}safeDispatchEvent(e,t={}){return this.dispatchEvent(new qn(e,t))}},Mt=class extends Event{detail;constructor(e,t){super(e,t),this.detail=t?.detail}},qn=globalThis.CustomEvent??Mt;function Cr(r){let e=new globalThis.AbortController;function t(){e.abort();for(let i of r)i?.removeEventListener!=null&&i.removeEventListener("abort",t)}for(let i of r){if(i?.aborted===!0){t();break}i?.addEventListener!=null&&i.addEventListener("abort",t)}function n(){for(let i of r)i?.removeEventListener!=null&&i.removeEventListener("abort",t)}let s=e.signal;return s.clear=n,s}function H(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var Ye=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||e-1&e)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},ue=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new Ye(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){let t=this.head;this.head=t.next=new Ye(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){let t=this.tail.next;this.tail.next=null,this.tail=t,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}};var It=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function he(r={}){return Gn(t=>{let n=t.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function Gn(r,e){e=e??{};let t=e.onEnd,n=new ue,s,i,o,c=H(),u=async()=>{try{return n.isEmpty()?o?{done:!0}:await new Promise((E,f)=>{i=p=>{i=null,n.push(p);try{E(r(n))}catch(m){f(m)}return s}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{c.resolve(),c=H()})}},d=E=>i!=null?i(E):(n.push(E),s),y=E=>(n=new ue,i!=null?i({error:E}):(n.push({error:E}),s)),w=E=>{if(o)return s;if(e?.objectMode!==!0&&E?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return d({done:!1,value:E})},L=E=>o?s:(o=!0,E!=null?y(E):d({done:!0})),a=()=>(n=new ue,L(),{done:!0}),l=E=>(L(E),{done:!0});if(s={[Symbol.asyncIterator](){return this},next:u,return:a,throw:l,push:w,end:L,get readableLength(){return n.size},onEmpty:async E=>{let f=E?.signal;if(f?.throwIfAborted(),n.isEmpty())return;let p,m;f!=null&&(p=new Promise((b,x)=>{m=()=>{x(new It)},f.addEventListener("abort",m)}));try{await Promise.race([c.promise,p])}finally{m!=null&&f!=null&&f?.removeEventListener("abort",m)}}},t==null)return s;let h=s;return s={[Symbol.asyncIterator](){return this},next(){return h.next()},throw(E){return h.throw(E),t!=null&&(t(E),t=void 0),{done:!0}},return(){return h.return(),t!=null&&(t(),t=void 0),{done:!0}},push:w,end(E){return h.end(E),t!=null&&(t(E),t=void 0),s},get readableLength(){return h.readableLength},onEmpty:E=>h.onEmpty(E)},s}var Rt=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function V(r,e,t,n){let s=new Rt(n?.errorMessage,n?.errorCode);return t?.aborted===!0?Promise.reject(s):new Promise((i,o)=>{let c=d=>{try{if(n?.filter?.(d)===!1)return}catch(y){r.removeEventListener(e,c),t?.removeEventListener("abort",u),o(y);return}r.removeEventListener(e,c),t?.removeEventListener("abort",u),i(d)},u=()=>{r.removeEventListener(e,c),t?.removeEventListener("abort",u),o(s)};r.addEventListener(e,c),t?.addEventListener("abort",u)})}var je=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function Br(r,e,t){if(e==null)return r;if(e.aborted)return Promise.reject(new je(t?.errorMessage,t?.errorCode));let n,s=new je(t?.errorMessage,t?.errorCode);try{return await Promise.race([r,new Promise((i,o)=>{n=()=>{o(s)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var et=class{deferred;signal;where;constructor(e,t){this.signal=t,this.deferred=H(),this.where=e,this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new Z)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function Wn(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var tt=class{id;fn;options;priority;recipients;status;timeline;controller;constructor(e,t,n=0){this.id=Wn(),this.status="queued",this.fn=e,this.priority=n,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,U(1/0,this.controller.signal),this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new Z),this.cleanup())}async join(e={}){let t=new et(new Error("where").stack,e.signal);return this.recipients.push(t),e.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await Br(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};function $n(r,e,t){let n=0,s=r.length;for(;s>0;){let i=Math.trunc(s/2),o=n+i;t(r[o],e)<=0?(n=++o,s-=i+1):s=i}return n}var fe=class extends G{concurrency;queue;pending;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.pending=0,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.queue=[]}tryToStartAnother(){if(this.size===0)return queueMicrotask(()=>{this.safeDispatchEvent("empty")}),this.running===0&&queueMicrotask(()=>{this.safeDispatchEvent("idle")}),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(e){if(this.queue[this.size-1]?.priority>=e.priority){this.queue.push(e);return}let t=$n(this.queue,e,(n,s)=>s.priority-n.priority);this.queue.splice(t,0,e)}async add(e,t){t?.signal?.throwIfAborted();let n=new tt(e,t,t?.priority),s=n.join(t).then(i=>(this.safeDispatchEvent("completed",{detail:i}),this.safeDispatchEvent("success",{detail:{job:n,result:i}}),i)).catch(i=>{if(n.status==="queued"){for(let o=0;o<this.queue.length;o++)if(this.queue[o]===n){this.queue.splice(o,1);break}}throw this.safeDispatchEvent("error",{detail:i}),this.safeDispatchEvent("failure",{detail:{job:n,error:i}}),i});return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),s}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new Z)}),this.clear()}async onEmpty(e){this.size!==0&&await V(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await V(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await V(this,"idle",e?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=he({objectMode:!0}),n=u=>{u!=null?this.abort():this.clear(),t.end(u)},s=u=>{u.detail!=null&&t.push(u.detail)},i=u=>{n(u.detail)},o=()=>{n()},c=()=>{n(new C("Queue aborted","ERR_QUEUE_ABORTED"))};this.addEventListener("completed",s),this.addEventListener("error",i),this.addEventListener("idle",o),e?.signal?.addEventListener("abort",c);try{yield*t}finally{this.removeEventListener("completed",s),this.removeEventListener("error",i),this.removeEventListener("idle",o),e?.signal?.removeEventListener("abort",c),n()}}};var rt=class extends fe{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};function Xn(r){return r[Symbol.asyncIterator]!=null}function Qn(r){if(Xn(r))return(async()=>{for await(let e of r);})();for(let e of r);}var Nt=Qn;function M(r=0){return new Uint8Array(r)}function I(r=0){return new Uint8Array(r)}var Kn=Math.pow(2,7),Jn=Math.pow(2,14),Zn=Math.pow(2,21),Ct=Math.pow(2,28),Bt=Math.pow(2,35),Ut=Math.pow(2,42),Pt=Math.pow(2,49),k=128,R=127;function T(r){if(r<Kn)return 1;if(r<Jn)return 2;if(r<Zn)return 3;if(r<Ct)return 4;if(r<Bt)return 5;if(r<Ut)return 6;if(r<Pt)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Ot(r,e,t=0){switch(T(r)){case 8:e[t++]=r&255|k,r/=128;case 7:e[t++]=r&255|k,r/=128;case 6:e[t++]=r&255|k,r/=128;case 5:e[t++]=r&255|k,r/=128;case 4:e[t++]=r&255|k,r>>>=7;case 3:e[t++]=r&255|k,r>>>=7;case 2:e[t++]=r&255|k,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function Yn(r,e,t=0){switch(T(r)){case 8:e.set(t++,r&255|k),r/=128;case 7:e.set(t++,r&255|k),r/=128;case 6:e.set(t++,r&255|k),r/=128;case 5:e.set(t++,r&255|k),r/=128;case 4:e.set(t++,r&255|k),r>>>=7;case 3:e.set(t++,r&255|k),r>>>=7;case 2:e.set(t++,r&255|k),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function Ft(r,e){let t=r[e],n=0;if(n+=t&R,t<k||(t=r[e+1],n+=(t&R)<<7,t<k)||(t=r[e+2],n+=(t&R)<<14,t<k)||(t=r[e+3],n+=(t&R)<<21,t<k)||(t=r[e+4],n+=(t&R)*Ct,t<k)||(t=r[e+5],n+=(t&R)*Bt,t<k)||(t=r[e+6],n+=(t&R)*Ut,t<k)||(t=r[e+7],n+=(t&R)*Pt,t<k))return n;throw new RangeError("Could not decode varint")}function jn(r,e){let t=r.get(e),n=0;if(n+=t&R,t<k||(t=r.get(e+1),n+=(t&R)<<7,t<k)||(t=r.get(e+2),n+=(t&R)<<14,t<k)||(t=r.get(e+3),n+=(t&R)<<21,t<k)||(t=r.get(e+4),n+=(t&R)*Ct,t<k)||(t=r.get(e+5),n+=(t&R)*Bt,t<k)||(t=r.get(e+6),n+=(t&R)*Ut,t<k)||(t=r.get(e+7),n+=(t&R)*Pt,t<k))return n;throw new RangeError("Could not decode varint")}function nt(r,e,t=0){return e==null&&(e=I(T(r))),e instanceof Uint8Array?Ot(r,e,t):Yn(r,e,t)}function st(r,e=0){return r instanceof Uint8Array?Ft(r,e):jn(r,e)}function zt(r,e){e==null&&(e=r.reduce((s,i)=>s+i.length,0));let t=I(e),n=0;for(let s of r)t.set(s,n),n+=s.length;return t}function W(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}var Or=Symbol.for("@achingbrain/uint8arraylist");function Pr(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let s=t+n.byteLength;if(e<s)return{buf:n,index:e-t};t=s}throw new RangeError("index is out of bounds")}function it(r){return!!r?.[Or]}var Y=class r{bufs;length;[Or]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(it(n))t+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(it(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=Pr(this.bufs,e);return t.buf[t.index]}set(e,t){let n=Pr(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(it(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:s}=this._subList(e,t);return zt(n,s)}subarray(e,t){let{bufs:n,length:s}=this._subList(e,t);return n.length===1?n[0]:zt(n,s)}sublist(e,t){let{bufs:n,length:s}=this._subList(e,t),i=new r;return i.length=s,i.bufs=[...n],i}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:this.bufs,length:this.length};let n=[],s=0;for(let i=0;i<this.bufs.length;i++){let o=this.bufs[i],c=s,u=c+o.byteLength;if(s=u,e>=u)continue;let d=e>=c&&e<u,y=t>c&&t<=u;if(d&&y){if(e===c&&t===u){n.push(o);break}let w=e-c;n.push(o.subarray(w,w+(t-e)));break}if(d){if(e===0){n.push(o);continue}n.push(o.subarray(e-c));continue}if(y){if(t===u){n.push(o);break}n.push(o.subarray(0,t-c));break}n.push(o)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!it(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let s=n.byteLength;if(s===0)throw new TypeError("search must be at least 1 byte long");let i=256,o=new Int32Array(i);for(let w=0;w<i;w++)o[w]=-1;for(let w=0;w<s;w++)o[n[w]]=w;let c=o,u=this.byteLength-n.byteLength,d=n.byteLength-1,y;for(let w=t;w<=u;w+=y){y=0;for(let L=d;L>=0;L--){let a=this.get(w+L);if(n[L]!==a){y=Math.max(1,L-c[a]);break}}if(y===0)return w}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=I(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let s=M(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt16(0,t,n),this.write(s,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let s=M(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt32(0,t,n),this.write(s,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let s=M(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigInt64(0,t,n),this.write(s,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=I(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let s=M(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint16(0,t,n),this.write(s,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let s=M(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint32(0,t,n),this.write(s,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let s=M(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigUint64(0,t,n),this.write(s,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let s=M(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat32(0,t,n),this.write(s,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let s=M(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat64(0,t,n),this.write(s,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!W(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((s,i)=>s+i.byteLength,0)),n.length=t,n}};function ot(r){return r[Symbol.asyncIterator]!=null}var at=r=>{let e=T(r),t=I(e);return nt(r,t),at.bytes=e,t};at.bytes=0;function ct(r,e){e=e??{};let t=e.lengthEncoder??at;function*n(s){let i=t(s.byteLength);i instanceof Uint8Array?yield i:yield*i,s instanceof Uint8Array?yield s:yield*s}return ot(r)?async function*(){for await(let s of r)yield*n(s)}():function*(){for(let s of r)yield*n(s)}()}ct.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??at;return new Y(t(r.byteLength),r)};var de=Tt(Hr(),1);var ts=8,rs=1024*1024*4,re;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(re||(re={}));var Ht=r=>{let e=st(r);return Ht.bytes=T(e),e};Ht.bytes=0;function _e(r,e){let t=new Y,n=re.LENGTH,s=-1,i=e?.lengthDecoder??Ht,o=e?.maxLengthLength??ts,c=e?.maxDataLength??rs;function*u(){for(;t.byteLength>0;){if(n===re.LENGTH)try{if(s=i(t),s<0)throw(0,de.default)(new Error("invalid message length"),"ERR_INVALID_MSG_LENGTH");if(s>c)throw(0,de.default)(new Error("message length too long"),"ERR_MSG_DATA_TOO_LONG");let d=i.bytes;t.consume(d),e?.onLength!=null&&e.onLength(s),n=re.DATA}catch(d){if(d instanceof RangeError){if(t.byteLength>o)throw(0,de.default)(new Error("message length length too long"),"ERR_MSG_LENGTH_TOO_LONG");break}throw d}if(n===re.DATA){if(t.byteLength<s)break;let d=t.sublist(0,s);t.consume(s),e?.onData!=null&&e.onData(d),yield d,n=re.LENGTH}}}return ot(r)?async function*(){for await(let d of r)t.append(d),yield*u();if(t.byteLength>0)throw(0,de.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}():function*(){for(let d of r)t.append(d),yield*u();if(t.byteLength>0)throw(0,de.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}()}_e.fromReader=(r,e)=>{let t=1,n=async function*(){for(;;)try{let{done:i,value:o}=await r.next(t);if(i===!0)return;o!=null&&(yield o)}catch(i){if(i.code==="ERR_UNDER_READ")return{done:!0,value:null};throw i}finally{t=1}}();return _e(n,{...e??{},onLength:i=>{t=i}})};function ss(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:s=>{n.push(s)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var lt=ss;function is(r){return r[Symbol.asyncIterator]!=null}function os(r,e){if(is(r))return async function*(){for await(let c of r)yield e(c)}();let t=lt(r),{value:n,done:s}=t.next();if(s===!0)return function*(){}();let i=e(n);if(typeof i.then=="function")return async function*(){yield await i;for await(let c of t)yield e(c)}();let o=e;return function*(){yield i;for(let c of t)yield o(c)}()}var Te=os;function as(r){return r[Symbol.asyncIterator]!=null}function cs(...r){let e=[];for(let t of r)as(t)||e.push(t);return e.length===r.length?function*(){for(let t of e)yield*t}():async function*(){let t=he({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(r.map(async n=>{for await(let s of n)t.push(s)})),t.end()}catch(n){t.end(n)}}),yield*t}()}var Vr=cs;function pe(r,...e){if(r==null)throw new Error("Empty pipeline");if(Vt(r)){let n=r;r=()=>n.source}else if(Gr(r)||qr(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&Vt(t[t.length-1])&&(t[t.length-1]=t[t.length-1].sink),t.length>2)for(let n=1;n<t.length-1;n++)Vt(t[n])&&(t[n]=us(t[n]));return ls(...t)}var ls=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},qr=r=>r?.[Symbol.asyncIterator]!=null,Gr=r=>r?.[Symbol.iterator]!=null,Vt=r=>r==null?!1:r.sink!=null&&r.source!=null,us=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=he({objectMode:!0});t.then(()=>{n.end()},o=>{n.end(o)});let s,i=r.source;if(qr(i))s=async function*(){yield*i,n.end()};else if(Gr(i))s=function*(){yield*i,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return Vr(n,s())}return r.source};function hs(r){return r[Symbol.asyncIterator]!=null}function fs(r,e){return hs(r)?async function*(){let t=0;if(!(e<1)){for await(let n of r)if(yield n,t++,t===e)return}}():function*(){let t=0;if(!(e<1)){for(let n of r)if(yield n,t++,t===e)return}}()}var Wr=fs;var $=class extends Event{constructor(e,t){super(e),this.detail=t}};var Me="/ipfs/bitswap/1.2.0";var qt=new Float32Array([-0]),j=new Uint8Array(qt.buffer);function $r(r,e,t){qt[0]=r,e[t]=j[0],e[t+1]=j[1],e[t+2]=j[2],e[t+3]=j[3]}function Xr(r,e){return j[0]=r[e],j[1]=r[e+1],j[2]=r[e+2],j[3]=r[e+3],qt[0]}var Gt=new Float64Array([-0]),N=new Uint8Array(Gt.buffer);function Qr(r,e,t){Gt[0]=r,e[t]=N[0],e[t+1]=N[1],e[t+2]=N[2],e[t+3]=N[3],e[t+4]=N[4],e[t+5]=N[5],e[t+6]=N[6],e[t+7]=N[7]}function Kr(r,e){return N[0]=r[e],N[1]=r[e+1],N[2]=r[e+2],N[3]=r[e+3],N[4]=r[e+4],N[5]=r[e+5],N[6]=r[e+6],N[7]=r[e+7],Gt[0]}var ds=BigInt(Number.MAX_SAFE_INTEGER),ps=BigInt(Number.MIN_SAFE_INTEGER),P=class r{lo;hi;constructor(e,t){this.lo=e|0,this.hi=t|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(t+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(BigInt(t)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){let e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){let e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){let e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?t===0?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return ne;if(e<ds&&e>ps)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,s=e-(n<<32n);return t&&(n=~n|0n,s=~s|0n,++s>Jr&&(s=0n,++n>Jr&&(n=0n))),new r(Number(s),Number(n))}static fromNumber(e){if(e===0)return ne;let t=e<0;t&&(e=-e);let n=e>>>0,s=(e-n)/4294967296>>>0;return t&&(s=~s>>>0,n=~n>>>0,++n>4294967295&&(n=0,++s>4294967295&&(s=0))),new r(n,s)}static from(e){return typeof e=="number"?r.fromNumber(e):typeof e=="bigint"?r.fromBigInt(e):typeof e=="string"?r.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new r(e.low>>>0,e.high>>>0):ne}},ne=new P(0,0);ne.toBigInt=function(){return 0n};ne.zzEncode=ne.zzDecode=function(){return this};ne.length=function(){return 1};var Jr=4294967296n;function Zr(r){let e=0,t=0;for(let n=0;n<r.length;++n)t=r.charCodeAt(n),t<128?e+=1:t<2048?e+=2:(t&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function Yr(r,e,t){if(t-e<1)return"";let s,i=[],o=0,c;for(;e<t;)c=r[e++],c<128?i[o++]=c:c>191&&c<224?i[o++]=(c&31)<<6|r[e++]&63:c>239&&c<365?(c=((c&7)<<18|(r[e++]&63)<<12|(r[e++]&63)<<6|r[e++]&63)-65536,i[o++]=55296+(c>>10),i[o++]=56320+(c&1023)):i[o++]=(c&15)<<12|(r[e++]&63)<<6|r[e++]&63,o>8191&&((s??(s=[])).push(String.fromCharCode.apply(String,i)),o=0);return s!=null?(o>0&&s.push(String.fromCharCode.apply(String,i.slice(0,o))),s.join("")):String.fromCharCode.apply(String,i.slice(0,o))}function Wt(r,e,t){let n=t,s,i;for(let o=0;o<r.length;++o)s=r.charCodeAt(o),s<128?e[t++]=s:s<2048?(e[t++]=s>>6|192,e[t++]=s&63|128):(s&64512)===55296&&((i=r.charCodeAt(o+1))&64512)===56320?(s=65536+((s&1023)<<10)+(i&1023),++o,e[t++]=s>>18|240,e[t++]=s>>12&63|128,e[t++]=s>>6&63|128,e[t++]=s&63|128):(e[t++]=s>>12|224,e[t++]=s>>6&63|128,e[t++]=s&63|128);return t-n}function q(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function ut(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var $t=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(e){this.buf=e,this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,q(this,10);return e}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw q(this,4);return ut(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw q(this,4);return ut(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw q(this,4);let e=Xr(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw q(this,4);let e=Kr(this.buf,this.pos);return this.pos+=8,e}bytes(){let e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw q(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return Yr(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw q(this,e);this.pos+=e}else do if(this.pos>=this.len)throw q(this);while(this.buf[this.pos++]&128);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new P(0,0),t=0;if(this.len-this.pos>4){for(;t<4;++t)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw q(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<t*7)>>>0,e}if(this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw q(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw q(this,8);let e=ut(this.buf,this.pos+=4),t=ut(this.buf,this.pos+=4);return new P(e,t)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let e=Ft(this.buf,this.pos);return this.pos+=T(e),e}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}};function Xt(r){return new $t(r instanceof Uint8Array?r:r.subarray())}function se(r,e,t){let n=Xt(r);return e.decode(n,void 0,t)}var Yt={};B(Yt,{base10:()=>xs});var xa=new Uint8Array(0);function en(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function K(r){if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")}function tn(r){return new TextEncoder().encode(r)}function rn(r){return new TextDecoder().decode(r)}function ms(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var s=0;s<r.length;s++){var i=r.charAt(s),o=i.charCodeAt(0);if(t[o]!==255)throw new TypeError(i+" is ambiguous");t[o]=s}var c=r.length,u=r.charAt(0),d=Math.log(c)/Math.log(256),y=Math.log(256)/Math.log(c);function w(l){if(l instanceof Uint8Array||(ArrayBuffer.isView(l)?l=new Uint8Array(l.buffer,l.byteOffset,l.byteLength):Array.isArray(l)&&(l=Uint8Array.from(l))),!(l instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(l.length===0)return"";for(var h=0,E=0,f=0,p=l.length;f!==p&&l[f]===0;)f++,h++;for(var m=(p-f)*y+1>>>0,b=new Uint8Array(m);f!==p;){for(var x=l[f],v=0,g=m-1;(x!==0||v<E)&&g!==-1;g--,v++)x+=256*b[g]>>>0,b[g]=x%c>>>0,x=x/c>>>0;if(x!==0)throw new Error("Non-zero carry");E=v,f++}for(var A=m-E;A!==m&&b[A]===0;)A++;for(var Q=u.repeat(h);A<m;++A)Q+=r.charAt(b[A]);return Q}function L(l){if(typeof l!="string")throw new TypeError("Expected String");if(l.length===0)return new Uint8Array;var h=0;if(l[h]!==" "){for(var E=0,f=0;l[h]===u;)E++,h++;for(var p=(l.length-h)*d+1>>>0,m=new Uint8Array(p);l[h];){var b=t[l.charCodeAt(h)];if(b===255)return;for(var x=0,v=p-1;(b!==0||x<f)&&v!==-1;v--,x++)b+=c*m[v]>>>0,m[v]=b%256>>>0,b=b/256>>>0;if(b!==0)throw new Error("Non-zero carry");f=x,h++}if(l[h]!==" "){for(var g=p-f;g!==p&&m[g]===0;)g++;for(var A=new Uint8Array(E+(p-g)),Q=E;g!==p;)A[Q++]=m[g++];return A}}}function a(l){var h=L(l);if(h)return h;throw new Error(`Non-${e} character`)}return{encode:w,decodeUnsafe:L,decode:a}}var gs=ms,ws=gs,sn=ws;var Qt=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},Kt=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return on(this,e)}},Jt=class{decoders;constructor(e){this.decoders=e}or(e){return on(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function on(r,e){return new Jt({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var Zt=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,s){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=s,this.encoder=new Qt(e,t,n),this.decoder=new Kt(e,t,s)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function me({name:r,prefix:e,encode:t,decode:n}){return new Zt(r,e,t,n)}function ee({name:r,prefix:e,alphabet:t}){let{encode:n,decode:s}=sn(t,r);return me({prefix:e,name:r,encode:n,decode:i=>K(s(i))})}function bs(r,e,t,n){let s={};for(let y=0;y<e.length;++y)s[e[y]]=y;let i=r.length;for(;r[i-1]==="=";)--i;let o=new Uint8Array(i*t/8|0),c=0,u=0,d=0;for(let y=0;y<i;++y){let w=s[r[y]];if(w===void 0)throw new SyntaxError(`Non-${n} character`);u=u<<t|w,c+=t,c>=8&&(c-=8,o[d++]=255&u>>c)}if(c>=t||255&u<<8-c)throw new SyntaxError("Unexpected end of data");return o}function ys(r,e,t){let n=e[e.length-1]==="=",s=(1<<t)-1,i="",o=0,c=0;for(let u=0;u<r.length;++u)for(c=c<<8|r[u],o+=8;o>t;)o-=t,i+=e[s&c>>o];if(o!==0&&(i+=e[s&c<<t-o]),n)for(;i.length*t&7;)i+="=";return i}function D({name:r,prefix:e,bitsPerChar:t,alphabet:n}){return me({prefix:e,name:r,encode(s){return ys(s,n,t)},decode(s){return bs(s,n,t,r)}})}var xs=ee({prefix:"9",name:"base10",alphabet:"0123456789"});var jt={};B(jt,{base16:()=>Es,base16upper:()=>vs});var Es=D({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),vs=D({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var er={};B(er,{base2:()=>Ss});var Ss=D({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var tr={};B(tr,{base256emoji:()=>_s});var an=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),ks=an.reduce((r,e,t)=>(r[t]=e,r),[]),As=an.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function Ls(r){return r.reduce((e,t)=>(e+=ks[t],e),"")}function Ds(r){let e=[];for(let t of r){let n=As[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var _s=me({prefix:"\u{1F680}",name:"base256emoji",encode:Ls,decode:Ds});var rr={};B(rr,{base32:()=>ge,base32hex:()=>Rs,base32hexpad:()=>Cs,base32hexpadupper:()=>Bs,base32hexupper:()=>Ns,base32pad:()=>Ms,base32padupper:()=>Is,base32upper:()=>Ts,base32z:()=>Us});var ge=D({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Ts=D({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Ms=D({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),Is=D({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Rs=D({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),Ns=D({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Cs=D({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Bs=D({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Us=D({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var nr={};B(nr,{base36:()=>Ps,base36upper:()=>Os});var Ps=ee({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Os=ee({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var sr={};B(sr,{base58btc:()=>O,base58flickr:()=>Fs});var O=ee({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Fs=ee({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var ir={};B(ir,{base64:()=>X,base64pad:()=>zs,base64url:()=>Hs,base64urlpad:()=>Vs});var X=D({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),zs=D({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Hs=D({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Vs=D({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var or={};B(or,{base8:()=>qs});var qs=D({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var ar={};B(ar,{identity:()=>Gs});var Gs=me({prefix:"\0",name:"identity",encode:r=>rn(r),decode:r=>tn(r)});var Ua=new TextEncoder,Pa=new TextDecoder;var lr={};B(lr,{identity:()=>ft});var Xs=un,cn=128,Qs=127,Ks=~Qs,Js=Math.pow(2,31);function un(r,e,t){e=e||[],t=t||0;for(var n=t;r>=Js;)e[t++]=r&255|cn,r/=128;for(;r&Ks;)e[t++]=r&255|cn,r>>>=7;return e[t]=r|0,un.bytes=t-n+1,e}var Zs=cr,Ys=128,ln=127;function cr(r,n){var t=0,n=n||0,s=0,i=n,o,c=r.length;do{if(i>=c)throw cr.bytes=0,new RangeError("Could not decode varint");o=r[i++],t+=s<28?(o&ln)<<s:(o&ln)*Math.pow(2,s),s+=7}while(o>=Ys);return cr.bytes=i-n,t}var js=Math.pow(2,7),ei=Math.pow(2,14),ti=Math.pow(2,21),ri=Math.pow(2,28),ni=Math.pow(2,35),si=Math.pow(2,42),ii=Math.pow(2,49),oi=Math.pow(2,56),ai=Math.pow(2,63),ci=function(r){return r<js?1:r<ei?2:r<ti?3:r<ri?4:r<ni?5:r<si?6:r<ii?7:r<oi?8:r<ai?9:10},li={encode:Xs,decode:Zs,encodingLength:ci},ui=li,Ie=ui;function Re(r,e=0){return[Ie.decode(r,e),Ie.decode.bytes]}function we(r,e,t=0){return Ie.encode(r,e,t),e}function be(r){return Ie.encodingLength(r)}function te(r,e){let t=e.byteLength,n=be(r),s=n+be(t),i=new Uint8Array(s+t);return we(r,i,0),we(t,i,n),i.set(e,s),new ye(r,t,e,i)}function Ne(r){let e=K(r),[t,n]=Re(e),[s,i]=Re(e.subarray(n)),o=e.subarray(n+i);if(o.byteLength!==s)throw new Error("Incorrect length");return new ye(t,s,o,e)}function hn(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&en(r.bytes,t.bytes)}}var ye=class{code;size;digest;bytes;constructor(e,t,n,s){this.code=e,this.size=t,this.digest=n,this.bytes=s}};var fn=0,hi="identity",dn=K;function fi(r){return te(fn,dn(r))}var ft={code:fn,name:hi,encode:dn,digest:fi};var fr={};B(fr,{sha256:()=>ie,sha512:()=>di});function hr({name:r,code:e,encode:t}){return new ur(r,e,t)}var ur=class{name;code;encode;constructor(e,t,n){this.name=e,this.code=t,this.encode=n}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?te(this.code,t):t.then(n=>te(this.code,n))}else throw Error("Unknown type, must be binary type")}};function mn(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var ie=hr({name:"sha2-256",code:18,encode:mn("SHA-256")}),di=hr({name:"sha2-512",code:19,encode:mn("SHA-512")});function gn(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return mi(t,dr(r),e??O.encoder);default:return gi(t,dr(r),e??ge.encoder)}}var wn=new WeakMap;function dr(r){let e=wn.get(r);if(e==null){let t=new Map;return wn.set(r,t),t}return e}var F=class r{code;version;multihash;bytes;"/";constructor(e,t,n,s){this.code=t,this.version=e,this.multihash=n,this.bytes=s,this["/"]=s}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==Ce)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==wi)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=te(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&hn(e.multihash,n.multihash)}toString(e){return gn(this,e)}toJSON(){return{"/":gn(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:s,multihash:i,bytes:o}=t;return new r(n,s,i,o??bn(n,s,i.bytes))}else if(t[bi]===!0){let{version:n,multihash:s,code:i}=t,o=Ne(s);return r.create(n,i,o)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==Ce)throw new Error(`Version 0 CID must use dag-pb (code: ${Ce}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let s=bn(e,t,n.bytes);return new r(e,t,n,s)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Ce,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,s=K(e.subarray(n,n+t.multihashSize));if(s.byteLength!==t.multihashSize)throw new Error("Incorrect length");let i=s.subarray(t.multihashSize-t.digestSize),o=new ye(t.multihashCode,t.digestSize,i,s);return[t.version===0?r.createV0(o):r.createV1(t.codec,o),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[w,L]=Re(e.subarray(t));return t+=L,w},s=n(),i=Ce;if(s===18?(s=0,t=0):i=n(),s!==0&&s!==1)throw new RangeError(`Invalid CID version ${s}`);let o=t,c=n(),u=n(),d=t+u,y=d-o;return{version:s,codec:i,multihashCode:c,digestSize:u,multihashSize:y,size:d}}static parse(e,t){let[n,s]=pi(e,t),i=r.decode(s);if(i.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return dr(i).set(n,e),i}};function pi(r,e){switch(r[0]){case"Q":{let t=e??O;return[O.prefix,t.decode(`${O.prefix}${r}`)]}case O.prefix:{let t=e??O;return[O.prefix,t.decode(r)]}case ge.prefix:{let t=e??ge;return[ge.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function mi(r,e,t){let{prefix:n}=t;if(n!==O.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let s=e.get(n);if(s==null){let i=t.encode(r).slice(1);return e.set(n,i),i}else return s}function gi(r,e,t){let{prefix:n}=t,s=e.get(n);if(s==null){let i=t.encode(r);return e.set(n,i),i}else return s}var Ce=112,wi=18;function bn(r,e,t){let n=be(r),s=n+be(e),i=new Uint8Array(s+t.byteLength);return we(r,i,0),we(e,i,n),i.set(t,s),i}var bi=Symbol.for("@ipld/js-cid/CID");var Ee={...ar,...er,...or,...Yt,...jt,...rr,...nr,...sr,...ir,...tr},sc={...fr,...lr};function xn(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var yn=xn("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),pr=xn("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=I(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),yi={utf8:yn,"utf-8":yn,hex:Ee.base16,latin1:pr,ascii:pr,binary:pr,...Ee},dt=yi;function Be(r,e="utf8"){let t=dt[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function mr(r){let e=r??8192,t=e>>>1,n,s=e;return function(o){if(o<1||o>t)return I(o);s+o>e&&(n=I(e),s=0);let c=n.subarray(s,s+=o);return s&7&&(s=(s|7)+1),c}}var oe=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function gr(){}var br=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},xi=mr();function Ei(r){return globalThis.Buffer!=null?I(r):xi(r)}var Pe=class{len;head;tail;states;constructor(){this.len=0,this.head=new oe(gr,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new oe(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new yr((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(pt,10,P.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=P.fromBigInt(e);return this._push(pt,t.length(),t)}uint64Number(e){return this._push(Ot,T(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){let t=P.fromBigInt(e).zzEncode();return this._push(pt,t.length(),t)}sint64Number(e){let t=P.fromNumber(e).zzEncode();return this._push(pt,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(wr,1,e?1:0)}fixed32(e){return this._push(Ue,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=P.fromBigInt(e);return this._push(Ue,4,t.lo)._push(Ue,4,t.hi)}fixed64Number(e){let t=P.fromNumber(e);return this._push(Ue,4,t.lo)._push(Ue,4,t.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push($r,4,e)}double(e){return this._push(Qr,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(wr,1,0):this.uint32(t)._push(Si,t,e)}string(e){let t=Zr(e);return t!==0?this.uint32(t)._push(Wt,t,e):this._push(wr,1,0)}fork(){return this.states=new br(this),this.head=this.tail=new oe(gr,0,0),this.len=0,this}reset(){return this.states!=null?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new oe(gr,0,0),this.len=0),this}ldelim(){let e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=t,this.len+=n),this}finish(){let e=this.head.next,t=Ei(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function wr(r,e,t){e[t]=r&255}function vi(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var yr=class extends oe{next;constructor(e,t){super(vi,e,t),this.next=void 0}};function pt(r,e,t){for(;r.hi!==0;)e[t++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)e[t++]=r.lo&127|128,r.lo=r.lo>>>7;e[t++]=r.lo}function Ue(r,e,t){e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24}function Si(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(Pe.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(ki,e,r),this},Pe.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(Ai,e,r),this});function ki(r,e,t){e.set(r,t)}function Ai(r,e,t){r.length<40?Wt(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(Be(r),t)}function xr(){return new Pe}function ae(r,e){let t=xr();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var ve;(function(r){r[r.VARINT=0]="VARINT",r[r.BIT64=1]="BIT64",r[r.LENGTH_DELIMITED=2]="LENGTH_DELIMITED",r[r.START_GROUP=3]="START_GROUP",r[r.END_GROUP=4]="END_GROUP",r[r.BIT32=5]="BIT32"})(ve||(ve={}));function mt(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function gt(r){function e(s){if(r[s.toString()]==null)throw new Error("Invalid enum value");return r[s]}let t=function(i,o){let c=e(i);o.int32(c)},n=function(i){let o=i.int32();return e(o)};return mt("enum",ve.VARINT,t,n)}function ce(r,e){return mt("message",ve.LENGTH_DELIMITED,r,e)}var Se=class extends Error{code;constructor(e,t,n){super(e,n),this.code=t}};var _;(function(r){r.WantBlock="WantBlock",r.WantHave="WantHave"})(_||(_={}));var Er;(function(r){r[r.WantBlock=0]="WantBlock",r[r.WantHave=1]="WantHave"})(Er||(Er={}));(function(r){r.codec=()=>gt(Er)})(_||(_={}));var ke;(function(r){let e;r.codec=()=>(e==null&&(e=ce((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.cid!=null&&t.cid.byteLength>0&&(n.uint32(10),n.bytes(t.cid)),t.priority!=null&&t.priority!==0&&(n.uint32(16),n.int32(t.priority)),t.cancel!=null&&(n.uint32(24),n.bool(t.cancel)),t.wantType!=null&&(n.uint32(32),_.codec().encode(t.wantType,n)),t.sendDontHave!=null&&(n.uint32(40),n.bool(t.sendDontHave)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={cid:M(0),priority:0},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let c=t.uint32();switch(c>>>3){case 1:{i.cid=t.bytes();break}case 2:{i.priority=t.int32();break}case 3:{i.cancel=t.bool();break}case 4:{i.wantType=_.codec().decode(t);break}case 5:{i.sendDontHave=t.bool();break}default:{t.skipType(c&7);break}}}return i})),e),r.encode=t=>ae(t,r.codec()),r.decode=(t,n)=>se(t,r.codec(),n)})(ke||(ke={}));var wt;(function(r){let e;r.codec=()=>(e==null&&(e=ce((t,n,s={})=>{if(s.lengthDelimited!==!1&&n.fork(),t.entries!=null)for(let i of t.entries)n.uint32(10),ke.codec().encode(i,n);t.full!=null&&(n.uint32(16),n.bool(t.full)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={entries:[]},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let c=t.uint32();switch(c>>>3){case 1:{if(s.limits?.entries!=null&&i.entries.length===s.limits.entries)throw new Se('decode error - map field "entries" had too many elements',"ERR_MAX_LENGTH");i.entries.push(ke.codec().decode(t,t.uint32(),{limits:s.limits?.entries$}));break}case 2:{i.full=t.bool();break}default:{t.skipType(c&7);break}}}return i})),e),r.encode=t=>ae(t,r.codec()),r.decode=(t,n)=>se(t,r.codec(),n)})(wt||(wt={}));var Ae;(function(r){let e;r.codec=()=>(e==null&&(e=ce((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.prefix!=null&&t.prefix.byteLength>0&&(n.uint32(10),n.bytes(t.prefix)),t.data!=null&&t.data.byteLength>0&&(n.uint32(18),n.bytes(t.data)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={prefix:M(0),data:M(0)},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let c=t.uint32();switch(c>>>3){case 1:{i.prefix=t.bytes();break}case 2:{i.data=t.bytes();break}default:{t.skipType(c&7);break}}}return i})),e),r.encode=t=>ae(t,r.codec()),r.decode=(t,n)=>se(t,r.codec(),n)})(Ae||(Ae={}));var z;(function(r){r.HaveBlock="HaveBlock",r.DontHaveBlock="DontHaveBlock"})(z||(z={}));var bt;(function(r){r[r.HaveBlock=0]="HaveBlock",r[r.DontHaveBlock=1]="DontHaveBlock"})(bt||(bt={}));(function(r){r.codec=()=>gt(bt)})(z||(z={}));var Le;(function(r){let e;r.codec=()=>(e==null&&(e=ce((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.cid!=null&&t.cid.byteLength>0&&(n.uint32(10),n.bytes(t.cid)),t.type!=null&&bt[t.type]!==0&&(n.uint32(16),z.codec().encode(t.type,n)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={cid:M(0),type:z.HaveBlock},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let c=t.uint32();switch(c>>>3){case 1:{i.cid=t.bytes();break}case 2:{i.type=z.codec().decode(t);break}default:{t.skipType(c&7);break}}}return i})),e),r.encode=t=>ae(t,r.codec()),r.decode=(t,n)=>se(t,r.codec(),n)})(Le||(Le={}));var le;(function(r){let e;r.codec=()=>(e==null&&(e=ce((t,n,s={})=>{if(s.lengthDelimited!==!1&&n.fork(),t.wantlist!=null&&(n.uint32(10),wt.codec().encode(t.wantlist,n)),t.blocks!=null)for(let i of t.blocks)n.uint32(26),Ae.codec().encode(i,n);if(t.blockPresences!=null)for(let i of t.blockPresences)n.uint32(34),Le.codec().encode(i,n);t.pendingBytes!=null&&t.pendingBytes!==0&&(n.uint32(40),n.int32(t.pendingBytes)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={blocks:[],blockPresences:[],pendingBytes:0},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let c=t.uint32();switch(c>>>3){case 1:{i.wantlist=wt.codec().decode(t,t.uint32(),{limits:s.limits?.wantlist});break}case 3:{if(s.limits?.blocks!=null&&i.blocks.length===s.limits.blocks)throw new Se('decode error - map field "blocks" had too many elements',"ERR_MAX_LENGTH");i.blocks.push(Ae.codec().decode(t,t.uint32(),{limits:s.limits?.blocks$}));break}case 4:{if(s.limits?.blockPresences!=null&&i.blockPresences.length===s.limits.blockPresences)throw new Se('decode error - map field "blockPresences" had too many elements',"ERR_MAX_LENGTH");i.blockPresences.push(Le.codec().decode(t,t.uint32(),{limits:s.limits?.blockPresences$}));break}case 5:{i.pendingBytes=t.int32();break}default:{t.skipType(c&7);break}}}return i})),e),r.encode=t=>ae(t,r.codec()),r.decode=(t,n)=>se(t,r.codec(),n)})(le||(le={}));function En(r,e){let t=new Map((r.wantlist?.entries??[]).map(o=>[X.encode(o.cid),o]));for(let o of e.wantlist?.entries??[]){let c=X.encode(o.cid),u=t.get(c);u!=null&&(u.priority>o.priority&&(o.priority=u.priority),o.cancel=o.cancel??u.cancel,o.wantType=o.wantType??u.wantType,o.sendDontHave=o.sendDontHave??u.sendDontHave),t.set(c,o)}let n=new Map(r.blockPresences.map(o=>[X.encode(o.cid),o]));for(let o of e.blockPresences){let c=X.encode(o.cid);n.set(c,o)}let s=new Map(r.blocks.map(o=>[X.encode(o.data),o]));for(let o of e.blocks){let c=X.encode(o.data);s.set(c,o)}return{wantlist:{full:r.wantlist?.full??e.wantlist?.full??!1,entries:[...t.values()]},blockPresences:[...n.values()],blocks:[...s.values()],pendingBytes:r.pendingBytes+e.pendingBytes}}var Li=4193648,Di=Li+16;async function*vn(r,e){let t=r.wantlist?.entries??[],n=r.blockPresences,s=r.blocks,i=0,o=0,c=0,u=!1;for(;;){let d={wantlist:{full:r.wantlist?.full??!1,entries:[]},blockPresences:[],blocks:[],pendingBytes:0},y=le.encode(d).byteLength,{added:w,hasMore:L,newSize:a}=vr(s,d.blocks,c,e,y,_i);c+=w,y=a;let l=L;({added:w,hasMore:L,newSize:a}=vr(n,d.blockPresences,o,e,y,Ti)),o+=w,y=a;let h=L;if({added:w,hasMore:L,newSize:a}=vr(t,d.wantlist.entries,i,e,y,Mi),i+=w,y=a,u=!l&&!h&&!L,u||(d.wantlist.full=!1),yield le.encode(d),u)break}}function vr(r,e,t,n,s,i){let o=0,c=!1;for(let u=t;u<r.length;u++){let d=r[u],y=i(d);if(y>Di)throw new C("Cannot send block as after encoding it is over the max message size","ERR_BLOCK_TOO_LARGE");let w=s+y;if(w>n){c=!0;break}e.push(d),o++,s=w}return{hasMore:c,added:o,newSize:s}}function _i(r){return Sr(3,Ae.encode(r))}function Ti(r){return Sr(4,Le.encode(r))}function Mi(r){return Sr(1,ke.encode(r))}function Sr(r,e){let t=T(r),n=T(e.byteLength);return t+n+e.byteLength}var yt=class extends G{log;libp2p;routing;protocols;running;maxInboundStreams;maxOutboundStreams;messageReceiveTimeout;registrarIds;metrics;sendQueue;runOnTransientConnections;maxOutgoingMessageSize;maxIncomingMessageSize;constructor(e,t={}){super(),this.log=e.logger.forComponent("helia:bitswap:network"),this.libp2p=e.libp2p,this.routing=e.routing,this.protocols=t.protocols??[Me],this.registrarIds=[],this.running=!1,this._onStream=this._onStream.bind(this),this.maxInboundStreams=t.maxInboundStreams??1024,this.maxOutboundStreams=t.maxOutboundStreams??1024,this.messageReceiveTimeout=t.messageReceiveTimeout??5e3,this.runOnTransientConnections=t.runOnTransientConnections??!1,this.maxIncomingMessageSize=t.maxIncomingMessageSize??4194304,this.maxOutgoingMessageSize=t.maxOutgoingMessageSize??t.maxIncomingMessageSize??4194304,this.metrics={blocksSent:e.libp2p.metrics?.registerCounter("helia_bitswap_sent_blocks_total"),dataSent:e.libp2p.metrics?.registerCounter("helia_bitswap_sent_data_bytes_total")},this.sendQueue=new rt({concurrency:t.messageSendConcurrency??50,metrics:e.libp2p.metrics,metricName:"helia_bitswap_message_send_queue"}),this.sendQueue.addEventListener("error",n=>{this.log.error("error sending wantlist to peer",n.detail)})}async start(){if(this.running)return;this.running=!0,await this.libp2p.handle(this.protocols,this._onStream,{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:this.runOnTransientConnections});let e={onConnect:t=>{this.safeDispatchEvent("peer:connected",{detail:t})},onDisconnect:t=>{this.safeDispatchEvent("peer:disconnected",{detail:t})}};this.registrarIds=[];for(let t of this.protocols)this.registrarIds.push(await this.libp2p.register(t,e));this.libp2p.getConnections().forEach(t=>{this.safeDispatchEvent("peer:connected",{detail:t.remotePeer})})}async stop(){if(this.running=!1,await this.libp2p.unhandle(this.protocols),this.registrarIds!=null){for(let e of this.registrarIds)this.libp2p.unregister(e);this.registrarIds=[]}}_onStream(e){if(!this.running)return;let{stream:t,connection:n}=e;Promise.resolve().then(async()=>{this.log("incoming new bitswap %s stream from %p",t.protocol,n.remotePeer);let s=()=>{t.status==="open"?t.abort(new C("Incoming Bitswap stream timed out","ERR_TIMEOUT")):this.log("stream aborted with status",t.status)},i=AbortSignal.timeout(this.messageReceiveTimeout);U(1/0,i),i.addEventListener("abort",s),await t.closeWrite(),await pe(t,o=>_e(o,{maxDataLength:this.maxIncomingMessageSize}),async o=>{for await(let c of o)try{let u=le.decode(c);this.log("incoming new bitswap %s message from %p on stream",t.protocol,n.remotePeer,t.id),this.safeDispatchEvent("bitswap:message",{detail:{peer:n.remotePeer,message:u}}),i.removeEventListener("abort",s),i=AbortSignal.timeout(this.messageReceiveTimeout),U(1/0,i),i.addEventListener("abort",s)}catch(u){this.log.error("error reading incoming bitswap message from %p on stream",n.remotePeer,t.id,u),t.abort(u);break}})}).catch(s=>{this.log.error("error handling incoming stream from %p",n.remotePeer,s),t.abort(s)})}async*findProviders(e,t){t?.onProgress?.(new $("bitswap:network:find-providers",e));for await(let n of this.routing.findProviders(e,t))await this.libp2p.isDialable(n.multiaddrs,{runOnTransientConnection:this.runOnTransientConnections})&&(yield n)}async findAndConnect(e,t){await Nt(Te(Wr(this.findProviders(e,t),t?.maxProviders??3),async n=>this.connectTo(n.id,t))).catch(n=>{this.log.error(n)})}async sendMessage(e,t,n){if(!this.running)throw new Error("network isn't running");let s={wantlist:{full:t.wantlist?.full??!1,entries:t.wantlist?.entries??[]},blocks:t.blocks??[],blockPresences:t.blockPresences??[],pendingBytes:t.pendingBytes??0},i=this.sendQueue.queue.find(o=>e.equals(o.options.peerId)&&o.status==="queued");if(i!=null){i.options.message=En(i.options.message,s),await i.join({signal:n?.signal});return}await this.sendQueue.add(async o=>{let c=o?.message;if(c==null)throw new C("No message to send","ERR_NO_MESSAGE");this.log("sendMessage to %p",e),o?.onProgress?.(new $("bitswap:network:send-wantlist",e));let u=await this.libp2p.dialProtocol(e,Me,o);await u.closeRead();try{await pe(vn(c,this.maxOutgoingMessageSize),d=>ct(d),u),await u.close(o)}catch(d){o?.onProgress?.(new $("bitswap:network:send-wantlist:error",{peer:e,error:d})),this.log.error("error sending message to %p",e,d),u.abort(d)}this._updateSentStats(c.blocks)},{peerId:e,signal:n?.signal,message:s})}async connectTo(e,t){if(!this.running)throw new C("Network isn't running","ERR_NOT_STARTED");t?.onProgress?.(new $("bitswap:network:dial",e));let[n]=await Promise.all([this.libp2p.dial(e,t),V(this.libp2p,"peer:identify",t?.signal,{filter:s=>{if(!s.detail.peerId.equals(e))return!1;if(s.detail.protocols.includes(Me))return!0;throw new C(`${e} did not support ${Me}`,"ERR_BITSWAP_UNSUPPORTED_BY_PEER")}})]);return n}_updateSentStats(e=[]){let t=0;for(let n of e.values())t+=n.data.byteLength;this.metrics.dataSent?.increment(t),this.metrics.blocksSent?.increment(e.length)}};var Fi=Symbol.for("nodejs.util.inspect.custom"),Sn=Object.values(Ee).map(r=>r.decoder).reduce((r,e)=>r.or(e),Ee.identity.decoder),kn=114,An=36,Ln=37,Oe=class{type;multihash;privateKey;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,this.privateKey=e.privateKey,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[Nr]=!0;toString(){return this.string==null&&(this.string=O.encode(this.multihash.bytes).slice(1)),this.string}toCID(){return F.createV1(kn,this.multihash)}toBytes(){return this.multihash.bytes}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return W(this.multihash.bytes,e);if(typeof e=="string")return Ve(e).equals(this);if(e?.multihash?.bytes!=null)return W(this.multihash.bytes,e.multihash.bytes);throw new Error("not valid Id")}[Fi](){return`PeerId(${this.toString()})`}},Fe=class extends Oe{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},ze=class extends Oe{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.multihash.digest}},He=class extends Oe{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.multihash.digest}};function Ve(r,e){if(e=e??Sn,r.charAt(0)==="1"||r.charAt(0)==="Q"){let t=Ne(O.decode(`z${r}`));return r.startsWith("12D")?new ze({multihash:t}):r.startsWith("16U")?new He({multihash:t}):new Fe({multihash:t})}return zi(Sn.decode(r))}function zi(r){try{let e=Ne(r);if(e.code===ft.code){if(e.digest.length===An)return new ze({multihash:e});if(e.digest.length===Ln)return new He({multihash:e})}if(e.code===ie.code)return new Fe({multihash:e})}catch{return Hi(F.decode(r))}throw new Error("Supplied PeerID CID is invalid")}function Hi(r){if(r==null||r.multihash==null||r.version==null||r.version===1&&r.code!==kn)throw new Error("Supplied PeerID CID is invalid");let e=r.multihash;if(e.code===ie.code)return new Fe({multihash:r.multihash});if(e.code===ft.code){if(e.digest.length===An)return new ze({multihash:r.multihash});if(e.digest.length===Ln)return new He({multihash:r.multihash})}throw new Error("Supplied PeerID CID is invalid")}function kr(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let n=r.next(),s=n.value;return n.done===!0||s==null?{done:!0,value:void 0}:{done:!1,value:e(s)}}};return t}var qe=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),n)}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return kr(this.map.entries(),e=>[Ve(e[0]),e[1]])}forEach(e){this.map.forEach((t,n)=>{e(t,Ve(n),this)})}get(e){return this.map.get(e.toString())}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),t)}keys(){return kr(this.map.keys(),e=>Ve(e))}values(){return this.map.values()}get size(){return this.map.size}};var Ar=class extends qe{metric;constructor(e){super();let{name:t,metrics:n}=e;this.metric=n.registerMetric(t),this.updateComponentMetric()}set(e,t){return super.set(e,t),this.updateComponentMetric(),this}delete(e){let t=super.delete(e);return this.updateComponentMetric(),t}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function Ge(r){let{name:e,metrics:t}=r,n;return t!=null?n=new Ar({name:e,metrics:t}):n=new qe,n}function J(r,e="utf8"){let t=dt[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}function Vi(r){let e=new Uint8Array(r.reduce((n,s)=>n+T(s),0)),t=0;for(let n of r)e=nt(n,e,t),t+=T(n);return e}var Dn=Vi;function Lr(r){return Dn([r.version,r.code,r.multihash.code,r.multihash.digest.byteLength])}var xt=class{peerId;blockstore;network;wants;exchangeCount;bytesSent;bytesReceived;lastExchange;maxSizeReplaceHasWithBlock;log;constructor(e,t){this.peerId=e.peerId,this.blockstore=e.blockstore,this.network=e.network,this.wants=new Map,this.log=e.logger.forComponent(`helia:bitswap:ledger:${e.peerId}`),this.exchangeCount=0,this.bytesSent=0,this.bytesReceived=0,this.maxSizeReplaceHasWithBlock=t.maxSizeReplaceHasWithBlock??1024}sentBytes(e){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.bytesSent+=e}receivedBytes(e){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.bytesReceived+=e}debtRatio(){return this.bytesSent/(this.bytesReceived+1)}async sendBlocksToPeer(e){let t={blockPresences:[],blocks:[]},n=new Set;for(let[s,i]of this.wants.entries()){if(!await this.blockstore.has(i.cid,e)){if(this.log("do not have block for %c",i.cid),!i.sendDontHave||i.sentDontHave===!0)continue;i.sentDontHave=!0,t.blockPresences.push({cid:i.cid.bytes,type:z.DontHaveBlock});continue}let c=await this.blockstore.get(i.cid,e);i.wantType===_.WantHave?c.byteLength<this.maxSizeReplaceHasWithBlock?(this.log("sending have and block for %c",i.cid),n.add(s),t.blocks.push({data:c,prefix:Lr(i.cid)})):(this.log("sending have for %c",i.cid),t.blockPresences.push({cid:i.cid.bytes,type:z.HaveBlock})):(this.log("sending block for %c",i.cid),n.add(s),t.blocks.push({data:c,prefix:Lr(i.cid)}))}if(t.blocks.length>0||t.blockPresences.length>0){this.log("sending message"),await this.network.sendMessage(this.peerId,t,e),this.log("sent message"),this.sentBytes(t.blocks.reduce((s,i)=>s+i.data.byteLength,0));for(let s of n)this.wants.delete(s)}}};var Et=class{blockstore;network;ledgerMap;maxSizeReplaceHasWithBlock;log;logger;constructor(e,t={}){this.blockstore=e.blockstore,this.network=e.network,this.maxSizeReplaceHasWithBlock=t.maxSizeReplaceHasWithBlock,this.log=e.logger.forComponent("helia:bitswap:peer-want-lists"),this.logger=e.logger,this.ledgerMap=Ge({name:"helia_bitswap_ledger_map",metrics:e.libp2p.metrics}),this.network.addEventListener("bitswap:message",n=>{this.receiveMessage(n.detail.peer,n.detail.message).catch(s=>{this.log.error("error receiving bitswap message from %p",n.detail.peer,s)})}),this.network.addEventListener("peer:disconnected",n=>{this.peerDisconnected(n.detail)})}ledgerForPeer(e){let t=this.ledgerMap.get(e);if(t!=null)return{peer:t.peerId,value:t.debtRatio(),sent:t.bytesSent,received:t.bytesReceived,exchanged:t.exchangeCount}}wantListForPeer(e){let t=this.ledgerMap.get(e);if(t!=null)return[...t.wants.values()]}peers(){return Array.from(this.ledgerMap.values()).map(e=>e.peerId)}async receiveMessage(e,t){let n=this.ledgerMap.get(e);if(n==null&&(n=new xt({peerId:e,blockstore:this.blockstore,network:this.network,logger:this.logger},{maxSizeReplaceHasWithBlock:this.maxSizeReplaceHasWithBlock}),this.ledgerMap.set(e,n)),n.receivedBytes(t.blocks?.reduce((s,i)=>s+i.data.byteLength,0)??0),t.wantlist!=null){t.wantlist.full===!0&&n.wants.clear();for(let s of t.wantlist.entries){let i=F.decode(s.cid),o=J(i.multihash.bytes,"base64");s.cancel===!0?(this.log("peer %p cancelled want of block for %c",e,i),n.wants.delete(o)):(s.wantType===_.WantHave?this.log("peer %p wanted block presence for %c",e,i):this.log("peer %p wanted block for %c",e,i),n.wants.set(o,{cid:i,priority:s.priority,wantType:s.wantType??_.WantBlock,sendDontHave:s.sendDontHave??!1}))}}this.log("send blocks to peer"),await n.sendBlocksToPeer()}async receivedBlock(e,t){let n=J(e.multihash.bytes,"base64"),s=[];for(let i of this.ledgerMap.values())i.wants.has(n)&&s.push(i);await Promise.all(s.map(async i=>i.sendBlocksToPeer(t)))}peerDisconnected(e){this.ledgerMap.delete(e)}};var Wi=Tt(Tn(),1);var De;(function(r){r[r.A=1]="A",r[r.CNAME=5]="CNAME",r[r.TXT=16]="TXT",r[r.AAAA=28]="AAAA"})(De||(De={}));function $i(r){return r[Symbol.asyncIterator]!=null}function Xi(r,e){if($i(r))return async function*(){for await(let c of r)await e(c)&&(yield c)}();let t=lt(r),{value:n,done:s}=t.next();if(s===!0)return function*(){}();let i=e(n);if(typeof i.then=="function")return async function*(){await i&&(yield n);for await(let c of t)await e(c)&&(yield c)}();let o=e;return function*(){i===!0&&(yield n);for(let c of t)o(c)&&(yield c)}()}var Dr=Xi;var vt=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;var fu=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;var du={}.toString;function Mn(r=32){if(vt&&typeof vt.getRandomValues=="function")return vt.getRandomValues(new Uint8Array(r));throw new Error("crypto.getRandomValues must be defined")}function St(r){if(isNaN(r)||r<=0)throw new C("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return Mn(r)}var _r=Tt(Nn(),1);var Qi=Math.LN2*Math.LN2,At=class r{static create(e,t=.005){let n=Ki(e,t);return new r(n)}seeds;bits;buffer;constructor(e={}){e.seeds!=null?this.seeds=e.seeds:this.seeds=Ji(e.hashes??8),this.bits=e.bits??1024,this.buffer=M(Math.ceil(this.bits/8))}add(e){typeof e=="string"&&(e=Be(e));for(let t=0;t<this.seeds.length;t++){let s=_r.default.x86.hash32(e,this.seeds[t])%this.bits;this.setbit(s)}}has(e){typeof e=="string"&&(e=Be(e));for(let t=0;t<this.seeds.length;t++){let s=_r.default.x86.hash32(e,this.seeds[t])%this.bits;if(!this.getbit(s))return!1}return!0}clear(){this.buffer.fill(0)}setbit(e){let t=0,n=e;for(;n>7;)t++,n-=8;let s=this.buffer[t];s|=1<<n,this.buffer[t]=s}getbit(e){let t=0,n=e;for(;n>7;)t++,n-=8;return(this.buffer[t]&1<<n)!==0}};function Ki(r,e=.005){let t=Math.round(-1*r*Math.log(e)/Qi),n=Math.round(t/r*Math.LN2);return{bits:t,hashes:n}}function Ji(r){let e,t,n=[];for(let s=0;s<r;s++)for(e=new Y(St(4)),n[s]=e.getUint32(0,!0),t=0;t<s;t++)if(n[s]===n[t]){s--;break}return n}var $e=class extends G{intialPeerSearchComplete;requests;name;log;logger;minProviders;maxProviders;providers;evictionFilter;constructor(e,t){super(),U(1/0,this),this.name=t.name,this.logger=e.logger,this.log=e.logger.forComponent(this.name),this.requests=new Map,this.minProviders=t.minProviders??1,this.maxProviders=t.maxProviders??5,this.providers=[],this.evictionFilter=At.create(this.maxProviders)}async retrieve(e,t={}){let n=X.encode(e.multihash.bytes),s=this.requests.get(n);if(s!=null)return this.log("join existing request for %c",e),s;let i=H();if(this.requests.set(n,i.promise),this.providers.length===0){let d=!1;this.intialPeerSearchComplete==null&&(d=!0,this.log=this.logger.forComponent(`${this.name}:${e}`),this.intialPeerSearchComplete=this.findProviders(e,this.minProviders,t)),await this.intialPeerSearchComplete,d&&this.log("found initial session peers for %c",e)}let o=!1,c=new fe({concurrency:this.maxProviders});c.addEventListener("error",()=>{}),c.addEventListener("failure",d=>{this.log.error("error querying provider %o, evicting from session",d.detail.job.options.provider,d.detail.error),this.evict(d.detail.job.options.provider)}),c.addEventListener("success",d=>{o=!0,i.resolve(d.detail.result)}),c.addEventListener("idle",()=>{o||t.signal?.aborted===!0||Promise.resolve().then(async()=>{this.log("no session peers had block for for %c, finding new providers",e);for(let d=0;d<this.minProviders&&this.providers.length!==0;d++){let y=this.providers[Math.floor(Math.random()*this.providers.length)];this.evict(y)}await this.findProviders(e,this.minProviders,t),this.log("found new providers re-retrieving %c",e),this.requests.delete(n),i.resolve(await this.retrieve(e,t))}).catch(d=>{this.log.error("could not find new providers for %c",e,d),i.reject(d)})});let u=d=>{c.add(async()=>this.queryProvider(e,d.detail,t),{provider:d.detail}).catch(y=>{t.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c",e,y)})};this.addEventListener("provider",u),Promise.all([...this.providers].map(async d=>c.add(async()=>this.queryProvider(e,d,t),{provider:d}))).catch(d=>{t.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c",e,d)});try{return await i.promise}finally{this.removeEventListener("provider",u),c.clear(),this.requests.delete(n)}}evict(e){this.evictionFilter.add(this.toEvictionKey(e));let t=this.providers.findIndex(n=>this.equals(n,e));t!==-1&&this.providers.splice(t,1)}isEvicted(e){return this.providers.some(t=>this.equals(t,e))}hasProvider(e){return!!(this.providers.find(t=>this.equals(t,e))!=null||this.isEvicted(e))}async findProviders(e,t,n){let s=H(),i=0;return Promise.resolve().then(async()=>{this.log("finding %d-%d new provider(s) for %c",t,this.maxProviders,e);for await(let o of this.findNewProviders(e,n)){if(i===this.maxProviders||n.signal?.aborted===!0)break;if(!this.hasProvider(o)&&(this.log("found %d/%d new providers",i,this.maxProviders),this.providers.push(o),this.safeDispatchEvent("provider",{detail:o}),i++,i===t&&(this.log("session is ready"),s.resolve()),this.providers.length===this.maxProviders)){this.log("found max session peers",i);break}}if(this.log("found %d/%d new session peers",i,this.maxProviders),i<t)throw new C(`Found ${i} of ${t} ${this.name} providers for ${e}`,"ERR_INSUFFICIENT_PROVIDERS_FOUND")}).catch(o=>{this.log.error("error searching routing for potential session peers for %c",e,o.errors??o),s.reject(o)}),s.promise}};var Tr=class extends $e{wantList;network;constructor(e,t){super(e,{...t,name:"helia:bitswap:session"}),this.wantList=e.wantList,this.network=e.network}async queryProvider(e,t,n){this.log("sending WANT-BLOCK for %c to %p",e,t);let s=await this.wantList.wantSessionBlock(e,t,n);if(this.log("%p %s %c",t,s.has?"has":"does not have",e),s.has&&s.block!=null)return s.block;throw new Error("Provider did not have block")}async*findNewProviders(e,t={}){for await(let n of this.network.findProviders(e,t))yield n.id}toEvictionKey(e){return e.toBytes()}equals(e,t){return e.equals(t)}};function Cn(r,e){return new Tr(r,e)}var Lt=class{blocksReceived;duplicateBlocksReceived;dataReceived;duplicateDataReceived;constructor(e){this.blocksReceived=e.libp2p.metrics?.registerMetricGroup("helia_bitswap_received_blocks"),this.duplicateBlocksReceived=e.libp2p.metrics?.registerMetricGroup("helia_bitswap_duplicate_received_blocks"),this.dataReceived=e.libp2p.metrics?.registerMetricGroup("helia_bitswap_data_received_bytes"),this.duplicateDataReceived=e.libp2p.metrics?.registerMetricGroup("helia_bitswap_duplicate_data_received_bytes")}updateBlocksReceived(e=1,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.blocksReceived?.increment(n)}updateDuplicateBlocksReceived(e=1,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.duplicateBlocksReceived?.increment(n)}updateDataReceived(e,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.dataReceived?.increment(n)}updateDuplicateDataReceived(e,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.duplicateDataReceived?.increment(n)}};var Mr=class extends Map{metric;constructor(e){super();let{name:t,metrics:n}=e;this.metric=n.registerMetric(t),this.updateComponentMetric()}set(e,t){return super.set(e,t),this.updateComponentMetric(),this}delete(e){let t=super.delete(e);return this.updateComponentMetric(),t}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function Bn(r){let{name:e,metrics:t}=r,n;return t!=null?n=new Mr({name:e,metrics:t}):n=new Map,n}function Zi(r){return r[Symbol.asyncIterator]!=null}function Yi(r){if(Zi(r))return(async()=>{let t=[];for await(let n of r)t.push(n);return t})();let e=[];for(let t of r)e.push(t);return e}var Ir=Yi;function ji(r){if(!(r instanceof Uint8Array))throw new Error("arg needs to be a Uint8Array");let e=[];for(;r.length>0;){let t=st(r);e.push(t),r=r.slice(T(t))}return e}var Un=ji;var Dt=class extends G{peers;wants;network;log;sendMessagesDelay;sendMessagesTimeout;hashLoader;sendingMessages;constructor(e,t={}){super(),U(1/0,this),this.peers=Ge({name:"helia_bitswap_peers",metrics:e.libp2p.metrics}),this.wants=Bn({name:"helia_bitswap_wantlist",metrics:e.libp2p.metrics}),this.network=e.network,this.sendMessagesDelay=t.sendMessagesDelay??10,this.log=e.logger.forComponent("helia:bitswap:wantlist"),this.hashLoader=t.hashLoader,this.network.addEventListener("bitswap:message",n=>{this.receiveMessage(n.detail.peer,n.detail.message).catch(s=>{this.log.error("error receiving bitswap message from %p",n.detail.peer,s)})}),this.network.addEventListener("peer:connected",n=>{this.peerConnected(n.detail).catch(s=>{this.log.error("error processing newly connected bitswap peer %p",n.detail,s)})}),this.network.addEventListener("peer:disconnected",n=>{this.peerDisconnected(n.detail)})}async addEntry(e,t){let n=J(e.multihash.bytes,"base64"),s=this.wants.get(n);s==null&&(s={cid:e,priority:t.priority??1,wantType:t.wantType??_.WantBlock,cancel:!1,sendDontHave:!0},this.wants.set(n,s)),s.wantType===_.WantHave&&t.wantType===_.WantBlock&&(s.wantType=_.WantBlock),await this.sendMessagesDebounced();try{return t.wantType===_.WantBlock?(await V(this,"block",t?.signal,{filter:c=>W(e.multihash.digest,c.detail.cid.multihash.digest),errorMessage:"Want was aborted"})).detail:(await V(this,"presence",t?.signal,{filter:o=>W(e.multihash.digest,o.detail.cid.multihash.digest),errorMessage:"Want was aborted"})).detail}finally{t.signal?.aborted===!0&&(this.log("want for %c was aborted, cancelling want",e),s.cancel=!0,await this.sendMessagesDebounced())}}async sendMessagesDebounced(){await this.sendingMessages?.promise,clearTimeout(this.sendMessagesTimeout),this.sendMessagesTimeout=setTimeout(()=>{this.sendMessages().catch(e=>{this.log("error sending messages to peers",e)})},this.sendMessagesDelay)}async sendMessages(){this.sendingMessages=H(),await Promise.all([...this.peers.entries()].map(async([e,t])=>{let n=new Set,s={wantlist:{full:!1,entries:pe(this.wants.entries(),i=>Dr(i,([o,c])=>{let u=t.has(o);return c.cancel?u:!u}),i=>Te(i,([o,c])=>(n.add(o),{cid:c.cid.bytes,priority:c.priority,wantType:c.wantType,cancel:c.cancel,sendDontHave:c.sendDontHave})),i=>Ir(i))}};if(s.wantlist?.entries.length!==0)try{await this.network.sendMessage(e,s);for(let i of n)t.add(i)}catch(i){this.log.error("error sending full wantlist to new peer",i)}})).catch(e=>{this.log.error("error sending messages",e)});for(let[e,t]of this.wants)if(t.cancel){this.wants.delete(e);for(let n of this.peers.values())n.delete(e)}this.sendingMessages.resolve()}has(e){let t=J(e.multihash.bytes,"base64");return this.wants.has(t)}async wantSessionPresence(e,t,n={}){return await this.network.sendMessage(t,{wantlist:{full:!1,entries:[{cid:e.bytes,sendDontHave:!0,wantType:_.WantHave,priority:1}]}}),(await V(this,"presence",n.signal,{filter:i=>t.equals(i.detail.sender)&&W(e.multihash.digest,i.detail.cid.multihash.digest)})).detail}async wantBlock(e,t={}){return this.addEntry(e,{...t,wantType:_.WantBlock})}async wantSessionBlock(e,t,n={}){return await this.network.sendMessage(t,{wantlist:{full:!1,entries:[{cid:e.bytes,sendDontHave:!0,wantType:_.WantBlock,priority:1}]}}),(await V(this,"presence",n.signal,{filter:i=>t.equals(i.detail.sender)&&W(e.multihash.digest,i.detail.cid.multihash.digest)})).detail}async receivedBlock(e,t){let n=J(e.multihash.bytes,"base64"),s=this.wants.get(n);s!=null&&(s.cancel=!0,await this.sendMessagesDebounced())}async receiveMessage(e,t){this.log("received message %d from %p with %d blocks",e,t.blocks.length);let n=!1;for(let s of t.blocks){if(s.prefix==null||s.data==null)continue;let i=Un(s.prefix),o=i[0],c=i[1],u=i[2],d=u===ie.code?ie:await this.hashLoader?.getHasher(u);if(d==null){this.log.error("unknown hash algorithm",u);continue}let y=d.digest(s.data);y.then!=null&&(y=await y);let w=F.create(o===0?0:1,c,y);this.log("received block from %p for %c",e,w),this.safeDispatchEvent("block",{detail:{sender:e,cid:w,block:s.data}}),this.safeDispatchEvent("presence",{detail:{sender:e,cid:w,has:!0,block:s.data}});let L=J(w.multihash.bytes,"base64"),a=this.wants.get(L);a!=null&&(a.cancel=!0,n=!0)}for(let{cid:s,type:i}of t.blockPresences){let o=F.decode(s);this.log("received %s from %p for %c",i,e,o),this.safeDispatchEvent("presence",{detail:{sender:e,cid:o,has:i===z.HaveBlock}})}n&&await this.sendMessagesDebounced()}async peerConnected(e){let t=new Set,n={wantlist:{full:!0,entries:pe(this.wants.entries(),s=>Dr(s,([i,o])=>!o.cancel),s=>Te(s,([i,o])=>(t.add(i),{cid:o.cid.bytes,priority:1,wantType:_.WantBlock,cancel:!1,sendDontHave:!1})),s=>Ir(s))}};if(n.wantlist?.entries.length===0){this.peers.set(e,t);return}try{await this.network.sendMessage(e,n),this.peers.set(e,t)}catch(s){this.log.error("error sending full wantlist to new peer %p",e,s)}}peerDisconnected(e){this.peers.delete(e)}start(){}stop(){this.peers.clear(),clearTimeout(this.sendMessagesTimeout)}};var _t=class{log;logger;stats;network;blockstore;peerWantLists;wantList;constructor(e,t={}){this.logger=e.logger,this.log=e.logger.forComponent("helia:bitswap"),this.blockstore=e.blockstore,this.stats=new Lt(e),this.network=new yt(e,t),this.peerWantLists=new Et({...e,network:this.network},t),this.wantList=new Dt({...e,network:this.network},t)}createSession(e={}){return Cn({wantList:this.wantList,network:this.network,logger:this.logger},e)}async want(e,t={}){let n=new AbortController,s=Cr([n.signal,t.signal]);U(1/0,n.signal,s),this.network.findAndConnect(e,{...t,signal:s}).catch(i=>{n.signal.aborted||this.log.error("error during finding and connect for cid %c",e,i)});try{return(await this.wantList.wantBlock(e,{...t,signal:s})).block}finally{n.abort(),s.clear()}}async notify(e,t,n={}){await Promise.all([this.peerWantLists.receivedBlock(e,n),this.wantList.receivedBlock(e,n)])}getWantlist(){return[...this.wantList.wants.values()].filter(e=>!e.cancel).map(e=>({cid:e.cid,priority:e.priority,wantType:e.wantType}))}getPeerWantlist(e){return this.peerWantLists.wantListForPeer(e)}async start(){this.wantList.start(),await this.network.start()}async stop(){this.wantList.stop(),await this.network.stop()}};var eo=(r,e={})=>new _t(r,e);return Vn(to);})();
3
3
  /*! Bundled license information:
4
4
 
5
5
  @noble/hashes/esm/utils.js:
@@ -9,4 +9,6 @@ export declare const DEFAULT_MESSAGE_SEND_CONCURRENCY = 50;
9
9
  export declare const DEFAULT_RUN_ON_TRANSIENT_CONNECTIONS = false;
10
10
  export declare const DEFAULT_SESSION_ROOT_PRIORITY = 1;
11
11
  export declare const DEFAULT_MAX_PROVIDERS_PER_REQUEST = 3;
12
+ export declare const DEFAULT_MAX_OUTGOING_MESSAGE_SIZE: number;
13
+ export declare const DEFAULT_MAX_INCOMING_MESSAGE_SIZE: number;
12
14
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,wBAAwB,CAAA;AAChD,eAAO,MAAM,uCAAuC,OAAO,CAAA;AAC3D,eAAO,MAAM,2BAA2B,OAAO,CAAA;AAC/C,eAAO,MAAM,4BAA4B,OAAO,CAAA;AAChD,eAAO,MAAM,+BAA+B,OAAO,CAAA;AACnD,eAAO,MAAM,0BAA0B,KAAK,CAAA;AAC5C,eAAO,MAAM,4BAA4B,OAAO,CAAA;AAChD,eAAO,MAAM,gCAAgC,KAAK,CAAA;AAClD,eAAO,MAAM,oCAAoC,QAAQ,CAAA;AACzD,eAAO,MAAM,6BAA6B,IAAI,CAAA;AAC9C,eAAO,MAAM,iCAAiC,IAAI,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,wBAAwB,CAAA;AAChD,eAAO,MAAM,uCAAuC,OAAO,CAAA;AAC3D,eAAO,MAAM,2BAA2B,OAAO,CAAA;AAC/C,eAAO,MAAM,4BAA4B,OAAO,CAAA;AAChD,eAAO,MAAM,+BAA+B,OAAO,CAAA;AACnD,eAAO,MAAM,0BAA0B,KAAK,CAAA;AAC5C,eAAO,MAAM,4BAA4B,OAAO,CAAA;AAChD,eAAO,MAAM,gCAAgC,KAAK,CAAA;AAClD,eAAO,MAAM,oCAAoC,QAAQ,CAAA;AACzD,eAAO,MAAM,6BAA6B,IAAI,CAAA;AAC9C,eAAO,MAAM,iCAAiC,IAAI,CAAA;AAClD,eAAO,MAAM,iCAAiC,QAAkB,CAAA;AAChE,eAAO,MAAM,iCAAiC,QAAoC,CAAA"}
@@ -9,4 +9,6 @@ export const DEFAULT_MESSAGE_SEND_CONCURRENCY = 50;
9
9
  export const DEFAULT_RUN_ON_TRANSIENT_CONNECTIONS = false;
10
10
  export const DEFAULT_SESSION_ROOT_PRIORITY = 1;
11
11
  export const DEFAULT_MAX_PROVIDERS_PER_REQUEST = 3;
12
+ export const DEFAULT_MAX_OUTGOING_MESSAGE_SIZE = 1024 * 1024 * 4;
13
+ export const DEFAULT_MAX_INCOMING_MESSAGE_SIZE = DEFAULT_MAX_OUTGOING_MESSAGE_SIZE;
12
14
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,qBAAqB,CAAA;AAChD,MAAM,CAAC,MAAM,uCAAuC,GAAG,IAAI,CAAA;AAC3D,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAA;AAC/C,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAA;AAChD,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAI,CAAA;AACnD,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAA;AAC5C,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAA;AAChD,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,CAAA;AAClD,MAAM,CAAC,MAAM,oCAAoC,GAAG,KAAK,CAAA;AACzD,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAA;AAC9C,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAA"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,qBAAqB,CAAA;AAChD,MAAM,CAAC,MAAM,uCAAuC,GAAG,IAAI,CAAA;AAC3D,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAA;AAC/C,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAA;AAChD,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAI,CAAA;AACnD,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAA;AAC5C,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAA;AAChD,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,CAAA;AAClD,MAAM,CAAC,MAAM,oCAAoC,GAAG,KAAK,CAAA;AACzD,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAA;AAC9C,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAA;AAClD,MAAM,CAAC,MAAM,iCAAiC,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,CAAA;AAChE,MAAM,CAAC,MAAM,iCAAiC,GAAG,iCAAiC,CAAA"}
@@ -92,13 +92,6 @@ export interface BitswapOptions {
92
92
  * @default '/ipfs/bitswap/1.2.0'
93
93
  */
94
94
  protocol?: string;
95
- /**
96
- * When a new peer connects, sending our WantList should complete within this
97
- * many ms
98
- *
99
- * @default 5000
100
- */
101
- messageSendTimeout?: number;
102
95
  /**
103
96
  * When sending want list updates to peers, how many messages to send at once
104
97
  *
@@ -137,6 +130,26 @@ export interface BitswapOptions {
137
130
  * @default 1024
138
131
  */
139
132
  maxSizeReplaceHasWithBlock?: number;
133
+ /**
134
+ * The maximum size in bytes of a message that we will send. If a message is
135
+ * larger than this (due to lots of blocks or wantlist entries) it will be
136
+ * broken up into several smaller messages that are under this size.
137
+ *
138
+ * @see https://github.com/ipfs/boxo/blob/eeea414587350401b6b804f0574ed8436833331d/bitswap/client/internal/messagequeue/messagequeue.go#L33
139
+ *
140
+ * @default 2097152
141
+ */
142
+ maxOutgoingMessageSize?: number;
143
+ /**
144
+ * The maximum size in bytes of an incoming message that we will process.
145
+ *
146
+ * Messages larger than this will cause the incoming stream to be reset.
147
+ *
148
+ * Defaults to `maxOutgoingMessageSize`
149
+ *
150
+ * @default 2097152
151
+ */
152
+ maxIncomingMessageSize?: number;
140
153
  }
141
154
  export declare const createBitswap: (components: BitswapComponents, options?: BitswapOptions) => Bitswap;
142
155
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,kCAAkC,EAAE,gCAAgC,EAAE,MAAM,cAAc,CAAA;AACxG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAErE,MAAM,MAAM,yBAAyB,GACnC,8BAA8B,CAAA;AAEhC,MAAM,MAAM,2BAA2B,GACrC,kCAAkC,CAAA;AAEpC,MAAM,MAAM,8BAA8B,GACxC,aAAa,CAAC,2BAA2B,EAAE,GAAG,CAAC,GAC/C,aAAa,CAAC,0BAA0B,EAAE,GAAG,CAAC,GAC9C,gCAAgC,CAAA;AAElC,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,GAAG,CAAA;IACR,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,QAAQ,CAAA;CACnB;AAED,MAAM,WAAW,OAAQ,SAAQ,SAAS;IACxC;;OAEG;IACH,WAAW,IAAI,aAAa,EAAE,CAAA;IAE9B;;;OAGG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,GAAG,SAAS,CAAA;IAE5D;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,eAAe,CAAC,2BAA2B,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE1G;;OAEG;IACH,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,eAAe,CAAC,yBAAyB,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAExG;;OAEG;IACH,aAAa,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC,yBAAyB,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,EAAE,UAAU,CAAC,CAAC,CAAA;CAC7I;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;CACjE;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAE9B;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAA;IAEnC;;OAEG;IACH,UAAU,CAAC,EAAE,qBAAqB,CAAA;IAElC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAE/B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAE9B;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B;;;;;;;;OAQG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAA;CACpC;AAED,eAAO,MAAM,aAAa,eAAgB,iBAAiB,YAAW,cAAc,KAAQ,OAE3F,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,kCAAkC,EAAE,gCAAgC,EAAE,MAAM,cAAc,CAAA;AACxG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAErE,MAAM,MAAM,yBAAyB,GACnC,8BAA8B,CAAA;AAEhC,MAAM,MAAM,2BAA2B,GACrC,kCAAkC,CAAA;AAEpC,MAAM,MAAM,8BAA8B,GACxC,aAAa,CAAC,2BAA2B,EAAE,GAAG,CAAC,GAC/C,aAAa,CAAC,0BAA0B,EAAE,GAAG,CAAC,GAC9C,gCAAgC,CAAA;AAElC,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,GAAG,CAAA;IACR,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,QAAQ,CAAA;CACnB;AAED,MAAM,WAAW,OAAQ,SAAQ,SAAS;IACxC;;OAEG;IACH,WAAW,IAAI,aAAa,EAAE,CAAA;IAE9B;;;OAGG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,GAAG,SAAS,CAAA;IAE5D;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,eAAe,CAAC,2BAA2B,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE1G;;OAEG;IACH,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,eAAe,CAAC,yBAAyB,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAExG;;OAEG;IACH,aAAa,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC,yBAAyB,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,EAAE,UAAU,CAAC,CAAC,CAAA;CAC7I;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;CACjE;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAE9B;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAA;IAEnC;;OAEG;IACH,UAAU,CAAC,EAAE,qBAAqB,CAAA;IAElC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAE/B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAE9B;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B;;;;;;;;OAQG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAA;IAEnC;;;;;;;;OAQG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAE/B;;;;;;;;OAQG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAA;CAChC;AAED,eAAO,MAAM,aAAa,eAAgB,iBAAiB,YAAW,cAAc,KAAQ,OAE3F,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,cAAc,CAAA;AAmKtD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,UAA6B,EAAE,UAA0B,EAAE,EAAW,EAAE;IACpG,OAAO,IAAI,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;AAC9C,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,cAAc,CAAA;AAiLtD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,UAA6B,EAAE,UAA0B,EAAE,EAAW,EAAE;IACpG,OAAO,IAAI,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;AAC9C,CAAC,CAAA"}