@libp2p/kad-dht 12.1.5-1675adee2 → 12.1.5-2265e59ba
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/index.min.js +4 -4
- package/package.json +12 -12
package/dist/index.min.js
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
(function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Libp2PKadDht = factory()}(typeof self !== 'undefined' ? self : this, function () {
|
2
|
-
"use strict";var Libp2PKadDht=(()=>{var la=Object.create;var Yn=Object.defineProperty;var ua=Object.getOwnPropertyDescriptor;var fa=Object.getOwnPropertyNames;var ha=Object.getPrototypeOf,da=Object.prototype.hasOwnProperty;var Wn=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),ae=(r,e)=>{for(var t in e)Yn(r,t,{get:e[t],enumerable:!0})},B2=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of fa(e))!da.call(r,s)&&s!==t&&Yn(r,s,{get:()=>e[s],enumerable:!(n=ua(e,s))||n.enumerable});return r};var Zn=(r,e,t)=>(t=r!=null?la(ha(r)):{},B2(e||!r||!r.__esModule?Yn(t,"default",{value:r,enumerable:!0}):t,r)),pa=r=>B2(Yn({},"__esModule",{value:!0}),r);var I0=Wn(xn=>{(function(){var r,e,t,n,s,i,o,a;a=function(c){var l,f,u,h;return l=(c&255<<24)>>>24,f=(c&255<<16)>>>16,u=(c&65280)>>>8,h=c&255,[l,f,u,h].join(".")},o=function(c){var l,f,u,h,m,g;for(l=[],u=h=0;h<=3&&c.length!==0;u=++h){if(u>0){if(c[0]!==".")throw new Error("Invalid IP");c=c.substring(1)}g=e(c),m=g[0],f=g[1],c=c.substring(f),l.push(m)}if(c.length!==0)throw new Error("Invalid IP");switch(l.length){case 1:if(l[0]>4294967295)throw new Error("Invalid IP");return l[0]>>>0;case 2:if(l[0]>255||l[1]>16777215)throw new Error("Invalid IP");return(l[0]<<24|l[1])>>>0;case 3:if(l[0]>255||l[1]>255||l[2]>65535)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2])>>>0;case 4:if(l[0]>255||l[1]>255||l[2]>255||l[3]>255)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2]<<8|l[3])>>>0;default:throw new Error("Invalid IP")}},t=function(c){return c.charCodeAt(0)},n=t("0"),i=t("a"),s=t("A"),e=function(c){var l,f,u,h,m;for(h=0,l=10,f="9",u=0,c.length>1&&c[u]==="0"&&(c[u+1]==="x"||c[u+1]==="X"?(u+=2,l=16):"0"<=c[u+1]&&c[u+1]<="9"&&(u++,l=8,f="7")),m=u;u<c.length;){if("0"<=c[u]&&c[u]<=f)h=h*l+(t(c[u])-n)>>>0;else if(l===16)if("a"<=c[u]&&c[u]<="f")h=h*l+(10+t(c[u])-i)>>>0;else if("A"<=c[u]&&c[u]<="F")h=h*l+(10+t(c[u])-s)>>>0;else break;else break;if(h>4294967295)throw new Error("too large");u++}if(u===m)throw new Error("empty octet");return[h,u]},r=function(){function c(l,f){var u,h,m,g;if(typeof l!="string")throw new Error("Missing `net' parameter");if(f||(g=l.split("/",2),l=g[0],f=g[1]),f||(f=32),typeof f=="string"&&f.indexOf(".")>-1){try{this.maskLong=o(f)}catch(d){throw u=d,new Error("Invalid mask: "+f)}for(h=m=32;m>=0;h=--m)if(this.maskLong===4294967295<<32-h>>>0){this.bitmask=h;break}}else if(f||f===0)this.bitmask=parseInt(f,10),this.maskLong=0,this.bitmask>0&&(this.maskLong=4294967295<<32-this.bitmask>>>0);else throw new Error("Invalid mask: empty");try{this.netLong=(o(l)&this.maskLong)>>>0}catch(d){throw u=d,new Error("Invalid net address: "+l)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+f);this.size=Math.pow(2,32-this.bitmask),this.base=a(this.netLong),this.mask=a(this.maskLong),this.hostmask=a(~this.maskLong),this.first=this.bitmask<=30?a(this.netLong+1):this.base,this.last=this.bitmask<=30?a(this.netLong+this.size-2):a(this.netLong+this.size-1),this.broadcast=this.bitmask<=30?a(this.netLong+this.size-1):void 0}return c.prototype.contains=function(l){return typeof l=="string"&&(l.indexOf("/")>0||l.split(".").length!==4)&&(l=new c(l)),l instanceof c?this.contains(l.base)&&this.contains(l.broadcast||l.last):(o(l)&this.maskLong)>>>0===(this.netLong&this.maskLong)>>>0},c.prototype.next=function(l){return l==null&&(l=1),new c(a(this.netLong+this.size*l),this.mask)},c.prototype.forEach=function(l){var f,u,h;for(h=o(this.first),u=o(this.last),f=0;h<=u;)l(a(h),h,f),f++,h++},c.prototype.toString=function(){return this.base+"/"+this.bitmask},c}(),xn.ip2long=o,xn.long2ip=a,xn.Netmask=r}).call(xn)});var m3=Wn(Zr=>{"use strict";var _8="[object ArrayBuffer]",Bt=class r{static isArrayBuffer(e){return Object.prototype.toString.call(e)===_8}static toArrayBuffer(e){return this.isArrayBuffer(e)?e:e.byteLength===e.buffer.byteLength||e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:this.toUint8Array(e.buffer).slice(e.byteOffset,e.byteOffset+e.byteLength).buffer}static toUint8Array(e){return this.toView(e,Uint8Array)}static toView(e,t){if(e.constructor===t)return e;if(this.isArrayBuffer(e))return new t(e);if(this.isArrayBufferView(e))return new t(e.buffer,e.byteOffset,e.byteLength);throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'")}static isBufferSource(e){return this.isArrayBufferView(e)||this.isArrayBuffer(e)}static isArrayBufferView(e){return ArrayBuffer.isView(e)||e&&this.isArrayBuffer(e.buffer)}static isEqual(e,t){let n=r.toUint8Array(e),s=r.toUint8Array(t);if(n.length!==s.byteLength)return!1;for(let i=0;i<n.length;i++)if(n[i]!==s[i])return!1;return!0}static concat(...e){let t;Array.isArray(e[0])&&!(e[1]instanceof Function)||Array.isArray(e[0])&&e[1]instanceof Function?t=e[0]:e[e.length-1]instanceof Function?t=e.slice(0,e.length-1):t=e;let n=0;for(let o of t)n+=o.byteLength;let s=new Uint8Array(n),i=0;for(let o of t){let a=this.toUint8Array(o);s.set(a,i),i+=a.length}return e[e.length-1]instanceof Function?this.toView(s,e[e.length-1]):s.buffer}},No="string",N8=/^[0-9a-f]+$/i,L8=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,P8=/^[a-zA-Z0-9-_]+$/,T1=class{static fromString(e){let t=unescape(encodeURIComponent(e)),n=new Uint8Array(t.length);for(let s=0;s<t.length;s++)n[s]=t.charCodeAt(s);return n.buffer}static toString(e){let t=Bt.toUint8Array(e),n="";for(let i=0;i<t.length;i++)n+=String.fromCharCode(t[i]);return decodeURIComponent(escape(n))}},ze=class{static toString(e,t=!1){let n=Bt.toArrayBuffer(e),s=new DataView(n),i="";for(let o=0;o<n.byteLength;o+=2){let a=s.getUint16(o,t);i+=String.fromCharCode(a)}return i}static fromString(e,t=!1){let n=new ArrayBuffer(e.length*2),s=new DataView(n);for(let i=0;i<e.length;i++)s.setUint16(i*2,e.charCodeAt(i),t);return n}},_1=class r{static isHex(e){return typeof e===No&&N8.test(e)}static isBase64(e){return typeof e===No&&L8.test(e)}static isBase64Url(e){return typeof e===No&&P8.test(e)}static ToString(e,t="utf8"){let n=Bt.toUint8Array(e);switch(t.toLowerCase()){case"utf8":return this.ToUtf8String(n);case"binary":return this.ToBinary(n);case"hex":return this.ToHex(n);case"base64":return this.ToBase64(n);case"base64url":return this.ToBase64Url(n);case"utf16le":return ze.toString(n,!0);case"utf16":case"utf16be":return ze.toString(n);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromString(e,t="utf8"){if(!e)return new ArrayBuffer(0);switch(t.toLowerCase()){case"utf8":return this.FromUtf8String(e);case"binary":return this.FromBinary(e);case"hex":return this.FromHex(e);case"base64":return this.FromBase64(e);case"base64url":return this.FromBase64Url(e);case"utf16le":return ze.fromString(e,!0);case"utf16":case"utf16be":return ze.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){let t=Bt.toUint8Array(e);if(typeof btoa<"u"){let n=this.ToString(t,"binary");return btoa(n)}else return Buffer.from(t).toString("base64")}static FromBase64(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64(t))throw new TypeError("Argument 'base64Text' is not Base64 encoded");return typeof atob<"u"?this.FromBinary(atob(t)):new Uint8Array(Buffer.from(t,"base64")).buffer}static FromBase64Url(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64Url(t))throw new TypeError("Argument 'base64url' is not Base64Url encoded");return this.FromBase64(this.Base64Padding(t.replace(/\-/g,"+").replace(/\_/g,"/")))}static ToBase64Url(e){return this.ToBase64(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=/g,"")}static FromUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.FromBinary(e);case"utf8":return T1.fromString(e);case"utf16":case"utf16be":return ze.fromString(e);case"utf16le":case"usc2":return ze.fromString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.ToBinary(e);case"utf8":return T1.toString(e);case"utf16":case"utf16be":return ze.toString(e);case"utf16le":case"usc2":return ze.toString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromBinary(e){let t=e.length,n=new Uint8Array(t);for(let s=0;s<t;s++)n[s]=e.charCodeAt(s);return n.buffer}static ToBinary(e){let t=Bt.toUint8Array(e),n="";for(let s=0;s<t.length;s++)n+=String.fromCharCode(t[s]);return n}static ToHex(e){let t=Bt.toUint8Array(e),n="",s=t.length;for(let i=0;i<s;i++){let o=t[i];o<16&&(n+="0"),n+=o.toString(16)}return n}static FromHex(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isHex(t))throw new TypeError("Argument 'hexString' is not HEX encoded");t.length%2&&(t=`0${t}`);let n=new Uint8Array(t.length/2);for(let s=0;s<t.length;s=s+2){let i=t.slice(s,s+2);n[s/2]=parseInt(i,16)}return n.buffer}static ToUtf16String(e,t=!1){return ze.toString(e,t)}static FromUtf16String(e,t=!1){return ze.fromString(e,t)}static Base64Padding(e){let t=4-e.length%4;if(t<4)for(let n=0;n<t;n++)e+="=";return e}static formatString(e){return e?.replace(/[\n\r\t ]/g,"")||""}};_1.DEFAULT_UTF8_ENCODING="utf8";function C8(r,...e){let t=arguments[0];for(let n=1;n<arguments.length;n++){let s=arguments[n];for(let i in s)t[i]=s[i]}return t}function D8(...r){let e=r.map(s=>s.byteLength).reduce((s,i)=>s+i),t=new Uint8Array(e),n=0;return r.map(s=>new Uint8Array(s)).forEach(s=>{for(let i of s)t[n++]=i}),t.buffer}function U8(r,e){if(!(r&&e)||r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let s=0;s<r.byteLength;s++)if(t[s]!==n[s])return!1;return!0}Zr.BufferSourceConverter=Bt;Zr.Convert=_1;Zr.assign=C8;Zr.combine=D8;Zr.isEqual=U8});var K4=Wn((tm,H4)=>{H4.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 $4=Wn((rm,l2)=>{"use strict";var K7=Object.prototype.hasOwnProperty,Te="~";function Vn(){}Object.create&&(Vn.prototype=Object.create(null),new Vn().__proto__||(Te=!1));function q7(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function q4(r,e,t,n,s){if(typeof t!="function")throw new TypeError("The listener must be a function");var i=new q7(t,n||r,s),o=Te?Te+e:e;return r._events[o]?r._events[o].fn?r._events[o]=[r._events[o],i]:r._events[o].push(i):(r._events[o]=i,r._eventsCount++),r}function _s(r,e){--r._eventsCount===0?r._events=new Vn:delete r._events[e]}function Re(){this._events=new Vn,this._eventsCount=0}Re.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)K7.call(t,n)&&e.push(Te?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};Re.prototype.listeners=function(e){var t=Te?Te+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var s=0,i=n.length,o=new Array(i);s<i;s++)o[s]=n[s].fn;return o};Re.prototype.listenerCount=function(e){var t=Te?Te+e:e,n=this._events[t];return n?n.fn?1:n.length:0};Re.prototype.emit=function(e,t,n,s,i,o){var a=Te?Te+e:e;if(!this._events[a])return!1;var c=this._events[a],l=arguments.length,f,u;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,s),!0;case 5:return c.fn.call(c.context,t,n,s,i),!0;case 6:return c.fn.call(c.context,t,n,s,i,o),!0}for(u=1,f=new Array(l-1);u<l;u++)f[u-1]=arguments[u];c.fn.apply(c.context,f)}else{var h=c.length,m;for(u=0;u<h;u++)switch(c[u].once&&this.removeListener(e,c[u].fn,void 0,!0),l){case 1:c[u].fn.call(c[u].context);break;case 2:c[u].fn.call(c[u].context,t);break;case 3:c[u].fn.call(c[u].context,t,n);break;case 4:c[u].fn.call(c[u].context,t,n,s);break;default:if(!f)for(m=1,f=new Array(l-1);m<l;m++)f[m-1]=arguments[m];c[u].fn.apply(c[u].context,f)}}return!0};Re.prototype.on=function(e,t,n){return q4(this,e,t,n,!1)};Re.prototype.once=function(e,t,n){return q4(this,e,t,n,!0)};Re.prototype.removeListener=function(e,t,n,s){var i=Te?Te+e:e;if(!this._events[i])return this;if(!t)return _s(this,i),this;var o=this._events[i];if(o.fn)o.fn===t&&(!s||o.once)&&(!n||o.context===n)&&_s(this,i);else{for(var a=0,c=[],l=o.length;a<l;a++)(o[a].fn!==t||s&&!o[a].once||n&&o[a].context!==n)&&c.push(o[a]);c.length?this._events[i]=c.length===1?c[0]:c:_s(this,i)}return this};Re.prototype.removeAllListeners=function(e){var t;return e?(t=Te?Te+e:e,this._events[t]&&_s(this,t)):(this._events=new Vn,this._eventsCount=0),this};Re.prototype.off=Re.prototype.removeListener;Re.prototype.addListener=Re.prototype.on;Re.prefixed=Te;Re.EventEmitter=Re;typeof l2<"u"&&(l2.exports=Re)});var pc={};ae(pc,{EventTypes:()=>y2,MessageType:()=>V,Record:()=>pe,kadDHT:()=>dc,passthroughMapper:()=>k0,removePrivateAddressesMapper:()=>p1,removePublicAddressesMapper:()=>R0});var S2=Symbol.for("@libp2p/content-routing");var R2=Symbol.for("@libp2p/peer-discovery");var ii=Symbol.for("@libp2p/peer-id");var k2=Symbol.for("@libp2p/peer-routing");var Lt=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"},E=class extends Error{code;props;constructor(e,t,n){super(e),this.code=t,this.name=n?.name??"CodeError",this.props=n??{}}};var xe=(r,...e)=>{try{[...e]}catch{}};var Ne=class extends EventTarget{#e=new Map;constructor(){super(),xe(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 Ue(e,t))}},Ue=globalThis.CustomEvent;function T2(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function _2(...r){let e=[];for(let t of r)T2(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStart!=null&&await t.beforeStart()})),await Promise.all(e.map(async t=>{await t.start()})),await Promise.all(e.map(async t=>{t.afterStart!=null&&await t.afterStart()}))}async function N2(...r){let e=[];for(let t of r)T2(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStop!=null&&await t.beforeStop()})),await Promise.all(e.map(async t=>{await t.stop()})),await Promise.all(e.map(async t=>{t.afterStop!=null&&await t.afterStop()}))}var L2=Symbol.for("@libp2p/service-capabilities"),P2=Symbol.for("@libp2p/service-dependencies");function ga(r){return r[Symbol.asyncIterator]!=null}function ma(r){if(ga(r))return(async()=>{for await(let e of r);})();for(let e of r);}var oi=ma;function ce(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var C2="/ipfs/kad/1.0.0",D2="/dht/record",ai="/dht/provider";function Le(r=0){return new Uint8Array(r)}function be(r=0){return new Uint8Array(r)}var ya=Math.pow(2,7),ba=Math.pow(2,14),wa=Math.pow(2,21),ci=Math.pow(2,28),li=Math.pow(2,35),ui=Math.pow(2,42),fi=Math.pow(2,49),z=128,Ae=127;function le(r){if(r<ya)return 1;if(r<ba)return 2;if(r<wa)return 3;if(r<ci)return 4;if(r<li)return 5;if(r<ui)return 6;if(r<fi)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function hi(r,e,t=0){switch(le(r)){case 8:e[t++]=r&255|z,r/=128;case 7:e[t++]=r&255|z,r/=128;case 6:e[t++]=r&255|z,r/=128;case 5:e[t++]=r&255|z,r/=128;case 4:e[t++]=r&255|z,r>>>=7;case 3:e[t++]=r&255|z,r>>>=7;case 2:e[t++]=r&255|z,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function va(r,e,t=0){switch(le(r)){case 8:e.set(t++,r&255|z),r/=128;case 7:e.set(t++,r&255|z),r/=128;case 6:e.set(t++,r&255|z),r/=128;case 5:e.set(t++,r&255|z),r/=128;case 4:e.set(t++,r&255|z),r>>>=7;case 3:e.set(t++,r&255|z),r>>>=7;case 2:e.set(t++,r&255|z),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function di(r,e){let t=r[e],n=0;if(n+=t&Ae,t<z||(t=r[e+1],n+=(t&Ae)<<7,t<z)||(t=r[e+2],n+=(t&Ae)<<14,t<z)||(t=r[e+3],n+=(t&Ae)<<21,t<z)||(t=r[e+4],n+=(t&Ae)*ci,t<z)||(t=r[e+5],n+=(t&Ae)*li,t<z)||(t=r[e+6],n+=(t&Ae)*ui,t<z)||(t=r[e+7],n+=(t&Ae)*fi,t<z))return n;throw new RangeError("Could not decode varint")}function xa(r,e){let t=r.get(e),n=0;if(n+=t&Ae,t<z||(t=r.get(e+1),n+=(t&Ae)<<7,t<z)||(t=r.get(e+2),n+=(t&Ae)<<14,t<z)||(t=r.get(e+3),n+=(t&Ae)<<21,t<z)||(t=r.get(e+4),n+=(t&Ae)*ci,t<z)||(t=r.get(e+5),n+=(t&Ae)*li,t<z)||(t=r.get(e+6),n+=(t&Ae)*ui,t<z)||(t=r.get(e+7),n+=(t&Ae)*fi,t<z))return n;throw new RangeError("Could not decode varint")}function He(r,e,t=0){return e==null&&(e=be(le(r))),e instanceof Uint8Array?hi(r,e,t):va(r,e,t)}function Oe(r,e=0){return r instanceof Uint8Array?di(r,e):xa(r,e)}var pi=new Float32Array([-0]),Pt=new Uint8Array(pi.buffer);function U2(r,e,t){pi[0]=r,e[t]=Pt[0],e[t+1]=Pt[1],e[t+2]=Pt[2],e[t+3]=Pt[3]}function O2(r,e){return Pt[0]=r[e],Pt[1]=r[e+1],Pt[2]=r[e+2],Pt[3]=r[e+3],pi[0]}var gi=new Float64Array([-0]),Ie=new Uint8Array(gi.buffer);function V2(r,e,t){gi[0]=r,e[t]=Ie[0],e[t+1]=Ie[1],e[t+2]=Ie[2],e[t+3]=Ie[3],e[t+4]=Ie[4],e[t+5]=Ie[5],e[t+6]=Ie[6],e[t+7]=Ie[7]}function M2(r,e){return Ie[0]=r[e],Ie[1]=r[e+1],Ie[2]=r[e+2],Ie[3]=r[e+3],Ie[4]=r[e+4],Ie[5]=r[e+5],Ie[6]=r[e+6],Ie[7]=r[e+7],gi[0]}var Ea=BigInt(Number.MAX_SAFE_INTEGER),Aa=BigInt(Number.MIN_SAFE_INTEGER),Ve=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 tr;if(e<Ea&&e>Aa)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>F2&&(s=0n,++n>F2&&(n=0n))),new r(Number(s),Number(n))}static fromNumber(e){if(e===0)return tr;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):tr}},tr=new Ve(0,0);tr.toBigInt=function(){return 0n};tr.zzEncode=tr.zzDecode=function(){return this};tr.length=function(){return 1};var F2=4294967296n;function H2(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 K2(r,e,t){if(t-e<1)return"";let s,i=[],o=0,a;for(;e<t;)a=r[e++],a<128?i[o++]=a:a>191&&a<224?i[o++]=(a&31)<<6|r[e++]&63:a>239&&a<365?(a=((a&7)<<18|(r[e++]&63)<<12|(r[e++]&63)<<6|r[e++]&63)-65536,i[o++]=55296+(a>>10),i[o++]=56320+(a&1023)):i[o++]=(a&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 mi(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 Ye(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function Qn(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var yi=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,Ye(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 Ye(this,4);return Qn(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw Ye(this,4);return Qn(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw Ye(this,4);let e=O2(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw Ye(this,4);let e=M2(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 Ye(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return K2(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw Ye(this,e);this.pos+=e}else do if(this.pos>=this.len)throw Ye(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 Ve(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 Ye(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 Ye(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 Ye(this,8);let e=Qn(this.buf,this.pos+=4),t=Qn(this.buf,this.pos+=4);return new Ve(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=di(this.buf,this.pos);return this.pos+=le(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 bi(r){return new yi(r instanceof Uint8Array?r:r.subarray())}function st(r,e,t){let n=bi(r);return e.decode(n,void 0,t)}var Ai={};ae(Ai,{base10:()=>Ta});var a9=new Uint8Array(0);function $2(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 pt(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 z2(r){return new TextEncoder().encode(r)}function G2(r){return new TextDecoder().decode(r)}function Ia(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 a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),f=Math.log(256)/Math.log(a);function u(g){if(g instanceof Uint8Array||(ArrayBuffer.isView(g)?g=new Uint8Array(g.buffer,g.byteOffset,g.byteLength):Array.isArray(g)&&(g=Uint8Array.from(g))),!(g instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(g.length===0)return"";for(var d=0,p=0,x=0,b=g.length;x!==b&&g[x]===0;)x++,d++;for(var w=(b-x)*f+1>>>0,S=new Uint8Array(w);x!==b;){for(var B=g[x],I=0,N=w-1;(B!==0||I<p)&&N!==-1;N--,I++)B+=256*S[N]>>>0,S[N]=B%a>>>0,B=B/a>>>0;if(B!==0)throw new Error("Non-zero carry");p=I,x++}for(var T=w-p;T!==w&&S[T]===0;)T++;for(var j=c.repeat(d);T<w;++T)j+=r.charAt(S[T]);return j}function h(g){if(typeof g!="string")throw new TypeError("Expected String");if(g.length===0)return new Uint8Array;var d=0;if(g[d]!==" "){for(var p=0,x=0;g[d]===c;)p++,d++;for(var b=(g.length-d)*l+1>>>0,w=new Uint8Array(b);g[d];){var S=t[g.charCodeAt(d)];if(S===255)return;for(var B=0,I=b-1;(S!==0||B<x)&&I!==-1;I--,B++)S+=a*w[I]>>>0,w[I]=S%256>>>0,S=S/256>>>0;if(S!==0)throw new Error("Non-zero carry");x=B,d++}if(g[d]!==" "){for(var N=b-x;N!==b&&w[N]===0;)N++;for(var T=new Uint8Array(p+(b-N)),j=p;N!==b;)T[j++]=w[N++];return T}}}function m(g){var d=h(g);if(d)return d;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:h,decode:m}}var Ba=Ia,Sa=Ba,Y2=Sa;var wi=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")}},vi=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 W2(this,e)}},xi=class{decoders;constructor(e){this.decoders=e}or(e){return W2(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 W2(r,e){return new xi({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var Ei=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 wi(e,t,n),this.decoder=new vi(e,t,s)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function vr({name:r,prefix:e,encode:t,decode:n}){return new Ei(r,e,t,n)}function Ct({name:r,prefix:e,alphabet:t}){let{encode:n,decode:s}=Y2(t,r);return vr({prefix:e,name:r,encode:n,decode:i=>pt(s(i))})}function Ra(r,e,t,n){let s={};for(let f=0;f<e.length;++f)s[e[f]]=f;let i=r.length;for(;r[i-1]==="=";)--i;let o=new Uint8Array(i*t/8|0),a=0,c=0,l=0;for(let f=0;f<i;++f){let u=s[r[f]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|u,a+=t,a>=8&&(a-=8,o[l++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return o}function ka(r,e,t){let n=e[e.length-1]==="=",s=(1<<t)-1,i="",o=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],o+=8;o>t;)o-=t,i+=e[s&a>>o];if(o!==0&&(i+=e[s&a<<t-o]),n)for(;i.length*t&7;)i+="=";return i}function se({name:r,prefix:e,bitsPerChar:t,alphabet:n}){return vr({prefix:e,name:r,encode(s){return ka(s,n,t)},decode(s){return Ra(s,n,t,r)}})}var Ta=Ct({prefix:"9",name:"base10",alphabet:"0123456789"});var Ii={};ae(Ii,{base16:()=>_a,base16upper:()=>Na});var _a=se({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Na=se({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var Bi={};ae(Bi,{base2:()=>La});var La=se({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Si={};ae(Si,{base256emoji:()=>Oa});var Z2=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}"),Pa=Z2.reduce((r,e,t)=>(r[t]=e,r),[]),Ca=Z2.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function Da(r){return r.reduce((e,t)=>(e+=Pa[t],e),"")}function Ua(r){let e=[];for(let t of r){let n=Ca[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var Oa=vr({prefix:"\u{1F680}",name:"base256emoji",encode:Da,decode:Ua});var Ri={};ae(Ri,{base32:()=>gt,base32hex:()=>Ha,base32hexpad:()=>qa,base32hexpadupper:()=>$a,base32hexupper:()=>Ka,base32pad:()=>Ma,base32padupper:()=>Fa,base32upper:()=>Va,base32z:()=>za});var gt=se({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Va=se({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Ma=se({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),Fa=se({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Ha=se({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),Ka=se({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),qa=se({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),$a=se({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),za=se({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var ki={};ae(ki,{base36:()=>Ga,base36upper:()=>ja});var Ga=Ct({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),ja=Ct({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Ti={};ae(Ti,{base58btc:()=>de,base58flickr:()=>Ya});var de=Ct({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Ya=Ct({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var _i={};ae(_i,{base64:()=>ln,base64pad:()=>Wa,base64url:()=>Za,base64urlpad:()=>Qa});var ln=se({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Wa=se({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Za=se({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Qa=se({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var Ni={};ae(Ni,{base8:()=>Xa});var Xa=se({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Li={};ae(Li,{identity:()=>Ja});var Ja=vr({prefix:"\0",name:"identity",encode:r=>G2(r),decode:r=>z2(r)});var A9=new TextEncoder,I9=new TextDecoder;var Ci={};ae(Ci,{identity:()=>mt});var r5=J2,Q2=128,n5=127,s5=~n5,i5=Math.pow(2,31);function J2(r,e,t){e=e||[],t=t||0;for(var n=t;r>=i5;)e[t++]=r&255|Q2,r/=128;for(;r&s5;)e[t++]=r&255|Q2,r>>>=7;return e[t]=r|0,J2.bytes=t-n+1,e}var o5=Pi,a5=128,X2=127;function Pi(r,n){var t=0,n=n||0,s=0,i=n,o,a=r.length;do{if(i>=a)throw Pi.bytes=0,new RangeError("Could not decode varint");o=r[i++],t+=s<28?(o&X2)<<s:(o&X2)*Math.pow(2,s),s+=7}while(o>=a5);return Pi.bytes=i-n,t}var c5=Math.pow(2,7),l5=Math.pow(2,14),u5=Math.pow(2,21),f5=Math.pow(2,28),h5=Math.pow(2,35),d5=Math.pow(2,42),p5=Math.pow(2,49),g5=Math.pow(2,56),m5=Math.pow(2,63),y5=function(r){return r<c5?1:r<l5?2:r<u5?3:r<f5?4:r<h5?5:r<d5?6:r<p5?7:r<g5?8:r<m5?9:10},b5={encode:r5,decode:o5,encodingLength:y5},w5=b5,un=w5;function fn(r,e=0){return[un.decode(r,e),un.decode.bytes]}function xr(r,e,t=0){return un.encode(r,e,t),e}function Er(r){return un.encodingLength(r)}function it(r,e){let t=e.byteLength,n=Er(r),s=n+Er(t),i=new Uint8Array(s+t);return xr(r,i,0),xr(t,i,n),i.set(e,s),new Ar(r,t,e,i)}function rr(r){let e=pt(r),[t,n]=fn(e),[s,i]=fn(e.subarray(n)),o=e.subarray(n+i);if(o.byteLength!==s)throw new Error("Incorrect length");return new Ar(t,s,o,e)}function e0(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&$2(r.bytes,t.bytes)}}var Ar=class{code;size;digest;bytes;constructor(e,t,n,s){this.code=e,this.size=t,this.digest=n,this.bytes=s}};var t0=0,v5="identity",r0=pt;function x5(r){return it(t0,r0(r))}var mt={code:t0,name:v5,encode:r0,digest:x5};var Oi={};ae(Oi,{sha256:()=>ne,sha512:()=>E5});function Ui({name:r,code:e,encode:t}){return new Di(r,e,t)}var Di=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?it(this.code,t):t.then(n=>it(this.code,n))}else throw Error("Unknown type, must be binary type")}};function s0(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var ne=Ui({name:"sha2-256",code:18,encode:s0("SHA-256")}),E5=Ui({name:"sha2-512",code:19,encode:s0("SHA-512")});function i0(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return I5(t,Vi(r),e??de.encoder);default:return B5(t,Vi(r),e??gt.encoder)}}var o0=new WeakMap;function Vi(r){let e=o0.get(r);if(e==null){let t=new Map;return o0.set(r,t),t}return e}var Be=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!==hn)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==S5)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=it(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&&e0(e.multihash,n.multihash)}toString(e){return i0(this,e)}toJSON(){return{"/":i0(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??a0(n,s,i.bytes))}else if(t[R5]===!0){let{version:n,multihash:s,code:i}=t,o=rr(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!==hn)throw new Error(`Version 0 CID must use dag-pb (code: ${hn}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let s=a0(e,t,n.bytes);return new r(e,t,n,s)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,hn,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=pt(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 Ar(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[u,h]=fn(e.subarray(t));return t+=h,u},s=n(),i=hn;if(s===18?(s=0,t=0):i=n(),s!==0&&s!==1)throw new RangeError(`Invalid CID version ${s}`);let o=t,a=n(),c=n(),l=t+c,f=l-o;return{version:s,codec:i,multihashCode:a,digestSize:c,multihashSize:f,size:l}}static parse(e,t){let[n,s]=A5(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 Vi(i).set(n,e),i}};function A5(r,e){switch(r[0]){case"Q":{let t=e??de;return[de.prefix,t.decode(`${de.prefix}${r}`)]}case de.prefix:{let t=e??de;return[de.prefix,t.decode(r)]}case gt.prefix:{let t=e??gt;return[gt.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 I5(r,e,t){let{prefix:n}=t;if(n!==de.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 B5(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 hn=112,S5=18;function a0(r,e,t){let n=Er(r),s=n+Er(e),i=new Uint8Array(s+t.byteLength);return xr(r,i,0),xr(e,i,n),i.set(t,s),i}var R5=Symbol.for("@ipld/js-cid/CID");var Dt={...Li,...Bi,...Ni,...Ai,...Ii,...Ri,...ki,...Ti,..._i,...Si},z9={...Oi,...Ci};function l0(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var c0=l0("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),Mi=l0("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=be(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),k5={utf8:c0,"utf-8":c0,hex:Dt.base16,latin1:Mi,ascii:Mi,binary:Mi,...Dt},Jn=k5;function K(r,e="utf8"){let t=Jn[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function Fi(r){let e=r??8192,t=e>>>1,n,s=e;return function(o){if(o<1||o>t)return be(o);s+o>e&&(n=be(e),s=0);let a=n.subarray(s,s+=o);return s&7&&(s=(s|7)+1),a}}var sr=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function Hi(){}var qi=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},T5=Fi();function _5(r){return globalThis.Buffer!=null?be(r):T5(r)}var pn=class{len;head;tail;states;constructor(){this.len=0,this.head=new sr(Hi,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new sr(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new $i((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(e1,10,Ve.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=Ve.fromBigInt(e);return this._push(e1,t.length(),t)}uint64Number(e){return this._push(hi,le(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=Ve.fromBigInt(e).zzEncode();return this._push(e1,t.length(),t)}sint64Number(e){let t=Ve.fromNumber(e).zzEncode();return this._push(e1,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(Ki,1,e?1:0)}fixed32(e){return this._push(dn,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=Ve.fromBigInt(e);return this._push(dn,4,t.lo)._push(dn,4,t.hi)}fixed64Number(e){let t=Ve.fromNumber(e);return this._push(dn,4,t.lo)._push(dn,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(U2,4,e)}double(e){return this._push(V2,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(Ki,1,0):this.uint32(t)._push(L5,t,e)}string(e){let t=H2(e);return t!==0?this.uint32(t)._push(mi,t,e):this._push(Ki,1,0)}fork(){return this.states=new qi(this),this.head=this.tail=new sr(Hi,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 sr(Hi,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=_5(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function Ki(r,e,t){e[t]=r&255}function N5(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var $i=class extends sr{next;constructor(e,t){super(N5,e,t),this.next=void 0}};function e1(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 dn(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 L5(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(pn.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(P5,e,r),this},pn.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(C5,e,r),this});function P5(r,e,t){e.set(r,t)}function C5(r,e,t){r.length<40?mi(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(K(r),t)}function zi(){return new pn}function ot(r,e){let t=zi();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var Ir;(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"})(Ir||(Ir={}));function t1(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function Br(r){function e(s){if(r[s.toString()]==null)throw new Error("Invalid enum value");return r[s]}let t=function(i,o){let a=e(i);o.int32(a)},n=function(i){let o=i.int32();return e(o)};return t1("enum",Ir.VARINT,t,n)}function at(r,e){return t1("message",Ir.LENGTH_DELIMITED,r,e)}var gn=class extends Error{code;constructor(e,t){super(e),this.code=t}};var mn;(function(r){let e;r.codec=()=>(e==null&&(e=at((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.key!=null&&t.key.byteLength>0&&(n.uint32(10),n.bytes(t.key)),t.value!=null&&t.value.byteLength>0&&(n.uint32(18),n.bytes(t.value)),t.timeReceived!=null&&t.timeReceived!==""&&(n.uint32(42),n.string(t.timeReceived)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={key:Le(0),value:Le(0),timeReceived:""},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.key=t.bytes();break}case 2:{i.value=t.bytes();break}case 5:{i.timeReceived=t.string();break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>ot(t,r.codec()),r.decode=(t,n)=>st(t,r.codec(),n)})(mn||(mn={}));function u0(r){let e=r.getUTCFullYear(),t=String(r.getUTCMonth()+1).padStart(2,"0"),n=String(r.getUTCDate()).padStart(2,"0"),s=String(r.getUTCHours()).padStart(2,"0"),i=String(r.getUTCMinutes()).padStart(2,"0"),o=String(r.getUTCSeconds()).padStart(2,"0"),a=r.getUTCMilliseconds(),c=String(a*1e3*1e3).padStart(9,"0");return`${e}-${t}-${n}T${s}:${i}:${o}.${c}Z`}function f0(r){let e=new RegExp("(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})\\.(\\d+)Z"),t=String(r).trim().match(e);if(t==null)throw new Error("Invalid format");let n=parseInt(t[1],10),s=parseInt(t[2],10)-1,i=parseInt(t[3],10),o=parseInt(t[4],10),a=parseInt(t[5],10),c=parseInt(t[6],10),l=parseInt(t[7].slice(0,-6),10);return new Date(Date.UTC(n,s,i,o,a,c,l))}var pe=class r{key;value;timeReceived;constructor(e,t,n){if(!(e instanceof Uint8Array))throw new Error("key must be a Uint8Array");if(!(t instanceof Uint8Array))throw new Error("value must be a Uint8Array");this.key=e,this.value=t,this.timeReceived=n}serialize(){return mn.encode(this.prepareSerialize())}prepareSerialize(){return{key:this.key,value:this.value,timeReceived:u0(this.timeReceived)}}static deserialize(e){let t=mn.decode(e);return new r(t.key,t.value,new Date(t.timeReceived))}static fromDeserialized(e){let t=f0(e.timeReceived);if(e.key==null)throw new Error("key missing from deserialized object");if(e.value==null)throw new Error("value missing from deserialized object");return new r(e.key,e.value,t)}};function U5(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 h0=U5;function O5(r){return r[Symbol.asyncIterator]!=null}function V5(r,e){let t=0;if(O5(r))return async function*(){for await(let c of r)yield e(c,t++)}();let n=h0(r),{value:s,done:i}=n.next();if(i===!0)return function*(){}();let o=e(s,t++);if(typeof o.then=="function")return async function*(){yield await o;for await(let c of n)yield e(c,t++)}();let a=e;return function*(){yield o;for(let c of n)yield a(c,t++)}()}var Sr=V5;var r1=globalThis.CustomEvent??Event;async function*yn(r,e={}){let t=e.concurrency??1/0;t<1&&(t=1/0);let n=e.ordered==null?!1:e.ordered,s=new EventTarget,i=[],o=ce(),a=ce(),c=!1,l,f=!1;s.addEventListener("task-complete",()=>{a.resolve()}),Promise.resolve().then(async()=>{try{for await(let g of r){if(i.length===t&&(o=ce(),await o.promise),f)break;let d={done:!1};i.push(d),g().then(p=>{d.done=!0,d.ok=!0,d.value=p,s.dispatchEvent(new r1("task-complete"))},p=>{d.done=!0,d.err=p,s.dispatchEvent(new r1("task-complete"))})}c=!0,s.dispatchEvent(new r1("task-complete"))}catch(g){l=g,s.dispatchEvent(new r1("task-complete"))}});function u(){return n?i[0]?.done:!!i.find(g=>g.done)}function*h(){for(;i.length>0&&i[0].done;){let g=i[0];if(i.shift(),g.ok)yield g.value;else throw f=!0,o.resolve(),g.err;o.resolve()}}function*m(){for(;u();)for(let g=0;g<i.length;g++)if(i[g].done){let d=i[g];if(i.splice(g,1),g--,d.ok)yield d.value;else throw f=!0,o.resolve(),d.err;o.resolve()}}for(;;){if(u()||(a=ce(),await a.promise),l!=null)throw l;if(n?yield*h():yield*m(),c&&i.length===0)break}}var n1=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}},Rr=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new n1(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 n1(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 Gi=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function kr(r={}){return M5(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 M5(r,e){e=e??{};let t=e.onEnd,n=new Rr,s,i,o,a=ce(),c=async()=>{try{return n.isEmpty()?o?{done:!0}:await new Promise((p,x)=>{i=b=>{i=null,n.push(b);try{p(r(n))}catch(w){x(w)}return s}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=ce()})}},l=p=>i!=null?i(p):(n.push(p),s),f=p=>(n=new Rr,i!=null?i({error:p}):(n.push({error:p}),s)),u=p=>{if(o)return s;if(e?.objectMode!==!0&&p?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:p})},h=p=>o?s:(o=!0,p!=null?f(p):l({done:!0})),m=()=>(n=new Rr,h(),{done:!0}),g=p=>(h(p),{done:!0});if(s={[Symbol.asyncIterator](){return this},next:c,return:m,throw:g,push:u,end:h,get readableLength(){return n.size},onEmpty:async p=>{let x=p?.signal;if(x?.throwIfAborted(),n.isEmpty())return;let b,w;x!=null&&(b=new Promise((S,B)=>{w=()=>{B(new Gi)},x.addEventListener("abort",w)}));try{await Promise.race([a.promise,b])}finally{w!=null&&x!=null&&x?.removeEventListener("abort",w)}}},t==null)return s;let d=s;return s={[Symbol.asyncIterator](){return this},next(){return d.next()},throw(p){return d.throw(p),t!=null&&(t(p),t=void 0),{done:!0}},return(){return d.return(),t!=null&&(t(),t=void 0),{done:!0}},push:u,end(p){return d.end(p),t!=null&&(t(p),t=void 0),s},get readableLength(){return d.readableLength},onEmpty:p=>d.onEmpty(p)},s}function F5(r){return r[Symbol.asyncIterator]!=null}function H5(...r){let e=[];for(let t of r)F5(t)||e.push(t);return e.length===r.length?function*(){for(let t of e)yield*t}():async function*(){let t=kr({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 s1=H5;function Ut(r,...e){if(r==null)throw new Error("Empty pipeline");if(ji(r)){let n=r;r=()=>n.source}else if(p0(r)||d0(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&ji(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++)ji(t[n])&&(t[n]=q5(t[n]));return K5(...t)}var K5=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},d0=r=>r?.[Symbol.asyncIterator]!=null,p0=r=>r?.[Symbol.iterator]!=null,ji=r=>r==null?!1:r.sink!=null&&r.source!=null,q5=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=kr({objectMode:!0});t.then(()=>{n.end()},o=>{n.end(o)});let s,i=r.source;if(d0(i))s=async function*(){yield*i,n.end()};else if(p0(i))s=function*(){yield*i,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return s1(n,s())}return r.source};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 g0;(function(r){let e;r.codec=()=>(e==null&&(e=at((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.key!=null&&(n.uint32(10),n.bytes(t.key)),t.value!=null&&(n.uint32(18),n.bytes(t.value)),t.author!=null&&(n.uint32(26),n.bytes(t.author)),t.signature!=null&&(n.uint32(34),n.bytes(t.signature)),t.timeReceived!=null&&(n.uint32(42),n.string(t.timeReceived)),s.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let s={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let o=t.uint32();switch(o>>>3){case 1:{s.key=t.bytes();break}case 2:{s.value=t.bytes();break}case 3:{s.author=t.bytes();break}case 4:{s.signature=t.bytes();break}case 5:{s.timeReceived=t.string();break}default:{t.skipType(o&7);break}}}return s})),e),r.encode=t=>ot(t,r.codec()),r.decode=t=>st(t,r.codec())})(g0||(g0={}));var V;(function(r){r.PUT_VALUE="PUT_VALUE",r.GET_VALUE="GET_VALUE",r.ADD_PROVIDER="ADD_PROVIDER",r.GET_PROVIDERS="GET_PROVIDERS",r.FIND_NODE="FIND_NODE",r.PING="PING"})(V||(V={}));var i1;(function(r){r[r.PUT_VALUE=0]="PUT_VALUE",r[r.GET_VALUE=1]="GET_VALUE",r[r.ADD_PROVIDER=2]="ADD_PROVIDER",r[r.GET_PROVIDERS=3]="GET_PROVIDERS",r[r.FIND_NODE=4]="FIND_NODE",r[r.PING=5]="PING"})(i1||(i1={}));(function(r){r.codec=()=>Br(i1)})(V||(V={}));var _r;(function(r){r.NOT_CONNECTED="NOT_CONNECTED",r.CONNECTED="CONNECTED",r.CAN_CONNECT="CAN_CONNECT",r.CANNOT_CONNECT="CANNOT_CONNECT"})(_r||(_r={}));var Yi;(function(r){r[r.NOT_CONNECTED=0]="NOT_CONNECTED",r[r.CONNECTED=1]="CONNECTED",r[r.CAN_CONNECT=2]="CAN_CONNECT",r[r.CANNOT_CONNECT=3]="CANNOT_CONNECT"})(Yi||(Yi={}));(function(r){r.codec=()=>Br(Yi)})(_r||(_r={}));var Tr;(function(r){let e;r.codec=()=>(e==null&&(e=at((t,n,s={})=>{if(s.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.multiaddrs!=null)for(let i of t.multiaddrs)n.uint32(18),n.bytes(i);t.connection!=null&&(n.uint32(24),_r.codec().encode(t.connection,n)),s.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let s={id:Le(0),multiaddrs:[]},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let o=t.uint32();switch(o>>>3){case 1:{s.id=t.bytes();break}case 2:{s.multiaddrs.push(t.bytes());break}case 3:{s.connection=_r.codec().decode(t);break}default:{t.skipType(o&7);break}}}return s})),e),r.encode=t=>ot(t,r.codec()),r.decode=t=>st(t,r.codec())})(Tr||(Tr={}));var Ke;(function(r){let e;r.codec=()=>(e==null&&(e=at((t,n,s={})=>{if(s.lengthDelimited!==!1&&n.fork(),t.type!=null&&i1[t.type]!==0&&(n.uint32(8),V.codec().encode(t.type,n)),t.clusterLevel!=null&&(n.uint32(80),n.int32(t.clusterLevel)),t.key!=null&&(n.uint32(18),n.bytes(t.key)),t.record!=null&&(n.uint32(26),n.bytes(t.record)),t.closer!=null)for(let i of t.closer)n.uint32(66),Tr.codec().encode(i,n);if(t.providers!=null)for(let i of t.providers)n.uint32(74),Tr.codec().encode(i,n);s.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let s={type:V.PUT_VALUE,closer:[],providers:[]},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let o=t.uint32();switch(o>>>3){case 1:{s.type=V.codec().decode(t);break}case 10:{s.clusterLevel=t.int32();break}case 2:{s.key=t.bytes();break}case 3:{s.record=t.bytes();break}case 8:{s.closer.push(Tr.codec().decode(t,t.uint32()));break}case 9:{s.providers.push(Tr.codec().decode(t,t.uint32()));break}default:{t.skipType(o&7);break}}}return s})),e),r.encode=t=>ot(t,r.codec()),r.decode=t=>st(t,r.codec())})(Ke||(Ke={}));function Wi(r,e={}){let t={...r,name:"SEND_QUERY",type:0,messageName:r.type,messageType:r.type};return e.onProgress?.(new Ue("kad-dht:query:send-query",{detail:t})),t}function bn(r,e={}){let t={...r,name:"PEER_RESPONSE",type:1,messageName:r.messageType,closer:r.closer??[],providers:r.providers??[]};return e.onProgress?.(new Ue("kad-dht:query:peer-response",{detail:t})),t}function o1(r,e={}){let t={...r,name:"FINAL_PEER",type:2};return e.onProgress?.(new Ue("kad-dht:query:final-peer",{detail:t})),t}function Me(r,e={}){let t={...r,name:"QUERY_ERROR",type:3};return e.onProgress?.(new Ue("kad-dht:query:query-error",{detail:t})),t}function Zi(r,e={}){let t={...r,name:"PROVIDER",type:4};return e.onProgress?.(new Ue("kad-dht:query:provider",{detail:t})),t}function wn(r,e={}){let t={...r,name:"VALUE",type:5};return e.onProgress?.(new Ue("kad-dht:query:value",{detail:t})),t}function Qi(r,e={}){let t={...r,name:"DIAL_PEER",type:7};return e.onProgress?.(new Ue("kad-dht:query:dial-peer",{detail:t})),t}function L(r,e="utf8"){let t=Jn[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}function m0(r,e,t){if(t.length===0){let o="No records given";throw new E(o,"ERR_NO_RECORDS_RECEIVED")}let s=L(e).split("/");if(s.length<3){let o="Record key does not have a selector function";throw new E(o,"ERR_NO_SELECTOR_FUNCTION_FOR_RECORD_KEY")}let i=r[s[1].toString()];if(i==null){let o=`No selector function configured for key type "${s[1]}"`;throw new E(o,"ERR_UNRECOGNIZED_KEY_PREFIX")}return t.length===1?0:i(e,t)}function $5(r,e){return 0}var y0={pk:$5};async function Nr(r,e){let t=e.key,s=L(t).split("/");if(s.length<3)return;let i=r[s[1].toString()];if(i==null){let o=`No validator available for key type "${s[1]}"`;throw new E(o,"ERR_INVALID_RECORD_KEY_TYPE")}await i(t,e.value)}var z5=async(r,e)=>{if(!(r instanceof Uint8Array))throw new E('"key" must be a Uint8Array',"ERR_INVALID_RECORD_KEY_NOT_BUFFER");if(r.byteLength<5)throw new E("invalid public key record","ERR_INVALID_RECORD_KEY_TOO_SHORT");if(L(r.subarray(0,4))!=="/pk/")throw new E("key was not prefixed with /pk/","ERR_INVALID_RECORD_KEY_BAD_PREFIX");let n=r.slice(4),s=await ne.digest(e);if(!W(n,s.bytes))throw new E("public key does not match passed in key","ERR_INVALID_RECORD_HASH_MISMATCH")},b0={pk:z5};var v0=Symbol.for("nodejs.util.inspect.custom"),w0=Object.values(Dt).map(r=>r.decoder).reduce((r,e)=>r.or(e),Dt.identity.decoder),x0=114,eo=36,to=37,vn=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()})`}[ii]=!0;toString(){return this.string==null&&(this.string=de.encode(this.multihash.bytes).slice(1)),this.string}toCID(){return Be.createV1(x0,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 ir(e).equals(this);if(e?.multihash?.bytes!=null)return W(this.multihash.bytes,e.multihash.bytes);throw new Error("not valid Id")}[v0](){return`PeerId(${this.toString()})`}},Lr=class extends vn{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},Pr=class extends vn{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.multihash.digest}},Cr=class extends vn{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.multihash.digest}},Xi=2336,Ji=class{type="url";multihash;privateKey;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=mt.digest(K(this.url))}[v0](){return`PeerId(${this.url})`}[ii]=!0;toString(){return this.toCID().toString()}toCID(){return Be.createV1(Xi,this.multihash)}toBytes(){return this.toCID().bytes}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=L(e)),e.toString()===this.toString())}};function ir(r,e){if(e=e??w0,r.charAt(0)==="1"||r.charAt(0)==="Q"){let t=rr(de.decode(`z${r}`));return r.startsWith("12D")?new Pr({multihash:t}):r.startsWith("16U")?new Cr({multihash:t}):new Lr({multihash:t})}return yt(w0.decode(r))}function yt(r){try{let e=rr(r);if(e.code===mt.code){if(e.digest.length===eo)return new Pr({multihash:e});if(e.digest.length===to)return new Cr({multihash:e})}if(e.code===ne.code)return new Lr({multihash:e})}catch{return G5(Be.decode(r))}throw new Error("Supplied PeerID CID is invalid")}function G5(r){if(r?.multihash==null||r.version==null||r.version===1&&r.code!==x0&&r.code!==Xi)throw new Error("Supplied PeerID CID is invalid");if(r.code===Xi){let t=L(r.multihash.digest);return new Ji(new URL(t))}let e=r.multihash;if(e.code===ne.code)return new Lr({multihash:r.multihash});if(e.code===mt.code){if(e.digest.length===eo)return new Pr({multihash:r.multihash});if(e.digest.length===to)return new Cr({multihash:r.multihash})}throw new Error("Supplied PeerID CID is invalid")}async function E0(r,e){return r.length===eo?new Pr({multihash:it(mt.code,r),privateKey:e}):r.length===to?new Cr({multihash:it(mt.code,r),privateKey:e}):new Lr({multihash:await ne.digest(r),publicKey:r,privateKey:e})}var a1=class{index=0;input="";new(e){return this.index=0,this.input=e,this}readAtomically(e){let t=this.index,n=e();return n===void 0&&(this.index=t),n}parseWith(e){let t=e();if(this.index===this.input.length)return t}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(e){return this.readAtomically(()=>{let t=this.readChar();if(t===e)return t})}readSeparator(e,t,n){return this.readAtomically(()=>{if(!(t>0&&this.readGivenChar(e)===void 0))return n()})}readNumber(e,t,n,s){return this.readAtomically(()=>{let i=0,o=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",l=2**(8*s)-1;for(;;){let f=this.readAtomically(()=>{let u=this.readChar();if(u===void 0)return;let h=Number.parseInt(u,e);if(!Number.isNaN(h))return h});if(f===void 0)break;if(i*=e,i+=f,i>l||(o+=1,t!==void 0&&o>t))return}if(o!==0)return!n&&c&&o>1?void 0:i})}readIPv4Addr(){return this.readAtomically(()=>{let e=new Uint8Array(4);for(let t=0;t<e.length;t++){let n=this.readSeparator(".",t,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;e[t]=n}return e})}readIPv6Addr(){let e=t=>{for(let n=0;n<t.length/2;n++){let s=n*2;if(n<t.length-3){let o=this.readSeparator(":",n,()=>this.readIPv4Addr());if(o!==void 0)return t[s]=o[0],t[s+1]=o[1],t[s+2]=o[2],t[s+3]=o[3],[s+4,!0]}let i=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(i===void 0)return[s,!1];t[s]=i>>8,t[s+1]=i&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,s]=e(t);if(n===16)return t;if(s||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let i=new Uint8Array(14),o=16-(n+2),[a]=e(i.subarray(0,o));return t.set(i.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var A0=45,j5=15,Dr=new a1;function ro(r){if(!(r.length>j5))return Dr.new(r).parseWith(()=>Dr.readIPv4Addr())}function no(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>A0))return Dr.new(r).parseWith(()=>Dr.readIPv6Addr())}function c1(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>A0))return Dr.new(r).parseWith(()=>Dr.readIPAddr())}function l1(r){return!!ro(r)}function u1(r){return!!no(r)}function f1(r){return!!c1(r)}var B0=Zn(I0(),1),Y5=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.0.0/29","192.0.0.8/32","192.0.0.9/32","192.0.0.10/32","192.0.0.170/32","192.0.0.171/32","192.0.2.0/24","192.31.196.0/24","192.52.193.0/24","192.88.99.0/24","192.168.0.0/16","192.175.48.0/24","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","240.0.0.0/4","255.255.255.255/32"],W5=Y5.map(r=>new B0.Netmask(r));function so(r){for(let e of W5)if(e.contains(r))return!0;return!1}function Z5(r){return/^::ffff:([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4})$/.test(r)}function Q5(r){let e=r.split(":");if(e.length<2)return!1;let t=e[e.length-1].padStart(4,"0"),n=e[e.length-2].padStart(4,"0"),s=`${parseInt(n.substring(0,2),16)}.${parseInt(n.substring(2),16)}.${parseInt(t.substring(0,2),16)}.${parseInt(t.substring(2),16)}`;return so(s)}function X5(r){return/^::ffff:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)}function J5(r){let e=r.split(":"),t=e[e.length-1];return so(t)}function e6(r){return/^::$/.test(r)||/^::1$/.test(r)||/^64:ff9b::([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^100::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:2[0-9a-fA-F]:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:db8:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2002:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^f[c-d]([0-9a-fA-F]{2,2}):/i.test(r)||/^fe[8-9a-bA-B][0-9a-fA-F]:/i.test(r)||/^ff([0-9a-fA-F]{2,2}):/i.test(r)}function h1(r){return l1(r)?so(r):Z5(r)?Q5(r):X5(r)?J5(r):u1(r)?e6(r):void 0}var bt="/",S0=new TextEncoder().encode(bt),d1=S0[0],Ur=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=K(e);else if(e instanceof Uint8Array)this._buf=e;else throw new Error("Invalid key, should be String of Uint8Array");if(t==null&&(t=!0),t&&this.clean(),this._buf.byteLength===0||this._buf[0]!==d1)throw new Error("Invalid key")}toString(e="utf8"){return L(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join(bt))}static random(){return new r(Math.random().toString().substring(2))}static asKey(e){return e instanceof Uint8Array||typeof e=="string"?new r(e):typeof e.uint8Array=="function"?new r(e.uint8Array()):null}clean(){if((this._buf==null||this._buf.byteLength===0)&&(this._buf=S0),this._buf[0]!==d1){let e=new Uint8Array(this._buf.byteLength+1);e.fill(d1,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===d1;)this._buf=this._buf.subarray(0,-1)}less(e){let t=this.list(),n=e.list();for(let s=0;s<t.length;s++){if(n.length<s+1)return!1;let i=t[s],o=n[s];if(i<o)return!0;if(i>o)return!1}return t.length<n.length}reverse(){return r.withNamespaces(this.list().slice().reverse())}namespaces(){return this.list()}baseNamespace(){let e=this.namespaces();return e[e.length-1]}list(){return this.toString().split(bt).slice(1)}type(){return t6(this.baseNamespace())}name(){return r6(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith(bt)||(e+=bt),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r(bt):new r(e.slice(0,-1).join(bt))}child(e){return this.toString()===bt?e:e.toString()===bt?this:new r(this.toString()+e.toString(),!1)}isAncestorOf(e){return e.toString()===this.toString()?!1:e.toString().startsWith(this.toString())}isDecendantOf(e){return e.toString()===this.toString()?!1:this.toString().startsWith(e.toString())}isTopLevel(){return this.list().length===1}concat(...e){return r.withNamespaces([...this.namespaces(),...n6(e.map(t=>t.namespaces()))])}};function t6(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function r6(r){let e=r.split(":");return e[e.length-1]}function n6(r){return[].concat(...r)}function Q(r,e){e==null&&(e=r.reduce((s,i)=>s+i.length,0));let t=be(e),n=0;for(let s of r)t.set(s,n),n+=s.length;return t}var i6=K("/pk/");function p1(r){return{...r,multiaddrs:r.multiaddrs.filter(e=>{let[[t,n]]=e.stringTuples();if(t===53||t===54||t===55)return n!=="localhost";if(t!==4&&t!==6||n==null)return!1;let s=h1(n);return s==null?!0:!s})}}function R0(r){return{...r,multiaddrs:r.multiaddrs.filter(e=>{let[[t,n]]=e.stringTuples();if(n==="localhost")return!0;if(t!==4&&t!==6||n==null)return!1;let s=h1(n);return s??!1})}}function k0(r){return r}async function Ot(r){return(await ne.digest(r)).digest}async function qe(r){return Ot(r.toBytes())}function Vt(r){return new Ur(`${D2}/${L(r,"base32")}`,!1)}function T0(r){return Q([i6,r.toBytes()])}function _0(r){return L(r.subarray(0,4))==="/pk/"}function N0(r){return yt(r.subarray(4))}function io(r,e){let t=new Date;return new pe(r,e,t).serialize()}function L0(r,e=100){let t;return()=>{clearTimeout(t),t=setTimeout(()=>{r()},e)}}var o6=290,a6=54,c6=55,l6=56,u6=4,f6=41;function P0(r){let e=r.stringTuples();for(let t of e)if(t[0]===o6)return!1;if(e[0][0]===a6||e[0][0]===c6||e[0][0]===l6)return!0;if(e[0][0]===u6||e[0][0]===f6){let t=h1(`${e[0][1]}`);return t==null||!t}return!1}var g1=class{log;components;validators;selectors;peerRouting;queryManager;network;constructor(e,t){let{validators:n,selectors:s,peerRouting:i,queryManager:o,network:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-fetching`),this.validators=n,this.selectors=s,this.peerRouting=i,this.queryManager=o,this.network=a}async getLocal(e){this.log("getLocal %b",e);let t=Vt(e);this.log("fetching record for key %k",t);let n=await this.components.datastore.get(t);this.log("found %k in local datastore",t);let s=pe.deserialize(n);return await Nr(this.validators,s),s}async*sendCorrectionRecord(e,t,n,s={}){this.log("sendCorrection for %b",e);let i=io(e,n);for(let{value:o,from:a}of t){if(W(o,n)){this.log("record was ok");continue}if(this.components.peerId.equals(a)){try{let f=Vt(e);this.log(`Storing corrected record for key ${f.toString()}`),await this.components.datastore.put(f,i.subarray())}catch(f){this.log.error("Failed error correcting self",f)}continue}let c=!1,l={type:V.PUT_VALUE,key:e,record:i};for await(let f of this.network.sendRequest(a,l,s))f.name==="PEER_RESPONSE"&&f.record!=null&&W(f.record.value,pe.deserialize(i).value)&&(c=!0),yield f;c||(yield Me({from:a,error:new E("value not put correctly","ERR_PUT_VALUE_INVALID")},s)),this.log.error("Failed error correcting entry")}}async*put(e,t,n={}){this.log("put key %b value %b",e,t);let s=io(e,t),i=Vt(e);this.log(`storing record for key ${i.toString()}`),await this.components.datastore.put(i,s.subarray()),yield*Ut(this.peerRouting.getClosestPeers(e,{signal:n.signal}),o=>Sr(o,a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[],l={type:V.PUT_VALUE,key:e,record:s};this.log("send put to %p",a.peer.id);for await(let f of this.network.sendRequest(a.peer.id,l,n))c.push(f),f.name==="PEER_RESPONSE"&&(f.record!=null&&W(f.record.value,pe.deserialize(s).value)||c.push(Me({from:a.peer.id,error:new E("value not put correctly","ERR_PUT_VALUE_INVALID")},n)));return c}),o=>yn(o,{ordered:!1,concurrency:3}),async function*(o){for await(let a of o)yield*a})}async*get(e,t={}){this.log("get %b",e);let n=[];for await(let a of this.getMany(e,t))a.name==="VALUE"&&n.push(a),yield a;if(n.length===0)return;let s=n.map(a=>a.value),i=0;try{i=m0(this.selectors,e,s)}catch(a){if(a.code!=="ERR_NO_SELECTOR_FUNCTION_FOR_RECORD_KEY")throw a}let o=s[i];if(this.log("GetValue %b %b",e,o),o==null)throw new E("best value was not found","ERR_NOT_FOUND");yield*this.sendCorrectionRecord(e,n,o,t),yield n[i]}async*getMany(e,t={}){this.log("getMany values for %b",e);try{let i=await this.getLocal(e);yield wn({value:i.value,from:this.components.peerId},t)}catch(i){this.log("error getting local value for %b",e,i)}let n=this,s=async function*({peer:i,signal:o}){for await(let a of n.peerRouting.getValueOrPeers(i,e,{signal:o}))yield a,a.name==="PEER_RESPONSE"&&a.record!=null&&(yield wn({from:i,value:a.record.value},t))};yield*this.queryManager.run(e,s,t)}};function ao(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 ct=class r{set;constructor(e){if(this.set=new Set,e!=null)for(let t of e)this.set.add(t.toString())}get size(){return this.set.size}[Symbol.iterator](){return this.values()}add(e){this.set.add(e.toString())}clear(){this.set.clear()}delete(e){this.set.delete(e.toString())}entries(){return ao(this.set.entries(),e=>{let t=ir(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let n=ir(t);e(n,n,this)})}has(e){return this.set.has(e.toString())}values(){return ao(this.set.values(),e=>ir(e))}intersection(e){let t=new r;for(let n of e)this.has(n)&&t.add(n);return t}difference(e){let t=new r;for(let n of this)e.has(n)||t.add(n);return t}union(e){let t=new r;for(let n of e)t.add(n);for(let n of this)t.add(n);return t}};var X={get(r=globalThis){let e=r.crypto;if(e?.subtle==null)throw Object.assign(new Error("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api"),{code:"ERR_MISSING_WEB_CRYPTO"});return e}};var D0={SHA1:20,SHA256:32,SHA512:64};var h6={SHA1:"SHA-1",SHA256:"SHA-256",SHA512:"SHA-512"},d6=async(r,e)=>{let t=await X.get().subtle.sign({name:"HMAC"},r,e);return new Uint8Array(t,0,t.byteLength)};async function U0(r,e){let t=h6[r],n=await X.get().subtle.importKey("raw",e,{name:"HMAC",hash:{name:t}},!1,["sign"]);return{async digest(s){return d6(n,s)},length:D0[r]}}var bs={};ae(bs,{Ed25519PrivateKey:()=>It,Ed25519PublicKey:()=>ur,MAX_RSA_KEY_SIZE:()=>dr,RsaPrivateKey:()=>Wt,RsaPublicKey:()=>hr,Secp256k1PrivateKey:()=>mr,Secp256k1PublicKey:()=>gr,generateEphemeralKeyPair:()=>h3,generateKeyPair:()=>p7,generateKeyPairFromSeed:()=>g7,importKey:()=>w7,keyStretcher:()=>g3,keysPBM:()=>Yr,marshalPrivateKey:()=>b7,marshalPublicKey:()=>y7,supportedKeys:()=>Nt,unmarshalPrivateKey:()=>E4,unmarshalPublicKey:()=>m7});var ko={};ae(ko,{Ed25519PrivateKey:()=>It,Ed25519PublicKey:()=>ur,generateKeyPair:()=>I8,generateKeyPairFromSeed:()=>Ro,unmarshalEd25519PrivateKey:()=>E8,unmarshalEd25519PublicKey:()=>A8});function co(r,e){let t=K(r,"base64urlpad");if(e!=null){if(t.length>e)throw new Error("byte array longer than desired length");t=Q([new Uint8Array(e-t.length),t])}return t}function $e(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function Or(r){if(!Number.isSafeInteger(r)||r<0)throw new Error(`positive integer expected, not ${r}`)}function g6(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Vr(r,...e){if(!g6(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function m1(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");Or(r.outputLen),Or(r.blockLen)}function Mr(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function O0(r,e){Vr(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var y1=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;var Hr=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),We=(r,e)=>r<<32-e|r>>>e;var uf=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;var m6=async()=>{};async function V0(r,e,t){let n=Date.now();for(let s=0;s<r;s++){t(s);let i=Date.now()-n;i>=0&&i<e||(await m6(),n+=i)}}function M0(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Mt(r){return typeof r=="string"&&(r=M0(r)),Vr(r),r}function lo(...r){let e=0;for(let n=0;n<r.length;n++){let s=r[n];Vr(s),e+=s.length}let t=new Uint8Array(e);for(let n=0,s=0;n<r.length;n++){let i=r[n];t.set(i,s),s+=i.length}return t}var Fr=class{clone(){return this._cloneInto()}},y6={}.toString;function F0(r,e){if(e!==void 0&&y6.call(e)!=="[object Object]")throw new Error("Options should be object or undefined");return Object.assign(r,e)}function b1(r){let e=n=>r().update(Mt(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function Kr(r=32){if(y1&&typeof y1.getRandomValues=="function")return y1.getRandomValues(new Uint8Array(r));throw new Error("crypto.getRandomValues must be defined")}function b6(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let s=BigInt(32),i=BigInt(4294967295),o=Number(t>>s&i),a=Number(t&i),c=n?4:0,l=n?0:4;r.setUint32(e+c,o,n),r.setUint32(e+l,a,n)}var H0=(r,e,t)=>r&e^~r&t,K0=(r,e,t)=>r&e^r&t^e&t,qr=class extends Fr{constructor(e,t,n,s){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=s,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Hr(this.buffer)}update(e){Mr(this);let{view:t,buffer:n,blockLen:s}=this;e=Mt(e);let i=e.length;for(let o=0;o<i;){let a=Math.min(s-this.pos,i-o);if(a===s){let c=Hr(e);for(;s<=i-o;o+=s)this.process(c,o);continue}n.set(e.subarray(o,o+a),this.pos),this.pos+=a,o+=a,this.pos===s&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Mr(this),O0(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:s,isLE:i}=this,{pos:o}=this;t[o++]=128,this.buffer.subarray(o).fill(0),this.padOffset>s-o&&(this.process(n,0),o=0);for(let u=o;u<s;u++)t[u]=0;b6(n,s-8,BigInt(this.length*8),i),this.process(n,0);let a=Hr(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let l=c/4,f=this.get();if(l>f.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<l;u++)a.setUint32(4*u,f[u],i)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:s,finished:i,destroyed:o,pos:a}=this;return e.length=s,e.pos=a,e.finished=i,e.destroyed=o,s%t&&e.buffer.set(n),e}};var w1=BigInt(4294967295),uo=BigInt(32);function q0(r,e=!1){return e?{h:Number(r&w1),l:Number(r>>uo&w1)}:{h:Number(r>>uo&w1)|0,l:Number(r&w1)|0}}function w6(r,e=!1){let t=new Uint32Array(r.length),n=new Uint32Array(r.length);for(let s=0;s<r.length;s++){let{h:i,l:o}=q0(r[s],e);[t[s],n[s]]=[i,o]}return[t,n]}var v6=(r,e)=>BigInt(r>>>0)<<uo|BigInt(e>>>0),x6=(r,e,t)=>r>>>t,E6=(r,e,t)=>r<<32-t|e>>>t,A6=(r,e,t)=>r>>>t|e<<32-t,I6=(r,e,t)=>r<<32-t|e>>>t,B6=(r,e,t)=>r<<64-t|e>>>t-32,S6=(r,e,t)=>r>>>t-32|e<<64-t,R6=(r,e)=>e,k6=(r,e)=>r,T6=(r,e,t)=>r<<t|e>>>32-t,_6=(r,e,t)=>e<<t|r>>>32-t,N6=(r,e,t)=>e<<t-32|r>>>64-t,L6=(r,e,t)=>r<<t-32|e>>>64-t;function P6(r,e,t,n){let s=(e>>>0)+(n>>>0);return{h:r+t+(s/2**32|0)|0,l:s|0}}var C6=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),D6=(r,e,t,n)=>e+t+n+(r/2**32|0)|0,U6=(r,e,t,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0),O6=(r,e,t,n,s)=>e+t+n+s+(r/2**32|0)|0,V6=(r,e,t,n,s)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(s>>>0),M6=(r,e,t,n,s,i)=>e+t+n+s+i+(r/2**32|0)|0;var F6={fromBig:q0,split:w6,toBig:v6,shrSH:x6,shrSL:E6,rotrSH:A6,rotrSL:I6,rotrBH:B6,rotrBL:S6,rotr32H:R6,rotr32L:k6,rotlSH:T6,rotlSL:_6,rotlBH:N6,rotlBL:L6,add:P6,add3L:C6,add3H:D6,add4L:U6,add4H:O6,add5H:M6,add5L:V6},U=F6;var[H6,K6]=U.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(r=>BigInt(r))),Ft=new Uint32Array(80),Ht=new Uint32Array(80),fo=class extends qr{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){let{Ah:e,Al:t,Bh:n,Bl:s,Ch:i,Cl:o,Dh:a,Dl:c,Eh:l,El:f,Fh:u,Fl:h,Gh:m,Gl:g,Hh:d,Hl:p}=this;return[e,t,n,s,i,o,a,c,l,f,u,h,m,g,d,p]}set(e,t,n,s,i,o,a,c,l,f,u,h,m,g,d,p){this.Ah=e|0,this.Al=t|0,this.Bh=n|0,this.Bl=s|0,this.Ch=i|0,this.Cl=o|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=f|0,this.Fh=u|0,this.Fl=h|0,this.Gh=m|0,this.Gl=g|0,this.Hh=d|0,this.Hl=p|0}process(e,t){for(let w=0;w<16;w++,t+=4)Ft[w]=e.getUint32(t),Ht[w]=e.getUint32(t+=4);for(let w=16;w<80;w++){let S=Ft[w-15]|0,B=Ht[w-15]|0,I=U.rotrSH(S,B,1)^U.rotrSH(S,B,8)^U.shrSH(S,B,7),N=U.rotrSL(S,B,1)^U.rotrSL(S,B,8)^U.shrSL(S,B,7),T=Ft[w-2]|0,j=Ht[w-2]|0,F=U.rotrSH(T,j,19)^U.rotrBH(T,j,61)^U.shrSH(T,j,6),H=U.rotrSL(T,j,19)^U.rotrBL(T,j,61)^U.shrSL(T,j,6),oe=U.add4L(N,H,Ht[w-7],Ht[w-16]),fe=U.add4H(oe,I,F,Ft[w-7],Ft[w-16]);Ft[w]=fe|0,Ht[w]=oe|0}let{Ah:n,Al:s,Bh:i,Bl:o,Ch:a,Cl:c,Dh:l,Dl:f,Eh:u,El:h,Fh:m,Fl:g,Gh:d,Gl:p,Hh:x,Hl:b}=this;for(let w=0;w<80;w++){let S=U.rotrSH(u,h,14)^U.rotrSH(u,h,18)^U.rotrBH(u,h,41),B=U.rotrSL(u,h,14)^U.rotrSL(u,h,18)^U.rotrBL(u,h,41),I=u&m^~u&d,N=h&g^~h&p,T=U.add5L(b,B,N,K6[w],Ht[w]),j=U.add5H(T,x,S,I,H6[w],Ft[w]),F=T|0,H=U.rotrSH(n,s,28)^U.rotrBH(n,s,34)^U.rotrBH(n,s,39),oe=U.rotrSL(n,s,28)^U.rotrBL(n,s,34)^U.rotrBL(n,s,39),fe=n&i^n&a^i&a,_=s&o^s&c^o&c;x=d|0,b=p|0,d=m|0,p=g|0,m=u|0,g=h|0,{h:u,l:h}=U.add(l|0,f|0,j|0,F|0),l=a|0,f=c|0,a=i|0,c=o|0,i=n|0,o=s|0;let v=U.add3L(F,oe,_);n=U.add3H(v,j,H,fe),s=v|0}({h:n,l:s}=U.add(this.Ah|0,this.Al|0,n|0,s|0)),{h:i,l:o}=U.add(this.Bh|0,this.Bl|0,i|0,o|0),{h:a,l:c}=U.add(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:f}=U.add(this.Dh|0,this.Dl|0,l|0,f|0),{h:u,l:h}=U.add(this.Eh|0,this.El|0,u|0,h|0),{h:m,l:g}=U.add(this.Fh|0,this.Fl|0,m|0,g|0),{h:d,l:p}=U.add(this.Gh|0,this.Gl|0,d|0,p|0),{h:x,l:b}=U.add(this.Hh|0,this.Hl|0,x|0,b|0),this.set(n,s,i,o,a,c,l,f,u,h,m,g,d,p,x,b)}roundClean(){Ft.fill(0),Ht.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}};var En=b1(()=>new fo);var x1={};ae(x1,{aInRange:()=>Pe,abool:()=>Ze,abytes:()=>$r,bitGet:()=>W6,bitLen:()=>Y6,bitMask:()=>In,bitSet:()=>Z6,bytesToHex:()=>vt,bytesToNumberBE:()=>xt,bytesToNumberLE:()=>qt,concatBytes:()=>Et,createHmacDrbg:()=>yo,ensureBytes:()=>ie,equalBytes:()=>G6,hexToBytes:()=>or,hexToNumber:()=>mo,inRange:()=>An,isBytes:()=>Kt,memoized:()=>cr,notImplemented:()=>X6,numberToBytesBE:()=>$t,numberToBytesLE:()=>ar,numberToHexUnpadded:()=>G0,numberToVarBytesBE:()=>z6,utf8ToBytes:()=>j6,validateObject:()=>lt});var go=BigInt(0),v1=BigInt(1),q6=BigInt(2);function Kt(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function $r(r){if(!Kt(r))throw new Error("Uint8Array expected")}function Ze(r,e){if(typeof e!="boolean")throw new Error(`${r} must be valid boolean, got "${e}".`)}var $6=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function vt(r){$r(r);let e="";for(let t=0;t<r.length;t++)e+=$6[r[t]];return e}function G0(r){let e=r.toString(16);return e.length&1?`0${e}`:e}function mo(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return BigInt(r===""?"0":`0x${r}`)}var wt={_0:48,_9:57,_A:65,_F:70,_a:97,_f:102};function $0(r){if(r>=wt._0&&r<=wt._9)return r-wt._0;if(r>=wt._A&&r<=wt._F)return r-(wt._A-10);if(r>=wt._a&&r<=wt._f)return r-(wt._a-10)}function or(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);let e=r.length,t=e/2;if(e%2)throw new Error("padded hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(t);for(let s=0,i=0;s<t;s++,i+=2){let o=$0(r.charCodeAt(i)),a=$0(r.charCodeAt(i+1));if(o===void 0||a===void 0){let c=r[i]+r[i+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+i)}n[s]=o*16+a}return n}function xt(r){return mo(vt(r))}function qt(r){return $r(r),mo(vt(Uint8Array.from(r).reverse()))}function $t(r,e){return or(r.toString(16).padStart(e*2,"0"))}function ar(r,e){return $t(r,e).reverse()}function z6(r){return or(G0(r))}function ie(r,e,t){let n;if(typeof e=="string")try{n=or(e)}catch(i){throw new Error(`${r} must be valid hex string, got "${e}". Cause: ${i}`)}else if(Kt(e))n=Uint8Array.from(e);else throw new Error(`${r} must be hex string or Uint8Array`);let s=n.length;if(typeof t=="number"&&s!==t)throw new Error(`${r} expected ${t} bytes, got ${s}`);return n}function Et(...r){let e=0;for(let n=0;n<r.length;n++){let s=r[n];$r(s),e+=s.length}let t=new Uint8Array(e);for(let n=0,s=0;n<r.length;n++){let i=r[n];t.set(i,s),s+=i.length}return t}function G6(r,e){if(r.length!==e.length)return!1;let t=0;for(let n=0;n<r.length;n++)t|=r[n]^e[n];return t===0}function j6(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}var ho=r=>typeof r=="bigint"&&go<=r;function An(r,e,t){return ho(r)&&ho(e)&&ho(t)&&e<=r&&r<t}function Pe(r,e,t,n){if(!An(e,t,n))throw new Error(`expected valid ${r}: ${t} <= n < ${n}, got ${typeof e} ${e}`)}function Y6(r){let e;for(e=0;r>go;r>>=v1,e+=1);return e}function W6(r,e){return r>>BigInt(e)&v1}function Z6(r,e,t){return r|(t?v1:go)<<BigInt(e)}var In=r=>(q6<<BigInt(r-1))-v1,po=r=>new Uint8Array(r),z0=r=>Uint8Array.from(r);function yo(r,e,t){if(typeof r!="number"||r<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof t!="function")throw new Error("hmacFn must be a function");let n=po(r),s=po(r),i=0,o=()=>{n.fill(1),s.fill(0),i=0},a=(...u)=>t(s,n,...u),c=(u=po())=>{s=a(z0([0]),u),n=a(),u.length!==0&&(s=a(z0([1]),u),n=a())},l=()=>{if(i++>=1e3)throw new Error("drbg: tried 1000 values");let u=0,h=[];for(;u<e;){n=a();let m=n.slice();h.push(m),u+=n.length}return Et(...h)};return(u,h)=>{o(),c(u);let m;for(;!(m=h(l()));)c();return o(),m}}var Q6={bigint:r=>typeof r=="bigint",function:r=>typeof r=="function",boolean:r=>typeof r=="boolean",string:r=>typeof r=="string",stringOrUint8Array:r=>typeof r=="string"||Kt(r),isSafeInteger:r=>Number.isSafeInteger(r),array:r=>Array.isArray(r),field:(r,e)=>e.Fp.isValid(r),hash:r=>typeof r=="function"&&Number.isSafeInteger(r.outputLen)};function lt(r,e,t={}){let n=(s,i,o)=>{let a=Q6[i];if(typeof a!="function")throw new Error(`Invalid validator "${i}", expected function`);let c=r[s];if(!(o&&c===void 0)&&!a(c,r))throw new Error(`Invalid param ${String(s)}=${c} (${typeof c}), expected ${i}`)};for(let[s,i]of Object.entries(e))n(s,i,!1);for(let[s,i]of Object.entries(t))n(s,i,!0);return r}var X6=()=>{throw new Error("not implemented")};function cr(r){let e=new WeakMap;return(t,...n)=>{let s=e.get(t);if(s!==void 0)return s;let i=r(t,...n);return e.set(t,i),i}}var ge=BigInt(0),J=BigInt(1),lr=BigInt(2),J6=BigInt(3),bo=BigInt(4),j0=BigInt(5),Y0=BigInt(8),e8=BigInt(9),t8=BigInt(16);function Y(r,e){let t=r%e;return t>=ge?t:e+t}function r8(r,e,t){if(t<=ge||e<ge)throw new Error("Expected power/modulo > 0");if(t===J)return ge;let n=J;for(;e>ge;)e&J&&(n=n*r%t),r=r*r%t,e>>=J;return n}function ee(r,e,t){let n=r;for(;e-- >ge;)n*=n,n%=t;return n}function E1(r,e){if(r===ge||e<=ge)throw new Error(`invert: expected positive integers, got n=${r} mod=${e}`);let t=Y(r,e),n=e,s=ge,i=J,o=J,a=ge;for(;t!==ge;){let l=n/t,f=n%t,u=s-o*l,h=i-a*l;n=t,t=f,s=o,i=a,o=u,a=h}if(n!==J)throw new Error("invert: does not exist");return Y(s,e)}function n8(r){let e=(r-J)/lr,t,n,s;for(t=r-J,n=0;t%lr===ge;t/=lr,n++);for(s=lr;s<r&&r8(s,e,r)!==r-J;s++);if(n===1){let o=(r+J)/bo;return function(c,l){let f=c.pow(l,o);if(!c.eql(c.sqr(f),l))throw new Error("Cannot find square root");return f}}let i=(t+J)/lr;return function(a,c){if(a.pow(c,e)===a.neg(a.ONE))throw new Error("Cannot find square root");let l=n,f=a.pow(a.mul(a.ONE,s),t),u=a.pow(c,i),h=a.pow(c,t);for(;!a.eql(h,a.ONE);){if(a.eql(h,a.ZERO))return a.ZERO;let m=1;for(let d=a.sqr(h);m<l&&!a.eql(d,a.ONE);m++)d=a.sqr(d);let g=a.pow(f,J<<BigInt(l-m-1));f=a.sqr(g),u=a.mul(u,g),h=a.mul(h,f),l=m}return u}}function s8(r){if(r%bo===J6){let e=(r+J)/bo;return function(n,s){let i=n.pow(s,e);if(!n.eql(n.sqr(i),s))throw new Error("Cannot find square root");return i}}if(r%Y0===j0){let e=(r-j0)/Y0;return function(n,s){let i=n.mul(s,lr),o=n.pow(i,e),a=n.mul(s,o),c=n.mul(n.mul(a,lr),o),l=n.mul(a,n.sub(c,n.ONE));if(!n.eql(n.sqr(l),s))throw new Error("Cannot find square root");return l}}return r%t8,n8(r)}var W0=(r,e)=>(Y(r,e)&J)===J,i8=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function wo(r){let e={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},t=i8.reduce((n,s)=>(n[s]="function",n),e);return lt(r,t)}function o8(r,e,t){if(t<ge)throw new Error("Expected power > 0");if(t===ge)return r.ONE;if(t===J)return e;let n=r.ONE,s=e;for(;t>ge;)t&J&&(n=r.mul(n,s)),s=r.sqr(s),t>>=J;return n}function a8(r,e){let t=new Array(e.length),n=e.reduce((i,o,a)=>r.is0(o)?i:(t[a]=i,r.mul(i,o)),r.ONE),s=r.inv(n);return e.reduceRight((i,o,a)=>r.is0(o)?i:(t[a]=r.mul(i,t[a]),r.mul(i,o)),s),t}function vo(r,e){let t=e!==void 0?e:r.toString(2).length,n=Math.ceil(t/8);return{nBitLength:t,nByteLength:n}}function A1(r,e,t=!1,n={}){if(r<=ge)throw new Error(`Expected Field ORDER > 0, got ${r}`);let{nBitLength:s,nByteLength:i}=vo(r,e);if(i>2048)throw new Error("Field lengths over 2048 bytes are not supported");let o=s8(r),a=Object.freeze({ORDER:r,BITS:s,BYTES:i,MASK:In(s),ZERO:ge,ONE:J,create:c=>Y(c,r),isValid:c=>{if(typeof c!="bigint")throw new Error(`Invalid field element: expected bigint, got ${typeof c}`);return ge<=c&&c<r},is0:c=>c===ge,isOdd:c=>(c&J)===J,neg:c=>Y(-c,r),eql:(c,l)=>c===l,sqr:c=>Y(c*c,r),add:(c,l)=>Y(c+l,r),sub:(c,l)=>Y(c-l,r),mul:(c,l)=>Y(c*l,r),pow:(c,l)=>o8(a,c,l),div:(c,l)=>Y(c*E1(l,r),r),sqrN:c=>c*c,addN:(c,l)=>c+l,subN:(c,l)=>c-l,mulN:(c,l)=>c*l,inv:c=>E1(c,r),sqrt:n.sqrt||(c=>o(a,c)),invertBatch:c=>a8(a,c),cmov:(c,l,f)=>f?l:c,toBytes:c=>t?ar(c,i):$t(c,i),fromBytes:c=>{if(c.length!==i)throw new Error(`Fp.fromBytes: expected ${i}, got ${c.length}`);return t?qt(c):xt(c)}});return Object.freeze(a)}function Z0(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let e=r.toString(2).length;return Math.ceil(e/8)}function xo(r){let e=Z0(r);return e+Math.ceil(e/2)}function Q0(r,e,t=!1){let n=r.length,s=Z0(e),i=xo(e);if(n<16||n<i||n>1024)throw new Error(`expected ${i}-1024 bytes of input, got ${n}`);let o=t?xt(r):qt(r),a=Y(o,e-J)+J;return t?ar(a,s):$t(a,s)}var l8=BigInt(0),Eo=BigInt(1),Ao=new WeakMap,X0=new WeakMap;function I1(r,e){let t=(i,o)=>{let a=o.negate();return i?a:o},n=i=>{if(!Number.isSafeInteger(i)||i<=0||i>e)throw new Error(`Wrong window size=${i}, should be [1..${e}]`)},s=i=>{n(i);let o=Math.ceil(e/i)+1,a=2**(i-1);return{windows:o,windowSize:a}};return{constTimeNegate:t,unsafeLadder(i,o){let a=r.ZERO,c=i;for(;o>l8;)o&Eo&&(a=a.add(c)),c=c.double(),o>>=Eo;return a},precomputeWindow(i,o){let{windows:a,windowSize:c}=s(o),l=[],f=i,u=f;for(let h=0;h<a;h++){u=f,l.push(u);for(let m=1;m<c;m++)u=u.add(f),l.push(u);f=u.double()}return l},wNAF(i,o,a){let{windows:c,windowSize:l}=s(i),f=r.ZERO,u=r.BASE,h=BigInt(2**i-1),m=2**i,g=BigInt(i);for(let d=0;d<c;d++){let p=d*l,x=Number(a&h);a>>=g,x>l&&(x-=m,a+=Eo);let b=p,w=p+Math.abs(x)-1,S=d%2!==0,B=x<0;x===0?u=u.add(t(S,o[b])):f=f.add(t(B,o[w]))}return{p:f,f:u}},wNAFCached(i,o,a){let c=X0.get(i)||1,l=Ao.get(i);return l||(l=this.precomputeWindow(i,c),c!==1&&Ao.set(i,a(l))),this.wNAF(c,l,o)},setWindowSize(i,o){n(o),X0.set(i,o),Ao.delete(i)}}}function Bn(r){return wo(r.Fp),lt(r,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...vo(r.n,r.nBitLength),...r,p:r.Fp.ORDER})}var Qe=BigInt(0),Ce=BigInt(1),B1=BigInt(2),u8=BigInt(8),f8={zip215:!0};function h8(r){let e=Bn(r);return lt(r,{hash:"function",a:"bigint",d:"bigint",randomBytes:"function"},{adjustScalarBytes:"function",domain:"function",uvRatio:"function",mapToCurve:"function"}),Object.freeze({...e})}function J0(r){let e=h8(r),{Fp:t,n,prehash:s,hash:i,randomBytes:o,nByteLength:a,h:c}=e,l=B1<<BigInt(a*8)-Ce,f=t.create,u=e.uvRatio||((v,y)=>{try{return{isValid:!0,value:t.sqrt(v*t.inv(y))}}catch{return{isValid:!1,value:Qe}}}),h=e.adjustScalarBytes||(v=>v),m=e.domain||((v,y,A)=>{if(Ze("phflag",A),y.length||A)throw new Error("Contexts/pre-hash are not supported");return v});function g(v,y){Pe("coordinate "+v,y,Qe,l)}function d(v){if(!(v instanceof b))throw new Error("ExtendedPoint expected")}let p=cr((v,y)=>{let{ex:A,ey:R,ez:P}=v,C=v.is0();y==null&&(y=C?u8:t.inv(P));let D=f(A*y),q=f(R*y),O=f(P*y);if(C)return{x:Qe,y:Ce};if(O!==Ce)throw new Error("invZ was invalid");return{x:D,y:q}}),x=cr(v=>{let{a:y,d:A}=e;if(v.is0())throw new Error("bad point: ZERO");let{ex:R,ey:P,ez:C,et:D}=v,q=f(R*R),O=f(P*P),$=f(C*C),te=f($*$),re=f(q*y),_e=f($*f(re+O)),me=f(te+f(A*f(q*O)));if(_e!==me)throw new Error("bad point: equation left != right (1)");let he=f(R*P),Ge=f(C*D);if(he!==Ge)throw new Error("bad point: equation left != right (2)");return!0});class b{constructor(y,A,R,P){this.ex=y,this.ey=A,this.ez=R,this.et=P,g("x",y),g("y",A),g("z",R),g("t",P),Object.freeze(this)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static fromAffine(y){if(y instanceof b)throw new Error("extended point not allowed");let{x:A,y:R}=y||{};return g("x",A),g("y",R),new b(A,R,Ce,f(A*R))}static normalizeZ(y){let A=t.invertBatch(y.map(R=>R.ez));return y.map((R,P)=>R.toAffine(A[P])).map(b.fromAffine)}_setWindowSize(y){B.setWindowSize(this,y)}assertValidity(){x(this)}equals(y){d(y);let{ex:A,ey:R,ez:P}=this,{ex:C,ey:D,ez:q}=y,O=f(A*q),$=f(C*P),te=f(R*q),re=f(D*P);return O===$&&te===re}is0(){return this.equals(b.ZERO)}negate(){return new b(f(-this.ex),this.ey,this.ez,f(-this.et))}double(){let{a:y}=e,{ex:A,ey:R,ez:P}=this,C=f(A*A),D=f(R*R),q=f(B1*f(P*P)),O=f(y*C),$=A+R,te=f(f($*$)-C-D),re=O+D,_e=re-q,me=O-D,he=f(te*_e),Ge=f(re*me),ye=f(te*me),je=f(_e*re);return new b(he,Ge,je,ye)}add(y){d(y);let{a:A,d:R}=e,{ex:P,ey:C,ez:D,et:q}=this,{ex:O,ey:$,ez:te,et:re}=y;if(A===BigInt(-1)){let b2=f((C-P)*($+O)),w2=f((C+P)*($-O)),si=f(w2-b2);if(si===Qe)return this.double();let v2=f(D*B1*re),x2=f(q*B1*te),E2=x2+v2,A2=w2+b2,I2=x2-v2,ia=f(E2*si),oa=f(A2*I2),aa=f(E2*I2),ca=f(si*A2);return new b(ia,oa,ca,aa)}let _e=f(P*O),me=f(C*$),he=f(q*R*re),Ge=f(D*te),ye=f((P+C)*(O+$)-_e-me),je=Ge-he,er=Ge+he,cn=f(me-A*_e),jn=f(ye*je),ra=f(er*cn),na=f(ye*cn),sa=f(je*er);return new b(jn,ra,sa,na)}subtract(y){return this.add(y.negate())}wNAF(y){return B.wNAFCached(this,y,b.normalizeZ)}multiply(y){let A=y;Pe("scalar",A,Ce,n);let{p:R,f:P}=this.wNAF(A);return b.normalizeZ([R,P])[0]}multiplyUnsafe(y){let A=y;return Pe("scalar",A,Qe,n),A===Qe?S:this.equals(S)||A===Ce?this:this.equals(w)?this.wNAF(A).p:B.unsafeLadder(this,A)}isSmallOrder(){return this.multiplyUnsafe(c).is0()}isTorsionFree(){return B.unsafeLadder(this,n).is0()}toAffine(y){return p(this,y)}clearCofactor(){let{h:y}=e;return y===Ce?this:this.multiplyUnsafe(y)}static fromHex(y,A=!1){let{d:R,a:P}=e,C=t.BYTES;y=ie("pointHex",y,C),Ze("zip215",A);let D=y.slice(),q=y[C-1];D[C-1]=q&-129;let O=qt(D),$=A?l:t.ORDER;Pe("pointHex.y",O,Qe,$);let te=f(O*O),re=f(te-Ce),_e=f(R*te-P),{isValid:me,value:he}=u(re,_e);if(!me)throw new Error("Point.fromHex: invalid y coordinate");let Ge=(he&Ce)===Ce,ye=(q&128)!==0;if(!A&&he===Qe&&ye)throw new Error("Point.fromHex: x=0 and x_0=1");return ye!==Ge&&(he=f(-he)),b.fromAffine({x:he,y:O})}static fromPrivateKey(y){return T(y).point}toRawBytes(){let{x:y,y:A}=this.toAffine(),R=ar(A,t.BYTES);return R[R.length-1]|=y&Ce?128:0,R}toHex(){return vt(this.toRawBytes())}}b.BASE=new b(e.Gx,e.Gy,Ce,f(e.Gx*e.Gy)),b.ZERO=new b(Qe,Ce,Ce,Qe);let{BASE:w,ZERO:S}=b,B=I1(b,a*8);function I(v){return Y(v,n)}function N(v){return I(qt(v))}function T(v){let y=a;v=ie("private key",v,y);let A=ie("hashed private key",i(v),2*y),R=h(A.slice(0,y)),P=A.slice(y,2*y),C=N(R),D=w.multiply(C),q=D.toRawBytes();return{head:R,prefix:P,scalar:C,point:D,pointBytes:q}}function j(v){return T(v).pointBytes}function F(v=new Uint8Array,...y){let A=Et(...y);return N(i(m(A,ie("context",v),!!s)))}function H(v,y,A={}){v=ie("message",v),s&&(v=s(v));let{prefix:R,scalar:P,pointBytes:C}=T(y),D=F(A.context,R,v),q=w.multiply(D).toRawBytes(),O=F(A.context,q,C,v),$=I(D+O*P);Pe("signature.s",$,Qe,n);let te=Et(q,ar($,t.BYTES));return ie("result",te,a*2)}let oe=f8;function fe(v,y,A,R=oe){let{context:P,zip215:C}=R,D=t.BYTES;v=ie("signature",v,2*D),y=ie("message",y),C!==void 0&&Ze("zip215",C),s&&(y=s(y));let q=qt(v.slice(D,2*D)),O,$,te;try{O=b.fromHex(A,C),$=b.fromHex(v.slice(0,D),C),te=w.multiplyUnsafe(q)}catch{return!1}if(!C&&O.isSmallOrder())return!1;let re=F(P,$.toRawBytes(),O.toRawBytes(),y);return $.add(O.multiplyUnsafe(re)).subtract(te).clearCofactor().equals(b.ZERO)}return w._setWindowSize(8),{CURVE:e,getPublicKey:j,sign:H,verify:fe,ExtendedPoint:b,utils:{getExtendedPublicKey:T,randomPrivateKey:()=>o(t.BYTES),precompute(v=8,y=b.BASE){return y._setWindowSize(v),y.multiply(BigInt(3)),y}}}}var Io=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),e3=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),Pf=BigInt(0),d8=BigInt(1),t3=BigInt(2),Cf=BigInt(3),p8=BigInt(5),g8=BigInt(8);function m8(r){let e=BigInt(10),t=BigInt(20),n=BigInt(40),s=BigInt(80),i=Io,a=r*r%i*r%i,c=ee(a,t3,i)*a%i,l=ee(c,d8,i)*r%i,f=ee(l,p8,i)*l%i,u=ee(f,e,i)*f%i,h=ee(u,t,i)*u%i,m=ee(h,n,i)*h%i,g=ee(m,s,i)*m%i,d=ee(g,s,i)*m%i,p=ee(d,e,i)*f%i;return{pow_p_5_8:ee(p,t3,i)*r%i,b2:a}}function y8(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}function b8(r,e){let t=Io,n=Y(e*e*e,t),s=Y(n*n*e,t),i=m8(r*s).pow_p_5_8,o=Y(r*n*i,t),a=Y(e*o*o,t),c=o,l=Y(o*e3,t),f=a===r,u=a===Y(-r,t),h=a===Y(-r*e3,t);return f&&(o=c),(u||h)&&(o=l),W0(o,t)&&(o=Y(-o,t)),{isValid:f||u,value:o}}var w8=A1(Io,void 0,!0),v8={a:BigInt(-1),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),Fp:w8,n:BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),h:g8,Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960"),hash:En,randomBytes:Kr,adjustScalarBytes:y8,uvRatio:b8},zr=J0(v8);var Gr=32,At=64,S1=32;function r3(){let r=zr.utils.randomPrivateKey(),e=zr.getPublicKey(r);return{privateKey:o3(r,e),publicKey:e}}function n3(r){if(r.length!==S1)throw new TypeError('"seed" must be 32 bytes in length.');if(!(r instanceof Uint8Array))throw new TypeError('"seed" must be a node.js Buffer, or Uint8Array.');let e=r,t=zr.getPublicKey(e);return{privateKey:o3(e,t),publicKey:t}}function s3(r,e){let t=r.subarray(0,S1);return zr.sign(e instanceof Uint8Array?e:e.subarray(),t)}function i3(r,e,t){return zr.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function o3(r,e){let t=new Uint8Array(At);for(let n=0;n<S1;n++)t[n]=r[n],t[S1+n]=e[n];return t}var Bo={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function R1(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,s=r?.digest??"SHA-256",i=r?.saltLength??16,o=r?.iterations??32767,a=X.get();t*=8;async function c(u,h){let m=a.getRandomValues(new Uint8Array(i)),g=a.getRandomValues(new Uint8Array(n)),d={name:e,iv:g};typeof h=="string"&&(h=K(h));let p;if(h.length===0){p=await a.subtle.importKey("jwk",Bo,{name:"AES-GCM"},!0,["encrypt"]);try{let b={name:"PBKDF2",salt:m,iterations:o,hash:{name:s}},w=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);p=await a.subtle.deriveKey(b,w,{name:e,length:t},!0,["encrypt"])}catch{p=await a.subtle.importKey("jwk",Bo,{name:"AES-GCM"},!0,["encrypt"])}}else{let b={name:"PBKDF2",salt:m,iterations:o,hash:{name:s}},w=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);p=await a.subtle.deriveKey(b,w,{name:e,length:t},!0,["encrypt"])}let x=await a.subtle.encrypt(d,p,u);return Q([m,d.iv,new Uint8Array(x)])}async function l(u,h){let m=u.subarray(0,i),g=u.subarray(i,i+n),d=u.subarray(i+n),p={name:e,iv:g};typeof h=="string"&&(h=K(h));let x;if(h.length===0)try{let w={name:"PBKDF2",salt:m,iterations:o,hash:{name:s}},S=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);x=await a.subtle.deriveKey(w,S,{name:e,length:t},!0,["decrypt"])}catch{x=await a.subtle.importKey("jwk",Bo,{name:"AES-GCM"},!0,["decrypt"])}else{let w={name:"PBKDF2",salt:m,iterations:o,hash:{name:s}},S=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);x=await a.subtle.deriveKey(w,S,{name:e,length:t},!0,["decrypt"])}let b=await a.subtle.decrypt(p,x,d);return new Uint8Array(b)}return{encrypt:c,decrypt:l}}async function jr(r,e){let n=await R1().encrypt(r,e);return ln.encode(n)}var Yr={};ae(Yr,{KeyType:()=>Z,PrivateKey:()=>Je,PublicKey:()=>Xe});var Z;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.Secp256k1="Secp256k1"})(Z||(Z={}));var So;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.Secp256k1=2]="Secp256k1"})(So||(So={}));(function(r){r.codec=()=>Br(So)})(Z||(Z={}));var Xe;(function(r){let e;r.codec=()=>(e==null&&(e=at((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Z.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),s.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let s={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let o=t.uint32();switch(o>>>3){case 1:s.Type=Z.codec().decode(t);break;case 2:s.Data=t.bytes();break;default:t.skipType(o&7);break}}return s})),e),r.encode=t=>ot(t,r.codec()),r.decode=t=>st(t,r.codec())})(Xe||(Xe={}));var Je;(function(r){let e;r.codec=()=>(e==null&&(e=at((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Z.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),s.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let s={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let o=t.uint32();switch(o>>>3){case 1:s.Type=Z.codec().decode(t);break;case 2:s.Data=t.bytes();break;default:t.skipType(o&7);break}}return s})),e),r.encode=t=>ot(t,r.codec()),r.decode=t=>st(t,r.codec())})(Je||(Je={}));var ur=class{_key;constructor(e){this._key=Wr(e,Gr)}verify(e,t){return i3(this._key,t,e)}marshal(){return this._key}get bytes(){return Xe.encode({Type:Z.Ed25519,Data:this.marshal()}).subarray()}equals(e){return W(this.bytes,e.bytes)}hash(){let e=ne.digest(this.bytes);return $e(e)?e.then(({bytes:t})=>t):e.bytes}},It=class{_key;_publicKey;constructor(e,t){this._key=Wr(e,At),this._publicKey=Wr(t,Gr)}sign(e){return s3(this._key,e)}get public(){return new ur(this._publicKey)}marshal(){return this._key}get bytes(){return Je.encode({Type:Z.Ed25519,Data:this.marshal()}).subarray()}equals(e){return W(this.bytes,e.bytes)}async hash(){let e=ne.digest(this.bytes),t;return $e(e)?{bytes:t}=await e:t=e.bytes,t}async id(){let e=mt.digest(this.public.bytes);return de.encode(e.bytes).substring(1)}async export(e,t="libp2p-key"){if(t==="libp2p-key")return jr(this.bytes,e);throw new E(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function E8(r){if(r.length>At){r=Wr(r,At+Gr);let n=r.subarray(0,At),s=r.subarray(At,r.length);return new It(n,s)}r=Wr(r,At);let e=r.subarray(0,At),t=r.subarray(Gr);return new It(e,t)}function A8(r){return r=Wr(r,Gr),new ur(r)}async function I8(){let{privateKey:r,publicKey:e}=r3();return new It(r,e)}async function Ro(r){let{privateKey:e,publicKey:t}=n3(r);return new It(e,t)}function Wr(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new E(`Key must be a Uint8Array of length ${e}, got ${r.length}`,"ERR_INVALID_KEY_TYPE");return r}var c3={"P-256":256,"P-384":384,"P-521":521},B8=Object.keys(c3),To=B8.join(" / ");async function l3(r){if(r!=="P-256"&&r!=="P-384"&&r!=="P-521")throw new E(`Unknown curve: ${r}. Must be ${To}`,"ERR_INVALID_CURVE");let e=await X.get().subtle.generateKey({name:"ECDH",namedCurve:r},!0,["deriveBits"]),t=async(i,o)=>{let a;o!=null?a=await X.get().subtle.importKey("jwk",R8(r,o),{name:"ECDH",namedCurve:r},!1,["deriveBits"]):a=e.privateKey;let c=await X.get().subtle.importKey("jwk",f3(r,i),{name:"ECDH",namedCurve:r},!1,[]),l=await X.get().subtle.deriveBits({name:"ECDH",namedCurve:r,public:c},a,c3[r]);return new Uint8Array(l,0,l.byteLength)},n=await X.get().subtle.exportKey("jwk",e.publicKey);return{key:S8(n),genSharedKey:t}}var u3={"P-256":32,"P-384":48,"P-521":66};function S8(r){if(r.crv==null||r.x==null||r.y==null)throw new E("JWK was missing components","ERR_INVALID_PARAMETERS");if(r.crv!=="P-256"&&r.crv!=="P-384"&&r.crv!=="P-521")throw new E(`Unknown curve: ${r.crv}. Must be ${To}`,"ERR_INVALID_CURVE");let e=u3[r.crv];return Q([Uint8Array.from([4]),co(r.x,e),co(r.y,e)],1+e*2)}function f3(r,e){if(r!=="P-256"&&r!=="P-384"&&r!=="P-521")throw new E(`Unknown curve: ${r}. Must be ${To}`,"ERR_INVALID_CURVE");let t=u3[r];if(!W(e.subarray(0,1),Uint8Array.from([4])))throw new E("Cannot unmarshal public key - invalid key format","ERR_INVALID_KEY_FORMAT");return{kty:"EC",crv:r,x:L(e.subarray(1,t+1),"base64url"),y:L(e.subarray(1+t),"base64url"),ext:!0}}var R8=(r,e)=>({...f3(r,e.public),d:L(e.private,"base64url")});var h3=l3;async function d3(r,e){let t=ln.decode(r);return R1().decrypt(t,e)}var p3={"AES-128":{ivSize:16,keySize:16},"AES-256":{ivSize:16,keySize:32},Blowfish:{ivSize:8,keySize:32}};async function g3(r,e,t){let n=p3[r];if(n==null){let b=Object.keys(p3).join(" / ");throw new E(`unknown cipher type '${r}'. Must be ${b}`,"ERR_INVALID_CIPHER_TYPE")}if(e==null)throw new E("missing hash type","ERR_MISSING_HASH_TYPE");let s=n.keySize,i=n.ivSize,o=20,a=K("key expansion"),c=2*(i+s+o),l=await U0(e,t),f=await l.digest(a),u=[],h=0;for(;h<c;){let b=await l.digest(Q([f,a])),w=b.length;h+w>c&&(w=c-h),u.push(b),h+=w,f=await l.digest(f)}let m=c/2,g=Q(u),d=g.subarray(0,m),p=g.subarray(m,c),x=b=>({iv:b.subarray(0,i),cipherKey:b.subarray(i,i+s),macKey:b.subarray(i+s)});return{k1:x(d),k2:x(p)}}var Fo={};ae(Fo,{MAX_RSA_KEY_SIZE:()=>dr,RsaPrivateKey:()=>Wt,RsaPublicKey:()=>hr,fromJwk:()=>J8,generateKeyPair:()=>e7,unmarshalRsaPrivateKey:()=>Vo,unmarshalRsaPublicKey:()=>X8});function ut(r){if(isNaN(r)||r<=0)throw new E("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return Kr(r)}var Yt={};ae(Yt,{exportToPem:()=>Y8,importFromPem:()=>Oo,jwkToPkcs1:()=>$8,jwkToPkix:()=>G8,pkcs1ToJwk:()=>q8,pkixToJwk:()=>z8});var k1=class extends Fr{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,m1(e);let n=Mt(t);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let s=this.blockLen,i=new Uint8Array(s);i.set(n.length>s?e.create().update(n).digest():n);for(let o=0;o<i.length;o++)i[o]^=54;this.iHash.update(i),this.oHash=e.create();for(let o=0;o<i.length;o++)i[o]^=106;this.oHash.update(i),i.fill(0)}update(e){return Mr(this),this.iHash.update(e),this}digestInto(e){Mr(this),Vr(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));let{oHash:t,iHash:n,finished:s,destroyed:i,blockLen:o,outputLen:a}=this;return e=e,e.finished=s,e.destroyed=i,e.blockLen=o,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},Sn=(r,e,t)=>new k1(r,e).update(t).digest();Sn.create=(r,e)=>new k1(r,e);function k8(r,e,t,n){m1(r);let s=F0({dkLen:32,asyncTick:10},n),{c:i,dkLen:o,asyncTick:a}=s;if(Or(i),Or(o),Or(a),i<1)throw new Error("PBKDF2: iterations (c) should be >= 1");let c=Mt(e),l=Mt(t),f=new Uint8Array(o),u=Sn.create(r,c),h=u._cloneInto().update(l);return{c:i,dkLen:o,asyncTick:a,DK:f,PRF:u,PRFSalt:h}}function T8(r,e,t,n,s){return r.destroy(),e.destroy(),n&&n.destroy(),s.fill(0),t}async function _o(r,e,t,n){let{c:s,dkLen:i,asyncTick:o,DK:a,PRF:c,PRFSalt:l}=k8(r,e,t,n),f,u=new Uint8Array(4),h=Hr(u),m=new Uint8Array(c.outputLen);for(let g=1,d=0;d<i;g++,d+=c.outputLen){let p=a.subarray(d,d+c.outputLen);h.setInt32(0,g,!1),(f=l._cloneInto(f)).update(u).digestInto(m),p.set(m.subarray(0,p.length)),await V0(s-1,o,()=>{c._cloneInto(f).update(m).digestInto(m);for(let x=0;x<p.length;x++)p[x]^=m[x]})}return T8(c,l,a,f,m)}var M=Zn(m3());function fr(r,e){let t=0;if(r.length===1)return r[0];for(let n=r.length-1;n>=0;n--)t+=r[r.length-1-n]*Math.pow(2,e*n);return t}function zt(r,e,t=-1){let n=t,s=r,i=0,o=Math.pow(2,e);for(let a=1;a<8;a++){if(r<o){let c;if(n<0)c=new ArrayBuffer(a),i=a;else{if(n<a)return new ArrayBuffer(0);c=new ArrayBuffer(n),i=n}let l=new Uint8Array(c);for(let f=a-1;f>=0;f--){let u=Math.pow(2,f*e);l[i-f-1]=Math.floor(s/u),s-=l[i-f-1]*u}return c}o*=Math.pow(2,e)}return new ArrayBuffer(0)}function N1(...r){let e=0,t=0;for(let i of r)e+=i.length;let n=new ArrayBuffer(e),s=new Uint8Array(n);for(let i of r)s.set(i,t),t+=i.length;return s}function Lo(){let r=new Uint8Array(this.valueHex);if(this.valueHex.byteLength>=2){let a=r[0]===255&&r[1]&128,c=r[0]===0&&(r[1]&128)===0;(a||c)&&this.warnings.push("Needlessly long format")}let e=new ArrayBuffer(this.valueHex.byteLength),t=new Uint8Array(e);for(let a=0;a<this.valueHex.byteLength;a++)t[a]=0;t[0]=r[0]&128;let n=fr(t,8),s=new ArrayBuffer(this.valueHex.byteLength),i=new Uint8Array(s);for(let a=0;a<this.valueHex.byteLength;a++)i[a]=r[a];return i[0]&=127,fr(i,8)-n}function y3(r){let e=r<0?r*-1:r,t=128;for(let n=1;n<8;n++){if(e<=t){if(r<0){let o=t-e,a=zt(o,8,n),c=new Uint8Array(a);return c[0]|=128,a}let s=zt(e,8,n),i=new Uint8Array(s);if(i[0]&128){let o=s.slice(0),a=new Uint8Array(o);s=new ArrayBuffer(s.byteLength+1),i=new Uint8Array(s);for(let c=0;c<o.byteLength;c++)i[c+1]=a[c];i[0]=0}return s}t*=Math.pow(2,8)}return new ArrayBuffer(0)}function b3(r,e){if(r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let s=0;s<t.length;s++)if(t[s]!==n[s])return!1;return!0}function De(r,e){let t=r.toString(10);if(e<t.length)return"";let n=e-t.length,s=new Array(n);for(let o=0;o<n;o++)s[o]="0";return s.join("").concat(t)}var Eh=Math.log(2);function L1(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function Po(r){let e=0,t=0;for(let s=0;s<r.length;s++){let i=r[s];e+=i.byteLength}let n=new Uint8Array(e);for(let s=0;s<r.length;s++){let i=r[s];n.set(new Uint8Array(i),t),t+=i.byteLength}return n.buffer}function Tt(r,e,t,n){return e instanceof Uint8Array?e.byteLength?t<0?(r.error="Wrong parameter: inputOffset less than zero",!1):n<0?(r.error="Wrong parameter: inputLength less than zero",!1):e.byteLength-t-n<0?(r.error="End of input reached before message was fully decoded (inconsistent offset and length values)",!1):!0:(r.error="Wrong parameter: inputBuffer has zero length",!1):(r.error="Wrong parameter: inputBuffer must be 'Uint8Array'",!1)}var kn=class{constructor(){this.items=[]}write(e){this.items.push(e)}final(){return Po(this.items)}},Rn=[new Uint8Array([1])],w3="0123456789";var Xr="",tt=new ArrayBuffer(0),Co=new Uint8Array(0),Tn="EndOfContent",x3="OCTET STRING",E3="BIT STRING";function _t(r){var e;return e=class extends r{constructor(...n){var s;super(...n);let i=n[0]||{};this.isHexOnly=(s=i.isHexOnly)!==null&&s!==void 0?s:!1,this.valueHexView=i.valueHex?M.BufferSourceConverter.toUint8Array(i.valueHex):Co}get valueHex(){return this.valueHexView.slice().buffer}set valueHex(n){this.valueHexView=new Uint8Array(n)}fromBER(n,s,i){let o=n instanceof ArrayBuffer?new Uint8Array(n):n;if(!Tt(this,o,s,i))return-1;let a=s+i;return this.valueHexView=o.subarray(s,a),this.valueHexView.length?(this.blockLength=i,a):(this.warnings.push("Zero buffer length"),s)}toBER(n=!1){return this.isHexOnly?n?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.byteLength===this.valueHexView.buffer.byteLength?this.valueHexView.buffer:this.valueHexView.slice().buffer:(this.error="Flag 'isHexOnly' is not set, abort",tt)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:M.Convert.ToHex(this.valueHexView)}}},e.NAME="hexBlock",e}var St=class{constructor({blockLength:e=0,error:t=Xr,warnings:n=[],valueBeforeDecode:s=Co}={}){this.blockLength=e,this.error=t,this.warnings=n,this.valueBeforeDecodeView=M.BufferSourceConverter.toUint8Array(s)}static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(e){this.valueBeforeDecodeView=new Uint8Array(e)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:M.Convert.ToHex(this.valueBeforeDecodeView)}}};St.NAME="baseBlock";var Se=class extends St{fromBER(e,t,n){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}toBER(e,t){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}};Se.NAME="valueBlock";var P1=class extends _t(St){constructor({idBlock:e={}}={}){var t,n,s,i;super(),e?(this.isHexOnly=(t=e.isHexOnly)!==null&&t!==void 0?t:!1,this.valueHexView=e.valueHex?M.BufferSourceConverter.toUint8Array(e.valueHex):Co,this.tagClass=(n=e.tagClass)!==null&&n!==void 0?n:-1,this.tagNumber=(s=e.tagNumber)!==null&&s!==void 0?s:-1,this.isConstructed=(i=e.isConstructed)!==null&&i!==void 0?i:!1):(this.tagClass=-1,this.tagNumber=-1,this.isConstructed=!1)}toBER(e=!1){let t=0;switch(this.tagClass){case 1:t|=0;break;case 2:t|=64;break;case 3:t|=128;break;case 4:t|=192;break;default:return this.error="Unknown tag class",tt}if(this.isConstructed&&(t|=32),this.tagNumber<31&&!this.isHexOnly){let s=new Uint8Array(1);if(!e){let i=this.tagNumber;i&=31,t|=i,s[0]=t}return s.buffer}if(!this.isHexOnly){let s=zt(this.tagNumber,7),i=new Uint8Array(s),o=s.byteLength,a=new Uint8Array(o+1);if(a[0]=t|31,!e){for(let c=0;c<o-1;c++)a[c+1]=i[c]|128;a[o]=i[o-1]}return a.buffer}let n=new Uint8Array(this.valueHexView.byteLength+1);if(n[0]=t|31,!e){let s=this.valueHexView;for(let i=0;i<s.length-1;i++)n[i+1]=s[i]|128;n[this.valueHexView.byteLength]=s[s.length-1]}return n.buffer}fromBER(e,t,n){let s=M.BufferSourceConverter.toUint8Array(e);if(!Tt(this,s,t,n))return-1;let i=s.subarray(t,t+n);if(i.length===0)return this.error="Zero buffer length",-1;switch(i[0]&192){case 0:this.tagClass=1;break;case 64:this.tagClass=2;break;case 128:this.tagClass=3;break;case 192:this.tagClass=4;break;default:return this.error="Unknown tag class",-1}this.isConstructed=(i[0]&32)===32,this.isHexOnly=!1;let a=i[0]&31;if(a!==31)this.tagNumber=a,this.blockLength=1;else{let c=1,l=this.valueHexView=new Uint8Array(255),f=255;for(;i[c]&128;){if(l[c-1]=i[c]&127,c++,c>=i.length)return this.error="End of input reached before message was fully decoded",-1;if(c===f){f+=255;let h=new Uint8Array(f);for(let m=0;m<l.length;m++)h[m]=l[m];l=this.valueHexView=new Uint8Array(f)}}this.blockLength=c+1,l[c-1]=i[c]&127;let u=new Uint8Array(c);for(let h=0;h<c;h++)u[h]=l[h];l=this.valueHexView=new Uint8Array(c),l.set(u),this.blockLength<=9?this.tagNumber=fr(l,7):(this.isHexOnly=!0,this.warnings.push("Tag too long, represented as hex-coded"))}if(this.tagClass===1&&this.isConstructed)switch(this.tagNumber){case 1:case 2:case 5:case 6:case 9:case 13:case 14:case 23:case 24:case 31:case 32:case 33:case 34:return this.error="Constructed encoding used for primitive type",-1}return t+this.blockLength}toJSON(){return{...super.toJSON(),tagClass:this.tagClass,tagNumber:this.tagNumber,isConstructed:this.isConstructed}}};P1.NAME="identificationBlock";var C1=class extends St{constructor({lenBlock:e={}}={}){var t,n,s;super(),this.isIndefiniteForm=(t=e.isIndefiniteForm)!==null&&t!==void 0?t:!1,this.longFormUsed=(n=e.longFormUsed)!==null&&n!==void 0?n:!1,this.length=(s=e.length)!==null&&s!==void 0?s:0}fromBER(e,t,n){let s=M.BufferSourceConverter.toUint8Array(e);if(!Tt(this,s,t,n))return-1;let i=s.subarray(t,t+n);if(i.length===0)return this.error="Zero buffer length",-1;if(i[0]===255)return this.error="Length block 0xFF is reserved by standard",-1;if(this.isIndefiniteForm=i[0]===128,this.isIndefiniteForm)return this.blockLength=1,t+this.blockLength;if(this.longFormUsed=!!(i[0]&128),this.longFormUsed===!1)return this.length=i[0],this.blockLength=1,t+this.blockLength;let o=i[0]&127;if(o>8)return this.error="Too big integer",-1;if(o+1>i.length)return this.error="End of input reached before message was fully decoded",-1;let a=t+1,c=s.subarray(a,a+o);return c[o-1]===0&&this.warnings.push("Needlessly long encoded length"),this.length=fr(c,8),this.longFormUsed&&this.length<=127&&this.warnings.push("Unnecessary usage of long length form"),this.blockLength=o+1,t+this.blockLength}toBER(e=!1){let t,n;if(this.length>127&&(this.longFormUsed=!0),this.isIndefiniteForm)return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=128),t;if(this.longFormUsed){let s=zt(this.length,8);if(s.byteLength>127)return this.error="Too big length",tt;if(t=new ArrayBuffer(s.byteLength+1),e)return t;let i=new Uint8Array(s);n=new Uint8Array(t),n[0]=s.byteLength|128;for(let o=0;o<s.byteLength;o++)n[o+1]=i[o];return t}return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=this.length),t}toJSON(){return{...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,longFormUsed:this.longFormUsed,length:this.length}}};C1.NAME="lengthBlock";var k={},Ee=class extends St{constructor({name:e=Xr,optional:t=!1,primitiveSchema:n,...s}={},i){super(s),this.name=e,this.optional=t,n&&(this.primitiveSchema=n),this.idBlock=new P1(s),this.lenBlock=new C1(s),this.valueBlock=i?new i(s):new Se(s)}fromBER(e,t,n){let s=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return s===-1?(this.error=this.valueBlock.error,s):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),s)}toBER(e,t){let n=t||new kn;t||A3(this);let s=this.idBlock.toBER(e);if(n.write(s),this.lenBlock.isIndefiniteForm)n.write(new Uint8Array([128]).buffer),this.valueBlock.toBER(e,n),n.write(new ArrayBuffer(2));else{let i=this.valueBlock.toBER(e);this.lenBlock.length=i.byteLength;let o=this.lenBlock.toBER(e);n.write(o),n.write(i)}return t?tt:n.final()}toJSON(){let e={...super.toJSON(),idBlock:this.idBlock.toJSON(),lenBlock:this.lenBlock.toJSON(),valueBlock:this.valueBlock.toJSON(),name:this.name,optional:this.optional};return this.primitiveSchema&&(e.primitiveSchema=this.primitiveSchema.toJSON()),e}toString(e="ascii"){return e==="ascii"?this.onAsciiEncoding():M.Convert.ToHex(this.toBER())}onAsciiEncoding(){return`${this.constructor.NAME} : ${M.Convert.ToHex(this.valueBlock.valueBeforeDecodeView)}`}isEqual(e){if(this===e)return!0;if(!(e instanceof this.constructor))return!1;let t=this.toBER(),n=e.toBER();return b3(t,n)}};Ee.NAME="BaseBlock";function A3(r){if(r instanceof k.Constructed)for(let e of r.valueBlock.value)A3(e)&&(r.lenBlock.isIndefiniteForm=!0);return!!r.lenBlock.isIndefiniteForm}var D1=class extends Ee{constructor({value:e=Xr,...t}={},n){super(t,n),e&&this.fromString(e)}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}fromBER(e,t,n){let s=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return s===-1?(this.error=this.valueBlock.error,s):(this.fromBuffer(this.valueBlock.valueHexView),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),s)}onAsciiEncoding(){return`${this.constructor.NAME} : '${this.valueBlock.value}'`}};D1.NAME="BaseStringBlock";var U1=class extends _t(Se){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}};U1.NAME="PrimitiveValueBlock";var I3,O1=class extends Ee{constructor(e={}){super(e,U1),this.idBlock.isConstructed=!1}};I3=O1;k.Primitive=I3;O1.NAME="PRIMITIVE";function V8(r,e){if(r instanceof e)return r;let t=new e;return t.idBlock=r.idBlock,t.lenBlock=r.lenBlock,t.warnings=r.warnings,t.valueBeforeDecodeView=r.valueBeforeDecodeView,t}function ms(r,e=0,t=r.length){let n=e,s=new Ee({},Se),i=new St;if(!Tt(i,r,e,t))return s.error=i.error,{offset:-1,result:s};if(!r.subarray(e,e+t).length)return s.error="Zero buffer length",{offset:-1,result:s};let a=s.idBlock.fromBER(r,e,t);if(s.idBlock.warnings.length&&s.warnings.concat(s.idBlock.warnings),a===-1)return s.error=s.idBlock.error,{offset:-1,result:s};if(e=a,t-=s.idBlock.blockLength,a=s.lenBlock.fromBER(r,e,t),s.lenBlock.warnings.length&&s.warnings.concat(s.lenBlock.warnings),a===-1)return s.error=s.lenBlock.error,{offset:-1,result:s};if(e=a,t-=s.lenBlock.blockLength,!s.idBlock.isConstructed&&s.lenBlock.isIndefiniteForm)return s.error="Indefinite length form used for primitive encoding form",{offset:-1,result:s};let c=Ee;switch(s.idBlock.tagClass){case 1:if(s.idBlock.tagNumber>=37&&s.idBlock.isHexOnly===!1)return s.error="UNIVERSAL 37 and upper tags are reserved by ASN.1 standard",{offset:-1,result:s};switch(s.idBlock.tagNumber){case 0:if(s.idBlock.isConstructed&&s.lenBlock.length>0)return s.error="Type [UNIVERSAL 0] is reserved",{offset:-1,result:s};c=k.EndOfContent;break;case 1:c=k.Boolean;break;case 2:c=k.Integer;break;case 3:c=k.BitString;break;case 4:c=k.OctetString;break;case 5:c=k.Null;break;case 6:c=k.ObjectIdentifier;break;case 10:c=k.Enumerated;break;case 12:c=k.Utf8String;break;case 13:c=k.RelativeObjectIdentifier;break;case 14:c=k.TIME;break;case 15:return s.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:s};case 16:c=k.Sequence;break;case 17:c=k.Set;break;case 18:c=k.NumericString;break;case 19:c=k.PrintableString;break;case 20:c=k.TeletexString;break;case 21:c=k.VideotexString;break;case 22:c=k.IA5String;break;case 23:c=k.UTCTime;break;case 24:c=k.GeneralizedTime;break;case 25:c=k.GraphicString;break;case 26:c=k.VisibleString;break;case 27:c=k.GeneralString;break;case 28:c=k.UniversalString;break;case 29:c=k.CharacterString;break;case 30:c=k.BmpString;break;case 31:c=k.DATE;break;case 32:c=k.TimeOfDay;break;case 33:c=k.DateTime;break;case 34:c=k.Duration;break;default:{let l=s.idBlock.isConstructed?new k.Constructed:new k.Primitive;l.idBlock=s.idBlock,l.lenBlock=s.lenBlock,l.warnings=s.warnings,s=l}}break;case 2:case 3:case 4:default:c=s.idBlock.isConstructed?k.Constructed:k.Primitive}return s=V8(s,c),a=s.fromBER(r,e,s.lenBlock.isIndefiniteForm?t:s.lenBlock.length),s.valueBeforeDecodeView=r.subarray(n,n+s.blockLength),{offset:a,result:s}}function Jr(r){if(!r.byteLength){let e=new Ee({},Se);return e.error="Input buffer has zero length",{offset:-1,result:e}}return ms(M.BufferSourceConverter.toUint8Array(r).slice(),0,r.byteLength)}function M8(r,e){return r?1:e}var ft=class extends Se{constructor({value:e=[],isIndefiniteForm:t=!1,...n}={}){super(n),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,n){let s=M.BufferSourceConverter.toUint8Array(e);if(!Tt(this,s,t,n))return-1;if(this.valueBeforeDecodeView=s.subarray(t,t+n),this.valueBeforeDecodeView.length===0)return this.warnings.push("Zero buffer length"),t;let i=t;for(;M8(this.isIndefiniteForm,n)>0;){let o=ms(s,i,n);if(o.offset===-1)return this.error=o.result.error,this.warnings.concat(o.result.warnings),-1;if(i=o.offset,this.blockLength+=o.result.blockLength,n-=o.result.blockLength,this.value.push(o.result),this.isIndefiniteForm&&o.result.constructor.NAME===Tn)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===Tn?this.value.pop():this.warnings.push("No EndOfContent block encoded")),i}toBER(e,t){let n=t||new kn;for(let s=0;s<this.value.length;s++)this.value[s].toBER(e,n);return t?tt:n.final()}toJSON(){let e={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(let t of this.value)e.value.push(t.toJSON());return e}};ft.NAME="ConstructedValueBlock";var B3,Gt=class extends Ee{constructor(e={}){super(e,ft),this.idBlock.isConstructed=!0}fromBER(e,t,n){this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm;let s=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return s===-1?(this.error=this.valueBlock.error,s):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),s)}onAsciiEncoding(){let e=[];for(let n of this.valueBlock.value)e.push(n.toString("ascii").split(`
|
3
|
-
`).map(
|
2
|
+
"use strict";var Libp2PKadDht=(()=>{var ha=Object.create;var Qn=Object.defineProperty;var da=Object.getOwnPropertyDescriptor;var pa=Object.getOwnPropertyNames;var ga=Object.getPrototypeOf,ma=Object.prototype.hasOwnProperty;var Xn=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),oe=(r,e)=>{for(var t in e)Qn(r,t,{get:e[t],enumerable:!0})},k2=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of pa(e))!ma.call(r,i)&&i!==t&&Qn(r,i,{get:()=>e[i],enumerable:!(n=da(e,i))||n.enumerable});return r};var Jn=(r,e,t)=>(t=r!=null?ha(ga(r)):{},k2(e||!r||!r.__esModule?Qn(t,"default",{value:r,enumerable:!0}):t,r)),ya=r=>k2(Qn({},"__esModule",{value:!0}),r);var R0=Xn(Bn=>{(function(){var r,e,t,n,i,s,o,a;a=function(c){var l,u,f,h;return l=(c&255<<24)>>>24,u=(c&255<<16)>>>16,f=(c&65280)>>>8,h=c&255,[l,u,f,h].join(".")},o=function(c){var l,u,f,h,p,y;for(l=[],f=h=0;h<=3&&c.length!==0;f=++h){if(f>0){if(c[0]!==".")throw new Error("Invalid IP");c=c.substring(1)}y=e(c),p=y[0],u=y[1],c=c.substring(u),l.push(p)}if(c.length!==0)throw new Error("Invalid IP");switch(l.length){case 1:if(l[0]>4294967295)throw new Error("Invalid IP");return l[0]>>>0;case 2:if(l[0]>255||l[1]>16777215)throw new Error("Invalid IP");return(l[0]<<24|l[1])>>>0;case 3:if(l[0]>255||l[1]>255||l[2]>65535)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2])>>>0;case 4:if(l[0]>255||l[1]>255||l[2]>255||l[3]>255)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2]<<8|l[3])>>>0;default:throw new Error("Invalid IP")}},t=function(c){return c.charCodeAt(0)},n=t("0"),s=t("a"),i=t("A"),e=function(c){var l,u,f,h,p;for(h=0,l=10,u="9",f=0,c.length>1&&c[f]==="0"&&(c[f+1]==="x"||c[f+1]==="X"?(f+=2,l=16):"0"<=c[f+1]&&c[f+1]<="9"&&(f++,l=8,u="7")),p=f;f<c.length;){if("0"<=c[f]&&c[f]<=u)h=h*l+(t(c[f])-n)>>>0;else if(l===16)if("a"<=c[f]&&c[f]<="f")h=h*l+(10+t(c[f])-s)>>>0;else if("A"<=c[f]&&c[f]<="F")h=h*l+(10+t(c[f])-i)>>>0;else break;else break;if(h>4294967295)throw new Error("too large");f++}if(f===p)throw new Error("empty octet");return[h,f]},r=function(){function c(l,u){var f,h,p,y;if(typeof l!="string")throw new Error("Missing `net' parameter");if(u||(y=l.split("/",2),l=y[0],u=y[1]),u||(u=32),typeof u=="string"&&u.indexOf(".")>-1){try{this.maskLong=o(u)}catch(g){throw f=g,new Error("Invalid mask: "+u)}for(h=p=32;p>=0;h=--p)if(this.maskLong===4294967295<<32-h>>>0){this.bitmask=h;break}}else if(u||u===0)this.bitmask=parseInt(u,10),this.maskLong=0,this.bitmask>0&&(this.maskLong=4294967295<<32-this.bitmask>>>0);else throw new Error("Invalid mask: empty");try{this.netLong=(o(l)&this.maskLong)>>>0}catch(g){throw f=g,new Error("Invalid net address: "+l)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+u);this.size=Math.pow(2,32-this.bitmask),this.base=a(this.netLong),this.mask=a(this.maskLong),this.hostmask=a(~this.maskLong),this.first=this.bitmask<=30?a(this.netLong+1):this.base,this.last=this.bitmask<=30?a(this.netLong+this.size-2):a(this.netLong+this.size-1),this.broadcast=this.bitmask<=30?a(this.netLong+this.size-1):void 0}return c.prototype.contains=function(l){return typeof l=="string"&&(l.indexOf("/")>0||l.split(".").length!==4)&&(l=new c(l)),l instanceof c?this.contains(l.base)&&this.contains(l.broadcast||l.last):(o(l)&this.maskLong)>>>0===(this.netLong&this.maskLong)>>>0},c.prototype.next=function(l){return l==null&&(l=1),new c(a(this.netLong+this.size*l),this.mask)},c.prototype.forEach=function(l){var u,f,h;for(h=o(this.first),f=o(this.last),u=0;h<=f;)l(a(h),h,u),u++,h++},c.prototype.toString=function(){return this.base+"/"+this.bitmask},c}(),Bn.ip2long=o,Bn.long2ip=a,Bn.Netmask=r}).call(Bn)});var b3=Xn(Jr=>{"use strict";var L8="[object ArrayBuffer]",St=class r{static isArrayBuffer(e){return Object.prototype.toString.call(e)===L8}static toArrayBuffer(e){return this.isArrayBuffer(e)?e:e.byteLength===e.buffer.byteLength||e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:this.toUint8Array(e.buffer).slice(e.byteOffset,e.byteOffset+e.byteLength).buffer}static toUint8Array(e){return this.toView(e,Uint8Array)}static toView(e,t){if(e.constructor===t)return e;if(this.isArrayBuffer(e))return new t(e);if(this.isArrayBufferView(e))return new t(e.buffer,e.byteOffset,e.byteLength);throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'")}static isBufferSource(e){return this.isArrayBufferView(e)||this.isArrayBuffer(e)}static isArrayBufferView(e){return ArrayBuffer.isView(e)||e&&this.isArrayBuffer(e.buffer)}static isEqual(e,t){let n=r.toUint8Array(e),i=r.toUint8Array(t);if(n.length!==i.byteLength)return!1;for(let s=0;s<n.length;s++)if(n[s]!==i[s])return!1;return!0}static concat(...e){let t;Array.isArray(e[0])&&!(e[1]instanceof Function)||Array.isArray(e[0])&&e[1]instanceof Function?t=e[0]:e[e.length-1]instanceof Function?t=e.slice(0,e.length-1):t=e;let n=0;for(let o of t)n+=o.byteLength;let i=new Uint8Array(n),s=0;for(let o of t){let a=this.toUint8Array(o);i.set(a,s),s+=a.length}return e[e.length-1]instanceof Function?this.toView(i,e[e.length-1]):i.buffer}},Co="string",P8=/^[0-9a-f]+$/i,C8=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,D8=/^[a-zA-Z0-9-_]+$/,N1=class{static fromString(e){let t=unescape(encodeURIComponent(e)),n=new Uint8Array(t.length);for(let i=0;i<t.length;i++)n[i]=t.charCodeAt(i);return n.buffer}static toString(e){let t=St.toUint8Array(e),n="";for(let s=0;s<t.length;s++)n+=String.fromCharCode(t[s]);return decodeURIComponent(escape(n))}},je=class{static toString(e,t=!1){let n=St.toArrayBuffer(e),i=new DataView(n),s="";for(let o=0;o<n.byteLength;o+=2){let a=i.getUint16(o,t);s+=String.fromCharCode(a)}return s}static fromString(e,t=!1){let n=new ArrayBuffer(e.length*2),i=new DataView(n);for(let s=0;s<e.length;s++)i.setUint16(s*2,e.charCodeAt(s),t);return n}},L1=class r{static isHex(e){return typeof e===Co&&P8.test(e)}static isBase64(e){return typeof e===Co&&C8.test(e)}static isBase64Url(e){return typeof e===Co&&D8.test(e)}static ToString(e,t="utf8"){let n=St.toUint8Array(e);switch(t.toLowerCase()){case"utf8":return this.ToUtf8String(n);case"binary":return this.ToBinary(n);case"hex":return this.ToHex(n);case"base64":return this.ToBase64(n);case"base64url":return this.ToBase64Url(n);case"utf16le":return je.toString(n,!0);case"utf16":case"utf16be":return je.toString(n);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromString(e,t="utf8"){if(!e)return new ArrayBuffer(0);switch(t.toLowerCase()){case"utf8":return this.FromUtf8String(e);case"binary":return this.FromBinary(e);case"hex":return this.FromHex(e);case"base64":return this.FromBase64(e);case"base64url":return this.FromBase64Url(e);case"utf16le":return je.fromString(e,!0);case"utf16":case"utf16be":return je.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){let t=St.toUint8Array(e);if(typeof btoa<"u"){let n=this.ToString(t,"binary");return btoa(n)}else return Buffer.from(t).toString("base64")}static FromBase64(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64(t))throw new TypeError("Argument 'base64Text' is not Base64 encoded");return typeof atob<"u"?this.FromBinary(atob(t)):new Uint8Array(Buffer.from(t,"base64")).buffer}static FromBase64Url(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64Url(t))throw new TypeError("Argument 'base64url' is not Base64Url encoded");return this.FromBase64(this.Base64Padding(t.replace(/\-/g,"+").replace(/\_/g,"/")))}static ToBase64Url(e){return this.ToBase64(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=/g,"")}static FromUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.FromBinary(e);case"utf8":return N1.fromString(e);case"utf16":case"utf16be":return je.fromString(e);case"utf16le":case"usc2":return je.fromString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.ToBinary(e);case"utf8":return N1.toString(e);case"utf16":case"utf16be":return je.toString(e);case"utf16le":case"usc2":return je.toString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromBinary(e){let t=e.length,n=new Uint8Array(t);for(let i=0;i<t;i++)n[i]=e.charCodeAt(i);return n.buffer}static ToBinary(e){let t=St.toUint8Array(e),n="";for(let i=0;i<t.length;i++)n+=String.fromCharCode(t[i]);return n}static ToHex(e){let t=St.toUint8Array(e),n="",i=t.length;for(let s=0;s<i;s++){let o=t[s];o<16&&(n+="0"),n+=o.toString(16)}return n}static FromHex(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isHex(t))throw new TypeError("Argument 'hexString' is not HEX encoded");t.length%2&&(t=`0${t}`);let n=new Uint8Array(t.length/2);for(let i=0;i<t.length;i=i+2){let s=t.slice(i,i+2);n[i/2]=parseInt(s,16)}return n.buffer}static ToUtf16String(e,t=!1){return je.toString(e,t)}static FromUtf16String(e,t=!1){return je.fromString(e,t)}static Base64Padding(e){let t=4-e.length%4;if(t<4)for(let n=0;n<t;n++)e+="=";return e}static formatString(e){return e?.replace(/[\n\r\t ]/g,"")||""}};L1.DEFAULT_UTF8_ENCODING="utf8";function U8(r,...e){let t=arguments[0];for(let n=1;n<arguments.length;n++){let i=arguments[n];for(let s in i)t[s]=i[s]}return t}function O8(...r){let e=r.map(i=>i.byteLength).reduce((i,s)=>i+s),t=new Uint8Array(e),n=0;return r.map(i=>new Uint8Array(i)).forEach(i=>{for(let s of i)t[n++]=s}),t.buffer}function M8(r,e){if(!(r&&e)||r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let i=0;i<r.byteLength;i++)if(t[i]!==n[i])return!1;return!0}Jr.BufferSourceConverter=St;Jr.Convert=L1;Jr.assign=U8;Jr.combine=O8;Jr.isEqual=M8});var $4=Xn((nm,q4)=>{q4.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 i(s,o){t[s]=o,e++,e>=r&&(e=0,n=t,t=Object.create(null))}return{has:function(s){return t[s]!==void 0||n[s]!==void 0},remove:function(s){t[s]!==void 0&&(t[s]=void 0),n[s]!==void 0&&(n[s]=void 0)},get:function(s){var o=t[s];if(o!==void 0)return o;if((o=n[s])!==void 0)return i(s,o),o},set:function(s,o){t[s]!==void 0?t[s]=o:i(s,o)},clear:function(){t=Object.create(null),n=Object.create(null)}}}});var G4=Xn((im,h2)=>{"use strict";var $7=Object.prototype.hasOwnProperty,Ne="~";function Kn(){}Object.create&&(Kn.prototype=Object.create(null),new Kn().__proto__||(Ne=!1));function z7(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function z4(r,e,t,n,i){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new z7(t,n||r,i),o=Ne?Ne+e:e;return r._events[o]?r._events[o].fn?r._events[o]=[r._events[o],s]:r._events[o].push(s):(r._events[o]=s,r._eventsCount++),r}function Li(r,e){--r._eventsCount===0?r._events=new Kn:delete r._events[e]}function ke(){this._events=new Kn,this._eventsCount=0}ke.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)$7.call(t,n)&&e.push(Ne?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};ke.prototype.listeners=function(e){var t=Ne?Ne+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,s=n.length,o=new Array(s);i<s;i++)o[i]=n[i].fn;return o};ke.prototype.listenerCount=function(e){var t=Ne?Ne+e:e,n=this._events[t];return n?n.fn?1:n.length:0};ke.prototype.emit=function(e,t,n,i,s,o){var a=Ne?Ne+e:e;if(!this._events[a])return!1;var c=this._events[a],l=arguments.length,u,f;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,i),!0;case 5:return c.fn.call(c.context,t,n,i,s),!0;case 6:return c.fn.call(c.context,t,n,i,s,o),!0}for(f=1,u=new Array(l-1);f<l;f++)u[f-1]=arguments[f];c.fn.apply(c.context,u)}else{var h=c.length,p;for(f=0;f<h;f++)switch(c[f].once&&this.removeListener(e,c[f].fn,void 0,!0),l){case 1:c[f].fn.call(c[f].context);break;case 2:c[f].fn.call(c[f].context,t);break;case 3:c[f].fn.call(c[f].context,t,n);break;case 4:c[f].fn.call(c[f].context,t,n,i);break;default:if(!u)for(p=1,u=new Array(l-1);p<l;p++)u[p-1]=arguments[p];c[f].fn.apply(c[f].context,u)}}return!0};ke.prototype.on=function(e,t,n){return z4(this,e,t,n,!1)};ke.prototype.once=function(e,t,n){return z4(this,e,t,n,!0)};ke.prototype.removeListener=function(e,t,n,i){var s=Ne?Ne+e:e;if(!this._events[s])return this;if(!t)return Li(this,s),this;var o=this._events[s];if(o.fn)o.fn===t&&(!i||o.once)&&(!n||o.context===n)&&Li(this,s);else{for(var a=0,c=[],l=o.length;a<l;a++)(o[a].fn!==t||i&&!o[a].once||n&&o[a].context!==n)&&c.push(o[a]);c.length?this._events[s]=c.length===1?c[0]:c:Li(this,s)}return this};ke.prototype.removeAllListeners=function(e){var t;return e?(t=Ne?Ne+e:e,this._events[t]&&Li(this,t)):(this._events=new Kn,this._eventsCount=0),this};ke.prototype.off=ke.prototype.removeListener;ke.prototype.addListener=ke.prototype.on;ke.prefixed=Ne;ke.EventEmitter=ke;typeof h2<"u"&&(h2.exports=ke)});var mc={};oe(mc,{EventTypes:()=>v2,MessageType:()=>M,Record:()=>pe,kadDHT:()=>gc,passthroughMapper:()=>N0,removePrivateAddressesMapper:()=>y1,removePublicAddressesMapper:()=>_0});var T2=Symbol.for("@libp2p/content-routing");var _2=Symbol.for("@libp2p/peer-discovery");var as=Symbol.for("@libp2p/peer-id");var N2=Symbol.for("@libp2p/peer-routing");var Dt=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"},E=class extends Error{code;props;constructor(e,t,n){super(e),this.code=t,this.name=n?.name??"CodeError",this.props=n??{}}};var Ee=(r,...e)=>{try{[...e]}catch{}};var Pe=class extends EventTarget{#e=new Map;constructor(){super(),Ee(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 i=this.#e.get(e);i==null&&(i=[],this.#e.set(e,i)),i.push({callback:t,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(e,t,n){super.removeEventListener(e.toString(),t??null,n);let i=this.#e.get(e);i!=null&&(i=i.filter(({callback:s})=>s!==t),this.#e.set(e,i))}dispatchEvent(e){let t=super.dispatchEvent(e),n=this.#e.get(e.type);return n==null||(n=n.filter(({once:i})=>!i),this.#e.set(e.type,n)),t}safeDispatchEvent(e,t={}){return this.dispatchEvent(new Me(e,t))}},Me=globalThis.CustomEvent;function L2(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function P2(...r){let e=[];for(let t of r)L2(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStart!=null&&await t.beforeStart()})),await Promise.all(e.map(async t=>{await t.start()})),await Promise.all(e.map(async t=>{t.afterStart!=null&&await t.afterStart()}))}async function C2(...r){let e=[];for(let t of r)L2(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStop!=null&&await t.beforeStop()})),await Promise.all(e.map(async t=>{await t.stop()})),await Promise.all(e.map(async t=>{t.afterStop!=null&&await t.afterStop()}))}var D2=Symbol.for("@libp2p/service-capabilities"),U2=Symbol.for("@libp2p/service-dependencies");function ba(r){return r[Symbol.asyncIterator]!=null}function wa(r){if(ba(r))return(async()=>{for await(let e of r);})();for(let e of r);}var cs=wa;function ae(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var O2="/ipfs/kad/1.0.0",M2="/dht/record",ls="/dht/provider";function Ce(r=0){return new Uint8Array(r)}function be(r=0){return new Uint8Array(r)}var va=Math.pow(2,7),xa=Math.pow(2,14),Ea=Math.pow(2,21),us=Math.pow(2,28),fs=Math.pow(2,35),hs=Math.pow(2,42),ds=Math.pow(2,49),G=128,Ie=127;function ce(r){if(r<va)return 1;if(r<xa)return 2;if(r<Ea)return 3;if(r<us)return 4;if(r<fs)return 5;if(r<hs)return 6;if(r<ds)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function ps(r,e,t=0){switch(ce(r)){case 8:e[t++]=r&255|G,r/=128;case 7:e[t++]=r&255|G,r/=128;case 6:e[t++]=r&255|G,r/=128;case 5:e[t++]=r&255|G,r/=128;case 4:e[t++]=r&255|G,r>>>=7;case 3:e[t++]=r&255|G,r>>>=7;case 2:e[t++]=r&255|G,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function Aa(r,e,t=0){switch(ce(r)){case 8:e.set(t++,r&255|G),r/=128;case 7:e.set(t++,r&255|G),r/=128;case 6:e.set(t++,r&255|G),r/=128;case 5:e.set(t++,r&255|G),r/=128;case 4:e.set(t++,r&255|G),r>>>=7;case 3:e.set(t++,r&255|G),r>>>=7;case 2:e.set(t++,r&255|G),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function gs(r,e){let t=r[e],n=0;if(n+=t&Ie,t<G||(t=r[e+1],n+=(t&Ie)<<7,t<G)||(t=r[e+2],n+=(t&Ie)<<14,t<G)||(t=r[e+3],n+=(t&Ie)<<21,t<G)||(t=r[e+4],n+=(t&Ie)*us,t<G)||(t=r[e+5],n+=(t&Ie)*fs,t<G)||(t=r[e+6],n+=(t&Ie)*hs,t<G)||(t=r[e+7],n+=(t&Ie)*ds,t<G))return n;throw new RangeError("Could not decode varint")}function Ia(r,e){let t=r.get(e),n=0;if(n+=t&Ie,t<G||(t=r.get(e+1),n+=(t&Ie)<<7,t<G)||(t=r.get(e+2),n+=(t&Ie)<<14,t<G)||(t=r.get(e+3),n+=(t&Ie)<<21,t<G)||(t=r.get(e+4),n+=(t&Ie)*us,t<G)||(t=r.get(e+5),n+=(t&Ie)*fs,t<G)||(t=r.get(e+6),n+=(t&Ie)*hs,t<G)||(t=r.get(e+7),n+=(t&Ie)*ds,t<G))return n;throw new RangeError("Could not decode varint")}function qe(r,e,t=0){return e==null&&(e=be(ce(r))),e instanceof Uint8Array?ps(r,e,t):Aa(r,e,t)}function Ve(r,e=0){return r instanceof Uint8Array?gs(r,e):Ia(r,e)}var ms=new Float32Array([-0]),Ut=new Uint8Array(ms.buffer);function V2(r,e,t){ms[0]=r,e[t]=Ut[0],e[t+1]=Ut[1],e[t+2]=Ut[2],e[t+3]=Ut[3]}function F2(r,e){return Ut[0]=r[e],Ut[1]=r[e+1],Ut[2]=r[e+2],Ut[3]=r[e+3],ms[0]}var ys=new Float64Array([-0]),Be=new Uint8Array(ys.buffer);function H2(r,e,t){ys[0]=r,e[t]=Be[0],e[t+1]=Be[1],e[t+2]=Be[2],e[t+3]=Be[3],e[t+4]=Be[4],e[t+5]=Be[5],e[t+6]=Be[6],e[t+7]=Be[7]}function K2(r,e){return Be[0]=r[e],Be[1]=r[e+1],Be[2]=r[e+2],Be[3]=r[e+3],Be[4]=r[e+4],Be[5]=r[e+5],Be[6]=r[e+6],Be[7]=r[e+7],ys[0]}var Ba=BigInt(Number.MAX_SAFE_INTEGER),Sa=BigInt(Number.MIN_SAFE_INTEGER),Fe=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 nr;if(e<Ba&&e>Sa)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,i=e-(n<<32n);return t&&(n=~n|0n,i=~i|0n,++i>q2&&(i=0n,++n>q2&&(n=0n))),new r(Number(i),Number(n))}static fromNumber(e){if(e===0)return nr;let t=e<0;t&&(e=-e);let n=e>>>0,i=(e-n)/4294967296>>>0;return t&&(i=~i>>>0,n=~n>>>0,++n>4294967295&&(n=0,++i>4294967295&&(i=0))),new r(n,i)}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):nr}},nr=new Fe(0,0);nr.toBigInt=function(){return 0n};nr.zzEncode=nr.zzDecode=function(){return this};nr.length=function(){return 1};var q2=4294967296n;function $2(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 z2(r,e,t){if(t-e<1)return"";let i,s=[],o=0,a;for(;e<t;)a=r[e++],a<128?s[o++]=a:a>191&&a<224?s[o++]=(a&31)<<6|r[e++]&63:a>239&&a<365?(a=((a&7)<<18|(r[e++]&63)<<12|(r[e++]&63)<<6|r[e++]&63)-65536,s[o++]=55296+(a>>10),s[o++]=56320+(a&1023)):s[o++]=(a&15)<<12|(r[e++]&63)<<6|r[e++]&63,o>8191&&((i??(i=[])).push(String.fromCharCode.apply(String,s)),o=0);return i!=null?(o>0&&i.push(String.fromCharCode.apply(String,s.slice(0,o))),i.join("")):String.fromCharCode.apply(String,s.slice(0,o))}function bs(r,e,t){let n=t,i,s;for(let o=0;o<r.length;++o)i=r.charCodeAt(o),i<128?e[t++]=i:i<2048?(e[t++]=i>>6|192,e[t++]=i&63|128):(i&64512)===55296&&((s=r.charCodeAt(o+1))&64512)===56320?(i=65536+((i&1023)<<10)+(s&1023),++o,e[t++]=i>>18|240,e[t++]=i>>12&63|128,e[t++]=i>>6&63|128,e[t++]=i&63|128):(e[t++]=i>>12|224,e[t++]=i>>6&63|128,e[t++]=i&63|128);return t-n}function Ye(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function e1(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var ws=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,Ye(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 Ye(this,4);return e1(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw Ye(this,4);return e1(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw Ye(this,4);let e=F2(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw Ye(this,4);let e=K2(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 Ye(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return z2(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw Ye(this,e);this.pos+=e}else do if(this.pos>=this.len)throw Ye(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 Fe(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 Ye(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 Ye(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 Ye(this,8);let e=e1(this.buf,this.pos+=4),t=e1(this.buf,this.pos+=4);return new Fe(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=gs(this.buf,this.pos);return this.pos+=ce(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 vs(r){return new ws(r instanceof Uint8Array?r:r.subarray())}function it(r,e,t){let n=vs(r);return e.decode(n,void 0,t)}var Bs={};oe(Bs,{base10:()=>La});var l9=new Uint8Array(0);function j2(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 gt(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 Y2(r){return new TextEncoder().encode(r)}function W2(r){return new TextDecoder().decode(r)}function Ra(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 i=0;i<r.length;i++){var s=r.charAt(i),o=s.charCodeAt(0);if(t[o]!==255)throw new TypeError(s+" is ambiguous");t[o]=i}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function f(y){if(y instanceof Uint8Array||(ArrayBuffer.isView(y)?y=new Uint8Array(y.buffer,y.byteOffset,y.byteLength):Array.isArray(y)&&(y=Uint8Array.from(y))),!(y instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(y.length===0)return"";for(var g=0,d=0,b=0,v=y.length;b!==v&&y[b]===0;)b++,g++;for(var m=(v-b)*u+1>>>0,A=new Uint8Array(m);b!==v;){for(var _=y[b],T=0,R=m-1;(_!==0||T<d)&&R!==-1;R--,T++)_+=256*A[R]>>>0,A[R]=_%a>>>0,_=_/a>>>0;if(_!==0)throw new Error("Non-zero carry");d=T,b++}for(var k=m-d;k!==m&&A[k]===0;)k++;for(var C=c.repeat(g);k<m;++k)C+=r.charAt(A[k]);return C}function h(y){if(typeof y!="string")throw new TypeError("Expected String");if(y.length===0)return new Uint8Array;var g=0;if(y[g]!==" "){for(var d=0,b=0;y[g]===c;)d++,g++;for(var v=(y.length-g)*l+1>>>0,m=new Uint8Array(v);y[g];){var A=t[y.charCodeAt(g)];if(A===255)return;for(var _=0,T=v-1;(A!==0||_<b)&&T!==-1;T--,_++)A+=a*m[T]>>>0,m[T]=A%256>>>0,A=A/256>>>0;if(A!==0)throw new Error("Non-zero carry");b=_,g++}if(y[g]!==" "){for(var R=v-b;R!==v&&m[R]===0;)R++;for(var k=new Uint8Array(d+(v-R)),C=d;R!==v;)k[C++]=m[R++];return k}}}function p(y){var g=h(y);if(g)return g;throw new Error(`Non-${e} character`)}return{encode:f,decodeUnsafe:h,decode:p}}var ka=Ra,Ta=ka,Q2=Ta;var xs=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")}},Es=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 X2(this,e)}},As=class{decoders;constructor(e){this.decoders=e}or(e){return X2(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 X2(r,e){return new As({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var Is=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,i){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=i,this.encoder=new xs(e,t,n),this.decoder=new Es(e,t,i)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function Ar({name:r,prefix:e,encode:t,decode:n}){return new Is(r,e,t,n)}function Ot({name:r,prefix:e,alphabet:t}){let{encode:n,decode:i}=Q2(t,r);return Ar({prefix:e,name:r,encode:n,decode:s=>gt(i(s))})}function _a(r,e,t,n){let i={};for(let u=0;u<e.length;++u)i[e[u]]=u;let s=r.length;for(;r[s-1]==="=";)--s;let o=new Uint8Array(s*t/8|0),a=0,c=0,l=0;for(let u=0;u<s;++u){let f=i[r[u]];if(f===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|f,a+=t,a>=8&&(a-=8,o[l++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return o}function Na(r,e,t){let n=e[e.length-1]==="=",i=(1<<t)-1,s="",o=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],o+=8;o>t;)o-=t,s+=e[i&a>>o];if(o!==0&&(s+=e[i&a<<t-o]),n)for(;s.length*t&7;)s+="=";return s}function ie({name:r,prefix:e,bitsPerChar:t,alphabet:n}){return Ar({prefix:e,name:r,encode(i){return Na(i,n,t)},decode(i){return _a(i,n,t,r)}})}var La=Ot({prefix:"9",name:"base10",alphabet:"0123456789"});var Ss={};oe(Ss,{base16:()=>Pa,base16upper:()=>Ca});var Pa=ie({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Ca=ie({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var Rs={};oe(Rs,{base2:()=>Da});var Da=ie({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var ks={};oe(ks,{base256emoji:()=>Fa});var J2=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}"),Ua=J2.reduce((r,e,t)=>(r[t]=e,r),[]),Oa=J2.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function Ma(r){return r.reduce((e,t)=>(e+=Ua[t],e),"")}function Va(r){let e=[];for(let t of r){let n=Oa[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var Fa=Ar({prefix:"\u{1F680}",name:"base256emoji",encode:Ma,decode:Va});var Ts={};oe(Ts,{base32:()=>mt,base32hex:()=>$a,base32hexpad:()=>Ga,base32hexpadupper:()=>ja,base32hexupper:()=>za,base32pad:()=>Ka,base32padupper:()=>qa,base32upper:()=>Ha,base32z:()=>Ya});var mt=ie({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Ha=ie({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Ka=ie({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),qa=ie({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),$a=ie({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),za=ie({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Ga=ie({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),ja=ie({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Ya=ie({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var _s={};oe(_s,{base36:()=>Wa,base36upper:()=>Za});var Wa=Ot({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Za=Ot({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Ns={};oe(Ns,{base58btc:()=>de,base58flickr:()=>Qa});var de=Ot({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Qa=Ot({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Ls={};oe(Ls,{base64:()=>dn,base64pad:()=>Xa,base64url:()=>Ja,base64urlpad:()=>e5});var dn=ie({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Xa=ie({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Ja=ie({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),e5=ie({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var Ps={};oe(Ps,{base8:()=>t5});var t5=ie({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Cs={};oe(Cs,{identity:()=>r5});var r5=Ar({prefix:"\0",name:"identity",encode:r=>W2(r),decode:r=>Y2(r)});var B9=new TextEncoder,S9=new TextDecoder;var Us={};oe(Us,{identity:()=>yt});var s5=r0,e0=128,o5=127,a5=~o5,c5=Math.pow(2,31);function r0(r,e,t){e=e||[],t=t||0;for(var n=t;r>=c5;)e[t++]=r&255|e0,r/=128;for(;r&a5;)e[t++]=r&255|e0,r>>>=7;return e[t]=r|0,r0.bytes=t-n+1,e}var l5=Ds,u5=128,t0=127;function Ds(r,n){var t=0,n=n||0,i=0,s=n,o,a=r.length;do{if(s>=a)throw Ds.bytes=0,new RangeError("Could not decode varint");o=r[s++],t+=i<28?(o&t0)<<i:(o&t0)*Math.pow(2,i),i+=7}while(o>=u5);return Ds.bytes=s-n,t}var f5=Math.pow(2,7),h5=Math.pow(2,14),d5=Math.pow(2,21),p5=Math.pow(2,28),g5=Math.pow(2,35),m5=Math.pow(2,42),y5=Math.pow(2,49),b5=Math.pow(2,56),w5=Math.pow(2,63),v5=function(r){return r<f5?1:r<h5?2:r<d5?3:r<p5?4:r<g5?5:r<m5?6:r<y5?7:r<b5?8:r<w5?9:10},x5={encode:s5,decode:l5,encodingLength:v5},E5=x5,pn=E5;function gn(r,e=0){return[pn.decode(r,e),pn.decode.bytes]}function Ir(r,e,t=0){return pn.encode(r,e,t),e}function Br(r){return pn.encodingLength(r)}function st(r,e){let t=e.byteLength,n=Br(r),i=n+Br(t),s=new Uint8Array(i+t);return Ir(r,s,0),Ir(t,s,n),s.set(e,i),new Sr(r,t,e,s)}function ir(r){let e=gt(r),[t,n]=gn(e),[i,s]=gn(e.subarray(n)),o=e.subarray(n+s);if(o.byteLength!==i)throw new Error("Incorrect length");return new Sr(t,i,o,e)}function n0(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&j2(r.bytes,t.bytes)}}var Sr=class{code;size;digest;bytes;constructor(e,t,n,i){this.code=e,this.size=t,this.digest=n,this.bytes=i}};var i0=0,A5="identity",s0=gt;function I5(r){return st(i0,s0(r))}var yt={code:i0,name:A5,encode:s0,digest:I5};var Vs={};oe(Vs,{sha256:()=>ne,sha512:()=>B5});function Ms({name:r,code:e,encode:t}){return new Os(r,e,t)}var Os=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?st(this.code,t):t.then(n=>st(this.code,n))}else throw Error("Unknown type, must be binary type")}};function a0(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var ne=Ms({name:"sha2-256",code:18,encode:a0("SHA-256")}),B5=Ms({name:"sha2-512",code:19,encode:a0("SHA-512")});function c0(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return R5(t,Fs(r),e??de.encoder);default:return k5(t,Fs(r),e??mt.encoder)}}var l0=new WeakMap;function Fs(r){let e=l0.get(r);if(e==null){let t=new Map;return l0.set(r,t),t}return e}var Se=class r{code;version;multihash;bytes;"/";constructor(e,t,n,i){this.code=t,this.version=e,this.multihash=n,this.bytes=i,this["/"]=i}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!==mn)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==T5)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=st(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&&n0(e.multihash,n.multihash)}toString(e){return c0(this,e)}toJSON(){return{"/":c0(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:i,multihash:s,bytes:o}=t;return new r(n,i,s,o??u0(n,i,s.bytes))}else if(t[_5]===!0){let{version:n,multihash:i,code:s}=t,o=ir(i);return r.create(n,s,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!==mn)throw new Error(`Version 0 CID must use dag-pb (code: ${mn}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let i=u0(e,t,n.bytes);return new r(e,t,n,i)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,mn,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,i=gt(e.subarray(n,n+t.multihashSize));if(i.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=i.subarray(t.multihashSize-t.digestSize),o=new Sr(t.multihashCode,t.digestSize,s,i);return[t.version===0?r.createV0(o):r.createV1(t.codec,o),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[f,h]=gn(e.subarray(t));return t+=h,f},i=n(),s=mn;if(i===18?(i=0,t=0):s=n(),i!==0&&i!==1)throw new RangeError(`Invalid CID version ${i}`);let o=t,a=n(),c=n(),l=t+c,u=l-o;return{version:i,codec:s,multihashCode:a,digestSize:c,multihashSize:u,size:l}}static parse(e,t){let[n,i]=S5(e,t),s=r.decode(i);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return Fs(s).set(n,e),s}};function S5(r,e){switch(r[0]){case"Q":{let t=e??de;return[de.prefix,t.decode(`${de.prefix}${r}`)]}case de.prefix:{let t=e??de;return[de.prefix,t.decode(r)]}case mt.prefix:{let t=e??mt;return[mt.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 R5(r,e,t){let{prefix:n}=t;if(n!==de.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let i=e.get(n);if(i==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return i}function k5(r,e,t){let{prefix:n}=t,i=e.get(n);if(i==null){let s=t.encode(r);return e.set(n,s),s}else return i}var mn=112,T5=18;function u0(r,e,t){let n=Br(r),i=n+Br(e),s=new Uint8Array(i+t.byteLength);return Ir(r,s,0),Ir(e,s,n),s.set(t,i),s}var _5=Symbol.for("@ipld/js-cid/CID");var Mt={...Cs,...Rs,...Ps,...Bs,...Ss,...Ts,..._s,...Ns,...Ls,...ks},j9={...Vs,...Us};function h0(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var f0=h0("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),Hs=h0("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=be(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),N5={utf8:f0,"utf-8":f0,hex:Mt.base16,latin1:Hs,ascii:Hs,binary:Hs,...Mt},r1=N5;function $(r,e="utf8"){let t=r1[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function Ks(r){let e=r??8192,t=e>>>1,n,i=e;return function(o){if(o<1||o>t)return be(o);i+o>e&&(n=be(e),i=0);let a=n.subarray(i,i+=o);return i&7&&(i=(i|7)+1),a}}var or=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function qs(){}var zs=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},L5=Ks();function P5(r){return globalThis.Buffer!=null?be(r):L5(r)}var bn=class{len;head;tail;states;constructor(){this.len=0,this.head=new or(qs,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new or(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new Gs((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(n1,10,Fe.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=Fe.fromBigInt(e);return this._push(n1,t.length(),t)}uint64Number(e){return this._push(ps,ce(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=Fe.fromBigInt(e).zzEncode();return this._push(n1,t.length(),t)}sint64Number(e){let t=Fe.fromNumber(e).zzEncode();return this._push(n1,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push($s,1,e?1:0)}fixed32(e){return this._push(yn,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=Fe.fromBigInt(e);return this._push(yn,4,t.lo)._push(yn,4,t.hi)}fixed64Number(e){let t=Fe.fromNumber(e);return this._push(yn,4,t.lo)._push(yn,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(V2,4,e)}double(e){return this._push(H2,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push($s,1,0):this.uint32(t)._push(D5,t,e)}string(e){let t=$2(e);return t!==0?this.uint32(t)._push(bs,t,e):this._push($s,1,0)}fork(){return this.states=new zs(this),this.head=this.tail=new or(qs,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 or(qs,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=P5(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function $s(r,e,t){e[t]=r&255}function C5(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var Gs=class extends or{next;constructor(e,t){super(C5,e,t),this.next=void 0}};function n1(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 yn(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 D5(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(bn.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(U5,e,r),this},bn.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(O5,e,r),this});function U5(r,e,t){e.set(r,t)}function O5(r,e,t){r.length<40?bs(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set($(r),t)}function js(){return new bn}function ot(r,e){let t=js();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var Rr;(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"})(Rr||(Rr={}));function i1(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function kr(r){function e(i){if(r[i.toString()]==null)throw new Error("Invalid enum value");return r[i]}let t=function(s,o){let a=e(s);o.int32(a)},n=function(s){let o=s.int32();return e(o)};return i1("enum",Rr.VARINT,t,n)}function at(r,e){return i1("message",Rr.LENGTH_DELIMITED,r,e)}var wn=class extends Error{code;constructor(e,t){super(e),this.code=t}};var vn;(function(r){let e;r.codec=()=>(e==null&&(e=at((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.key!=null&&t.key.byteLength>0&&(n.uint32(10),n.bytes(t.key)),t.value!=null&&t.value.byteLength>0&&(n.uint32(18),n.bytes(t.value)),t.timeReceived!=null&&t.timeReceived!==""&&(n.uint32(42),n.string(t.timeReceived)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let s={key:Ce(0),value:Ce(0),timeReceived:""},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{s.key=t.bytes();break}case 2:{s.value=t.bytes();break}case 5:{s.timeReceived=t.string();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>ot(t,r.codec()),r.decode=(t,n)=>it(t,r.codec(),n)})(vn||(vn={}));function d0(r){let e=r.getUTCFullYear(),t=String(r.getUTCMonth()+1).padStart(2,"0"),n=String(r.getUTCDate()).padStart(2,"0"),i=String(r.getUTCHours()).padStart(2,"0"),s=String(r.getUTCMinutes()).padStart(2,"0"),o=String(r.getUTCSeconds()).padStart(2,"0"),a=r.getUTCMilliseconds(),c=String(a*1e3*1e3).padStart(9,"0");return`${e}-${t}-${n}T${i}:${s}:${o}.${c}Z`}function p0(r){let e=new RegExp("(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})\\.(\\d+)Z"),t=String(r).trim().match(e);if(t==null)throw new Error("Invalid format");let n=parseInt(t[1],10),i=parseInt(t[2],10)-1,s=parseInt(t[3],10),o=parseInt(t[4],10),a=parseInt(t[5],10),c=parseInt(t[6],10),l=parseInt(t[7].slice(0,-6),10);return new Date(Date.UTC(n,i,s,o,a,c,l))}var pe=class r{key;value;timeReceived;constructor(e,t,n){if(!(e instanceof Uint8Array))throw new Error("key must be a Uint8Array");if(!(t instanceof Uint8Array))throw new Error("value must be a Uint8Array");this.key=e,this.value=t,this.timeReceived=n}serialize(){return vn.encode(this.prepareSerialize())}prepareSerialize(){return{key:this.key,value:this.value,timeReceived:d0(this.timeReceived)}}static deserialize(e){let t=vn.decode(e);return new r(t.key,t.value,new Date(t.timeReceived))}static fromDeserialized(e){let t=p0(e.timeReceived);if(e.key==null)throw new Error("key missing from deserialized object");if(e.value==null)throw new Error("value missing from deserialized object");return new r(e.key,e.value,t)}};function V5(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:i=>{n.push(i)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var g0=V5;function F5(r){return r[Symbol.asyncIterator]!=null}function H5(r,e){let t=0;if(F5(r))return async function*(){for await(let c of r)yield e(c,t++)}();let n=g0(r),{value:i,done:s}=n.next();if(s===!0)return function*(){}();let o=e(i,t++);if(typeof o.then=="function")return async function*(){yield await o;for await(let c of n)yield e(c,t++)}();let a=e;return function*(){yield o;for(let c of n)yield a(c,t++)}()}var Tr=H5;var s1=globalThis.CustomEvent??Event;async function*xn(r,e={}){let t=e.concurrency??1/0;t<1&&(t=1/0);let n=e.ordered==null?!1:e.ordered,i=new EventTarget,s=[],o=ae(),a=ae(),c=!1,l,u=!1;i.addEventListener("task-complete",()=>{a.resolve()}),Promise.resolve().then(async()=>{try{for await(let y of r){if(s.length===t&&(o=ae(),await o.promise),u)break;let g={done:!1};s.push(g),y().then(d=>{g.done=!0,g.ok=!0,g.value=d,i.dispatchEvent(new s1("task-complete"))},d=>{g.done=!0,g.err=d,i.dispatchEvent(new s1("task-complete"))})}c=!0,i.dispatchEvent(new s1("task-complete"))}catch(y){l=y,i.dispatchEvent(new s1("task-complete"))}});function f(){return n?s[0]?.done:!!s.find(y=>y.done)}function*h(){for(;s.length>0&&s[0].done;){let y=s[0];if(s.shift(),y.ok)yield y.value;else throw u=!0,o.resolve(),y.err;o.resolve()}}function*p(){for(;f();)for(let y=0;y<s.length;y++)if(s[y].done){let g=s[y];if(s.splice(y,1),y--,g.ok)yield g.value;else throw u=!0,o.resolve(),g.err;o.resolve()}}for(;;){if(f()||(a=ae(),await a.promise),l!=null)throw l;if(n?yield*h():yield*p(),c&&s.length===0)break}}var o1=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}},_r=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new o1(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 o1(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 Ys=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function Nr(r={}){return K5(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 K5(r,e){e=e??{};let t=e.onEnd,n=new _r,i,s,o,a=ae(),c=async()=>{try{return n.isEmpty()?o?{done:!0}:await new Promise((d,b)=>{s=v=>{s=null,n.push(v);try{d(r(n))}catch(m){b(m)}return i}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=ae()})}},l=d=>s!=null?s(d):(n.push(d),i),u=d=>(n=new _r,s!=null?s({error:d}):(n.push({error:d}),i)),f=d=>{if(o)return i;if(e?.objectMode!==!0&&d?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:d})},h=d=>o?i:(o=!0,d!=null?u(d):l({done:!0})),p=()=>(n=new _r,h(),{done:!0}),y=d=>(h(d),{done:!0});if(i={[Symbol.asyncIterator](){return this},next:c,return:p,throw:y,push:f,end:h,get readableLength(){return n.size},onEmpty:async d=>{let b=d?.signal;if(b?.throwIfAborted(),n.isEmpty())return;let v,m;b!=null&&(v=new Promise((A,_)=>{m=()=>{_(new Ys)},b.addEventListener("abort",m)}));try{await Promise.race([a.promise,v])}finally{m!=null&&b!=null&&b?.removeEventListener("abort",m)}}},t==null)return i;let g=i;return i={[Symbol.asyncIterator](){return this},next(){return g.next()},throw(d){return g.throw(d),t!=null&&(t(d),t=void 0),{done:!0}},return(){return g.return(),t!=null&&(t(),t=void 0),{done:!0}},push:f,end(d){return g.end(d),t!=null&&(t(d),t=void 0),i},get readableLength(){return g.readableLength},onEmpty:d=>g.onEmpty(d)},i}function q5(r){return r[Symbol.asyncIterator]!=null}function $5(...r){let e=[];for(let t of r)q5(t)||e.push(t);return e.length===r.length?function*(){for(let t of e)yield*t}():async function*(){let t=Nr({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(r.map(async n=>{for await(let i of n)t.push(i)})),t.end()}catch(n){t.end(n)}}),yield*t}()}var a1=$5;function Vt(r,...e){if(r==null)throw new Error("Empty pipeline");if(Ws(r)){let n=r;r=()=>n.source}else if(y0(r)||m0(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&Ws(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++)Ws(t[n])&&(t[n]=G5(t[n]));return z5(...t)}var z5=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},m0=r=>r?.[Symbol.asyncIterator]!=null,y0=r=>r?.[Symbol.iterator]!=null,Ws=r=>r==null?!1:r.sink!=null&&r.source!=null,G5=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=Nr({objectMode:!0});t.then(()=>{n.end()},o=>{n.end(o)});let i,s=r.source;if(m0(s))i=async function*(){yield*s,n.end()};else if(y0(s))i=function*(){yield*s,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return a1(n,i())}return r.source};function Z(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 b0;(function(r){let e;r.codec=()=>(e==null&&(e=at((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.key!=null&&(n.uint32(10),n.bytes(t.key)),t.value!=null&&(n.uint32(18),n.bytes(t.value)),t.author!=null&&(n.uint32(26),n.bytes(t.author)),t.signature!=null&&(n.uint32(34),n.bytes(t.signature)),t.timeReceived!=null&&(n.uint32(42),n.string(t.timeReceived)),i.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let i={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let o=t.uint32();switch(o>>>3){case 1:{i.key=t.bytes();break}case 2:{i.value=t.bytes();break}case 3:{i.author=t.bytes();break}case 4:{i.signature=t.bytes();break}case 5:{i.timeReceived=t.string();break}default:{t.skipType(o&7);break}}}return i})),e),r.encode=t=>ot(t,r.codec()),r.decode=t=>it(t,r.codec())})(b0||(b0={}));var M;(function(r){r.PUT_VALUE="PUT_VALUE",r.GET_VALUE="GET_VALUE",r.ADD_PROVIDER="ADD_PROVIDER",r.GET_PROVIDERS="GET_PROVIDERS",r.FIND_NODE="FIND_NODE",r.PING="PING"})(M||(M={}));var c1;(function(r){r[r.PUT_VALUE=0]="PUT_VALUE",r[r.GET_VALUE=1]="GET_VALUE",r[r.ADD_PROVIDER=2]="ADD_PROVIDER",r[r.GET_PROVIDERS=3]="GET_PROVIDERS",r[r.FIND_NODE=4]="FIND_NODE",r[r.PING=5]="PING"})(c1||(c1={}));(function(r){r.codec=()=>kr(c1)})(M||(M={}));var Pr;(function(r){r.NOT_CONNECTED="NOT_CONNECTED",r.CONNECTED="CONNECTED",r.CAN_CONNECT="CAN_CONNECT",r.CANNOT_CONNECT="CANNOT_CONNECT"})(Pr||(Pr={}));var Zs;(function(r){r[r.NOT_CONNECTED=0]="NOT_CONNECTED",r[r.CONNECTED=1]="CONNECTED",r[r.CAN_CONNECT=2]="CAN_CONNECT",r[r.CANNOT_CONNECT=3]="CANNOT_CONNECT"})(Zs||(Zs={}));(function(r){r.codec=()=>kr(Zs)})(Pr||(Pr={}));var Lr;(function(r){let e;r.codec=()=>(e==null&&(e=at((t,n,i={})=>{if(i.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.multiaddrs!=null)for(let s of t.multiaddrs)n.uint32(18),n.bytes(s);t.connection!=null&&(n.uint32(24),Pr.codec().encode(t.connection,n)),i.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let i={id:Ce(0),multiaddrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let o=t.uint32();switch(o>>>3){case 1:{i.id=t.bytes();break}case 2:{i.multiaddrs.push(t.bytes());break}case 3:{i.connection=Pr.codec().decode(t);break}default:{t.skipType(o&7);break}}}return i})),e),r.encode=t=>ot(t,r.codec()),r.decode=t=>it(t,r.codec())})(Lr||(Lr={}));var $e;(function(r){let e;r.codec=()=>(e==null&&(e=at((t,n,i={})=>{if(i.lengthDelimited!==!1&&n.fork(),t.type!=null&&c1[t.type]!==0&&(n.uint32(8),M.codec().encode(t.type,n)),t.clusterLevel!=null&&(n.uint32(80),n.int32(t.clusterLevel)),t.key!=null&&(n.uint32(18),n.bytes(t.key)),t.record!=null&&(n.uint32(26),n.bytes(t.record)),t.closer!=null)for(let s of t.closer)n.uint32(66),Lr.codec().encode(s,n);if(t.providers!=null)for(let s of t.providers)n.uint32(74),Lr.codec().encode(s,n);i.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let i={type:M.PUT_VALUE,closer:[],providers:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let o=t.uint32();switch(o>>>3){case 1:{i.type=M.codec().decode(t);break}case 10:{i.clusterLevel=t.int32();break}case 2:{i.key=t.bytes();break}case 3:{i.record=t.bytes();break}case 8:{i.closer.push(Lr.codec().decode(t,t.uint32()));break}case 9:{i.providers.push(Lr.codec().decode(t,t.uint32()));break}default:{t.skipType(o&7);break}}}return i})),e),r.encode=t=>ot(t,r.codec()),r.decode=t=>it(t,r.codec())})($e||($e={}));function Qs(r,e={}){let t={...r,name:"SEND_QUERY",type:0,messageName:r.type,messageType:r.type};return e.onProgress?.(new Me("kad-dht:query:send-query",{detail:t})),t}function En(r,e={}){let t={...r,name:"PEER_RESPONSE",type:1,messageName:r.messageType,closer:r.closer??[],providers:r.providers??[]};return e.onProgress?.(new Me("kad-dht:query:peer-response",{detail:t})),t}function l1(r,e={}){let t={...r,name:"FINAL_PEER",type:2};return e.onProgress?.(new Me("kad-dht:query:final-peer",{detail:t})),t}function He(r,e={}){let t={...r,name:"QUERY_ERROR",type:3};return e.onProgress?.(new Me("kad-dht:query:query-error",{detail:t})),t}function Xs(r,e={}){let t={...r,name:"PROVIDER",type:4};return e.onProgress?.(new Me("kad-dht:query:provider",{detail:t})),t}function An(r,e={}){let t={...r,name:"VALUE",type:5};return e.onProgress?.(new Me("kad-dht:query:value",{detail:t})),t}function Js(r,e={}){let t={...r,name:"DIAL_PEER",type:7};return e.onProgress?.(new Me("kad-dht:query:dial-peer",{detail:t})),t}function P(r,e="utf8"){let t=r1[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}function w0(r,e,t){if(t.length===0){let o="No records given";throw new E(o,"ERR_NO_RECORDS_RECEIVED")}let i=P(e).split("/");if(i.length<3){let o="Record key does not have a selector function";throw new E(o,"ERR_NO_SELECTOR_FUNCTION_FOR_RECORD_KEY")}let s=r[i[1].toString()];if(s==null){let o=`No selector function configured for key type "${i[1]}"`;throw new E(o,"ERR_UNRECOGNIZED_KEY_PREFIX")}return t.length===1?0:s(e,t)}function j5(r,e){return 0}var v0={pk:j5};async function Cr(r,e){let t=e.key,i=P(t).split("/");if(i.length<3)return;let s=r[i[1].toString()];if(s==null){let o=`No validator available for key type "${i[1]}"`;throw new E(o,"ERR_INVALID_RECORD_KEY_TYPE")}await s(t,e.value)}var Y5=async(r,e)=>{if(!(r instanceof Uint8Array))throw new E('"key" must be a Uint8Array',"ERR_INVALID_RECORD_KEY_NOT_BUFFER");if(r.byteLength<5)throw new E("invalid public key record","ERR_INVALID_RECORD_KEY_TOO_SHORT");if(P(r.subarray(0,4))!=="/pk/")throw new E("key was not prefixed with /pk/","ERR_INVALID_RECORD_KEY_BAD_PREFIX");let n=r.slice(4),i=await ne.digest(e);if(!Z(n,i.bytes))throw new E("public key does not match passed in key","ERR_INVALID_RECORD_HASH_MISMATCH")},x0={pk:Y5};var A0=Symbol.for("nodejs.util.inspect.custom"),E0=Object.values(Mt).map(r=>r.decoder).reduce((r,e)=>r.or(e),Mt.identity.decoder),I0=114,ro=36,no=37,In=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()})`}[as]=!0;toString(){return this.string==null&&(this.string=de.encode(this.multihash.bytes).slice(1)),this.string}toCID(){return Se.createV1(I0,this.multihash)}toBytes(){return this.multihash.bytes}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return Z(this.multihash.bytes,e);if(typeof e=="string")return ar(e).equals(this);if(e?.multihash?.bytes!=null)return Z(this.multihash.bytes,e.multihash.bytes);throw new Error("not valid Id")}[A0](){return`PeerId(${this.toString()})`}},Dr=class extends In{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},Ur=class extends In{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.multihash.digest}},Or=class extends In{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.multihash.digest}},eo=2336,to=class{type="url";multihash;privateKey;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=yt.digest($(this.url))}[A0](){return`PeerId(${this.url})`}[as]=!0;toString(){return this.toCID().toString()}toCID(){return Se.createV1(eo,this.multihash)}toBytes(){return this.toCID().bytes}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=P(e)),e.toString()===this.toString())}};function ar(r,e){if(e=e??E0,r.charAt(0)==="1"||r.charAt(0)==="Q"){let t=ir(de.decode(`z${r}`));return r.startsWith("12D")?new Ur({multihash:t}):r.startsWith("16U")?new Or({multihash:t}):new Dr({multihash:t})}return bt(E0.decode(r))}function bt(r){try{let e=ir(r);if(e.code===yt.code){if(e.digest.length===ro)return new Ur({multihash:e});if(e.digest.length===no)return new Or({multihash:e})}if(e.code===ne.code)return new Dr({multihash:e})}catch{return W5(Se.decode(r))}throw new Error("Supplied PeerID CID is invalid")}function W5(r){if(r?.multihash==null||r.version==null||r.version===1&&r.code!==I0&&r.code!==eo)throw new Error("Supplied PeerID CID is invalid");if(r.code===eo){let t=P(r.multihash.digest);return new to(new URL(t))}let e=r.multihash;if(e.code===ne.code)return new Dr({multihash:r.multihash});if(e.code===yt.code){if(e.digest.length===ro)return new Ur({multihash:r.multihash});if(e.digest.length===no)return new Or({multihash:r.multihash})}throw new Error("Supplied PeerID CID is invalid")}async function B0(r,e){return r.length===ro?new Ur({multihash:st(yt.code,r),privateKey:e}):r.length===no?new Or({multihash:st(yt.code,r),privateKey:e}):new Dr({multihash:await ne.digest(r),publicKey:r,privateKey:e})}var u1=class{index=0;input="";new(e){return this.index=0,this.input=e,this}readAtomically(e){let t=this.index,n=e();return n===void 0&&(this.index=t),n}parseWith(e){let t=e();if(this.index===this.input.length)return t}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(e){return this.readAtomically(()=>{let t=this.readChar();if(t===e)return t})}readSeparator(e,t,n){return this.readAtomically(()=>{if(!(t>0&&this.readGivenChar(e)===void 0))return n()})}readNumber(e,t,n,i){return this.readAtomically(()=>{let s=0,o=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",l=2**(8*i)-1;for(;;){let u=this.readAtomically(()=>{let f=this.readChar();if(f===void 0)return;let h=Number.parseInt(f,e);if(!Number.isNaN(h))return h});if(u===void 0)break;if(s*=e,s+=u,s>l||(o+=1,t!==void 0&&o>t))return}if(o!==0)return!n&&c&&o>1?void 0:s})}readIPv4Addr(){return this.readAtomically(()=>{let e=new Uint8Array(4);for(let t=0;t<e.length;t++){let n=this.readSeparator(".",t,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;e[t]=n}return e})}readIPv6Addr(){let e=t=>{for(let n=0;n<t.length/2;n++){let i=n*2;if(n<t.length-3){let o=this.readSeparator(":",n,()=>this.readIPv4Addr());if(o!==void 0)return t[i]=o[0],t[i+1]=o[1],t[i+2]=o[2],t[i+3]=o[3],[i+4,!0]}let s=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(s===void 0)return[i,!1];t[i]=s>>8,t[i+1]=s&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,i]=e(t);if(n===16)return t;if(i||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let s=new Uint8Array(14),o=16-(n+2),[a]=e(s.subarray(0,o));return t.set(s.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var S0=45,Z5=15,Mr=new u1;function io(r){if(!(r.length>Z5))return Mr.new(r).parseWith(()=>Mr.readIPv4Addr())}function so(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>S0))return Mr.new(r).parseWith(()=>Mr.readIPv6Addr())}function f1(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>S0))return Mr.new(r).parseWith(()=>Mr.readIPAddr())}function h1(r){return!!io(r)}function d1(r){return!!so(r)}function p1(r){return!!f1(r)}var k0=Jn(R0(),1),Q5=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.0.0/29","192.0.0.8/32","192.0.0.9/32","192.0.0.10/32","192.0.0.170/32","192.0.0.171/32","192.0.2.0/24","192.31.196.0/24","192.52.193.0/24","192.88.99.0/24","192.168.0.0/16","192.175.48.0/24","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","240.0.0.0/4","255.255.255.255/32"],X5=Q5.map(r=>new k0.Netmask(r));function oo(r){for(let e of X5)if(e.contains(r))return!0;return!1}function J5(r){return/^::ffff:([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4})$/.test(r)}function e6(r){let e=r.split(":");if(e.length<2)return!1;let t=e[e.length-1].padStart(4,"0"),n=e[e.length-2].padStart(4,"0"),i=`${parseInt(n.substring(0,2),16)}.${parseInt(n.substring(2),16)}.${parseInt(t.substring(0,2),16)}.${parseInt(t.substring(2),16)}`;return oo(i)}function t6(r){return/^::ffff:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)}function r6(r){let e=r.split(":"),t=e[e.length-1];return oo(t)}function n6(r){return/^::$/.test(r)||/^::1$/.test(r)||/^64:ff9b::([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^100::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:2[0-9a-fA-F]:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:db8:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2002:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^f[c-d]([0-9a-fA-F]{2,2}):/i.test(r)||/^fe[8-9a-bA-B][0-9a-fA-F]:/i.test(r)||/^ff([0-9a-fA-F]{2,2}):/i.test(r)}function g1(r){return h1(r)?oo(r):J5(r)?e6(r):t6(r)?r6(r):d1(r)?n6(r):void 0}var wt="/",T0=new TextEncoder().encode(wt),m1=T0[0],Vr=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=$(e);else if(e instanceof Uint8Array)this._buf=e;else throw new Error("Invalid key, should be String of Uint8Array");if(t==null&&(t=!0),t&&this.clean(),this._buf.byteLength===0||this._buf[0]!==m1)throw new Error("Invalid key")}toString(e="utf8"){return P(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join(wt))}static random(){return new r(Math.random().toString().substring(2))}static asKey(e){return e instanceof Uint8Array||typeof e=="string"?new r(e):typeof e.uint8Array=="function"?new r(e.uint8Array()):null}clean(){if((this._buf==null||this._buf.byteLength===0)&&(this._buf=T0),this._buf[0]!==m1){let e=new Uint8Array(this._buf.byteLength+1);e.fill(m1,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===m1;)this._buf=this._buf.subarray(0,-1)}less(e){let t=this.list(),n=e.list();for(let i=0;i<t.length;i++){if(n.length<i+1)return!1;let s=t[i],o=n[i];if(s<o)return!0;if(s>o)return!1}return t.length<n.length}reverse(){return r.withNamespaces(this.list().slice().reverse())}namespaces(){return this.list()}baseNamespace(){let e=this.namespaces();return e[e.length-1]}list(){return this.toString().split(wt).slice(1)}type(){return i6(this.baseNamespace())}name(){return s6(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith(wt)||(e+=wt),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r(wt):new r(e.slice(0,-1).join(wt))}child(e){return this.toString()===wt?e:e.toString()===wt?this:new r(this.toString()+e.toString(),!1)}isAncestorOf(e){return e.toString()===this.toString()?!1:e.toString().startsWith(this.toString())}isDecendantOf(e){return e.toString()===this.toString()?!1:this.toString().startsWith(e.toString())}isTopLevel(){return this.list().length===1}concat(...e){return r.withNamespaces([...this.namespaces(),...o6(e.map(t=>t.namespaces()))])}};function i6(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function s6(r){let e=r.split(":");return e[e.length-1]}function o6(r){return[].concat(...r)}function J(r,e){e==null&&(e=r.reduce((i,s)=>i+s.length,0));let t=be(e),n=0;for(let i of r)t.set(i,n),n+=i.length;return t}var c6=$("/pk/");function y1(r){return{...r,multiaddrs:r.multiaddrs.filter(e=>{let[[t,n]]=e.stringTuples();if(t===53||t===54||t===55)return n!=="localhost";if(t!==4&&t!==6||n==null)return!1;let i=g1(n);return i==null?!0:!i})}}function _0(r){return{...r,multiaddrs:r.multiaddrs.filter(e=>{let[[t,n]]=e.stringTuples();if(n==="localhost")return!0;if(t!==4&&t!==6||n==null)return!1;let i=g1(n);return i??!1})}}function N0(r){return r}async function Ft(r){return(await ne.digest(r)).digest}async function ze(r){return Ft(r.toBytes())}function Ht(r){return new Vr(`${M2}/${P(r,"base32")}`,!1)}function L0(r){return J([c6,r.toBytes()])}function P0(r){return P(r.subarray(0,4))==="/pk/"}function C0(r){return bt(r.subarray(4))}function ao(r,e){let t=new Date;return new pe(r,e,t).serialize()}function D0(r,e=100){let t;return()=>{clearTimeout(t),t=setTimeout(()=>{r()},e)}}var l6=290,u6=54,f6=55,h6=56,d6=4,p6=41;function U0(r){let e=r.stringTuples();for(let t of e)if(t[0]===l6)return!1;if(e[0][0]===u6||e[0][0]===f6||e[0][0]===h6)return!0;if(e[0][0]===d6||e[0][0]===p6){let t=g1(`${e[0][1]}`);return t==null||!t}return!1}var b1=class{log;components;validators;selectors;peerRouting;queryManager;network;constructor(e,t){let{validators:n,selectors:i,peerRouting:s,queryManager:o,network:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-fetching`),this.validators=n,this.selectors=i,this.peerRouting=s,this.queryManager=o,this.network=a}async getLocal(e){this.log("getLocal %b",e);let t=Ht(e);this.log("fetching record for key %k",t);let n=await this.components.datastore.get(t);this.log("found %k in local datastore",t);let i=pe.deserialize(n);return await Cr(this.validators,i),i}async*sendCorrectionRecord(e,t,n,i={}){this.log("sendCorrection for %b",e);let s=ao(e,n);for(let{value:o,from:a}of t){if(Z(o,n)){this.log("record was ok");continue}if(this.components.peerId.equals(a)){try{let u=Ht(e);this.log(`Storing corrected record for key ${u.toString()}`),await this.components.datastore.put(u,s.subarray())}catch(u){this.log.error("Failed error correcting self",u)}continue}let c=!1,l={type:M.PUT_VALUE,key:e,record:s};for await(let u of this.network.sendRequest(a,l,i))u.name==="PEER_RESPONSE"&&u.record!=null&&Z(u.record.value,pe.deserialize(s).value)&&(c=!0),yield u;c||(yield He({from:a,error:new E("value not put correctly","ERR_PUT_VALUE_INVALID")},i)),this.log.error("Failed error correcting entry")}}async*put(e,t,n={}){this.log("put key %b value %b",e,t);let i=ao(e,t),s=Ht(e);this.log(`storing record for key ${s.toString()}`),await this.components.datastore.put(s,i.subarray()),yield*Vt(this.peerRouting.getClosestPeers(e,{signal:n.signal}),o=>Tr(o,a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[],l={type:M.PUT_VALUE,key:e,record:i};this.log("send put to %p",a.peer.id);for await(let u of this.network.sendRequest(a.peer.id,l,n))c.push(u),u.name==="PEER_RESPONSE"&&(u.record!=null&&Z(u.record.value,pe.deserialize(i).value)||c.push(He({from:a.peer.id,error:new E("value not put correctly","ERR_PUT_VALUE_INVALID")},n)));return c}),o=>xn(o,{ordered:!1,concurrency:3}),async function*(o){for await(let a of o)yield*a})}async*get(e,t={}){this.log("get %b",e);let n=[];for await(let a of this.getMany(e,t))a.name==="VALUE"&&n.push(a),yield a;if(n.length===0)return;let i=n.map(a=>a.value),s=0;try{s=w0(this.selectors,e,i)}catch(a){if(a.code!=="ERR_NO_SELECTOR_FUNCTION_FOR_RECORD_KEY")throw a}let o=i[s];if(this.log("GetValue %b %b",e,o),o==null)throw new E("best value was not found","ERR_NOT_FOUND");yield*this.sendCorrectionRecord(e,n,o,t),yield n[s]}async*getMany(e,t={}){this.log("getMany values for %b",e);try{let s=await this.getLocal(e);yield An({value:s.value,from:this.components.peerId},t)}catch(s){this.log("error getting local value for %b",e,s)}let n=this,i=async function*({peer:s,signal:o}){for await(let a of n.peerRouting.getValueOrPeers(s,e,{signal:o}))yield a,a.name==="PEER_RESPONSE"&&a.record!=null&&(yield An({from:s,value:a.record.value},t))};yield*this.queryManager.run(e,i,t)}};function lo(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let n=r.next(),i=n.value;return n.done===!0||i==null?{done:!0,value:void 0}:{done:!1,value:e(i)}}};return t}var ct=class r{set;constructor(e){if(this.set=new Set,e!=null)for(let t of e)this.set.add(t.toString())}get size(){return this.set.size}[Symbol.iterator](){return this.values()}add(e){this.set.add(e.toString())}clear(){this.set.clear()}delete(e){this.set.delete(e.toString())}entries(){return lo(this.set.entries(),e=>{let t=ar(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let n=ar(t);e(n,n,this)})}has(e){return this.set.has(e.toString())}values(){return lo(this.set.values(),e=>ar(e))}intersection(e){let t=new r;for(let n of e)this.has(n)&&t.add(n);return t}difference(e){let t=new r;for(let n of this)e.has(n)||t.add(n);return t}union(e){let t=new r;for(let n of e)t.add(n);for(let n of this)t.add(n);return t}};var ee={get(r=globalThis){let e=r.crypto;if(e?.subtle==null)throw Object.assign(new Error("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api"),{code:"ERR_MISSING_WEB_CRYPTO"});return e}};var M0={SHA1:20,SHA256:32,SHA512:64};var g6={SHA1:"SHA-1",SHA256:"SHA-256",SHA512:"SHA-512"},m6=async(r,e)=>{let t=await ee.get().subtle.sign({name:"HMAC"},r,e);return new Uint8Array(t,0,t.byteLength)};async function V0(r,e){let t=g6[r],n=await ee.get().subtle.importKey("raw",e,{name:"HMAC",hash:{name:t}},!1,["sign"]);return{async digest(i){return m6(n,i)},length:M0[r]}}var vi={};oe(vi,{Ed25519PrivateKey:()=>Bt,Ed25519PublicKey:()=>pr,MAX_RSA_KEY_SIZE:()=>yr,RsaPrivateKey:()=>Jt,RsaPublicKey:()=>mr,Secp256k1PrivateKey:()=>wr,Secp256k1PublicKey:()=>br,generateEphemeralKeyPair:()=>p3,generateKeyPair:()=>m7,generateKeyPairFromSeed:()=>y7,importKey:()=>x7,keyStretcher:()=>y3,keysPBM:()=>Qr,marshalPrivateKey:()=>v7,marshalPublicKey:()=>w7,supportedKeys:()=>Ct,unmarshalPrivateKey:()=>I4,unmarshalPublicKey:()=>b7});var No={};oe(No,{Ed25519PrivateKey:()=>Bt,Ed25519PublicKey:()=>pr,generateKeyPair:()=>S8,generateKeyPairFromSeed:()=>_o,unmarshalEd25519PrivateKey:()=>I8,unmarshalEd25519PublicKey:()=>B8});function uo(r,e){let t=$(r,"base64urlpad");if(e!=null){if(t.length>e)throw new Error("byte array longer than desired length");t=J([new Uint8Array(e-t.length),t])}return t}function Ge(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function Fr(r){if(!Number.isSafeInteger(r)||r<0)throw new Error(`positive integer expected, not ${r}`)}function b6(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Hr(r,...e){if(!b6(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function w1(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");Fr(r.outputLen),Fr(r.blockLen)}function Kr(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function F0(r,e){Hr(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var cr=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;var $r=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),We=(r,e)=>r<<32-e|r>>>e;var hf=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;var w6=async()=>{};async function H0(r,e,t){let n=Date.now();for(let i=0;i<r;i++){t(i);let s=Date.now()-n;s>=0&&s<e||(await w6(),n+=s)}}function K0(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Kt(r){return typeof r=="string"&&(r=K0(r)),Hr(r),r}function fo(...r){let e=0;for(let n=0;n<r.length;n++){let i=r[n];Hr(i),e+=i.length}let t=new Uint8Array(e);for(let n=0,i=0;n<r.length;n++){let s=r[n];t.set(s,i),i+=s.length}return t}var qr=class{clone(){return this._cloneInto()}},v6={}.toString;function q0(r,e){if(e!==void 0&&v6.call(e)!=="[object Object]")throw new Error("Options should be object or undefined");return Object.assign(r,e)}function v1(r){let e=n=>r().update(Kt(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function zr(r=32){if(cr&&typeof cr.getRandomValues=="function")return cr.getRandomValues(new Uint8Array(r));if(cr&&typeof cr.randomBytes=="function")return cr.randomBytes(r);throw new Error("crypto.getRandomValues must be defined")}function x6(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),s=BigInt(4294967295),o=Number(t>>i&s),a=Number(t&s),c=n?4:0,l=n?0:4;r.setUint32(e+c,o,n),r.setUint32(e+l,a,n)}var $0=(r,e,t)=>r&e^~r&t,z0=(r,e,t)=>r&e^r&t^e&t,Gr=class extends qr{constructor(e,t,n,i){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=$r(this.buffer)}update(e){Kr(this);let{view:t,buffer:n,blockLen:i}=this;e=Kt(e);let s=e.length;for(let o=0;o<s;){let a=Math.min(i-this.pos,s-o);if(a===i){let c=$r(e);for(;i<=s-o;o+=i)this.process(c,o);continue}n.set(e.subarray(o,o+a),this.pos),this.pos+=a,o+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Kr(this),F0(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:s}=this,{pos:o}=this;t[o++]=128,this.buffer.subarray(o).fill(0),this.padOffset>i-o&&(this.process(n,0),o=0);for(let f=o;f<i;f++)t[f]=0;x6(n,i-8,BigInt(this.length*8),s),this.process(n,0);let a=$r(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let l=c/4,u=this.get();if(l>u.length)throw new Error("_sha2: outputLen bigger than state");for(let f=0;f<l;f++)a.setUint32(4*f,u[f],s)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:i,finished:s,destroyed:o,pos:a}=this;return e.length=i,e.pos=a,e.finished=s,e.destroyed=o,i%t&&e.buffer.set(n),e}};var x1=BigInt(4294967295),ho=BigInt(32);function G0(r,e=!1){return e?{h:Number(r&x1),l:Number(r>>ho&x1)}:{h:Number(r>>ho&x1)|0,l:Number(r&x1)|0}}function E6(r,e=!1){let t=new Uint32Array(r.length),n=new Uint32Array(r.length);for(let i=0;i<r.length;i++){let{h:s,l:o}=G0(r[i],e);[t[i],n[i]]=[s,o]}return[t,n]}var A6=(r,e)=>BigInt(r>>>0)<<ho|BigInt(e>>>0),I6=(r,e,t)=>r>>>t,B6=(r,e,t)=>r<<32-t|e>>>t,S6=(r,e,t)=>r>>>t|e<<32-t,R6=(r,e,t)=>r<<32-t|e>>>t,k6=(r,e,t)=>r<<64-t|e>>>t-32,T6=(r,e,t)=>r>>>t-32|e<<64-t,_6=(r,e)=>e,N6=(r,e)=>r,L6=(r,e,t)=>r<<t|e>>>32-t,P6=(r,e,t)=>e<<t|r>>>32-t,C6=(r,e,t)=>e<<t-32|r>>>64-t,D6=(r,e,t)=>r<<t-32|e>>>64-t;function U6(r,e,t,n){let i=(e>>>0)+(n>>>0);return{h:r+t+(i/2**32|0)|0,l:i|0}}var O6=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),M6=(r,e,t,n)=>e+t+n+(r/2**32|0)|0,V6=(r,e,t,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0),F6=(r,e,t,n,i)=>e+t+n+i+(r/2**32|0)|0,H6=(r,e,t,n,i)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(i>>>0),K6=(r,e,t,n,i,s)=>e+t+n+i+s+(r/2**32|0)|0;var q6={fromBig:G0,split:E6,toBig:A6,shrSH:I6,shrSL:B6,rotrSH:S6,rotrSL:R6,rotrBH:k6,rotrBL:T6,rotr32H:_6,rotr32L:N6,rotlSH:L6,rotlSL:P6,rotlBH:C6,rotlBL:D6,add:U6,add3L:O6,add3H:M6,add4L:V6,add4H:F6,add5H:K6,add5L:H6},O=q6;var[$6,z6]=O.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(r=>BigInt(r))),qt=new Uint32Array(80),$t=new Uint32Array(80),po=class extends Gr{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){let{Ah:e,Al:t,Bh:n,Bl:i,Ch:s,Cl:o,Dh:a,Dl:c,Eh:l,El:u,Fh:f,Fl:h,Gh:p,Gl:y,Hh:g,Hl:d}=this;return[e,t,n,i,s,o,a,c,l,u,f,h,p,y,g,d]}set(e,t,n,i,s,o,a,c,l,u,f,h,p,y,g,d){this.Ah=e|0,this.Al=t|0,this.Bh=n|0,this.Bl=i|0,this.Ch=s|0,this.Cl=o|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=u|0,this.Fh=f|0,this.Fl=h|0,this.Gh=p|0,this.Gl=y|0,this.Hh=g|0,this.Hl=d|0}process(e,t){for(let m=0;m<16;m++,t+=4)qt[m]=e.getUint32(t),$t[m]=e.getUint32(t+=4);for(let m=16;m<80;m++){let A=qt[m-15]|0,_=$t[m-15]|0,T=O.rotrSH(A,_,1)^O.rotrSH(A,_,8)^O.shrSH(A,_,7),R=O.rotrSL(A,_,1)^O.rotrSL(A,_,8)^O.shrSL(A,_,7),k=qt[m-2]|0,C=$t[m-2]|0,ue=O.rotrSH(k,C,19)^O.rotrBH(k,C,61)^O.shrSH(k,C,6),z=O.rotrSL(k,C,19)^O.rotrBL(k,C,61)^O.shrSL(k,C,6),V=O.add4L(R,z,$t[m-7],$t[m-16]),fe=O.add4H(V,T,ue,qt[m-7],qt[m-16]);qt[m]=fe|0,$t[m]=V|0}let{Ah:n,Al:i,Bh:s,Bl:o,Ch:a,Cl:c,Dh:l,Dl:u,Eh:f,El:h,Fh:p,Fl:y,Gh:g,Gl:d,Hh:b,Hl:v}=this;for(let m=0;m<80;m++){let A=O.rotrSH(f,h,14)^O.rotrSH(f,h,18)^O.rotrBH(f,h,41),_=O.rotrSL(f,h,14)^O.rotrSL(f,h,18)^O.rotrBL(f,h,41),T=f&p^~f&g,R=h&y^~h&d,k=O.add5L(v,_,R,z6[m],$t[m]),C=O.add5H(k,b,A,T,$6[m],qt[m]),ue=k|0,z=O.rotrSH(n,i,28)^O.rotrBH(n,i,34)^O.rotrBH(n,i,39),V=O.rotrSL(n,i,28)^O.rotrBL(n,i,34)^O.rotrBL(n,i,39),fe=n&s^n&a^s&a,B=i&o^i&c^o&c;b=g|0,v=d|0,g=p|0,d=y|0,p=f|0,y=h|0,{h:f,l:h}=O.add(l|0,u|0,C|0,ue|0),l=a|0,u=c|0,a=s|0,c=o|0,s=n|0,o=i|0;let N=O.add3L(ue,V,B);n=O.add3H(N,C,z,fe),i=N|0}({h:n,l:i}=O.add(this.Ah|0,this.Al|0,n|0,i|0)),{h:s,l:o}=O.add(this.Bh|0,this.Bl|0,s|0,o|0),{h:a,l:c}=O.add(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:u}=O.add(this.Dh|0,this.Dl|0,l|0,u|0),{h:f,l:h}=O.add(this.Eh|0,this.El|0,f|0,h|0),{h:p,l:y}=O.add(this.Fh|0,this.Fl|0,p|0,y|0),{h:g,l:d}=O.add(this.Gh|0,this.Gl|0,g|0,d|0),{h:b,l:v}=O.add(this.Hh|0,this.Hl|0,b|0,v|0),this.set(n,i,s,o,a,c,l,u,f,h,p,y,g,d,b,v)}roundClean(){qt.fill(0),$t.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}};var Sn=v1(()=>new po);var A1={};oe(A1,{aInRange:()=>De,abool:()=>Ze,abytes:()=>jr,bitGet:()=>Q6,bitLen:()=>wo,bitMask:()=>kn,bitSet:()=>X6,bytesToHex:()=>xt,bytesToNumberBE:()=>Et,bytesToNumberLE:()=>Gt,concatBytes:()=>At,createHmacDrbg:()=>vo,ensureBytes:()=>se,equalBytes:()=>W6,hexToBytes:()=>ur,hexToNumber:()=>bo,inRange:()=>Rn,isBytes:()=>zt,memoized:()=>hr,notImplemented:()=>e8,numberToBytesBE:()=>jt,numberToBytesLE:()=>fr,numberToHexUnpadded:()=>lr,numberToVarBytesBE:()=>Y6,utf8ToBytes:()=>Z6,validateObject:()=>lt});var yo=BigInt(0),E1=BigInt(1),G6=BigInt(2);function zt(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function jr(r){if(!zt(r))throw new Error("Uint8Array expected")}function Ze(r,e){if(typeof e!="boolean")throw new Error(`${r} must be valid boolean, got "${e}".`)}var j6=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function xt(r){jr(r);let e="";for(let t=0;t<r.length;t++)e+=j6[r[t]];return e}function lr(r){let e=r.toString(16);return e.length&1?`0${e}`:e}function bo(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return BigInt(r===""?"0":`0x${r}`)}var vt={_0:48,_9:57,_A:65,_F:70,_a:97,_f:102};function j0(r){if(r>=vt._0&&r<=vt._9)return r-vt._0;if(r>=vt._A&&r<=vt._F)return r-(vt._A-10);if(r>=vt._a&&r<=vt._f)return r-(vt._a-10)}function ur(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);let e=r.length,t=e/2;if(e%2)throw new Error("padded hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(t);for(let i=0,s=0;i<t;i++,s+=2){let o=j0(r.charCodeAt(s)),a=j0(r.charCodeAt(s+1));if(o===void 0||a===void 0){let c=r[s]+r[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}n[i]=o*16+a}return n}function Et(r){return bo(xt(r))}function Gt(r){return jr(r),bo(xt(Uint8Array.from(r).reverse()))}function jt(r,e){return ur(r.toString(16).padStart(e*2,"0"))}function fr(r,e){return jt(r,e).reverse()}function Y6(r){return ur(lr(r))}function se(r,e,t){let n;if(typeof e=="string")try{n=ur(e)}catch(s){throw new Error(`${r} must be valid hex string, got "${e}". Cause: ${s}`)}else if(zt(e))n=Uint8Array.from(e);else throw new Error(`${r} must be hex string or Uint8Array`);let i=n.length;if(typeof t=="number"&&i!==t)throw new Error(`${r} expected ${t} bytes, got ${i}`);return n}function At(...r){let e=0;for(let n=0;n<r.length;n++){let i=r[n];jr(i),e+=i.length}let t=new Uint8Array(e);for(let n=0,i=0;n<r.length;n++){let s=r[n];t.set(s,i),i+=s.length}return t}function W6(r,e){if(r.length!==e.length)return!1;let t=0;for(let n=0;n<r.length;n++)t|=r[n]^e[n];return t===0}function Z6(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}var go=r=>typeof r=="bigint"&&yo<=r;function Rn(r,e,t){return go(r)&&go(e)&&go(t)&&e<=r&&r<t}function De(r,e,t,n){if(!Rn(e,t,n))throw new Error(`expected valid ${r}: ${t} <= n < ${n}, got ${typeof e} ${e}`)}function wo(r){let e;for(e=0;r>yo;r>>=E1,e+=1);return e}function Q6(r,e){return r>>BigInt(e)&E1}function X6(r,e,t){return r|(t?E1:yo)<<BigInt(e)}var kn=r=>(G6<<BigInt(r-1))-E1,mo=r=>new Uint8Array(r),Y0=r=>Uint8Array.from(r);function vo(r,e,t){if(typeof r!="number"||r<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof t!="function")throw new Error("hmacFn must be a function");let n=mo(r),i=mo(r),s=0,o=()=>{n.fill(1),i.fill(0),s=0},a=(...f)=>t(i,n,...f),c=(f=mo())=>{i=a(Y0([0]),f),n=a(),f.length!==0&&(i=a(Y0([1]),f),n=a())},l=()=>{if(s++>=1e3)throw new Error("drbg: tried 1000 values");let f=0,h=[];for(;f<e;){n=a();let p=n.slice();h.push(p),f+=n.length}return At(...h)};return(f,h)=>{o(),c(f);let p;for(;!(p=h(l()));)c();return o(),p}}var J6={bigint:r=>typeof r=="bigint",function:r=>typeof r=="function",boolean:r=>typeof r=="boolean",string:r=>typeof r=="string",stringOrUint8Array:r=>typeof r=="string"||zt(r),isSafeInteger:r=>Number.isSafeInteger(r),array:r=>Array.isArray(r),field:(r,e)=>e.Fp.isValid(r),hash:r=>typeof r=="function"&&Number.isSafeInteger(r.outputLen)};function lt(r,e,t={}){let n=(i,s,o)=>{let a=J6[s];if(typeof a!="function")throw new Error(`Invalid validator "${s}", expected function`);let c=r[i];if(!(o&&c===void 0)&&!a(c,r))throw new Error(`Invalid param ${String(i)}=${c} (${typeof c}), expected ${s}`)};for(let[i,s]of Object.entries(e))n(i,s,!1);for(let[i,s]of Object.entries(t))n(i,s,!0);return r}var e8=()=>{throw new Error("not implemented")};function hr(r){let e=new WeakMap;return(t,...n)=>{let i=e.get(t);if(i!==void 0)return i;let s=r(t,...n);return e.set(t,s),s}}var ge=BigInt(0),te=BigInt(1),dr=BigInt(2),t8=BigInt(3),xo=BigInt(4),W0=BigInt(5),Z0=BigInt(8),r8=BigInt(9),n8=BigInt(16);function W(r,e){let t=r%e;return t>=ge?t:e+t}function i8(r,e,t){if(t<=ge||e<ge)throw new Error("Expected power/modulo > 0");if(t===te)return ge;let n=te;for(;e>ge;)e&te&&(n=n*r%t),r=r*r%t,e>>=te;return n}function re(r,e,t){let n=r;for(;e-- >ge;)n*=n,n%=t;return n}function I1(r,e){if(r===ge||e<=ge)throw new Error(`invert: expected positive integers, got n=${r} mod=${e}`);let t=W(r,e),n=e,i=ge,s=te,o=te,a=ge;for(;t!==ge;){let l=n/t,u=n%t,f=i-o*l,h=s-a*l;n=t,t=u,i=o,s=a,o=f,a=h}if(n!==te)throw new Error("invert: does not exist");return W(i,e)}function s8(r){let e=(r-te)/dr,t,n,i;for(t=r-te,n=0;t%dr===ge;t/=dr,n++);for(i=dr;i<r&&i8(i,e,r)!==r-te;i++);if(n===1){let o=(r+te)/xo;return function(c,l){let u=c.pow(l,o);if(!c.eql(c.sqr(u),l))throw new Error("Cannot find square root");return u}}let s=(t+te)/dr;return function(a,c){if(a.pow(c,e)===a.neg(a.ONE))throw new Error("Cannot find square root");let l=n,u=a.pow(a.mul(a.ONE,i),t),f=a.pow(c,s),h=a.pow(c,t);for(;!a.eql(h,a.ONE);){if(a.eql(h,a.ZERO))return a.ZERO;let p=1;for(let g=a.sqr(h);p<l&&!a.eql(g,a.ONE);p++)g=a.sqr(g);let y=a.pow(u,te<<BigInt(l-p-1));u=a.sqr(y),f=a.mul(f,y),h=a.mul(h,u),l=p}return f}}function o8(r){if(r%xo===t8){let e=(r+te)/xo;return function(n,i){let s=n.pow(i,e);if(!n.eql(n.sqr(s),i))throw new Error("Cannot find square root");return s}}if(r%Z0===W0){let e=(r-W0)/Z0;return function(n,i){let s=n.mul(i,dr),o=n.pow(s,e),a=n.mul(i,o),c=n.mul(n.mul(a,dr),o),l=n.mul(a,n.sub(c,n.ONE));if(!n.eql(n.sqr(l),i))throw new Error("Cannot find square root");return l}}return r%n8,s8(r)}var Q0=(r,e)=>(W(r,e)&te)===te,a8=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Eo(r){let e={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},t=a8.reduce((n,i)=>(n[i]="function",n),e);return lt(r,t)}function c8(r,e,t){if(t<ge)throw new Error("Expected power > 0");if(t===ge)return r.ONE;if(t===te)return e;let n=r.ONE,i=e;for(;t>ge;)t&te&&(n=r.mul(n,i)),i=r.sqr(i),t>>=te;return n}function l8(r,e){let t=new Array(e.length),n=e.reduce((s,o,a)=>r.is0(o)?s:(t[a]=s,r.mul(s,o)),r.ONE),i=r.inv(n);return e.reduceRight((s,o,a)=>r.is0(o)?s:(t[a]=r.mul(s,t[a]),r.mul(s,o)),i),t}function Ao(r,e){let t=e!==void 0?e:r.toString(2).length,n=Math.ceil(t/8);return{nBitLength:t,nByteLength:n}}function Yt(r,e,t=!1,n={}){if(r<=ge)throw new Error(`Expected Field ORDER > 0, got ${r}`);let{nBitLength:i,nByteLength:s}=Ao(r,e);if(s>2048)throw new Error("Field lengths over 2048 bytes are not supported");let o=o8(r),a=Object.freeze({ORDER:r,BITS:i,BYTES:s,MASK:kn(i),ZERO:ge,ONE:te,create:c=>W(c,r),isValid:c=>{if(typeof c!="bigint")throw new Error(`Invalid field element: expected bigint, got ${typeof c}`);return ge<=c&&c<r},is0:c=>c===ge,isOdd:c=>(c&te)===te,neg:c=>W(-c,r),eql:(c,l)=>c===l,sqr:c=>W(c*c,r),add:(c,l)=>W(c+l,r),sub:(c,l)=>W(c-l,r),mul:(c,l)=>W(c*l,r),pow:(c,l)=>c8(a,c,l),div:(c,l)=>W(c*I1(l,r),r),sqrN:c=>c*c,addN:(c,l)=>c+l,subN:(c,l)=>c-l,mulN:(c,l)=>c*l,inv:c=>I1(c,r),sqrt:n.sqrt||(c=>o(a,c)),invertBatch:c=>l8(a,c),cmov:(c,l,u)=>u?l:c,toBytes:c=>t?fr(c,s):jt(c,s),fromBytes:c=>{if(c.length!==s)throw new Error(`Fp.fromBytes: expected ${s}, got ${c.length}`);return t?Gt(c):Et(c)}});return Object.freeze(a)}function X0(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let e=r.toString(2).length;return Math.ceil(e/8)}function Io(r){let e=X0(r);return e+Math.ceil(e/2)}function J0(r,e,t=!1){let n=r.length,i=X0(e),s=Io(e);if(n<16||n<s||n>1024)throw new Error(`expected ${s}-1024 bytes of input, got ${n}`);let o=t?Et(r):Gt(r),a=W(o,e-te)+te;return t?fr(a,i):jt(a,i)}var f8=BigInt(0),Bo=BigInt(1),So=new WeakMap,e3=new WeakMap;function B1(r,e){let t=(s,o)=>{let a=o.negate();return s?a:o},n=s=>{if(!Number.isSafeInteger(s)||s<=0||s>e)throw new Error(`Wrong window size=${s}, should be [1..${e}]`)},i=s=>{n(s);let o=Math.ceil(e/s)+1,a=2**(s-1);return{windows:o,windowSize:a}};return{constTimeNegate:t,unsafeLadder(s,o){let a=r.ZERO,c=s;for(;o>f8;)o&Bo&&(a=a.add(c)),c=c.double(),o>>=Bo;return a},precomputeWindow(s,o){let{windows:a,windowSize:c}=i(o),l=[],u=s,f=u;for(let h=0;h<a;h++){f=u,l.push(f);for(let p=1;p<c;p++)f=f.add(u),l.push(f);u=f.double()}return l},wNAF(s,o,a){let{windows:c,windowSize:l}=i(s),u=r.ZERO,f=r.BASE,h=BigInt(2**s-1),p=2**s,y=BigInt(s);for(let g=0;g<c;g++){let d=g*l,b=Number(a&h);a>>=y,b>l&&(b-=p,a+=Bo);let v=d,m=d+Math.abs(b)-1,A=g%2!==0,_=b<0;b===0?f=f.add(t(A,o[v])):u=u.add(t(_,o[m]))}return{p:u,f}},wNAFCached(s,o,a){let c=e3.get(s)||1,l=So.get(s);return l||(l=this.precomputeWindow(s,c),c!==1&&So.set(s,a(l))),this.wNAF(c,l,o)},setWindowSize(s,o){n(o),e3.set(s,o),So.delete(s)}}}function S1(r,e,t,n){if(!Array.isArray(t)||!Array.isArray(n)||n.length!==t.length)throw new Error("arrays of points and scalars must have equal length");n.forEach((u,f)=>{if(!e.isValid(u))throw new Error(`wrong scalar at index ${f}`)}),t.forEach((u,f)=>{if(!(u instanceof r))throw new Error(`wrong point at index ${f}`)});let i=wo(BigInt(t.length)),s=i>12?i-3:i>4?i-2:i?2:1,o=(1<<s)-1,a=new Array(o+1).fill(r.ZERO),c=Math.floor((e.BITS-1)/s)*s,l=r.ZERO;for(let u=c;u>=0;u-=s){a.fill(r.ZERO);for(let h=0;h<n.length;h++){let p=n[h],y=Number(p>>BigInt(u)&BigInt(o));a[y]=a[y].add(t[h])}let f=r.ZERO;for(let h=a.length-1,p=r.ZERO;h>0;h--)p=p.add(a[h]),f=f.add(p);if(l=l.add(f),u!==0)for(let h=0;h<s;h++)l=l.double()}return l}function Tn(r){return Eo(r.Fp),lt(r,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...Ao(r.n,r.nBitLength),...r,p:r.Fp.ORDER})}var Qe=BigInt(0),Ue=BigInt(1),R1=BigInt(2),h8=BigInt(8),d8={zip215:!0};function p8(r){let e=Tn(r);return lt(r,{hash:"function",a:"bigint",d:"bigint",randomBytes:"function"},{adjustScalarBytes:"function",domain:"function",uvRatio:"function",mapToCurve:"function"}),Object.freeze({...e})}function t3(r){let e=p8(r),{Fp:t,n,prehash:i,hash:s,randomBytes:o,nByteLength:a,h:c}=e,l=R1<<BigInt(a*8)-Ue,u=t.create,f=Yt(e.n,e.nBitLength),h=e.uvRatio||((x,w)=>{try{return{isValid:!0,value:t.sqrt(x*t.inv(w))}}catch{return{isValid:!1,value:Qe}}}),p=e.adjustScalarBytes||(x=>x),y=e.domain||((x,w,I)=>{if(Ze("phflag",I),w.length||I)throw new Error("Contexts/pre-hash are not supported");return x});function g(x,w){De("coordinate "+x,w,Qe,l)}function d(x){if(!(x instanceof m))throw new Error("ExtendedPoint expected")}let b=hr((x,w)=>{let{ex:I,ey:L,ez:D}=x,U=x.is0();w==null&&(w=U?h8:t.inv(D));let F=u(I*w),q=u(L*w),H=u(D*w);if(U)return{x:Qe,y:Ue};if(H!==Ue)throw new Error("invZ was invalid");return{x:F,y:q}}),v=hr(x=>{let{a:w,d:I}=e;if(x.is0())throw new Error("bad point: ZERO");let{ex:L,ey:D,ez:U,et:F}=x,q=u(L*L),H=u(D*D),Y=u(U*U),Q=u(Y*Y),me=u(q*w),ye=u(Y*u(me+H)),xe=u(Q+u(I*u(q*H)));if(ye!==xe)throw new Error("bad point: equation left != right (1)");let Te=u(L*D),he=u(U*F);if(Te!==he)throw new Error("bad point: equation left != right (2)");return!0});class m{constructor(w,I,L,D){this.ex=w,this.ey=I,this.ez=L,this.et=D,g("x",w),g("y",I),g("z",L),g("t",D),Object.freeze(this)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static fromAffine(w){if(w instanceof m)throw new Error("extended point not allowed");let{x:I,y:L}=w||{};return g("x",I),g("y",L),new m(I,L,Ue,u(I*L))}static normalizeZ(w){let I=t.invertBatch(w.map(L=>L.ez));return w.map((L,D)=>L.toAffine(I[D])).map(m.fromAffine)}static msm(w,I){return S1(m,f,w,I)}_setWindowSize(w){T.setWindowSize(this,w)}assertValidity(){v(this)}equals(w){d(w);let{ex:I,ey:L,ez:D}=this,{ex:U,ey:F,ez:q}=w,H=u(I*q),Y=u(U*D),Q=u(L*q),me=u(F*D);return H===Y&&Q===me}is0(){return this.equals(m.ZERO)}negate(){return new m(u(-this.ex),this.ey,this.ez,u(-this.et))}double(){let{a:w}=e,{ex:I,ey:L,ez:D}=this,U=u(I*I),F=u(L*L),q=u(R1*u(D*D)),H=u(w*U),Y=I+L,Q=u(u(Y*Y)-U-F),me=H+F,ye=me-q,xe=H-F,Te=u(Q*ye),he=u(me*xe),Le=u(Q*xe),pt=u(ye*me);return new m(Te,he,pt,Le)}add(w){d(w);let{a:I,d:L}=e,{ex:D,ey:U,ez:F,et:q}=this,{ex:H,ey:Y,ez:Q,et:me}=w;if(I===BigInt(-1)){let x2=u((U-D)*(Y+H)),E2=u((U+D)*(Y-H)),os=u(E2-x2);if(os===Qe)return this.double();let A2=u(F*R1*me),I2=u(q*R1*Q),B2=I2+A2,S2=E2+x2,R2=I2-A2,ca=u(B2*os),la=u(S2*R2),ua=u(B2*R2),fa=u(os*S2);return new m(ca,la,fa,ua)}let ye=u(D*H),xe=u(U*Y),Te=u(q*L*me),he=u(F*Q),Le=u((D+U)*(H+Y)-ye-xe),pt=he-Te,fn=he+Te,hn=u(xe-I*ye),ia=u(Le*pt),sa=u(fn*hn),oa=u(Le*hn),aa=u(pt*fn);return new m(ia,sa,aa,oa)}subtract(w){return this.add(w.negate())}wNAF(w){return T.wNAFCached(this,w,m.normalizeZ)}multiply(w){let I=w;De("scalar",I,Ue,n);let{p:L,f:D}=this.wNAF(I);return m.normalizeZ([L,D])[0]}multiplyUnsafe(w){let I=w;return De("scalar",I,Qe,n),I===Qe?_:this.equals(_)||I===Ue?this:this.equals(A)?this.wNAF(I).p:T.unsafeLadder(this,I)}isSmallOrder(){return this.multiplyUnsafe(c).is0()}isTorsionFree(){return T.unsafeLadder(this,n).is0()}toAffine(w){return b(this,w)}clearCofactor(){let{h:w}=e;return w===Ue?this:this.multiplyUnsafe(w)}static fromHex(w,I=!1){let{d:L,a:D}=e,U=t.BYTES;w=se("pointHex",w,U),Ze("zip215",I);let F=w.slice(),q=w[U-1];F[U-1]=q&-129;let H=Gt(F),Y=I?l:t.ORDER;De("pointHex.y",H,Qe,Y);let Q=u(H*H),me=u(Q-Ue),ye=u(L*Q-D),{isValid:xe,value:Te}=h(me,ye);if(!xe)throw new Error("Point.fromHex: invalid y coordinate");let he=(Te&Ue)===Ue,Le=(q&128)!==0;if(!I&&Te===Qe&&Le)throw new Error("Point.fromHex: x=0 and x_0=1");return Le!==he&&(Te=u(-Te)),m.fromAffine({x:Te,y:H})}static fromPrivateKey(w){return C(w).point}toRawBytes(){let{x:w,y:I}=this.toAffine(),L=fr(I,t.BYTES);return L[L.length-1]|=w&Ue?128:0,L}toHex(){return xt(this.toRawBytes())}}m.BASE=new m(e.Gx,e.Gy,Ue,u(e.Gx*e.Gy)),m.ZERO=new m(Qe,Ue,Ue,Qe);let{BASE:A,ZERO:_}=m,T=B1(m,a*8);function R(x){return W(x,n)}function k(x){return R(Gt(x))}function C(x){let w=a;x=se("private key",x,w);let I=se("hashed private key",s(x),2*w),L=p(I.slice(0,w)),D=I.slice(w,2*w),U=k(L),F=A.multiply(U),q=F.toRawBytes();return{head:L,prefix:D,scalar:U,point:F,pointBytes:q}}function ue(x){return C(x).pointBytes}function z(x=new Uint8Array,...w){let I=At(...w);return k(s(y(I,se("context",x),!!i)))}function V(x,w,I={}){x=se("message",x),i&&(x=i(x));let{prefix:L,scalar:D,pointBytes:U}=C(w),F=z(I.context,L,x),q=A.multiply(F).toRawBytes(),H=z(I.context,q,U,x),Y=R(F+H*D);De("signature.s",Y,Qe,n);let Q=At(q,fr(Y,t.BYTES));return se("result",Q,a*2)}let fe=d8;function B(x,w,I,L=fe){let{context:D,zip215:U}=L,F=t.BYTES;x=se("signature",x,2*F),w=se("message",w),U!==void 0&&Ze("zip215",U),i&&(w=i(w));let q=Gt(x.slice(F,2*F)),H,Y,Q;try{H=m.fromHex(I,U),Y=m.fromHex(x.slice(0,F),U),Q=A.multiplyUnsafe(q)}catch{return!1}if(!U&&H.isSmallOrder())return!1;let me=z(D,Y.toRawBytes(),H.toRawBytes(),w);return Y.add(H.multiplyUnsafe(me)).subtract(Q).clearCofactor().equals(m.ZERO)}return A._setWindowSize(8),{CURVE:e,getPublicKey:ue,sign:V,verify:B,ExtendedPoint:m,utils:{getExtendedPublicKey:C,randomPrivateKey:()=>o(t.BYTES),precompute(x=8,w=m.BASE){return w._setWindowSize(x),w.multiply(BigInt(3)),w}}}}var Ro=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),r3=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),Df=BigInt(0),g8=BigInt(1),n3=BigInt(2),Uf=BigInt(3),m8=BigInt(5),y8=BigInt(8);function b8(r){let e=BigInt(10),t=BigInt(20),n=BigInt(40),i=BigInt(80),s=Ro,a=r*r%s*r%s,c=re(a,n3,s)*a%s,l=re(c,g8,s)*r%s,u=re(l,m8,s)*l%s,f=re(u,e,s)*u%s,h=re(f,t,s)*f%s,p=re(h,n,s)*h%s,y=re(p,i,s)*p%s,g=re(y,i,s)*p%s,d=re(g,e,s)*u%s;return{pow_p_5_8:re(d,n3,s)*r%s,b2:a}}function w8(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}function v8(r,e){let t=Ro,n=W(e*e*e,t),i=W(n*n*e,t),s=b8(r*i).pow_p_5_8,o=W(r*n*s,t),a=W(e*o*o,t),c=o,l=W(o*r3,t),u=a===r,f=a===W(-r,t),h=a===W(-r*r3,t);return u&&(o=c),(f||h)&&(o=l),Q0(o,t)&&(o=W(-o,t)),{isValid:u||f,value:o}}var x8=Yt(Ro,void 0,!0),E8={a:BigInt(-1),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),Fp:x8,n:BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),h:y8,Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960"),hash:Sn,randomBytes:zr,adjustScalarBytes:w8,uvRatio:v8},Yr=t3(E8);var Wr=32,It=64,k1=32;function i3(){let r=Yr.utils.randomPrivateKey(),e=Yr.getPublicKey(r);return{privateKey:c3(r,e),publicKey:e}}function s3(r){if(r.length!==k1)throw new TypeError('"seed" must be 32 bytes in length.');if(!(r instanceof Uint8Array))throw new TypeError('"seed" must be a node.js Buffer, or Uint8Array.');let e=r,t=Yr.getPublicKey(e);return{privateKey:c3(e,t),publicKey:t}}function o3(r,e){let t=r.subarray(0,k1);return Yr.sign(e instanceof Uint8Array?e:e.subarray(),t)}function a3(r,e,t){return Yr.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function c3(r,e){let t=new Uint8Array(It);for(let n=0;n<k1;n++)t[n]=r[n],t[k1+n]=e[n];return t}var ko={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function T1(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,i=r?.digest??"SHA-256",s=r?.saltLength??16,o=r?.iterations??32767,a=ee.get();t*=8;async function c(f,h){let p=a.getRandomValues(new Uint8Array(s)),y=a.getRandomValues(new Uint8Array(n)),g={name:e,iv:y};typeof h=="string"&&(h=$(h));let d;if(h.length===0){d=await a.subtle.importKey("jwk",ko,{name:"AES-GCM"},!0,["encrypt"]);try{let v={name:"PBKDF2",salt:p,iterations:o,hash:{name:i}},m=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);d=await a.subtle.deriveKey(v,m,{name:e,length:t},!0,["encrypt"])}catch{d=await a.subtle.importKey("jwk",ko,{name:"AES-GCM"},!0,["encrypt"])}}else{let v={name:"PBKDF2",salt:p,iterations:o,hash:{name:i}},m=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);d=await a.subtle.deriveKey(v,m,{name:e,length:t},!0,["encrypt"])}let b=await a.subtle.encrypt(g,d,f);return J([p,g.iv,new Uint8Array(b)])}async function l(f,h){let p=f.subarray(0,s),y=f.subarray(s,s+n),g=f.subarray(s+n),d={name:e,iv:y};typeof h=="string"&&(h=$(h));let b;if(h.length===0)try{let m={name:"PBKDF2",salt:p,iterations:o,hash:{name:i}},A=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(m,A,{name:e,length:t},!0,["decrypt"])}catch{b=await a.subtle.importKey("jwk",ko,{name:"AES-GCM"},!0,["decrypt"])}else{let m={name:"PBKDF2",salt:p,iterations:o,hash:{name:i}},A=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(m,A,{name:e,length:t},!0,["decrypt"])}let v=await a.subtle.decrypt(d,b,g);return new Uint8Array(v)}return{encrypt:c,decrypt:l}}async function Zr(r,e){let n=await T1().encrypt(r,e);return dn.encode(n)}var Qr={};oe(Qr,{KeyType:()=>X,PrivateKey:()=>Je,PublicKey:()=>Xe});var X;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.Secp256k1="Secp256k1"})(X||(X={}));var To;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.Secp256k1=2]="Secp256k1"})(To||(To={}));(function(r){r.codec=()=>kr(To)})(X||(X={}));var Xe;(function(r){let e;r.codec=()=>(e==null&&(e=at((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),X.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),i.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let i={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let o=t.uint32();switch(o>>>3){case 1:i.Type=X.codec().decode(t);break;case 2:i.Data=t.bytes();break;default:t.skipType(o&7);break}}return i})),e),r.encode=t=>ot(t,r.codec()),r.decode=t=>it(t,r.codec())})(Xe||(Xe={}));var Je;(function(r){let e;r.codec=()=>(e==null&&(e=at((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),X.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),i.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let i={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let o=t.uint32();switch(o>>>3){case 1:i.Type=X.codec().decode(t);break;case 2:i.Data=t.bytes();break;default:t.skipType(o&7);break}}return i})),e),r.encode=t=>ot(t,r.codec()),r.decode=t=>it(t,r.codec())})(Je||(Je={}));var pr=class{_key;constructor(e){this._key=Xr(e,Wr)}verify(e,t){return a3(this._key,t,e)}marshal(){return this._key}get bytes(){return Xe.encode({Type:X.Ed25519,Data:this.marshal()}).subarray()}equals(e){return Z(this.bytes,e.bytes)}hash(){let e=ne.digest(this.bytes);return Ge(e)?e.then(({bytes:t})=>t):e.bytes}},Bt=class{_key;_publicKey;constructor(e,t){this._key=Xr(e,It),this._publicKey=Xr(t,Wr)}sign(e){return o3(this._key,e)}get public(){return new pr(this._publicKey)}marshal(){return this._key}get bytes(){return Je.encode({Type:X.Ed25519,Data:this.marshal()}).subarray()}equals(e){return Z(this.bytes,e.bytes)}async hash(){let e=ne.digest(this.bytes),t;return Ge(e)?{bytes:t}=await e:t=e.bytes,t}async id(){let e=yt.digest(this.public.bytes);return de.encode(e.bytes).substring(1)}async export(e,t="libp2p-key"){if(t==="libp2p-key")return Zr(this.bytes,e);throw new E(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function I8(r){if(r.length>It){r=Xr(r,It+Wr);let n=r.subarray(0,It),i=r.subarray(It,r.length);return new Bt(n,i)}r=Xr(r,It);let e=r.subarray(0,It),t=r.subarray(Wr);return new Bt(e,t)}function B8(r){return r=Xr(r,Wr),new pr(r)}async function S8(){let{privateKey:r,publicKey:e}=i3();return new Bt(r,e)}async function _o(r){let{privateKey:e,publicKey:t}=s3(r);return new Bt(e,t)}function Xr(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new E(`Key must be a Uint8Array of length ${e}, got ${r.length}`,"ERR_INVALID_KEY_TYPE");return r}var u3={"P-256":256,"P-384":384,"P-521":521},R8=Object.keys(u3),Lo=R8.join(" / ");async function f3(r){if(r!=="P-256"&&r!=="P-384"&&r!=="P-521")throw new E(`Unknown curve: ${r}. Must be ${Lo}`,"ERR_INVALID_CURVE");let e=await ee.get().subtle.generateKey({name:"ECDH",namedCurve:r},!0,["deriveBits"]),t=async(s,o)=>{let a;o!=null?a=await ee.get().subtle.importKey("jwk",T8(r,o),{name:"ECDH",namedCurve:r},!1,["deriveBits"]):a=e.privateKey;let c=await ee.get().subtle.importKey("jwk",d3(r,s),{name:"ECDH",namedCurve:r},!1,[]),l=await ee.get().subtle.deriveBits({name:"ECDH",namedCurve:r,public:c},a,u3[r]);return new Uint8Array(l,0,l.byteLength)},n=await ee.get().subtle.exportKey("jwk",e.publicKey);return{key:k8(n),genSharedKey:t}}var h3={"P-256":32,"P-384":48,"P-521":66};function k8(r){if(r.crv==null||r.x==null||r.y==null)throw new E("JWK was missing components","ERR_INVALID_PARAMETERS");if(r.crv!=="P-256"&&r.crv!=="P-384"&&r.crv!=="P-521")throw new E(`Unknown curve: ${r.crv}. Must be ${Lo}`,"ERR_INVALID_CURVE");let e=h3[r.crv];return J([Uint8Array.from([4]),uo(r.x,e),uo(r.y,e)],1+e*2)}function d3(r,e){if(r!=="P-256"&&r!=="P-384"&&r!=="P-521")throw new E(`Unknown curve: ${r}. Must be ${Lo}`,"ERR_INVALID_CURVE");let t=h3[r];if(!Z(e.subarray(0,1),Uint8Array.from([4])))throw new E("Cannot unmarshal public key - invalid key format","ERR_INVALID_KEY_FORMAT");return{kty:"EC",crv:r,x:P(e.subarray(1,t+1),"base64url"),y:P(e.subarray(1+t),"base64url"),ext:!0}}var T8=(r,e)=>({...d3(r,e.public),d:P(e.private,"base64url")});var p3=f3;async function g3(r,e){let t=dn.decode(r);return T1().decrypt(t,e)}var m3={"AES-128":{ivSize:16,keySize:16},"AES-256":{ivSize:16,keySize:32},Blowfish:{ivSize:8,keySize:32}};async function y3(r,e,t){let n=m3[r];if(n==null){let v=Object.keys(m3).join(" / ");throw new E(`unknown cipher type '${r}'. Must be ${v}`,"ERR_INVALID_CIPHER_TYPE")}if(e==null)throw new E("missing hash type","ERR_MISSING_HASH_TYPE");let i=n.keySize,s=n.ivSize,o=20,a=$("key expansion"),c=2*(s+i+o),l=await V0(e,t),u=await l.digest(a),f=[],h=0;for(;h<c;){let v=await l.digest(J([u,a])),m=v.length;h+m>c&&(m=c-h),f.push(v),h+=m,u=await l.digest(u)}let p=c/2,y=J(f),g=y.subarray(0,p),d=y.subarray(p,c),b=v=>({iv:v.subarray(0,s),cipherKey:v.subarray(s,s+i),macKey:v.subarray(s+i)});return{k1:b(g),k2:b(d)}}var qo={};oe(qo,{MAX_RSA_KEY_SIZE:()=>yr,RsaPrivateKey:()=>Jt,RsaPublicKey:()=>mr,fromJwk:()=>t7,generateKeyPair:()=>r7,unmarshalRsaPrivateKey:()=>Ho,unmarshalRsaPublicKey:()=>e7});function ut(r){if(isNaN(r)||r<=0)throw new E("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return zr(r)}var Xt={};oe(Xt,{exportToPem:()=>Z8,importFromPem:()=>Fo,jwkToPkcs1:()=>G8,jwkToPkix:()=>Y8,pkcs1ToJwk:()=>z8,pkixToJwk:()=>j8});var _1=class extends qr{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,w1(e);let n=Kt(t);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let i=this.blockLen,s=new Uint8Array(i);s.set(n.length>i?e.create().update(n).digest():n);for(let o=0;o<s.length;o++)s[o]^=54;this.iHash.update(s),this.oHash=e.create();for(let o=0;o<s.length;o++)s[o]^=106;this.oHash.update(s),s.fill(0)}update(e){return Kr(this),this.iHash.update(e),this}digestInto(e){Kr(this),Hr(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));let{oHash:t,iHash:n,finished:i,destroyed:s,blockLen:o,outputLen:a}=this;return e=e,e.finished=i,e.destroyed=s,e.blockLen=o,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},_n=(r,e,t)=>new _1(r,e).update(t).digest();_n.create=(r,e)=>new _1(r,e);function _8(r,e,t,n){w1(r);let i=q0({dkLen:32,asyncTick:10},n),{c:s,dkLen:o,asyncTick:a}=i;if(Fr(s),Fr(o),Fr(a),s<1)throw new Error("PBKDF2: iterations (c) should be >= 1");let c=Kt(e),l=Kt(t),u=new Uint8Array(o),f=_n.create(r,c),h=f._cloneInto().update(l);return{c:s,dkLen:o,asyncTick:a,DK:u,PRF:f,PRFSalt:h}}function N8(r,e,t,n,i){return r.destroy(),e.destroy(),n&&n.destroy(),i.fill(0),t}async function Po(r,e,t,n){let{c:i,dkLen:s,asyncTick:o,DK:a,PRF:c,PRFSalt:l}=_8(r,e,t,n),u,f=new Uint8Array(4),h=$r(f),p=new Uint8Array(c.outputLen);for(let y=1,g=0;g<s;y++,g+=c.outputLen){let d=a.subarray(g,g+c.outputLen);h.setInt32(0,y,!1),(u=l._cloneInto(u)).update(f).digestInto(p),d.set(p.subarray(0,d.length)),await H0(i-1,o,()=>{c._cloneInto(u).update(p).digestInto(p);for(let b=0;b<d.length;b++)d[b]^=p[b]})}return N8(c,l,a,u,p)}var K=Jn(b3());function gr(r,e){let t=0;if(r.length===1)return r[0];for(let n=r.length-1;n>=0;n--)t+=r[r.length-1-n]*Math.pow(2,e*n);return t}function Wt(r,e,t=-1){let n=t,i=r,s=0,o=Math.pow(2,e);for(let a=1;a<8;a++){if(r<o){let c;if(n<0)c=new ArrayBuffer(a),s=a;else{if(n<a)return new ArrayBuffer(0);c=new ArrayBuffer(n),s=n}let l=new Uint8Array(c);for(let u=a-1;u>=0;u--){let f=Math.pow(2,u*e);l[s-u-1]=Math.floor(i/f),i-=l[s-u-1]*f}return c}o*=Math.pow(2,e)}return new ArrayBuffer(0)}function P1(...r){let e=0,t=0;for(let s of r)e+=s.length;let n=new ArrayBuffer(e),i=new Uint8Array(n);for(let s of r)i.set(s,t),t+=s.length;return i}function Do(){let r=new Uint8Array(this.valueHex);if(this.valueHex.byteLength>=2){let a=r[0]===255&&r[1]&128,c=r[0]===0&&(r[1]&128)===0;(a||c)&&this.warnings.push("Needlessly long format")}let e=new ArrayBuffer(this.valueHex.byteLength),t=new Uint8Array(e);for(let a=0;a<this.valueHex.byteLength;a++)t[a]=0;t[0]=r[0]&128;let n=gr(t,8),i=new ArrayBuffer(this.valueHex.byteLength),s=new Uint8Array(i);for(let a=0;a<this.valueHex.byteLength;a++)s[a]=r[a];return s[0]&=127,gr(s,8)-n}function w3(r){let e=r<0?r*-1:r,t=128;for(let n=1;n<8;n++){if(e<=t){if(r<0){let o=t-e,a=Wt(o,8,n),c=new Uint8Array(a);return c[0]|=128,a}let i=Wt(e,8,n),s=new Uint8Array(i);if(s[0]&128){let o=i.slice(0),a=new Uint8Array(o);i=new ArrayBuffer(i.byteLength+1),s=new Uint8Array(i);for(let c=0;c<o.byteLength;c++)s[c+1]=a[c];s[0]=0}return i}t*=Math.pow(2,8)}return new ArrayBuffer(0)}function v3(r,e){if(r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let i=0;i<t.length;i++)if(t[i]!==n[i])return!1;return!0}function Oe(r,e){let t=r.toString(10);if(e<t.length)return"";let n=e-t.length,i=new Array(n);for(let o=0;o<n;o++)i[o]="0";return i.join("").concat(t)}var Ih=Math.log(2);function C1(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function Uo(r){let e=0,t=0;for(let i=0;i<r.length;i++){let s=r[i];e+=s.byteLength}let n=new Uint8Array(e);for(let i=0;i<r.length;i++){let s=r[i];n.set(new Uint8Array(s),t),t+=s.byteLength}return n.buffer}function _t(r,e,t,n){return e instanceof Uint8Array?e.byteLength?t<0?(r.error="Wrong parameter: inputOffset less than zero",!1):n<0?(r.error="Wrong parameter: inputLength less than zero",!1):e.byteLength-t-n<0?(r.error="End of input reached before message was fully decoded (inconsistent offset and length values)",!1):!0:(r.error="Wrong parameter: inputBuffer has zero length",!1):(r.error="Wrong parameter: inputBuffer must be 'Uint8Array'",!1)}var Ln=class{constructor(){this.items=[]}write(e){this.items.push(e)}final(){return Uo(this.items)}},Nn=[new Uint8Array([1])],x3="0123456789";var tn="",tt=new ArrayBuffer(0),Oo=new Uint8Array(0),Pn="EndOfContent",A3="OCTET STRING",I3="BIT STRING";function Nt(r){var e;return e=class extends r{constructor(...n){var i;super(...n);let s=n[0]||{};this.isHexOnly=(i=s.isHexOnly)!==null&&i!==void 0?i:!1,this.valueHexView=s.valueHex?K.BufferSourceConverter.toUint8Array(s.valueHex):Oo}get valueHex(){return this.valueHexView.slice().buffer}set valueHex(n){this.valueHexView=new Uint8Array(n)}fromBER(n,i,s){let o=n instanceof ArrayBuffer?new Uint8Array(n):n;if(!_t(this,o,i,s))return-1;let a=i+s;return this.valueHexView=o.subarray(i,a),this.valueHexView.length?(this.blockLength=s,a):(this.warnings.push("Zero buffer length"),i)}toBER(n=!1){return this.isHexOnly?n?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.byteLength===this.valueHexView.buffer.byteLength?this.valueHexView.buffer:this.valueHexView.slice().buffer:(this.error="Flag 'isHexOnly' is not set, abort",tt)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:K.Convert.ToHex(this.valueHexView)}}},e.NAME="hexBlock",e}var Rt=class{constructor({blockLength:e=0,error:t=tn,warnings:n=[],valueBeforeDecode:i=Oo}={}){this.blockLength=e,this.error=t,this.warnings=n,this.valueBeforeDecodeView=K.BufferSourceConverter.toUint8Array(i)}static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(e){this.valueBeforeDecodeView=new Uint8Array(e)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:K.Convert.ToHex(this.valueBeforeDecodeView)}}};Rt.NAME="baseBlock";var Re=class extends Rt{fromBER(e,t,n){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}toBER(e,t){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}};Re.NAME="valueBlock";var D1=class extends Nt(Rt){constructor({idBlock:e={}}={}){var t,n,i,s;super(),e?(this.isHexOnly=(t=e.isHexOnly)!==null&&t!==void 0?t:!1,this.valueHexView=e.valueHex?K.BufferSourceConverter.toUint8Array(e.valueHex):Oo,this.tagClass=(n=e.tagClass)!==null&&n!==void 0?n:-1,this.tagNumber=(i=e.tagNumber)!==null&&i!==void 0?i:-1,this.isConstructed=(s=e.isConstructed)!==null&&s!==void 0?s:!1):(this.tagClass=-1,this.tagNumber=-1,this.isConstructed=!1)}toBER(e=!1){let t=0;switch(this.tagClass){case 1:t|=0;break;case 2:t|=64;break;case 3:t|=128;break;case 4:t|=192;break;default:return this.error="Unknown tag class",tt}if(this.isConstructed&&(t|=32),this.tagNumber<31&&!this.isHexOnly){let i=new Uint8Array(1);if(!e){let s=this.tagNumber;s&=31,t|=s,i[0]=t}return i.buffer}if(!this.isHexOnly){let i=Wt(this.tagNumber,7),s=new Uint8Array(i),o=i.byteLength,a=new Uint8Array(o+1);if(a[0]=t|31,!e){for(let c=0;c<o-1;c++)a[c+1]=s[c]|128;a[o]=s[o-1]}return a.buffer}let n=new Uint8Array(this.valueHexView.byteLength+1);if(n[0]=t|31,!e){let i=this.valueHexView;for(let s=0;s<i.length-1;s++)n[s+1]=i[s]|128;n[this.valueHexView.byteLength]=i[i.length-1]}return n.buffer}fromBER(e,t,n){let i=K.BufferSourceConverter.toUint8Array(e);if(!_t(this,i,t,n))return-1;let s=i.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;switch(s[0]&192){case 0:this.tagClass=1;break;case 64:this.tagClass=2;break;case 128:this.tagClass=3;break;case 192:this.tagClass=4;break;default:return this.error="Unknown tag class",-1}this.isConstructed=(s[0]&32)===32,this.isHexOnly=!1;let a=s[0]&31;if(a!==31)this.tagNumber=a,this.blockLength=1;else{let c=1,l=this.valueHexView=new Uint8Array(255),u=255;for(;s[c]&128;){if(l[c-1]=s[c]&127,c++,c>=s.length)return this.error="End of input reached before message was fully decoded",-1;if(c===u){u+=255;let h=new Uint8Array(u);for(let p=0;p<l.length;p++)h[p]=l[p];l=this.valueHexView=new Uint8Array(u)}}this.blockLength=c+1,l[c-1]=s[c]&127;let f=new Uint8Array(c);for(let h=0;h<c;h++)f[h]=l[h];l=this.valueHexView=new Uint8Array(c),l.set(f),this.blockLength<=9?this.tagNumber=gr(l,7):(this.isHexOnly=!0,this.warnings.push("Tag too long, represented as hex-coded"))}if(this.tagClass===1&&this.isConstructed)switch(this.tagNumber){case 1:case 2:case 5:case 6:case 9:case 13:case 14:case 23:case 24:case 31:case 32:case 33:case 34:return this.error="Constructed encoding used for primitive type",-1}return t+this.blockLength}toJSON(){return{...super.toJSON(),tagClass:this.tagClass,tagNumber:this.tagNumber,isConstructed:this.isConstructed}}};D1.NAME="identificationBlock";var U1=class extends Rt{constructor({lenBlock:e={}}={}){var t,n,i;super(),this.isIndefiniteForm=(t=e.isIndefiniteForm)!==null&&t!==void 0?t:!1,this.longFormUsed=(n=e.longFormUsed)!==null&&n!==void 0?n:!1,this.length=(i=e.length)!==null&&i!==void 0?i:0}fromBER(e,t,n){let i=K.BufferSourceConverter.toUint8Array(e);if(!_t(this,i,t,n))return-1;let s=i.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;if(s[0]===255)return this.error="Length block 0xFF is reserved by standard",-1;if(this.isIndefiniteForm=s[0]===128,this.isIndefiniteForm)return this.blockLength=1,t+this.blockLength;if(this.longFormUsed=!!(s[0]&128),this.longFormUsed===!1)return this.length=s[0],this.blockLength=1,t+this.blockLength;let o=s[0]&127;if(o>8)return this.error="Too big integer",-1;if(o+1>s.length)return this.error="End of input reached before message was fully decoded",-1;let a=t+1,c=i.subarray(a,a+o);return c[o-1]===0&&this.warnings.push("Needlessly long encoded length"),this.length=gr(c,8),this.longFormUsed&&this.length<=127&&this.warnings.push("Unnecessary usage of long length form"),this.blockLength=o+1,t+this.blockLength}toBER(e=!1){let t,n;if(this.length>127&&(this.longFormUsed=!0),this.isIndefiniteForm)return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=128),t;if(this.longFormUsed){let i=Wt(this.length,8);if(i.byteLength>127)return this.error="Too big length",tt;if(t=new ArrayBuffer(i.byteLength+1),e)return t;let s=new Uint8Array(i);n=new Uint8Array(t),n[0]=i.byteLength|128;for(let o=0;o<i.byteLength;o++)n[o+1]=s[o];return t}return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=this.length),t}toJSON(){return{...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,longFormUsed:this.longFormUsed,length:this.length}}};U1.NAME="lengthBlock";var S={},Ae=class extends Rt{constructor({name:e=tn,optional:t=!1,primitiveSchema:n,...i}={},s){super(i),this.name=e,this.optional=t,n&&(this.primitiveSchema=n),this.idBlock=new D1(i),this.lenBlock=new U1(i),this.valueBlock=s?new s(i):new Re(i)}fromBER(e,t,n){let i=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return i===-1?(this.error=this.valueBlock.error,i):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),i)}toBER(e,t){let n=t||new Ln;t||B3(this);let i=this.idBlock.toBER(e);if(n.write(i),this.lenBlock.isIndefiniteForm)n.write(new Uint8Array([128]).buffer),this.valueBlock.toBER(e,n),n.write(new ArrayBuffer(2));else{let s=this.valueBlock.toBER(e);this.lenBlock.length=s.byteLength;let o=this.lenBlock.toBER(e);n.write(o),n.write(s)}return t?tt:n.final()}toJSON(){let e={...super.toJSON(),idBlock:this.idBlock.toJSON(),lenBlock:this.lenBlock.toJSON(),valueBlock:this.valueBlock.toJSON(),name:this.name,optional:this.optional};return this.primitiveSchema&&(e.primitiveSchema=this.primitiveSchema.toJSON()),e}toString(e="ascii"){return e==="ascii"?this.onAsciiEncoding():K.Convert.ToHex(this.toBER())}onAsciiEncoding(){return`${this.constructor.NAME} : ${K.Convert.ToHex(this.valueBlock.valueBeforeDecodeView)}`}isEqual(e){if(this===e)return!0;if(!(e instanceof this.constructor))return!1;let t=this.toBER(),n=e.toBER();return v3(t,n)}};Ae.NAME="BaseBlock";function B3(r){if(r instanceof S.Constructed)for(let e of r.valueBlock.value)B3(e)&&(r.lenBlock.isIndefiniteForm=!0);return!!r.lenBlock.isIndefiniteForm}var O1=class extends Ae{constructor({value:e=tn,...t}={},n){super(t,n),e&&this.fromString(e)}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}fromBER(e,t,n){let i=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return i===-1?(this.error=this.valueBlock.error,i):(this.fromBuffer(this.valueBlock.valueHexView),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),i)}onAsciiEncoding(){return`${this.constructor.NAME} : '${this.valueBlock.value}'`}};O1.NAME="BaseStringBlock";var M1=class extends Nt(Re){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}};M1.NAME="PrimitiveValueBlock";var S3,V1=class extends Ae{constructor(e={}){super(e,M1),this.idBlock.isConstructed=!1}};S3=V1;S.Primitive=S3;V1.NAME="PRIMITIVE";function F8(r,e){if(r instanceof e)return r;let t=new e;return t.idBlock=r.idBlock,t.lenBlock=r.lenBlock,t.warnings=r.warnings,t.valueBeforeDecodeView=r.valueBeforeDecodeView,t}function bi(r,e=0,t=r.length){let n=e,i=new Ae({},Re),s=new Rt;if(!_t(s,r,e,t))return i.error=s.error,{offset:-1,result:i};if(!r.subarray(e,e+t).length)return i.error="Zero buffer length",{offset:-1,result:i};let a=i.idBlock.fromBER(r,e,t);if(i.idBlock.warnings.length&&i.warnings.concat(i.idBlock.warnings),a===-1)return i.error=i.idBlock.error,{offset:-1,result:i};if(e=a,t-=i.idBlock.blockLength,a=i.lenBlock.fromBER(r,e,t),i.lenBlock.warnings.length&&i.warnings.concat(i.lenBlock.warnings),a===-1)return i.error=i.lenBlock.error,{offset:-1,result:i};if(e=a,t-=i.lenBlock.blockLength,!i.idBlock.isConstructed&&i.lenBlock.isIndefiniteForm)return i.error="Indefinite length form used for primitive encoding form",{offset:-1,result:i};let c=Ae;switch(i.idBlock.tagClass){case 1:if(i.idBlock.tagNumber>=37&&i.idBlock.isHexOnly===!1)return i.error="UNIVERSAL 37 and upper tags are reserved by ASN.1 standard",{offset:-1,result:i};switch(i.idBlock.tagNumber){case 0:if(i.idBlock.isConstructed&&i.lenBlock.length>0)return i.error="Type [UNIVERSAL 0] is reserved",{offset:-1,result:i};c=S.EndOfContent;break;case 1:c=S.Boolean;break;case 2:c=S.Integer;break;case 3:c=S.BitString;break;case 4:c=S.OctetString;break;case 5:c=S.Null;break;case 6:c=S.ObjectIdentifier;break;case 10:c=S.Enumerated;break;case 12:c=S.Utf8String;break;case 13:c=S.RelativeObjectIdentifier;break;case 14:c=S.TIME;break;case 15:return i.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:i};case 16:c=S.Sequence;break;case 17:c=S.Set;break;case 18:c=S.NumericString;break;case 19:c=S.PrintableString;break;case 20:c=S.TeletexString;break;case 21:c=S.VideotexString;break;case 22:c=S.IA5String;break;case 23:c=S.UTCTime;break;case 24:c=S.GeneralizedTime;break;case 25:c=S.GraphicString;break;case 26:c=S.VisibleString;break;case 27:c=S.GeneralString;break;case 28:c=S.UniversalString;break;case 29:c=S.CharacterString;break;case 30:c=S.BmpString;break;case 31:c=S.DATE;break;case 32:c=S.TimeOfDay;break;case 33:c=S.DateTime;break;case 34:c=S.Duration;break;default:{let l=i.idBlock.isConstructed?new S.Constructed:new S.Primitive;l.idBlock=i.idBlock,l.lenBlock=i.lenBlock,l.warnings=i.warnings,i=l}}break;case 2:case 3:case 4:default:c=i.idBlock.isConstructed?S.Constructed:S.Primitive}return i=F8(i,c),a=i.fromBER(r,e,i.lenBlock.isIndefiniteForm?t:i.lenBlock.length),i.valueBeforeDecodeView=r.subarray(n,n+i.blockLength),{offset:a,result:i}}function rn(r){if(!r.byteLength){let e=new Ae({},Re);return e.error="Input buffer has zero length",{offset:-1,result:e}}return bi(K.BufferSourceConverter.toUint8Array(r).slice(),0,r.byteLength)}function H8(r,e){return r?1:e}var ft=class extends Re{constructor({value:e=[],isIndefiniteForm:t=!1,...n}={}){super(n),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,n){let i=K.BufferSourceConverter.toUint8Array(e);if(!_t(this,i,t,n))return-1;if(this.valueBeforeDecodeView=i.subarray(t,t+n),this.valueBeforeDecodeView.length===0)return this.warnings.push("Zero buffer length"),t;let s=t;for(;H8(this.isIndefiniteForm,n)>0;){let o=bi(i,s,n);if(o.offset===-1)return this.error=o.result.error,this.warnings.concat(o.result.warnings),-1;if(s=o.offset,this.blockLength+=o.result.blockLength,n-=o.result.blockLength,this.value.push(o.result),this.isIndefiniteForm&&o.result.constructor.NAME===Pn)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===Pn?this.value.pop():this.warnings.push("No EndOfContent block encoded")),s}toBER(e,t){let n=t||new Ln;for(let i=0;i<this.value.length;i++)this.value[i].toBER(e,n);return t?tt:n.final()}toJSON(){let e={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(let t of this.value)e.value.push(t.toJSON());return e}};ft.NAME="ConstructedValueBlock";var R3,Zt=class extends Ae{constructor(e={}){super(e,ft),this.idBlock.isConstructed=!0}fromBER(e,t,n){this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm;let i=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return i===-1?(this.error=this.valueBlock.error,i):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),i)}onAsciiEncoding(){let e=[];for(let n of this.valueBlock.value)e.push(n.toString("ascii").split(`
|
3
|
+
`).map(i=>` ${i}`).join(`
|
4
4
|
`));let t=this.idBlock.tagClass===3?`[${this.idBlock.tagNumber}]`:this.constructor.NAME;return e.length?`${t} :
|
5
5
|
${e.join(`
|
6
|
-
`)}`:`${t} :`}};B3=Gt;k.Constructed=B3;Gt.NAME="CONSTRUCTED";var V1=class extends Se{fromBER(e,t,n){return t}toBER(e){return tt}};V1.override="EndOfContentValueBlock";var S3,M1=class extends Ee{constructor(e={}){super(e,V1),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}};S3=M1;k.EndOfContent=S3;M1.NAME=Tn;var R3,jt=class extends Ee{constructor(e={}){super(e,Se),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(e,t,n){return this.lenBlock.length>0&&this.warnings.push("Non-zero length of value block for Null type"),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=n,t+n>e.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):t+n}toBER(e,t){let n=new ArrayBuffer(2);if(!e){let s=new Uint8Array(n);s[0]=5,s[1]=0}return t&&t.write(n),n}onAsciiEncoding(){return`${this.constructor.NAME}`}};R3=jt;k.Null=R3;jt.NAME="NULL";var F1=class extends _t(Se){constructor({value:e,...t}={}){super(t),t.valueHex?this.valueHexView=M.BufferSourceConverter.toUint8Array(t.valueHex):this.valueHexView=new Uint8Array(1),e&&(this.value=e)}get value(){for(let e of this.valueHexView)if(e>0)return!0;return!1}set value(e){this.valueHexView[0]=e?255:0}fromBER(e,t,n){let s=M.BufferSourceConverter.toUint8Array(e);return Tt(this,s,t,n)?(this.valueHexView=s.subarray(t,t+n),n>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,Lo.call(this),this.blockLength=n,t+n):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}};F1.NAME="BooleanValueBlock";var k3,H1=class extends Ee{constructor(e={}){super(e,F1),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}};k3=H1;k.Boolean=k3;H1.NAME="BOOLEAN";var K1=class extends _t(ft){constructor({isConstructed:e=!1,...t}={}){super(t),this.isConstructed=e}fromBER(e,t,n){let s=0;if(this.isConstructed){if(this.isHexOnly=!1,s=ft.prototype.fromBER.call(this,e,t,n),s===-1)return s;for(let i=0;i<this.value.length;i++){let o=this.value[i].constructor.NAME;if(o===Tn){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(o!==x3)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,s=super.fromBER(e,t,n),this.blockLength=n;return s}toBER(e,t){return this.isConstructed?ft.prototype.toBER.call(this,e,t):e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}};K1.NAME="OctetStringValueBlock";var T3,Rt=class r extends Ee{constructor({idBlock:e={},lenBlock:t={},...n}={}){var s,i;(s=n.isConstructed)!==null&&s!==void 0||(n.isConstructed=!!(!((i=n.value)===null||i===void 0)&&i.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},K1),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(e,t,n){if(this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,n===0)return this.idBlock.error.length===0&&(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length===0&&(this.blockLength+=this.lenBlock.blockLength),t;if(!this.valueBlock.isConstructed){let i=(e instanceof ArrayBuffer?new Uint8Array(e):e).subarray(t,t+n);try{if(i.byteLength){let o=ms(i,0,i.byteLength);o.offset!==-1&&o.offset===n&&(this.valueBlock.value=[o.result])}}catch{}}return super.fromBER(e,t,n)}onAsciiEncoding(){return this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length?Gt.prototype.onAsciiEncoding.call(this):`${this.constructor.NAME} : ${M.Convert.ToHex(this.valueBlock.valueHexView)}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;let e=[];for(let t of this.valueBlock.value)t instanceof r&&e.push(t.valueBlock.valueHexView);return M.BufferSourceConverter.concat(e)}};T3=Rt;k.OctetString=T3;Rt.NAME=x3;var q1=class extends _t(ft){constructor({unusedBits:e=0,isConstructed:t=!1,...n}={}){super(n),this.unusedBits=e,this.isConstructed=t,this.blockLength=this.valueHexView.byteLength}fromBER(e,t,n){if(!n)return t;let s=-1;if(this.isConstructed){if(s=ft.prototype.fromBER.call(this,e,t,n),s===-1)return s;for(let a of this.value){let c=a.constructor.NAME;if(c===Tn){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(c!==E3)return this.error="BIT STRING may consists of BIT STRINGs only",-1;let l=a.valueBlock;if(this.unusedBits>0&&l.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=l.unusedBits}return s}let i=M.BufferSourceConverter.toUint8Array(e);if(!Tt(this,i,t,n))return-1;let o=i.subarray(t,t+n);if(this.unusedBits=o[0],this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1;if(!this.unusedBits){let a=o.subarray(1);try{if(a.byteLength){let c=ms(a,0,a.byteLength);c.offset!==-1&&c.offset===n-1&&(this.value=[c.result])}}catch{}}return this.valueHexView=o.subarray(1),this.blockLength=o.length,t+n}toBER(e,t){if(this.isConstructed)return ft.prototype.toBER.call(this,e,t);if(e)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength)return tt;let n=new Uint8Array(this.valueHexView.length+1);return n[0]=this.unusedBits,n.set(this.valueHexView,1),n.buffer}toJSON(){return{...super.toJSON(),unusedBits:this.unusedBits,isConstructed:this.isConstructed}}};q1.NAME="BitStringValueBlock";var _3,Qr=class extends Ee{constructor({idBlock:e={},lenBlock:t={},...n}={}){var s,i;(s=n.isConstructed)!==null&&s!==void 0||(n.isConstructed=!!(!((i=n.value)===null||i===void 0)&&i.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},q1),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(e,t,n){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(e,t,n)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return Gt.prototype.onAsciiEncoding.call(this);{let e=[],t=this.valueBlock.valueHexView;for(let s of t)e.push(s.toString(2).padStart(8,"0"));let n=e.join("");return`${this.constructor.NAME} : ${n.substring(0,n.length-this.valueBlock.unusedBits)}`}}};_3=Qr;k.BitString=_3;Qr.NAME=E3;var N3;function F8(r,e){let t=new Uint8Array([0]),n=new Uint8Array(r),s=new Uint8Array(e),i=n.slice(0),o=i.length-1,a=s.slice(0),c=a.length-1,l=0,f=c<o?o:c,u=0;for(let h=f;h>=0;h--,u++){switch(!0){case u<a.length:l=i[o-u]+a[c-u]+t[0];break;default:l=i[o-u]+t[0]}switch(t[0]=l/10,!0){case u>=i.length:i=N1(new Uint8Array([l%10]),i);break;default:i[o-u]=l%10}}return t[0]>0&&(i=N1(t,i)),i}function v3(r){if(r>=Rn.length)for(let e=Rn.length;e<=r;e++){let t=new Uint8Array([0]),n=Rn[e-1].slice(0);for(let s=n.length-1;s>=0;s--){let i=new Uint8Array([(n[s]<<1)+t[0]]);t[0]=i[0]/10,n[s]=i[0]%10}t[0]>0&&(n=N1(t,n)),Rn.push(n)}return Rn[r]}function H8(r,e){let t=0,n=new Uint8Array(r),s=new Uint8Array(e),i=n.slice(0),o=i.length-1,a=s.slice(0),c=a.length-1,l,f=0;for(let u=c;u>=0;u--,f++)switch(l=i[o-f]-a[c-f]-t,!0){case l<0:t=1,i[o-f]=l+10;break;default:t=0,i[o-f]=l}if(t>0)for(let u=o-c+1;u>=0;u--,f++)if(l=i[o-f]-t,l<0)t=1,i[o-f]=l+10;else{t=0,i[o-f]=l;break}return i.slice()}var _n=class extends _t(Se){constructor({value:e,...t}={}){super(t),this._valueDec=0,t.valueHex&&this.setValueHex(),e!==void 0&&(this.valueDec=e)}setValueHex(){this.valueHexView.length>=4?(this.warnings.push("Too big Integer for decoding, hex only"),this.isHexOnly=!0,this._valueDec=0):(this.isHexOnly=!1,this.valueHexView.length>0&&(this._valueDec=Lo.call(this)))}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this.valueHexView=new Uint8Array(y3(e))}get valueDec(){return this._valueDec}fromDER(e,t,n,s=0){let i=this.fromBER(e,t,n);if(i===-1)return i;let o=this.valueHexView;return o[0]===0&&o[1]&128?this.valueHexView=o.subarray(1):s!==0&&o.length<s&&(s-o.length>1&&(s=o.length+1),this.valueHexView=o.subarray(s-o.length)),i}toDER(e=!1){let t=this.valueHexView;switch(!0){case(t[0]&128)!==0:{let n=new Uint8Array(this.valueHexView.length+1);n[0]=0,n.set(t,1),this.valueHexView=n}break;case(t[0]===0&&(t[1]&128)===0):this.valueHexView=this.valueHexView.subarray(1);break}return this.toBER(e)}fromBER(e,t,n){let s=super.fromBER(e,t,n);return s===-1||this.setValueHex(),s}toBER(e){return e?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){let e=this.valueHexView.length*8-1,t=new Uint8Array(this.valueHexView.length*8/3),n=0,s,i=this.valueHexView,o="",a=!1;for(let c=i.byteLength-1;c>=0;c--){s=i[c];for(let l=0;l<8;l++){if((s&1)===1)switch(n){case e:t=H8(v3(n),t),o="-";break;default:t=F8(t,v3(n))}n++,s>>=1}}for(let c=0;c<t.length;c++)t[c]&&(a=!0),a&&(o+=w3.charAt(t[c]));return a===!1&&(o+=w3.charAt(0)),o}};N3=_n;_n.NAME="IntegerValueBlock";Object.defineProperty(N3.prototype,"valueHex",{set:function(r){this.valueHexView=new Uint8Array(r),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});var L3,ue=class r extends Ee{constructor(e={}){super(e,_n),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return L1(),BigInt(this.valueBlock.toString())}static fromBigInt(e){L1();let t=BigInt(e),n=new kn,s=t.toString(16).replace(/^-/,""),i=new Uint8Array(M.Convert.FromHex(s));if(t<0){let a=new Uint8Array(i.length+(i[0]&128?1:0));a[0]|=128;let l=BigInt(`0x${M.Convert.ToHex(a)}`)+t,f=M.BufferSourceConverter.toUint8Array(M.Convert.FromHex(l.toString(16)));f[0]|=128,n.write(f)}else i[0]&128&&n.write(new Uint8Array([0])),n.write(i);return new r({valueHex:n.final()})}convertToDER(){let e=new r({valueHex:this.valueBlock.valueHexView});return e.valueBlock.toDER(),e}convertFromDER(){return new r({valueHex:this.valueBlock.valueHexView[0]===0?this.valueBlock.valueHexView.subarray(1):this.valueBlock.valueHexView})}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()}`}};L3=ue;k.Integer=L3;ue.NAME="INTEGER";var P3,$1=class extends ue{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}};P3=$1;k.Enumerated=P3;$1.NAME="ENUMERATED";var Nn=class extends _t(Se){constructor({valueDec:e=-1,isFirstSid:t=!1,...n}={}){super(n),this.valueDec=e,this.isFirstSid=t}fromBER(e,t,n){if(!n)return t;let s=M.BufferSourceConverter.toUint8Array(e);if(!Tt(this,s,t,n))return-1;let i=s.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=i[a]&127,this.blockLength++,!!(i[a]&128));a++);let o=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)o[a]=this.valueHexView[a];return this.valueHexView=o,i[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=fr(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}set valueBigInt(e){L1();let t=BigInt(e).toString(2);for(;t.length%7;)t="0"+t;let n=new Uint8Array(t.length/7);for(let s=0;s<n.length;s++)n[s]=parseInt(t.slice(s*7,s*7+7),2)+(s+1<n.length?128:0);this.fromBER(n.buffer,0,n.length)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let s=this.valueHexView,i=new Uint8Array(this.blockLength);for(let o=0;o<this.blockLength-1;o++)i[o]=s[o]|128;return i[this.blockLength-1]=s[this.blockLength-1],i.buffer}let t=zt(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",tt;let n=new Uint8Array(t.byteLength);if(!e){let s=new Uint8Array(t),i=t.byteLength-1;for(let o=0;o<i;o++)n[o]=s[o]|128;n[i]=s[i]}return n}toString(){let e="";if(this.isHexOnly)e=M.Convert.ToHex(this.valueHexView);else if(this.isFirstSid){let t=this.valueDec;this.valueDec<=39?e="0.":this.valueDec<=79?(e="1.",t-=40):(e="2.",t-=80),e+=t.toString()}else e=this.valueDec.toString();return e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}};Nn.NAME="sidBlock";var z1=class extends Se{constructor({value:e=Xr,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let s=t;for(;n>0;){let i=new Nn;if(s=i.fromBER(e,s,n),s===-1)return this.blockLength=0,this.error=i.error,s;this.value.length===0&&(i.isFirstSid=!0),this.blockLength+=i.blockLength,n-=i.blockLength,this.value.push(i)}return s}toBER(e){let t=[];for(let n=0;n<this.value.length;n++){let s=this.value[n].toBER(e);if(s.byteLength===0)return this.error=this.value[n].error,tt;t.push(s)}return Po(t)}fromString(e){this.value=[];let t=0,n=0,s="",i=!1;do if(n=e.indexOf(".",t),n===-1?s=e.substring(t):s=e.substring(t,n),t=n+1,i){let o=this.value[0],a=0;switch(o.valueDec){case 0:break;case 1:a=40;break;case 2:a=80;break;default:this.value=[];return}let c=parseInt(s,10);if(isNaN(c))return;o.valueDec=c+a,i=!1}else{let o=new Nn;if(s>Number.MAX_SAFE_INTEGER){L1();let a=BigInt(s);o.valueBigInt=a}else if(o.valueDec=parseInt(s,10),isNaN(o.valueDec))return;this.value.length||(o.isFirstSid=!0,i=!0),this.value.push(o)}while(n!==-1)}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let s=this.value[n].toString();n!==0&&(e=`${e}.`),t?(s=`{${s}}`,this.value[n].isFirstSid?e=`2.{${s} - 80}`:e+=s):e+=s}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};z1.NAME="ObjectIdentifierValueBlock";var C3,et=class extends Ee{constructor(e={}){super(e,z1),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};C3=et;k.ObjectIdentifier=C3;et.NAME="OBJECT IDENTIFIER";var Ln=class extends _t(St){constructor({valueDec:e=0,...t}={}){super(t),this.valueDec=e}fromBER(e,t,n){if(n===0)return t;let s=M.BufferSourceConverter.toUint8Array(e);if(!Tt(this,s,t,n))return-1;let i=s.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=i[a]&127,this.blockLength++,!!(i[a]&128));a++);let o=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)o[a]=this.valueHexView[a];return this.valueHexView=o,i[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=fr(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let s=this.valueHexView,i=new Uint8Array(this.blockLength);for(let o=0;o<this.blockLength-1;o++)i[o]=s[o]|128;return i[this.blockLength-1]=s[this.blockLength-1],i.buffer}let t=zt(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",tt;let n=new Uint8Array(t.byteLength);if(!e){let s=new Uint8Array(t),i=t.byteLength-1;for(let o=0;o<i;o++)n[o]=s[o]|128;n[i]=s[i]}return n.buffer}toString(){let e="";return this.isHexOnly?e=M.Convert.ToHex(this.valueHexView):e=this.valueDec.toString(),e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}};Ln.NAME="relativeSidBlock";var G1=class extends Se{constructor({value:e=Xr,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let s=t;for(;n>0;){let i=new Ln;if(s=i.fromBER(e,s,n),s===-1)return this.blockLength=0,this.error=i.error,s;this.blockLength+=i.blockLength,n-=i.blockLength,this.value.push(i)}return s}toBER(e,t){let n=[];for(let s=0;s<this.value.length;s++){let i=this.value[s].toBER(e);if(i.byteLength===0)return this.error=this.value[s].error,tt;n.push(i)}return Po(n)}fromString(e){this.value=[];let t=0,n=0,s="";do{n=e.indexOf(".",t),n===-1?s=e.substring(t):s=e.substring(t,n),t=n+1;let i=new Ln;if(i.valueDec=parseInt(s,10),isNaN(i.valueDec))return!0;this.value.push(i)}while(n!==-1);return!0}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let s=this.value[n].toString();n!==0&&(e=`${e}.`),t&&(s=`{${s}}`),e+=s}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};G1.NAME="RelativeObjectIdentifierValueBlock";var D3,j1=class extends Ee{constructor(e={}){super(e,G1),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};D3=j1;k.RelativeObjectIdentifier=D3;j1.NAME="RelativeObjectIdentifier";var U3,we=class extends Gt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}};U3=we;k.Sequence=U3;we.NAME="SEQUENCE";var O3,Y1=class extends Gt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}};O3=Y1;k.Set=O3;Y1.NAME="SET";var W1=class extends _t(Se){constructor({...e}={}){super(e),this.isHexOnly=!0,this.value=Xr}toJSON(){return{...super.toJSON(),value:this.value}}};W1.NAME="StringValueBlock";var Z1=class extends W1{};Z1.NAME="SimpleStringValueBlock";var ke=class extends D1{constructor({...e}={}){super(e,Z1)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,M.BufferSourceConverter.toUint8Array(e))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t);for(let s=0;s<t;s++)n[s]=e.charCodeAt(s);this.valueBlock.value=e}};ke.NAME="SIMPLE STRING";var Q1=class extends ke{fromBuffer(e){this.valueBlock.valueHexView=M.BufferSourceConverter.toUint8Array(e);try{this.valueBlock.value=M.Convert.ToUtf8String(e)}catch(t){this.warnings.push(`Error during "decodeURIComponent": ${t}, using raw string`),this.valueBlock.value=M.Convert.ToBinary(e)}}fromString(e){this.valueBlock.valueHexView=new Uint8Array(M.Convert.FromUtf8String(e)),this.valueBlock.value=e}};Q1.NAME="Utf8StringValueBlock";var V3,kt=class extends Q1{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}};V3=kt;k.Utf8String=V3;kt.NAME="UTF8String";var X1=class extends ke{fromBuffer(e){this.valueBlock.value=M.Convert.ToUtf16String(e),this.valueBlock.valueHexView=M.BufferSourceConverter.toUint8Array(e)}fromString(e){this.valueBlock.value=e,this.valueBlock.valueHexView=new Uint8Array(M.Convert.FromUtf16String(e))}};X1.NAME="BmpStringValueBlock";var M3,J1=class extends X1{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}};M3=J1;k.BmpString=M3;J1.NAME="BMPString";var es=class extends ke{fromBuffer(e){let t=ArrayBuffer.isView(e)?e.slice().buffer:e.slice(0),n=new Uint8Array(t);for(let s=0;s<n.length;s+=4)n[s]=n[s+3],n[s+1]=n[s+2],n[s+2]=0,n[s+3]=0;this.valueBlock.value=String.fromCharCode.apply(null,new Uint32Array(t))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t*4);for(let s=0;s<t;s++){let i=zt(e.charCodeAt(s),8),o=new Uint8Array(i);if(o.length>4)continue;let a=4-o.length;for(let c=o.length-1;c>=0;c--)n[s*4+c+a]=o[c]}this.valueBlock.value=e}};es.NAME="UniversalStringValueBlock";var F3,ts=class extends es{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}};F3=ts;k.UniversalString=F3;ts.NAME="UniversalString";var H3,rs=class extends ke{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}};H3=rs;k.NumericString=H3;rs.NAME="NumericString";var K3,ns=class extends ke{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}};K3=ns;k.PrintableString=K3;ns.NAME="PrintableString";var q3,ss=class extends ke{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}};q3=ss;k.TeletexString=q3;ss.NAME="TeletexString";var $3,is=class extends ke{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}};$3=is;k.VideotexString=$3;is.NAME="VideotexString";var z3,os=class extends ke{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}};z3=os;k.IA5String=z3;os.NAME="IA5String";var G3,as=class extends ke{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}};G3=as;k.GraphicString=G3;as.NAME="GraphicString";var j3,Pn=class extends ke{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}};j3=Pn;k.VisibleString=j3;Pn.NAME="VisibleString";var Y3,cs=class extends ke{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}};Y3=cs;k.GeneralString=Y3;cs.NAME="GeneralString";var W3,ls=class extends ke{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}};W3=ls;k.CharacterString=W3;ls.NAME="CharacterString";var Z3,Cn=class extends Pn{constructor({value:e,valueDate:t,...n}={}){if(super(n),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,e){this.fromString(e),this.valueBlock.valueHexView=new Uint8Array(e.length);for(let s=0;s<e.length;s++)this.valueBlock.valueHexView[s]=e.charCodeAt(s)}t&&(this.fromDate(t),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(e){this.fromString(String.fromCharCode.apply(null,M.BufferSourceConverter.toUint8Array(e)))}toBuffer(){let e=this.toString(),t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let s=0;s<e.length;s++)n[s]=e.charCodeAt(s);return t}fromDate(e){this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(e){let n=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/ig.exec(e);if(n===null){this.error="Wrong input string for conversion";return}let s=parseInt(n[1],10);s>=50?this.year=1900+s:this.year=2e3+s,this.month=parseInt(n[2],10),this.day=parseInt(n[3],10),this.hour=parseInt(n[4],10),this.minute=parseInt(n[5],10),this.second=parseInt(n[6],10)}toString(e="iso"){if(e==="iso"){let t=new Array(7);return t[0]=De(this.year<2e3?this.year-1900:this.year-2e3,2),t[1]=De(this.month,2),t[2]=De(this.day,2),t[3]=De(this.hour,2),t[4]=De(this.minute,2),t[5]=De(this.second,2),t[6]="Z",t.join("")}return super.toString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.toDate().toISOString()}`}toJSON(){return{...super.toJSON(),year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second}}};Z3=Cn;k.UTCTime=Z3;Cn.NAME="UTCTime";var Q3,us=class extends Cn{constructor(e={}){var t;super(e),(t=this.millisecond)!==null&&t!==void 0||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(e){super.fromDate(e),this.millisecond=e.getUTCMilliseconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond))}fromString(e){let t=!1,n="",s="",i=0,o,a=0,c=0;if(e[e.length-1]==="Z")n=e.substring(0,e.length-1),t=!0;else{let u=new Number(e[e.length-1]);if(isNaN(u.valueOf()))throw new Error("Wrong input string for conversion");n=e}if(t){if(n.indexOf("+")!==-1)throw new Error("Wrong input string for conversion");if(n.indexOf("-")!==-1)throw new Error("Wrong input string for conversion")}else{let u=1,h=n.indexOf("+"),m="";if(h===-1&&(h=n.indexOf("-"),u=-1),h!==-1){if(m=n.substring(h+1),n=n.substring(0,h),m.length!==2&&m.length!==4)throw new Error("Wrong input string for conversion");let g=parseInt(m.substring(0,2),10);if(isNaN(g.valueOf()))throw new Error("Wrong input string for conversion");if(a=u*g,m.length===4){if(g=parseInt(m.substring(2,4),10),isNaN(g.valueOf()))throw new Error("Wrong input string for conversion");c=u*g}}}let l=n.indexOf(".");if(l===-1&&(l=n.indexOf(",")),l!==-1){let u=new Number(`0${n.substring(l)}`);if(isNaN(u.valueOf()))throw new Error("Wrong input string for conversion");i=u.valueOf(),s=n.substring(0,l)}else s=n;switch(!0){case s.length===8:if(o=/(\d{4})(\d{2})(\d{2})/ig,l!==-1)throw new Error("Wrong input string for conversion");break;case s.length===10:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=60*i;this.minute=Math.floor(u),u=60*(u-this.minute),this.second=Math.floor(u),u=1e3*(u-this.second),this.millisecond=Math.floor(u)}break;case s.length===12:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=60*i;this.second=Math.floor(u),u=1e3*(u-this.second),this.millisecond=Math.floor(u)}break;case s.length===14:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=1e3*i;this.millisecond=Math.floor(u)}break;default:throw new Error("Wrong input string for conversion")}let f=o.exec(s);if(f===null)throw new Error("Wrong input string for conversion");for(let u=1;u<f.length;u++)switch(u){case 1:this.year=parseInt(f[u],10);break;case 2:this.month=parseInt(f[u],10);break;case 3:this.day=parseInt(f[u],10);break;case 4:this.hour=parseInt(f[u],10)+a;break;case 5:this.minute=parseInt(f[u],10)+c;break;case 6:this.second=parseInt(f[u],10);break;default:throw new Error("Wrong input string for conversion")}if(t===!1){let u=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=u.getUTCFullYear(),this.month=u.getUTCMonth(),this.day=u.getUTCDay(),this.hour=u.getUTCHours(),this.minute=u.getUTCMinutes(),this.second=u.getUTCSeconds(),this.millisecond=u.getUTCMilliseconds()}}toString(e="iso"){if(e==="iso"){let t=[];return t.push(De(this.year,4)),t.push(De(this.month,2)),t.push(De(this.day,2)),t.push(De(this.hour,2)),t.push(De(this.minute,2)),t.push(De(this.second,2)),this.millisecond!==0&&(t.push("."),t.push(De(this.millisecond,3))),t.push("Z"),t.join("")}return super.toString(e)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}};Q3=us;k.GeneralizedTime=Q3;us.NAME="GeneralizedTime";var X3,fs=class extends kt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}};X3=fs;k.DATE=X3;fs.NAME="DATE";var J3,hs=class extends kt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}};J3=hs;k.TimeOfDay=J3;hs.NAME="TimeOfDay";var e4,ds=class extends kt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}};e4=ds;k.DateTime=e4;ds.NAME="DateTime";var t4,ps=class extends kt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}};t4=ps;k.Duration=t4;ps.NAME="Duration";var r4,gs=class extends kt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}};r4=gs;k.TIME=r4;gs.NAME="TIME";function q8(r){let{result:e}=Jr(r),t=e.valueBlock.value;return{n:L(ht(t[1].toBigInt()),"base64url"),e:L(ht(t[2].toBigInt()),"base64url"),d:L(ht(t[3].toBigInt()),"base64url"),p:L(ht(t[4].toBigInt()),"base64url"),q:L(ht(t[5].toBigInt()),"base64url"),dp:L(ht(t[6].toBigInt()),"base64url"),dq:L(ht(t[7].toBigInt()),"base64url"),qi:L(ht(t[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function $8(r){if(r.n==null||r.e==null||r.d==null||r.p==null||r.q==null||r.dp==null||r.dq==null||r.qi==null)throw new E("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new we({value:[new ue({value:0}),ue.fromBigInt(dt(K(r.n,"base64url"))),ue.fromBigInt(dt(K(r.e,"base64url"))),ue.fromBigInt(dt(K(r.d,"base64url"))),ue.fromBigInt(dt(K(r.p,"base64url"))),ue.fromBigInt(dt(K(r.q,"base64url"))),ue.fromBigInt(dt(K(r.dp,"base64url"))),ue.fromBigInt(dt(K(r.dq,"base64url"))),ue.fromBigInt(dt(K(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function z8(r){let{result:e}=Jr(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:L(ht(t[0].toBigInt()),"base64url"),e:L(ht(t[1].toBigInt()),"base64url")}}function G8(r){if(r.n==null||r.e==null)throw new E("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new we({value:[new we({value:[new et({value:"1.2.840.113549.1.1.1"}),new jt]}),new Qr({valueHex:new we({value:[ue.fromBigInt(dt(K(r.n,"base64url"))),ue.fromBigInt(dt(K(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function ht(r){let e=r.toString(16);e.length%2>0&&(e=`0${e}`);let t=e.length/2,n=new Uint8Array(t),s=0,i=0;for(;s<t;)n[s]=parseInt(e.slice(i,i+2),16),s+=1,i+=2;return n}function dt(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}var j8=16,Do=32,Uo=1e4;async function Y8(r,e){let t=X.get(),s=new we({value:[new ue({value:0}),new we({value:[new et({value:"1.2.840.113549.1.1.1"}),new jt]}),new Rt({valueHex:r.marshal()})]}).toBER(),i=new Uint8Array(s,0,s.byteLength),o=ut(j8),a=await _o(En,e,o,{c:Uo,dkLen:Do}),c=ut(16),l=await t.subtle.importKey("raw",a,"AES-CBC",!1,["encrypt"]),f=await t.subtle.encrypt({name:"AES-CBC",iv:c},l,i),u=new we({value:[new Rt({valueHex:o}),new ue({value:Uo}),new ue({value:Do}),new we({value:[new et({value:"1.2.840.113549.2.11"}),new jt]})]}),h=new we({value:[new et({value:"1.2.840.113549.1.5.13"}),new we({value:[new we({value:[new et({value:"1.2.840.113549.1.5.12"}),u]}),new we({value:[new et({value:"2.16.840.1.101.3.4.1.42"}),new Rt({valueHex:c})]})]})]}),g=new we({value:[h,new Rt({valueHex:f})]}).toBER(),d=new Uint8Array(g,0,g.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...L(d,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
|
7
|
-
`)}async function Oo(r,e){let t=X.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let s=K(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:i}=Jr(s),{iv:o,salt:a,iterations:c,keySize:l,cipherText:f}=W8(i),u=await _o(En,e,a,{c,dkLen:l}),h=await t.subtle.importKey("raw",u,"AES-CBC",!1,["decrypt"]),m=Dn(await t.subtle.decrypt({name:"AES-CBC",iv:o},h,f)),{result:g}=Jr(m);n=n4(g)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let s=K(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:i}=Jr(s);n=n4(i)}else throw new E("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return Vo(n)}function W8(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new E("Only pkcs5PBES2 encrypted private keys are supported","ERR_INVALID_PARAMS");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new E("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let i=n.valueBlock.value[1],o=Dn(i.valueBlock.value[0].getValue()),a=Uo,c=Do;if(i.valueBlock.value.length===3)a=Number(i.valueBlock.value[1].toBigInt()),c=Number(i.valueBlock.value[2].toBigInt());else if(i.valueBlock.value.length===2)throw new E("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key","ERR_INVALID_PARAMS");let l=e.valueBlock.value[1].valueBlock.value[1],f=l.valueBlock.value[0].toString();if(f!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(f!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new E("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let u=Dn(l.valueBlock.value[1].getValue());return{cipherText:Dn(r.valueBlock.value[1].getValue()),salt:o,iterations:a,keySize:c,iv:u}}function n4(r){return Dn(r.valueBlock.value[2].getValue())}function Dn(r){return new Uint8Array(r,0,r.byteLength)}async function s4(r){let e=await X.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await a4(e);return{privateKey:t[0],publicKey:t[1]}}async function Mo(r){let t=[await X.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await Z8(r)],n=await a4({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function i4(r,e){let t=await X.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await X.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function o4(r,e,t){let n=await X.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return X.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function a4(r){if(r.privateKey==null||r.publicKey==null)throw new E("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([X.get().subtle.exportKey("jwk",r.privateKey),X.get().subtle.exportKey("jwk",r.publicKey)])}async function Z8(r){return X.get().subtle.importKey("jwk",{kty:r.kty,n:r.n,e:r.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}function ys(r){if(r.kty!=="RSA")throw new E("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new E("invalid key modulus","ERR_INVALID_KEY_MODULUS");return K(r.n,"base64url").length*8}var dr=8192,hr=class{_key;constructor(e){this._key=e}verify(e,t){return o4(this._key,t,e)}marshal(){return Yt.jwkToPkix(this._key)}get bytes(){return Xe.encode({Type:Z.RSA,Data:this.marshal()}).subarray()}equals(e){return W(this.bytes,e.bytes)}hash(){let e=ne.digest(this.bytes);return $e(e)?e.then(({bytes:t})=>t):e.bytes}},Wt=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return ut(16)}sign(e){return i4(this._key,e)}get public(){if(this._publicKey==null)throw new E("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new hr(this._publicKey)}marshal(){return Yt.jwkToPkcs1(this._key)}get bytes(){return Je.encode({Type:Z.RSA,Data:this.marshal()}).subarray()}equals(e){return W(this.bytes,e.bytes)}hash(){let e=ne.digest(this.bytes);return $e(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return L(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8")return Yt.exportToPem(this,e);if(t==="libp2p-key")return jr(this.bytes,e);throw new E(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function Vo(r){let e=Yt.pkcs1ToJwk(r);if(ys(e)>dr)throw new E("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await Mo(e);return new Wt(t.privateKey,t.publicKey)}function X8(r){let e=Yt.pkixToJwk(r);if(ys(e)>dr)throw new E("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new hr(e)}async function J8(r){if(ys(r)>dr)throw new E("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await Mo(r);return new Wt(e.privateKey,e.publicKey)}async function e7(r){if(r>dr)throw new E("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await s4(r);return new Wt(e.privateKey,e.publicKey)}var zo={};ae(zo,{Secp256k1PrivateKey:()=>mr,Secp256k1PublicKey:()=>gr,generateKeyPair:()=>d7,unmarshalSecp256k1PrivateKey:()=>f7,unmarshalSecp256k1PublicKey:()=>h7});var t7=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Zt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Qt=new Uint32Array(64),Ho=class extends qr{constructor(){super(64,32,8,!1),this.A=Zt[0]|0,this.B=Zt[1]|0,this.C=Zt[2]|0,this.D=Zt[3]|0,this.E=Zt[4]|0,this.F=Zt[5]|0,this.G=Zt[6]|0,this.H=Zt[7]|0}get(){let{A:e,B:t,C:n,D:s,E:i,F:o,G:a,H:c}=this;return[e,t,n,s,i,o,a,c]}set(e,t,n,s,i,o,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=s|0,this.E=i|0,this.F=o|0,this.G=a|0,this.H=c|0}process(e,t){for(let u=0;u<16;u++,t+=4)Qt[u]=e.getUint32(t,!1);for(let u=16;u<64;u++){let h=Qt[u-15],m=Qt[u-2],g=We(h,7)^We(h,18)^h>>>3,d=We(m,17)^We(m,19)^m>>>10;Qt[u]=d+Qt[u-7]+g+Qt[u-16]|0}let{A:n,B:s,C:i,D:o,E:a,F:c,G:l,H:f}=this;for(let u=0;u<64;u++){let h=We(a,6)^We(a,11)^We(a,25),m=f+h+H0(a,c,l)+t7[u]+Qt[u]|0,d=(We(n,2)^We(n,13)^We(n,22))+K0(n,s,i)|0;f=l,l=c,c=a,a=o+m|0,o=i,i=s,s=n,n=m+d|0}n=n+this.A|0,s=s+this.B|0,i=i+this.C|0,o=o+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,f=f+this.H|0,this.set(n,s,i,o,a,c,l,f)}roundClean(){Qt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var c4=b1(()=>new Ho);function l4(r){r.lowS!==void 0&&Ze("lowS",r.lowS),r.prehash!==void 0&&Ze("prehash",r.prehash)}function r7(r){let e=Bn(r);lt(e,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:t,Fp:n,a:s}=e;if(t){if(!n.eql(s,n.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if(typeof t!="object"||typeof t.beta!="bigint"||typeof t.splitScalar!="function")throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...e})}var{bytesToNumberBE:n7,hexToBytes:s7}=x1,pr={Err:class extends Error{constructor(e=""){super(e)}},_parseInt(r){let{Err:e}=pr;if(r.length<2||r[0]!==2)throw new e("Invalid signature integer tag");let t=r[1],n=r.subarray(2,t+2);if(!t||n.length!==t)throw new e("Invalid signature integer: wrong length");if(n[0]&128)throw new e("Invalid signature integer: negative");if(n[0]===0&&!(n[1]&128))throw new e("Invalid signature integer: unnecessary leading zero");return{d:n7(n),l:r.subarray(t+2)}},toSig(r){let{Err:e}=pr,t=typeof r=="string"?s7(r):r;$r(t);let n=t.length;if(n<2||t[0]!=48)throw new e("Invalid signature tag");if(t[1]!==n-2)throw new e("Invalid signature: incorrect length");let{d:s,l:i}=pr._parseInt(t.subarray(2)),{d:o,l:a}=pr._parseInt(i);if(a.length)throw new e("Invalid signature: left bytes after parsing");return{r:s,s:o}},hexFromSig(r){let e=l=>Number.parseInt(l[0],16)&8?"00"+l:l,t=l=>{let f=l.toString(16);return f.length&1?`0${f}`:f},n=e(t(r.s)),s=e(t(r.r)),i=n.length/2,o=s.length/2,a=t(i),c=t(o);return`30${t(o+i+4)}02${c}${s}02${a}${n}`}},Xt=BigInt(0),ve=BigInt(1),Yh=BigInt(2),u4=BigInt(3),Wh=BigInt(4);function i7(r){let e=r7(r),{Fp:t}=e,n=e.toBytes||((g,d,p)=>{let x=d.toAffine();return Et(Uint8Array.from([4]),t.toBytes(x.x),t.toBytes(x.y))}),s=e.fromBytes||(g=>{let d=g.subarray(1),p=t.fromBytes(d.subarray(0,t.BYTES)),x=t.fromBytes(d.subarray(t.BYTES,2*t.BYTES));return{x:p,y:x}});function i(g){let{a:d,b:p}=e,x=t.sqr(g),b=t.mul(x,g);return t.add(t.add(b,t.mul(g,d)),p)}if(!t.eql(t.sqr(e.Gy),i(e.Gx)))throw new Error("bad generator point: equation left != right");function o(g){return An(g,ve,e.n)}function a(g){let{allowedPrivateKeyLengths:d,nByteLength:p,wrapPrivateKey:x,n:b}=e;if(d&&typeof g!="bigint"){if(Kt(g)&&(g=vt(g)),typeof g!="string"||!d.includes(g.length))throw new Error("Invalid key");g=g.padStart(p*2,"0")}let w;try{w=typeof g=="bigint"?g:xt(ie("private key",g,p))}catch{throw new Error(`private key must be ${p} bytes, hex or bigint, not ${typeof g}`)}return x&&(w=Y(w,b)),Pe("private key",w,ve,b),w}function c(g){if(!(g instanceof u))throw new Error("ProjectivePoint expected")}let l=cr((g,d)=>{let{px:p,py:x,pz:b}=g;if(t.eql(b,t.ONE))return{x:p,y:x};let w=g.is0();d==null&&(d=w?t.ONE:t.inv(b));let S=t.mul(p,d),B=t.mul(x,d),I=t.mul(b,d);if(w)return{x:t.ZERO,y:t.ZERO};if(!t.eql(I,t.ONE))throw new Error("invZ was invalid");return{x:S,y:B}}),f=cr(g=>{if(g.is0()){if(e.allowInfinityPoint&&!t.is0(g.py))return;throw new Error("bad point: ZERO")}let{x:d,y:p}=g.toAffine();if(!t.isValid(d)||!t.isValid(p))throw new Error("bad point: x or y not FE");let x=t.sqr(p),b=i(d);if(!t.eql(x,b))throw new Error("bad point: equation left != right");if(!g.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});class u{constructor(d,p,x){if(this.px=d,this.py=p,this.pz=x,d==null||!t.isValid(d))throw new Error("x required");if(p==null||!t.isValid(p))throw new Error("y required");if(x==null||!t.isValid(x))throw new Error("z required");Object.freeze(this)}static fromAffine(d){let{x:p,y:x}=d||{};if(!d||!t.isValid(p)||!t.isValid(x))throw new Error("invalid affine point");if(d instanceof u)throw new Error("projective point not allowed");let b=w=>t.eql(w,t.ZERO);return b(p)&&b(x)?u.ZERO:new u(p,x,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(d){let p=t.invertBatch(d.map(x=>x.pz));return d.map((x,b)=>x.toAffine(p[b])).map(u.fromAffine)}static fromHex(d){let p=u.fromAffine(s(ie("pointHex",d)));return p.assertValidity(),p}static fromPrivateKey(d){return u.BASE.multiply(a(d))}_setWindowSize(d){m.setWindowSize(this,d)}assertValidity(){f(this)}hasEvenY(){let{y:d}=this.toAffine();if(t.isOdd)return!t.isOdd(d);throw new Error("Field doesn't support isOdd")}equals(d){c(d);let{px:p,py:x,pz:b}=this,{px:w,py:S,pz:B}=d,I=t.eql(t.mul(p,B),t.mul(w,b)),N=t.eql(t.mul(x,B),t.mul(S,b));return I&&N}negate(){return new u(this.px,t.neg(this.py),this.pz)}double(){let{a:d,b:p}=e,x=t.mul(p,u4),{px:b,py:w,pz:S}=this,B=t.ZERO,I=t.ZERO,N=t.ZERO,T=t.mul(b,b),j=t.mul(w,w),F=t.mul(S,S),H=t.mul(b,w);return H=t.add(H,H),N=t.mul(b,S),N=t.add(N,N),B=t.mul(d,N),I=t.mul(x,F),I=t.add(B,I),B=t.sub(j,I),I=t.add(j,I),I=t.mul(B,I),B=t.mul(H,B),N=t.mul(x,N),F=t.mul(d,F),H=t.sub(T,F),H=t.mul(d,H),H=t.add(H,N),N=t.add(T,T),T=t.add(N,T),T=t.add(T,F),T=t.mul(T,H),I=t.add(I,T),F=t.mul(w,S),F=t.add(F,F),T=t.mul(F,H),B=t.sub(B,T),N=t.mul(F,j),N=t.add(N,N),N=t.add(N,N),new u(B,I,N)}add(d){c(d);let{px:p,py:x,pz:b}=this,{px:w,py:S,pz:B}=d,I=t.ZERO,N=t.ZERO,T=t.ZERO,j=e.a,F=t.mul(e.b,u4),H=t.mul(p,w),oe=t.mul(x,S),fe=t.mul(b,B),_=t.add(p,x),v=t.add(w,S);_=t.mul(_,v),v=t.add(H,oe),_=t.sub(_,v),v=t.add(p,b);let y=t.add(w,B);return v=t.mul(v,y),y=t.add(H,fe),v=t.sub(v,y),y=t.add(x,b),I=t.add(S,B),y=t.mul(y,I),I=t.add(oe,fe),y=t.sub(y,I),T=t.mul(j,v),I=t.mul(F,fe),T=t.add(I,T),I=t.sub(oe,T),T=t.add(oe,T),N=t.mul(I,T),oe=t.add(H,H),oe=t.add(oe,H),fe=t.mul(j,fe),v=t.mul(F,v),oe=t.add(oe,fe),fe=t.sub(H,fe),fe=t.mul(j,fe),v=t.add(v,fe),H=t.mul(oe,v),N=t.add(N,H),H=t.mul(y,v),I=t.mul(_,I),I=t.sub(I,H),H=t.mul(_,oe),T=t.mul(y,T),T=t.add(T,H),new u(I,N,T)}subtract(d){return this.add(d.negate())}is0(){return this.equals(u.ZERO)}wNAF(d){return m.wNAFCached(this,d,u.normalizeZ)}multiplyUnsafe(d){Pe("scalar",d,Xt,e.n);let p=u.ZERO;if(d===Xt)return p;if(d===ve)return this;let{endo:x}=e;if(!x)return m.unsafeLadder(this,d);let{k1neg:b,k1:w,k2neg:S,k2:B}=x.splitScalar(d),I=p,N=p,T=this;for(;w>Xt||B>Xt;)w&ve&&(I=I.add(T)),B&ve&&(N=N.add(T)),T=T.double(),w>>=ve,B>>=ve;return b&&(I=I.negate()),S&&(N=N.negate()),N=new u(t.mul(N.px,x.beta),N.py,N.pz),I.add(N)}multiply(d){let{endo:p,n:x}=e;Pe("scalar",d,ve,x);let b,w;if(p){let{k1neg:S,k1:B,k2neg:I,k2:N}=p.splitScalar(d),{p:T,f:j}=this.wNAF(B),{p:F,f:H}=this.wNAF(N);T=m.constTimeNegate(S,T),F=m.constTimeNegate(I,F),F=new u(t.mul(F.px,p.beta),F.py,F.pz),b=T.add(F),w=j.add(H)}else{let{p:S,f:B}=this.wNAF(d);b=S,w=B}return u.normalizeZ([b,w])[0]}multiplyAndAddUnsafe(d,p,x){let b=u.BASE,w=(B,I)=>I===Xt||I===ve||!B.equals(b)?B.multiplyUnsafe(I):B.multiply(I),S=w(this,p).add(w(d,x));return S.is0()?void 0:S}toAffine(d){return l(this,d)}isTorsionFree(){let{h:d,isTorsionFree:p}=e;if(d===ve)return!0;if(p)return p(u,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:d,clearCofactor:p}=e;return d===ve?this:p?p(u,this):this.multiplyUnsafe(e.h)}toRawBytes(d=!0){return Ze("isCompressed",d),this.assertValidity(),n(u,this,d)}toHex(d=!0){return Ze("isCompressed",d),vt(this.toRawBytes(d))}}u.BASE=new u(e.Gx,e.Gy,t.ONE),u.ZERO=new u(t.ZERO,t.ONE,t.ZERO);let h=e.nBitLength,m=I1(u,e.endo?Math.ceil(h/2):h);return{CURVE:e,ProjectivePoint:u,normPrivateKeyToScalar:a,weierstrassEquation:i,isWithinCurveOrder:o}}function o7(r){let e=Bn(r);return lt(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function f4(r){let e=o7(r),{Fp:t,n}=e,s=t.BYTES+1,i=2*t.BYTES+1;function o(_){return Y(_,n)}function a(_){return E1(_,n)}let{ProjectivePoint:c,normPrivateKeyToScalar:l,weierstrassEquation:f,isWithinCurveOrder:u}=i7({...e,toBytes(_,v,y){let A=v.toAffine(),R=t.toBytes(A.x),P=Et;return Ze("isCompressed",y),y?P(Uint8Array.from([v.hasEvenY()?2:3]),R):P(Uint8Array.from([4]),R,t.toBytes(A.y))},fromBytes(_){let v=_.length,y=_[0],A=_.subarray(1);if(v===s&&(y===2||y===3)){let R=xt(A);if(!An(R,ve,t.ORDER))throw new Error("Point is not on curve");let P=f(R),C;try{C=t.sqrt(P)}catch(O){let $=O instanceof Error?": "+O.message:"";throw new Error("Point is not on curve"+$)}let D=(C&ve)===ve;return(y&1)===1!==D&&(C=t.neg(C)),{x:R,y:C}}else if(v===i&&y===4){let R=t.fromBytes(A.subarray(0,t.BYTES)),P=t.fromBytes(A.subarray(t.BYTES,2*t.BYTES));return{x:R,y:P}}else throw new Error(`Point of length ${v} was invalid. Expected ${s} compressed bytes or ${i} uncompressed bytes`)}}),h=_=>vt($t(_,e.nByteLength));function m(_){let v=n>>ve;return _>v}function g(_){return m(_)?o(-_):_}let d=(_,v,y)=>xt(_.slice(v,y));class p{constructor(v,y,A){this.r=v,this.s=y,this.recovery=A,this.assertValidity()}static fromCompact(v){let y=e.nByteLength;return v=ie("compactSignature",v,y*2),new p(d(v,0,y),d(v,y,2*y))}static fromDER(v){let{r:y,s:A}=pr.toSig(ie("DER",v));return new p(y,A)}assertValidity(){Pe("r",this.r,ve,n),Pe("s",this.s,ve,n)}addRecoveryBit(v){return new p(this.r,this.s,v)}recoverPublicKey(v){let{r:y,s:A,recovery:R}=this,P=I(ie("msgHash",v));if(R==null||![0,1,2,3].includes(R))throw new Error("recovery id invalid");let C=R===2||R===3?y+e.n:y;if(C>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");let D=R&1?"03":"02",q=c.fromHex(D+h(C)),O=a(C),$=o(-P*O),te=o(A*O),re=c.BASE.multiplyAndAddUnsafe(q,$,te);if(!re)throw new Error("point at infinify");return re.assertValidity(),re}hasHighS(){return m(this.s)}normalizeS(){return this.hasHighS()?new p(this.r,o(-this.s),this.recovery):this}toDERRawBytes(){return or(this.toDERHex())}toDERHex(){return pr.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return or(this.toCompactHex())}toCompactHex(){return h(this.r)+h(this.s)}}let x={isValidPrivateKey(_){try{return l(_),!0}catch{return!1}},normPrivateKeyToScalar:l,randomPrivateKey:()=>{let _=xo(e.n);return Q0(e.randomBytes(_),e.n)},precompute(_=8,v=c.BASE){return v._setWindowSize(_),v.multiply(BigInt(3)),v}};function b(_,v=!0){return c.fromPrivateKey(_).toRawBytes(v)}function w(_){let v=Kt(_),y=typeof _=="string",A=(v||y)&&_.length;return v?A===s||A===i:y?A===2*s||A===2*i:_ instanceof c}function S(_,v,y=!0){if(w(_))throw new Error("first arg must be private key");if(!w(v))throw new Error("second arg must be public key");return c.fromHex(v).multiply(l(_)).toRawBytes(y)}let B=e.bits2int||function(_){let v=xt(_),y=_.length*8-e.nBitLength;return y>0?v>>BigInt(y):v},I=e.bits2int_modN||function(_){return o(B(_))},N=In(e.nBitLength);function T(_){return Pe(`num < 2^${e.nBitLength}`,_,Xt,N),$t(_,e.nByteLength)}function j(_,v,y=F){if(["recovered","canonical"].some(me=>me in y))throw new Error("sign() legacy options not supported");let{hash:A,randomBytes:R}=e,{lowS:P,prehash:C,extraEntropy:D}=y;P==null&&(P=!0),_=ie("msgHash",_),l4(y),C&&(_=ie("prehashed msgHash",A(_)));let q=I(_),O=l(v),$=[T(O),T(q)];if(D!=null&&D!==!1){let me=D===!0?R(t.BYTES):D;$.push(ie("extraEntropy",me))}let te=Et(...$),re=q;function _e(me){let he=B(me);if(!u(he))return;let Ge=a(he),ye=c.BASE.multiply(he).toAffine(),je=o(ye.x);if(je===Xt)return;let er=o(Ge*o(re+je*O));if(er===Xt)return;let cn=(ye.x===je?0:2)|Number(ye.y&ve),jn=er;return P&&m(er)&&(jn=g(er),cn^=1),new p(je,jn,cn)}return{seed:te,k2sig:_e}}let F={lowS:e.lowS,prehash:!1},H={lowS:e.lowS,prehash:!1};function oe(_,v,y=F){let{seed:A,k2sig:R}=j(_,v,y),P=e;return yo(P.hash.outputLen,P.nByteLength,P.hmac)(A,R)}c.BASE._setWindowSize(8);function fe(_,v,y,A=H){let R=_;if(v=ie("msgHash",v),y=ie("publicKey",y),"strict"in A)throw new Error("options.strict was renamed to lowS");l4(A);let{lowS:P,prehash:C}=A,D,q;try{if(typeof R=="string"||Kt(R))try{D=p.fromDER(R)}catch(ye){if(!(ye instanceof pr.Err))throw ye;D=p.fromCompact(R)}else if(typeof R=="object"&&typeof R.r=="bigint"&&typeof R.s=="bigint"){let{r:ye,s:je}=R;D=new p(ye,je)}else throw new Error("PARSE");q=c.fromHex(y)}catch(ye){if(ye.message==="PARSE")throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(P&&D.hasHighS())return!1;C&&(v=e.hash(v));let{r:O,s:$}=D,te=I(v),re=a($),_e=o(te*re),me=o(O*re),he=c.BASE.multiplyAndAddUnsafe(q,_e,me)?.toAffine();return he?o(he.x)===O:!1}return{CURVE:e,getPublicKey:b,getSharedSecret:S,sign:oe,verify:fe,ProjectivePoint:c,Signature:p,utils:x}}function a7(r){return{hash:r,hmac:(e,...t)=>Sn(r,e,lo(...t)),randomBytes:Kr}}function h4(r,e){let t=n=>f4({...r,...a7(n)});return Object.freeze({...t(e),create:t})}var g4=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),d4=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),c7=BigInt(1),Ko=BigInt(2),p4=(r,e)=>(r+e/Ko)/e;function l7(r){let e=g4,t=BigInt(3),n=BigInt(6),s=BigInt(11),i=BigInt(22),o=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%e,f=l*l*r%e,u=ee(f,t,e)*f%e,h=ee(u,t,e)*f%e,m=ee(h,Ko,e)*l%e,g=ee(m,s,e)*m%e,d=ee(g,i,e)*g%e,p=ee(d,a,e)*d%e,x=ee(p,c,e)*p%e,b=ee(x,a,e)*d%e,w=ee(b,t,e)*f%e,S=ee(w,o,e)*g%e,B=ee(S,n,e)*l%e,I=ee(B,Ko,e);if(!qo.eql(qo.sqr(I),r))throw new Error("Cannot find square root");return I}var qo=A1(g4,void 0,void 0,{sqrt:l7}),rt=h4({a:BigInt(0),b:BigInt(7),Fp:qo,n:d4,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let e=d4,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-c7*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),s=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),i=t,o=BigInt("0x100000000000000000000000000000000"),a=p4(i*r,e),c=p4(-n*r,e),l=Y(r-a*t-c*s,e),f=Y(-a*n-c*i,e),u=l>o,h=f>o;if(u&&(l=e-l),h&&(f=e-f),l>o||f>o)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:u,k1:l,k2neg:h,k2:f}}}},c4),sd=BigInt(0);var id=rt.ProjectivePoint;function m4(){return rt.utils.randomPrivateKey()}function y4(r,e){let t=ne.digest(e instanceof Uint8Array?e:e.subarray());if($e(t))return t.then(({digest:n})=>rt.sign(n,r).toDERRawBytes()).catch(n=>{throw new E(String(n),"ERR_INVALID_INPUT")});try{return rt.sign(t.digest,r).toDERRawBytes()}catch(n){throw new E(String(n),"ERR_INVALID_INPUT")}}function b4(r,e,t){let n=ne.digest(t instanceof Uint8Array?t:t.subarray());if($e(n))return n.then(({digest:s})=>rt.verify(e,s,r)).catch(s=>{throw new E(String(s),"ERR_INVALID_INPUT")});try{return rt.verify(e,n.digest,r)}catch(s){throw new E(String(s),"ERR_INVALID_INPUT")}}function w4(r){return rt.ProjectivePoint.fromHex(r).toRawBytes(!0)}function v4(r){try{rt.getPublicKey(r,!0)}catch(e){throw new E(String(e),"ERR_INVALID_PRIVATE_KEY")}}function $o(r){try{rt.ProjectivePoint.fromHex(r)}catch(e){throw new E(String(e),"ERR_INVALID_PUBLIC_KEY")}}function x4(r){try{return rt.getPublicKey(r,!0)}catch(e){throw new E(String(e),"ERR_INVALID_PRIVATE_KEY")}}var gr=class{_key;constructor(e){$o(e),this._key=e}verify(e,t){return b4(this._key,t,e)}marshal(){return w4(this._key)}get bytes(){return Xe.encode({Type:Z.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return W(this.bytes,e.bytes)}async hash(){let e=ne.digest(this.bytes),t;return $e(e)?{bytes:t}=await e:t=e.bytes,t}},mr=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??x4(e),v4(this._key),$o(this._publicKey)}sign(e){return y4(this._key,e)}get public(){return new gr(this._publicKey)}marshal(){return this._key}get bytes(){return Je.encode({Type:Z.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return W(this.bytes,e.bytes)}hash(){let e=ne.digest(this.bytes);return $e(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return L(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return jr(this.bytes,e);throw new E(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function f7(r){return new mr(r)}function h7(r){return new gr(r)}async function d7(){let r=m4();return new mr(r)}var Nt={rsa:Fo,ed25519:ko,secp256k1:zo};function Go(r){let e=Object.keys(Nt).join(" / ");return new E(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function jo(r){if(r=r.toLowerCase(),r==="rsa"||r==="ed25519"||r==="secp256k1")return Nt[r];throw Go(r)}async function p7(r,e){return jo(r).generateKeyPair(e??2048)}async function g7(r,e,t){if(r.toLowerCase()!=="ed25519")throw new E("Seed key derivation is unimplemented for RSA or secp256k1","ERR_UNSUPPORTED_KEY_DERIVATION_TYPE");return Ro(e)}function m7(r){let e=Xe.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case Z.RSA:return Nt.rsa.unmarshalRsaPublicKey(t);case Z.Ed25519:return Nt.ed25519.unmarshalEd25519PublicKey(t);case Z.Secp256k1:return Nt.secp256k1.unmarshalSecp256k1PublicKey(t);default:throw Go(e.Type??"unknown")}}function y7(r,e){return e=(e??"rsa").toLowerCase(),jo(e),r.bytes}async function E4(r){let e=Je.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case Z.RSA:return Nt.rsa.unmarshalRsaPrivateKey(t);case Z.Ed25519:return Nt.ed25519.unmarshalEd25519PrivateKey(t);case Z.Secp256k1:return Nt.secp256k1.unmarshalSecp256k1PrivateKey(t);default:throw Go(e.Type??"RSA")}}function b7(r,e){return e=(e??"rsa").toLowerCase(),jo(e),r.bytes}async function w7(r,e){try{let t=await d3(r,e);return await E4(t)}catch{}if(!r.includes("BEGIN"))throw new E("Encrypted key was not a libp2p-key or a PEM file","ERR_INVALID_IMPORT_FORMAT");return Oo(r,e)}var I4=Symbol.for("@achingbrain/uint8arraylist");function A4(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 ws(r){return!!r?.[I4]}var Fe=class r{bufs;length;[I4]=!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(ws(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(ws(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=A4(this.bufs,e);return t.buf[t.index]}set(e,t){let n=A4(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(ws(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 Q(n,s)}subarray(e,t){let{bufs:n,length:s}=this._subList(e,t);return n.length===1?n[0]:Q(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],a=s,c=a+o.byteLength;if(s=c,e>=c)continue;let l=e>=a&&e<c,f=t>a&&t<=c;if(l&&f){if(e===a&&t===c){n.push(o);break}let u=e-a;n.push(o.subarray(u,u+(t-e)));break}if(l){if(e===0){n.push(o);continue}n.push(o.subarray(e-a));continue}if(f){if(t===c){n.push(o);break}n.push(o.subarray(0,t-a));break}n.push(o)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!ws(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 u=0;u<i;u++)o[u]=-1;for(let u=0;u<s;u++)o[n[u]]=u;let a=o,c=this.byteLength-n.byteLength,l=n.byteLength-1,f;for(let u=t;u<=c;u+=f){f=0;for(let h=l;h>=0;h--){let m=this.get(u+h);if(n[h]!==m){f=Math.max(1,h-a[m]);break}}if(f===0)return u}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=be(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=Le(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=Le(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=Le(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=be(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=Le(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=Le(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=Le(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=Le(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=Le(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}};var Fd=parseInt("0xFFFF",16),Hd=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);var R4=l1,I7=u1,Yo=function(r){let e=0;if(r=r.toString().trim(),R4(r)){let t=new Uint8Array(e+4);return r.split(/\./g).forEach(n=>{t[e++]=parseInt(n,10)&255}),t}if(I7(r)){let t=r.split(":",8),n;for(n=0;n<t.length;n++){let i=R4(t[n]),o;i&&(o=Yo(t[n]),t[n]=L(o.slice(0,2),"base16")),o!=null&&++n<8&&t.splice(n,0,L(o.slice(2,4),"base16"))}if(t[0]==="")for(;t.length<8;)t.unshift("0");else if(t[t.length-1]==="")for(;t.length<8;)t.push("0");else if(t.length<8){for(n=0;n<t.length&&t[n]!=="";n++);let i=[n,1];for(n=9-t.length;n>0;n--)i.push("0");t.splice.apply(t,i)}let s=new Uint8Array(e+16);for(n=0;n<t.length;n++){let i=parseInt(t[n],16);s[e++]=i>>8&255,s[e++]=i&255}return s}throw new Error("invalid ip address")},k4=function(r,e=0,t){e=~~e,t=t??r.length-e;let n=new DataView(r.buffer);if(t===4){let s=[];for(let i=0;i<t;i++)s.push(r[e+i]);return s.join(".")}if(t===16){let s=[];for(let i=0;i<t;i+=2)s.push(n.getUint16(e+i).toString(16));return s.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var en={},Wo={},S7=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,-1,"ip6zone"],[43,8,"ipcidr"],[53,-1,"dns",!0],[54,-1,"dns4",!0],[55,-1,"dns6",!0],[56,-1,"dnsaddr",!0],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[280,0,"webrtc-direct"],[281,0,"webrtc"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,-1,"unix",!1,!0],[421,-1,"ipfs"],[421,-1,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,-1,"garlic64"],[448,0,"tls"],[449,-1,"sni"],[460,0,"quic"],[461,0,"quic-v1"],[465,0,"webtransport"],[466,-1,"certhash"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"],[481,-1,"http-path"],[777,-1,"memory"]];S7.forEach(r=>{let e=R7(...r);Wo[e.code]=e,en[e.name]=e});function R7(r,e,t,n,s){return{code:r,size:e,name:t,resolvable:!!n,path:!!s}}function G(r){if(typeof r=="number"){if(Wo[r]!=null)return Wo[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(en[r]!=null)return en[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var Ep=G("ip4"),Ap=G("ip6"),Ip=G("ipcidr");function Jo(r,e){switch(G(r).code){case 4:case 41:return T7(e);case 42:return Xo(e);case 6:case 273:case 33:case 132:return N4(e).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return Xo(e);case 421:return P7(e);case 444:return _4(e);case 445:return _4(e);case 466:return L7(e);case 481:return globalThis.encodeURIComponent(Xo(e));default:return L(e,"base16")}}function e2(r,e){switch(G(r).code){case 4:return T4(e);case 41:return T4(e);case 42:return Qo(e);case 6:case 273:case 33:case 132:return t2(parseInt(e,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return Qo(e);case 421:return _7(e);case 444:return C7(e);case 445:return D7(e);case 466:return N7(e);case 481:return Qo(globalThis.decodeURIComponent(e));default:return K(e,"base16")}}var Zo=Object.values(Dt).map(r=>r.decoder),k7=function(){let r=Zo[0].or(Zo[1]);return Zo.slice(2).forEach(e=>r=r.or(e)),r}();function T4(r){if(!f1(r))throw new Error("invalid ip address");return Yo(r)}function T7(r){let e=k4(r,0,r.length);if(e==null)throw new Error("ipBuff is required");if(!f1(e))throw new Error("invalid ip address");return e}function t2(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r),new Uint8Array(e)}function N4(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function Qo(r){let e=K(r),t=Uint8Array.from(He(e.length));return Q([t,e],t.length+e.length)}function Xo(r){let e=Oe(r);if(r=r.slice(le(e)),r.length!==e)throw new Error("inconsistent lengths");return L(r)}function _7(r){let e;r[0]==="Q"||r[0]==="1"?e=rr(de.decode(`z${r}`)).bytes:e=Be.parse(r).multihash.bytes;let t=Uint8Array.from(He(e.length));return Q([t,e],t.length+e.length)}function N7(r){let e=k7.decode(r),t=Uint8Array.from(He(e.length));return Q([t,e],t.length+e.length)}function L7(r){let e=Oe(r),t=r.slice(le(e));if(t.length!==e)throw new Error("inconsistent lengths");return"u"+L(t,"base64url")}function P7(r){let e=Oe(r),t=r.slice(le(e));if(t.length!==e)throw new Error("inconsistent lengths");return L(t,"base58btc")}function C7(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==16)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion address.`);let t=gt.decode("b"+e[0]),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let s=t2(n);return Q([t,s],t.length+s.length)}function D7(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==56)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion3 address.`);let t=gt.decode(`b${e[0]}`),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let s=t2(n);return Q([t,s],t.length+s.length)}function _4(r){let e=r.slice(0,r.length-2),t=r.slice(r.length-2),n=L(e,"base32"),s=N4(t);return`${n}:${s}`}function L4(r){r=r2(r);let e=[],t=[],n=null,s=r.split("/").slice(1);if(s.length===1&&s[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let i=0;i<s.length;i++){let o=s[i],a=G(o);if(a.size===0){e.push([a.code]),t.push([a.code]);continue}if(i++,i>=s.length)throw C4("invalid address: "+r);if(a.path===!0){n=r2(s.slice(i).join("/")),e.push([a.code,e2(a.code,n)]),t.push([a.code,n]);break}let c=e2(a.code,s[i]);e.push([a.code,c]),t.push([a.code,Jo(a.code,c)])}return{string:P4(t),bytes:s2(e),tuples:e,stringTuples:t,path:n}}function n2(r){let e=[],t=[],n=null,s=0;for(;s<r.length;){let i=Oe(r,s),o=le(i),a=G(i),c=U7(a,r.slice(s+o));if(c===0){e.push([i]),t.push([i]),s+=o;continue}let l=r.slice(s+o,s+o+c);if(s+=c+o,s>r.length)throw C4("Invalid address Uint8Array: "+L(r,"base16"));e.push([i,l]);let f=Jo(i,l);if(t.push([i,f]),a.path===!0){n=f;break}}return{bytes:Uint8Array.from(r),string:P4(t),tuples:e,stringTuples:t,path:n}}function P4(r){let e=[];return r.map(t=>{let n=G(t[0]);return e.push(n.name),t.length>1&&t[1]!=null&&e.push(t[1]),null}),r2(e.join("/"))}function s2(r){return Q(r.map(e=>{let t=G(e[0]),n=Uint8Array.from(He(t.code));return e.length>1&&e[1]!=null&&(n=Q([n,e[1]])),n}))}function U7(r,e){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let t=Oe(e instanceof Uint8Array?e:Uint8Array.from(e));return t+le(t)}}function r2(r){return"/"+r.trim().split("/").filter(e=>e).join("/")}function C4(r){return new Error("Error parsing address: "+r)}var O7=Symbol.for("nodejs.util.inspect.custom"),i2=Symbol.for("@multiformats/js-multiaddr/multiaddr"),V7=[G("dns").code,G("dns4").code,G("dns6").code,G("dnsaddr").code],vs=class r{bytes;#e;#r;#i;#a;[i2]=!0;constructor(e){e==null&&(e="");let t;if(e instanceof Uint8Array)t=n2(e);else if(typeof e=="string"){if(e.length>0&&e.charAt(0)!=="/")throw new Error(`multiaddr "${e}" must start with a "/"`);t=L4(e)}else if(U4(e))t=n2(e.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=t.bytes,this.#e=t.string,this.#r=t.tuples,this.#i=t.stringTuples,this.#a=t.path}toString(){return this.#e}toJSON(){return this.toString()}toOptions(){let e,t,n,s,i="",o=G("tcp"),a=G("udp"),c=G("ip4"),l=G("ip6"),f=G("dns6"),u=G("ip6zone");for(let[m,g]of this.stringTuples())m===u.code&&(i=`%${g??""}`),V7.includes(m)&&(t=o.name,s=443,n=`${g??""}${i}`,e=m===f.code?6:4),(m===o.code||m===a.code)&&(t=G(m).name,s=parseInt(g??"")),(m===c.code||m===l.code)&&(t=G(m).name,n=`${g??""}${i}`,e=m===l.code?6:4);if(e==null||t==null||n==null||s==null)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".');return{family:e,host:n,transport:t,port:s}}protos(){return this.#r.map(([e])=>Object.assign({},G(e)))}protoCodes(){return this.#r.map(([e])=>e)}protoNames(){return this.#r.map(([e])=>G(e).name)}tuples(){return this.#r}stringTuples(){return this.#i}encapsulate(e){return e=new r(e),new r(this.toString()+e.toString())}decapsulate(e){let t=e.toString(),n=this.toString(),s=n.lastIndexOf(t);if(s<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${e.toString()}`);return new r(n.slice(0,s))}decapsulateCode(e){let t=this.tuples();for(let n=t.length-1;n>=0;n--)if(t[n][0]===e)return new r(s2(t.slice(0,n)));return this}getPeerId(){try{let e=[];this.stringTuples().forEach(([n,s])=>{n===en.p2p.code&&e.push([n,s]),n===en["p2p-circuit"].code&&(e=[])});let t=e.pop();if(t?.[1]!=null){let n=t[1];return n[0]==="Q"||n[0]==="1"?L(de.decode(`z${n}`),"base58btc"):L(Be.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#a}equals(e){return W(this.bytes,e.bytes)}async resolve(e){let t=this.protos().find(i=>i.resolvable);if(t==null)return[this];let n=D4.get(t.name);if(n==null)throw new E(`no available resolver for ${t.name}`,"ERR_NO_AVAILABLE_RESOLVER");return(await n(this,e)).map(i=>yr(i))}nodeAddress(){let e=this.toOptions();if(e.transport!=="tcp"&&e.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${e.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:e.family,address:e.host,port:e.port}}isThinWaistAddress(e){let t=(e??this).protos();return!(t.length!==2||t[0].code!==4&&t[0].code!==41||t[1].code!==6&&t[1].code!==273)}[O7](){return`Multiaddr(${this.#e})`}};var D4=new Map;function U4(r){return!!r?.[i2]}function yr(r){return new vs(r)}function O4(r,e){return{id:r.id.toBytes(),multiaddrs:(r.multiaddrs??[]).map(n=>n.bytes),connection:e}}function Un(r){if(r.id==null)throw new Error("Invalid peer in message");return{id:yt(r.id),multiaddrs:(r.multiaddrs??[]).map(e=>yr(e))}}var xs=class{log;components;network;peerRouting;queryManager;routingTable;providers;constructor(e,t){let{network:n,peerRouting:s,queryManager:i,routingTable:o,providers:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-routing`),this.network=n,this.peerRouting=s,this.queryManager=i,this.routingTable=o,this.providers=a}async*provide(e,t,n={}){this.log("provide %s",e);let s=e.multihash.bytes;await this.providers.addProvider(e,this.components.peerId);let i={type:V.ADD_PROVIDER,key:s,providers:[O4({id:this.components.peerId,multiaddrs:t})]},o=0,a=c=>async()=>{if(c.name!=="FINAL_PEER")return[c];let l=[];this.log("putProvider %s to %p",e,c.peer.id);try{this.log("sending provider record for %s to %p",e,c.peer.id);for await(let f of this.network.sendMessage(c.peer.id,i,n))f.name==="PEER_RESPONSE"&&(this.log("sent provider record for %s to %p",e,c.peer.id),o++),l.push(f)}catch(f){this.log.error("error sending provide record to peer %p",c.peer.id,f),l.push(Me({from:c.peer.id,error:f},n))}return l};yield*Ut(this.peerRouting.getClosestPeers(s,n),c=>Sr(c,l=>a(l)),c=>yn(c,{ordered:!1,concurrency:3}),async function*(c){for await(let l of c)yield*l}),this.log("sent provider records to %d peers",o)}async*findProviders(e,t){let n=this.routingTable.kBucketSize,s=0,i=e.multihash.bytes,o=this;this.log("findProviders %c",e);let a=await this.providers.getProviders(e);if(a.length>0){let f=[];for(let u of a.slice(0,n))try{let h=await this.components.peerStore.get(u);f.push({id:u,multiaddrs:h.addresses.map(({multiaddr:m})=>m)})}catch(h){if(h.code!=="ERR_NOT_FOUND")throw h;this.log("no peer store entry for %p",u)}if(yield bn({from:this.components.peerId,messageType:V.GET_PROVIDERS,providers:f},t),yield Zi({from:this.components.peerId,providers:f},t),s+=f.length,s>=n)return}let c=async function*({peer:f,signal:u}){let h={type:V.GET_PROVIDERS,key:i};yield*o.network.sendRequest(f,h,{...t,signal:u})},l=new ct(a);for await(let f of this.queryManager.run(i,c,t))if(yield f,f.name==="PEER_RESPONSE"){this.log("Found %d provider entries for %c and %d closer peers",f.providers.length,e,f.closer.length);let u=[];for(let h of f.providers)l.has(h.id)||(l.add(h.id),u.push(h));if(u.length>0&&(yield Zi({from:f.from,providers:u},t),s+=u.length,s>=n))return}}};function Jt(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}var tn=class{movingAverage;variance;deviation;forecast;timespan;previousTime;constructor(e){this.timespan=e,this.movingAverage=0,this.variance=0,this.deviation=0,this.forecast=0}alpha(e,t){return 1-Math.exp(-(e-t)/this.timespan)}push(e,t=Date.now()){if(this.previousTime!=null){let n=this.alpha(t,this.previousTime),s=e-this.movingAverage,i=n*s;this.movingAverage=n*e+(1-n)*this.movingAverage,this.variance=(1-n)*(this.variance+s*i),this.deviation=Math.sqrt(this.variance),this.forecast=this.movingAverage+n*s}else this.movingAverage=e;this.previousTime=t}};var M7=1.2,F7=2,H7=2e3,Es=class{success;failure;next;metric;timeoutMultiplier;failureMultiplier;minTimeout;constructor(e={}){this.success=new tn(e.interval??5e3),this.failure=new tn(e.interval??5e3),this.next=new tn(e.interval??5e3),this.failureMultiplier=e.failureMultiplier??F7,this.timeoutMultiplier=e.timeoutMultiplier??M7,this.minTimeout=e.minTimeout??H7,e.metricName!=null&&(this.metric=e.metrics?.registerMetricGroup(e.metricName))}getTimeoutSignal(e={}){let t=Math.max(Math.round(this.next.movingAverage*(e.timeoutFactor??this.timeoutMultiplier)),this.minTimeout),n=AbortSignal.timeout(t),s=Jt([e.signal,n]);return xe(1/0,s,n),s.start=Date.now(),s.timeout=t,s}cleanUp(e){let t=Date.now()-e.start;e.aborted?(this.failure.push(t),this.next.push(t*this.failureMultiplier),this.metric?.update({failureMovingAverage:this.failure.movingAverage,failureDeviation:this.failure.deviation,failureForecast:this.failure.forecast,failureVariance:this.failure.variance,failure:t})):(this.success.push(t),this.next.push(t),this.metric?.update({successMovingAverage:this.success.movingAverage,successDeviation:this.success.deviation,successForecast:this.success.forecast,successVariance:this.success.variance,success:t}))}};var As=class extends Error{type;code;constructor(e,t,n){super(e??"The operation was aborted"),this.type="aborted",this.name=n??"AbortError",this.code=t??"ABORT_ERR"}};async function rn(r,e,t){if(e==null)return r;if(e.aborted)return Promise.reject(new As(t?.errorMessage,t?.errorCode,t?.errorName));let n,s=new As(t?.errorMessage,t?.errorCode,t?.errorName);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 o2=class{readNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.readNext=ce(),this.haveNext=ce()}[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=ce(),e}async throw(e){return this.ended=!0,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return 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");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=ce(),await rn(this.readNext.promise,t?.signal,t)}};function V4(){return new o2}var Is=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};var a2=class extends Error{code;constructor(e,t){super(e),this.code=t}},c2=class extends a2{type;constructor(e){super(e,"ABORT_ERR"),this.type="aborted",this.name="AbortError"}};function M4(r,e){let t=V4();r.sink(t).catch(async o=>{await t.end(o)}),r.sink=async o=>{for await(let a of o)await t.push(a);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 Fe;return{read:async(o,a)=>{a?.signal?.throwIfAborted();let c,l=new Promise((f,u)=>{c=()=>{u(new c2("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(o==null){let{done:u,value:h}=await Promise.race([n.next(),l]);return u===!0?new Fe:h}for(;s.byteLength<o;){let{value:u,done:h}=await Promise.race([n.next(),l]);if(h===!0)throw new Is("unexpected end of input");s.append(u)}let f=s.sublist(0,o);return s.consume(o),f}finally{c!=null&&a?.signal?.removeEventListener("abort",c)}},write:async(o,a)=>{a?.signal?.throwIfAborted(),o instanceof Uint8Array?await t.push(o,a):await t.push(o.subarray(),a)},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 Bs=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},Ss=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},Rs=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function F4(r,e={}){let t=M4(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=le(e.maxDataLength));let n=e?.lengthDecoder??Oe,s=e?.lengthEncoder??He;return{read:async o=>{let a=-1,c=new Fe;for(;;){c.append(await t.read(1,o));try{a=n(c)}catch(l){if(l instanceof RangeError)continue;throw l}if(a<0)throw new Bs("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new Rs("message length length too long");if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new Ss("message length too long");return t.read(a,o)},write:async(o,a)=>{await t.write(new Fe(s(o.byteLength),o),a)},writeV:async(o,a)=>{let c=new Fe(...o.flatMap(l=>[s(l.byteLength),l]));await t.write(c,a)},unwrap:()=>t.unwrap()}}function On(r,e){let t=F4(r,e),n={read:async(s,i)=>{let o=await t.read(i);return s.decode(o)},write:async(s,i,o)=>{await t.write(i.encode(s),o)},writeV:async(s,i,o)=>{await t.writeV(s.map(a=>i.encode(a)),o)},pb:s=>({read:async i=>n.read(s,i),write:async(i,o)=>n.write(i,s,o),writeV:async(i,o)=>n.writeV(i,s,o),unwrap:()=>n}),unwrap:()=>t.unwrap()};return n}var ks=class extends Ne{log;protocol;running;components;timeout;constructor(e,t){super();let{protocol:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:network`),this.running=!1,this.protocol=n,this.timeout=new Es({...t.timeout??{},metrics:e.metrics,metricName:`${t.logPrefix.replaceAll(":","_")}_network_message_send_times_milliseconds`})}async start(){this.running||(this.running=!0)}async stop(){this.running=!1}isStarted(){return this.running}async*sendRequest(e,t,n={}){if(!this.running)return;let s=t.type;if(s==null)throw new gn("Message type was missing","ERR_INVALID_PARAMETERS");this.log("sending %s to %p",t.type,e),yield Qi({peer:e},n),yield Wi({to:e,type:s},n);let i,o=this.timeout.getTimeoutSignal(n);n={...n,signal:o};try{i=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n);let c=await this._writeReadMessage(i,t,n);i.close(n).catch(l=>{this.log.error("error closing stream to %p",e,l),i?.abort(l)}),yield bn({from:e,messageType:c.type,closer:c.closer.map(Un),providers:c.providers.map(Un),record:c.record==null?void 0:pe.deserialize(c.record)},n)}catch(a){i?.abort(a),this.log.error("could not send %s to %p",t.type,e,a),yield Me({from:e,error:a},n)}finally{this.timeout.cleanUp(o)}}async*sendMessage(e,t,n={}){if(!this.running)return;let s=t.type;if(s==null)throw new gn("Message type was missing","ERR_INVALID_PARAMETERS");this.log("sending %s to %p",t.type,e),yield Qi({peer:e},n),yield Wi({to:e,type:s},n);let i,o=this.timeout.getTimeoutSignal(n);n={...n,signal:o};try{i=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n),await this._writeMessage(i,t,n),i.close(n).catch(c=>{this.log.error("error closing stream to %p",e,c),i?.abort(c)}),yield bn({from:e,messageType:s},n)}catch(a){i?.abort(a),yield Me({from:e,error:a},n)}finally{this.timeout.cleanUp(o)}}async _writeMessage(e,t,n){let s=On(e);await s.write(t,Ke,n),await s.unwrap().close(n)}async _writeReadMessage(e,t,n){let s=On(e);await s.write(t,Ke,n);let i=await s.read(Ke,n);return await s.unwrap().close(n),i.closer.forEach(o=>{this.safeDispatchEvent("peer",{detail:Un(o)})}),i.providers.forEach(o=>{this.safeDispatchEvent("peer",{detail:Un(o)})}),i}};function nt(r,e){if(r.length!==e.length)throw new Error("Inputs should have the same length");let t=be(r.length);for(let n=0;n<r.length;n++)t[n]=r[n]^e[n];return t}function nn(r,e){if(r.byteLength!==e.byteLength)throw new Error("Inputs should have the same length");for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return r[t]<e[t]?-1:1;return 0}var sn=class{originDhtKey;capacity;peerDistances;constructor(e,t){this.originDhtKey=e,this.capacity=t,this.peerDistances=[]}get length(){return this.peerDistances.length}get peers(){return this.peerDistances.map(e=>e.peer)}async add(e){let t=await qe(e.id);this.addWitKadId(e,t)}addWitKadId(e,t){if(this.peerDistances.find(s=>s.peer.id.equals(e.id))!=null)return;let n={peer:e,distance:nt(this.originDhtKey,t)};this.peerDistances.push(n),this.peerDistances.sort((s,i)=>nn(s.distance,i.distance)),this.peerDistances=this.peerDistances.slice(0,this.capacity)}async isCloser(e){if(this.length===0)return!0;let t=await qe(e),n=nt(t,this.originDhtKey),s=this.peerDistances[this.peerDistances.length-1].distance;return nn(n,s)===-1}async anyCloser(e){return e.length===0?!1:Promise.any(e.map(async t=>this.isCloser(t)))}};var Ts=class{log;routingTable;network;validators;queryManager;peerStore;peerId;constructor(e,t){let{routingTable:n,network:s,validators:i,queryManager:o,logPrefix:a}=t;this.routingTable=n,this.network=s,this.validators=i,this.queryManager=o,this.peerStore=e.peerStore,this.peerId=e.peerId,this.log=e.logger.forComponent(`${a}:peer-routing`)}async findPeerLocal(e){let t,n=await this.routingTable.find(e);if(n!=null){this.log("findPeerLocal found %p in routing table",e);try{t=await this.peerStore.get(n)}catch(s){if(s.code!=="ERR_NOT_FOUND")throw s}}if(t==null)try{t=await this.peerStore.get(e)}catch(s){if(s.code!=="ERR_NOT_FOUND")throw s}if(t!=null)return this.log("findPeerLocal found %p in peer store",e),{id:t.id,multiaddrs:t.addresses.map(s=>s.multiaddr)}}async*_getValueSingle(e,t,n={}){let s={type:V.GET_VALUE,key:t};yield*this.network.sendRequest(e,s,n)}async*getPublicKeyFromNode(e,t={}){let n=T0(e);for await(let s of this._getValueSingle(e,n,t))if(yield s,s.name==="PEER_RESPONSE"&&s.record!=null){let i=await E0(bs.marshalPublicKey({bytes:s.record.value}));if(!i.equals(e))throw new E("public key does not match id","ERR_PUBLIC_KEY_DOES_NOT_MATCH_ID");if(i.publicKey==null)throw new E("public key missing","ERR_PUBLIC_KEY_MISSING");yield wn({from:e,value:i.publicKey},t)}throw new E(`Node not responding with its public key: ${e.toString()}`,"ERR_INVALID_RECORD")}async*findPeer(e,t={}){if(this.log("findPeer %p",e),t.useCache!==!1){let s=await this.findPeerLocal(e);if(s!=null){this.log("found local"),yield o1({from:this.peerId,peer:s},t);return}}let n=!1;if(t.useNetwork!==!1){let s=this,i=async function*({peer:o,signal:a}){let c={type:V.FIND_NODE,key:e.toBytes()};for await(let l of s.network.sendRequest(o,c,{...t,signal:a}))if(yield l,l.name==="PEER_RESPONSE"){let f=l.closer.find(u=>u.id.equals(e));f!=null&&(yield o1({from:l.from,peer:f},t))}};for await(let o of this.queryManager.run(e.toBytes(),i,t))o.name==="FINAL_PEER"&&(n=!0),yield o}n||(yield Me({from:this.peerId,error:new E("Not found","ERR_NOT_FOUND")},t))}async*getClosestPeers(e,t={}){this.log("getClosestPeers to %b",e);let n=await Ot(e),s=this.routingTable.closestPeers(n),i=this,o=new sn(n,this.routingTable.kBucketSize);await Promise.all(s.map(async c=>{await o.add({id:c,multiaddrs:[]})}));let a=async function*({peer:c,signal:l}){i.log("closerPeersSingle %s from %p",L(e,"base32"),c);let f={type:V.FIND_NODE,key:e};yield*i.network.sendRequest(c,f,{...t,signal:l})};for await(let c of this.queryManager.run(e,a,t))c.name==="PEER_RESPONSE"&&await Promise.all(c.closer.map(async l=>{await o.add(l)})),yield c;this.log("found %d peers close to %b",o.length,e);for(let c of o.peers)yield o1({from:this.peerId,peer:c},t)}async*getValueOrPeers(e,t,n={}){for await(let s of this._getValueSingle(e,t,n)){if(s.name==="PEER_RESPONSE"&&s.record!=null)try{await this._verifyRecordOnline(s.record)}catch{let o="invalid record received, discarded";this.log(o),yield Me({from:s.from,error:new E(o,"ERR_INVALID_RECORD")},n);continue}yield s}}async _verifyRecordOnline(e){if(e.timeReceived==null)throw new E("invalid record received","ERR_INVALID_RECORD");await Nr(this.validators,new pe(e.key,e.value,e.timeReceived))}async getCloserPeersOffline(e,t){let n=await Ot(e),s=this.routingTable.closestPeers(n),i=[];for(let o of s)if(!o.equals(t))try{let a=await this.peerStore.get(o);i.push({id:o,multiaddrs:a.addresses.map(({multiaddr:c})=>c)})}catch(a){if(a.code!=="ERR_NOT_FOUND")throw a}return i.length>0?this.log("getCloserPeersOffline found %d peer(s) closer to %b than %p",i.length,e,t):this.log("getCloserPeersOffline could not find peer closer to %b than %p with %d peers in the routing table",e,t,this.routingTable.size),i}};var j4=Zn(K4(),1);var u2=Zn($4(),1);var on=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},f2=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},z4=r=>globalThis.DOMException===void 0?new f2(r):new DOMException(r),G4=r=>{let e=r.reason===void 0?z4("This operation was aborted."):r.reason;return e instanceof Error?e:z4(e)};function Mn(r,e){let{milliseconds:t,fallback:n,message:s,customTimers:i={setTimeout,clearTimeout}}=e,o,c=new Promise((l,f)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(e.signal){let{signal:h}=e;h.aborted&&f(G4(h)),h.addEventListener("abort",()=>{f(G4(h))})}if(t===Number.POSITIVE_INFINITY){r.then(l,f);return}let u=new on;o=i.setTimeout.call(void 0,()=>{if(n){try{l(n())}catch(h){f(h)}return}typeof r.cancel=="function"&&r.cancel(),s===!1?l():s instanceof Error?f(s):(u.message=s??`Promise timed out after ${t} milliseconds`,f(u))},t),(async()=>{try{l(await r)}catch(h){f(h)}})()}).finally(()=>{c.clear()});return c.clear=()=>{i.clearTimeout.call(void 0,o),o=void 0},c}function h2(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 Fn=class{#e=[];enqueue(e,t){t={priority:0,...t};let n={priority:t.priority,run:e};if(this.size&&this.#e[this.size-1].priority>=t.priority){this.#e.push(n);return}let s=h2(this.#e,n,(i,o)=>o.priority-i.priority);this.#e.splice(s,0,n)}dequeue(){return this.#e.shift()?.run}filter(e){return this.#e.filter(t=>t.priority===e.priority).map(t=>t.run)}get size(){return this.#e.length}};var Hn=class extends u2.default{#e;#r;#i=0;#a;#c;#p=0;#n;#l;#t;#g;#s=0;#u;#o;#m;timeout;constructor(e){if(super(),e={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:Fn,...e},!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${e.intervalCap?.toString()??""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${e.interval?.toString()??""}\` (${typeof e.interval})`);this.#e=e.carryoverConcurrencyCount,this.#r=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#a=e.intervalCap,this.#c=e.interval,this.#t=new e.queueClass,this.#g=e.queueClass,this.concurrency=e.concurrency,this.timeout=e.timeout,this.#m=e.throwOnTimeout===!0,this.#o=e.autoStart===!1}get#w(){return this.#r||this.#i<this.#a}get#v(){return this.#s<this.#u}#x(){this.#s--,this.#f(),this.emit("next")}#E(){this.#b(),this.#y(),this.#l=void 0}get#A(){let e=Date.now();if(this.#n===void 0){let t=this.#p-e;if(t<0)this.#i=this.#e?this.#s:0;else return this.#l===void 0&&(this.#l=setTimeout(()=>{this.#E()},t)),!0}return!1}#f(){if(this.#t.size===0)return this.#n&&clearInterval(this.#n),this.#n=void 0,this.emit("empty"),this.#s===0&&this.emit("idle"),!1;if(!this.#o){let e=!this.#A;if(this.#w&&this.#v){let t=this.#t.dequeue();return t?(this.emit("active"),t(),e&&this.#y(),!0):!1}}return!1}#y(){this.#r||this.#n!==void 0||(this.#n=setInterval(()=>{this.#b()},this.#c),this.#p=Date.now()+this.#c)}#b(){this.#i===0&&this.#s===0&&this.#n&&(clearInterval(this.#n),this.#n=void 0),this.#i=this.#e?this.#s:0,this.#h()}#h(){for(;this.#f(););}get concurrency(){return this.#u}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this.#u=e,this.#h()}async#I(e){return new Promise((t,n)=>{e.addEventListener("abort",()=>{n(e.reason)},{once:!0})})}async add(e,t={}){return t={timeout:this.timeout,throwOnTimeout:this.#m,...t},new Promise((n,s)=>{this.#t.enqueue(async()=>{this.#s++,this.#i++;try{t.signal?.throwIfAborted();let i=e({signal:t.signal});t.timeout&&(i=Mn(Promise.resolve(i),{milliseconds:t.timeout})),t.signal&&(i=Promise.race([i,this.#I(t.signal)]));let o=await i;n(o),this.emit("completed",o)}catch(i){if(i instanceof on&&!t.throwOnTimeout){n();return}s(i),this.emit("error",i)}finally{this.#x()}},t),this.emit("add"),this.#f()})}async addAll(e,t){return Promise.all(e.map(async n=>this.add(n,t)))}start(){return this.#o?(this.#o=!1,this.#h(),this):this}pause(){this.#o=!0}clear(){this.#t=new this.#g}async onEmpty(){this.#t.size!==0&&await this.#d("empty")}async onSizeLessThan(e){this.#t.size<e||await this.#d("next",()=>this.#t.size<e)}async onIdle(){this.#s===0&&this.#t.size===0||await this.#d("idle")}async#d(e,t){return new Promise(n=>{let s=()=>{t&&!t()||(this.off(e,s),n())};this.on(e,s)})}get size(){return this.#t.size}sizeBy(e){return this.#t.filter(e).length}get pending(){return this.#s}get isPaused(){return this.#o}};var Ns=class{log;datastore;cache;cleanupInterval;provideValidity;syncQueue;started;cleaner;constructor(e,t={}){let{cacheSize:n,cleanupInterval:s,provideValidity:i}=t;this.log=e.logger.forComponent("libp2p:kad-dht:providers"),this.datastore=e.datastore,this.cleanupInterval=s??36e5,this.provideValidity=i??864e5,this.cache=(0,j4.default)(n??256),this.syncQueue=new Hn({concurrency:1}),this.started=!1}isStarted(){return this.started}async start(){this.started||(this.started=!0,this.cleaner=setInterval(()=>{this._cleanup().catch(e=>{this.log.error(e)})},this.cleanupInterval))}async stop(){this.started=!1,this.cleaner!=null&&(clearInterval(this.cleaner),this.cleaner=void 0)}async _cleanup(){await this.syncQueue.add(async()=>{let e=Date.now(),t=0,n=0,s=new Map,i=this.datastore.batch(),o=this.datastore.query({prefix:ai});for await(let a of o)try{let{cid:c,peerId:l}=Y4(a.key),f=W4(a.value).getTime(),u=Date.now(),h=u-f,m=h>this.provideValidity;if(this.log("comparing: %d - %d = %d > %d %s",u,f,h,this.provideValidity,m?"(expired)":""),m){n++,i.delete(a.key);let g=s.get(c)??new Set;g.add(l),s.set(c,g)}t++}catch(c){this.log.error(c.message)}s.size>0?(this.log("deleting %d / %d entries",n,t),await i.commit()):this.log("nothing to delete");for(let[a,c]of s){let l=Kn(a),f=this.cache.get(l);if(f!=null){for(let u of c)f.delete(u);f.size===0?this.cache.remove(l):this.cache.set(l,f)}}this.log("Cleanup successful (%dms)",Date.now()-e)})}async _getProvidersMap(e){let t=Kn(e),n=this.cache.get(t);return n==null&&(n=await Y7(this.datastore,e),this.cache.set(t,n)),n}async addProvider(e,t){await this.syncQueue.add(async()=>{this.log("%p provides %s",t,e);let n=await this._getProvidersMap(e);this.log("loaded %s provs",n.size);let s=new Date;n.set(t.toString(),s);let i=Kn(e);this.cache.set(i,n),await j7(this.datastore,e,t,s)})}async getProviders(e){return this.syncQueue.add(async()=>(this.log("get providers for %s",e),[...(await this._getProvidersMap(e)).keys()].map(n=>ir(n))),{throwOnTimeout:!0})}};function Kn(r){let e=typeof r=="string"?r:L(r.multihash.bytes,"base32");return`${ai}/${e}`}async function j7(r,e,t,n){let s=[Kn(e),"/",t.toString()].join(""),i=new Ur(s),o=He(n.getTime());await r.put(i,o)}function Y4(r){let e=r.toString().split("/");if(e.length!==5)throw new Error(`incorrectly formatted provider entry key in datastore: ${r.toString()}`);return{cid:e[3],peerId:e[4]}}async function Y7(r,e){let t=new Map,n=r.query({prefix:Kn(e)});for await(let s of n){let{peerId:i}=Y4(s.key);t.set(i,W4(s.value))}return t}function W4(r){return new Date(Oe(r))}var d2=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 Ls(r,e,t,n){let s=new d2(n?.errorMessage,n?.errorCode);return t?.aborted===!0?Promise.reject(s):new Promise((i,o)=>{function a(){t?.removeEventListener("abort",f),r.removeEventListener(e,c),n?.errorEvent!=null&&r.removeEventListener(n.errorEvent,l)}let c=u=>{try{if(n?.filter?.(u)===!1)return}catch(h){a(),o(h);return}a(),i(u)},l=u=>{a(),o(u.detail)},f=()=>{a(),o(s)};t?.addEventListener("abort",f),r.addEventListener(e,c),n?.errorEvent!=null&&r.addEventListener(n.errorEvent,l)})}var Ps=class{deferred;signal;constructor(e){this.signal=e,this.deferred=ce(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new Lt)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function W7(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var Cs=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=W7(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,xe(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 Lt),this.cleanup())}async join(e={}){let t=new Ps(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 rn(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};var an=class extends Ne{concurrency;queue;pending;sort;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.sort=e.sort,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){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}async add(e,t){t?.signal?.throwIfAborted();let n=new Cs(e,t);return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),n.join(t).then(s=>(this.safeDispatchEvent("completed",{detail:s}),this.safeDispatchEvent("success",{detail:{job:n,result:s}}),s)).catch(s=>{if(n.status==="queued"){for(let i=0;i<this.queue.length;i++)if(this.queue[i]===n){this.queue.splice(i,1);break}}throw this.safeDispatchEvent("error",{detail:s}),this.safeDispatchEvent("failure",{detail:{job:n,error:s}}),s})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new Lt)}),this.clear()}async onEmpty(e){this.size!==0&&await Ls(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await Ls(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await Ls(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=kr({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},s=c=>{c.detail!=null&&t.push(c.detail)},i=c=>{n(c.detail)},o=()=>{n()},a=()=>{n(new E("Queue aborted","ERR_QUEUE_ABORTED"))};this.addEventListener("completed",s),this.addEventListener("error",i),this.addEventListener("idle",o),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",s),this.removeEventListener("error",i),this.removeEventListener("idle",o),e?.signal?.removeEventListener("abort",a),n()}}};async function*Z4(r){let{key:e,startingPeer:t,ourPeerId:n,signal:s,query:i,alpha:o,pathIndex:a,numPaths:c,queryFuncTimeout:l,log:f,peersSeen:u,connectionManager:h}=r,m=new an({concurrency:o,sort:(p,x)=>nn(p.options.distance,x.options.distance)}),g=await Ot(e);function d(p,x){if(p==null)return;u.add(p);let b=nt(x,g);m.add(async()=>{let w=[s];l!=null&&w.push(AbortSignal.timeout(l));let S=Jt(w);xe(1/0,S);try{for await(let B of i({key:e,peer:p,signal:S,pathIndex:a,numPaths:c})){if(S.aborted)return;if(B.name==="PEER_RESPONSE")for(let I of B.closer){if(u.has(I.id)){f("already seen %p in query",I.id);continue}if(n.equals(I.id)){f("not querying ourselves");continue}if(!await h.isDialable(I.multiaddrs)){f("not querying undialable peer");continue}let N=await qe(I.id),T=nt(N,g);if(nn(T,b)!==-1){f("skipping %p as they are not closer to %b than %p",I.id,e,p);continue}f("querying closer peer %p",I.id),d(I.id,N)}m.safeDispatchEvent("completed",{detail:B})}}catch(B){if(!s.aborted)return Me({from:p,error:B},r)}finally{S.clear()}},{distance:b}).catch(w=>{f.error(w)})}d(t,await qe(t));try{for await(let p of m.toGenerator({signal:s}))p!=null&&(yield p)}catch(p){throw s.aborted?new E("Query aborted","ERR_QUERY_ABORTED"):p}}var Ds=class{disjointPaths;alpha;shutDownController;running;queries;logger;peerId;connectionManager;routingTable;initialQuerySelfHasRun;logPrefix;metrics;constructor(e,t){let{disjointPaths:n=20,alpha:s=3,logPrefix:i}=t;this.logPrefix=i,this.disjointPaths=n??20,this.running=!1,this.alpha=s??3,this.queries=0,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun,this.routingTable=t.routingTable,this.logger=e.logger,this.peerId=e.peerId,this.connectionManager=e.connectionManager,e.metrics!=null&&(this.metrics={runningQueries:e.metrics.registerMetric(`${i.replaceAll(":","_")}_running_queries`),queryTime:e.metrics.registerMetric(`${i.replaceAll(":","_")}_query_time_seconds`)}),this.shutDownController=new AbortController,xe(1/0,this.shutDownController.signal)}isStarted(){return this.running}async start(){this.running=!0,this.shutDownController=new AbortController,xe(1/0,this.shutDownController.signal)}async stop(){this.running=!1,this.shutDownController.abort()}async*run(e,t,n={}){if(!this.running)throw new Error("QueryManager not started");let s=this.metrics?.queryTime.timer();if(n.signal==null){let f=AbortSignal.timeout(18e4);xe(1/0,f),n={...n,signal:f}}let i=new AbortController,o=Jt([this.shutDownController.signal,i.signal,n.signal]);xe(1/0,o,i.signal);let a=this.logger.forComponent(`${this.logPrefix}:query:`+L(e,"base58btc")),c=Date.now(),l=!1;try{n.isSelfQuery!==!0&&this.initialQuerySelfHasRun!=null&&(a("waiting for initial query-self query before continuing"),await rn(this.initialQuerySelfHasRun.promise,o),this.initialQuerySelfHasRun=void 0),a("query:start"),this.queries++,this.metrics?.runningQueries.update(this.queries);let f=await Ot(e),u=this.routingTable.closestPeers(f),h=u.slice(0,Math.min(this.disjointPaths,u.length));if(u.length===0){a.error("Running query with no peers");return}let m=new ct,g=h.map((d,p)=>Z4({key:e,startingPeer:d,ourPeerId:this.peerId,signal:o,query:t,pathIndex:p,numPaths:h.length,alpha:this.alpha,queryFuncTimeout:n.queryFuncTimeout,log:a,peersSeen:m,onProgress:n.onProgress,connectionManager:this.connectionManager}));for await(let d of s1(...g)){if(d.name==="QUERY_ERROR"&&a.error("query error",d.error),d.name==="PEER_RESPONSE")for(let p of[...d.closer,...d.providers])await this.connectionManager.isDialable(p.multiaddrs)&&await this.routingTable.add(p.id);yield d}l=!0}catch(f){if(!(!this.running&&f.code==="ERR_QUERY_ABORTED"))throw f}finally{l||(a("query exited early"),i.abort()),o.clear(),this.queries--,this.metrics?.runningQueries.update(this.queries),s?.(),a("query:done in %dms",Date.now()-c)}}};function Z7(r){return r[Symbol.asyncIterator]!=null}function Q7(r){if(Z7(r))return(async()=>{let e=0;for await(let t of r)e++;return e})();{let e=0;for(let t of r)e++;return e}}var Us=Q7;function X7(r){return r[Symbol.asyncIterator]!=null}function J7(r,e){return X7(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 X4=J7;var ec=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function tc(r,e,t){let n,s=new Promise((i,o)=>{if(t={rejectionEvents:["error"],multiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:f}=ec(r),u=(...m)=>{let g=t.multiArgs?m:m[0];t.filter&&!t.filter(g)||(c.push(g),t.count===c.length&&(n(),i(c)))},h=m=>{n(),o(m)};n=()=>{for(let m of a)f(m,u);for(let m of t.rejectionEvents)f(m,h)};for(let m of a)l(m,u);for(let m of t.rejectionEvents)l(m,h);t.signal&&t.signal.addEventListener("abort",()=>{h(t.signal.reason)},{once:!0}),t.resolveImmediately&&i(c)});if(s.cancel=n,typeof t.timeout=="number"){let i=Mn(s,{milliseconds:t.timeout});return i.cancel=n,i}return s}function J4(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=tc(r,e,t),s=n.then(i=>i[0]);return s.cancel=n.cancel,s}var Os=class{log;peerId;peerRouting;routingTable;count;interval;initialInterval;queryTimeout;started;timeoutId;controller;initialQuerySelfHasRun;querySelfPromise;constructor(e,t){let{peerRouting:n,logPrefix:s,count:i,interval:o,queryTimeout:a,routingTable:c}=t;this.peerId=e.peerId,this.log=e.logger.forComponent(`${s}:query-self`),this.started=!1,this.peerRouting=n,this.routingTable=c,this.count=i??20,this.interval=o??3e5,this.initialInterval=t.initialInterval??1e3,this.queryTimeout=a??5e3,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun}isStarted(){return this.started}start(){this.started||(this.started=!0,clearTimeout(this.timeoutId),this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.initialInterval))}stop(){this.started=!1,this.timeoutId!=null&&clearTimeout(this.timeoutId),this.controller!=null&&this.controller.abort()}async querySelf(){if(!this.started){this.log("skip self-query because we are not started");return}if(this.querySelfPromise!=null)return this.log("joining existing self query"),this.querySelfPromise.promise;if(this.querySelfPromise=ce(),this.started){this.controller=new AbortController;let e=AbortSignal.timeout(this.queryTimeout),t=Jt([this.controller.signal,e]);xe(1/0,t,this.controller.signal,e);try{this.routingTable.size===0&&(this.log("routing table was empty, waiting for some peers before running query"),await J4(this.routingTable,"peer:add",{signal:t})),this.log("run self-query, look for %d peers timing out after %dms",this.count,this.queryTimeout);let n=Date.now(),s=await Ut(this.peerRouting.getClosestPeers(this.peerId.toBytes(),{signal:t,isSelfQuery:!0}),i=>X4(i,this.count),async i=>Us(i));this.log("self-query found %d peers in %dms",s,Date.now()-n)}catch(n){this.log.error("self-query error",n)}finally{t.clear(),this.initialQuerySelfHasRun!=null&&(this.initialQuerySelfHasRun.resolve(),this.initialQuerySelfHasRun=void 0)}}this.querySelfPromise.resolve(),this.querySelfPromise=void 0,this.started&&(this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.interval))}};var Vs=class extends an{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};function rc(r,e){if(r===e)return!0;if(r.length!==e.length)return!1;for(let t=0,n=r.length;t<n;++t)if(r[t]!==e[t])return!1;return!0}function ea(r,e){if(!(e instanceof Uint8Array))throw new TypeError(r+" is not a Uint8Array");if(e.byteLength!==32)throw new TypeError(r+" had incorrect length")}function qn(r){return Array.isArray(r?.peers)}var Ms=class extends Ne{root;localPeer;prefixLength;splitThreshold;kBucketSize;numberOfNodesToPing;constructor(e){super(),this.localPeer=e.localPeer,this.prefixLength=e.prefixLength,this.kBucketSize=e.kBucketSize??$n,this.splitThreshold=e.splitThreshold??this.kBucketSize,this.numberOfNodesToPing=e.numberOfNodesToPing??3,ea("options.localPeer.kadId",e.localPeer.kadId),this.root={prefix:"",depth:0,peers:[]}}add(e){ea("peer.kadId",e?.kadId);let t=this._determineBucket(e.kadId);if(!(this._indexOf(t,e.kadId)>-1)){if(t.peers.length===this.splitThreshold&&t.depth<this.prefixLength){this._split(t),this.add(e);return}if(t.peers.length<this.kBucketSize){t.peers.push(e),this.safeDispatchEvent("added",{detail:e});return}this.safeDispatchEvent("ping",{detail:{oldContacts:t.peers.slice(0,this.numberOfNodesToPing),newContact:e}})}}*closest(e,t=this.kBucketSize){let n=new sn(e,t);for(let s of this.toIterable())n.addWitKadId({id:s.peerId,multiaddrs:[]},s.kadId);yield*Sr(n.peers,s=>s.id)}count(){function e(t){if(qn(t))return t.peers.length;let n=0;return t.left!=null&&(n+=e(t.left)),t.right!=null&&(n+=e(t.right)),n}return e(this.root)}get(e){let t=this._determineBucket(e),n=this._indexOf(t,e);return t.peers[n]}remove(e){let t=this._determineBucket(e),n=this._indexOf(t,e);if(n>-1){let s=t.peers.splice(n,1)[0];this.safeDispatchEvent("removed",{detail:s})}}*toIterable(){function*e(t){if(qn(t)){yield*t.peers;return}yield*e(t.left),yield*e(t.right)}yield*e(this.root)}distance(e,t){return BigInt("0x"+L(nt(e,t),"base16"))}_determineBucket(e){let n=L(e,"base2").substring(0,this.prefixLength);function s(i,o=0){return qn(i)?i:n[o]==="0"?s(i.left,o+1):s(i.right,o+1)}return s(this.root)}_indexOf(e,t){return e.peers.findIndex(n=>rc(n.kadId,t))}_split(e){let t=e.depth+1,n={prefix:"0",depth:t,peers:[]},s={prefix:"1",depth:t,peers:[]};for(let i of e.peers)L(i.kadId,"base2")[t]==="0"?n.peers.push(i):s.peers.push(i);delete e.peers,e.left=n,e.right=s}};var nc="kad-close",sc=50,$n=20,ic=32,oc=1e4,ac=10,Fs=class extends Ne{kBucketSize;kb;pingQueue;log;components;prefixLength;splitThreshold;pingTimeout;pingConcurrency;running;protocol;tagName;tagValue;metrics;constructor(e,t){super(),this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:routing-table`),this.kBucketSize=t.kBucketSize??$n,this.pingTimeout=t.pingTimeout??oc,this.pingConcurrency=t.pingConcurrency??ac,this.running=!1,this.protocol=t.protocol,this.tagName=t.tagName??nc,this.tagValue=t.tagValue??sc,this.prefixLength=t.prefixLength??ic,this.splitThreshold=t.splitThreshold??$n,this.pingQueue=new Vs({concurrency:this.pingConcurrency,metricName:`${t.logPrefix.replaceAll(":","_")}_ping_queue`,metrics:this.components.metrics}),this.pingQueue.addEventListener("error",n=>{this.log.error("error pinging peer",n.detail)}),this.components.metrics!=null&&(this.metrics={routingTableSize:this.components.metrics.registerMetric(`${t.logPrefix.replaceAll(":","_")}_routing_table_size`),routingTableKadBucketTotal:this.components.metrics.registerMetric(`${t.logPrefix.replaceAll(":","_")}_routing_table_kad_bucket_total`),routingTableKadBucketAverageOccupancy:this.components.metrics.registerMetric(`${t.logPrefix.replaceAll(":","_")}_routing_table_kad_bucket_average_occupancy`),routingTableKadBucketMaxDepth:this.components.metrics.registerMetric(`${t.logPrefix.replaceAll(":","_")}_routing_table_kad_bucket_max_depth`)})}isStarted(){return this.running}async start(){this.running=!0;let e=new Ms({localPeer:{kadId:await qe(this.components.peerId),peerId:this.components.peerId},kBucketSize:this.kBucketSize,prefixLength:this.prefixLength,splitThreshold:this.splitThreshold,numberOfNodesToPing:1});this.kb=e,e.addEventListener("ping",n=>{this._onPing(n).catch(s=>{this.log.error("could not process k-bucket ping event",s)})});let t=0;for(let n of await this.components.peerStore.all())if(n.protocols.includes(this.protocol)){let s=await qe(n.id);this.kb.add({kadId:s,peerId:n.id}),t++}this.log("added %d peer store peers to the routing table",t),this._tagPeers(e)}async stop(){this.running=!1,this.pingQueue.clear(),this.kb=void 0}_tagPeers(e){let t=new ct,n=L0(()=>{let s=new ct(e.closest(e.localPeer.kadId,$n)),i=s.difference(t),o=t.difference(s);Promise.resolve().then(async()=>{for(let a of i)await this.components.peerStore.merge(a,{tags:{[this.tagName]:{value:this.tagValue}}});for(let a of o)await this.components.peerStore.merge(a,{tags:{[this.tagName]:void 0}})}).catch(a=>{this.log.error("Could not update peer tags",a)}),t=s});e.addEventListener("added",s=>{n(),this.safeDispatchEvent("peer:add",{detail:s.detail.peerId})}),e.addEventListener("removed",s=>{n(),this.safeDispatchEvent("peer:remove",{detail:s.detail.peerId})})}async _onPing(e){if(!this.running)return;let{oldContacts:t,newContact:n}=e.detail,i=(await Promise.all(t.map(async o=>{let a=this.pingQueue.find(o.peerId);return a!=null?a.join():this.pingQueue.add(async()=>{let c;try{let l={signal:AbortSignal.timeout(this.pingTimeout)};this.log("pinging old contact %p",o.peerId),c=await(await this.components.connectionManager.openConnection(o.peerId,l)).newStream(this.protocol,l);let u=On(c);await u.write({type:V.PING},Ke,l);let h=await u.read(Ke,l);if(await u.unwrap().close(),h.type!==V.PING)throw new E(`Incorrect message type received, expected PING got ${h.type}`,"ERR_BAD_PING_RESPONSE");return!0}catch(l){return this.running&&this.kb!=null&&(this.log.error("could not ping peer %p",o.peerId,l),this.log("evicting old contact after ping failed %p",o.peerId),this.kb.remove(o.kadId)),c?.abort(l),!1}finally{this.metrics?.routingTableSize.update(this.size)}},{peerId:o.peerId})}))).filter(o=>o).length;this.running&&i<t.length&&this.kb!=null&&(this.log("adding new contact %p",n.peerId),this.kb.add(n))}get size(){return this.kb==null?0:this.kb.count()}async find(e){let t=await qe(e);return this.kb?.get(t)?.peerId}closestPeer(e){let t=this.closestPeers(e,1);if(t.length>0)return t[0]}closestPeers(e,t=this.kBucketSize){return this.kb==null?[]:[...this.kb.closest(e,t)]}async add(e){if(this.kb==null)throw new Error("RoutingTable is not started");let t=await qe(e);this.kb.add({kadId:t,peerId:e}),this.log("added %p with kad id %b",e,t),this.updateMetrics()}async remove(e){if(this.kb==null)throw new Error("RoutingTable is not started");let t=await qe(e);this.kb.remove(t),this.updateMetrics()}updateMetrics(){if(this.metrics==null||this.kb==null)return;let e=0,t=0,n=0;function s(i){if(qn(i)){i.depth>n&&(n=i.depth),t++,e+=i.peers.length;return}s(i.left),s(i.right)}s(this.kb.root),this.metrics.routingTableSize.update(e),this.metrics.routingTableKadBucketTotal.update(t),this.metrics.routingTableKadBucketAverageOccupancy.update(Math.round(e/t)),this.metrics.routingTableKadBucketMaxDepth.update(n)}};var ta=[77591,22417,43971,28421,740,29829,71467,228973,196661,78537,27689,36431,44415,14362,19456,106025,96308,2882,49509,21149,87173,131409,75844,23676,121838,30291,17492,2953,7564,110620,129477,127283,53113,72417,165166,109690,21200,102125,24049,71504,90342,25307,72039,26812,26715,32264,133800,71161,88956,171987,51779,24425,16671,30251,186294,247761,14202,2121,8465,35024,4876,85917,169730,3638,256836,96184,943,18678,6583,52907,35807,112254,214097,18796,11595,9243,23554,887,268203,382004,24590,111335,11625,16619,29039,102425,69006,97976,92362,32552,63717,41433,128974,137630,59943,10019,13986,35430,33665,108037,43799,43280,38195,29078,58629,18265,14425,46832,235538,40830,77881,110717,58937,3463,325358,51300,47623,117252,19007,10170,20540,91237,294813,4951,79841,56232,36270,128547,69209,66275,100156,32063,73531,34439,80937,28892,44466,88595,216307,32583,49620,16605,82127,45807,21630,78726,20235,40163,111007,96926,5567,72083,21665,58844,39419,179767,48328,42662,51550,5251,37811,49608,81056,50854,55513,20922,18891,197409,164656,32593,71449,220474,58919,85682,67854,13758,35066,3565,61905,214793,119572,141419,21504,10302,27354,67003,46131,32668,15165,64871,34450,17821,2757,11452,34189,5160,12257,85523,560,53385,65887,119549,135620,312353,115979,122356,10867,193231,124537,54783,90675,120791,4715,142253,50943,17271,43358,25331,4917,120566,34580,12878,33786,160528,32523,4869,301307,104817,81491,23276,8832,97911,31265,52065,7998,49622,9715,43998,34091,84587,20664,69041,29419,53205,10838,58288,116145,6185,5154,141795,35924,21307,144738,43730,12085,8279,10002,119,133779,199668,72938,31768,39176,67875,38453,9700,44144,4121,116048,41733,12868,82669,92308,128,34262,11332,7712,90764,36141,13553,71312,77470,117314,96549,49135,23602,54468,28605,6327,62308,17171,67531,21319,14105,894,107722,46157,8503,51069,100472,45138,15246,14577,35609,191464,1757,13364,161349,32067,91705,81144,52339,5408,91066,21983,14157,100545,4372,26630,129112,1423,29676,213626,4397,88436,99190,6877,49958,26122,114348,60661,29818,293118,50042,179738,16400,163423,89627,31040,43973,36638,45952,5153,1894,109322,1898,134021,12402,112077,68309,190269,69866,31938,107383,11522,105232,11248,14868,39852,71707,186525,16530,38162,106212,11700,5130,16608,26998,59586,108399,230033,43683,48135,82179,2073,5015,196684,189293,16378,23452,8301,35640,11632,214551,29240,57644,33137,91949,55157,52384,117313,5090,17717,89668,49363,82238,241035,66216,29066,184088,97206,62820,26595,4241,135635,173672,8202,459,71355,146294,29587,3008,135385,141203,14803,6634,45094,69362,50925,546,51884,62011,83296,234584,44515,56050,89476,87751,19373,12691,149923,19794,13833,35846,87557,58339,2884,19145,25647,12224,11024,77338,64608,122297,53025,7205,36189,36294,170779,21750,7739,173883,75192,35664,224240,113121,30181,26267,27036,117827,92015,106516,55628,203549,67949,60462,60844,35911,20457,1820,920,19773,8738,73173,181993,38521,98254,76257,46008,92796,5384,26868,151566,22124,2411,15919,186872,180021,28099,152961,78811,80237,62352,102653,74259,184890,16792,123702,224945,29940,19512,75283,14059,112691,92811,233329,20411,138569,53341,109802,50600,134528,66747,5529,166531,31578,64732,67189,1596,126357,967,167999,206598,109752,119431,207825,78791,91938,10301,27311,24233,252343,28831,32812,66002,112267,90895,8786,8095,16824,22866,21813,60507,174833,19549,130985,117051,52110,6938,81923,123864,38061,919,18680,53534,46739,112893,161529,85429,26761,11900,81121,91968,15390,217947,56524,1713,6654,37089,85630,138866,61850,16491,75577,16884,98296,73523,6140,44645,6062,36366,29844,57946,37932,42472,5266,20834,19309,33753,127182,134259,35810,41805,45878,312001,14881,47757,49251,120050,44252,3708,25856,107864,120347,1228,36550,41682,34496,47025,8393,173365,246526,12894,161607,35670,90785,126572,2095,124731,157033,58694,554,12786,9642,4817,16136,47864,174698,66992,4639,69284,10625,40710,27763,51738,30404,264105,137904,109882,52487,42824,57514,2740,10479,146799,107390,16586,88038,174951,9410,16185,44158,5568,40658,46108,12763,97385,26175,108859,664,230732,67470,46663,14395,50750,141320,93140,15361,47997,55784,6791,307840,118569,107326,18056,58281,260415,54691,8790,73332,45633,7511,45674,143373,14031,11799,94491,35646,96544,14560,26049,32983,25791,83814,42094,231370,63955,139212,2359,169908,3108,183486,105867,28197,32941,124968,26402,88267,149768,23053,3078,19091,52924,25383,19209,111548,97361,3959,24880,235061,9099,24921,161254,151405,20508,7159,34381,20133,11434,74036,19974,34769,36585,1076,22454,17354,38727,235160,111547,96454,117448,156940,91330,37299,7310,26915,117060,51369,22620,61861,322264,106850,111694,15091,2624,40345,300446,177064,1707,27389,54792,327783,132669,183543,59003,17744,20603,151134,106923,53084,71803,279424,319816,11579,21946,16728,38274,72711,5085,83391,88646,40159,25027,34680,10752,12988,54126,30365,18338,100445,230674,44874,84974,143877,123253,139372,28082,91477,144002,13096,219729,46016,50029,42377,14601,6660,58244,58978,23918,88206,113611,64452,17541,41032,10942,12021,49189,10978,40175,37156,10947,71709,106894,112538,57007,137486,150608,152719,40615,7746,279716,13101,19524,28708,40578,72320,1096,182051,94527,51275,22833,45164,81917,77519,48508,5421,140302,37845,149830,5587,27579,5357,428725,248187,6326,206760,39814,32585,89923,44341,288753,284443,96368,31201,94189,119504,20359,52073,103216,179,27934,32801,96035,34111,34309,101326,18198,20704,210266,37643,27880,141873,106e3,19414,56614,167714,66483,107885,86602,4379,20796,75467,4987,5017,118857,26003,34308,114428,29198,6686,29697,73632,3739,69795,16798,41504,7207,30722,21436,36735,28067,28545,3239,11221,36031,41889,100010,19247,317673,29495,174554,6424,129725,53845,94986,7955,59676,2604,191497,19735,102214,62954,23844,11872,179525,261436,34492,428,78404,142035,16747,17246,27578,37021,33672,57944,26056,135760,2369,61674,122066,31327,19374,157065,40553,130982,69619,71290,38855,72100,92903,95940,51422,165999,65713,57873,50726,7288,20272,2081,42326,22624,81120,57914,79352,19447,1684,72302,11774,302559,161481,96396,13692,414988,3721,79066,56627,46883,21150,11747,12184,5856,113458,176117,84416,52079,27933,3354,59765,141359,2212,216309,2555,23458,196722,142463,45701,44548,28798,19418,215,29916,9396,10574,114226,84475,13520,18694,34056,4524,90302,62930,13539,19407,77209,7728,38088,9535,2263,23875,183945,17750,26274,67172,10585,28042,22199,7478,51331,66030,26774,192929,31434,25850,50197,52926,178158,4679,181256,70184,229600,9959,105594,72158,73974,2726,35085,78087,23284,35568,51713,155676,5401,27254,11966,17569,223253,71993,103357,111477,55722,30504,26034,46774,35392,36285,214814,41143,163465,1051,16094,81044,6636,76489,179102,20712,39178,35683,125177,54219,30617,52994,25324,50123,2543,87529,58995,10688,125199,12388,60158,125481,131646,7642,133350,65874,3438,97277,101450,10075,56344,116821,50778,60547,98016,106135,13859,14255,16300,77373,173521,8285,45932,37426,4054,114295,55947,7703,39114,52,51119,128135,19714,60715,9554,50492,88180,2823,118271,52993,122625,97919,23859,37895,25040,33614,32102,20431,3577,9275,15686,43031,157741,110358,1884,40291,125391,13736,5008,64881,87336,77381,70711,43032,49155,118587,70494,4318,10168,30126,12580,10524,280104,104001,145413,2862,84140,6603,106005,13566,12780,11251,42830,571,179910,82443,13146,469,42714,32591,265217,424024,92553,54721,134100,6007,15242,114681,59030,16718,85465,200214,85982,55174,165013,23493,56964,82529,109150,32706,27568,82442,5350,14976,13165,44890,60021,21343,33978,17264,4655,22328,27819,75730,16567,55483,14510,17926,45827,150609,3704,7385,272531,161543,76904,122163,52405,2039,19165,41623,14423,228354,3369,176360,85491,7122,35789,303724,4465,13628,2233,55311,118771,20713,10006,221519,45115,71021,35650,29775,7337,10864,20665,21142,1746,15080,1624,32449,10905,105743,229797,7701,3940,22997,178467,57208,389057,39683,59403,63344,63125,54847,69691,18336,56448,3362,37202,18282,29648,138224,35867,10495,5911,28814,26653,31514,176702,26550,45621,11734,4525,40543,73944,121080,27858,155561,14887,44670,30742,8796,107455,113472,56369,75581,183777,240095,133699,153299,8768,160464,26058,49078,103971,21875,71486,44888,17156,9678,89541,123019,102337,3972,83930,21245,87852,109660,287918,183019,686,10100,39177,283941,11274,24736,26793,26214,25995,77011,141580,4070,23742,46285,46632,30700,26669,19056,35951,115575,174034,56097,35463,87425,24575,44245,38701,82317,85922,281616,100333,147697,61503,7730,84330,8530,59917,61597,17173,9092,32658,90288,193136,39023,20381,56654,31132,7779,1919,1375,117128,30819,11169,40938,23935,115201,101155,151034,4835,11231,74550,89388,59951,91704,107312,167882,115062,12732,72738,88703,464019,158267,57995,60496,737,14371,123867,4174,243339,159946,7568,16025,134556,110916,38103,191,80226,88794,29688,27230,10454,76308,57647,77409,113483,66864,14745,19808,12023,46583,84805,16015,17102,2231,20611,3547,95740,250131,34559,108894,8498,15853,159169,148920,20942,2813,93160,45188,210613,45531,52587,149062,39782,28194,57849,60965,84954,89766,84453,100927,16501,27658,165311,103841,54192,207341,19558,20084,319622,5672,205467,98462,61849,36279,13609,147177,24726,165015,209489,59591,31157,6551,117580,75060,141146,277310,21072,22023,106474,63041,137443,122965,68371,5383,42146,98961,113467,30863,23794,4843,99630,30392,82679,13699,241612,33601,93146,24319,18643,32155,95669,40440,15333,34089,67799,142144,58245,38633,114531,117400,77861,188726,5507,2568,8853,10987,107222,2663,2421,11530,13345,30075,41785,118661,104786,17459,12490,16281,71936,193555,17431,5944,71758,26485,77317,20803,367167,158,7362,93430,11735,172445,46002,11532,54482,930,62911,2235,23004,179236,4764,101859,208113,22477,55163,95579,14098,67320,162556,90709,156949,3826,57492,4025,34092,87442,104565,6718,186015,28214,14209,10039,107186,233912,58877,81637,55265,39828,6194,145813,50831,105849,4974,88319,122296,10272,197216,95714,51540,72418,23324,91555,8743,140452,250249,51666,34124,7229,38592,129641,78169,174242,22464,149964,51450,14034,10026,95376,26190,120062,14401,8700,265,31386,143573,7203,229889,61567,4227,140981,2466,72052,10787,10062,30958,6099,38471,30103,23202,208101,70847,467,58934,32271,32984,36637,24107,30771,17109,73353,13650,2098,157040,67366,66904,106018,265380,107238,18535,44025,32681,144983,62505,91295,56120,3082,77508,10322,63023,36700,81885,224127,16721,45023,239261,111272,13852,7866,149243,204199,32309,22084,42029,38316,126644,104973,14406,43454,67322,61310,15789,40285,24026,181047,6301,70927,23319,115823,27248,66693,115875,278566,63007,146844,56841,59007,87368,180001,22370,42114,80605,12022,10374,308,25079,14689,12618,63368,7936,264973,212291,136713,95999,105801,18965,32075,48700,52230,35119,96912,32992,8586,16606,101333,101812,14969,39930,759,193090,27387,42914,12937,5058,62646,64528,38624,25743,37502,3716,4435,30352,178687,26461,132611,42002,138442,35833,59582,16345,8048,60319,49349,309,47800,49739,90482,26405,34470,63786,32479,85028,39866,47846,11649,23934,29466,2816,42864,31828,7410,74885,49632,47629,111801,90749,19536,18767,105764,59606,21223,10746,76298,22220,39408,7190,79654,64856,11602,82156,272765,17079,70089,245473,51813,184407,384678,1576,122249,5064,27481,6188,25790,74361,27541,318284,45430,31488,620,93579,45723,192118,22670,51913,4162,70244,35966,26397,16199,50899,209613,121702,287507,2993,36101,132229,67345,33062,76295,118628,78705,52316,34375,107083,107454,44863,127561,33964,3073,154010,190914,55967,39074,6272,31047,5550,41123,26154,98638,47110,19998,148091,50229,31329,59900,195442,19106,61347,73497,70015,682,45850,25776,38022,148951,6288,37411,232526,109277,27286,32342,9262,5220,16651,23175,46740,129438,78614,121925,66914,88710,127952,5563,21500,34521,10739,14863,191006,62956,17359,16749,67027,56284,69134,43301,35039,58883,54466,60823,404451,75743,59856,86979,7923,34273,83785,32142,7693,268986,197428,282681,17049,22346,22990,92245,107180,3357,37104,96724,49153,7683,31197,43267,82231,164276,23696,20848,188364,22309,24821,158707,1018,22514,70922,27792,45589,59709,10765,736,35218,63479,51987,24275,63588,55361,92929,81964,4658,20122,12330,44058,13065,311456,72224,8337,211229,38979,22590,138478,52757,32595,133600,8838,31549,94412,43391,90056,1585,94802,127271,6223,31889,137038,132910,2165,57616,230152,6080,10748,36737,74579,134062,50525,180532,119270,34556,76155,82394,52595,29258,31435,87820,67996,26943,183878,38007,2410,13526,180297,69856,3503,187396,167700,7838,16701,9199,56267,3661,37407,65994,23767,5708,62508,221700,67088,86978,46776,84434,32088,5612,9149,88244,21685,95151,46750,189612,2979,506311,2594,3628,40074,105039,78243,28523,6651,38058,71999,30992,12764,68261,108991,6165,26450,61961,13400,22426,7490,60890,109623,2070,12958,50355,67979,257096,7213,42578,52121,35716,65461,7516,124758,39268,302,64712,14977,1467,219452,2840,34229,11121,21602,19270,63574,8024,1532,17331,79839,78885,52029,180767,57957,6069,91265,61380,55767,8927,32881,287603,22149,35029,68876,6428,199567,46926,13412,104132,21434,366616,45060,110046,81924,128910,45886,52821,130416,29416,77342,21762,67329,121432,79924,11724,38625,81006,102033,28338,13326,3250,82056,82526,38212,21112,12382,111495,3263,7414,86274,93490,40844,30224,45212,24019,48411,71367,24941,76729,57776,3769,38114,202019,197745,31953,237533,33270,201580,255648,100798,44741,32241,98468,106931,10085,15090,170358,33154,66787,18819,69760,25061,234005,82660,6295,131975,16874,9076,4094,25005,17740,40908,19533,220019,44330,99792,50040,19619,13950,55228,24423,31253,95308,103177,184795,28590,82285,5059,3210,75525,49894,70007,56178,10580,36051,139681,21617,98736,3555,106306,164189,37352,63915,47824,24883,145530,61904,28444,11483,19837,145446,30420,112972,85939,11835,191233,2262,20705,58630,1753,148334,1197,144714,6887,11223,107667,60879,77914,4151,57417,81594,96681,169430,1784,20444,95138,254041,27038,596,7117,72808,13759,3353,126776,21074,55322,27081,36942,39547,139830,179275,4453,713,8722,71399,19204,25785,22794,23923,104114,11291,25458,102309,88396,75288,230440,206396,104551,58447,130857,37247,94734,31548,176529,226077,65159,20104,10096,66881,94191,237909,27109,37404,1520,27421,25220,113003,23423,24884,50585,6286,231877,150800,11789,3226,90004,60642,5053,202400,61442,132531,175329,57138,30116,103847,9973,75367,16452,32360,59119,21246,10191,164804,23305,61051,37348,154530,13214,5468,50403,66754,130976,50559,80515,14436,155492,84017,5472,43107,41240,2890,90431,70188,382,76234,48040,50211,281038,237007,32115,142178,1536,22761,96429,1811,31243,1679,49143,55209,17402,235054,61494,7462,77030,34925,87609,78002,9499,9027,73289,201078,101379,63544,27666,5469,10642,30029,49816,132979,95620,58086,351930,116300,2110,2043,30845,6154,11279,16727,4122,2277,27281,4971,3650,39060,61970,65951,39674,75686,38151,11370,130809,177895,32665,63725,122267,7857,39618,118483,44792,157755,178624,136994,24260,41308,22471,12404,21707,12486,30473,52781,50246,20247,39065,909,56825,103158,128603,31542,1089,41935,32744,12428,37963,84420,33134,72921,208449,42622,168151,127335,147107,46699,38216,12591,94342,85814,31423,24944,2605,87542,67473,192551,4496,56321,91819,17630,6300,256183,114569,202090,33209,35289,34897,24967,40520,43470,5344,10199,34810,14283,10381,10017,62923,49924,23233,64539,13051,35686,19698,11570,135555,120868,44924,87065,52318,52335,47586,140906,245885,109834,78668,9065,46990,25258,72022,61243,40838,4545,146387,10537,11557,17470,36930,68104,46711,24264,79401,81043,18225,120488,24746,84338,81652,28266,13776,21878,46973,1047,230465,73357,95777,24973,210160,62210,58404,110633,169651,6937,41870,9909,26822,191062,76553,27519,96256,239070,2478,205678,67955,58532,20601,50120,19148,78501,195724,110740,8249,109665,27446,30568,57631,31425,49752,32820,65504,50079,3663,102256,219898,23849,211315,14645,4359,91767,9528,12449,49366,7941,49763,107848,8930,27086,50686,9744,10447,81935,39513,46514,1670,29229,6172,22312,137280,97759,9806,14445,22976,56458,73391,34983,93760,174219,52573,33149,59747,2429,136277,75123,165263,91040,7446,57632,48633,97140,246081,84766,151684,79918,93268,120346,54059,54875,77858,32996,103590,45276,11968,19600,25849,17159,132907,42828,16817,4913,99462,103303,27395,5737,74184,20749,21160,14377,77062,131403,158735,10999,27799,77785,9320,34366,51593,61070,33746,47048,29268,36675,30262,53297,9832,82e3,20188,122292,39917,7331,18160,68301,185935,134830,15031,4935,10004,165845,185534,46923,30109,44134,122631,18874,22903,112790,26561,18549,348902,82871,140345,255565,135390,63556,103747,145055,179600,145662,296111,61661,211987,23952,52342,126343,48450,32919,44277,82185,9591,62139,205363,376969,394874,108461,18040,120885,14798,39863,16571,16794,58271,81025,55206,14640,118656,6361,44092,85970,6262,153863,108244,180200,72264,79947,38044,10050,5735,61221,80712,5471,115689,11391,11661,184257,20010,60116,30320,19327,134598,45455,27542,18004,125092,452272,1549,91523,46567,180063,156026,2608,11174,58848,37788,65907,80194,30490,5786,40775,119519,106241,11323,156297,8425,61495,2617,29675,2425,59886,112582,49142,59618,4863,50597,86710,50650,168632,27693,85641,83643,18993,25768,84284,28090,93592,36627,312804,43381,9887,9402,100931,97165,3311,173330,66805,28935,4963,184460,3201,78102,19126,21607,37496,24938,22615,16153,32862,134792,153318,61120,6067,2812,12826,12792,23825,37559,64662,202250,102694,155488,85881,149193,46233,65383,15521,106982,11358,176786,25752,39717,34208,24510,32464,77742,39371,72028,138229,60688,71386,102834,132477,2208,11548,63670,271279,28351,30338,38620,32491,99845,143885,152266,13252,2825,178663,108097,1775,78201,14897,113573,163346,62292,171129,22183,96598,38733,64971,166776,117445,9968,146393,44677,74867,20908,97328,12761,25656,26785,9148,112344,26115,99176,110121,22437,49547,6180,79320,5835,31392,43328,33377,75870,119860,69497,80273,7325,155219,43167,111173,28347,20222,3763,71752,55041,47252,14618,28088,15012,97805,194698,54636,2036,41349,6173,96604,61530,51859,43782,13361,24334,22668,24792,7070,23441,16789,3209,36211,208475,26242,32880,122181,182407,21444,31060,88459,29929,77907,12716,10934,97005,20599,31690,8403,58445,30303,22700,10336,86731,103115,337709,72556,46788,112566,47684,67089,53548,36874,56487,41387,125985,26893,40071,106683,73712,18787,40105,72992,67246,137276,50802,36790,70328,138827,22466,39263,183295,29858,50975,9322,57397,10654,24364,30383,55799,41600,23584,127295,296610,129078,143558,244131,86397,36049,1085,80677,3820,108139,5476,34767,24683,7758,13060,7239,131671,250593,59556,103392,29810,4188,252323,39404,116877,7651,43600,40338,13554,157253,39196,25978,144387,61211,234,50104,6129,10449,93777,9240,356378,274148,4439,72970,3724,147770,78680,62570,115877,40027,40547,36817,224392,64609,34795,165027,67440,2477,37206,23431,50754,164797,46018,94995,170982,27051,7957,22767,3674,27900,56419,18930,60701,41302,2692,84749,339721,61996,111094,80221,50129,1045,8153,62945,19202,8250,37208,37418,32560,79477,41106,88569,33963,36693,5892,30570,1581,66471,49647,11922,160717,29442,5643,114865,82962,95982,132098,22633,22838,94726,54556,28566,205039,162340,33216,16849,35847,221339,94851,26533,71469,1805,3804,12935,45483,71020,36310,65381,192960,34240,35165,59773,1248,46954,155332,96864,4246,388800,16129,57133,74592,44807,442014,38203,42574,80818,91592,26377,36424,65760,977,77387,22628,147610,28018,30561,98454,6969,119628,63648,18170,36854,26601,64018,22027,37279,51395,152934,21153,9430,58760,194742,5330,55115,34158,28917,174111,13171,122326,1526,43896,66094,25325,4234,148354,11450,275,18999,112191,44365,22723,68409,8733,57746,96565,75007,14196,108844,29475,88599,177563,100792,106156,86323,93726,14248,135341,194131,40126,47099,14779,8272,39597,95983,171398,65882,28052,10393,47213,40689,22120,72212,106829,34964,109146,753,648,21660,30047,17527,181025,5619,145357,4085,216883,9359,186951,24779,53931,24545,36197,223296,62628,168101,4243,107313,30321,26642,13049,51059,31027,107912,807,73550,26551,84369,122422,165872,49754,74213,234264,33151,52014,33100,87183,22365,52500,40013,23302,5652,72723,21404,26107,48434,587,94049,168493,96418,32871,70860,31709,25128,443,71597,166253,15670,70994,26341,133675,28280,75491,54756,47955,56028,26182,11952,113272,472197,64640,110753,17919,337,50642,22576,142,87371,53391,93210,126694,15285,19642,85667,14148,1506,42092,52962,33243,11970,20734,135843,57044,58880,13002,219134,22876,64754,232519,4257,43120,321573,24799,64526,124728,52579,81472,70831,276848,17403,74359,23021,182101,74597,23744,148267,12055,7976,5349,11772,67540,167347,65318,18720,127832,108238,22828,90233,9987,259080,118185,73209,79270,13775,90100,137742,90799,70569,15699,19961,9087,67475,57872,39731,8810,134897,131868,146849,19898,3334,2281,167061,91073,60356,467742,74712,188,53179,137679,92769,29241,9537,132595,80119,1041,88962,5976,40171,44911,102859,139059,104558,98987,47761,19272,71472,113864,175377,73338,10857,23402,23758,1591,139864,5644,4076,118760,16427,134198,18853,20291,100849,37423,22038,36677,19071,195521,57445,11069,31869,55718,66882,148490,44,41296,75242,49704,166810,9906,20943,122258,49112,105667,15969,10344,6408,187694,21399,72742,58970,14867,14376,81889,41856,23225,15042,56993,16074,131389,74276,72407,53875,383108,53597,37363,68993,44854,122548,430927,198279,38430,80409,12245,2981,628,2818,17760,37437,238229,7968,46892,2200,3730,34190,65983,37959,112291,87850,70827,6522,20750,73913,111621,41652,19587,2780,58668,25916,85259,18200,168962,95781,42445,102050,7776,57662,103313,47742,96358,41964,66174,100396,29069,204735,19679,27978,7479,40264,22534,61183,36081,107436,58223,14680,23002,101311,24716,124108,12908,5646,31750,40380,14215,232799,102772,14122,96775,61398,50917,12096,149880,67833,598749,124194,155871,49216,790,14677,65319,56917,7440,145744,95701,12206,49405,129269,76199,45732,9767,11058,9047,210885,11051,7392,26307,2130,8132,147526,20802,232698,115660,50060,59789,57344,107623,80343,112676,23291,9866,160971,34032,118291,15719,59730,164911,28975,2659,58046,78480,21854,66209,53863,109085,116045,29021,46481,107552,22130,18764,70254,31272,11300,52460,43933,84738,20721,53869,190840,79673,105300,7561,321817,66924,13940,33281,101046,183181,32176,71878,5678,62924,79535,56646,40303,19559,27703,93042,73368,42187,3670,37376,46440,7023,36816,109628,20680,5940,276440,275233,170848,112093,136996,14984,20226,111441,77693,112960,48577,39370,55707,50314,123404,26570,54281,61372,123391,4857,35928,246740,132507,106646,44241,7196,92258,9825,37688,51197,303141,5590,15476,132986,10955,85782,34486,26696,7991,28813,18858,39546,11703,11365,38185,5716,93555,11925,40121,60002,6985,10976,171384,3887,43394,13337,56346,6381,252336,39573,75042,53711,1028,31781,44295,95925,131713,7214,68125,43571,70954,213234,1628,8760,13391,65485,17320,56038,1710,25248,60803,57399,19839,3870,326,281556,50945,72400,21460,316244,75619,56246,98775,481,13513,55765,50427,7388,123519,32929,57908,27124,61316,101097,57467,30228,48792,10788,20402,37318,50526,155730,34456,158065,145305,17832,43733,64052,4506,35072,205355,177028,184004,187081,68616,35938,83703,10367,36892,93186,260137,51934,89970,4985,23445,26755,21558,7948,78741,23376,124405,85594,68596,57536,49351,12619,56593,132668,99924,109728,71844,71935,196018,65464,17617,14987,89701,143773,33997,8687,22701,33258,2914,4436,72108,85610,9671,49067,2327,82988,1361,1672,44033,35777,30269,24057,10605,82236,616,15793,13919,47249,112086,116698,9484,80207,90574,33304,68624,93127,56101,42210,160929,4827,38995,38095,4701,125119,5027,33680,9236,231236,14135,87837,23318,70261,78893,30151,81482,14332,1084,74256,27532,46644,79185,3148,62615,6981,55672,31668,36825,1849,14536,37446,14738,23779,43058,162749,72199,1168,21346,5592,85932,85302,9668,18351,57135,150360,2080,228015,77953,34670,119302,151751,31009,106725,84265,45214,59289,74178,113071,263206,111009,4021,44449,188119,192629,123592,392506,292847,114487,12831,205858,9852,20780,79648,75767,357014,97721,18166,21005,67950,33226,204009,16536,2987,11335,66717,144910,47950,17262,55060,15063,2934,51038,26775,178497,66008,3427,49433,128592,20036,157553,63861,3089,23015,51210,28696,35933,49942,71135,231518,99620,17248,21835,176536,20676,16944,38700,165831,233253,295625,36723,13023,52745,10907,19423,67972,125868,95473,82875,1183,108455,52685,33417,64095,21433,52438,33191,127809,44505,211823,7810,2752,95548,162031,7185,91196,47563,61721,33359,17897,23682,42806,178101,22874,49707,199897,75419,82456,8618,11171,79712,116847,18783,44190,46564,5346,59046,95032,7893,14916,3214,26800,24172,121453,34362,10250,17408,18888,4840,68696,22831,13162,36005,32512,14800,62357,41723,45046,27247,37486,5372,2564,34261,298500,66509,133920,89138,31305,117697,19097,108304,81386,84106,23802,46411,63304,946,51417,41777,41041,19501,115864,60743,294354,37955,94165,18116,1156,17937,20645,57114,90804,58042,48643,92288,9861,2557,88546,61333,101008,12853,5148,87856,4152,144503,73841,18718,9789,147565,10846,42085,12789,30223,8993,56352,67203,2448,28215,6052,23540,126319,75933,36689,80235,23231,23561,21383,38800,77548,102798,21234,31468,158608,46188,63960,191679,8051,67014,11185,170078,42186,28827,34777,41930,212079,12421,34750,24111,110344,73918,45171,70826,141949,40063,23979,24254,37309,26724,27179,24718,83648,54938,14591,17425,29525,102675,48975,48654,12316,8929,60640,41709,50168,63264,89812,50716,48632,38755,138583,160123,55579,71829,24230,233277,46322,39650,166388,34718,24108,98252,7031,106695,62498,18258,35062,217827,78731,34824,33354,19520,60852,2432,60224,8587,2836,62955,702,20227,42285,40560,95592,62486,11094,53035,143291,18842,46177,77994,1770,9657,107422,172915,32655,128716,25886,25164,156740,119928,165875,85817,11007,89110,33956,12652,65156,180266,8494,36889,19958,20955,96,1264,118288,135769,44754,86671,5632,19026,168220,289120,33569,93821,66144,70635,7687,5642,2714,55445,56636,71545,184182,93133,7332,37389,12643,52315,22729,11014,158742,17050,152889,50178,34601,41945,52136,9948,26914,63548,95721,115951,40759,8960,158258,38938,49232,48325,42234,81523,253019,66128,40978,20048,238048,38760,62928,122560,118532,43687,137472,163689,26680,9878,17448,51035,16211,60834,36749,29178,14241,59868,150086,2305,26477,42422,34342,165341,83279,33894,14257,29928,12743,13957,125571,89134,66712,10952,16507,147839,30146,7249,16565,45399,39874,114565,215780,31990,230881,171477,102,196546,44538,10880,84948,281705,86651,10617,31395,2342,453658,43569,60561,132901,21845,17727,58556,258242,22262,58728,4008,77997,11806,37431,30599,81375,109137,185787,114085,217292,97453,169085,30593,60212,11544,102056,65580,2384,91655,4855,95725,7295,157994,16228,20669,53276,141590,105246,17334,25440,76067,17967,39321,38911,11362,28559,63807,21627,26468,85816,40120,1025,15234,58319,69516,66512,124548,75845,78873,22137,46681,51242,85683,32909,76747,35555,43396,101465,1765,73094,1077,2962,39028,66777,57831,42048,15828,13962,36041,63657,52412,5242,58846,2141,5506,219012,134451,3936,182230,17558,17153,152237,22621,49377,170216,35257,68233,65374,6510,11126,212151,7184,2480,22517,3437,33073,30156,16557,3768,55067,86829,91e3,12350,148650,66017,79424,70885,49066,28250,21369,51213,34533,11510,3258,18176,18465,84413,6315,36411,163765,4346,356,107618,598,13727,285026,162695,8749,14583,7132,63521,184253,32378,25991,5604,30961,53675,4874,84693,5086,34811,26978,56564,7904,33519,51221,113942,69253,6664,125563,22055,220680,102008,742,51930,19494,176108,44424,35123,13025,75685,11759,74335,22250,181453,131147,16984,132115,154311,11991,76452,52609,85351,196,30969,9198,74919,2529,56838,71779,29187,116304,3504,62330,41190,86153,28393,254926,104228,105189,13264,84359,3574,12415,8534,57147,10175,188174,59504,60932,66318,16407,107921,17638,99103,49278,28403,39786,145865,8462,3558,43406,142271,29139,21989,36552,93955,72365,7176,13556,106185,37957,321774,17782,129017,51154,27938,24952,1935,39366,2791,33489,41582,56078,24558,9311,5449,218786,27808,190429,68013,36020,86003,29735,3404,87348,119357,115714,2324,86796,81973,40992,43376,93621,28784,16808,36367,2517,2909,191926,24978,55303,53308,205724,60068,3098,21375,64784,23949,26579,63121,12319,80145,39967,97861,6757,70143,67642,37082,34698,69140,122883,46151,62187,80934,429,19437,135071,137885,222647,13331,154065,327,61778,74257,40116,37493,14855,85079,237641,42342,102164,199965,71204,4662,29368,5042,113914,122214,8955,13149,102503,43173,5659,163787,69003,307084,63392,171080,21390,81918,86666,36622,24126,28887,5736,28054,207170,163428,79891,346467,95363,38980,111806,80828,9200,19288,294896,114468,87405,111715,141705,7015,72754,68463,48738,243147,33397,101210,37051,98801,82847,20397,4940,185559,18716,54718,83491,11725,40803,1128,12128,23060,5174,7745,67007,46701,1571,27807,180186,256996,18975,16837,7877,212758,250379,15440,87954,57755,24719,124057,83461,258,50864,8874,29038,71289,31627,15429,9005,4061,113851,107716,82819,13651,79656,117851,17539,111446,12938,39724,190787,4352,15402,21070,62708,8539,23777,73853,13552,38810,86117,16285,56400,1718,75342,142863,29033,378,110113,180321,32586,23606,26393,160984,207987,23783,8406,16904,24596,47274,11693,46539,60524,78595,48423,31718,20170,9009,146268,15183,191060,172765,1349,138436,37365,10970,40509,225817,20021,70394,152138,21541,66559,66544,89352,2725,17258,91345,7313,3815,115868,8660,40362,4071,103524,39388,118275,21950,6549,38226,32754,209574,29201,43495,18028,20296,40597,18370,47520,202450,24134,2219,8195,69545,38041,136934,46374,19041,159811,84865,58620,846,98749,13569,30714,97246,32186,4479,27355,92973,35214,151491,75963,37631,1561,27200,238083,23182,60756,12291,25766,39355,102333,87362,65741,59906,19538,201575,48772,102938,24438,292580,39964,66366,9004,61379,50548,37622,38732,28379,68180,76622,17488,69849,5963,7219,48143,43413,55358,540,58691,29506,19245,52193,48621,5518,13048,118625,44755,191081,42061,89197,2259,60665,66994,71210,51232,3585,142096,55024,7892,8345,58653,463307,65658,64319,137941,136323,53499,12746,43492,6978,95163,29925,60175,5128,7352,41463,184756,121146,20473,18426,4598,5309,54580,14277,121151,10691,56711,43880,63409,76682,11830,172218,264898,32632,66536,81062,31649,25788,92774,60222,11100,63159,9432,224657,25240,53613,152,138620,163829,2397,85345,12501,37507,64932,38575,43522,65789,80198,78796,35226,3851,108891,73311,3060,28391,93671,39663,46142,30982,66041,37281,68157,26553,71872,81142,211527,39747,118119,22695,2859,11066,20232,168911,7933,197005,17066,111071,44434,133994,120798,12766,227798,45756,132852,29917,36076,55352,65281,129800,41958,18944,84678,18580,168093,132621,39997,54092,27740,32354,3770,114118,103242,43918,15899,18574,145944,3190,123469,219903,24169,100571,62403,16776,92779,14535,17168,16475,14304,37231,1712,28218,242754,61688,28980,1318,51359,222657,99200,67989,31772,23932,35351,201251,49041,27306,19128,40135,3986,77333,19649,120683,151927,21081,7076,78375,77501,101599,8011,89585,96715,58179,5378,102138,106793,26051,217276,4197,16297,27014,46721,13322,22806,5278,29629,70632,9647,71519,58818,40603,128530,8903,36770,56900,31483,26935,43845,34265,34920,87658,6114,84767,64250,47318,50720,19264,162514,33357,13117,6705,46696,75032,71054,87004,42035,69138,11903,99854,102328,19611,34525,69312,6431,49842,101600,133178,108751,41829,89939,225664,48916,99556,9195,130387,5960,36857,116724,53518,94002,39077,53996,6945,22261,64291,8314,152785,57588,16522,9091,5048,87671,35441,39509,1945,12423,158923,178413,37549,14095,1475,73188,62878,4819,24012,68534,42606,4010,120809,57497,59564,101758,103718,32701,80116,12345,95834,46918,21468,53213,15665,31200,3867,5140,96013,250744,21016,10069,13968,35449,180829,27683,39704,59956,22893,3115,26293,32785,75934,62445,141162,62720,2018,83638,19949,114012,95006,3330,99829,130935,309272,9565,55874,121727,37017,23586,319858,40970,27602,8625,112329,61060,100088,118525,25922,16232,1907,60671,51583,44553,80993,5262,94679,8676,940,20736,11823,3020,16476,12340,152600,97416,3703,25744,66826,16245,16876,46446,84798,74227,176020,45192,61955,75496,23946,23626,40372,26036,6149,11822,30582,16541,41914,82385,232823,40921,80773,14930,3631,7517,39619,4348,36180,126106,138939,62611,1477,113512,47321,25052,14546,118881,29060,23589,128322,36795,18401,137921,104699,267929,36194,172791,18113,4766,188215,30083,332586,94089,5805,77909,22194,68234,154976,43220,40660,70001,184893,138095,11128,103010,22663,5108,212615,8485,5565,49222,54614,26530,42639,16319,55062,152662,105595,21114,22216,10294,68158,10436,86950,7206,62115,3977,3657,59874,456,118617,18156,106663,112229,80992,17442,8217,55551,5133,34344,251927,51153,39364,201321,7816,66803,23057,156724,145664,14276,95705,979,2796,6875,13429,212525,50602,26276,28284,3424,19465,52397,46963,31420,51399,206476,92317,48851,637,100820,83349,10317,60227,21972,6908,282439,32857,224767,95629,83882,42106,87338,69757,29840,68709,37665,45244,114577,49188,175943,54009,186746,106158,70168,3358,234002,50555,9221,129338,9562,20118,32923,78479,118280,65752,4977,10474,102174,60947,129006,10570,83451,8598,8078,159367,123785,80438,16742,5905,5281,181513,42402,6977,163136,93179,42191,14968,50421,112401,105440,33456,57347,121611,4221,94954,36517,24046,27796,6255,33394,72990,135408,116627,1233,57874,25654,95419,68156,401399,313338,55208,45573,93124,119251,47200,38196,11909,130667,45391,73904,64964,167846,4137,115606,52036,62214,7969,160925,7187,1132,134835,40309,73195,64494,80472,444841,61111,26500,45323,40743,53625,52797,22659,15631,29739,36706,28841,39147,102836,26794,10536,14845,87305,45874,12241,127587,83833,57183,79722,30844,41304,84655,20825,92500,3722,25655,27811,10157,81634,31362,34088,92487,70123,22190,185100,72658,139035,192523,88241,2078,230490,44528,85638,100198,22088,29982,291233,241062,13865,4445,137791,37835,107218,31726,19718,38234,72528,23046,19177,66695,5109,17251,28077,5617,21554,47839,72425,133825,1486,73065,181275,141508,21768,62971,63082,2512,34200,9904,120309,6392,91243,68416,268253,41199,116757,138551,185526,41246,28986,4093,19057,17295,4148,245766,122360,35356,112075,20301,75441,10998,7977,19769,62922,937,63547,100196,26427,157820,20983,236696,22935,8140,90315,156004,47204,140973,7726,45097,52725,22636,23436,257282,105247,522,88389,216031,202204,46812,211666,19693,68828,81691,45925,11256,30292,372,5236,167826,88328,232776,151611,5360,82104,18841,80393,25465,18285,20320,72377,31730,33160,45803,38715,27705,37379,24163,18360,103586,4015,32305,269494,91252,20080,36567,54650,7797,57073,12650,31164,42209,6375,261663,105528,81661,106002,2800,5375,17247,43151,4442,15727,194619,100855,144898,62320,78465,39929,16454,1967,28311,61363,17219,9395,8745,121445,76939,80385,162380,22009,54191,44248,16299,122830,48151,74429,78291,64755,14238,44966,2511,17712,67954,93583,829,105899,49935,84750,11591,33185,85447,42717,27409,208542,28965,62052,52525,5597,25694,65594,16343,63224,276188,12475,9331,127507,38522,57287,24128,133161,79723,105548,133695,48917,27558,43278,46520,13778,141954,110785,83366,17715,46317,105763,66298,147013,41086,94180,16478,220447,44611,730,19722,78975,117889,125643,26254,16574,18480,65006,15806,38549,246418,46052,36056,8440,34984,30170,3163,59800,4458,115442,4283,41970,33507,104078,1653,22,121158,276486,3655,6338,24048,133421,23641,2161,24422,36006,8086,10675,181474,12307,29514,59143,14729,52509,87128,122470,19446,80852,33314,24573,119864,14237,9652,57779,6612,51851,15284,98871,90581,124466,156831,21190,22015,71380,161906,87247,69201,18392,17908,108470,72962,40719,14338,17911,95260,43339,20610,78916,20710,72451,11315,31448,17263,58853,178878,48111,116002,45497,80506,82605,85880,36300,121755,25215,36118,301929,88728,405223,276136,553,34704,212438,49970,78329,922,20711,25036,257130,38295,145369,18128,15385,30829,55656,48345,8012,3561,28004,122041,192900,58338,112508,41085,29976,87040,47117,23905,4336,92061,138880,97407,42083,172121,6256,25192,172671,5,93568,1420,12677,31605,56743,40620,6015,78415,231077,31298,80026,13902,19048,24924,170586,32955,176119,87859,36731,6773,27711,24658,26475,115216,133207,93250,95820,88522,8317,5714,124047,55219,86860,19677,23961,22928,162209,8904,225992,359835,56084,96201,29392,96558,86071,93643,55114,13347,8183,95129,82012,2017,123336,34219,115554,157159,47747,101684,41008,18735,193781,104151,226906,7552,179874,124113,31159,21162,44010,14771,51268,166128,31382,73124,77438,92830,205709,12113,1292,38937,13114,1334,2118,15597,69581,14449,21934,76618,48728,67038,14967,51495,24243,87736,147249,26720,11119,46063,43749,5843,44147,152629,133428,65703,14269,45604,57982,28672,55616,45957,8438,95433,37698,220862,132034,39456,61870,4161,26501,73560,56418,9845,4654,20916,10456,88920,119358,9015,65931,96507,48029,38534,21676,109081,43078,34943,25089,6131,28766,23665,5477,10255,16695,67,45778,42443,42770,29534,23733,100513,62617,42630,48746,14191,43753,50295,26007,8792,57243,43119,54725,164253,58250,112304,131796,25165,4651,3188,24831,47748,3705,19540,13211,102095,5593,18699,23666,32005,117571,33541,60584,74573,86311,99443,25172,27222,168938,7143,11853,53560,18834,19960,86522,28217,53266,117700,72989,34323,18721,66450,34346,74056,47217,202002,46269,9429,68582,75458,37823,82843,96652,32549,145144,27958,19820,158086,31955,201406,135379,31207,192545,12950,51704,9094,248263,76147,64028,110009,79407,89345,99284,223492,47966,26848,15359,201137,2861,110507,71231,72297,31851,118777,71039,151051,240855,16333,50766,14727,7939,4149,80908,418780,88378,59276,1327,7284,38576,79814,65820,42199,84860,49574,62596,12396,70598,40117,8648,7994,16836,7630,14047,359699,106878,525,29037,28064,13380,11675,50669,74216,103539,180314,27449,56299,172344,19274,7301,246099,32043,19422,36506,129317,6806,30140,4614,46639,66926,932,86600,6322,27847,233103,10541,39025,34887,3517,12972,26220,2031,66561,115015,48658,47596,12714,33845,3893,16165,35237,89983,14769,11962,147224,47018,29977,27979,5552,82338,86023,131368,1218,24853,237840,132193,15455,40873,3668,65351,53388,15229,59889,272245,47934,11858,34347,18038,90853,86981,300602,19343,114181,29362,84921,6095,106059,79472,38015,1206,48741,6208,8e4,21916,17423,6002,108083,24479,34931,56661,9511,26995,100694,163853,35997,81254,58321,18919,171890,86877,91341,74503,70477,53412,7027,59281,39892,131302,5864,15947,61301,67466,162369,47956,27874,35624,282324,21270,111847,102548,41482,30955,116737,28264,8592,55458,22301,75090,29821,30697,51709,3041,19208,8038,24634,30467,87509,126428,19389,18814,152686,20701,83474,45832,80891,105808,11378,153223,120770,98186,150633,49838,9141,12755,30962,5260,74490,21256,31678,65062,33326,289838,187831,20595,89768,2805,58535,10844,70085,12090,2451,138068,98544,24461,4511,6754,41684,28203,3383,65355,82833,30161,83924,234361,128424,28921,222594,33975,125491,34069,11508,67464,144226,41850,98703,34371,7901,21254,38398,65651,23549,53883,213340,123269,12028,71764,177701,28758,2623,68395,11549,15232,68603,9660,63116,36079,57093,31198,20475,48467,89984,35619,186847,107469,31389,43631,73867,41949,68841,114250,1605,30564,63403,17588,27680,99533,12641,70325,50428,73426,78379,11855,91651,72081,91720,60198,15743,12065,83398,140046,6761,46598,45900,5068,886,62448,148968,37347,19405,9680,15819,43496,63370,75667,163700,37639,3633,22774,34341,183131,134335,37200,23915,7054,14194,12970,26438,13350,285521,25594,8219,104410,91039,168804,138480,149734,15907,33818,61132,60082,4622,110187,56736,13551,73571,3945,73463,65498,17758,263266,17593,2710,27585,54469,38200,45367,63754,28881,3473,12791,98287,31895,65787,4463,94536,24951,36332,59901,28803,52130,86403,7668,181822,74831,18977,9850,177206,145485,109798,7292,31421,26280,77211,58511,12507,127004,11113,147,8729,56208,43066,79926,129937,31345,83947,39915,46146,98763,42566,1337,13192,18323,105163,80570,117753,16555,72883,11077,159438,40764,70933,83329,26066,12276,72059,21655,173836,126713,69454,153482,91585,70644,102558,110483,6764,127864,190133,3961,101798,20945,71138,82402,90884,69669,44753,923,16939,59700,164258,25969,27082,31399,43846,6306,246093,51342,6153,151581,202801,182731,56475,162188,89426,141356,14355,121815,27536,28023,65257,77523,106668,127314,24947,12790,38796,169698,23555,10725,44573,183083,42088,62716,43265,105958,32050,44067,50118,1668,3874,6243,318411,16599,1691,94999,52378,28671,216728,123258,2059,34969,69225,5913,136280,171443,141515,91662,22175,135282,80020,92270,1663,4808,4482,3495,34691,5226,109830,108512,17342,107488,11606,123190,100247,29666,146527,113014,15794,30894,13224,39585,243192,22351,9903,7836,47699,11078,25468,122291,48821,26780,122679,75521,81450,630,4895,92900,55074,74293,17441,3563,111657,103102,51613,12318,52370,36191,68245,34269,40445,41354,122901,168604,182500,62012,42557,11259,24428,115113,86345,12362,3909,78430,86852,134602,20459,47853,93879,22577,7659,3688,38555,13349,17381,56715,91639,12493,10895,92438,3142,37057,28928,2004,36427,32268,34222,209974,10432,67436,41989,173518,107930,27079,62729,30908,55558,5828,45031,14902,53546,8204,144263,60255,14520,88212,86582,109589,69356,8064,47449,8505,66558,16886,4844,52817,111260,215129,12941,91118,650,20770,6273,73089,40618,62790,2873,35002,14023,97208,19386,102646,36993,143736,135457,35385,113601,17893,32627,84439,100619,56016,6581,57264,172160,45452,111710,203627,70131,24100,322787,1996,35665,70078,22358,90922,83658,4097,63200,58499,14542,99153,52159,6615,12414,63415,31986,16823,1579,65405,137809,8841,16898,48082,259,33014,42375,12260,179850,73667,91389,98882,29532,17311,326251,41092,5928,20742,44964,48019,43505,9317,49265,6643,192712,48424,163487,19861,20113,70848,31928,105333,23685,78563,14638,54755,7158,24142,44018,20774,125255,20331,24280,10163,1285,2336,39851,4299,117269,46714,63816,87779,159624,11731,9971,990,137317,108831,50994,74554,162680,23640,131597,146962,170620,34829,91205,21184,1913,63616,18427,93136,156592,17519,67565,115882,138220,78622,88535,18115,2711,33554,109492,54298,971,24914,25863,36363,45715,27099,194995,14299,178181,111488,72395,322385,157719,130787,11897,81843,83999,11369,49280,118604,40922,61332,110343,53407,75639,40582,300440,54722,25637,13694,48248,48278,194521,56203,52779,48783,72627,10953,376,16733,280238,26351,230789,15132,25168,137270,3588,63704,73376,94031,74284,19443,159557,9697,39901,13351,119050,15406,146455,3460,29556,75195,37673,102524,92329,47289,98413,15311,100684,56345,7116,95480,11590,7200,167,23610,58426,17730,136656,27944,53151,2701,8824,103124,3017,90744,113588,53216,79736,65940,26931,498,29568,80540,143543,21292,1740,59268,16561,180816,42323,50174,40890,52866,10703,57169,4700,17191,4424,93511,49698,166650,26972,48631,165169,82879,69326,202970,4007,2376,231325,139592,22119,62851,37504,68816,58345,67398,186643,43331,277416,53749,15746,23102,17432,4793,151138,48822,54265,48203,198688,14305,54287,2291,18018,113378,123260,7180,97549,87027,120085,2920,76080,8190,102005,5641,64580,14955,59802,54028,58884,19367,81779,412567,85957,97053,103637,78871,29364,27637,141728,4767,30686,112738,130146,42745,12730,105040,14844,232,210944,36581,152317,135543,29744,3129,55647,58149,46319,27265,17499,28005,59948,7170,34138,5702,293047,110892,408,91760,218674,18469,46095,81403,14389,4610,35672,73060,11006,74848,104820,118143,190357,20043,105358,141735,5115,27093,45924,123073,52599,29433,9616,238350,78610,24851,58858,26769,31969,24613,18294,4982,32735,39639,143563,112073,202205,12567,4873,88601,44897,81503,101648,81362,34662,85277,17574,48173,21435,221188,40215,39576,80786,26544,64668,81841,10731,37733,247986,149188,127703,495,18382,54388,72446,43071,30974,198723,89608,41360,190,33045,8386,31658,19992,237838,119015,137622,50890,100913,6460,116233,267230,26621,104129,65114,14190,41542,14888,85962,23342,23041,26453,43725,71809,45186,4770,46452,53894,56616,221286,18973,9038,109299,55365,19366,26863,18808,60909,69353,41738,83463,12100,68561,72860,3980,13796,49340,12332,31311,27418,4255,53430,18976,45523,510,14224,30477,26581,4530,3651,101663,139840,22709,150861,31996,63923,120623,262522,3076,10528,2929,14672,130238,18087,9816,121894,100308,25085,55111,14565,18952,53293,2042,369988,23674,61789,133529,28783,108293,35477,47119,36448,71049,40015,33055,78598,198442,1833,159937,40654,77444,189245,113153,8621,18599,38553,35223,166072,2375,11659,21786,89523,6032,12116,63046,159398,18454,3678,32521,47626,11411,103527,38896,42946,15696,26370,10185,8413,37080,165583,4331,63555,14907,72220,50056,6623,62236,36565,49783,10049,17503,100581,55951,146244,24724,9626,17969,25524,109300,173965,99994,101056,46459,43647,53737,277968,8347,123521,74858,33829,44762,77574,877,81377,222525,123532,30602,43881,53145,2973,16284,81940,61281,127044,63620,9875,14756,114829,19032,9202,52759,119141,23928,120551,19607,3599,33401,76821,73233,117430,39968,36539,7071,5446,121735,194059,15206,45283,6706,15603,65615,1207,165723,92275,34773,104447,8396,32353,205240,164323,13600,60555,79205,25532,22907,33410,57480,107111,69630,32137,47832,70913,33161,20321,2371,117348,10714,86246,1625,11763,17900,268,78457,99175,97940,101092,86660,32221,14041,128504,125080,53744,124263,31017,13897,403,31859,21964,5633,111630,5547,77329,17961,18241,84995,25984,12983,67491,62168,47262,5241,297,51191,7351,8967,147212,82060,16821,782,11033,82431,62957,5026,43459,77963,203477,53528,6247,191852,87774,74164,215654,13467,1522,219964,28589,244104,16242,117821,67725,72570,156792,17186,15979,26990,44128,193014,35276,57125,16212,166451,68017,6905,77608,16364,53777,75921,76426,37975,26203,269296,64099,84122,12077,38533,830,4407,20139,963,43028,38902,42911,37503,83343,85045,16979,1165,60835,137387,58380,86990,110066,134540,56331,193845,81238,17922,163093,38744,110641,12502,56404,34862,26865,125964,12965,111648,25547,7771,27196,136980,9555,29551,107158,57885,18831,37705,35505,101742,13970,102109,62548,124657,23328,11124,89592,146376,248050,6241,22033,18337,80685,29898,11908,216623,67721,106162,146610,21377,15085,91552,42041,62560,122532,125336,102365,121537,142559,29693,223919,11515,110495,18776,22494,5895,185059,103592,229351,51220,100102,37027,257855,29359,54123,36066,106493,12244,79258,32002,432,56205,94836,90182,6726,14762,29391,48938,26864,38083,60364,3310,60192,14766,205567,57504,110760,22649,24666,46333,21517,3430,13135,28873,27052,158809,11597,20529,6695,23138,22960,37137,45574,6545,305877,43423,26153,24769,59844,14501,10430,134352,56169,13213,103432,49523,35181,13435,12408,129475,64620,230854,77390,51990,15653,83248,33466,44571,117828,51481,2187,10559,68019,18021,54895,48247,18354,33737,4554,108595,37288,39767,116707,9175,3726,108877,21616,83684,49862,1938,8543,276466,20134,108498,48770,102254,31914,131520,185291,100559,51890,209,19526,76471,50544,71814,99351,8172,198526,28816,20419,9109,98389,136777,76479,75596,30635,165417,48216,120220,25955,211071,39314,24308,32164,2559,146280,43403,9233,17947,90585,1786,86920,125662,2457,64741,32152,32918,122882,78538,44001,31723,56426,23375,103172,88177,145697,52506,49319,68016,31664,41488,18486,110400,7030,28241,986,109199,19900,42147,56864,65287,49183,7858,24e3,30453,840,16673,25907,68916,89927,6309,158335,36407,199737,130464,13137,59603,201778,195292,21015,42466,179062,172561,89492,11075,180407,31868,72493,20998,60217,9865,19530,39274,130266,54539,21623,12535,13505,40641,73375,4087,85633,2153,3117,70680,55788,92096,47509,98493,37490,271936,151475,3032,16171,96642,34106,78425,125761,19591,3366,19316,54508,24183,50786,194248,91528,33253,34622,108355,41741,705,3814,3883,108929,13203,67831,10142,59754,68208,29128,84820,56880,38794,24972,48571,40821,40476,18137,164254,24064,236309,79181,11282,395,39169,2013,51587,28551,9645,701,109513,115899,113566,12762,62045,58322,103726,41343,40866,244102,143816,2490,70346,40973,52618,15412,30720,104315,38917,42027,93676,17513,107418,20706,123890,13399,97727,24044,87962,65606,44250,98044,65276,74790,101473,19350,91570,1326,87790,172042,7577,100813,86896,85891,41512,108130,27794,14875,71431,12835,156250,58135,3759,22476,42176,115873,34686,56523,73643,108505,51491,20838,12721,32863,45700,29496,13700,34294,55360,29206,155942,123812,7706,163234,203,132720,49358,144431,8130,175788,35818,3270,76832,25710,54095,97274,28779,94621,74396,19092,128242,58067,20885,14670,93255,15107,63291,23654,126900,129421,59294,262659,9798,3251,67344,28600,44629,50672,29072,26999,31526,23183,49175,165843,175455,17282,175411,32022,45989,30298,90690,78118,83156,23749,35636,31317,7069,80381,94561,133756,14960,97404,6138,41065,78041,32843,16601,34123,9559,146529,123377,96395,54441,42012,84257,123541,10745,22139,106459,11720,150883,172651,154996,110538,4728,53447,25704,2009,71152,119354,21166,66604,1429,216162,8637,122250,63520,27180,29172,36124,276428,107787,77184,4680,14952,104903,24418,14793,51561,52931,8371,26342,48526,7118,92066,67280,40653,8847,34597,105438,14198,50163,61188,146286,50315,41205,170829,161496,585,197359,95056,1687,365794,91349,48507,5804,49263,5146,104902,96365,117343,132222,46084,96919,16875,8073,262381,79982,52663,13928,16056,153908,15145,109256,132308,18763,24904,167644,13618,40750,18686,147124,114709,150038,52849,2938,12568,48617,8778,5459,44202,44591,74914,17183,248689,13878,7822,80060,23116,194037,18487,2067,7798,43077,33678,244028,31320,74273,2794,19466,8218,36280,183997,48124,19416,29656,19280,98734,7715,18311,30701,133602,150307,126956,7378,2933,79903,13178,12593,86571,26604,92446,13574,44205,65699,427599,21118,8245,14407,27877,47936,33542,7916,26460,117762,21596,37818,2249,127359,209394,60044,47677,308089,36791,154971,31417,6998,150042,174360,12255,43009,29335,48739,3912,101398,53340,2580,146939,151295,45360,125275,15273,45383,27456,48761,23314,8750,60801,85823,104759,27894,123685,66968,39480,26917,55290,83305,2696,98390,57569,145853,340733,4919,20024,52268,30884,7413,203685,70989,112855,4129,50536,349518,68205,332641,159581,135361,236026,37563,176404,64899,6578,122033,63871,1850,85234,82089,66124,74145,121098,107351,12687,36881,117334,13136,14698,85933,93866,18047,32620,310,15094,46e3,88451,23632,36645,27940,87618,80520,58892,20976,27702,140090,96075,67841,103292,238964,87778,107338,17019,83427,67522,7302,8261,47570,116787,8730,80484,61772,174422,56005,131193,52875,14588,28471,59817,9586,15720,158155,51307,109734,15196,11025,59331,3884,52626,102602,84797,25158,27314,4437,20488,76214,189248,35023,114952,157376,2827,62439,102878,129749,36405,10329,109339,108633,36662,1254,13267,5470,87105,58004,15397,10434,159667,21864,52022,179464,3013,32147,31496,116832,18494,105502,129227,107267,50033,13481,9954,24267,22141,16257,116154,36185,950,115685,11305,176708,2048,178671,112573,287867,162328,497663,95170,50979,193861,50987,30368,136257,31830,46549,15119,169876,23788,17462,249887,57377,1949,35448,14791,43769,210091,3783,34612,282103,88380,245190,5457,20491,98908,11402,86899,117916,16028,162584,60644,320177,156096,31065,55876,22e3,77655,9992,23397,13757,317623,63978,215255,2443,17648,93231,27388,104529,93807,55505,140477,12046,112040,70887,40152,94365,112353,25063,114679,266061,71248,119555,15589,2244,617,14129,211431,70110,100652,7777,4383,85911,89221,21010,120615,58357,86405,37554,41647,18,15143,69662,60491,14714,186134,148344,42347,5410,168175,44535,42449,343894,129417,99682,20659,27272,140483,63455,222159,17536,13722,42637,62324,11976,114691,148109,2283,32057,182393,4295,147364,33705,2075,44303,30274,28331,63740,69740,29148,10346,44862,33716,73937,153333,12930,38784,247159,2515,41053,20256,83368,256189,54639,115240,5096,24661,175419,153552,26516,141,138176,63885,34115,47222,55709,2765,28479,38875,236608,12229,22921,77291,54426,45388,2860,57787,114579,295139,105782,17826,71066,19119,54364,69385,16568,12323,28057,33346,34919,124763,155533,101386,31644,8627,49001,303600,29868,63213,9103,77280,71333,9696,138789,37059,24823,5057,21352,32368,114208,56803,19424,10445,58514,8661,209508,26187,171838,10460,63454,14016,122504,41328,21329,46618,32493,38225,7855,31763,7945,29876,8734,6438,24205,97490,139977,130740,47323,33195,85390,57194,13813,60600,21313,96251,7699,27584,170521,139271,1363,4402,336738,129223,84983,69150,13147,3590,163929,207225,155260,55916,20288,4503,8398,98490,11773,27512,37113,84976,86558,28365,11756,116005,182148,13733,115313,47644,67208,85069,9347,14995,226141,14704,101835,41159,35314,13113,63526,214039,29978,50446,83339,17440,129441,72522,118641,97816,24907,73844,15717,118884,167255,96509,162793,30847,36849,51297,78974,77793,10427,1873,2972,9999,35074,28190,64297,146836,46298,60038,163007,108919,61219,2403,75022,127339,4233,110389,69022,9833,128097,88016,79390,222936,22570,94657,28462,56956,38803,81536,30474,152794,19566,16481,147408,74574,81895,20731,1918,1366,76367,187321,54494,24366,21690,61696,33283,107477,77499,31112,414383,74362,18463,218441,120929,59848,258629,201924,69269,454,19989,13054,59894,3623,58908,20681,35723,78523,102680,38988,184112,108087,50944,132704,52966,21699,18860,96349,201411,82697,85395,95658,5093,6427,177894,44191,32755,26961,155739,6249,31310,81030,26574,84311,120155,86730,113535,7424,48888,13516,45747,98098,20077,183995,81945,43210,26704,40420,75831,45648,11180,6855,57927,65528,124096,34851,2598,156633,107572,127352,38169,123845,60142,62722,105584,232364,23211,68120,1601,22169,89299,747,258039,80572,7258,152249,11862,101204,8834,121434,33761,19175,133142,46343,40178,48723,3589,41977,30210,38868,62257,10087,82658,87827,90646,16415,47552,351723,28298,72225,91146,272760,1701,11295,1652,109651,300747,51863,198800,29446,11794,32345,37538,22356,33102,37590,113544,37970,11478,179743,25454,103417,59905,221970,105196,145604,7817,164809,102360,16974,75840,255333,56902,6659,1954,645,59400,67769,7689,18675,5215,13793,20536,27852,3387,29523,259718,16860,94625,43143,29245,15848,233581,22685,63631,78557,22836,133302,84513,1348,51826,47129,98836,58284,1830,1749,94642,10933,6145,12506,10975,13879,103781,144434,10268,28409,32346,52968,121567,107374,77268,23686,35097,10501,155275,15303,47136,21102,168741,55332,90385,15996,84817,681,137803,25054,142275,6163,38175,8056,124296,240642,65621,4934,178205,16101,62803,60964,18230,100622,76465,44689,14545,9543,47514,16852,93380,28048,12047,107106,37575,101485,77047,57326,34819,96137,76916,6469,46264,115983,75768,87668,69942,13027,165,8373,114231,26434,52844,42799,182044,23580,146254,38081,43236,33883,146220,382894,14606,46035,36481,166621,35417,95382,2957,59384,60428,36358,66343,75378,22267,22950,83528,17577,56474,25285,4619,179691,75355,95836,53295,34588,171410,4487,14679,84208,44015,18562,109133,54101,11531,86052,174479,303157,28095,9953,35642,14564,39802,16145,77606,117406,53038,121117,53624,22062,1212,7632,127157,237292,189087,10478,127345,102515,181997,86752,87623,10966,121602,68783,68681,83042,114380,138349,191305,67176,50085,39016,1427,42384,1412,67118,122616,72389,25260,2237,13576,137346,19938,20304,2191,68759,5373,61364,238507,75814,23931,69565,38993,131741,38364,12528,87762,5679,129853,5310,186831,32653,90338,260176,389531,108118,26843,43985,50175,30563,25106,56965,18130,140428,4542,165503,117991,24219,229605,1819,129663,1240,3797,76093,18398,71339,51919,93043,27175,47060,216257,6483,35051,1217,16512,80798,129064,13225,69339,8548,237079,72298,2575,34280,51379,117910,55671,53345,247552,29486,39328,140821,34681,57045,60177,5004,90269,78522,2479,322607,48474,61296,13057,31558,4678,59271,6699,27044,31988,35944,12503,83480,4389,136508,3781,114121,70279,4488,155829,42214,2898,68191,75695,305850,45041,74344,106509,30087,17429,93292,12477,290,23080,114802,35714,18751,26554,105424,17775,2144,2412,100610,65192,113975,52975,180272,135050,129815,76238,106483,21440,63186,4260,46189,9711,28249,4169,23429,23390,8324,141585,63809,67668,38457,38063,39226,59972,1189,203916,62368,14403,16949,61767,85801,1739,40147,35049,76757,33124,62102,15780,103593,103009,53484,22952,67973,114645,6566,5245,50462,7601,8288,3513,194571,80276,1908,54592,5124,58571,2513,6800,273997,193904,1119,17991,117245,2508,129156,82366,26278,71465,63341,56943,39662,106116,94966,156875,9736,2204,122308,94418,27134,1280,24539,49022,45314,3764,50904,46424,30699,28087,293839,9400,33646,40165,822,147499,50263,116179,29085,11863,31314,5578,17797,5104,12454,1604,15342,219206,10232,67800,94261,25872,13565,90339,78971,75377,26649,41184,47695,11514,35369,20767,14227,41953,309396,148270,147938,33074,14453,27499,109019,39018,25738,240196,158931,52820,8612,95853,21524,137010,84901,70869,70021,116794,48404,38771,6732,1070,70990,187297,49140,5238,576,3564,253975,16027,16483,2811,37775,19034,25259,4053,2e3,70083,95774,19713,33431,92703,91314,42381,288770,48194,95985,3991,77418,13406,241328,245086,56533,35275,62725,9246,51924,70181,95331,16163,31410,79016,39312,120878,119371,275987,80124,27712,9186,220,23598,146167,85209,68238,282190,57048,31273,30555,80913,17594,75779,59160,135002,101219,189377,29225,96735,60126,62522,104e3,27620,86814,17240,147533,11001,5425,43682,410,49460,87270,69480,46315,59448,1816,76201,9431,11788,87960,29063,65539,47347,11678,33846,7008,196704,9895,6753,8633,120892,59970,572824,115934,6646,202559,892,48351,37611,251282,57823,67263,57750,26527,34485,90747,7685,88370,6144,64182,1709,41969,21458,62327,181657,49247,225330,122600,114574,107124,85361,111833,63243,71420,15655,191178,72430,18063,51425,54002,12364,53225,86557,18193,97580,41232,138398,67821,128724,8944,233212,101353,52099,42127,14006,120107,32789,32132,3498,18123,33758,56058,5779,128760,59888,98869,18445,84702,51911,13234,218379,20093,39031,8074,70195,20708,23462,24355,131384,60189,26390,10403,41060,7140,10781,49410,42261,87202,82566,41663,43105,60276,2768,5733,74176,28329,2297,145430,131632,83615,122915,105441,655,224102,5284,136426,67763,16294,188511,32538,61049,27893,3394,13951,159099,28542,17930,145360,9492,190122,32285,78855,26440,13570,58648,73908,4239,124561,2444,74172,53131,11468,10794,73566,11623,35343,64710,30481,4163,10328,38309,29901,10538,154377,76132,92405,24839,11679,3465,13449,11637,7824,2337,57754,1260,14458,41118,19878,38661,13416,159180,37074,163164,54137,28627,52134,184900,8520,40385,29546,30502,22386,66527,107458,6850,24022,47983,30603,35083,8934,304066,39500,9,28261,33026,77251,9374,44833,116312,34990,29236,63563,125639,135405,165398,159055,55690,88141,69643,236964,31983,25572,20436,36746,60896,31850,16179,11828,5888,3043,66368,9750,31167,7915,53111,36430,1333,64344,93659,20061,60596,180191,51630,6792,30244,43509,101058,22409,420,44210,109783,43223,27030,72477,72831,32679,29235,7675,47556,12258,39907,149412,84926,118247,24692,71717,105038,86009,45941,41189,89453,29856,52543,30627,226798,67303,59230,67415,34408,1367,99685,16867,128419,52147,4111,125381,117881,16173,44093,102224,31575,23234,24870,83790,127407,239098,3200,994,1255,100903,242275,117266,55116,38205,16140,29662,11307,40414,208793,123355,56470,4862,75600,30119,58218,70828,24075,26974,7802,192353,4851,5475,78720,66596,3409,28573,64396,30381,30690,59859,88256,5406,99945,103064,34463,37727,24238,86643,60088,4057,23741,5967,162904,38240,28356,93858,25510,122879,6897,3278,7057,11971,4400,35461,211413,21395,59615,39471,87233,55795,128426,3051,22470,41950,14705,3974,180108,80476,78442,204996,91987,15634,67610,139015,142373,35611,51134,10387,4353,153456,57749,181039,14183,68447,151532,21107,36452,20551,3186,46247,46383,129666,88736,140662,146243,2066,8360,7978,64818,106963,17896,47801,10723,114821,223295,74192,3293,3393,16987,74064,11277,91622,4270,29828,27951,387869,103235,1374,61988,120083,477,145892,128378,11779,211263,61354,18221,17869,46530,83061,108538,157981,90608,67199,95080,49064,195814,12302,66307,10348,231346,160732,112859,63633,146558,21271,31037,198802,47622,12862,95710,3910,77850,73961,85585,34752,61e3,4082,24595,103679,71107,8208,79568,150019,16615,24961,139857,32664,197366,4559,54735,32696,4126,162019,75698,13916,70108,159638,19834,9349,24675,175560,49643,18206,52459,27992,10809,88865,401975,133172,29e3,34558,30915,3658,25834,42430,36562,125265,18182,10155,40149,97082,208980,19575,60853,90529,66545,9600,789,46420,2317,88593,55595,98980,115302,5742,169155,1073,177901,3472,11189,63711,78643,65472,50459,127979,93,42202,67053,21720,157650,11145,141378,42033,22824,85705,79114,35584,15974,1510,54172,28562,12451,104226,19190,97151,73024,20948,5151,81741,21499,29006,84183,198074,54003,45120,170125,26240,35177,28389,64863,79974,60778,176915,232183,45342,2038,80253,41564,40703,32689,5430,100689,5366,23007,134279,14266,26712,73993,24934,64242,52113,102887,61801,46415,201049,54251,62133,122757,164883,30815,139966,2319,30842,766,13362,10287,134518,86111,81665,82440,28333,43019,18963,8804,161944,23439,102144,101145,80029,39052,248708,30350,117340,11878,128467,974,138625,63961,5237,74778,61834,67040,43814,13690,65947,33809,232476,115258,181745,28824,94013,9510,10246,93722,81976,7217,114383,3493,16014,69045,72692,12145,80981,9507,6692,1620,60820,330444,35474,33962,4797,7053,295463,46445,27026,12491,77988,49524,35675,90947,29114,166705,101385,133782,32704,6186,84595,176031,185623,45966,151302,63069,1699,107491,947,15458,74452,196212,6046,10498,12163,10239,35191,243951,9277,9090,29539,54460,22820,26514,112549,60372,51753,48756,21812,70861,260326,41,44222,10441,16961,48148,138771,216194,5914,52153,53400,212036,56519,26245,10117,45888,15294,138019,90913,26368,43842,42111,23348,6082,194845,161089,156206,51546,11647,30759,302912,262094,8635,78876,26535,35283,54183,31183,85484,147873,12989,5197,6356,72894,65347,20150,27370,73787,1493,45918,12366,190217,20724,13858,10981,67449,81213,7553,14115,72242,271517,11842,48310,88743,143726,22177,3290,243231,58452,62937,12592,1654,40066,33477,13751,9921,128442,15868,7106,75236,83773,10775,36938,10482,170465,17368,17469,161508,32752,98340,800,19824,264456,3901,87319,2867,26782,9630,113102,185815,24197,44584,86366,40224,3636,140916,31731,267731,9567,53678,72984,29389,27963,17106,50282,284911,60170,8322,12608,23374,89652,5268,39044,229766,8869,151350,31436,177342,12269,183212,120418,116270,2843,78888,69192,7865,184099,1086,129897,18383,70508,20242,18508,229924,124569,35749,50589,55626,9884,83115,40971,30671,18135,14452,38861,17844,201826,5549,26413,17189,13561,38539,10679,143331,3314,36785,171194,49685,187713,67506,4618,104039,17060,195080,50648,33159,19238,67559,134840,28599,157523,17130,38064,117398,94355,31918,13575,34538,40326,13997,3494,348283,62481,26862,3603,104426,244363,153709,112487,304612,199674,41239,35545,54869,293005,28223,26277,26899,4533,18518,15492,38587,80488,70485,160395,263,60162,11382,222152,4696,250751,51921,182609,10707,48463,46243,1227,49111,111564,46502,33342,56846,68541,63559,858,139927,16654,229375,76759,26478,33205,95828,23399,92945,2637,35630,28470,143992,50214,14174,21456,166191,65665,1711,21594,78019,97599,111701,36,147151,110246,189022,43021,30397,40757,131935,42065,73335,48039,26596,28984,15102,2361,7421,202167,69744,43766,52826,3642,83304,33873,75140,63169,192389,36551,92748,13039,123959,233220,21738,84447,77230,20228,187852,19095,25799,92136,108774,29237,53947,2299,118106,2687,8830,42331,202924,33667,2023,73763,30704,19363,19779,16737,35629,48081,24068,101013,162338,291912,13749,24745,328289,167679,70086,48299,23306,16732,17801,43322,54589,3586,63653,43624,53474,925,109177,251316,43805,13082,19511,86565,142182,92461,17117,101033,103319,64589,4022,4351,235897,5352,82705,107142,46391,156084,5860,61365,10558,13045,7717,18357,33922,12590,33065,6928,46993,783,46937,67846,8952,26295,6107,119656,18799,17458,50747,4229,179559,112727,118080,20683,41464,125468,51560,49749,44231,7359,35339,62988,136487,67015,5208,29150,24956,105186,48858,6143,18097,6972,16404,73489,58742,97196,36357,164616,5834,32267,13746,147733,15113,132091,34127,106298,39729,106426,22294,9780,15602,36213,71502,42808,66802,599,60755,5851,39120,67363,108623,126368,72770,91263,32486,30596,151717,7951,52002,43103,11768,68942,40901,39344,24037,127500,116890,48403,16926,86750,17745,48648,159545,34460,58419,5634,114317,67865,31462,23352,24010,98185,125708,69686,68337,13610,26271,70691,2980,4768,27225,102402,75453,28106,8104,6931,1176,6274,6475,112635,22498,6176,238686,26832,28893,90319,14441,15682,15087,39517,45270,109134,104440,45965,47645,81772,7876,52683,87720,12898,4505,185665,2769,113401,15664,57592,105229,137381,97059,119268,6876,43309,33886,128363,35476,144249,67013,143587,83367,25703,91436,59347,53236,2289,16519,19844,46309,58558,99834,23313,218816,231303,36388,51333,183535,109792,139277,54306,90139,18235,8275,32710,37677,82464,86025,92204,88842,117723,37570,128723,234242,76350,73795,34896,148247,58424,11105,11744,45746,63372,17118,49772,199520,81902,38004,22911,33752,3125,1995,53792,4689,26909,108150,146062,69674,41811,161444,84855,8999,28561,16731,93937,3189,21967,24890,22943,1356,145300,51569,28802,517,118679,31703,40607,48098,108854,25003,10233,73969,177495,5248,24516,215347,146192,48712,60626,69188,40735,5866,586,101541,6509,47590,52129,5969,222045,110933,25733,24223,65339,62812,2414,155418,35819,16022,78423,43138,20995,128255,240673,46745,236093,72176,57085,97841,61248,107,36068,193177,105427,55726,215229,20446,47228,100420,87091,14429,121708,23605,21157,187721,21880,2997,203976,99166,95068,25877,7724,98925,83401,4829,13182,18229,13718,239662,38653,116505,153497,30589,89029,38962,181302,43853,78872,180301,4786,248240,7401,106136,112590,77745,19731,60880,77789,125748,135487,5975,48627,34084,12419,215770,47557,254582,10364,106495,21856,67539,88981,38805,21428,48732,42316,12149,16078,52808,25327,51322,33850,51147,12253,122354,46077,56483,254553,115417,81834,150991,94662,86668,7381,12841,100650,18218,15741,22372,68294,50705,15535,84660,61887,22553,72299,31361,24824,17743,46820,64288,31582,77006,111674,116384,30760,80920,86149,77192,51979,79691,60342,122805,103800,240873,160744,233114,78962,54920,8608,3484,316104,72548,24337,5088,230040,21926,10172,36838,26,86221,83458,102176,12062,17571,41929,41170,28428,68239,41750,103930,2634,18313,53019,34825,97837,63115,24606,73157,152474,14715,91439,37033,109806,140259,30668,174760,380,135597,95673,136073,65073,134249,13829,17279,122305,4420,46444,10237,64848,203623,70728,10349,182885,65075,24519,25783,40318,34139,22222,63394,55266,102764,41422,20126,65100,90408,53640,35128,48932,11192,38935,96839,34782,39492,19396,41332,6250,5511,19492,51304,25936,104466,54099,73771,86115,5080,7669,30891,111700,13931,25276,72289,135447,14820,258641,25265,31005,281179,75286,393,95359,14623,13584,6680,101227,80173,44933,76666,54542,13244,39348,458,25379,109451,134348,81143,6959,65554,12027,51311,8716,57589,140731,28467,23316,17272,30458,25980,55229,77197,83798,28302,114784,7428,34548,26241,14712,39336,103304,18928,54080,12870,334,87722,15208,16895,142098,114262,39820,83913,57817,28682,7721,14900,108672,11250,62246,42849,415188,1724,26555,24549,25505,26443,107450,145899,61035,43528,6901,60726,65906,267741,21338,147590,42079,18924,73017,135236,15393,5206,4026,84185,1531,5988,113890,82647,303391,7386,69844,71611,189865,76523,31877,13315,19314,198575,32821,1928,67641,25913,104475,103489,3297,70391,18406,15446,113347,19295,93790,27856,1792,167471,116449,8541,4408,41757,63233,25765,86680,64501,27034,24816,34975,6079,4486,49693,36229,16917,21581,62426,27862,11612,54284,35702,194034,355,24277,48262,87411,70504,310164,118018,12516,47559,43502,57433,107139,9290,66533,80863,14634,34312,91725,28606,21342,67241,72355,43244,375789,37402,174015,105070,8342,44167,67494,1890,16365,11723,271002,1865,47918,8350,45564,27742,25110,125803,8553,49504,81925,62211,4534,15491,19011,80373,206920,667,102405,128623,245524,5553,113309,192739,65766,19567,22832,261958,29679,21293,71134,20962,105123,24721,860,21752,33448,18372,157167,94822,35770,173224,232737,75729,28937,46828,28062,25453,5207,140366,36665,30652,6169,67920,150458,92040,23186,184604,92330,20891,176492,49427,27828,38305,42495,143982,49560,25503,90043,29747,65328,47830,12932,11068,77721,9003,25213,94205,140426,46090,89945,138173,192691,33329,112232,129905,35709,27514,1841,19957,31411,127476,53572,17497,173549,55063,175135,19841,69314,5192,237921,117660,150697,4060,273045,50414,98940,65348,153665,164423,58804,156695,48994,213928,86036,28608,8355,39574,34540,16927,135680,18374,151587,10830,53805,16878,16623,4282,48030,8537,14986,46102,13062,72897,72,33050,108227,39451,45935,651,113320,40535,95176,57450,48843,5003,19019,10407,211163,3848,1068,4988,32091,30095,41692,15099,43602,107434,50744,7627,171349,16313,150832,352665,207750,33937,38256,51091,156e3,87889,90663,84175,24908,114900,50365,31494,83829,5398,169342,47521,54818,18935,8356,43094,41212,174536,10082,92550,6678,60614,23355,69721,14796,34149,128830,58187,3179,208,40325,28399,225029,401412,51150,31580,207268,6657,10993,69818,64282,289845,23308,12961,38447,6681,52944,31855,2572,47646,120728,179148,37240,45196,218274,4816,3695,21961,50084,35209,18073,51452,27004,6100,33941,1377,84831,171214,85,141510,9078,99227,32610,6417,11718,49868,65579,87902,73018,49062,46280,61742,21512,40862,107733,15941,29168,157765,144919,14487,5767,158014,140070,7241,573,71584,16921,223566,40331,179473,35081,47926,140885,41508,52104,59180,42310,32811,29048,123517,102413,80208,10104,14746,12649,153641,126022,37965,113017,4171,83,142592,2809,6362,50416,71323,116894,260776,16204,1524,5760,30351,12658,20703,54403,36083,45408,74772,4946,14485,50759,111222,10890,2195,167147,92962,130534,16283,177256,35016,15472,210156,151187,73922,117691,43250,52051,37392,24811,24358,30830,5775,818,21969,1476,127322,151783,58392,31021,106913,65215,89407,90802,28531,11690,20234,95249,44602,37256,18707,11928,5161,4410,26571,51903,49768,22008,25252,65780,209499,68769,203726,13249,137363,48845,86823,6658,5674,31881,1083,1823,108676,34518,166752,13791,14287,91576,91429,8665,11529,26401,16191,91972,30964,5254,28486,54697,79613,66520,18447,22870,45203,194466,22822,51703,12278,76716,44595,73455,33546,12235,144843,36154,51247,11116,33040,3180,225753,60864,1972,28469,12891,28879,10338,144157,56294,353058,38302,41447,87532,110616,27065,168438,6557,1213,50804,144643,24817,2390,136531,38174,247513,16190,4059,122791,131994,137430,39506,57650,16305,5188,54309,106128,20628,88071,67394,395446,250285,66176,91254,1399,114196,43915,60230,44853,27206,106353,43013,18733,345105,226453,51202,16607,57106,117175,35492,10476,89598,127439,15187,39624,13688,61570,10615,31111,59370,6238,175252,32143,224492,41388,95408,34384,148238,78307,38959,9340,160091,61443,15737,11216,41244,170,38299,102443,113097,26382,14027,33707,3957,76300,66160,19431,18900,6952,1717,108656,82206,188021,257335,27295,43999,41210,31777,46956,57457,12657,11489,15697,48060,204748,53583,82422,284790,30503,137341,8120,19615,220311,15991,10217,63424,9808,67431,70976,98221,4491,15177,28535,144789,751,13230,2394,1504,33977,132104,30316,22230,931,97193,185240,24826,22687,174322,15307,22988,1390,188745,180325,29580,59068,74903,18994,29195,79,15436,7622,38462,11566,138710,44828,45774,37768,99236,68137,84083,19282,22698,17134,74807,126662,173497,46248,16938,119735,3212,28292,213652,49013,9975,32180,45660,86250,4801,68788,95490,77482,113751,11994,44624,94452,46839,128497,100316,5798,58588,73184,202987,65417,37790,88524,1606,43156,97964,105717,34947,11203,100060,37742,130074,93653,107799,94311,196106,41347,8035,10780,16390,27883,118236,167395,1979,25006,19375,31628,18916,144723,78502,114047,103107,86492,107686,5844,20934,206963,23556,22591,16562,146333,20167,10471,117434,33085,2863,9740,36669,41849,37271,22790,18209,28979,8231,12952,54408,21731,25130,45208,55748,138120,75826,414,29593,9925,292865,25999,683,123149,7036,92159,86055,61827,103680,23176,54918,58466,57578,13305,5709,86479,16697,31064,17660,200919,10770,49793,33423,32370,52047,16488,62555,6459,8426,83493,7763,59725,82812,18628,67760,79405,68557,9612,7673,28102,56517,69620,171797,32458,29541,15870,81109,32080,207644,71495,21202,11039,91036,61230,2810,130800,32260,4613,60590,37112,75214,33979,126402,155062,30642,63875,12810,194463,82799,47664,16725,36685,43367,61099,449,172150,102867,21691,301838,36745,7130,18671,57316,34852,38034,54182,35578,65900,99486,19771,3456,2658,16914,99866,28390,28109,8262,21147,34353,20006,4228,137085,1675,203023,283196,198286,214375,163329,290603,152574,40471,83506,30068,14730,23177,131539,34759,27668,32178,71896,104799,116305,85430,119262,42860,25160,8911,23428,49437,105322,6519,16203,6349,74711,1230,38045,8540,75165,44736,25909,51026,317034,4984,32281,91312,27060,44431,17817,45363,155937,239085,35697,59784,91993,29531,126740,213757,76560,167776,285273,24262,8237,65030,41160,74437,48804,118916,13159,37842,1031,75349,1478,11655,108777,23435,277425,101734,67469,70231,124711,43532,28514,65526,54956,1e3,21882,17728,25302,40952,52214,149632,1999,2111,3259,63362,89961,220561,39777,26335,9063,10572,12416,34551,34623,38604,24723,5947,15588,69927,66252,119177,69173,46629,28714,70715,212408,20521,406913,74380,11716,50659,50862,37009,88460,130101,7210,53853,538,65120,151950,55806,163748,52837,13153,21100,16674,64536,6091,138201,44837,58547,3723,163,2177,32288,85454,34033,8497,14282,25742,10535,10741,79559,117493,243787,49337,100718,79495,40139,42956,7551,55433,15421,31509,23034,45081,547,61176,53434,328001,8470,36263,30145,4519,74173,53935,11845,73774,60211,78025,3,4102,73782,109293,315332,48412,26683,13714,6865,20128,18490,104141,325,39470,171970,115860,15707,7268,73301,74336,31370,2368,111827,107757,136231,142844,97138,96638,84053,38691,23801,1588,10573,122098,77039,240,186135,146101,11996,18143,112963,46171,155836,348769,47795,121213,116266,132515,3344,144804,31286,99187,255838,129694,35894,48779,55235,148582,71967,65282,15174,13920,47080,6147,108242,157593,125025,7136,1286,28957,127956,28402,98813,20805,7532,109417,40610,5041,32958,15142,18408,108596,33543,50517,27748,80114,233434,91447,487,37094,100048,30541,43477,10639,89862,155868,37667,8726,60684,237903,73408,99589,12190,38739,97348,3914,13594,2680,149016,13907,30171,28343,23530,115225,61104,35821,147679,14337,4297,244282,24085,326976,56428,7851,21303,131620,71446,83253,68692,111870,5224,15813,38197,49026,45057,13660,3306,76345,40671,27905,91072,996,68527,62085,91351,122634,55109,168209,2024,27560,112707,17352,8306,167115,169921,166958,5031,46020,11844,67284,19130,76185,6920,32849,5450,14610,22451,21002,17392,31872,66682,84796,13709,40210,59898,12029,8719,53564,21462,91884,21647,88379,194428,12754,37797,132826,160016,22567,54383,53186,77611,31107,8339,4694,19185,90355,23597,17222,140675,28442,23668,55977,9128,61555,28774,155229,17658,9390,24379,69357,15752,127381,239631,62460,93181,55913,45133,140155,18676,25249,33164,29581,82837,67223,22362,29975,7317,52813,1943,29613,20012,207130,49617,49651,5636,15334,36313,29226,28084,95247,72072,19e3,224932,15811,114,32127,38097,37508,88507,37225,27359,91626,12193,69279,20608,11055,88156,92808,2152,57259,55275,72789,24475,104414,1708,9882,3818,48661,66897,1631,34806,227930,85815,87753,18321,250664,72733,25107,206797,50891,8082,196411,92596,96764,152823,65514,22819,387277,62176,51225,40329,15563,189,3659,73670,64357,51793,275136,33482,86653,74615,67058,11318,125720,15388,22388,8267,1730,102663,170910,40784,7144,85373,13040,7088,94309,583,44224,140424,77439,18496,164026,36578,4722,9151,5824,63365,26510,35199,40500,79277,32495,44614,35233,9566,203293,152144,7097,2330,183480,98629,13423,330887,44130,68600,30939,97829,31012,345465,56747,94879,4939,160027,149761,99423,46099,32251,15332,8761,96094,128555,5763,235318,222223,55729,30241,55420,201746,3987,81382,8259,49325,23287,7719,24633,251100,92311,18591,110533,64759,170260,393860,7175,21144,132887,3593,75346,101277,91109,16387,259187,11627,57459,173829,44694,55780,49797,89192,120443,62622,3904,14814,23887,1027,112258,64955,99800,11132,66353,36202,48624,18158,88481,96882,43059,11040,2455,7077,21651,181159,99126,100434,61388,68186,19161,110468,120052,8819,55324,41494,7014,37689,3618,87729,92615,207943,9823,128657,12587,15857,6379,67628,51216,71775,157617,63244,1503,3864,218754,110864,5769,21492,7243,1192,87921,85529,31512,18537,42698,35350,73510,84474,34301,8991,21013,35034,566,38832,19838,35586,37216,39413,55006,12178,59742,856,84563,6900,25632,17437,49786,30723,13847,70845,4044,7843,23944,235976,55530,48942,6518,20939,73769,192653,52936,95207,23895,132542,142982,22632,87452,48042,54018,178468,10728,26230,23559,363,81269,142012,5718,346258,31456,84333,246476,51018,66692,101804,120570,39962,30373,70593,2864,60541,19425,54209,104092,7201,31545,48018,25865,15442,46257,40443,8328,6451,111782,47527,97754,33046,470,245116,31095,39,91934,87208,73470,36708,36521,12801,70624,36272,8892,79768,12427,55454,103756,5908,52390,62962,22720,141138,94634,41689,128402,126390,6628,106394,35527,134394,82727,254651,194502,148064,89549,3202,28359,957,21954,27906,49840,142747,8307,24206,48978,1186,71728,133038,71474,91306,6333,110959,74600,70387,18983,62609,56057,22970,1147,135850,1321,28834,3578,59715,102227,32827,81415,99952,55636,257598,390,22702,35701,85872,402916,39216,189795,14929,19467,10112,144422,61514,5279,63421,134686,41436,8424,51925,10598,132295,124416,4604,194739,210929,57866,31829,51626,50007,9976,91878,61906,56168,81906,60918,61859,40017,23059,16887,40927,62064,12785,32893,32913,21782,93965,20169,44387,79084,38463,11457,93950,27127,157050,2697,337088,5116,54128,48255,33279,8821,27352,25515,124022,65710,28906,38557,33390,1722,104435,72215,38551,12094,30978,25113,6671,37355,175109,42862,98024,65406,221276,59624,118012,64637,78760,86697,21426,1639,40350,12584,67193,84144,31396,7863,143011,69629,63112,9454,28666,65798,46372,134721,6314,51402,30837,151922,2847,38676,38008,92823,136245,17540,5504,109295,205242,37606,5211,214892,1586,20670,208711,137743,19328,40652,16995,20023,14657,154919,34422,12996,13918,38221,47690,16398,2959,37680,89122,6721,198469,91876,172043,83898,101992,26084,94570,3635,76958,22853,76497,38266,176590,168403,44464,142840,79180,184594,1984,41806,83147,11985,6546,366068,59732,24533,271505,8736,39084,222992,93429,28962,58985,86665,8432,30028,14548,32439,54424,165029,55175,27458,69046,121277,46168,33732,20661,24581,135574,123110,37556,79260,72611,16957,12939,46162,58238,44907,72936,253758,41324,32518,96480,11949,124438,65280,43256,34107,53533,43531,37037,28366,45970,32741,173438,6121,194202,62969,26355,30314,58370,28455,1848,50519,82830,90393,21761,295490,10936,256940,133568,44050,20269,4089,27457,21610,219460,36743,14821,101388,52005,13124,30979,140816,167362,26054,18458,60789,34917,40447,26606,33422,9066,3452,83614,5761,20263,137238,25038,91310,101,52322,74548,42572,38084,214054,186568,31802,17665,30620,141936,37730,14420,4265,187218,49640,188208,51441,55388,96452,66659,40869,42039,60967,221027,19234,178581,29105,96050,9165,196118,157335,3738,40354,117436,2965,34136,59659,15570,50843,230035,31444,71260,43886,18316,5387,38500,168508,17406,32174,8828,103373,143806,90367,3560,18719,122310,16508,26719,2541,105429,6645,37998,73190,10591,235916,49737,87112,233941,53188,32193,79154,4544,52905,126477,7580,63501,57314,3216,31337,6541,103083,60846,49,9756,15481,1355,43840,14319,13743,27486,10222,73114,230718,418644,16706,6674,279748,23058,45273,295831,86306,2743,5535,88773,21829,35253,120938,31153,3169,16839,42847,8751,80974,33942,36867,35514,16485,26474,77775,56877,5391,48346,3882,108713,31403,27804,55248,26235,43821,136104,40118,175507,28034,203908,18732,1788,34030,106427,36958,54359,7251,44936,15356,69139,455,157915,22173,140291,50348,43275,82066,49621,54952,15216,36226,96695,66855,6936,1987,8227,196087,4631,68827,99004,47541,110265,17953,147605,110242,58520,31312,38724,329975,642,3155,34497,75937,6207,73843,6120,17249,51429,117746,3218,910,68961,319671,14938,29555,34700,1649,66673,72268,9655,76800,153087,6941,210168,27130,35398,1780,73242,3135,56689,19556,165307,8765,35967,121458,13333,70453,17350,117253,22265,13340,44265,39869,441,3742,135025,23581,33309,16543,17731,13291,157637,283005,21408,101360,63887,52312,83873,5338,233779,23759,186949,34531,177320,38069,156465,91004,19353,59852,68160,14891,1338,1072,29823,1950,28901,81407,313445,73038,84807,162348,240257,37162,138934,16111,58013,41253,102951,16457,96056,19541,56402,67217,41638,94381,89674,29481,37456,80815,151579,13937,13683,132537,19699,134545,67020,29816,222341,141235,427578,48868,129557,233342,23077,87871,16213,18728,16184,9469,37913,19680,2798,171356,178328,13216,50049,72690,71904,124644,55455,7504,29052,41036,266546,19899,30391,188755,8659,59469,16,104298,112943,53865,76203,138226,68857,139953,14125,107625,119795,173133,4398,50273,48808,54390,16466,122086,31835,67035,50971,48859,7508,46427,66477,73021,84615,39985,83076,46779,201569,53336,36443,60865,168164,143810,51393,25548,169307,32896,24485,38424,21837,29087,275813,51674,6714,64883,46169,187369,55186,76192,12852,12018,62134,31067,118303,16542,12125,10579,4928,26291,43854,7091,10946,253716,109062,39283,17261,113012,258512,47764,125126,32646,55892,80279,201623,149872,3192,385,1208,48750,5376,58738,22335,5427,82416,47811,32435,143086,38930,94128,59975,156037,37977,38224,62485,7698,50405,71027,16462,21559,136153,34131,107506,162069,63703,3101,215029,40407,4178,3774,9187,80019,17880,97926,67579,2600,18405,8351,47924,86638,70820,92206,86453,29610,42241,119200,3198,15466,67813,57863,35454,4779,99518,4649,104641,144269,33730,38073,65864,6838,109456,193298,154007,5623,45741,30846,182578,25573,157224,1543,58575,138703,146140,44971,49356,18275,59064,20300,13122,11848,24453,11973,9797,86843,2919,25530,49210,1130,161220,76788,75373,85604,34926,36014,17777,17255,51533,11676,92226,51845,119859,21525,5936,18507,28050,1140,31418,14857,34207,47859,10750,36382,32079,106909,59426,87757,38393,110042,15965,97104,33757,35344,97993,53979,33651,45407,41884,82515,173089,7177,58371,35365,47543,51927,35587,10670,23544,29306,84233,39976,76076,62097,9007,8668,28119,78281,120790,19835,143020,54968,18670,64959,20649,34469,42570,33001,136570,87796,120044,1106,58700,63951,127623,12805,83057,40212,31773,49850,7361,54336,347524,101314,23751,19569,48791,29174,49369,20467,7465,75842,38281,623,112457,60210,28849,51003,94720,6426,90047,85560,43761,3579,85105,34607,90410,118528,7224,42907,111163,18168,6960,161135,191298,5247,100584,127552,171568,20121,91173,12636,54615,20199,63730,98105,2396,40387,14438,125012,4765,33235,12865,45299,37728,82098,77872,114037,59253,19675,24838,398016,102561,11446,17069,57508,178277,65836,99941,26114,2585,271882,136866,50126,11027,155648,118367,14585,8910,123015,335383,40434,41016,53021,14439,87098,176860,201543,121888,2358,9286,5739,22666,54270,37884,169381,33984,93859,16124,89364,72207,51639,76366,99029,65812,2198,12147,174891,194289,6986,30252,88822,21284,11445,288337,160821,33034,100869,43852,25761,52882,1144,103809,1924,84458,86079,43411,13542,139276,18141,34978,41298,7276,26481,173800,33210,17951,142652,33616,33677,2210,19941,98568,2486,192414,80136,12058,235883,50963,249638,29572,27221,47034,6124,72107,63346,97620,158513,299699,40388,23235,37176,224244,198386,121323,67992,23827,63170,17838,106622,158590,26807,5345,23489,91891,55474,74834,37981,13058,5977,72552,34706,26828,145172,19904,21367,34043,960,77092,91381,4733,47446,7680,41697,5170,16960,14741,46101,13656,473,51842,37433,11103,11551,121951,13191,97536,165932,50397,51628,129028,9069,44885,6590,59195,47045,32940,225472,90345,21833,13303,29407,96615,141951,5198,6028,18395,7181,3861,14966,156358,167182,36529,55253,25942,173153,30959,27261,50691,150176,162201,38467,48462,80602,42163,118482,168,108756,26011,17166,54149,456538,22512,91374,13816,90358,131615,18132,226707,1824,28139,26860,42253,93877,77351,65575,8980,80574,22020,27948,40422,91324,76376,13528,39281,91685,82215,122541,144066,1983,193851,17283,26320,2739,194978,4790,26845,42627,61300,65815,174612,55133,4200,191130,79771,158321,52280,166796,221620,62461,11278,4067,88152,83409,31717,121367,13522,47325,37945,10406,174348,249321,154101,64912,29938,51775,17220,15776,166138,78890,84425,54121,42861,16368,24572,291647,10197,32073,22651,11677,97509,26952,35787,18424,41910,71614,94977,72318,41594,70024,275419,37702,60199,7335,39107,61315,18271,18394,33768,87884,104277,123724,7277,56288,71981,189803,49320,3352,6798,14240,8954,69220,94433,57372,28620,68863,193727,85575,42309,41667,67689,42081,22543,44824,12719,28540,114236,101553,27638,27296,4300,5353,4663,19379,94098,3758,95888,95144,80344,87320,28447,259518,12718,71391,152731,37063,24132,31911,104896,15672,103782,1521,4945,72541,23717,122632,15619,87175,206120,29428,189780,61416,28350,44457,972,1175,47233,198738,95789,41907,21953,97034,59341,22864,53713,16873,32971,20693,20954,31336,21477,16169,38370,16412,9019,3841,24599,21938,17085,6484,81198,76413,5849,72514,12320,65247,276175,37234,59796,52642,16312,57349,198507,94148,46134,18958,125552,1747,18725,151873,14901,5490,68287,29470,3689,64794,40814,26018,25692,54450,2703,88278,124886,173087,174e3,24159,179477,24276,46004,201876,209202,445,52876,31948,30206,157610,39180,18439,44124,50469,5774,96278,222758,200216,50290,45486,20435,46986,46276,140133,142326,15569,13363,47522,92583,2182,7135,16853,22998,30272,4952,63263,35623,39096,53789,44864,20053,110392,124213,4630,16087,28221,127787,25839,77481,44693,13464,113146,6983,27069,55717,50102,4760,7107,26186,66507,59145,36032,104182,71328,29425,64317,50781,47465,94298,69706,74899,22754,120756,25108,93077,56834,73286,39928,16218,41699,176763,7555,70819,50083,26895,23315,26014,16773,123079,41712,5719,31516,90427,158540,85051,183128,40864,27505,55392,9058,45224,96857,30901,136622,96557,56304,120061,11501,151448,5773,89743,7769,86069,2935,18471,41628,10114,33660,110170,49479,26745,92846,33221,26731,18795,87076,8550,2100,29972,120289,3077,72490,33784,2630,208722,50861,63483,79029,6419,39467,14302,45286,64207,9686,67513,44170,1050,77246,59266,17055,53801,7150,11111,42432,4278,94579,362117,36175,42902,41933,39002,98489,22913,74161,84773,57036,17556,162288,74485,178760,93867,73635,128860,50362,261,67455,80001,46080,35662,4368,25247,19230,74393,22588,1822,27682,235324,13798,85998,13194,235067,23514,71669,147632,23191,134748,214683,105101,1518,25489,247114,7380,54842,26922,3971,26361,20844,68642,170517,77339,123255,8963,77818,150998,48466,36806,2732,23261,11741,236162,18243,126216,28690,50546,16385,92760,197383,246558,201295,88255,67588,71687,176076,172653,169058,33906,63747,24835,157621,43338,30050,46152,132741,2770,51371,94835,6614,15112,11749,56936,1250,19027,399017,58036,100215,23388,55815,308768,124152,94803,9521,64186,8971,28,30427,62163,7616,103838,35079,29203,131235,7743,17389,10882,37420,61460,228512,85363,41581,131077,62822,119647,10130,54445,26925,19968,29016,24446,74028,24176,61448,67185,9254,8563,119129,9771,99184,37716,39514,10532,221512,258753,218630,55980,23394,32141,61924,66749,32411,3741,36475,26678,77010,44946,91203,128749,116953,20476,49625,53116,13735,102335,29376,51946,83407,67892,59212,34685,21083,1546,112982,32972,74397,1078,190545,16082,86140,58591,89611,101531,10061,105104,76319,20035,17551,52611,169061,190842,100780,23907,90413,115619,9675,34710,193435,49443,129734,11183,258877,16318,136182,126808,44635,27304,192375,2599,125648,47051,12091,23814,721,58800,40137,66726,97930,60877,74487,7942,54326,9841,41428,13762,8211,85383,6950,99177,79806,201786,296464,124087,13144,29741,41721,47634,55088,254286,106408,17041,99064,12942,64086,45233,14005,2612,55827,255,7984,13980,38574,12776,46654,73499,249951,2101,26676,25996,132326,116415,119062,50449,31033,23038,11589,179252,20007,14860,129270,21143,17796,144715,60106,70758,69842,34674,282133,44014,16774,57268,38528,24053,46373,201667,28327,471023,51889,102667,21193,114909,84132,69317,96723,67969,16134,68145,15058,28765,32035,2524,101089,98664,25045,76571,14957,86040,118506,262428,154764,81573,39681,283900,73287,127825,544,80448,52347,38512,175971,15180,45467,33086,46552,48894,81107,43213,36672,54025,76703,8053,7608,13299,56619,20752,238099,54164,105133,1444,32942,953,37564,8e3,66316,119463,106817,404,13667,149108,128597,31267,10269,49836,106150,1484,52330,76965,160486,171648,38456,31263,22424,37738,66245,67467,143369,60471,75610,20895,115528,86070,60854,40796,49347,18989,15030,11371,37578,15779,79867,10187,86462,46402,155626,93200,40229,7090,57547,108053,99598,11088,47505,41218,206017,2173,20988,30219,22919,80563,57566,42369,93141,41675,2407,182519,120495,27154,16702,29456,14349,7958,16688,117177,140375,42467,261919,74916,153569,10836,34742,49526,7621,105997,12212,2270,392377,7755,17959,25086,232152,138791,33847,13860,35316,5811,1344,71259,50452,207539,92635,50359,5821,33674,30255,2086,2587,96264,17543,42,6029,9580,43007,139248,82831,12917,29607,25786,51467,42137,85161,100698,31561,88989,121990,278500,3602,109344,37982,15279,116442,28936,30880,87894,58079,128661,126731,67392,28051,146885,4861,16216,97344,42827,147561,153948,22684,21335,47685,1853,43349,15185,59642,10229,25520,187921,108972,5579,98037,24945,6697,19193,63734,137934,75056,89740,19767,224268,56138,63643,151661,39313,70618,84031,89723,84074,13703,85626,35460,8867,64845,3439,57906,99776,63968,49270,81130,34356,16210,23547,36446,34090,140028,72439,2221,22163,57058,363492,113754,18913,95451,48663,54464,54037,176097,68425,3023,34906,29482,117389,341780,80431,58330,16753,92616,60907,94846,147486,4498,48646,7773,46801,7778,18946,464978,47558,33223,177444,7328,15626,63337,94700,11743,9351,255024,39098,16447,42647,96230,39769,58840,10068,63439,35800,65843,58823,413844,9156,51258,7434,61791,85018,6872,3692,28096,7121,33024,6009,75532,31997,192535,9661,3304,9547,14753,31987,25314,55689,15896,20430,39472,31340,99744,25398,115569,54883,28719,205423,23071,57855,64638,149867,25671,82403,37616,20668,39989,77996,74948,140555,175248,64810,36515,46595,4958,248773,24045,28728,136673,168704,20804,114833,100325,27135,21205,96151,153134,45992,7093,13992,76047,1980,19432,145001,75159,87462,17710,1013,45556,34297,144882,20648,26061,11319,129567,108555,18872,464580,33386,22717,65948,167189,5603,135042,79542,8801,202632,18114,91882,5973,5239,67315,4431,60916,47819,71693,32597,32606,18183,45072,80329,76385,24749,51305,40314,156514,14693,130345,13168,66214,18029,12858,34801,27628,14544,10823,40522,40185,33739,148694,23548,9923,61012,28859,17933,19442,34364,99849,164107,141167,30629,21054,6744,36491,8096,42474,41706,155060,30650,10600,163442,1143,96655,61390,52359,7559,51568,64256,203854,4467,22453,14504,436398,7878,6980,8293,63610,293747,16167,35763,19627,147603,15419,18032,110744,51346,33681,54571,40472,48615,39073,21604,13754,173027,92560,11083,47299,63062,11813,52007,29883,9734,139722,15953,1550,20651,13616,49306,16113,90089,92326,7584,30712,72424,164858,6831,152871,55746,197721,34167,196442,6022,112107,55215,7538,123381,4920,43539,77165,8939,50392,34192,20225,79762,22505,58667,40770,29788,97180,82835,4568,8579,13273,363569,35898,49983,436,36598,3237,131691,62418,35591,8101,4073,379438,65218,76072,33887,2968,27573,212619,288680,68278,72851,150504,217896,6913,121339,22017,35340,51072,43616,75043,31437,10833,81487,4364,22968,41454,106687,85446,19863,109625,149241,524,141850,214404,54376,657,237023,9401,108137,53800,32474,49712,53334,126876,27337,45552,177696,8269,15036,12097,42240,2328,125374,119295,99715,2500,19624,39441,27220,102691,60957,94543,39101,18566,67362,13975,78230,25017,34017,239007,90027,39351,41681,35354,43822,1043,916,58587,141983,94818,38799,75459,41114,67432,16195,36606,59568,22272,126769,31424,68659,12287,134302,257977,5756,207285,95637,47248,117689,19583,77451,22373,12200,54993,117118,34244,29386,34562,53819,71267,64172,77665,49368,7716,59301,25749,45426,194789,17297,2650,1766,32501,45198,20403,20984,6600,14171,94604,19037,5402,29896,9938,59935,109708,88081,145182,44844,39167,352626,164173,35374,45982,6122,154,73419,220487,53834,53601,17992,8609,229321,5610,68098,66815,71012,95069,140968,27396,8957,134489,24656,86659,56598,134852,17316,123838,255436,6613,41610,138033,81452,32023,32396,123687,63398,8693,29712,30407,19296,121188,3551,36099,20032,111948,56624,16547,27453,35916,15378,52039,56849,13489,22214,73177,53097,277349,2157,14029,187886,10260,141743,246460,91880,50869,3788,49486,133566,54950,33120,129337,53768,18333,9525,26902,312251,10297,9020,70759,16647,112432,59260,84609,9818,82766,73569,468,46001,75780,55028,52106,11498,43645,108069,17150,17753,29417,16705,31799,9606,289,122254,115975,8620,6133,255357,56908,14456,133464,43554,79224,11247,29630,160,12756,25464,65960,350428,62521,321796,100359,67358,35169,46172,113128,48988,88868,31094,33266,6847,60887,98188,49659,69117,92977,220228,13947,80181,35103,62170,97351,13475,2440,199768,19498,36597,46971,25234,67806,62881,84717,73648,181966,10488,94149,21550,26655,63436,48375,14405,165650,9621,24439,28043,42735,4490,29963,56674,45373,1934,262446,50855,67098,26898,5261,52696,40644,33900,9440,180286,87162,22940,19704,26936,69769,10254,101759,27406,12243,48e3,73926,113215,54935,5726,192787,4312,106216,9366,11550,52949,23457,212271,277152,133895,108374,6191,96477,29980,218916,58024,54696,40853,91124,65894,91170,65908,252552,6793,29212,15389,44516,122515,52617,35058,9017,103536,39510,49136,19242,130652,662077,74699,47024,31422,8517,73351,24399,13867,128360,4810,4434,61779,111983,61036,17798,110240,59722,102960,39688,10001,23803,23039,176498,56659,44814,134295,17188,77577,74466,226175,102472,154333,63900,111747,18062,41171,79669,32773,408933,42562,28931,30907,107388,43487,2946,240310,23938,24354,319,184983,7927,6488,1422,10790,68809,68209,64775,4361,202,17123,59634,51200,44391,18188,17843,2619,74278,3230,9540,47187,21702,36274,56894,43907,16310,34790,16866,6150,5561,13587,107545,108873,126867,86986,28640,33427,19017,5762,80637,17430,46903,2047,131055,25958,13558,5444,47152,13900,44563,122857,45348,70863,39593,54332,38068,33637,318,40310,143467,18502,24520,11377,62013,28942,27246,28269,83545,17999,59015,90707,30065,15161,34720,1263,37008,2012,6060,98575,92933,5721,299,199555,24578,29223,2985,743,115825,109523,136657,47454,26378,53586,3733,174945,93340,244456,5693,37386,28782,89767,27545,23573,18798,136425,34320,84778,20041,48453,38215,7477,71958,40621,8773,5874,187927,105965,51100,43533,18083,8443,10180,43597,2003,183999,69689,12216,129696,146188,62389,34044,68410,12765,43273,26949,266807,3345,34477,79197,5688,47539,213110,21634,22257,50092,32222,42346,39530,63668,98,134978,74022,5152,59088,174145,37220,9934,9545,118937,5724,87240,19875,15784,40143,23263,87513,181654,285152,37881,263241,4966,43934,10433,186657,6470,74416,225854,25908,142677,246262,32280,6192,75890,45546,143264,135305,29742,47013,77787,11732,126658,8763,37950,21806,57557,113464,89465,108995,164574,23894,22996,23169,15369,23117,17642,130607,40503,36239,280990,44666,9981,40427,147487,26869,168452,32886,32991,46798,240839,15111,70502,65697,88548,44145,28701,48767,31139,206777,35659,181164,166262,14554,171445,31786,66523,76607,17956,6507,31279,90476,116611,167918,6560,1243,115324,80128,41867,55897,187323,37069,32596,189444,145931,13390,105530,65709,26805,6999,55714,41300,22915,68951,22138,21120,22264,10058,19945,33635,56123,99085,10032,5818,6016,46649,57476,35264,94413,112522,262288,93686,83038,14341,23204,28807,66084,77987,6101,126673,7133,38126,5923,122091,170240,97772,46874,215746,43948,41622,3272,55596,8332,146411,251315,13533,8561,81521,115449,48616,175175,2063,186556,3036,134537,75772,29728,82360,22973,186559,86348,89100,38388,82297,45610,2613,87082,9986,177812,57884,23591,47485,42543,33582,44713,74439,257444,252451,31825,35631,38540,33066,5147,13973,4343,51830,70378,22827,26448,95560,36896,241741,48067,203953,298860,61620,20450,3220,67272,6586,107662,100160,108684,6929,57226,4762,7457,1320,40404,77204,99309,62750,208653,59977,44e3,74315,34332,5819,172217,64904,114077,18147,84012,1791,98456,90930,21446,116669,103938,7422,85140,59713,5768,326211,16239,75411,13229,29398,10758,236107,1539,112472,95979,152154,151294,306,21196,38146,10700,6891,84282,109646,56492,40539,6589,119491,51354,30685,140209,136906,29622,73617,49553,70525,51671,166869,139616,74395,37439,49595,45678,11959,33211,86560,52434,9282,62690,112155,130810,5243,108261,99970,265613,72551,80049,6391,33365,90721,66737,69872,87011,1860,9032,112544,60905,37371,89015,140351,19076,850,373531,2802,36725,218795,72062,28990,16550,24614,7815,6187,26336,33373,32162,42791,73555,32062,23386,10244,56392,49442,27076,136262,12412,14883,1134,33675,97153,199281,15608,100152,74072,47942,254301,36451,16026,10687,65067,56708,254030,30290,50490,13864,57941,259331,35588,23485,43486,24869,21620,92971,22072,88645,1048,182050,13343,32452,14825,19509,3325,216938,45740,99716,189082,53740,78245,25609,24311,176777,47340,308354,40669,66085,14102,125339,9225,128709,97207,1271,200933,78439,113451,88975,18324,46521,11819,18570,141756,72512,170020,52754,63550,118515,103073,93330,32736,50499,14722,31600,68452,398867,29316,172786,18417,104924,2606,5670,84818,16288,67106,59580,82929,607401,291,85829,359,15897,35830,50696,65630,52672,22115,356968,29895,40837,231192,34024,38957,26722,406,23335,124952,72068,68804,13268,147101,164740,276569,162596,66943,11569,26654,66358,4777,23229,102127,5848,978,2921,59666,5371,28212,90108,42938,39320,2499,4271,108792,33510,125072,71653,65239,38250,66357,38577,13964,86251,35708,50755,36010,29448,12209,3844,38222,206337,100876,67827,137088,14167,252225,84163,195270,1306,5703,54198,779,46802,22028,51124,86759,70560,113164,35685,162145,45471,34561,422,2611,6464,47486,19223,38246,9191,18331,89942,243642,212364,15893,17518,22617,6409,30046,126182,59716,36560,104428,18846,26592,19458,50793,147333,30826,1388,27647,10922,14495,33545,19269,135828,39727,41601,46931,233379,49169,131130,182112,16276,82381,118209,142445,128310,19672,28740,82907,33436,3118,102206,28723,24819,41937,38854,5157,3881,111491,1142,9776,421673,152241,29309,14961,87854,6054,15424,3796,82656,54996,2108,55367,239450,154525,9643,118103,106041,64601,68549,48707,30266,25772,18740,9462,229669,91798,112152,191327,14493,72828,8175,66636,236474,25817,87351,129027,76653,20422,22983,71240,27846,44661,12399,46158,77704,53101,35032,11072,17300,109294,33638,24408,1895,11241,760,17584,82479,125877,63150,141075,34259,23274,81698,15732,43577,48340,91584,14688,16379,24481,150280,96420,262050,48635,43727,61819,56268,72003,88178,17281,79912,13218,122519,125295,166396,11811,2171,118930,67746,17636,178278,174656,95661,173039,83845,79689,17473,98555,127696,203415,54730,22925,232239,9309,12136,175026,20740,180188,10747,39816,314017,266131,10040,175732,112550,220651,31974,37393,888,23008,86799,4303,64905,148467,75337,251,3284,370102,50264,9835,5438,23655,4481,29851,329,12855,7162,64931,78141,12804,42372,296771,83547,18624,34874,86271,3360,48665,77735,88767,11463,63527,28889,22258,29140,194315,113924,25499,6406,31334,1845,4802,49184,43455,35469,127594,92970,61038,115005,38840,87761,106838,8811,20572,55637,11162,96721,132425,108925,2948,125457,36356,3502,75270,27622,127192,2561,123095,49394,61155,16897,110064,9699,89448,53356,19628,220310,21622,83036,9885,112214,6087,26713,17901,161912,91492,3440,68594,9266,92238,8087,6866,150194,72175,80701,13459,31836,43243,239700,95846,44749,50647,21945,230538,120612,132371,244604,5193,105637,34661,41341,68775,85393,1874,8771,33718,49672,77403,595452,99507,6490,58895,128742,7704,39239,73217,43816,62824,37804,199976,22361,80005,87514,94832,14089,4574,139975,59142,75523,100268,43906,53442,15152,2547,186002,17011,19513,204282,3343,60568,128318,119250,4298,51871,41336,71759,21921,45074,98169,145889,99427,11350,1237,5520,28799,7803,53702,21026,136352,38293,128690,12158,90132,44600,10184,26957,39459,126025,78904,82999,59373,39301,150198,120529,153042,20177,50089,14764,271571,30530,123161,38975,101562,22941,5648,124654,109243,69817,71675,49162,106884,21241,107795,30258,16572,188262,141456,7688,60718,8271,11044,32440,104608,103419,236109,93156,43293,128929,42107,67180,25201,115254,185488,130954,72813,167547,20537,39969,38432,22582,184022,1139,27199,5655,17767,97412,122606,209377,27070,35871,326617,188954,42680,73512,80911,22629,3011,95021,315242,157737,383,41821,41808,19335,27950,15674,25677,110950,35375,76835,59108,57370,35262,16569,160415,37706,78086,32041,49691,137143,9782,172080,50148,77917,6323,10110,69172,17711,21795,59511,76184,135114,31046,132319,59105,157578,20549,80778,57649,158421,65143,4575,72235,21899,10797,92745,34035,106079,80159,4508,78304,25350,75457,46458,32937,25623,47,8531,104751,84953,8138,36508,187199,66310,115274,13253,32461,38536,1916,42007,187160,35055,26325,84394,35963,94216,45590,97782];var Hs=15,Ks=class{log;peerRouting;routingTable;refreshInterval;refreshQueryTimeout;commonPrefixLengthRefreshedAt;refreshTimeoutId;constructor(e,t){let{peerRouting:n,routingTable:s,refreshInterval:i,refreshQueryTimeout:o,logPrefix:a}=t;this.log=e.logger.forComponent(`${a}:routing-table:refresh`),this.peerRouting=n,this.routingTable=s,this.refreshInterval=i??3e5,this.refreshQueryTimeout=o??3e4,this.commonPrefixLengthRefreshedAt=[],this.refreshTable=this.refreshTable.bind(this)}async afterStart(){this.log(`refreshing routing table every ${this.refreshInterval}ms`),this.refreshTable(!0)}async stop(){this.refreshTimeoutId!=null&&clearTimeout(this.refreshTimeoutId)}refreshTable(e=!1){this.log("refreshing routing table");let t=this._maxCommonPrefix(),n=this._getTrackedCommonPrefixLengthsForRefresh(t);this.log(`max common prefix length ${t}`),this.log(`tracked CPLs [ ${n.map(s=>s.toISOString()).join(", ")} ]`),Promise.all(n.map(async(s,i)=>{try{if(await this._refreshCommonPrefixLength(i,s,e),this._numPeersForCpl(t)===0){let o=Math.min(2*(i+1),n.length-1);for(let a=i+1;a<o+1;a++)try{await this._refreshCommonPrefixLength(a,s,e)}catch(c){this.log.error(c)}}}catch(o){this.log.error(o)}})).catch(s=>{this.log.error(s)}).then(()=>{this.refreshTimeoutId=setTimeout(this.refreshTable,this.refreshInterval),this.refreshTimeoutId.unref!=null&&this.refreshTimeoutId.unref()}).catch(s=>{this.log.error(s)})}async _refreshCommonPrefixLength(e,t,n){if(!n&&t.getTime()>Date.now()-this.refreshInterval){this.log("not running refresh for cpl %s as time since last refresh not above interval",e);return}let s=await this._generateRandomPeerId(e);this.log("starting refreshing cpl %s with key %p (routing table size was %s)",e,s,this.routingTable.size);let i=AbortSignal.timeout(this.refreshQueryTimeout);xe(1/0,i);let o=await Us(this.peerRouting.getClosestPeers(s.toBytes(),{signal:i}));this.log(`found ${o} peers that were close to imaginary peer %p`,s),this.log("finished refreshing cpl %s with key %p (routing table size is now %s)",e,s,this.routingTable.size)}_getTrackedCommonPrefixLengthsForRefresh(e){e>Hs&&(e=Hs);let t=[];for(let n=0;n<=e;n++)t[n]=this.commonPrefixLengthRefreshedAt[n]??new Date;return t}async _generateRandomPeerId(e){if(this.routingTable.kb==null)throw new Error("Routing table not started");let t=ut(2),n=(t[1]<<8)+t[0],s=await this._makePeerId(this.routingTable.kb.localPeer.kadId,n,e);return yt(s)}async _makePeerId(e,t,n){if(n>Hs)throw new Error(`Cannot generate peer ID for common prefix length greater than ${Hs}`);let o=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(0,!1)^32768>>n,a=65535<<16-(n+1),c=o&a|t&~a,l=ta[c],f=new ArrayBuffer(34),u=new DataView(f,0,f.byteLength);return u.setUint8(0,ne.code),u.setUint8(1,32),u.setUint32(2,l,!1),new Uint8Array(u.buffer,u.byteOffset,u.byteLength)}_maxCommonPrefix(){let e=0;for(let t of this._prefixLengths())t>e&&(e=t);return e}_numPeersForCpl(e){let t=0;for(let n of this._prefixLengths())n===e&&t++;return t}*_prefixLengths(){if(this.routingTable.kb!=null)for(let{kadId:e}of this.routingTable.kb.toIterable()){let t=nt(this.routingTable.kb.localPeer.kadId,e),n=0;for(let s of t)if(s===0)n++;else break;yield n}}};function qs(r){return r[Symbol.asyncIterator]!=null}var $s=r=>{let e=le(r),t=be(e);return He(r,t),$s.bytes=e,t};$s.bytes=0;function zs(r,e){e=e??{};let t=e.lengthEncoder??$s;function*n(s){let i=t(s.byteLength);i instanceof Uint8Array?yield i:yield*i,s instanceof Uint8Array?yield s:yield*s}return qs(r)?async function*(){for await(let s of r)yield*n(s)}():function*(){for(let s of r)yield*n(s)}()}zs.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??$s;return new Fe(t(r.byteLength),r)};var Gs=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},js=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},Ys=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"},zn=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};var cc=8,lc=1024*1024*4,br;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(br||(br={}));var p2=r=>{let e=Oe(r);return p2.bytes=le(e),e};p2.bytes=0;function Gn(r,e){let t=new Fe,n=br.LENGTH,s=-1,i=e?.lengthDecoder??p2,o=e?.maxLengthLength??cc,a=e?.maxDataLength??lc;function*c(){for(;t.byteLength>0;){if(n===br.LENGTH)try{if(s=i(t),s<0)throw new Gs("Invalid message length");if(s>a)throw new js("Message length too long");let l=i.bytes;t.consume(l),e?.onLength!=null&&e.onLength(s),n=br.DATA}catch(l){if(l instanceof RangeError){if(t.byteLength>o)throw new Ys("Message length length too long");break}throw l}if(n===br.DATA){if(t.byteLength<s)break;let l=t.sublist(0,s);t.consume(s),e?.onData!=null&&e.onData(l),yield l,n=br.LENGTH}}}return qs(r)?async function*(){for await(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new zn("Unexpected end of input")}():function*(){for(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new zn("Unexpected end of input")}()}Gn.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 Gn(n,{...e??{},onLength:i=>{t=i}})};var Ws=class{providers;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:add-provider`),this.providers=t.providers}async handle(e,t){if(this.log("start"),t.key==null||t.key.length===0)throw new E("Missing key","ERR_MISSING_KEY");let n;try{n=Be.decode(t.key)}catch{throw new E("Invalid CID","ERR_INVALID_CID")}(t.providers==null||t.providers.length===0)&&this.log.error("no providers found in message"),await Promise.all(t.providers.map(async s=>{if(!e.equals(s.id)){this.log("invalid provider peer %p from %p",s.id,e);return}if(s.multiaddrs.length<1){this.log("no valid addresses for provider %p. Ignore",e);return}this.log("received provider %p for %s (addrs %s)",e,n,s.multiaddrs.map(i=>yr(i).toString())),await this.providers.addProvider(n,yt(s.id))}))}};var Zs=class{peerRouting;peerInfoMapper;peerId;addressManager;log;constructor(e,t){let{peerRouting:n,logPrefix:s}=t;this.log=e.logger.forComponent(`${s}:rpc:handlers:find-node`),this.peerId=e.peerId,this.addressManager=e.addressManager,this.peerRouting=n,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(this.log("incoming request from %p for peers closer to %b",e,t.key),t.key==null)throw new E("Invalid FIND_NODE message received - key was missing","ERR_INVALID_MESSAGE");let n=await this.peerRouting.getCloserPeersOffline(t.key,e);W(this.peerId.toBytes(),t.key)&&n.push({id:this.peerId,multiaddrs:this.addressManager.getAddresses().map(i=>i.decapsulateCode(G("p2p").code))});let s={type:V.FIND_NODE,clusterLevel:t.clusterLevel,closer:n.map(this.peerInfoMapper).filter(({multiaddrs:i})=>i.length).map(i=>({id:i.id.toBytes(),multiaddrs:i.multiaddrs.map(o=>o.bytes)})),providers:[]};return s.closer.length===0&&this.log("could not find any peers closer to %b than %p",t.key,e),s}};var Qs=class{peerRouting;providers;peerStore;peerInfoMapper;log;constructor(e,t){let{peerRouting:n,providers:s,logPrefix:i}=t;this.log=e.logger.forComponent(`${i}:rpc:handlers:get-providers`),this.peerStore=e.peerStore,this.peerRouting=n,this.providers=s,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(t.key==null)throw new E("Invalid GET_PROVIDERS message received - key was missing","ERR_INVALID_MESSAGE");let n;try{n=Be.decode(t.key)}catch{throw new E("Invalid CID","ERR_INVALID_CID")}this.log("%p asking for providers for %s",e,n);let[s,i]=await Promise.all([this.providers.getProviders(n),this.peerRouting.getCloserPeersOffline(t.key,e)]),o=await this._getPeers(s),a=await this._getPeers(i.map(({id:l})=>l)),c={type:V.GET_PROVIDERS,key:t.key,clusterLevel:t.clusterLevel,closer:a.map(this.peerInfoMapper).filter(({multiaddrs:l})=>l.length).map(l=>({id:l.id.toBytes(),multiaddrs:l.multiaddrs.map(f=>f.bytes)})),providers:o.map(this.peerInfoMapper).filter(({multiaddrs:l})=>l.length).map(l=>({id:l.id.toBytes(),multiaddrs:l.multiaddrs.map(f=>f.bytes)}))};return this.log("got %s providers %s closerPeers",c.providers.length,c.closer.length),c}async _getAddresses(e){return[]}async _getPeers(e){let t=[];for(let n of e)try{let s=await this.peerStore.get(n),i=this.peerInfoMapper({id:n,multiaddrs:s.addresses.map(({multiaddr:o})=>o)});i.multiaddrs.length>0&&t.push(i)}catch(s){if(s.code!=="ERR_NOT_FOUND")throw s}return t}};var Xs=class{peerStore;datastore;peerRouting;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:get-value`),this.peerStore=e.peerStore,this.datastore=e.datastore,this.peerRouting=t.peerRouting}async handle(e,t){let n=t.key;if(this.log("%p asked for key %b",e,n),n==null||n.length===0)throw new E("Invalid key","ERR_INVALID_KEY");let s={type:V.GET_VALUE,key:n,clusterLevel:t.clusterLevel,closer:[],providers:[]};if(_0(n)){this.log("is public key");let a=N0(n),c;try{let l=await this.peerStore.get(a);if(l.id.publicKey==null)throw new E("No public key found in key book","ERR_NOT_FOUND");c=l.id.publicKey}catch(l){if(l.code!=="ERR_NOT_FOUND")throw l}if(c!=null)return this.log("returning found public key"),s.record=new pe(n,c,new Date).serialize(),s}let[i,o]=await Promise.all([this._checkLocalDatastore(n),this.peerRouting.getCloserPeersOffline(n,e)]);return i!=null&&(this.log("had record for %b in local datastore",n),s.record=i.serialize()),o.length>0&&(this.log("had %s closer peers in routing table",o.length),s.closer=o.map(a=>({id:a.id.toBytes(),multiaddrs:a.multiaddrs.map(c=>c.bytes)}))),s}async _checkLocalDatastore(e){this.log("checkLocalDatastore looking for %b",e);let t=Vt(e),n;try{n=await this.datastore.get(t)}catch(i){if(i.code==="ERR_NOT_FOUND")return;throw i}let s=pe.deserialize(n);if(s==null)throw new E("Invalid record","ERR_INVALID_RECORD");if(s.timeReceived==null||Date.now()-s.timeReceived.getTime()>1296e5){await this.datastore.delete(t);return}return s}};var Js=class{log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:ping`)}async handle(e,t){return this.log("ping from %p",e),t}};var ei=class{components;validators;log;constructor(e,t){let{validators:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:put-value`),this.validators=n}async handle(e,t){let n=t.key;if(this.log("%p asked us to store value for key %b",e,n),t.record==null){let s=`Empty record from: ${e.toString()}`;throw this.log.error(s),new E(s,"ERR_EMPTY_RECORD")}try{let s=pe.deserialize(t.record);await Nr(this.validators,s),s.timeReceived=new Date;let i=Vt(s.key);await this.components.datastore.put(i,s.serialize().subarray()),this.log("put record for %b into datastore under key %k",n,i)}catch(s){this.log("did not put record for key %b into datastore %o",n,s)}return t}};var ti=class{handlers;routingTable;log;constructor(e,t){let{providers:n,peerRouting:s,validators:i,logPrefix:o,peerInfoMapper:a}=t;this.log=e.logger.forComponent(`${o}:rpc`),this.routingTable=t.routingTable,this.handlers={[V.GET_VALUE.toString()]:new Xs(e,{peerRouting:s,logPrefix:o}),[V.PUT_VALUE.toString()]:new ei(e,{validators:i,logPrefix:o}),[V.FIND_NODE.toString()]:new Zs(e,{peerRouting:s,logPrefix:o,peerInfoMapper:a}),[V.ADD_PROVIDER.toString()]:new Ws(e,{providers:n,logPrefix:o}),[V.GET_PROVIDERS.toString()]:new Qs(e,{peerRouting:s,providers:n,logPrefix:o,peerInfoMapper:a}),[V.PING.toString()]:new Js(e,{logPrefix:o})}}async handleMessage(e,t){try{await this.routingTable.add(e)}catch(s){this.log.error("Failed to update the kbucket store",s)}let n=this.handlers[t.type];if(n==null){this.log.error(`no handler found for message type: ${t.type}`);return}return n.handle(e,t)}onIncomingStream(e){Promise.resolve().then(async()=>{let{stream:t,connection:n}=e,s=n.remotePeer;try{await this.routingTable.add(s)}catch(o){this.log.error(o)}let i=this;await Ut(t,o=>Gn(o),async function*(o){for await(let a of o){let c=Ke.decode(a);i.log("incoming %s from %p",c.type,s);let l=await i.handleMessage(s,c);l!=null&&(yield Ke.encode(l))}},o=>zs(o),t)}).catch(t=>{this.log.error(t)})}};var ri=class extends Ne{log;components;protocol;running;registrarId;constructor(e,t){super();let{protocol:n,logPrefix:s}=t;this.components=e,this.log=e.logger.forComponent(`${s}:topology-listener`),this.running=!1,this.protocol=n}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.registrarId=await this.components.registrar.register(this.protocol,{onConnect:e=>{this.log("observed peer %p with protocol %s",e,this.protocol),this.dispatchEvent(new Ue("peer",{detail:e}))}}))}async stop(){this.running=!1,this.registrarId!=null&&(this.components.registrar.unregister(this.registrarId),this.registrarId=void 0)}};var g2=class{dht;constructor(e){this.dht=e}async provide(e,t={}){await oi(this.dht.provide(e,t))}async*findProviders(e,t={}){for await(let n of this.dht.findProviders(e,t))n.name==="PROVIDER"&&(yield*n.providers)}async put(e,t,n){await oi(this.dht.put(e,t,n))}async get(e,t){for await(let n of this.dht.get(e,t))if(n.name==="VALUE")return n.value;throw new E("Not found","ERR_NOT_FOUND")}},m2=class{dht;constructor(e){this.dht=e}async findPeer(e,t={}){for await(let n of this.dht.findPeer(e,t))if(n.name==="FINAL_PEER")return n.peer;throw new E("Not found","ERR_NOT_FOUND")}async*getClosestPeers(e,t={}){for await(let n of this.dht.getClosestPeers(e,t))n.name==="FINAL_PEER"&&(yield n.peer)}},fc=32,hc=64,ni=class extends Ne{protocol;routingTable;providers;network;peerRouting;components;log;running;kBucketSize;clientMode;validators;selectors;queryManager;contentFetching;contentRouting;routingTableRefresh;rpc;topologyListener;querySelf;maxInboundStreams;maxOutboundStreams;dhtContentRouting;dhtPeerRouting;peerInfoMapper;constructor(e,t={}){super();let{kBucketSize:n,clientMode:s,validators:i,selectors:o,querySelfInterval:a,protocol:c,logPrefix:l,pingTimeout:f,pingConcurrency:u,maxInboundStreams:h,maxOutboundStreams:m,providers:g}=t,d=l??"libp2p:kad-dht";this.running=!1,this.components=e,this.log=e.logger.forComponent(d),this.protocol=c??C2,this.kBucketSize=n??20,this.clientMode=s??!0,this.maxInboundStreams=h??fc,this.maxOutboundStreams=m??hc,this.peerInfoMapper=t.peerInfoMapper??p1,this.routingTable=new Fs(e,{kBucketSize:n,pingTimeout:f,pingConcurrency:u,protocol:this.protocol,logPrefix:d}),this.providers=new Ns(e,g??{}),this.validators={...b0,...i},this.selectors={...y0,...o},this.network=new ks(e,{protocol:this.protocol,logPrefix:d});let p=ce();t.allowQueryWithZeroPeers===!0&&p.resolve(),this.queryManager=new Ds(e,{disjointPaths:Math.ceil(this.kBucketSize/2),logPrefix:d,initialQuerySelfHasRun:p,routingTable:this.routingTable}),this.peerRouting=new Ts(e,{routingTable:this.routingTable,network:this.network,validators:this.validators,queryManager:this.queryManager,logPrefix:d}),this.contentFetching=new g1(e,{validators:this.validators,selectors:this.selectors,peerRouting:this.peerRouting,queryManager:this.queryManager,network:this.network,logPrefix:d}),this.contentRouting=new xs(e,{network:this.network,peerRouting:this.peerRouting,queryManager:this.queryManager,routingTable:this.routingTable,providers:this.providers,logPrefix:d}),this.routingTableRefresh=new Ks(e,{peerRouting:this.peerRouting,routingTable:this.routingTable,logPrefix:d}),this.rpc=new ti(e,{routingTable:this.routingTable,providers:this.providers,peerRouting:this.peerRouting,validators:this.validators,logPrefix:d,peerInfoMapper:this.peerInfoMapper}),this.topologyListener=new ri(e,{protocol:this.protocol,logPrefix:d}),this.querySelf=new Os(e,{peerRouting:this.peerRouting,interval:a,initialInterval:t.initialQuerySelfInterval,logPrefix:d,initialQuerySelfHasRun:p,routingTable:this.routingTable}),this.network.addEventListener("peer",x=>{let b=x.detail;this.onPeerConnect(b).catch(w=>{this.log.error("could not add %p to routing table",b.id,w)}),this.dispatchEvent(new Ue("peer",{detail:b}))}),this.topologyListener.addEventListener("peer",x=>{let b=x.detail;Promise.resolve().then(async()=>{let w=await this.components.peerStore.get(b),S={id:b,multiaddrs:w.addresses.map(({multiaddr:B})=>B),protocols:w.protocols};await this.onPeerConnect(S)}).catch(w=>{this.log.error("could not add %p to routing table",b,w)})}),this.dhtPeerRouting=new m2(this),this.dhtContentRouting=new g2(this),t.clientMode==null&&e.events.addEventListener("self:peer:update",x=>{this.log("received update of self-peer info"),Promise.resolve().then(async()=>{let b=x.detail.peer.addresses.some(({multiaddr:S})=>P0(S)),w=this.getMode();b&&w==="client"?await this.setMode("server"):w==="server"&&!b&&await this.setMode("client")}).catch(b=>{this.log.error("error setting dht server mode",b)})})}[Symbol.toStringTag]="@libp2p/kad-dht";[L2]=["@libp2p/content-routing","@libp2p/peer-routing","@libp2p/peer-discovery"];[P2]=["@libp2p/identify"];get[S2](){return this.dhtContentRouting}get[k2](){return this.dhtPeerRouting}get[R2](){return this}async onPeerConnect(e){if(this.log("peer %p connected",e.id),e=this.peerInfoMapper(e),e.multiaddrs.length===0){this.log("ignoring %p as there were no valid addresses in %s after filtering",e.id,e.multiaddrs.map(t=>t.toString()));return}try{await this.routingTable.add(e.id)}catch(t){this.log.error("could not add %p to routing table",e.id,t)}}isStarted(){return this.running}getMode(){return this.clientMode?"client":"server"}async setMode(e){await this.components.registrar.unhandle(this.protocol),e==="client"?(this.log("enabling client mode"),this.clientMode=!0):(this.log("enabling server mode"),this.clientMode=!1,await this.components.registrar.handle(this.protocol,this.rpc.onIncomingStream.bind(this.rpc),{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}))}async start(){this.running=!0,await this.setMode(this.clientMode?"client":"server"),await _2(this.querySelf,this.providers,this.queryManager,this.network,this.routingTable,this.topologyListener,this.routingTableRefresh)}async stop(){this.running=!1,await N2(this.querySelf,this.providers,this.queryManager,this.network,this.routingTable,this.routingTableRefresh,this.topologyListener)}async*put(e,t,n={}){yield*this.contentFetching.put(e,t,n)}async*get(e,t={}){yield*this.contentFetching.get(e,t)}async*provide(e,t={}){yield*this.contentRouting.provide(e,this.components.addressManager.getAddresses(),t)}async*findProviders(e,t={}){yield*this.contentRouting.findProviders(e,t)}async*findPeer(e,t={}){yield*this.peerRouting.findPeer(e,t)}async*getClosestPeers(e,t={}){yield*this.peerRouting.getClosestPeers(e,t)}async refreshRoutingTable(){this.routingTableRefresh.refreshTable(!0)}};var y2;(function(r){r[r.SEND_QUERY=0]="SEND_QUERY",r[r.PEER_RESPONSE=1]="PEER_RESPONSE",r[r.FINAL_PEER=2]="FINAL_PEER",r[r.QUERY_ERROR=3]="QUERY_ERROR",r[r.PROVIDER=4]="PROVIDER",r[r.VALUE=5]="VALUE",r[r.ADD_PEER=6]="ADD_PEER",r[r.DIAL_PEER=7]="DIAL_PEER"})(y2||(y2={}));function dc(r={}){return e=>new ni(e,r)}return pa(pc);})();
|
6
|
+
`)}`:`${t} :`}};R3=Zt;S.Constructed=R3;Zt.NAME="CONSTRUCTED";var F1=class extends Re{fromBER(e,t,n){return t}toBER(e){return tt}};F1.override="EndOfContentValueBlock";var k3,H1=class extends Ae{constructor(e={}){super(e,F1),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}};k3=H1;S.EndOfContent=k3;H1.NAME=Pn;var T3,Qt=class extends Ae{constructor(e={}){super(e,Re),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(e,t,n){return this.lenBlock.length>0&&this.warnings.push("Non-zero length of value block for Null type"),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=n,t+n>e.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):t+n}toBER(e,t){let n=new ArrayBuffer(2);if(!e){let i=new Uint8Array(n);i[0]=5,i[1]=0}return t&&t.write(n),n}onAsciiEncoding(){return`${this.constructor.NAME}`}};T3=Qt;S.Null=T3;Qt.NAME="NULL";var K1=class extends Nt(Re){constructor({value:e,...t}={}){super(t),t.valueHex?this.valueHexView=K.BufferSourceConverter.toUint8Array(t.valueHex):this.valueHexView=new Uint8Array(1),e&&(this.value=e)}get value(){for(let e of this.valueHexView)if(e>0)return!0;return!1}set value(e){this.valueHexView[0]=e?255:0}fromBER(e,t,n){let i=K.BufferSourceConverter.toUint8Array(e);return _t(this,i,t,n)?(this.valueHexView=i.subarray(t,t+n),n>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,Do.call(this),this.blockLength=n,t+n):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}};K1.NAME="BooleanValueBlock";var _3,q1=class extends Ae{constructor(e={}){super(e,K1),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}};_3=q1;S.Boolean=_3;q1.NAME="BOOLEAN";var $1=class extends Nt(ft){constructor({isConstructed:e=!1,...t}={}){super(t),this.isConstructed=e}fromBER(e,t,n){let i=0;if(this.isConstructed){if(this.isHexOnly=!1,i=ft.prototype.fromBER.call(this,e,t,n),i===-1)return i;for(let s=0;s<this.value.length;s++){let o=this.value[s].constructor.NAME;if(o===Pn){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(o!==A3)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,i=super.fromBER(e,t,n),this.blockLength=n;return i}toBER(e,t){return this.isConstructed?ft.prototype.toBER.call(this,e,t):e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}};$1.NAME="OctetStringValueBlock";var N3,kt=class r extends Ae{constructor({idBlock:e={},lenBlock:t={},...n}={}){var i,s;(i=n.isConstructed)!==null&&i!==void 0||(n.isConstructed=!!(!((s=n.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},$1),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(e,t,n){if(this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,n===0)return this.idBlock.error.length===0&&(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length===0&&(this.blockLength+=this.lenBlock.blockLength),t;if(!this.valueBlock.isConstructed){let s=(e instanceof ArrayBuffer?new Uint8Array(e):e).subarray(t,t+n);try{if(s.byteLength){let o=bi(s,0,s.byteLength);o.offset!==-1&&o.offset===n&&(this.valueBlock.value=[o.result])}}catch{}}return super.fromBER(e,t,n)}onAsciiEncoding(){return this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length?Zt.prototype.onAsciiEncoding.call(this):`${this.constructor.NAME} : ${K.Convert.ToHex(this.valueBlock.valueHexView)}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;let e=[];for(let t of this.valueBlock.value)t instanceof r&&e.push(t.valueBlock.valueHexView);return K.BufferSourceConverter.concat(e)}};N3=kt;S.OctetString=N3;kt.NAME=A3;var z1=class extends Nt(ft){constructor({unusedBits:e=0,isConstructed:t=!1,...n}={}){super(n),this.unusedBits=e,this.isConstructed=t,this.blockLength=this.valueHexView.byteLength}fromBER(e,t,n){if(!n)return t;let i=-1;if(this.isConstructed){if(i=ft.prototype.fromBER.call(this,e,t,n),i===-1)return i;for(let a of this.value){let c=a.constructor.NAME;if(c===Pn){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(c!==I3)return this.error="BIT STRING may consists of BIT STRINGs only",-1;let l=a.valueBlock;if(this.unusedBits>0&&l.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=l.unusedBits}return i}let s=K.BufferSourceConverter.toUint8Array(e);if(!_t(this,s,t,n))return-1;let o=s.subarray(t,t+n);if(this.unusedBits=o[0],this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1;if(!this.unusedBits){let a=o.subarray(1);try{if(a.byteLength){let c=bi(a,0,a.byteLength);c.offset!==-1&&c.offset===n-1&&(this.value=[c.result])}}catch{}}return this.valueHexView=o.subarray(1),this.blockLength=o.length,t+n}toBER(e,t){if(this.isConstructed)return ft.prototype.toBER.call(this,e,t);if(e)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength)return tt;let n=new Uint8Array(this.valueHexView.length+1);return n[0]=this.unusedBits,n.set(this.valueHexView,1),n.buffer}toJSON(){return{...super.toJSON(),unusedBits:this.unusedBits,isConstructed:this.isConstructed}}};z1.NAME="BitStringValueBlock";var L3,en=class extends Ae{constructor({idBlock:e={},lenBlock:t={},...n}={}){var i,s;(i=n.isConstructed)!==null&&i!==void 0||(n.isConstructed=!!(!((s=n.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},z1),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(e,t,n){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(e,t,n)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return Zt.prototype.onAsciiEncoding.call(this);{let e=[],t=this.valueBlock.valueHexView;for(let i of t)e.push(i.toString(2).padStart(8,"0"));let n=e.join("");return`${this.constructor.NAME} : ${n.substring(0,n.length-this.valueBlock.unusedBits)}`}}};L3=en;S.BitString=L3;en.NAME=I3;var P3;function K8(r,e){let t=new Uint8Array([0]),n=new Uint8Array(r),i=new Uint8Array(e),s=n.slice(0),o=s.length-1,a=i.slice(0),c=a.length-1,l=0,u=c<o?o:c,f=0;for(let h=u;h>=0;h--,f++){switch(!0){case f<a.length:l=s[o-f]+a[c-f]+t[0];break;default:l=s[o-f]+t[0]}switch(t[0]=l/10,!0){case f>=s.length:s=P1(new Uint8Array([l%10]),s);break;default:s[o-f]=l%10}}return t[0]>0&&(s=P1(t,s)),s}function E3(r){if(r>=Nn.length)for(let e=Nn.length;e<=r;e++){let t=new Uint8Array([0]),n=Nn[e-1].slice(0);for(let i=n.length-1;i>=0;i--){let s=new Uint8Array([(n[i]<<1)+t[0]]);t[0]=s[0]/10,n[i]=s[0]%10}t[0]>0&&(n=P1(t,n)),Nn.push(n)}return Nn[r]}function q8(r,e){let t=0,n=new Uint8Array(r),i=new Uint8Array(e),s=n.slice(0),o=s.length-1,a=i.slice(0),c=a.length-1,l,u=0;for(let f=c;f>=0;f--,u++)switch(l=s[o-u]-a[c-u]-t,!0){case l<0:t=1,s[o-u]=l+10;break;default:t=0,s[o-u]=l}if(t>0)for(let f=o-c+1;f>=0;f--,u++)if(l=s[o-u]-t,l<0)t=1,s[o-u]=l+10;else{t=0,s[o-u]=l;break}return s.slice()}var Cn=class extends Nt(Re){constructor({value:e,...t}={}){super(t),this._valueDec=0,t.valueHex&&this.setValueHex(),e!==void 0&&(this.valueDec=e)}setValueHex(){this.valueHexView.length>=4?(this.warnings.push("Too big Integer for decoding, hex only"),this.isHexOnly=!0,this._valueDec=0):(this.isHexOnly=!1,this.valueHexView.length>0&&(this._valueDec=Do.call(this)))}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this.valueHexView=new Uint8Array(w3(e))}get valueDec(){return this._valueDec}fromDER(e,t,n,i=0){let s=this.fromBER(e,t,n);if(s===-1)return s;let o=this.valueHexView;return o[0]===0&&o[1]&128?this.valueHexView=o.subarray(1):i!==0&&o.length<i&&(i-o.length>1&&(i=o.length+1),this.valueHexView=o.subarray(i-o.length)),s}toDER(e=!1){let t=this.valueHexView;switch(!0){case(t[0]&128)!==0:{let n=new Uint8Array(this.valueHexView.length+1);n[0]=0,n.set(t,1),this.valueHexView=n}break;case(t[0]===0&&(t[1]&128)===0):this.valueHexView=this.valueHexView.subarray(1);break}return this.toBER(e)}fromBER(e,t,n){let i=super.fromBER(e,t,n);return i===-1||this.setValueHex(),i}toBER(e){return e?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){let e=this.valueHexView.length*8-1,t=new Uint8Array(this.valueHexView.length*8/3),n=0,i,s=this.valueHexView,o="",a=!1;for(let c=s.byteLength-1;c>=0;c--){i=s[c];for(let l=0;l<8;l++){if((i&1)===1)switch(n){case e:t=q8(E3(n),t),o="-";break;default:t=K8(t,E3(n))}n++,i>>=1}}for(let c=0;c<t.length;c++)t[c]&&(a=!0),a&&(o+=x3.charAt(t[c]));return a===!1&&(o+=x3.charAt(0)),o}};P3=Cn;Cn.NAME="IntegerValueBlock";Object.defineProperty(P3.prototype,"valueHex",{set:function(r){this.valueHexView=new Uint8Array(r),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});var C3,le=class r extends Ae{constructor(e={}){super(e,Cn),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return C1(),BigInt(this.valueBlock.toString())}static fromBigInt(e){C1();let t=BigInt(e),n=new Ln,i=t.toString(16).replace(/^-/,""),s=new Uint8Array(K.Convert.FromHex(i));if(t<0){let a=new Uint8Array(s.length+(s[0]&128?1:0));a[0]|=128;let l=BigInt(`0x${K.Convert.ToHex(a)}`)+t,u=K.BufferSourceConverter.toUint8Array(K.Convert.FromHex(l.toString(16)));u[0]|=128,n.write(u)}else s[0]&128&&n.write(new Uint8Array([0])),n.write(s);return new r({valueHex:n.final()})}convertToDER(){let e=new r({valueHex:this.valueBlock.valueHexView});return e.valueBlock.toDER(),e}convertFromDER(){return new r({valueHex:this.valueBlock.valueHexView[0]===0?this.valueBlock.valueHexView.subarray(1):this.valueBlock.valueHexView})}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()}`}};C3=le;S.Integer=C3;le.NAME="INTEGER";var D3,G1=class extends le{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}};D3=G1;S.Enumerated=D3;G1.NAME="ENUMERATED";var Dn=class extends Nt(Re){constructor({valueDec:e=-1,isFirstSid:t=!1,...n}={}){super(n),this.valueDec=e,this.isFirstSid=t}fromBER(e,t,n){if(!n)return t;let i=K.BufferSourceConverter.toUint8Array(e);if(!_t(this,i,t,n))return-1;let s=i.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,!!(s[a]&128));a++);let o=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)o[a]=this.valueHexView[a];return this.valueHexView=o,s[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=gr(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}set valueBigInt(e){C1();let t=BigInt(e).toString(2);for(;t.length%7;)t="0"+t;let n=new Uint8Array(t.length/7);for(let i=0;i<n.length;i++)n[i]=parseInt(t.slice(i*7,i*7+7),2)+(i+1<n.length?128:0);this.fromBER(n.buffer,0,n.length)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let i=this.valueHexView,s=new Uint8Array(this.blockLength);for(let o=0;o<this.blockLength-1;o++)s[o]=i[o]|128;return s[this.blockLength-1]=i[this.blockLength-1],s.buffer}let t=Wt(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",tt;let n=new Uint8Array(t.byteLength);if(!e){let i=new Uint8Array(t),s=t.byteLength-1;for(let o=0;o<s;o++)n[o]=i[o]|128;n[s]=i[s]}return n}toString(){let e="";if(this.isHexOnly)e=K.Convert.ToHex(this.valueHexView);else if(this.isFirstSid){let t=this.valueDec;this.valueDec<=39?e="0.":this.valueDec<=79?(e="1.",t-=40):(e="2.",t-=80),e+=t.toString()}else e=this.valueDec.toString();return e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}};Dn.NAME="sidBlock";var j1=class extends Re{constructor({value:e=tn,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let i=t;for(;n>0;){let s=new Dn;if(i=s.fromBER(e,i,n),i===-1)return this.blockLength=0,this.error=s.error,i;this.value.length===0&&(s.isFirstSid=!0),this.blockLength+=s.blockLength,n-=s.blockLength,this.value.push(s)}return i}toBER(e){let t=[];for(let n=0;n<this.value.length;n++){let i=this.value[n].toBER(e);if(i.byteLength===0)return this.error=this.value[n].error,tt;t.push(i)}return Uo(t)}fromString(e){this.value=[];let t=0,n=0,i="",s=!1;do if(n=e.indexOf(".",t),n===-1?i=e.substring(t):i=e.substring(t,n),t=n+1,s){let o=this.value[0],a=0;switch(o.valueDec){case 0:break;case 1:a=40;break;case 2:a=80;break;default:this.value=[];return}let c=parseInt(i,10);if(isNaN(c))return;o.valueDec=c+a,s=!1}else{let o=new Dn;if(i>Number.MAX_SAFE_INTEGER){C1();let a=BigInt(i);o.valueBigInt=a}else if(o.valueDec=parseInt(i,10),isNaN(o.valueDec))return;this.value.length||(o.isFirstSid=!0,s=!0),this.value.push(o)}while(n!==-1)}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let i=this.value[n].toString();n!==0&&(e=`${e}.`),t?(i=`{${i}}`,this.value[n].isFirstSid?e=`2.{${i} - 80}`:e+=i):e+=i}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};j1.NAME="ObjectIdentifierValueBlock";var U3,et=class extends Ae{constructor(e={}){super(e,j1),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};U3=et;S.ObjectIdentifier=U3;et.NAME="OBJECT IDENTIFIER";var Un=class extends Nt(Rt){constructor({valueDec:e=0,...t}={}){super(t),this.valueDec=e}fromBER(e,t,n){if(n===0)return t;let i=K.BufferSourceConverter.toUint8Array(e);if(!_t(this,i,t,n))return-1;let s=i.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,!!(s[a]&128));a++);let o=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)o[a]=this.valueHexView[a];return this.valueHexView=o,s[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=gr(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let i=this.valueHexView,s=new Uint8Array(this.blockLength);for(let o=0;o<this.blockLength-1;o++)s[o]=i[o]|128;return s[this.blockLength-1]=i[this.blockLength-1],s.buffer}let t=Wt(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",tt;let n=new Uint8Array(t.byteLength);if(!e){let i=new Uint8Array(t),s=t.byteLength-1;for(let o=0;o<s;o++)n[o]=i[o]|128;n[s]=i[s]}return n.buffer}toString(){let e="";return this.isHexOnly?e=K.Convert.ToHex(this.valueHexView):e=this.valueDec.toString(),e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}};Un.NAME="relativeSidBlock";var Y1=class extends Re{constructor({value:e=tn,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let i=t;for(;n>0;){let s=new Un;if(i=s.fromBER(e,i,n),i===-1)return this.blockLength=0,this.error=s.error,i;this.blockLength+=s.blockLength,n-=s.blockLength,this.value.push(s)}return i}toBER(e,t){let n=[];for(let i=0;i<this.value.length;i++){let s=this.value[i].toBER(e);if(s.byteLength===0)return this.error=this.value[i].error,tt;n.push(s)}return Uo(n)}fromString(e){this.value=[];let t=0,n=0,i="";do{n=e.indexOf(".",t),n===-1?i=e.substring(t):i=e.substring(t,n),t=n+1;let s=new Un;if(s.valueDec=parseInt(i,10),isNaN(s.valueDec))return!0;this.value.push(s)}while(n!==-1);return!0}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let i=this.value[n].toString();n!==0&&(e=`${e}.`),t&&(i=`{${i}}`),e+=i}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};Y1.NAME="RelativeObjectIdentifierValueBlock";var O3,W1=class extends Ae{constructor(e={}){super(e,Y1),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};O3=W1;S.RelativeObjectIdentifier=O3;W1.NAME="RelativeObjectIdentifier";var M3,we=class extends Zt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}};M3=we;S.Sequence=M3;we.NAME="SEQUENCE";var V3,Z1=class extends Zt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}};V3=Z1;S.Set=V3;Z1.NAME="SET";var Q1=class extends Nt(Re){constructor({...e}={}){super(e),this.isHexOnly=!0,this.value=tn}toJSON(){return{...super.toJSON(),value:this.value}}};Q1.NAME="StringValueBlock";var X1=class extends Q1{};X1.NAME="SimpleStringValueBlock";var _e=class extends O1{constructor({...e}={}){super(e,X1)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,K.BufferSourceConverter.toUint8Array(e))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t);for(let i=0;i<t;i++)n[i]=e.charCodeAt(i);this.valueBlock.value=e}};_e.NAME="SIMPLE STRING";var J1=class extends _e{fromBuffer(e){this.valueBlock.valueHexView=K.BufferSourceConverter.toUint8Array(e);try{this.valueBlock.value=K.Convert.ToUtf8String(e)}catch(t){this.warnings.push(`Error during "decodeURIComponent": ${t}, using raw string`),this.valueBlock.value=K.Convert.ToBinary(e)}}fromString(e){this.valueBlock.valueHexView=new Uint8Array(K.Convert.FromUtf8String(e)),this.valueBlock.value=e}};J1.NAME="Utf8StringValueBlock";var F3,Tt=class extends J1{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}};F3=Tt;S.Utf8String=F3;Tt.NAME="UTF8String";var ei=class extends _e{fromBuffer(e){this.valueBlock.value=K.Convert.ToUtf16String(e),this.valueBlock.valueHexView=K.BufferSourceConverter.toUint8Array(e)}fromString(e){this.valueBlock.value=e,this.valueBlock.valueHexView=new Uint8Array(K.Convert.FromUtf16String(e))}};ei.NAME="BmpStringValueBlock";var H3,ti=class extends ei{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}};H3=ti;S.BmpString=H3;ti.NAME="BMPString";var ri=class extends _e{fromBuffer(e){let t=ArrayBuffer.isView(e)?e.slice().buffer:e.slice(0),n=new Uint8Array(t);for(let i=0;i<n.length;i+=4)n[i]=n[i+3],n[i+1]=n[i+2],n[i+2]=0,n[i+3]=0;this.valueBlock.value=String.fromCharCode.apply(null,new Uint32Array(t))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t*4);for(let i=0;i<t;i++){let s=Wt(e.charCodeAt(i),8),o=new Uint8Array(s);if(o.length>4)continue;let a=4-o.length;for(let c=o.length-1;c>=0;c--)n[i*4+c+a]=o[c]}this.valueBlock.value=e}};ri.NAME="UniversalStringValueBlock";var K3,ni=class extends ri{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}};K3=ni;S.UniversalString=K3;ni.NAME="UniversalString";var q3,ii=class extends _e{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}};q3=ii;S.NumericString=q3;ii.NAME="NumericString";var $3,si=class extends _e{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}};$3=si;S.PrintableString=$3;si.NAME="PrintableString";var z3,oi=class extends _e{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}};z3=oi;S.TeletexString=z3;oi.NAME="TeletexString";var G3,ai=class extends _e{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}};G3=ai;S.VideotexString=G3;ai.NAME="VideotexString";var j3,ci=class extends _e{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}};j3=ci;S.IA5String=j3;ci.NAME="IA5String";var Y3,li=class extends _e{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}};Y3=li;S.GraphicString=Y3;li.NAME="GraphicString";var W3,On=class extends _e{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}};W3=On;S.VisibleString=W3;On.NAME="VisibleString";var Z3,ui=class extends _e{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}};Z3=ui;S.GeneralString=Z3;ui.NAME="GeneralString";var Q3,fi=class extends _e{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}};Q3=fi;S.CharacterString=Q3;fi.NAME="CharacterString";var X3,Mn=class extends On{constructor({value:e,valueDate:t,...n}={}){if(super(n),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,e){this.fromString(e),this.valueBlock.valueHexView=new Uint8Array(e.length);for(let i=0;i<e.length;i++)this.valueBlock.valueHexView[i]=e.charCodeAt(i)}t&&(this.fromDate(t),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(e){this.fromString(String.fromCharCode.apply(null,K.BufferSourceConverter.toUint8Array(e)))}toBuffer(){let e=this.toString(),t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let i=0;i<e.length;i++)n[i]=e.charCodeAt(i);return t}fromDate(e){this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(e){let n=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/ig.exec(e);if(n===null){this.error="Wrong input string for conversion";return}let i=parseInt(n[1],10);i>=50?this.year=1900+i:this.year=2e3+i,this.month=parseInt(n[2],10),this.day=parseInt(n[3],10),this.hour=parseInt(n[4],10),this.minute=parseInt(n[5],10),this.second=parseInt(n[6],10)}toString(e="iso"){if(e==="iso"){let t=new Array(7);return t[0]=Oe(this.year<2e3?this.year-1900:this.year-2e3,2),t[1]=Oe(this.month,2),t[2]=Oe(this.day,2),t[3]=Oe(this.hour,2),t[4]=Oe(this.minute,2),t[5]=Oe(this.second,2),t[6]="Z",t.join("")}return super.toString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.toDate().toISOString()}`}toJSON(){return{...super.toJSON(),year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second}}};X3=Mn;S.UTCTime=X3;Mn.NAME="UTCTime";var J3,hi=class extends Mn{constructor(e={}){var t;super(e),(t=this.millisecond)!==null&&t!==void 0||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(e){super.fromDate(e),this.millisecond=e.getUTCMilliseconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond))}fromString(e){let t=!1,n="",i="",s=0,o,a=0,c=0;if(e[e.length-1]==="Z")n=e.substring(0,e.length-1),t=!0;else{let f=new Number(e[e.length-1]);if(isNaN(f.valueOf()))throw new Error("Wrong input string for conversion");n=e}if(t){if(n.indexOf("+")!==-1)throw new Error("Wrong input string for conversion");if(n.indexOf("-")!==-1)throw new Error("Wrong input string for conversion")}else{let f=1,h=n.indexOf("+"),p="";if(h===-1&&(h=n.indexOf("-"),f=-1),h!==-1){if(p=n.substring(h+1),n=n.substring(0,h),p.length!==2&&p.length!==4)throw new Error("Wrong input string for conversion");let y=parseInt(p.substring(0,2),10);if(isNaN(y.valueOf()))throw new Error("Wrong input string for conversion");if(a=f*y,p.length===4){if(y=parseInt(p.substring(2,4),10),isNaN(y.valueOf()))throw new Error("Wrong input string for conversion");c=f*y}}}let l=n.indexOf(".");if(l===-1&&(l=n.indexOf(",")),l!==-1){let f=new Number(`0${n.substring(l)}`);if(isNaN(f.valueOf()))throw new Error("Wrong input string for conversion");s=f.valueOf(),i=n.substring(0,l)}else i=n;switch(!0){case i.length===8:if(o=/(\d{4})(\d{2})(\d{2})/ig,l!==-1)throw new Error("Wrong input string for conversion");break;case i.length===10:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let f=60*s;this.minute=Math.floor(f),f=60*(f-this.minute),this.second=Math.floor(f),f=1e3*(f-this.second),this.millisecond=Math.floor(f)}break;case i.length===12:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let f=60*s;this.second=Math.floor(f),f=1e3*(f-this.second),this.millisecond=Math.floor(f)}break;case i.length===14:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let f=1e3*s;this.millisecond=Math.floor(f)}break;default:throw new Error("Wrong input string for conversion")}let u=o.exec(i);if(u===null)throw new Error("Wrong input string for conversion");for(let f=1;f<u.length;f++)switch(f){case 1:this.year=parseInt(u[f],10);break;case 2:this.month=parseInt(u[f],10);break;case 3:this.day=parseInt(u[f],10);break;case 4:this.hour=parseInt(u[f],10)+a;break;case 5:this.minute=parseInt(u[f],10)+c;break;case 6:this.second=parseInt(u[f],10);break;default:throw new Error("Wrong input string for conversion")}if(t===!1){let f=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=f.getUTCFullYear(),this.month=f.getUTCMonth(),this.day=f.getUTCDay(),this.hour=f.getUTCHours(),this.minute=f.getUTCMinutes(),this.second=f.getUTCSeconds(),this.millisecond=f.getUTCMilliseconds()}}toString(e="iso"){if(e==="iso"){let t=[];return t.push(Oe(this.year,4)),t.push(Oe(this.month,2)),t.push(Oe(this.day,2)),t.push(Oe(this.hour,2)),t.push(Oe(this.minute,2)),t.push(Oe(this.second,2)),this.millisecond!==0&&(t.push("."),t.push(Oe(this.millisecond,3))),t.push("Z"),t.join("")}return super.toString(e)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}};J3=hi;S.GeneralizedTime=J3;hi.NAME="GeneralizedTime";var e4,di=class extends Tt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}};e4=di;S.DATE=e4;di.NAME="DATE";var t4,pi=class extends Tt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}};t4=pi;S.TimeOfDay=t4;pi.NAME="TimeOfDay";var r4,gi=class extends Tt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}};r4=gi;S.DateTime=r4;gi.NAME="DateTime";var n4,mi=class extends Tt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}};n4=mi;S.Duration=n4;mi.NAME="Duration";var i4,yi=class extends Tt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}};i4=yi;S.TIME=i4;yi.NAME="TIME";function z8(r){let{result:e}=rn(r),t=e.valueBlock.value;return{n:P(ht(t[1].toBigInt()),"base64url"),e:P(ht(t[2].toBigInt()),"base64url"),d:P(ht(t[3].toBigInt()),"base64url"),p:P(ht(t[4].toBigInt()),"base64url"),q:P(ht(t[5].toBigInt()),"base64url"),dp:P(ht(t[6].toBigInt()),"base64url"),dq:P(ht(t[7].toBigInt()),"base64url"),qi:P(ht(t[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function G8(r){if(r.n==null||r.e==null||r.d==null||r.p==null||r.q==null||r.dp==null||r.dq==null||r.qi==null)throw new E("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new we({value:[new le({value:0}),le.fromBigInt(dt($(r.n,"base64url"))),le.fromBigInt(dt($(r.e,"base64url"))),le.fromBigInt(dt($(r.d,"base64url"))),le.fromBigInt(dt($(r.p,"base64url"))),le.fromBigInt(dt($(r.q,"base64url"))),le.fromBigInt(dt($(r.dp,"base64url"))),le.fromBigInt(dt($(r.dq,"base64url"))),le.fromBigInt(dt($(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function j8(r){let{result:e}=rn(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:P(ht(t[0].toBigInt()),"base64url"),e:P(ht(t[1].toBigInt()),"base64url")}}function Y8(r){if(r.n==null||r.e==null)throw new E("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new we({value:[new we({value:[new et({value:"1.2.840.113549.1.1.1"}),new Qt]}),new en({valueHex:new we({value:[le.fromBigInt(dt($(r.n,"base64url"))),le.fromBigInt(dt($(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function ht(r){let e=r.toString(16);e.length%2>0&&(e=`0${e}`);let t=e.length/2,n=new Uint8Array(t),i=0,s=0;for(;i<t;)n[i]=parseInt(e.slice(s,s+2),16),i+=1,s+=2;return n}function dt(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}var W8=16,Mo=32,Vo=1e4;async function Z8(r,e){let t=ee.get(),i=new we({value:[new le({value:0}),new we({value:[new et({value:"1.2.840.113549.1.1.1"}),new Qt]}),new kt({valueHex:r.marshal()})]}).toBER(),s=new Uint8Array(i,0,i.byteLength),o=ut(W8),a=await Po(Sn,e,o,{c:Vo,dkLen:Mo}),c=ut(16),l=await t.subtle.importKey("raw",a,"AES-CBC",!1,["encrypt"]),u=await t.subtle.encrypt({name:"AES-CBC",iv:c},l,s),f=new we({value:[new kt({valueHex:o}),new le({value:Vo}),new le({value:Mo}),new we({value:[new et({value:"1.2.840.113549.2.11"}),new Qt]})]}),h=new we({value:[new et({value:"1.2.840.113549.1.5.13"}),new we({value:[new we({value:[new et({value:"1.2.840.113549.1.5.12"}),f]}),new we({value:[new et({value:"2.16.840.1.101.3.4.1.42"}),new kt({valueHex:c})]})]})]}),y=new we({value:[h,new kt({valueHex:u})]}).toBER(),g=new Uint8Array(y,0,y.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...P(g,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
|
7
|
+
`)}async function Fo(r,e){let t=ee.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let i=$(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=rn(i),{iv:o,salt:a,iterations:c,keySize:l,cipherText:u}=Q8(s),f=await Po(Sn,e,a,{c,dkLen:l}),h=await t.subtle.importKey("raw",f,"AES-CBC",!1,["decrypt"]),p=Vn(await t.subtle.decrypt({name:"AES-CBC",iv:o},h,u)),{result:y}=rn(p);n=s4(y)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let i=$(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=rn(i);n=s4(s)}else throw new E("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return Ho(n)}function Q8(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new E("Only pkcs5PBES2 encrypted private keys are supported","ERR_INVALID_PARAMS");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new E("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let s=n.valueBlock.value[1],o=Vn(s.valueBlock.value[0].getValue()),a=Vo,c=Mo;if(s.valueBlock.value.length===3)a=Number(s.valueBlock.value[1].toBigInt()),c=Number(s.valueBlock.value[2].toBigInt());else if(s.valueBlock.value.length===2)throw new E("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key","ERR_INVALID_PARAMS");let l=e.valueBlock.value[1].valueBlock.value[1],u=l.valueBlock.value[0].toString();if(u!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(u!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(u!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(u!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(u!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new E("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let f=Vn(l.valueBlock.value[1].getValue());return{cipherText:Vn(r.valueBlock.value[1].getValue()),salt:o,iterations:a,keySize:c,iv:f}}function s4(r){return Vn(r.valueBlock.value[2].getValue())}function Vn(r){return new Uint8Array(r,0,r.byteLength)}async function o4(r){let e=await ee.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await l4(e);return{privateKey:t[0],publicKey:t[1]}}async function Ko(r){let t=[await ee.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await X8(r)],n=await l4({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function a4(r,e){let t=await ee.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await ee.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function c4(r,e,t){let n=await ee.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return ee.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function l4(r){if(r.privateKey==null||r.publicKey==null)throw new E("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([ee.get().subtle.exportKey("jwk",r.privateKey),ee.get().subtle.exportKey("jwk",r.publicKey)])}async function X8(r){return ee.get().subtle.importKey("jwk",{kty:r.kty,n:r.n,e:r.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}function wi(r){if(r.kty!=="RSA")throw new E("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new E("invalid key modulus","ERR_INVALID_KEY_MODULUS");return $(r.n,"base64url").length*8}var yr=8192,mr=class{_key;constructor(e){this._key=e}verify(e,t){return c4(this._key,t,e)}marshal(){return Xt.jwkToPkix(this._key)}get bytes(){return Xe.encode({Type:X.RSA,Data:this.marshal()}).subarray()}equals(e){return Z(this.bytes,e.bytes)}hash(){let e=ne.digest(this.bytes);return Ge(e)?e.then(({bytes:t})=>t):e.bytes}},Jt=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return ut(16)}sign(e){return a4(this._key,e)}get public(){if(this._publicKey==null)throw new E("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new mr(this._publicKey)}marshal(){return Xt.jwkToPkcs1(this._key)}get bytes(){return Je.encode({Type:X.RSA,Data:this.marshal()}).subarray()}equals(e){return Z(this.bytes,e.bytes)}hash(){let e=ne.digest(this.bytes);return Ge(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return P(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8")return Xt.exportToPem(this,e);if(t==="libp2p-key")return Zr(this.bytes,e);throw new E(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function Ho(r){let e=Xt.pkcs1ToJwk(r);if(wi(e)>yr)throw new E("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await Ko(e);return new Jt(t.privateKey,t.publicKey)}function e7(r){let e=Xt.pkixToJwk(r);if(wi(e)>yr)throw new E("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new mr(e)}async function t7(r){if(wi(r)>yr)throw new E("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await Ko(r);return new Jt(e.privateKey,e.publicKey)}async function r7(r){if(r>yr)throw new E("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await o4(r);return new Jt(e.privateKey,e.publicKey)}var Yo={};oe(Yo,{Secp256k1PrivateKey:()=>wr,Secp256k1PublicKey:()=>br,generateKeyPair:()=>g7,unmarshalSecp256k1PrivateKey:()=>d7,unmarshalSecp256k1PublicKey:()=>p7});var n7=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),er=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),tr=new Uint32Array(64),$o=class extends Gr{constructor(){super(64,32,8,!1),this.A=er[0]|0,this.B=er[1]|0,this.C=er[2]|0,this.D=er[3]|0,this.E=er[4]|0,this.F=er[5]|0,this.G=er[6]|0,this.H=er[7]|0}get(){let{A:e,B:t,C:n,D:i,E:s,F:o,G:a,H:c}=this;return[e,t,n,i,s,o,a,c]}set(e,t,n,i,s,o,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=s|0,this.F=o|0,this.G=a|0,this.H=c|0}process(e,t){for(let f=0;f<16;f++,t+=4)tr[f]=e.getUint32(t,!1);for(let f=16;f<64;f++){let h=tr[f-15],p=tr[f-2],y=We(h,7)^We(h,18)^h>>>3,g=We(p,17)^We(p,19)^p>>>10;tr[f]=g+tr[f-7]+y+tr[f-16]|0}let{A:n,B:i,C:s,D:o,E:a,F:c,G:l,H:u}=this;for(let f=0;f<64;f++){let h=We(a,6)^We(a,11)^We(a,25),p=u+h+$0(a,c,l)+n7[f]+tr[f]|0,g=(We(n,2)^We(n,13)^We(n,22))+z0(n,i,s)|0;u=l,l=c,c=a,a=o+p|0,o=s,s=i,i=n,n=p+g|0}n=n+this.A|0,i=i+this.B|0,s=s+this.C|0,o=o+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,u=u+this.H|0,this.set(n,i,s,o,a,c,l,u)}roundClean(){tr.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var u4=v1(()=>new $o);function f4(r){r.lowS!==void 0&&Ze("lowS",r.lowS),r.prehash!==void 0&&Ze("prehash",r.prehash)}function i7(r){let e=Tn(r);lt(e,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:t,Fp:n,a:i}=e;if(t){if(!n.eql(i,n.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if(typeof t!="object"||typeof t.beta!="bigint"||typeof t.splitScalar!="function")throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...e})}var{bytesToNumberBE:s7,hexToBytes:o7}=A1,Lt={Err:class extends Error{constructor(e=""){super(e)}},_tlv:{encode:(r,e)=>{let{Err:t}=Lt;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length&1)throw new t("tlv.encode: unpadded data");let n=e.length/2,i=lr(n);if(i.length/2&128)throw new t("tlv.encode: long form length too big");let s=n>127?lr(i.length/2|128):"";return`${lr(r)}${s}${i}${e}`},decode(r,e){let{Err:t}=Lt,n=0;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length<2||e[n++]!==r)throw new t("tlv.decode: wrong tlv");let i=e[n++],s=!!(i&128),o=0;if(!s)o=i;else{let c=i&127;if(!c)throw new t("tlv.decode(long): indefinite length not supported");if(c>4)throw new t("tlv.decode(long): byte length is too big");let l=e.subarray(n,n+c);if(l.length!==c)throw new t("tlv.decode: length bytes not complete");if(l[0]===0)throw new t("tlv.decode(long): zero leftmost byte");for(let u of l)o=o<<8|u;if(n+=c,o<128)throw new t("tlv.decode(long): not minimal encoding")}let a=e.subarray(n,n+o);if(a.length!==o)throw new t("tlv.decode: wrong value length");return{v:a,l:e.subarray(n+o)}}},_int:{encode(r){let{Err:e}=Lt;if(r<Pt)throw new e("integer: negative integers are not allowed");let t=lr(r);if(Number.parseInt(t[0],16)&8&&(t="00"+t),t.length&1)throw new e("unexpected assertion");return t},decode(r){let{Err:e}=Lt;if(r[0]&128)throw new e("Invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new e("Invalid signature integer: unnecessary leading zero");return s7(r)}},toSig(r){let{Err:e,_int:t,_tlv:n}=Lt,i=typeof r=="string"?o7(r):r;jr(i);let{v:s,l:o}=n.decode(48,i);if(o.length)throw new e("Invalid signature: left bytes after parsing");let{v:a,l:c}=n.decode(2,s),{v:l,l:u}=n.decode(2,c);if(u.length)throw new e("Invalid signature: left bytes after parsing");return{r:t.decode(a),s:t.decode(l)}},hexFromSig(r){let{_tlv:e,_int:t}=Lt,n=`${e.encode(2,t.encode(r.r))}${e.encode(2,t.encode(r.s))}`;return e.encode(48,n)}},Pt=BigInt(0),ve=BigInt(1),Zh=BigInt(2),h4=BigInt(3),Qh=BigInt(4);function a7(r){let e=i7(r),{Fp:t}=e,n=Yt(e.n,e.nBitLength),i=e.toBytes||((g,d,b)=>{let v=d.toAffine();return At(Uint8Array.from([4]),t.toBytes(v.x),t.toBytes(v.y))}),s=e.fromBytes||(g=>{let d=g.subarray(1),b=t.fromBytes(d.subarray(0,t.BYTES)),v=t.fromBytes(d.subarray(t.BYTES,2*t.BYTES));return{x:b,y:v}});function o(g){let{a:d,b}=e,v=t.sqr(g),m=t.mul(v,g);return t.add(t.add(m,t.mul(g,d)),b)}if(!t.eql(t.sqr(e.Gy),o(e.Gx)))throw new Error("bad generator point: equation left != right");function a(g){return Rn(g,ve,e.n)}function c(g){let{allowedPrivateKeyLengths:d,nByteLength:b,wrapPrivateKey:v,n:m}=e;if(d&&typeof g!="bigint"){if(zt(g)&&(g=xt(g)),typeof g!="string"||!d.includes(g.length))throw new Error("Invalid key");g=g.padStart(b*2,"0")}let A;try{A=typeof g=="bigint"?g:Et(se("private key",g,b))}catch{throw new Error(`private key must be ${b} bytes, hex or bigint, not ${typeof g}`)}return v&&(A=W(A,m)),De("private key",A,ve,m),A}function l(g){if(!(g instanceof h))throw new Error("ProjectivePoint expected")}let u=hr((g,d)=>{let{px:b,py:v,pz:m}=g;if(t.eql(m,t.ONE))return{x:b,y:v};let A=g.is0();d==null&&(d=A?t.ONE:t.inv(m));let _=t.mul(b,d),T=t.mul(v,d),R=t.mul(m,d);if(A)return{x:t.ZERO,y:t.ZERO};if(!t.eql(R,t.ONE))throw new Error("invZ was invalid");return{x:_,y:T}}),f=hr(g=>{if(g.is0()){if(e.allowInfinityPoint&&!t.is0(g.py))return;throw new Error("bad point: ZERO")}let{x:d,y:b}=g.toAffine();if(!t.isValid(d)||!t.isValid(b))throw new Error("bad point: x or y not FE");let v=t.sqr(b),m=o(d);if(!t.eql(v,m))throw new Error("bad point: equation left != right");if(!g.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});class h{constructor(d,b,v){if(this.px=d,this.py=b,this.pz=v,d==null||!t.isValid(d))throw new Error("x required");if(b==null||!t.isValid(b))throw new Error("y required");if(v==null||!t.isValid(v))throw new Error("z required");Object.freeze(this)}static fromAffine(d){let{x:b,y:v}=d||{};if(!d||!t.isValid(b)||!t.isValid(v))throw new Error("invalid affine point");if(d instanceof h)throw new Error("projective point not allowed");let m=A=>t.eql(A,t.ZERO);return m(b)&&m(v)?h.ZERO:new h(b,v,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(d){let b=t.invertBatch(d.map(v=>v.pz));return d.map((v,m)=>v.toAffine(b[m])).map(h.fromAffine)}static fromHex(d){let b=h.fromAffine(s(se("pointHex",d)));return b.assertValidity(),b}static fromPrivateKey(d){return h.BASE.multiply(c(d))}static msm(d,b){return S1(h,n,d,b)}_setWindowSize(d){y.setWindowSize(this,d)}assertValidity(){f(this)}hasEvenY(){let{y:d}=this.toAffine();if(t.isOdd)return!t.isOdd(d);throw new Error("Field doesn't support isOdd")}equals(d){l(d);let{px:b,py:v,pz:m}=this,{px:A,py:_,pz:T}=d,R=t.eql(t.mul(b,T),t.mul(A,m)),k=t.eql(t.mul(v,T),t.mul(_,m));return R&&k}negate(){return new h(this.px,t.neg(this.py),this.pz)}double(){let{a:d,b}=e,v=t.mul(b,h4),{px:m,py:A,pz:_}=this,T=t.ZERO,R=t.ZERO,k=t.ZERO,C=t.mul(m,m),ue=t.mul(A,A),z=t.mul(_,_),V=t.mul(m,A);return V=t.add(V,V),k=t.mul(m,_),k=t.add(k,k),T=t.mul(d,k),R=t.mul(v,z),R=t.add(T,R),T=t.sub(ue,R),R=t.add(ue,R),R=t.mul(T,R),T=t.mul(V,T),k=t.mul(v,k),z=t.mul(d,z),V=t.sub(C,z),V=t.mul(d,V),V=t.add(V,k),k=t.add(C,C),C=t.add(k,C),C=t.add(C,z),C=t.mul(C,V),R=t.add(R,C),z=t.mul(A,_),z=t.add(z,z),C=t.mul(z,V),T=t.sub(T,C),k=t.mul(z,ue),k=t.add(k,k),k=t.add(k,k),new h(T,R,k)}add(d){l(d);let{px:b,py:v,pz:m}=this,{px:A,py:_,pz:T}=d,R=t.ZERO,k=t.ZERO,C=t.ZERO,ue=e.a,z=t.mul(e.b,h4),V=t.mul(b,A),fe=t.mul(v,_),B=t.mul(m,T),N=t.add(b,v),x=t.add(A,_);N=t.mul(N,x),x=t.add(V,fe),N=t.sub(N,x),x=t.add(b,m);let w=t.add(A,T);return x=t.mul(x,w),w=t.add(V,B),x=t.sub(x,w),w=t.add(v,m),R=t.add(_,T),w=t.mul(w,R),R=t.add(fe,B),w=t.sub(w,R),C=t.mul(ue,x),R=t.mul(z,B),C=t.add(R,C),R=t.sub(fe,C),C=t.add(fe,C),k=t.mul(R,C),fe=t.add(V,V),fe=t.add(fe,V),B=t.mul(ue,B),x=t.mul(z,x),fe=t.add(fe,B),B=t.sub(V,B),B=t.mul(ue,B),x=t.add(x,B),V=t.mul(fe,x),k=t.add(k,V),V=t.mul(w,x),R=t.mul(N,R),R=t.sub(R,V),V=t.mul(N,fe),C=t.mul(w,C),C=t.add(C,V),new h(R,k,C)}subtract(d){return this.add(d.negate())}is0(){return this.equals(h.ZERO)}wNAF(d){return y.wNAFCached(this,d,h.normalizeZ)}multiplyUnsafe(d){De("scalar",d,Pt,e.n);let b=h.ZERO;if(d===Pt)return b;if(d===ve)return this;let{endo:v}=e;if(!v)return y.unsafeLadder(this,d);let{k1neg:m,k1:A,k2neg:_,k2:T}=v.splitScalar(d),R=b,k=b,C=this;for(;A>Pt||T>Pt;)A&ve&&(R=R.add(C)),T&ve&&(k=k.add(C)),C=C.double(),A>>=ve,T>>=ve;return m&&(R=R.negate()),_&&(k=k.negate()),k=new h(t.mul(k.px,v.beta),k.py,k.pz),R.add(k)}multiply(d){let{endo:b,n:v}=e;De("scalar",d,ve,v);let m,A;if(b){let{k1neg:_,k1:T,k2neg:R,k2:k}=b.splitScalar(d),{p:C,f:ue}=this.wNAF(T),{p:z,f:V}=this.wNAF(k);C=y.constTimeNegate(_,C),z=y.constTimeNegate(R,z),z=new h(t.mul(z.px,b.beta),z.py,z.pz),m=C.add(z),A=ue.add(V)}else{let{p:_,f:T}=this.wNAF(d);m=_,A=T}return h.normalizeZ([m,A])[0]}multiplyAndAddUnsafe(d,b,v){let m=h.BASE,A=(T,R)=>R===Pt||R===ve||!T.equals(m)?T.multiplyUnsafe(R):T.multiply(R),_=A(this,b).add(A(d,v));return _.is0()?void 0:_}toAffine(d){return u(this,d)}isTorsionFree(){let{h:d,isTorsionFree:b}=e;if(d===ve)return!0;if(b)return b(h,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:d,clearCofactor:b}=e;return d===ve?this:b?b(h,this):this.multiplyUnsafe(e.h)}toRawBytes(d=!0){return Ze("isCompressed",d),this.assertValidity(),i(h,this,d)}toHex(d=!0){return Ze("isCompressed",d),xt(this.toRawBytes(d))}}h.BASE=new h(e.Gx,e.Gy,t.ONE),h.ZERO=new h(t.ZERO,t.ONE,t.ZERO);let p=e.nBitLength,y=B1(h,e.endo?Math.ceil(p/2):p);return{CURVE:e,ProjectivePoint:h,normPrivateKeyToScalar:c,weierstrassEquation:o,isWithinCurveOrder:a}}function c7(r){let e=Tn(r);return lt(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function d4(r){let e=c7(r),{Fp:t,n}=e,i=t.BYTES+1,s=2*t.BYTES+1;function o(B){return W(B,n)}function a(B){return I1(B,n)}let{ProjectivePoint:c,normPrivateKeyToScalar:l,weierstrassEquation:u,isWithinCurveOrder:f}=a7({...e,toBytes(B,N,x){let w=N.toAffine(),I=t.toBytes(w.x),L=At;return Ze("isCompressed",x),x?L(Uint8Array.from([N.hasEvenY()?2:3]),I):L(Uint8Array.from([4]),I,t.toBytes(w.y))},fromBytes(B){let N=B.length,x=B[0],w=B.subarray(1);if(N===i&&(x===2||x===3)){let I=Et(w);if(!Rn(I,ve,t.ORDER))throw new Error("Point is not on curve");let L=u(I),D;try{D=t.sqrt(L)}catch(q){let H=q instanceof Error?": "+q.message:"";throw new Error("Point is not on curve"+H)}let U=(D&ve)===ve;return(x&1)===1!==U&&(D=t.neg(D)),{x:I,y:D}}else if(N===s&&x===4){let I=t.fromBytes(w.subarray(0,t.BYTES)),L=t.fromBytes(w.subarray(t.BYTES,2*t.BYTES));return{x:I,y:L}}else throw new Error(`Point of length ${N} was invalid. Expected ${i} compressed bytes or ${s} uncompressed bytes`)}}),h=B=>xt(jt(B,e.nByteLength));function p(B){let N=n>>ve;return B>N}function y(B){return p(B)?o(-B):B}let g=(B,N,x)=>Et(B.slice(N,x));class d{constructor(N,x,w){this.r=N,this.s=x,this.recovery=w,this.assertValidity()}static fromCompact(N){let x=e.nByteLength;return N=se("compactSignature",N,x*2),new d(g(N,0,x),g(N,x,2*x))}static fromDER(N){let{r:x,s:w}=Lt.toSig(se("DER",N));return new d(x,w)}assertValidity(){De("r",this.r,ve,n),De("s",this.s,ve,n)}addRecoveryBit(N){return new d(this.r,this.s,N)}recoverPublicKey(N){let{r:x,s:w,recovery:I}=this,L=T(se("msgHash",N));if(I==null||![0,1,2,3].includes(I))throw new Error("recovery id invalid");let D=I===2||I===3?x+e.n:x;if(D>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");let U=I&1?"03":"02",F=c.fromHex(U+h(D)),q=a(D),H=o(-L*q),Y=o(w*q),Q=c.BASE.multiplyAndAddUnsafe(F,H,Y);if(!Q)throw new Error("point at infinify");return Q.assertValidity(),Q}hasHighS(){return p(this.s)}normalizeS(){return this.hasHighS()?new d(this.r,o(-this.s),this.recovery):this}toDERRawBytes(){return ur(this.toDERHex())}toDERHex(){return Lt.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return ur(this.toCompactHex())}toCompactHex(){return h(this.r)+h(this.s)}}let b={isValidPrivateKey(B){try{return l(B),!0}catch{return!1}},normPrivateKeyToScalar:l,randomPrivateKey:()=>{let B=Io(e.n);return J0(e.randomBytes(B),e.n)},precompute(B=8,N=c.BASE){return N._setWindowSize(B),N.multiply(BigInt(3)),N}};function v(B,N=!0){return c.fromPrivateKey(B).toRawBytes(N)}function m(B){let N=zt(B),x=typeof B=="string",w=(N||x)&&B.length;return N?w===i||w===s:x?w===2*i||w===2*s:B instanceof c}function A(B,N,x=!0){if(m(B))throw new Error("first arg must be private key");if(!m(N))throw new Error("second arg must be public key");return c.fromHex(N).multiply(l(B)).toRawBytes(x)}let _=e.bits2int||function(B){let N=Et(B),x=B.length*8-e.nBitLength;return x>0?N>>BigInt(x):N},T=e.bits2int_modN||function(B){return o(_(B))},R=kn(e.nBitLength);function k(B){return De(`num < 2^${e.nBitLength}`,B,Pt,R),jt(B,e.nByteLength)}function C(B,N,x=ue){if(["recovered","canonical"].some(ye=>ye in x))throw new Error("sign() legacy options not supported");let{hash:w,randomBytes:I}=e,{lowS:L,prehash:D,extraEntropy:U}=x;L==null&&(L=!0),B=se("msgHash",B),f4(x),D&&(B=se("prehashed msgHash",w(B)));let F=T(B),q=l(N),H=[k(q),k(F)];if(U!=null&&U!==!1){let ye=U===!0?I(t.BYTES):U;H.push(se("extraEntropy",ye))}let Y=At(...H),Q=F;function me(ye){let xe=_(ye);if(!f(xe))return;let Te=a(xe),he=c.BASE.multiply(xe).toAffine(),Le=o(he.x);if(Le===Pt)return;let pt=o(Te*o(Q+Le*q));if(pt===Pt)return;let fn=(he.x===Le?0:2)|Number(he.y&ve),hn=pt;return L&&p(pt)&&(hn=y(pt),fn^=1),new d(Le,hn,fn)}return{seed:Y,k2sig:me}}let ue={lowS:e.lowS,prehash:!1},z={lowS:e.lowS,prehash:!1};function V(B,N,x=ue){let{seed:w,k2sig:I}=C(B,N,x),L=e;return vo(L.hash.outputLen,L.nByteLength,L.hmac)(w,I)}c.BASE._setWindowSize(8);function fe(B,N,x,w=z){let I=B;if(N=se("msgHash",N),x=se("publicKey",x),"strict"in w)throw new Error("options.strict was renamed to lowS");f4(w);let{lowS:L,prehash:D}=w,U,F;try{if(typeof I=="string"||zt(I))try{U=d.fromDER(I)}catch(he){if(!(he instanceof Lt.Err))throw he;U=d.fromCompact(I)}else if(typeof I=="object"&&typeof I.r=="bigint"&&typeof I.s=="bigint"){let{r:he,s:Le}=I;U=new d(he,Le)}else throw new Error("PARSE");F=c.fromHex(x)}catch(he){if(he.message==="PARSE")throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(L&&U.hasHighS())return!1;D&&(N=e.hash(N));let{r:q,s:H}=U,Y=T(N),Q=a(H),me=o(Y*Q),ye=o(q*Q),xe=c.BASE.multiplyAndAddUnsafe(F,me,ye)?.toAffine();return xe?o(xe.x)===q:!1}return{CURVE:e,getPublicKey:v,getSharedSecret:A,sign:V,verify:fe,ProjectivePoint:c,Signature:d,utils:b}}function l7(r){return{hash:r,hmac:(e,...t)=>_n(r,e,fo(...t)),randomBytes:zr}}function p4(r,e){let t=n=>d4({...r,...l7(n)});return Object.freeze({...t(e),create:t})}var y4=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),g4=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),u7=BigInt(1),zo=BigInt(2),m4=(r,e)=>(r+e/zo)/e;function f7(r){let e=y4,t=BigInt(3),n=BigInt(6),i=BigInt(11),s=BigInt(22),o=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%e,u=l*l*r%e,f=re(u,t,e)*u%e,h=re(f,t,e)*u%e,p=re(h,zo,e)*l%e,y=re(p,i,e)*p%e,g=re(y,s,e)*y%e,d=re(g,a,e)*g%e,b=re(d,c,e)*d%e,v=re(b,a,e)*g%e,m=re(v,t,e)*u%e,A=re(m,o,e)*y%e,_=re(A,n,e)*l%e,T=re(_,zo,e);if(!Go.eql(Go.sqr(T),r))throw new Error("Cannot find square root");return T}var Go=Yt(y4,void 0,void 0,{sqrt:f7}),rt=p4({a:BigInt(0),b:BigInt(7),Fp:Go,n:g4,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let e=g4,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-u7*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),i=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),s=t,o=BigInt("0x100000000000000000000000000000000"),a=m4(s*r,e),c=m4(-n*r,e),l=W(r-a*t-c*i,e),u=W(-a*n-c*s,e),f=l>o,h=u>o;if(f&&(l=e-l),h&&(u=e-u),l>o||u>o)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:f,k1:l,k2neg:h,k2:u}}}},u4),od=BigInt(0);var ad=rt.ProjectivePoint;function b4(){return rt.utils.randomPrivateKey()}function w4(r,e){let t=ne.digest(e instanceof Uint8Array?e:e.subarray());if(Ge(t))return t.then(({digest:n})=>rt.sign(n,r).toDERRawBytes()).catch(n=>{throw new E(String(n),"ERR_INVALID_INPUT")});try{return rt.sign(t.digest,r).toDERRawBytes()}catch(n){throw new E(String(n),"ERR_INVALID_INPUT")}}function v4(r,e,t){let n=ne.digest(t instanceof Uint8Array?t:t.subarray());if(Ge(n))return n.then(({digest:i})=>rt.verify(e,i,r)).catch(i=>{throw new E(String(i),"ERR_INVALID_INPUT")});try{return rt.verify(e,n.digest,r)}catch(i){throw new E(String(i),"ERR_INVALID_INPUT")}}function x4(r){return rt.ProjectivePoint.fromHex(r).toRawBytes(!0)}function E4(r){try{rt.getPublicKey(r,!0)}catch(e){throw new E(String(e),"ERR_INVALID_PRIVATE_KEY")}}function jo(r){try{rt.ProjectivePoint.fromHex(r)}catch(e){throw new E(String(e),"ERR_INVALID_PUBLIC_KEY")}}function A4(r){try{return rt.getPublicKey(r,!0)}catch(e){throw new E(String(e),"ERR_INVALID_PRIVATE_KEY")}}var br=class{_key;constructor(e){jo(e),this._key=e}verify(e,t){return v4(this._key,t,e)}marshal(){return x4(this._key)}get bytes(){return Xe.encode({Type:X.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return Z(this.bytes,e.bytes)}async hash(){let e=ne.digest(this.bytes),t;return Ge(e)?{bytes:t}=await e:t=e.bytes,t}},wr=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??A4(e),E4(this._key),jo(this._publicKey)}sign(e){return w4(this._key,e)}get public(){return new br(this._publicKey)}marshal(){return this._key}get bytes(){return Je.encode({Type:X.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return Z(this.bytes,e.bytes)}hash(){let e=ne.digest(this.bytes);return Ge(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return P(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return Zr(this.bytes,e);throw new E(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function d7(r){return new wr(r)}function p7(r){return new br(r)}async function g7(){let r=b4();return new wr(r)}var Ct={rsa:qo,ed25519:No,secp256k1:Yo};function Wo(r){let e=Object.keys(Ct).join(" / ");return new E(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function Zo(r){if(r=r.toLowerCase(),r==="rsa"||r==="ed25519"||r==="secp256k1")return Ct[r];throw Wo(r)}async function m7(r,e){return Zo(r).generateKeyPair(e??2048)}async function y7(r,e,t){if(r.toLowerCase()!=="ed25519")throw new E("Seed key derivation is unimplemented for RSA or secp256k1","ERR_UNSUPPORTED_KEY_DERIVATION_TYPE");return _o(e)}function b7(r){let e=Xe.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case X.RSA:return Ct.rsa.unmarshalRsaPublicKey(t);case X.Ed25519:return Ct.ed25519.unmarshalEd25519PublicKey(t);case X.Secp256k1:return Ct.secp256k1.unmarshalSecp256k1PublicKey(t);default:throw Wo(e.Type??"unknown")}}function w7(r,e){return e=(e??"rsa").toLowerCase(),Zo(e),r.bytes}async function I4(r){let e=Je.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case X.RSA:return Ct.rsa.unmarshalRsaPrivateKey(t);case X.Ed25519:return Ct.ed25519.unmarshalEd25519PrivateKey(t);case X.Secp256k1:return Ct.secp256k1.unmarshalSecp256k1PrivateKey(t);default:throw Wo(e.Type??"RSA")}}function v7(r,e){return e=(e??"rsa").toLowerCase(),Zo(e),r.bytes}async function x7(r,e){try{let t=await g3(r,e);return await I4(t)}catch{}if(!r.includes("BEGIN"))throw new E("Encrypted key was not a libp2p-key or a PEM file","ERR_INVALID_IMPORT_FORMAT");return Fo(r,e)}var S4=Symbol.for("@achingbrain/uint8arraylist");function B4(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let i=t+n.byteLength;if(e<i)return{buf:n,index:e-t};t=i}throw new RangeError("index is out of bounds")}function xi(r){return!!r?.[S4]}var Ke=class r{bufs;length;[S4]=!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(xi(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(xi(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=B4(this.bufs,e);return t.buf[t.index]}set(e,t){let n=B4(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(xi(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:i}=this._subList(e,t);return J(n,i)}subarray(e,t){let{bufs:n,length:i}=this._subList(e,t);return n.length===1?n[0]:J(n,i)}sublist(e,t){let{bufs:n,length:i}=this._subList(e,t),s=new r;return s.length=i,s.bufs=[...n],s}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:this.bufs,length:this.length};let n=[],i=0;for(let s=0;s<this.bufs.length;s++){let o=this.bufs[s],a=i,c=a+o.byteLength;if(i=c,e>=c)continue;let l=e>=a&&e<c,u=t>a&&t<=c;if(l&&u){if(e===a&&t===c){n.push(o);break}let f=e-a;n.push(o.subarray(f,f+(t-e)));break}if(l){if(e===0){n.push(o);continue}n.push(o.subarray(e-a));continue}if(u){if(t===c){n.push(o);break}n.push(o.subarray(0,t-a));break}n.push(o)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!xi(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 i=n.byteLength;if(i===0)throw new TypeError("search must be at least 1 byte long");let s=256,o=new Int32Array(s);for(let f=0;f<s;f++)o[f]=-1;for(let f=0;f<i;f++)o[n[f]]=f;let a=o,c=this.byteLength-n.byteLength,l=n.byteLength-1,u;for(let f=t;f<=c;f+=u){u=0;for(let h=l;h>=0;h--){let p=this.get(f+h);if(n[h]!==p){u=Math.max(1,h-a[p]);break}}if(u===0)return f}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=be(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 i=Ce(2);new DataView(i.buffer,i.byteOffset,i.byteLength).setInt16(0,t,n),this.write(i,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 i=Ce(4);new DataView(i.buffer,i.byteOffset,i.byteLength).setInt32(0,t,n),this.write(i,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 i=Ce(8);new DataView(i.buffer,i.byteOffset,i.byteLength).setBigInt64(0,t,n),this.write(i,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=be(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 i=Ce(2);new DataView(i.buffer,i.byteOffset,i.byteLength).setUint16(0,t,n),this.write(i,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 i=Ce(4);new DataView(i.buffer,i.byteOffset,i.byteLength).setUint32(0,t,n),this.write(i,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 i=Ce(8);new DataView(i.buffer,i.byteOffset,i.byteLength).setBigUint64(0,t,n),this.write(i,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 i=Ce(4);new DataView(i.buffer,i.byteOffset,i.byteLength).setFloat32(0,t,n),this.write(i,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 i=Ce(8);new DataView(i.buffer,i.byteOffset,i.byteLength).setFloat64(0,t,n),this.write(i,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(!Z(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((i,s)=>i+s.byteLength,0)),n.length=t,n}};var Kd=parseInt("0xFFFF",16),qd=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);var T4=h1,S7=d1,Qo=function(r){let e=0;if(r=r.toString().trim(),T4(r)){let t=new Uint8Array(e+4);return r.split(/\./g).forEach(n=>{t[e++]=parseInt(n,10)&255}),t}if(S7(r)){let t=r.split(":",8),n;for(n=0;n<t.length;n++){let s=T4(t[n]),o;s&&(o=Qo(t[n]),t[n]=P(o.slice(0,2),"base16")),o!=null&&++n<8&&t.splice(n,0,P(o.slice(2,4),"base16"))}if(t[0]==="")for(;t.length<8;)t.unshift("0");else if(t[t.length-1]==="")for(;t.length<8;)t.push("0");else if(t.length<8){for(n=0;n<t.length&&t[n]!=="";n++);let s=[n,1];for(n=9-t.length;n>0;n--)s.push("0");t.splice.apply(t,s)}let i=new Uint8Array(e+16);for(n=0;n<t.length;n++){let s=parseInt(t[n],16);i[e++]=s>>8&255,i[e++]=s&255}return i}throw new Error("invalid ip address")},_4=function(r,e=0,t){e=~~e,t=t??r.length-e;let n=new DataView(r.buffer);if(t===4){let i=[];for(let s=0;s<t;s++)i.push(r[e+s]);return i.join(".")}if(t===16){let i=[];for(let s=0;s<t;s+=2)i.push(n.getUint16(e+s).toString(16));return i.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var nn={},Xo={},k7=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,-1,"ip6zone"],[43,8,"ipcidr"],[53,-1,"dns",!0],[54,-1,"dns4",!0],[55,-1,"dns6",!0],[56,-1,"dnsaddr",!0],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[280,0,"webrtc-direct"],[281,0,"webrtc"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,-1,"unix",!1,!0],[421,-1,"ipfs"],[421,-1,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,-1,"garlic64"],[448,0,"tls"],[449,-1,"sni"],[460,0,"quic"],[461,0,"quic-v1"],[465,0,"webtransport"],[466,-1,"certhash"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"],[481,-1,"http-path"],[777,-1,"memory"]];k7.forEach(r=>{let e=T7(...r);Xo[e.code]=e,nn[e.name]=e});function T7(r,e,t,n,i){return{code:r,size:e,name:t,resolvable:!!n,path:!!i}}function j(r){if(typeof r=="number"){if(Xo[r]!=null)return Xo[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(nn[r]!=null)return nn[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var Ip=j("ip4"),Bp=j("ip6"),Sp=j("ipcidr");function r2(r,e){switch(j(r).code){case 4:case 41:return N7(e);case 42:return t2(e);case 6:case 273:case 33:case 132:return P4(e).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return t2(e);case 421:return D7(e);case 444:return L4(e);case 445:return L4(e);case 466:return C7(e);case 481:return globalThis.encodeURIComponent(t2(e));default:return P(e,"base16")}}function n2(r,e){switch(j(r).code){case 4:return N4(e);case 41:return N4(e);case 42:return e2(e);case 6:case 273:case 33:case 132:return i2(parseInt(e,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return e2(e);case 421:return L7(e);case 444:return U7(e);case 445:return O7(e);case 466:return P7(e);case 481:return e2(globalThis.decodeURIComponent(e));default:return $(e,"base16")}}var Jo=Object.values(Mt).map(r=>r.decoder),_7=function(){let r=Jo[0].or(Jo[1]);return Jo.slice(2).forEach(e=>r=r.or(e)),r}();function N4(r){if(!p1(r))throw new Error("invalid ip address");return Qo(r)}function N7(r){let e=_4(r,0,r.length);if(e==null)throw new Error("ipBuff is required");if(!p1(e))throw new Error("invalid ip address");return e}function i2(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r),new Uint8Array(e)}function P4(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function e2(r){let e=$(r),t=Uint8Array.from(qe(e.length));return J([t,e],t.length+e.length)}function t2(r){let e=Ve(r);if(r=r.slice(ce(e)),r.length!==e)throw new Error("inconsistent lengths");return P(r)}function L7(r){let e;r[0]==="Q"||r[0]==="1"?e=ir(de.decode(`z${r}`)).bytes:e=Se.parse(r).multihash.bytes;let t=Uint8Array.from(qe(e.length));return J([t,e],t.length+e.length)}function P7(r){let e=_7.decode(r),t=Uint8Array.from(qe(e.length));return J([t,e],t.length+e.length)}function C7(r){let e=Ve(r),t=r.slice(ce(e));if(t.length!==e)throw new Error("inconsistent lengths");return"u"+P(t,"base64url")}function D7(r){let e=Ve(r),t=r.slice(ce(e));if(t.length!==e)throw new Error("inconsistent lengths");return P(t,"base58btc")}function U7(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==16)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion address.`);let t=mt.decode("b"+e[0]),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let i=i2(n);return J([t,i],t.length+i.length)}function O7(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==56)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion3 address.`);let t=mt.decode(`b${e[0]}`),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let i=i2(n);return J([t,i],t.length+i.length)}function L4(r){let e=r.slice(0,r.length-2),t=r.slice(r.length-2),n=P(e,"base32"),i=P4(t);return`${n}:${i}`}function C4(r){r=s2(r);let e=[],t=[],n=null,i=r.split("/").slice(1);if(i.length===1&&i[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let s=0;s<i.length;s++){let o=i[s],a=j(o);if(a.size===0){e.push([a.code]),t.push([a.code]);continue}if(s++,s>=i.length)throw U4("invalid address: "+r);if(a.path===!0){n=s2(i.slice(s).join("/")),e.push([a.code,n2(a.code,n)]),t.push([a.code,n]);break}let c=n2(a.code,i[s]);e.push([a.code,c]),t.push([a.code,r2(a.code,c)])}return{string:D4(t),bytes:a2(e),tuples:e,stringTuples:t,path:n}}function o2(r){let e=[],t=[],n=null,i=0;for(;i<r.length;){let s=Ve(r,i),o=ce(s),a=j(s),c=M7(a,r.slice(i+o));if(c===0){e.push([s]),t.push([s]),i+=o;continue}let l=r.slice(i+o,i+o+c);if(i+=c+o,i>r.length)throw U4("Invalid address Uint8Array: "+P(r,"base16"));e.push([s,l]);let u=r2(s,l);if(t.push([s,u]),a.path===!0){n=u;break}}return{bytes:Uint8Array.from(r),string:D4(t),tuples:e,stringTuples:t,path:n}}function D4(r){let e=[];return r.map(t=>{let n=j(t[0]);return e.push(n.name),t.length>1&&t[1]!=null&&e.push(t[1]),null}),s2(e.join("/"))}function a2(r){return J(r.map(e=>{let t=j(e[0]),n=Uint8Array.from(qe(t.code));return e.length>1&&e[1]!=null&&(n=J([n,e[1]])),n}))}function M7(r,e){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let t=Ve(e instanceof Uint8Array?e:Uint8Array.from(e));return t+ce(t)}}function s2(r){return"/"+r.trim().split("/").filter(e=>e).join("/")}function U4(r){return new Error("Error parsing address: "+r)}var V7=Symbol.for("nodejs.util.inspect.custom"),c2=Symbol.for("@multiformats/js-multiaddr/multiaddr"),F7=[j("dns").code,j("dns4").code,j("dns6").code,j("dnsaddr").code],Ei=class r{bytes;#e;#r;#s;#a;[c2]=!0;constructor(e){e==null&&(e="");let t;if(e instanceof Uint8Array)t=o2(e);else if(typeof e=="string"){if(e.length>0&&e.charAt(0)!=="/")throw new Error(`multiaddr "${e}" must start with a "/"`);t=C4(e)}else if(M4(e))t=o2(e.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=t.bytes,this.#e=t.string,this.#r=t.tuples,this.#s=t.stringTuples,this.#a=t.path}toString(){return this.#e}toJSON(){return this.toString()}toOptions(){let e,t,n,i,s="",o=j("tcp"),a=j("udp"),c=j("ip4"),l=j("ip6"),u=j("dns6"),f=j("ip6zone");for(let[p,y]of this.stringTuples())p===f.code&&(s=`%${y??""}`),F7.includes(p)&&(t=o.name,i=443,n=`${y??""}${s}`,e=p===u.code?6:4),(p===o.code||p===a.code)&&(t=j(p).name,i=parseInt(y??"")),(p===c.code||p===l.code)&&(t=j(p).name,n=`${y??""}${s}`,e=p===l.code?6:4);if(e==null||t==null||n==null||i==null)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".');return{family:e,host:n,transport:t,port:i}}protos(){return this.#r.map(([e])=>Object.assign({},j(e)))}protoCodes(){return this.#r.map(([e])=>e)}protoNames(){return this.#r.map(([e])=>j(e).name)}tuples(){return this.#r}stringTuples(){return this.#s}encapsulate(e){return e=new r(e),new r(this.toString()+e.toString())}decapsulate(e){let t=e.toString(),n=this.toString(),i=n.lastIndexOf(t);if(i<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${e.toString()}`);return new r(n.slice(0,i))}decapsulateCode(e){let t=this.tuples();for(let n=t.length-1;n>=0;n--)if(t[n][0]===e)return new r(a2(t.slice(0,n)));return this}getPeerId(){try{let e=[];this.stringTuples().forEach(([n,i])=>{n===nn.p2p.code&&e.push([n,i]),n===nn["p2p-circuit"].code&&(e=[])});let t=e.pop();if(t?.[1]!=null){let n=t[1];return n[0]==="Q"||n[0]==="1"?P(de.decode(`z${n}`),"base58btc"):P(Se.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#a}equals(e){return Z(this.bytes,e.bytes)}async resolve(e){let t=this.protos().find(s=>s.resolvable);if(t==null)return[this];let n=O4.get(t.name);if(n==null)throw new E(`no available resolver for ${t.name}`,"ERR_NO_AVAILABLE_RESOLVER");return(await n(this,e)).map(s=>vr(s))}nodeAddress(){let e=this.toOptions();if(e.transport!=="tcp"&&e.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${e.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:e.family,address:e.host,port:e.port}}isThinWaistAddress(e){let t=(e??this).protos();return!(t.length!==2||t[0].code!==4&&t[0].code!==41||t[1].code!==6&&t[1].code!==273)}[V7](){return`Multiaddr(${this.#e})`}};var O4=new Map;function M4(r){return!!r?.[c2]}function vr(r){return new Ei(r)}function V4(r,e){return{id:r.id.toBytes(),multiaddrs:(r.multiaddrs??[]).map(n=>n.bytes),connection:e}}function Fn(r){if(r.id==null)throw new Error("Invalid peer in message");return{id:bt(r.id),multiaddrs:(r.multiaddrs??[]).map(e=>vr(e))}}var Ai=class{log;components;network;peerRouting;queryManager;routingTable;providers;constructor(e,t){let{network:n,peerRouting:i,queryManager:s,routingTable:o,providers:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-routing`),this.network=n,this.peerRouting=i,this.queryManager=s,this.routingTable=o,this.providers=a}async*provide(e,t,n={}){this.log("provide %s",e);let i=e.multihash.bytes;await this.providers.addProvider(e,this.components.peerId);let s={type:M.ADD_PROVIDER,key:i,providers:[V4({id:this.components.peerId,multiaddrs:t})]},o=0,a=c=>async()=>{if(c.name!=="FINAL_PEER")return[c];let l=[];this.log("putProvider %s to %p",e,c.peer.id);try{this.log("sending provider record for %s to %p",e,c.peer.id);for await(let u of this.network.sendMessage(c.peer.id,s,n))u.name==="PEER_RESPONSE"&&(this.log("sent provider record for %s to %p",e,c.peer.id),o++),l.push(u)}catch(u){this.log.error("error sending provide record to peer %p",c.peer.id,u),l.push(He({from:c.peer.id,error:u},n))}return l};yield*Vt(this.peerRouting.getClosestPeers(i,n),c=>Tr(c,l=>a(l)),c=>xn(c,{ordered:!1,concurrency:3}),async function*(c){for await(let l of c)yield*l}),this.log("sent provider records to %d peers",o)}async*findProviders(e,t){let n=this.routingTable.kBucketSize,i=0,s=e.multihash.bytes,o=this;this.log("findProviders %c",e);let a=await this.providers.getProviders(e);if(a.length>0){let u=[];for(let f of a.slice(0,n))try{let h=await this.components.peerStore.get(f);u.push({id:f,multiaddrs:h.addresses.map(({multiaddr:p})=>p)})}catch(h){if(h.code!=="ERR_NOT_FOUND")throw h;this.log("no peer store entry for %p",f)}if(yield En({from:this.components.peerId,messageType:M.GET_PROVIDERS,providers:u},t),yield Xs({from:this.components.peerId,providers:u},t),i+=u.length,i>=n)return}let c=async function*({peer:u,signal:f}){let h={type:M.GET_PROVIDERS,key:s};yield*o.network.sendRequest(u,h,{...t,signal:f})},l=new ct(a);for await(let u of this.queryManager.run(s,c,t))if(yield u,u.name==="PEER_RESPONSE"){this.log("Found %d provider entries for %c and %d closer peers",u.providers.length,e,u.closer.length);let f=[];for(let h of u.providers)l.has(h.id)||(l.add(h.id),f.push(h));if(f.length>0&&(yield Xs({from:u.from,providers:f},t),i+=f.length,i>=n))return}}};function rr(r){let e=new globalThis.AbortController;function t(){e.abort();for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",t)}for(let s of r){if(s?.aborted===!0){t();break}s?.addEventListener!=null&&s.addEventListener("abort",t)}function n(){for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",t)}let i=e.signal;return i.clear=n,i}var sn=class{movingAverage;variance;deviation;forecast;timespan;previousTime;constructor(e){this.timespan=e,this.movingAverage=0,this.variance=0,this.deviation=0,this.forecast=0}alpha(e,t){return 1-Math.exp(-(e-t)/this.timespan)}push(e,t=Date.now()){if(this.previousTime!=null){let n=this.alpha(t,this.previousTime),i=e-this.movingAverage,s=n*i;this.movingAverage=n*e+(1-n)*this.movingAverage,this.variance=(1-n)*(this.variance+i*s),this.deviation=Math.sqrt(this.variance),this.forecast=this.movingAverage+n*i}else this.movingAverage=e;this.previousTime=t}};var H7=1.2,K7=2,q7=2e3,Ii=class{success;failure;next;metric;timeoutMultiplier;failureMultiplier;minTimeout;constructor(e={}){this.success=new sn(e.interval??5e3),this.failure=new sn(e.interval??5e3),this.next=new sn(e.interval??5e3),this.failureMultiplier=e.failureMultiplier??K7,this.timeoutMultiplier=e.timeoutMultiplier??H7,this.minTimeout=e.minTimeout??q7,e.metricName!=null&&(this.metric=e.metrics?.registerMetricGroup(e.metricName))}getTimeoutSignal(e={}){let t=Math.max(Math.round(this.next.movingAverage*(e.timeoutFactor??this.timeoutMultiplier)),this.minTimeout),n=AbortSignal.timeout(t),i=rr([e.signal,n]);return Ee(1/0,i,n),i.start=Date.now(),i.timeout=t,i}cleanUp(e){let t=Date.now()-e.start;e.aborted?(this.failure.push(t),this.next.push(t*this.failureMultiplier),this.metric?.update({failureMovingAverage:this.failure.movingAverage,failureDeviation:this.failure.deviation,failureForecast:this.failure.forecast,failureVariance:this.failure.variance,failure:t})):(this.success.push(t),this.next.push(t),this.metric?.update({successMovingAverage:this.success.movingAverage,successDeviation:this.success.deviation,successForecast:this.success.forecast,successVariance:this.success.variance,success:t}))}};var Bi=class extends Error{type;code;constructor(e,t,n){super(e??"The operation was aborted"),this.type="aborted",this.name=n??"AbortError",this.code=t??"ABORT_ERR"}};async function on(r,e,t){if(e==null)return r;if(e.aborted)return Promise.reject(new Bi(t?.errorMessage,t?.errorCode,t?.errorName));let n,i=new Bi(t?.errorMessage,t?.errorCode,t?.errorName);try{return await Promise.race([r,new Promise((s,o)=>{n=()=>{o(i)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var l2=class{readNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.readNext=ae(),this.haveNext=ae()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let e=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=ae(),e}async throw(e){return this.ended=!0,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return 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");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=ae(),await on(this.readNext.promise,t?.signal,t)}};function F4(){return new l2}var Si=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};var u2=class extends Error{code;constructor(e,t){super(e),this.code=t}},f2=class extends u2{type;constructor(e){super(e,"ABORT_ERR"),this.type="aborted",this.name="AbortError"}};function H4(r,e){let t=F4();r.sink(t).catch(async o=>{await t.end(o)}),r.sink=async o=>{for await(let a of o)await t.push(a);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 i=new Ke;return{read:async(o,a)=>{a?.signal?.throwIfAborted();let c,l=new Promise((u,f)=>{c=()=>{f(new f2("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(o==null){let{done:f,value:h}=await Promise.race([n.next(),l]);return f===!0?new Ke:h}for(;i.byteLength<o;){let{value:f,done:h}=await Promise.race([n.next(),l]);if(h===!0)throw new Si("unexpected end of input");i.append(f)}let u=i.sublist(0,o);return i.consume(o),u}finally{c!=null&&a?.signal?.removeEventListener("abort",c)}},write:async(o,a)=>{a?.signal?.throwIfAborted(),o instanceof Uint8Array?await t.push(o,a):await t.push(o.subarray(),a)},unwrap:()=>{if(i.byteLength>0){let o=r.source;r.source=async function*(){e?.yieldBytes===!1?yield i:yield*i,yield*o}()}return r}}}var Ri=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},ki=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},Ti=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function K4(r,e={}){let t=H4(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=ce(e.maxDataLength));let n=e?.lengthDecoder??Ve,i=e?.lengthEncoder??qe;return{read:async o=>{let a=-1,c=new Ke;for(;;){c.append(await t.read(1,o));try{a=n(c)}catch(l){if(l instanceof RangeError)continue;throw l}if(a<0)throw new Ri("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new Ti("message length length too long");if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new ki("message length too long");return t.read(a,o)},write:async(o,a)=>{await t.write(new Ke(i(o.byteLength),o),a)},writeV:async(o,a)=>{let c=new Ke(...o.flatMap(l=>[i(l.byteLength),l]));await t.write(c,a)},unwrap:()=>t.unwrap()}}function Hn(r,e){let t=K4(r,e),n={read:async(i,s)=>{let o=await t.read(s);return i.decode(o)},write:async(i,s,o)=>{await t.write(s.encode(i),o)},writeV:async(i,s,o)=>{await t.writeV(i.map(a=>s.encode(a)),o)},pb:i=>({read:async s=>n.read(i,s),write:async(s,o)=>n.write(s,i,o),writeV:async(s,o)=>n.writeV(s,i,o),unwrap:()=>n}),unwrap:()=>t.unwrap()};return n}var _i=class extends Pe{log;protocol;running;components;timeout;constructor(e,t){super();let{protocol:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:network`),this.running=!1,this.protocol=n,this.timeout=new Ii({...t.timeout??{},metrics:e.metrics,metricName:`${t.logPrefix.replaceAll(":","_")}_network_message_send_times_milliseconds`})}async start(){this.running||(this.running=!0)}async stop(){this.running=!1}isStarted(){return this.running}async*sendRequest(e,t,n={}){if(!this.running)return;let i=t.type;if(i==null)throw new wn("Message type was missing","ERR_INVALID_PARAMETERS");this.log("sending %s to %p",t.type,e),yield Js({peer:e},n),yield Qs({to:e,type:i},n);let s,o=this.timeout.getTimeoutSignal(n);n={...n,signal:o};try{s=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n);let c=await this._writeReadMessage(s,t,n);s.close(n).catch(l=>{this.log.error("error closing stream to %p",e,l),s?.abort(l)}),yield En({from:e,messageType:c.type,closer:c.closer.map(Fn),providers:c.providers.map(Fn),record:c.record==null?void 0:pe.deserialize(c.record)},n)}catch(a){s?.abort(a),this.log.error("could not send %s to %p",t.type,e,a),yield He({from:e,error:a},n)}finally{this.timeout.cleanUp(o)}}async*sendMessage(e,t,n={}){if(!this.running)return;let i=t.type;if(i==null)throw new wn("Message type was missing","ERR_INVALID_PARAMETERS");this.log("sending %s to %p",t.type,e),yield Js({peer:e},n),yield Qs({to:e,type:i},n);let s,o=this.timeout.getTimeoutSignal(n);n={...n,signal:o};try{s=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n),await this._writeMessage(s,t,n),s.close(n).catch(c=>{this.log.error("error closing stream to %p",e,c),s?.abort(c)}),yield En({from:e,messageType:i},n)}catch(a){s?.abort(a),yield He({from:e,error:a},n)}finally{this.timeout.cleanUp(o)}}async _writeMessage(e,t,n){let i=Hn(e);await i.write(t,$e,n),await i.unwrap().close(n)}async _writeReadMessage(e,t,n){let i=Hn(e);await i.write(t,$e,n);let s=await i.read($e,n);return await i.unwrap().close(n),s.closer.forEach(o=>{this.safeDispatchEvent("peer",{detail:Fn(o)})}),s.providers.forEach(o=>{this.safeDispatchEvent("peer",{detail:Fn(o)})}),s}};function nt(r,e){if(r.length!==e.length)throw new Error("Inputs should have the same length");let t=be(r.length);for(let n=0;n<r.length;n++)t[n]=r[n]^e[n];return t}function an(r,e){if(r.byteLength!==e.byteLength)throw new Error("Inputs should have the same length");for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return r[t]<e[t]?-1:1;return 0}var cn=class{originDhtKey;capacity;peerDistances;constructor(e,t){this.originDhtKey=e,this.capacity=t,this.peerDistances=[]}get length(){return this.peerDistances.length}get peers(){return this.peerDistances.map(e=>e.peer)}async add(e){let t=await ze(e.id);this.addWitKadId(e,t)}addWitKadId(e,t){if(this.peerDistances.find(i=>i.peer.id.equals(e.id))!=null)return;let n={peer:e,distance:nt(this.originDhtKey,t)};this.peerDistances.push(n),this.peerDistances.sort((i,s)=>an(i.distance,s.distance)),this.peerDistances=this.peerDistances.slice(0,this.capacity)}async isCloser(e){if(this.length===0)return!0;let t=await ze(e),n=nt(t,this.originDhtKey),i=this.peerDistances[this.peerDistances.length-1].distance;return an(n,i)===-1}async anyCloser(e){return e.length===0?!1:Promise.any(e.map(async t=>this.isCloser(t)))}};var Ni=class{log;routingTable;network;validators;queryManager;peerStore;peerId;constructor(e,t){let{routingTable:n,network:i,validators:s,queryManager:o,logPrefix:a}=t;this.routingTable=n,this.network=i,this.validators=s,this.queryManager=o,this.peerStore=e.peerStore,this.peerId=e.peerId,this.log=e.logger.forComponent(`${a}:peer-routing`)}async findPeerLocal(e){let t,n=await this.routingTable.find(e);if(n!=null){this.log("findPeerLocal found %p in routing table",e);try{t=await this.peerStore.get(n)}catch(i){if(i.code!=="ERR_NOT_FOUND")throw i}}if(t==null)try{t=await this.peerStore.get(e)}catch(i){if(i.code!=="ERR_NOT_FOUND")throw i}if(t!=null)return this.log("findPeerLocal found %p in peer store",e),{id:t.id,multiaddrs:t.addresses.map(i=>i.multiaddr)}}async*_getValueSingle(e,t,n={}){let i={type:M.GET_VALUE,key:t};yield*this.network.sendRequest(e,i,n)}async*getPublicKeyFromNode(e,t={}){let n=L0(e);for await(let i of this._getValueSingle(e,n,t))if(yield i,i.name==="PEER_RESPONSE"&&i.record!=null){let s=await B0(vi.marshalPublicKey({bytes:i.record.value}));if(!s.equals(e))throw new E("public key does not match id","ERR_PUBLIC_KEY_DOES_NOT_MATCH_ID");if(s.publicKey==null)throw new E("public key missing","ERR_PUBLIC_KEY_MISSING");yield An({from:e,value:s.publicKey},t)}throw new E(`Node not responding with its public key: ${e.toString()}`,"ERR_INVALID_RECORD")}async*findPeer(e,t={}){if(this.log("findPeer %p",e),t.useCache!==!1){let i=await this.findPeerLocal(e);if(i!=null){this.log("found local"),yield l1({from:this.peerId,peer:i},t);return}}let n=!1;if(t.useNetwork!==!1){let i=this,s=async function*({peer:o,signal:a}){let c={type:M.FIND_NODE,key:e.toBytes()};for await(let l of i.network.sendRequest(o,c,{...t,signal:a}))if(yield l,l.name==="PEER_RESPONSE"){let u=l.closer.find(f=>f.id.equals(e));u!=null&&(yield l1({from:l.from,peer:u},t))}};for await(let o of this.queryManager.run(e.toBytes(),s,t))o.name==="FINAL_PEER"&&(n=!0),yield o}n||(yield He({from:this.peerId,error:new E("Not found","ERR_NOT_FOUND")},t))}async*getClosestPeers(e,t={}){this.log("getClosestPeers to %b",e);let n=await Ft(e),i=this.routingTable.closestPeers(n),s=this,o=new cn(n,this.routingTable.kBucketSize);await Promise.all(i.map(async c=>{await o.add({id:c,multiaddrs:[]})}));let a=async function*({peer:c,signal:l}){s.log("closerPeersSingle %s from %p",P(e,"base32"),c);let u={type:M.FIND_NODE,key:e};yield*s.network.sendRequest(c,u,{...t,signal:l})};for await(let c of this.queryManager.run(e,a,t))c.name==="PEER_RESPONSE"&&await Promise.all(c.closer.map(async l=>{await o.add(l)})),yield c;this.log("found %d peers close to %b",o.length,e);for(let c of o.peers)yield l1({from:this.peerId,peer:c},t)}async*getValueOrPeers(e,t,n={}){for await(let i of this._getValueSingle(e,t,n)){if(i.name==="PEER_RESPONSE"&&i.record!=null)try{await this._verifyRecordOnline(i.record)}catch{let o="invalid record received, discarded";this.log(o),yield He({from:i.from,error:new E(o,"ERR_INVALID_RECORD")},n);continue}yield i}}async _verifyRecordOnline(e){if(e.timeReceived==null)throw new E("invalid record received","ERR_INVALID_RECORD");await Cr(this.validators,new pe(e.key,e.value,e.timeReceived))}async getCloserPeersOffline(e,t){let n=await Ft(e),i=this.routingTable.closestPeers(n),s=[];for(let o of i)if(!o.equals(t))try{let a=await this.peerStore.get(o);s.push({id:o,multiaddrs:a.addresses.map(({multiaddr:c})=>c)})}catch(a){if(a.code!=="ERR_NOT_FOUND")throw a}return s.length>0?this.log("getCloserPeersOffline found %d peer(s) closer to %b than %p",s.length,e,t):this.log("getCloserPeersOffline could not find peer closer to %b than %p with %d peers in the routing table",e,t,this.routingTable.size),s}};var W4=Jn($4(),1);var d2=Jn(G4(),1);var ln=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},p2=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},j4=r=>globalThis.DOMException===void 0?new p2(r):new DOMException(r),Y4=r=>{let e=r.reason===void 0?j4("This operation was aborted."):r.reason;return e instanceof Error?e:j4(e)};function qn(r,e){let{milliseconds:t,fallback:n,message:i,customTimers:s={setTimeout,clearTimeout}}=e,o,c=new Promise((l,u)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(e.signal){let{signal:h}=e;h.aborted&&u(Y4(h)),h.addEventListener("abort",()=>{u(Y4(h))})}if(t===Number.POSITIVE_INFINITY){r.then(l,u);return}let f=new ln;o=s.setTimeout.call(void 0,()=>{if(n){try{l(n())}catch(h){u(h)}return}typeof r.cancel=="function"&&r.cancel(),i===!1?l():i instanceof Error?u(i):(f.message=i??`Promise timed out after ${t} milliseconds`,u(f))},t),(async()=>{try{l(await r)}catch(h){u(h)}})()}).finally(()=>{c.clear()});return c.clear=()=>{s.clearTimeout.call(void 0,o),o=void 0},c}function g2(r,e,t){let n=0,i=r.length;for(;i>0;){let s=Math.trunc(i/2),o=n+s;t(r[o],e)<=0?(n=++o,i-=s+1):i=s}return n}var $n=class{#e=[];enqueue(e,t){t={priority:0,...t};let n={priority:t.priority,run:e};if(this.size&&this.#e[this.size-1].priority>=t.priority){this.#e.push(n);return}let i=g2(this.#e,n,(s,o)=>o.priority-s.priority);this.#e.splice(i,0,n)}dequeue(){return this.#e.shift()?.run}filter(e){return this.#e.filter(t=>t.priority===e.priority).map(t=>t.run)}get size(){return this.#e.length}};var zn=class extends d2.default{#e;#r;#s=0;#a;#c;#p=0;#n;#l;#t;#g;#i=0;#u;#o;#m;timeout;constructor(e){if(super(),e={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:$n,...e},!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${e.intervalCap?.toString()??""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${e.interval?.toString()??""}\` (${typeof e.interval})`);this.#e=e.carryoverConcurrencyCount,this.#r=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#a=e.intervalCap,this.#c=e.interval,this.#t=new e.queueClass,this.#g=e.queueClass,this.concurrency=e.concurrency,this.timeout=e.timeout,this.#m=e.throwOnTimeout===!0,this.#o=e.autoStart===!1}get#w(){return this.#r||this.#s<this.#a}get#v(){return this.#i<this.#u}#x(){this.#i--,this.#f(),this.emit("next")}#E(){this.#b(),this.#y(),this.#l=void 0}get#A(){let e=Date.now();if(this.#n===void 0){let t=this.#p-e;if(t<0)this.#s=this.#e?this.#i:0;else return this.#l===void 0&&(this.#l=setTimeout(()=>{this.#E()},t)),!0}return!1}#f(){if(this.#t.size===0)return this.#n&&clearInterval(this.#n),this.#n=void 0,this.emit("empty"),this.#i===0&&this.emit("idle"),!1;if(!this.#o){let e=!this.#A;if(this.#w&&this.#v){let t=this.#t.dequeue();return t?(this.emit("active"),t(),e&&this.#y(),!0):!1}}return!1}#y(){this.#r||this.#n!==void 0||(this.#n=setInterval(()=>{this.#b()},this.#c),this.#p=Date.now()+this.#c)}#b(){this.#s===0&&this.#i===0&&this.#n&&(clearInterval(this.#n),this.#n=void 0),this.#s=this.#e?this.#i:0,this.#h()}#h(){for(;this.#f(););}get concurrency(){return this.#u}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this.#u=e,this.#h()}async#I(e){return new Promise((t,n)=>{e.addEventListener("abort",()=>{n(e.reason)},{once:!0})})}async add(e,t={}){return t={timeout:this.timeout,throwOnTimeout:this.#m,...t},new Promise((n,i)=>{this.#t.enqueue(async()=>{this.#i++,this.#s++;try{t.signal?.throwIfAborted();let s=e({signal:t.signal});t.timeout&&(s=qn(Promise.resolve(s),{milliseconds:t.timeout})),t.signal&&(s=Promise.race([s,this.#I(t.signal)]));let o=await s;n(o),this.emit("completed",o)}catch(s){if(s instanceof ln&&!t.throwOnTimeout){n();return}i(s),this.emit("error",s)}finally{this.#x()}},t),this.emit("add"),this.#f()})}async addAll(e,t){return Promise.all(e.map(async n=>this.add(n,t)))}start(){return this.#o?(this.#o=!1,this.#h(),this):this}pause(){this.#o=!0}clear(){this.#t=new this.#g}async onEmpty(){this.#t.size!==0&&await this.#d("empty")}async onSizeLessThan(e){this.#t.size<e||await this.#d("next",()=>this.#t.size<e)}async onIdle(){this.#i===0&&this.#t.size===0||await this.#d("idle")}async#d(e,t){return new Promise(n=>{let i=()=>{t&&!t()||(this.off(e,i),n())};this.on(e,i)})}get size(){return this.#t.size}sizeBy(e){return this.#t.filter(e).length}get pending(){return this.#i}get isPaused(){return this.#o}};var Pi=class{log;datastore;cache;cleanupInterval;provideValidity;syncQueue;started;cleaner;constructor(e,t={}){let{cacheSize:n,cleanupInterval:i,provideValidity:s}=t;this.log=e.logger.forComponent("libp2p:kad-dht:providers"),this.datastore=e.datastore,this.cleanupInterval=i??36e5,this.provideValidity=s??864e5,this.cache=(0,W4.default)(n??256),this.syncQueue=new zn({concurrency:1}),this.started=!1}isStarted(){return this.started}async start(){this.started||(this.started=!0,this.cleaner=setInterval(()=>{this._cleanup().catch(e=>{this.log.error(e)})},this.cleanupInterval))}async stop(){this.started=!1,this.cleaner!=null&&(clearInterval(this.cleaner),this.cleaner=void 0)}async _cleanup(){await this.syncQueue.add(async()=>{let e=Date.now(),t=0,n=0,i=new Map,s=this.datastore.batch(),o=this.datastore.query({prefix:ls});for await(let a of o)try{let{cid:c,peerId:l}=Z4(a.key),u=Q4(a.value).getTime(),f=Date.now(),h=f-u,p=h>this.provideValidity;if(this.log("comparing: %d - %d = %d > %d %s",f,u,h,this.provideValidity,p?"(expired)":""),p){n++,s.delete(a.key);let y=i.get(c)??new Set;y.add(l),i.set(c,y)}t++}catch(c){this.log.error(c.message)}i.size>0?(this.log("deleting %d / %d entries",n,t),await s.commit()):this.log("nothing to delete");for(let[a,c]of i){let l=Gn(a),u=this.cache.get(l);if(u!=null){for(let f of c)u.delete(f);u.size===0?this.cache.remove(l):this.cache.set(l,u)}}this.log("Cleanup successful (%dms)",Date.now()-e)})}async _getProvidersMap(e){let t=Gn(e),n=this.cache.get(t);return n==null&&(n=await Z7(this.datastore,e),this.cache.set(t,n)),n}async addProvider(e,t){await this.syncQueue.add(async()=>{this.log("%p provides %s",t,e);let n=await this._getProvidersMap(e);this.log("loaded %s provs",n.size);let i=new Date;n.set(t.toString(),i);let s=Gn(e);this.cache.set(s,n),await W7(this.datastore,e,t,i)})}async getProviders(e){return this.syncQueue.add(async()=>(this.log("get providers for %s",e),[...(await this._getProvidersMap(e)).keys()].map(n=>ar(n))),{throwOnTimeout:!0})}};function Gn(r){let e=typeof r=="string"?r:P(r.multihash.bytes,"base32");return`${ls}/${e}`}async function W7(r,e,t,n){let i=[Gn(e),"/",t.toString()].join(""),s=new Vr(i),o=qe(n.getTime());await r.put(s,o)}function Z4(r){let e=r.toString().split("/");if(e.length!==5)throw new Error(`incorrectly formatted provider entry key in datastore: ${r.toString()}`);return{cid:e[3],peerId:e[4]}}async function Z7(r,e){let t=new Map,n=r.query({prefix:Gn(e)});for await(let i of n){let{peerId:s}=Z4(i.key);t.set(s,Q4(i.value))}return t}function Q4(r){return new Date(Ve(r))}var m2=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 Ci(r,e,t,n){let i=new m2(n?.errorMessage,n?.errorCode);return t?.aborted===!0?Promise.reject(i):new Promise((s,o)=>{function a(){t?.removeEventListener("abort",u),r.removeEventListener(e,c),n?.errorEvent!=null&&r.removeEventListener(n.errorEvent,l)}let c=f=>{try{if(n?.filter?.(f)===!1)return}catch(h){a(),o(h);return}a(),s(f)},l=f=>{a(),o(f.detail)},u=()=>{a(),o(i)};t?.addEventListener("abort",u),r.addEventListener(e,c),n?.errorEvent!=null&&r.addEventListener(n.errorEvent,l)})}var Di=class{deferred;signal;constructor(e){this.signal=e,this.deferred=ae(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new Dt)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function Q7(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var Ui=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=Q7(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,Ee(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 Dt),this.cleanup())}async join(e={}){let t=new Di(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 on(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};var un=class extends Pe{concurrency;queue;pending;sort;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.sort=e.sort,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){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}async add(e,t){t?.signal?.throwIfAborted();let n=new Ui(e,t);return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),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 s=0;s<this.queue.length;s++)if(this.queue[s]===n){this.queue.splice(s,1);break}}throw this.safeDispatchEvent("error",{detail:i}),this.safeDispatchEvent("failure",{detail:{job:n,error:i}}),i})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new Dt)}),this.clear()}async onEmpty(e){this.size!==0&&await Ci(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await Ci(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await Ci(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=Nr({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},i=c=>{c.detail!=null&&t.push(c.detail)},s=c=>{n(c.detail)},o=()=>{n()},a=()=>{n(new E("Queue aborted","ERR_QUEUE_ABORTED"))};this.addEventListener("completed",i),this.addEventListener("error",s),this.addEventListener("idle",o),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",i),this.removeEventListener("error",s),this.removeEventListener("idle",o),e?.signal?.removeEventListener("abort",a),n()}}};async function*X4(r){let{key:e,startingPeer:t,ourPeerId:n,signal:i,query:s,alpha:o,pathIndex:a,numPaths:c,queryFuncTimeout:l,log:u,peersSeen:f,connectionManager:h}=r,p=new un({concurrency:o,sort:(d,b)=>an(d.options.distance,b.options.distance)}),y=await Ft(e);function g(d,b){if(d==null)return;f.add(d);let v=nt(b,y);p.add(async()=>{let m=[i];l!=null&&m.push(AbortSignal.timeout(l));let A=rr(m);Ee(1/0,A);try{for await(let _ of s({key:e,peer:d,signal:A,pathIndex:a,numPaths:c})){if(A.aborted)return;if(_.name==="PEER_RESPONSE")for(let T of _.closer){if(f.has(T.id)){u("already seen %p in query",T.id);continue}if(n.equals(T.id)){u("not querying ourselves");continue}if(!await h.isDialable(T.multiaddrs)){u("not querying undialable peer");continue}let R=await ze(T.id),k=nt(R,y);if(an(k,v)!==-1){u("skipping %p as they are not closer to %b than %p",T.id,e,d);continue}u("querying closer peer %p",T.id),g(T.id,R)}p.safeDispatchEvent("completed",{detail:_})}}catch(_){if(!i.aborted)return He({from:d,error:_},r)}finally{A.clear()}},{distance:v}).catch(m=>{u.error(m)})}g(t,await ze(t));try{for await(let d of p.toGenerator({signal:i}))d!=null&&(yield d)}catch(d){throw i.aborted?new E("Query aborted","ERR_QUERY_ABORTED"):d}}var Oi=class{disjointPaths;alpha;shutDownController;running;queries;logger;peerId;connectionManager;routingTable;initialQuerySelfHasRun;logPrefix;metrics;constructor(e,t){let{disjointPaths:n=20,alpha:i=3,logPrefix:s}=t;this.logPrefix=s,this.disjointPaths=n??20,this.running=!1,this.alpha=i??3,this.queries=0,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun,this.routingTable=t.routingTable,this.logger=e.logger,this.peerId=e.peerId,this.connectionManager=e.connectionManager,e.metrics!=null&&(this.metrics={runningQueries:e.metrics.registerMetric(`${s.replaceAll(":","_")}_running_queries`),queryTime:e.metrics.registerMetric(`${s.replaceAll(":","_")}_query_time_seconds`)}),this.shutDownController=new AbortController,Ee(1/0,this.shutDownController.signal)}isStarted(){return this.running}async start(){this.running=!0,this.shutDownController=new AbortController,Ee(1/0,this.shutDownController.signal)}async stop(){this.running=!1,this.shutDownController.abort()}async*run(e,t,n={}){if(!this.running)throw new Error("QueryManager not started");let i=this.metrics?.queryTime.timer();if(n.signal==null){let u=AbortSignal.timeout(18e4);Ee(1/0,u),n={...n,signal:u}}let s=new AbortController,o=rr([this.shutDownController.signal,s.signal,n.signal]);Ee(1/0,o,s.signal);let a=this.logger.forComponent(`${this.logPrefix}:query:`+P(e,"base58btc")),c=Date.now(),l=!1;try{n.isSelfQuery!==!0&&this.initialQuerySelfHasRun!=null&&(a("waiting for initial query-self query before continuing"),await on(this.initialQuerySelfHasRun.promise,o),this.initialQuerySelfHasRun=void 0),a("query:start"),this.queries++,this.metrics?.runningQueries.update(this.queries);let u=await Ft(e),f=this.routingTable.closestPeers(u),h=f.slice(0,Math.min(this.disjointPaths,f.length));if(f.length===0){a.error("Running query with no peers");return}let p=new ct,y=h.map((g,d)=>X4({key:e,startingPeer:g,ourPeerId:this.peerId,signal:o,query:t,pathIndex:d,numPaths:h.length,alpha:this.alpha,queryFuncTimeout:n.queryFuncTimeout,log:a,peersSeen:p,onProgress:n.onProgress,connectionManager:this.connectionManager}));for await(let g of a1(...y)){if(g.name==="QUERY_ERROR"&&a.error("query error",g.error),g.name==="PEER_RESPONSE")for(let d of[...g.closer,...g.providers])await this.connectionManager.isDialable(d.multiaddrs)&&await this.routingTable.add(d.id);yield g}l=!0}catch(u){if(!(!this.running&&u.code==="ERR_QUERY_ABORTED"))throw u}finally{l||(a("query exited early"),s.abort()),o.clear(),this.queries--,this.metrics?.runningQueries.update(this.queries),i?.(),a("query:done in %dms",Date.now()-c)}}};function X7(r){return r[Symbol.asyncIterator]!=null}function J7(r){if(X7(r))return(async()=>{let e=0;for await(let t of r)e++;return e})();{let e=0;for(let t of r)e++;return e}}var Mi=J7;function ec(r){return r[Symbol.asyncIterator]!=null}function tc(r,e){return ec(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 ea=tc;var rc=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function nc(r,e,t){let n,i=new Promise((s,o)=>{if(t={rejectionEvents:["error"],multiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:u}=rc(r),f=(...p)=>{let y=t.multiArgs?p:p[0];t.filter&&!t.filter(y)||(c.push(y),t.count===c.length&&(n(),s(c)))},h=p=>{n(),o(p)};n=()=>{for(let p of a)u(p,f);for(let p of t.rejectionEvents)u(p,h)};for(let p of a)l(p,f);for(let p of t.rejectionEvents)l(p,h);t.signal&&t.signal.addEventListener("abort",()=>{h(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(i.cancel=n,typeof t.timeout=="number"){let s=qn(i,{milliseconds:t.timeout});return s.cancel=n,s}return i}function ta(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=nc(r,e,t),i=n.then(s=>s[0]);return i.cancel=n.cancel,i}var Vi=class{log;peerId;peerRouting;routingTable;count;interval;initialInterval;queryTimeout;started;timeoutId;controller;initialQuerySelfHasRun;querySelfPromise;constructor(e,t){let{peerRouting:n,logPrefix:i,count:s,interval:o,queryTimeout:a,routingTable:c}=t;this.peerId=e.peerId,this.log=e.logger.forComponent(`${i}:query-self`),this.started=!1,this.peerRouting=n,this.routingTable=c,this.count=s??20,this.interval=o??3e5,this.initialInterval=t.initialInterval??1e3,this.queryTimeout=a??5e3,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun}isStarted(){return this.started}start(){this.started||(this.started=!0,clearTimeout(this.timeoutId),this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.initialInterval))}stop(){this.started=!1,this.timeoutId!=null&&clearTimeout(this.timeoutId),this.controller!=null&&this.controller.abort()}async querySelf(){if(!this.started){this.log("skip self-query because we are not started");return}if(this.querySelfPromise!=null)return this.log("joining existing self query"),this.querySelfPromise.promise;if(this.querySelfPromise=ae(),this.started){this.controller=new AbortController;let e=AbortSignal.timeout(this.queryTimeout),t=rr([this.controller.signal,e]);Ee(1/0,t,this.controller.signal,e);try{this.routingTable.size===0&&(this.log("routing table was empty, waiting for some peers before running query"),await ta(this.routingTable,"peer:add",{signal:t})),this.log("run self-query, look for %d peers timing out after %dms",this.count,this.queryTimeout);let n=Date.now(),i=await Vt(this.peerRouting.getClosestPeers(this.peerId.toBytes(),{signal:t,isSelfQuery:!0}),s=>ea(s,this.count),async s=>Mi(s));this.log("self-query found %d peers in %dms",i,Date.now()-n)}catch(n){this.log.error("self-query error",n)}finally{t.clear(),this.initialQuerySelfHasRun!=null&&(this.initialQuerySelfHasRun.resolve(),this.initialQuerySelfHasRun=void 0)}}this.querySelfPromise.resolve(),this.querySelfPromise=void 0,this.started&&(this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.interval))}};var Fi=class extends un{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};function ic(r,e){if(r===e)return!0;if(r.length!==e.length)return!1;for(let t=0,n=r.length;t<n;++t)if(r[t]!==e[t])return!1;return!0}function ra(r,e){if(!(e instanceof Uint8Array))throw new TypeError(r+" is not a Uint8Array");if(e.byteLength!==32)throw new TypeError(r+" had incorrect length")}function jn(r){return Array.isArray(r?.peers)}var Hi=class extends Pe{root;localPeer;prefixLength;splitThreshold;kBucketSize;numberOfNodesToPing;constructor(e){super(),this.localPeer=e.localPeer,this.prefixLength=e.prefixLength,this.kBucketSize=e.kBucketSize??Yn,this.splitThreshold=e.splitThreshold??this.kBucketSize,this.numberOfNodesToPing=e.numberOfNodesToPing??3,ra("options.localPeer.kadId",e.localPeer.kadId),this.root={prefix:"",depth:0,peers:[]}}add(e){ra("peer.kadId",e?.kadId);let t=this._determineBucket(e.kadId);if(!(this._indexOf(t,e.kadId)>-1)){if(t.peers.length===this.splitThreshold&&t.depth<this.prefixLength){this._split(t),this.add(e);return}if(t.peers.length<this.kBucketSize){t.peers.push(e),this.safeDispatchEvent("added",{detail:e});return}this.safeDispatchEvent("ping",{detail:{oldContacts:t.peers.slice(0,this.numberOfNodesToPing),newContact:e}})}}*closest(e,t=this.kBucketSize){let n=new cn(e,t);for(let i of this.toIterable())n.addWitKadId({id:i.peerId,multiaddrs:[]},i.kadId);yield*Tr(n.peers,i=>i.id)}count(){function e(t){if(jn(t))return t.peers.length;let n=0;return t.left!=null&&(n+=e(t.left)),t.right!=null&&(n+=e(t.right)),n}return e(this.root)}get(e){let t=this._determineBucket(e),n=this._indexOf(t,e);return t.peers[n]}remove(e){let t=this._determineBucket(e),n=this._indexOf(t,e);if(n>-1){let i=t.peers.splice(n,1)[0];this.safeDispatchEvent("removed",{detail:i})}}*toIterable(){function*e(t){if(jn(t)){yield*t.peers;return}yield*e(t.left),yield*e(t.right)}yield*e(this.root)}distance(e,t){return BigInt("0x"+P(nt(e,t),"base16"))}_determineBucket(e){let n=P(e,"base2").substring(0,this.prefixLength);function i(s,o=0){return jn(s)?s:n[o]==="0"?i(s.left,o+1):i(s.right,o+1)}return i(this.root)}_indexOf(e,t){return e.peers.findIndex(n=>ic(n.kadId,t))}_split(e){let t=e.depth+1,n={prefix:"0",depth:t,peers:[]},i={prefix:"1",depth:t,peers:[]};for(let s of e.peers)P(s.kadId,"base2")[t]==="0"?n.peers.push(s):i.peers.push(s);delete e.peers,e.left=n,e.right=i}};var sc="kad-close",oc=50,Yn=20,ac=32,cc=1e4,lc=10,Ki=class extends Pe{kBucketSize;kb;pingQueue;log;components;prefixLength;splitThreshold;pingTimeout;pingConcurrency;running;protocol;tagName;tagValue;metrics;constructor(e,t){super(),this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:routing-table`),this.kBucketSize=t.kBucketSize??Yn,this.pingTimeout=t.pingTimeout??cc,this.pingConcurrency=t.pingConcurrency??lc,this.running=!1,this.protocol=t.protocol,this.tagName=t.tagName??sc,this.tagValue=t.tagValue??oc,this.prefixLength=t.prefixLength??ac,this.splitThreshold=t.splitThreshold??Yn,this.pingQueue=new Fi({concurrency:this.pingConcurrency,metricName:`${t.logPrefix.replaceAll(":","_")}_ping_queue`,metrics:this.components.metrics}),this.pingQueue.addEventListener("error",n=>{this.log.error("error pinging peer",n.detail)}),this.components.metrics!=null&&(this.metrics={routingTableSize:this.components.metrics.registerMetric(`${t.logPrefix.replaceAll(":","_")}_routing_table_size`),routingTableKadBucketTotal:this.components.metrics.registerMetric(`${t.logPrefix.replaceAll(":","_")}_routing_table_kad_bucket_total`),routingTableKadBucketAverageOccupancy:this.components.metrics.registerMetric(`${t.logPrefix.replaceAll(":","_")}_routing_table_kad_bucket_average_occupancy`),routingTableKadBucketMaxDepth:this.components.metrics.registerMetric(`${t.logPrefix.replaceAll(":","_")}_routing_table_kad_bucket_max_depth`)})}isStarted(){return this.running}async start(){this.running=!0;let e=new Hi({localPeer:{kadId:await ze(this.components.peerId),peerId:this.components.peerId},kBucketSize:this.kBucketSize,prefixLength:this.prefixLength,splitThreshold:this.splitThreshold,numberOfNodesToPing:1});this.kb=e,e.addEventListener("ping",n=>{this._onPing(n).catch(i=>{this.log.error("could not process k-bucket ping event",i)})});let t=0;for(let n of await this.components.peerStore.all())if(n.protocols.includes(this.protocol)){let i=await ze(n.id);this.kb.add({kadId:i,peerId:n.id}),t++}this.log("added %d peer store peers to the routing table",t),this._tagPeers(e)}async stop(){this.running=!1,this.pingQueue.clear(),this.kb=void 0}_tagPeers(e){let t=new ct,n=D0(()=>{let i=new ct(e.closest(e.localPeer.kadId,Yn)),s=i.difference(t),o=t.difference(i);Promise.resolve().then(async()=>{for(let a of s)await this.components.peerStore.merge(a,{tags:{[this.tagName]:{value:this.tagValue}}});for(let a of o)await this.components.peerStore.merge(a,{tags:{[this.tagName]:void 0}})}).catch(a=>{this.log.error("Could not update peer tags",a)}),t=i});e.addEventListener("added",i=>{n(),this.safeDispatchEvent("peer:add",{detail:i.detail.peerId})}),e.addEventListener("removed",i=>{n(),this.safeDispatchEvent("peer:remove",{detail:i.detail.peerId})})}async _onPing(e){if(!this.running)return;let{oldContacts:t,newContact:n}=e.detail,s=(await Promise.all(t.map(async o=>{let a=this.pingQueue.find(o.peerId);return a!=null?a.join():this.pingQueue.add(async()=>{let c;try{let l={signal:AbortSignal.timeout(this.pingTimeout)};this.log("pinging old contact %p",o.peerId),c=await(await this.components.connectionManager.openConnection(o.peerId,l)).newStream(this.protocol,l);let f=Hn(c);await f.write({type:M.PING},$e,l);let h=await f.read($e,l);if(await f.unwrap().close(),h.type!==M.PING)throw new E(`Incorrect message type received, expected PING got ${h.type}`,"ERR_BAD_PING_RESPONSE");return!0}catch(l){return this.running&&this.kb!=null&&(this.log.error("could not ping peer %p",o.peerId,l),this.log("evicting old contact after ping failed %p",o.peerId),this.kb.remove(o.kadId)),c?.abort(l),!1}finally{this.metrics?.routingTableSize.update(this.size)}},{peerId:o.peerId})}))).filter(o=>o).length;this.running&&s<t.length&&this.kb!=null&&(this.log("adding new contact %p",n.peerId),this.kb.add(n))}get size(){return this.kb==null?0:this.kb.count()}async find(e){let t=await ze(e);return this.kb?.get(t)?.peerId}closestPeer(e){let t=this.closestPeers(e,1);if(t.length>0)return t[0]}closestPeers(e,t=this.kBucketSize){return this.kb==null?[]:[...this.kb.closest(e,t)]}async add(e){if(this.kb==null)throw new Error("RoutingTable is not started");let t=await ze(e);this.kb.add({kadId:t,peerId:e}),this.log("added %p with kad id %b",e,t),this.updateMetrics()}async remove(e){if(this.kb==null)throw new Error("RoutingTable is not started");let t=await ze(e);this.kb.remove(t),this.updateMetrics()}updateMetrics(){if(this.metrics==null||this.kb==null)return;let e=0,t=0,n=0;function i(s){if(jn(s)){s.depth>n&&(n=s.depth),t++,e+=s.peers.length;return}i(s.left),i(s.right)}i(this.kb.root),this.metrics.routingTableSize.update(e),this.metrics.routingTableKadBucketTotal.update(t),this.metrics.routingTableKadBucketAverageOccupancy.update(Math.round(e/t)),this.metrics.routingTableKadBucketMaxDepth.update(n)}};var na=[77591,22417,43971,28421,740,29829,71467,228973,196661,78537,27689,36431,44415,14362,19456,106025,96308,2882,49509,21149,87173,131409,75844,23676,121838,30291,17492,2953,7564,110620,129477,127283,53113,72417,165166,109690,21200,102125,24049,71504,90342,25307,72039,26812,26715,32264,133800,71161,88956,171987,51779,24425,16671,30251,186294,247761,14202,2121,8465,35024,4876,85917,169730,3638,256836,96184,943,18678,6583,52907,35807,112254,214097,18796,11595,9243,23554,887,268203,382004,24590,111335,11625,16619,29039,102425,69006,97976,92362,32552,63717,41433,128974,137630,59943,10019,13986,35430,33665,108037,43799,43280,38195,29078,58629,18265,14425,46832,235538,40830,77881,110717,58937,3463,325358,51300,47623,117252,19007,10170,20540,91237,294813,4951,79841,56232,36270,128547,69209,66275,100156,32063,73531,34439,80937,28892,44466,88595,216307,32583,49620,16605,82127,45807,21630,78726,20235,40163,111007,96926,5567,72083,21665,58844,39419,179767,48328,42662,51550,5251,37811,49608,81056,50854,55513,20922,18891,197409,164656,32593,71449,220474,58919,85682,67854,13758,35066,3565,61905,214793,119572,141419,21504,10302,27354,67003,46131,32668,15165,64871,34450,17821,2757,11452,34189,5160,12257,85523,560,53385,65887,119549,135620,312353,115979,122356,10867,193231,124537,54783,90675,120791,4715,142253,50943,17271,43358,25331,4917,120566,34580,12878,33786,160528,32523,4869,301307,104817,81491,23276,8832,97911,31265,52065,7998,49622,9715,43998,34091,84587,20664,69041,29419,53205,10838,58288,116145,6185,5154,141795,35924,21307,144738,43730,12085,8279,10002,119,133779,199668,72938,31768,39176,67875,38453,9700,44144,4121,116048,41733,12868,82669,92308,128,34262,11332,7712,90764,36141,13553,71312,77470,117314,96549,49135,23602,54468,28605,6327,62308,17171,67531,21319,14105,894,107722,46157,8503,51069,100472,45138,15246,14577,35609,191464,1757,13364,161349,32067,91705,81144,52339,5408,91066,21983,14157,100545,4372,26630,129112,1423,29676,213626,4397,88436,99190,6877,49958,26122,114348,60661,29818,293118,50042,179738,16400,163423,89627,31040,43973,36638,45952,5153,1894,109322,1898,134021,12402,112077,68309,190269,69866,31938,107383,11522,105232,11248,14868,39852,71707,186525,16530,38162,106212,11700,5130,16608,26998,59586,108399,230033,43683,48135,82179,2073,5015,196684,189293,16378,23452,8301,35640,11632,214551,29240,57644,33137,91949,55157,52384,117313,5090,17717,89668,49363,82238,241035,66216,29066,184088,97206,62820,26595,4241,135635,173672,8202,459,71355,146294,29587,3008,135385,141203,14803,6634,45094,69362,50925,546,51884,62011,83296,234584,44515,56050,89476,87751,19373,12691,149923,19794,13833,35846,87557,58339,2884,19145,25647,12224,11024,77338,64608,122297,53025,7205,36189,36294,170779,21750,7739,173883,75192,35664,224240,113121,30181,26267,27036,117827,92015,106516,55628,203549,67949,60462,60844,35911,20457,1820,920,19773,8738,73173,181993,38521,98254,76257,46008,92796,5384,26868,151566,22124,2411,15919,186872,180021,28099,152961,78811,80237,62352,102653,74259,184890,16792,123702,224945,29940,19512,75283,14059,112691,92811,233329,20411,138569,53341,109802,50600,134528,66747,5529,166531,31578,64732,67189,1596,126357,967,167999,206598,109752,119431,207825,78791,91938,10301,27311,24233,252343,28831,32812,66002,112267,90895,8786,8095,16824,22866,21813,60507,174833,19549,130985,117051,52110,6938,81923,123864,38061,919,18680,53534,46739,112893,161529,85429,26761,11900,81121,91968,15390,217947,56524,1713,6654,37089,85630,138866,61850,16491,75577,16884,98296,73523,6140,44645,6062,36366,29844,57946,37932,42472,5266,20834,19309,33753,127182,134259,35810,41805,45878,312001,14881,47757,49251,120050,44252,3708,25856,107864,120347,1228,36550,41682,34496,47025,8393,173365,246526,12894,161607,35670,90785,126572,2095,124731,157033,58694,554,12786,9642,4817,16136,47864,174698,66992,4639,69284,10625,40710,27763,51738,30404,264105,137904,109882,52487,42824,57514,2740,10479,146799,107390,16586,88038,174951,9410,16185,44158,5568,40658,46108,12763,97385,26175,108859,664,230732,67470,46663,14395,50750,141320,93140,15361,47997,55784,6791,307840,118569,107326,18056,58281,260415,54691,8790,73332,45633,7511,45674,143373,14031,11799,94491,35646,96544,14560,26049,32983,25791,83814,42094,231370,63955,139212,2359,169908,3108,183486,105867,28197,32941,124968,26402,88267,149768,23053,3078,19091,52924,25383,19209,111548,97361,3959,24880,235061,9099,24921,161254,151405,20508,7159,34381,20133,11434,74036,19974,34769,36585,1076,22454,17354,38727,235160,111547,96454,117448,156940,91330,37299,7310,26915,117060,51369,22620,61861,322264,106850,111694,15091,2624,40345,300446,177064,1707,27389,54792,327783,132669,183543,59003,17744,20603,151134,106923,53084,71803,279424,319816,11579,21946,16728,38274,72711,5085,83391,88646,40159,25027,34680,10752,12988,54126,30365,18338,100445,230674,44874,84974,143877,123253,139372,28082,91477,144002,13096,219729,46016,50029,42377,14601,6660,58244,58978,23918,88206,113611,64452,17541,41032,10942,12021,49189,10978,40175,37156,10947,71709,106894,112538,57007,137486,150608,152719,40615,7746,279716,13101,19524,28708,40578,72320,1096,182051,94527,51275,22833,45164,81917,77519,48508,5421,140302,37845,149830,5587,27579,5357,428725,248187,6326,206760,39814,32585,89923,44341,288753,284443,96368,31201,94189,119504,20359,52073,103216,179,27934,32801,96035,34111,34309,101326,18198,20704,210266,37643,27880,141873,106e3,19414,56614,167714,66483,107885,86602,4379,20796,75467,4987,5017,118857,26003,34308,114428,29198,6686,29697,73632,3739,69795,16798,41504,7207,30722,21436,36735,28067,28545,3239,11221,36031,41889,100010,19247,317673,29495,174554,6424,129725,53845,94986,7955,59676,2604,191497,19735,102214,62954,23844,11872,179525,261436,34492,428,78404,142035,16747,17246,27578,37021,33672,57944,26056,135760,2369,61674,122066,31327,19374,157065,40553,130982,69619,71290,38855,72100,92903,95940,51422,165999,65713,57873,50726,7288,20272,2081,42326,22624,81120,57914,79352,19447,1684,72302,11774,302559,161481,96396,13692,414988,3721,79066,56627,46883,21150,11747,12184,5856,113458,176117,84416,52079,27933,3354,59765,141359,2212,216309,2555,23458,196722,142463,45701,44548,28798,19418,215,29916,9396,10574,114226,84475,13520,18694,34056,4524,90302,62930,13539,19407,77209,7728,38088,9535,2263,23875,183945,17750,26274,67172,10585,28042,22199,7478,51331,66030,26774,192929,31434,25850,50197,52926,178158,4679,181256,70184,229600,9959,105594,72158,73974,2726,35085,78087,23284,35568,51713,155676,5401,27254,11966,17569,223253,71993,103357,111477,55722,30504,26034,46774,35392,36285,214814,41143,163465,1051,16094,81044,6636,76489,179102,20712,39178,35683,125177,54219,30617,52994,25324,50123,2543,87529,58995,10688,125199,12388,60158,125481,131646,7642,133350,65874,3438,97277,101450,10075,56344,116821,50778,60547,98016,106135,13859,14255,16300,77373,173521,8285,45932,37426,4054,114295,55947,7703,39114,52,51119,128135,19714,60715,9554,50492,88180,2823,118271,52993,122625,97919,23859,37895,25040,33614,32102,20431,3577,9275,15686,43031,157741,110358,1884,40291,125391,13736,5008,64881,87336,77381,70711,43032,49155,118587,70494,4318,10168,30126,12580,10524,280104,104001,145413,2862,84140,6603,106005,13566,12780,11251,42830,571,179910,82443,13146,469,42714,32591,265217,424024,92553,54721,134100,6007,15242,114681,59030,16718,85465,200214,85982,55174,165013,23493,56964,82529,109150,32706,27568,82442,5350,14976,13165,44890,60021,21343,33978,17264,4655,22328,27819,75730,16567,55483,14510,17926,45827,150609,3704,7385,272531,161543,76904,122163,52405,2039,19165,41623,14423,228354,3369,176360,85491,7122,35789,303724,4465,13628,2233,55311,118771,20713,10006,221519,45115,71021,35650,29775,7337,10864,20665,21142,1746,15080,1624,32449,10905,105743,229797,7701,3940,22997,178467,57208,389057,39683,59403,63344,63125,54847,69691,18336,56448,3362,37202,18282,29648,138224,35867,10495,5911,28814,26653,31514,176702,26550,45621,11734,4525,40543,73944,121080,27858,155561,14887,44670,30742,8796,107455,113472,56369,75581,183777,240095,133699,153299,8768,160464,26058,49078,103971,21875,71486,44888,17156,9678,89541,123019,102337,3972,83930,21245,87852,109660,287918,183019,686,10100,39177,283941,11274,24736,26793,26214,25995,77011,141580,4070,23742,46285,46632,30700,26669,19056,35951,115575,174034,56097,35463,87425,24575,44245,38701,82317,85922,281616,100333,147697,61503,7730,84330,8530,59917,61597,17173,9092,32658,90288,193136,39023,20381,56654,31132,7779,1919,1375,117128,30819,11169,40938,23935,115201,101155,151034,4835,11231,74550,89388,59951,91704,107312,167882,115062,12732,72738,88703,464019,158267,57995,60496,737,14371,123867,4174,243339,159946,7568,16025,134556,110916,38103,191,80226,88794,29688,27230,10454,76308,57647,77409,113483,66864,14745,19808,12023,46583,84805,16015,17102,2231,20611,3547,95740,250131,34559,108894,8498,15853,159169,148920,20942,2813,93160,45188,210613,45531,52587,149062,39782,28194,57849,60965,84954,89766,84453,100927,16501,27658,165311,103841,54192,207341,19558,20084,319622,5672,205467,98462,61849,36279,13609,147177,24726,165015,209489,59591,31157,6551,117580,75060,141146,277310,21072,22023,106474,63041,137443,122965,68371,5383,42146,98961,113467,30863,23794,4843,99630,30392,82679,13699,241612,33601,93146,24319,18643,32155,95669,40440,15333,34089,67799,142144,58245,38633,114531,117400,77861,188726,5507,2568,8853,10987,107222,2663,2421,11530,13345,30075,41785,118661,104786,17459,12490,16281,71936,193555,17431,5944,71758,26485,77317,20803,367167,158,7362,93430,11735,172445,46002,11532,54482,930,62911,2235,23004,179236,4764,101859,208113,22477,55163,95579,14098,67320,162556,90709,156949,3826,57492,4025,34092,87442,104565,6718,186015,28214,14209,10039,107186,233912,58877,81637,55265,39828,6194,145813,50831,105849,4974,88319,122296,10272,197216,95714,51540,72418,23324,91555,8743,140452,250249,51666,34124,7229,38592,129641,78169,174242,22464,149964,51450,14034,10026,95376,26190,120062,14401,8700,265,31386,143573,7203,229889,61567,4227,140981,2466,72052,10787,10062,30958,6099,38471,30103,23202,208101,70847,467,58934,32271,32984,36637,24107,30771,17109,73353,13650,2098,157040,67366,66904,106018,265380,107238,18535,44025,32681,144983,62505,91295,56120,3082,77508,10322,63023,36700,81885,224127,16721,45023,239261,111272,13852,7866,149243,204199,32309,22084,42029,38316,126644,104973,14406,43454,67322,61310,15789,40285,24026,181047,6301,70927,23319,115823,27248,66693,115875,278566,63007,146844,56841,59007,87368,180001,22370,42114,80605,12022,10374,308,25079,14689,12618,63368,7936,264973,212291,136713,95999,105801,18965,32075,48700,52230,35119,96912,32992,8586,16606,101333,101812,14969,39930,759,193090,27387,42914,12937,5058,62646,64528,38624,25743,37502,3716,4435,30352,178687,26461,132611,42002,138442,35833,59582,16345,8048,60319,49349,309,47800,49739,90482,26405,34470,63786,32479,85028,39866,47846,11649,23934,29466,2816,42864,31828,7410,74885,49632,47629,111801,90749,19536,18767,105764,59606,21223,10746,76298,22220,39408,7190,79654,64856,11602,82156,272765,17079,70089,245473,51813,184407,384678,1576,122249,5064,27481,6188,25790,74361,27541,318284,45430,31488,620,93579,45723,192118,22670,51913,4162,70244,35966,26397,16199,50899,209613,121702,287507,2993,36101,132229,67345,33062,76295,118628,78705,52316,34375,107083,107454,44863,127561,33964,3073,154010,190914,55967,39074,6272,31047,5550,41123,26154,98638,47110,19998,148091,50229,31329,59900,195442,19106,61347,73497,70015,682,45850,25776,38022,148951,6288,37411,232526,109277,27286,32342,9262,5220,16651,23175,46740,129438,78614,121925,66914,88710,127952,5563,21500,34521,10739,14863,191006,62956,17359,16749,67027,56284,69134,43301,35039,58883,54466,60823,404451,75743,59856,86979,7923,34273,83785,32142,7693,268986,197428,282681,17049,22346,22990,92245,107180,3357,37104,96724,49153,7683,31197,43267,82231,164276,23696,20848,188364,22309,24821,158707,1018,22514,70922,27792,45589,59709,10765,736,35218,63479,51987,24275,63588,55361,92929,81964,4658,20122,12330,44058,13065,311456,72224,8337,211229,38979,22590,138478,52757,32595,133600,8838,31549,94412,43391,90056,1585,94802,127271,6223,31889,137038,132910,2165,57616,230152,6080,10748,36737,74579,134062,50525,180532,119270,34556,76155,82394,52595,29258,31435,87820,67996,26943,183878,38007,2410,13526,180297,69856,3503,187396,167700,7838,16701,9199,56267,3661,37407,65994,23767,5708,62508,221700,67088,86978,46776,84434,32088,5612,9149,88244,21685,95151,46750,189612,2979,506311,2594,3628,40074,105039,78243,28523,6651,38058,71999,30992,12764,68261,108991,6165,26450,61961,13400,22426,7490,60890,109623,2070,12958,50355,67979,257096,7213,42578,52121,35716,65461,7516,124758,39268,302,64712,14977,1467,219452,2840,34229,11121,21602,19270,63574,8024,1532,17331,79839,78885,52029,180767,57957,6069,91265,61380,55767,8927,32881,287603,22149,35029,68876,6428,199567,46926,13412,104132,21434,366616,45060,110046,81924,128910,45886,52821,130416,29416,77342,21762,67329,121432,79924,11724,38625,81006,102033,28338,13326,3250,82056,82526,38212,21112,12382,111495,3263,7414,86274,93490,40844,30224,45212,24019,48411,71367,24941,76729,57776,3769,38114,202019,197745,31953,237533,33270,201580,255648,100798,44741,32241,98468,106931,10085,15090,170358,33154,66787,18819,69760,25061,234005,82660,6295,131975,16874,9076,4094,25005,17740,40908,19533,220019,44330,99792,50040,19619,13950,55228,24423,31253,95308,103177,184795,28590,82285,5059,3210,75525,49894,70007,56178,10580,36051,139681,21617,98736,3555,106306,164189,37352,63915,47824,24883,145530,61904,28444,11483,19837,145446,30420,112972,85939,11835,191233,2262,20705,58630,1753,148334,1197,144714,6887,11223,107667,60879,77914,4151,57417,81594,96681,169430,1784,20444,95138,254041,27038,596,7117,72808,13759,3353,126776,21074,55322,27081,36942,39547,139830,179275,4453,713,8722,71399,19204,25785,22794,23923,104114,11291,25458,102309,88396,75288,230440,206396,104551,58447,130857,37247,94734,31548,176529,226077,65159,20104,10096,66881,94191,237909,27109,37404,1520,27421,25220,113003,23423,24884,50585,6286,231877,150800,11789,3226,90004,60642,5053,202400,61442,132531,175329,57138,30116,103847,9973,75367,16452,32360,59119,21246,10191,164804,23305,61051,37348,154530,13214,5468,50403,66754,130976,50559,80515,14436,155492,84017,5472,43107,41240,2890,90431,70188,382,76234,48040,50211,281038,237007,32115,142178,1536,22761,96429,1811,31243,1679,49143,55209,17402,235054,61494,7462,77030,34925,87609,78002,9499,9027,73289,201078,101379,63544,27666,5469,10642,30029,49816,132979,95620,58086,351930,116300,2110,2043,30845,6154,11279,16727,4122,2277,27281,4971,3650,39060,61970,65951,39674,75686,38151,11370,130809,177895,32665,63725,122267,7857,39618,118483,44792,157755,178624,136994,24260,41308,22471,12404,21707,12486,30473,52781,50246,20247,39065,909,56825,103158,128603,31542,1089,41935,32744,12428,37963,84420,33134,72921,208449,42622,168151,127335,147107,46699,38216,12591,94342,85814,31423,24944,2605,87542,67473,192551,4496,56321,91819,17630,6300,256183,114569,202090,33209,35289,34897,24967,40520,43470,5344,10199,34810,14283,10381,10017,62923,49924,23233,64539,13051,35686,19698,11570,135555,120868,44924,87065,52318,52335,47586,140906,245885,109834,78668,9065,46990,25258,72022,61243,40838,4545,146387,10537,11557,17470,36930,68104,46711,24264,79401,81043,18225,120488,24746,84338,81652,28266,13776,21878,46973,1047,230465,73357,95777,24973,210160,62210,58404,110633,169651,6937,41870,9909,26822,191062,76553,27519,96256,239070,2478,205678,67955,58532,20601,50120,19148,78501,195724,110740,8249,109665,27446,30568,57631,31425,49752,32820,65504,50079,3663,102256,219898,23849,211315,14645,4359,91767,9528,12449,49366,7941,49763,107848,8930,27086,50686,9744,10447,81935,39513,46514,1670,29229,6172,22312,137280,97759,9806,14445,22976,56458,73391,34983,93760,174219,52573,33149,59747,2429,136277,75123,165263,91040,7446,57632,48633,97140,246081,84766,151684,79918,93268,120346,54059,54875,77858,32996,103590,45276,11968,19600,25849,17159,132907,42828,16817,4913,99462,103303,27395,5737,74184,20749,21160,14377,77062,131403,158735,10999,27799,77785,9320,34366,51593,61070,33746,47048,29268,36675,30262,53297,9832,82e3,20188,122292,39917,7331,18160,68301,185935,134830,15031,4935,10004,165845,185534,46923,30109,44134,122631,18874,22903,112790,26561,18549,348902,82871,140345,255565,135390,63556,103747,145055,179600,145662,296111,61661,211987,23952,52342,126343,48450,32919,44277,82185,9591,62139,205363,376969,394874,108461,18040,120885,14798,39863,16571,16794,58271,81025,55206,14640,118656,6361,44092,85970,6262,153863,108244,180200,72264,79947,38044,10050,5735,61221,80712,5471,115689,11391,11661,184257,20010,60116,30320,19327,134598,45455,27542,18004,125092,452272,1549,91523,46567,180063,156026,2608,11174,58848,37788,65907,80194,30490,5786,40775,119519,106241,11323,156297,8425,61495,2617,29675,2425,59886,112582,49142,59618,4863,50597,86710,50650,168632,27693,85641,83643,18993,25768,84284,28090,93592,36627,312804,43381,9887,9402,100931,97165,3311,173330,66805,28935,4963,184460,3201,78102,19126,21607,37496,24938,22615,16153,32862,134792,153318,61120,6067,2812,12826,12792,23825,37559,64662,202250,102694,155488,85881,149193,46233,65383,15521,106982,11358,176786,25752,39717,34208,24510,32464,77742,39371,72028,138229,60688,71386,102834,132477,2208,11548,63670,271279,28351,30338,38620,32491,99845,143885,152266,13252,2825,178663,108097,1775,78201,14897,113573,163346,62292,171129,22183,96598,38733,64971,166776,117445,9968,146393,44677,74867,20908,97328,12761,25656,26785,9148,112344,26115,99176,110121,22437,49547,6180,79320,5835,31392,43328,33377,75870,119860,69497,80273,7325,155219,43167,111173,28347,20222,3763,71752,55041,47252,14618,28088,15012,97805,194698,54636,2036,41349,6173,96604,61530,51859,43782,13361,24334,22668,24792,7070,23441,16789,3209,36211,208475,26242,32880,122181,182407,21444,31060,88459,29929,77907,12716,10934,97005,20599,31690,8403,58445,30303,22700,10336,86731,103115,337709,72556,46788,112566,47684,67089,53548,36874,56487,41387,125985,26893,40071,106683,73712,18787,40105,72992,67246,137276,50802,36790,70328,138827,22466,39263,183295,29858,50975,9322,57397,10654,24364,30383,55799,41600,23584,127295,296610,129078,143558,244131,86397,36049,1085,80677,3820,108139,5476,34767,24683,7758,13060,7239,131671,250593,59556,103392,29810,4188,252323,39404,116877,7651,43600,40338,13554,157253,39196,25978,144387,61211,234,50104,6129,10449,93777,9240,356378,274148,4439,72970,3724,147770,78680,62570,115877,40027,40547,36817,224392,64609,34795,165027,67440,2477,37206,23431,50754,164797,46018,94995,170982,27051,7957,22767,3674,27900,56419,18930,60701,41302,2692,84749,339721,61996,111094,80221,50129,1045,8153,62945,19202,8250,37208,37418,32560,79477,41106,88569,33963,36693,5892,30570,1581,66471,49647,11922,160717,29442,5643,114865,82962,95982,132098,22633,22838,94726,54556,28566,205039,162340,33216,16849,35847,221339,94851,26533,71469,1805,3804,12935,45483,71020,36310,65381,192960,34240,35165,59773,1248,46954,155332,96864,4246,388800,16129,57133,74592,44807,442014,38203,42574,80818,91592,26377,36424,65760,977,77387,22628,147610,28018,30561,98454,6969,119628,63648,18170,36854,26601,64018,22027,37279,51395,152934,21153,9430,58760,194742,5330,55115,34158,28917,174111,13171,122326,1526,43896,66094,25325,4234,148354,11450,275,18999,112191,44365,22723,68409,8733,57746,96565,75007,14196,108844,29475,88599,177563,100792,106156,86323,93726,14248,135341,194131,40126,47099,14779,8272,39597,95983,171398,65882,28052,10393,47213,40689,22120,72212,106829,34964,109146,753,648,21660,30047,17527,181025,5619,145357,4085,216883,9359,186951,24779,53931,24545,36197,223296,62628,168101,4243,107313,30321,26642,13049,51059,31027,107912,807,73550,26551,84369,122422,165872,49754,74213,234264,33151,52014,33100,87183,22365,52500,40013,23302,5652,72723,21404,26107,48434,587,94049,168493,96418,32871,70860,31709,25128,443,71597,166253,15670,70994,26341,133675,28280,75491,54756,47955,56028,26182,11952,113272,472197,64640,110753,17919,337,50642,22576,142,87371,53391,93210,126694,15285,19642,85667,14148,1506,42092,52962,33243,11970,20734,135843,57044,58880,13002,219134,22876,64754,232519,4257,43120,321573,24799,64526,124728,52579,81472,70831,276848,17403,74359,23021,182101,74597,23744,148267,12055,7976,5349,11772,67540,167347,65318,18720,127832,108238,22828,90233,9987,259080,118185,73209,79270,13775,90100,137742,90799,70569,15699,19961,9087,67475,57872,39731,8810,134897,131868,146849,19898,3334,2281,167061,91073,60356,467742,74712,188,53179,137679,92769,29241,9537,132595,80119,1041,88962,5976,40171,44911,102859,139059,104558,98987,47761,19272,71472,113864,175377,73338,10857,23402,23758,1591,139864,5644,4076,118760,16427,134198,18853,20291,100849,37423,22038,36677,19071,195521,57445,11069,31869,55718,66882,148490,44,41296,75242,49704,166810,9906,20943,122258,49112,105667,15969,10344,6408,187694,21399,72742,58970,14867,14376,81889,41856,23225,15042,56993,16074,131389,74276,72407,53875,383108,53597,37363,68993,44854,122548,430927,198279,38430,80409,12245,2981,628,2818,17760,37437,238229,7968,46892,2200,3730,34190,65983,37959,112291,87850,70827,6522,20750,73913,111621,41652,19587,2780,58668,25916,85259,18200,168962,95781,42445,102050,7776,57662,103313,47742,96358,41964,66174,100396,29069,204735,19679,27978,7479,40264,22534,61183,36081,107436,58223,14680,23002,101311,24716,124108,12908,5646,31750,40380,14215,232799,102772,14122,96775,61398,50917,12096,149880,67833,598749,124194,155871,49216,790,14677,65319,56917,7440,145744,95701,12206,49405,129269,76199,45732,9767,11058,9047,210885,11051,7392,26307,2130,8132,147526,20802,232698,115660,50060,59789,57344,107623,80343,112676,23291,9866,160971,34032,118291,15719,59730,164911,28975,2659,58046,78480,21854,66209,53863,109085,116045,29021,46481,107552,22130,18764,70254,31272,11300,52460,43933,84738,20721,53869,190840,79673,105300,7561,321817,66924,13940,33281,101046,183181,32176,71878,5678,62924,79535,56646,40303,19559,27703,93042,73368,42187,3670,37376,46440,7023,36816,109628,20680,5940,276440,275233,170848,112093,136996,14984,20226,111441,77693,112960,48577,39370,55707,50314,123404,26570,54281,61372,123391,4857,35928,246740,132507,106646,44241,7196,92258,9825,37688,51197,303141,5590,15476,132986,10955,85782,34486,26696,7991,28813,18858,39546,11703,11365,38185,5716,93555,11925,40121,60002,6985,10976,171384,3887,43394,13337,56346,6381,252336,39573,75042,53711,1028,31781,44295,95925,131713,7214,68125,43571,70954,213234,1628,8760,13391,65485,17320,56038,1710,25248,60803,57399,19839,3870,326,281556,50945,72400,21460,316244,75619,56246,98775,481,13513,55765,50427,7388,123519,32929,57908,27124,61316,101097,57467,30228,48792,10788,20402,37318,50526,155730,34456,158065,145305,17832,43733,64052,4506,35072,205355,177028,184004,187081,68616,35938,83703,10367,36892,93186,260137,51934,89970,4985,23445,26755,21558,7948,78741,23376,124405,85594,68596,57536,49351,12619,56593,132668,99924,109728,71844,71935,196018,65464,17617,14987,89701,143773,33997,8687,22701,33258,2914,4436,72108,85610,9671,49067,2327,82988,1361,1672,44033,35777,30269,24057,10605,82236,616,15793,13919,47249,112086,116698,9484,80207,90574,33304,68624,93127,56101,42210,160929,4827,38995,38095,4701,125119,5027,33680,9236,231236,14135,87837,23318,70261,78893,30151,81482,14332,1084,74256,27532,46644,79185,3148,62615,6981,55672,31668,36825,1849,14536,37446,14738,23779,43058,162749,72199,1168,21346,5592,85932,85302,9668,18351,57135,150360,2080,228015,77953,34670,119302,151751,31009,106725,84265,45214,59289,74178,113071,263206,111009,4021,44449,188119,192629,123592,392506,292847,114487,12831,205858,9852,20780,79648,75767,357014,97721,18166,21005,67950,33226,204009,16536,2987,11335,66717,144910,47950,17262,55060,15063,2934,51038,26775,178497,66008,3427,49433,128592,20036,157553,63861,3089,23015,51210,28696,35933,49942,71135,231518,99620,17248,21835,176536,20676,16944,38700,165831,233253,295625,36723,13023,52745,10907,19423,67972,125868,95473,82875,1183,108455,52685,33417,64095,21433,52438,33191,127809,44505,211823,7810,2752,95548,162031,7185,91196,47563,61721,33359,17897,23682,42806,178101,22874,49707,199897,75419,82456,8618,11171,79712,116847,18783,44190,46564,5346,59046,95032,7893,14916,3214,26800,24172,121453,34362,10250,17408,18888,4840,68696,22831,13162,36005,32512,14800,62357,41723,45046,27247,37486,5372,2564,34261,298500,66509,133920,89138,31305,117697,19097,108304,81386,84106,23802,46411,63304,946,51417,41777,41041,19501,115864,60743,294354,37955,94165,18116,1156,17937,20645,57114,90804,58042,48643,92288,9861,2557,88546,61333,101008,12853,5148,87856,4152,144503,73841,18718,9789,147565,10846,42085,12789,30223,8993,56352,67203,2448,28215,6052,23540,126319,75933,36689,80235,23231,23561,21383,38800,77548,102798,21234,31468,158608,46188,63960,191679,8051,67014,11185,170078,42186,28827,34777,41930,212079,12421,34750,24111,110344,73918,45171,70826,141949,40063,23979,24254,37309,26724,27179,24718,83648,54938,14591,17425,29525,102675,48975,48654,12316,8929,60640,41709,50168,63264,89812,50716,48632,38755,138583,160123,55579,71829,24230,233277,46322,39650,166388,34718,24108,98252,7031,106695,62498,18258,35062,217827,78731,34824,33354,19520,60852,2432,60224,8587,2836,62955,702,20227,42285,40560,95592,62486,11094,53035,143291,18842,46177,77994,1770,9657,107422,172915,32655,128716,25886,25164,156740,119928,165875,85817,11007,89110,33956,12652,65156,180266,8494,36889,19958,20955,96,1264,118288,135769,44754,86671,5632,19026,168220,289120,33569,93821,66144,70635,7687,5642,2714,55445,56636,71545,184182,93133,7332,37389,12643,52315,22729,11014,158742,17050,152889,50178,34601,41945,52136,9948,26914,63548,95721,115951,40759,8960,158258,38938,49232,48325,42234,81523,253019,66128,40978,20048,238048,38760,62928,122560,118532,43687,137472,163689,26680,9878,17448,51035,16211,60834,36749,29178,14241,59868,150086,2305,26477,42422,34342,165341,83279,33894,14257,29928,12743,13957,125571,89134,66712,10952,16507,147839,30146,7249,16565,45399,39874,114565,215780,31990,230881,171477,102,196546,44538,10880,84948,281705,86651,10617,31395,2342,453658,43569,60561,132901,21845,17727,58556,258242,22262,58728,4008,77997,11806,37431,30599,81375,109137,185787,114085,217292,97453,169085,30593,60212,11544,102056,65580,2384,91655,4855,95725,7295,157994,16228,20669,53276,141590,105246,17334,25440,76067,17967,39321,38911,11362,28559,63807,21627,26468,85816,40120,1025,15234,58319,69516,66512,124548,75845,78873,22137,46681,51242,85683,32909,76747,35555,43396,101465,1765,73094,1077,2962,39028,66777,57831,42048,15828,13962,36041,63657,52412,5242,58846,2141,5506,219012,134451,3936,182230,17558,17153,152237,22621,49377,170216,35257,68233,65374,6510,11126,212151,7184,2480,22517,3437,33073,30156,16557,3768,55067,86829,91e3,12350,148650,66017,79424,70885,49066,28250,21369,51213,34533,11510,3258,18176,18465,84413,6315,36411,163765,4346,356,107618,598,13727,285026,162695,8749,14583,7132,63521,184253,32378,25991,5604,30961,53675,4874,84693,5086,34811,26978,56564,7904,33519,51221,113942,69253,6664,125563,22055,220680,102008,742,51930,19494,176108,44424,35123,13025,75685,11759,74335,22250,181453,131147,16984,132115,154311,11991,76452,52609,85351,196,30969,9198,74919,2529,56838,71779,29187,116304,3504,62330,41190,86153,28393,254926,104228,105189,13264,84359,3574,12415,8534,57147,10175,188174,59504,60932,66318,16407,107921,17638,99103,49278,28403,39786,145865,8462,3558,43406,142271,29139,21989,36552,93955,72365,7176,13556,106185,37957,321774,17782,129017,51154,27938,24952,1935,39366,2791,33489,41582,56078,24558,9311,5449,218786,27808,190429,68013,36020,86003,29735,3404,87348,119357,115714,2324,86796,81973,40992,43376,93621,28784,16808,36367,2517,2909,191926,24978,55303,53308,205724,60068,3098,21375,64784,23949,26579,63121,12319,80145,39967,97861,6757,70143,67642,37082,34698,69140,122883,46151,62187,80934,429,19437,135071,137885,222647,13331,154065,327,61778,74257,40116,37493,14855,85079,237641,42342,102164,199965,71204,4662,29368,5042,113914,122214,8955,13149,102503,43173,5659,163787,69003,307084,63392,171080,21390,81918,86666,36622,24126,28887,5736,28054,207170,163428,79891,346467,95363,38980,111806,80828,9200,19288,294896,114468,87405,111715,141705,7015,72754,68463,48738,243147,33397,101210,37051,98801,82847,20397,4940,185559,18716,54718,83491,11725,40803,1128,12128,23060,5174,7745,67007,46701,1571,27807,180186,256996,18975,16837,7877,212758,250379,15440,87954,57755,24719,124057,83461,258,50864,8874,29038,71289,31627,15429,9005,4061,113851,107716,82819,13651,79656,117851,17539,111446,12938,39724,190787,4352,15402,21070,62708,8539,23777,73853,13552,38810,86117,16285,56400,1718,75342,142863,29033,378,110113,180321,32586,23606,26393,160984,207987,23783,8406,16904,24596,47274,11693,46539,60524,78595,48423,31718,20170,9009,146268,15183,191060,172765,1349,138436,37365,10970,40509,225817,20021,70394,152138,21541,66559,66544,89352,2725,17258,91345,7313,3815,115868,8660,40362,4071,103524,39388,118275,21950,6549,38226,32754,209574,29201,43495,18028,20296,40597,18370,47520,202450,24134,2219,8195,69545,38041,136934,46374,19041,159811,84865,58620,846,98749,13569,30714,97246,32186,4479,27355,92973,35214,151491,75963,37631,1561,27200,238083,23182,60756,12291,25766,39355,102333,87362,65741,59906,19538,201575,48772,102938,24438,292580,39964,66366,9004,61379,50548,37622,38732,28379,68180,76622,17488,69849,5963,7219,48143,43413,55358,540,58691,29506,19245,52193,48621,5518,13048,118625,44755,191081,42061,89197,2259,60665,66994,71210,51232,3585,142096,55024,7892,8345,58653,463307,65658,64319,137941,136323,53499,12746,43492,6978,95163,29925,60175,5128,7352,41463,184756,121146,20473,18426,4598,5309,54580,14277,121151,10691,56711,43880,63409,76682,11830,172218,264898,32632,66536,81062,31649,25788,92774,60222,11100,63159,9432,224657,25240,53613,152,138620,163829,2397,85345,12501,37507,64932,38575,43522,65789,80198,78796,35226,3851,108891,73311,3060,28391,93671,39663,46142,30982,66041,37281,68157,26553,71872,81142,211527,39747,118119,22695,2859,11066,20232,168911,7933,197005,17066,111071,44434,133994,120798,12766,227798,45756,132852,29917,36076,55352,65281,129800,41958,18944,84678,18580,168093,132621,39997,54092,27740,32354,3770,114118,103242,43918,15899,18574,145944,3190,123469,219903,24169,100571,62403,16776,92779,14535,17168,16475,14304,37231,1712,28218,242754,61688,28980,1318,51359,222657,99200,67989,31772,23932,35351,201251,49041,27306,19128,40135,3986,77333,19649,120683,151927,21081,7076,78375,77501,101599,8011,89585,96715,58179,5378,102138,106793,26051,217276,4197,16297,27014,46721,13322,22806,5278,29629,70632,9647,71519,58818,40603,128530,8903,36770,56900,31483,26935,43845,34265,34920,87658,6114,84767,64250,47318,50720,19264,162514,33357,13117,6705,46696,75032,71054,87004,42035,69138,11903,99854,102328,19611,34525,69312,6431,49842,101600,133178,108751,41829,89939,225664,48916,99556,9195,130387,5960,36857,116724,53518,94002,39077,53996,6945,22261,64291,8314,152785,57588,16522,9091,5048,87671,35441,39509,1945,12423,158923,178413,37549,14095,1475,73188,62878,4819,24012,68534,42606,4010,120809,57497,59564,101758,103718,32701,80116,12345,95834,46918,21468,53213,15665,31200,3867,5140,96013,250744,21016,10069,13968,35449,180829,27683,39704,59956,22893,3115,26293,32785,75934,62445,141162,62720,2018,83638,19949,114012,95006,3330,99829,130935,309272,9565,55874,121727,37017,23586,319858,40970,27602,8625,112329,61060,100088,118525,25922,16232,1907,60671,51583,44553,80993,5262,94679,8676,940,20736,11823,3020,16476,12340,152600,97416,3703,25744,66826,16245,16876,46446,84798,74227,176020,45192,61955,75496,23946,23626,40372,26036,6149,11822,30582,16541,41914,82385,232823,40921,80773,14930,3631,7517,39619,4348,36180,126106,138939,62611,1477,113512,47321,25052,14546,118881,29060,23589,128322,36795,18401,137921,104699,267929,36194,172791,18113,4766,188215,30083,332586,94089,5805,77909,22194,68234,154976,43220,40660,70001,184893,138095,11128,103010,22663,5108,212615,8485,5565,49222,54614,26530,42639,16319,55062,152662,105595,21114,22216,10294,68158,10436,86950,7206,62115,3977,3657,59874,456,118617,18156,106663,112229,80992,17442,8217,55551,5133,34344,251927,51153,39364,201321,7816,66803,23057,156724,145664,14276,95705,979,2796,6875,13429,212525,50602,26276,28284,3424,19465,52397,46963,31420,51399,206476,92317,48851,637,100820,83349,10317,60227,21972,6908,282439,32857,224767,95629,83882,42106,87338,69757,29840,68709,37665,45244,114577,49188,175943,54009,186746,106158,70168,3358,234002,50555,9221,129338,9562,20118,32923,78479,118280,65752,4977,10474,102174,60947,129006,10570,83451,8598,8078,159367,123785,80438,16742,5905,5281,181513,42402,6977,163136,93179,42191,14968,50421,112401,105440,33456,57347,121611,4221,94954,36517,24046,27796,6255,33394,72990,135408,116627,1233,57874,25654,95419,68156,401399,313338,55208,45573,93124,119251,47200,38196,11909,130667,45391,73904,64964,167846,4137,115606,52036,62214,7969,160925,7187,1132,134835,40309,73195,64494,80472,444841,61111,26500,45323,40743,53625,52797,22659,15631,29739,36706,28841,39147,102836,26794,10536,14845,87305,45874,12241,127587,83833,57183,79722,30844,41304,84655,20825,92500,3722,25655,27811,10157,81634,31362,34088,92487,70123,22190,185100,72658,139035,192523,88241,2078,230490,44528,85638,100198,22088,29982,291233,241062,13865,4445,137791,37835,107218,31726,19718,38234,72528,23046,19177,66695,5109,17251,28077,5617,21554,47839,72425,133825,1486,73065,181275,141508,21768,62971,63082,2512,34200,9904,120309,6392,91243,68416,268253,41199,116757,138551,185526,41246,28986,4093,19057,17295,4148,245766,122360,35356,112075,20301,75441,10998,7977,19769,62922,937,63547,100196,26427,157820,20983,236696,22935,8140,90315,156004,47204,140973,7726,45097,52725,22636,23436,257282,105247,522,88389,216031,202204,46812,211666,19693,68828,81691,45925,11256,30292,372,5236,167826,88328,232776,151611,5360,82104,18841,80393,25465,18285,20320,72377,31730,33160,45803,38715,27705,37379,24163,18360,103586,4015,32305,269494,91252,20080,36567,54650,7797,57073,12650,31164,42209,6375,261663,105528,81661,106002,2800,5375,17247,43151,4442,15727,194619,100855,144898,62320,78465,39929,16454,1967,28311,61363,17219,9395,8745,121445,76939,80385,162380,22009,54191,44248,16299,122830,48151,74429,78291,64755,14238,44966,2511,17712,67954,93583,829,105899,49935,84750,11591,33185,85447,42717,27409,208542,28965,62052,52525,5597,25694,65594,16343,63224,276188,12475,9331,127507,38522,57287,24128,133161,79723,105548,133695,48917,27558,43278,46520,13778,141954,110785,83366,17715,46317,105763,66298,147013,41086,94180,16478,220447,44611,730,19722,78975,117889,125643,26254,16574,18480,65006,15806,38549,246418,46052,36056,8440,34984,30170,3163,59800,4458,115442,4283,41970,33507,104078,1653,22,121158,276486,3655,6338,24048,133421,23641,2161,24422,36006,8086,10675,181474,12307,29514,59143,14729,52509,87128,122470,19446,80852,33314,24573,119864,14237,9652,57779,6612,51851,15284,98871,90581,124466,156831,21190,22015,71380,161906,87247,69201,18392,17908,108470,72962,40719,14338,17911,95260,43339,20610,78916,20710,72451,11315,31448,17263,58853,178878,48111,116002,45497,80506,82605,85880,36300,121755,25215,36118,301929,88728,405223,276136,553,34704,212438,49970,78329,922,20711,25036,257130,38295,145369,18128,15385,30829,55656,48345,8012,3561,28004,122041,192900,58338,112508,41085,29976,87040,47117,23905,4336,92061,138880,97407,42083,172121,6256,25192,172671,5,93568,1420,12677,31605,56743,40620,6015,78415,231077,31298,80026,13902,19048,24924,170586,32955,176119,87859,36731,6773,27711,24658,26475,115216,133207,93250,95820,88522,8317,5714,124047,55219,86860,19677,23961,22928,162209,8904,225992,359835,56084,96201,29392,96558,86071,93643,55114,13347,8183,95129,82012,2017,123336,34219,115554,157159,47747,101684,41008,18735,193781,104151,226906,7552,179874,124113,31159,21162,44010,14771,51268,166128,31382,73124,77438,92830,205709,12113,1292,38937,13114,1334,2118,15597,69581,14449,21934,76618,48728,67038,14967,51495,24243,87736,147249,26720,11119,46063,43749,5843,44147,152629,133428,65703,14269,45604,57982,28672,55616,45957,8438,95433,37698,220862,132034,39456,61870,4161,26501,73560,56418,9845,4654,20916,10456,88920,119358,9015,65931,96507,48029,38534,21676,109081,43078,34943,25089,6131,28766,23665,5477,10255,16695,67,45778,42443,42770,29534,23733,100513,62617,42630,48746,14191,43753,50295,26007,8792,57243,43119,54725,164253,58250,112304,131796,25165,4651,3188,24831,47748,3705,19540,13211,102095,5593,18699,23666,32005,117571,33541,60584,74573,86311,99443,25172,27222,168938,7143,11853,53560,18834,19960,86522,28217,53266,117700,72989,34323,18721,66450,34346,74056,47217,202002,46269,9429,68582,75458,37823,82843,96652,32549,145144,27958,19820,158086,31955,201406,135379,31207,192545,12950,51704,9094,248263,76147,64028,110009,79407,89345,99284,223492,47966,26848,15359,201137,2861,110507,71231,72297,31851,118777,71039,151051,240855,16333,50766,14727,7939,4149,80908,418780,88378,59276,1327,7284,38576,79814,65820,42199,84860,49574,62596,12396,70598,40117,8648,7994,16836,7630,14047,359699,106878,525,29037,28064,13380,11675,50669,74216,103539,180314,27449,56299,172344,19274,7301,246099,32043,19422,36506,129317,6806,30140,4614,46639,66926,932,86600,6322,27847,233103,10541,39025,34887,3517,12972,26220,2031,66561,115015,48658,47596,12714,33845,3893,16165,35237,89983,14769,11962,147224,47018,29977,27979,5552,82338,86023,131368,1218,24853,237840,132193,15455,40873,3668,65351,53388,15229,59889,272245,47934,11858,34347,18038,90853,86981,300602,19343,114181,29362,84921,6095,106059,79472,38015,1206,48741,6208,8e4,21916,17423,6002,108083,24479,34931,56661,9511,26995,100694,163853,35997,81254,58321,18919,171890,86877,91341,74503,70477,53412,7027,59281,39892,131302,5864,15947,61301,67466,162369,47956,27874,35624,282324,21270,111847,102548,41482,30955,116737,28264,8592,55458,22301,75090,29821,30697,51709,3041,19208,8038,24634,30467,87509,126428,19389,18814,152686,20701,83474,45832,80891,105808,11378,153223,120770,98186,150633,49838,9141,12755,30962,5260,74490,21256,31678,65062,33326,289838,187831,20595,89768,2805,58535,10844,70085,12090,2451,138068,98544,24461,4511,6754,41684,28203,3383,65355,82833,30161,83924,234361,128424,28921,222594,33975,125491,34069,11508,67464,144226,41850,98703,34371,7901,21254,38398,65651,23549,53883,213340,123269,12028,71764,177701,28758,2623,68395,11549,15232,68603,9660,63116,36079,57093,31198,20475,48467,89984,35619,186847,107469,31389,43631,73867,41949,68841,114250,1605,30564,63403,17588,27680,99533,12641,70325,50428,73426,78379,11855,91651,72081,91720,60198,15743,12065,83398,140046,6761,46598,45900,5068,886,62448,148968,37347,19405,9680,15819,43496,63370,75667,163700,37639,3633,22774,34341,183131,134335,37200,23915,7054,14194,12970,26438,13350,285521,25594,8219,104410,91039,168804,138480,149734,15907,33818,61132,60082,4622,110187,56736,13551,73571,3945,73463,65498,17758,263266,17593,2710,27585,54469,38200,45367,63754,28881,3473,12791,98287,31895,65787,4463,94536,24951,36332,59901,28803,52130,86403,7668,181822,74831,18977,9850,177206,145485,109798,7292,31421,26280,77211,58511,12507,127004,11113,147,8729,56208,43066,79926,129937,31345,83947,39915,46146,98763,42566,1337,13192,18323,105163,80570,117753,16555,72883,11077,159438,40764,70933,83329,26066,12276,72059,21655,173836,126713,69454,153482,91585,70644,102558,110483,6764,127864,190133,3961,101798,20945,71138,82402,90884,69669,44753,923,16939,59700,164258,25969,27082,31399,43846,6306,246093,51342,6153,151581,202801,182731,56475,162188,89426,141356,14355,121815,27536,28023,65257,77523,106668,127314,24947,12790,38796,169698,23555,10725,44573,183083,42088,62716,43265,105958,32050,44067,50118,1668,3874,6243,318411,16599,1691,94999,52378,28671,216728,123258,2059,34969,69225,5913,136280,171443,141515,91662,22175,135282,80020,92270,1663,4808,4482,3495,34691,5226,109830,108512,17342,107488,11606,123190,100247,29666,146527,113014,15794,30894,13224,39585,243192,22351,9903,7836,47699,11078,25468,122291,48821,26780,122679,75521,81450,630,4895,92900,55074,74293,17441,3563,111657,103102,51613,12318,52370,36191,68245,34269,40445,41354,122901,168604,182500,62012,42557,11259,24428,115113,86345,12362,3909,78430,86852,134602,20459,47853,93879,22577,7659,3688,38555,13349,17381,56715,91639,12493,10895,92438,3142,37057,28928,2004,36427,32268,34222,209974,10432,67436,41989,173518,107930,27079,62729,30908,55558,5828,45031,14902,53546,8204,144263,60255,14520,88212,86582,109589,69356,8064,47449,8505,66558,16886,4844,52817,111260,215129,12941,91118,650,20770,6273,73089,40618,62790,2873,35002,14023,97208,19386,102646,36993,143736,135457,35385,113601,17893,32627,84439,100619,56016,6581,57264,172160,45452,111710,203627,70131,24100,322787,1996,35665,70078,22358,90922,83658,4097,63200,58499,14542,99153,52159,6615,12414,63415,31986,16823,1579,65405,137809,8841,16898,48082,259,33014,42375,12260,179850,73667,91389,98882,29532,17311,326251,41092,5928,20742,44964,48019,43505,9317,49265,6643,192712,48424,163487,19861,20113,70848,31928,105333,23685,78563,14638,54755,7158,24142,44018,20774,125255,20331,24280,10163,1285,2336,39851,4299,117269,46714,63816,87779,159624,11731,9971,990,137317,108831,50994,74554,162680,23640,131597,146962,170620,34829,91205,21184,1913,63616,18427,93136,156592,17519,67565,115882,138220,78622,88535,18115,2711,33554,109492,54298,971,24914,25863,36363,45715,27099,194995,14299,178181,111488,72395,322385,157719,130787,11897,81843,83999,11369,49280,118604,40922,61332,110343,53407,75639,40582,300440,54722,25637,13694,48248,48278,194521,56203,52779,48783,72627,10953,376,16733,280238,26351,230789,15132,25168,137270,3588,63704,73376,94031,74284,19443,159557,9697,39901,13351,119050,15406,146455,3460,29556,75195,37673,102524,92329,47289,98413,15311,100684,56345,7116,95480,11590,7200,167,23610,58426,17730,136656,27944,53151,2701,8824,103124,3017,90744,113588,53216,79736,65940,26931,498,29568,80540,143543,21292,1740,59268,16561,180816,42323,50174,40890,52866,10703,57169,4700,17191,4424,93511,49698,166650,26972,48631,165169,82879,69326,202970,4007,2376,231325,139592,22119,62851,37504,68816,58345,67398,186643,43331,277416,53749,15746,23102,17432,4793,151138,48822,54265,48203,198688,14305,54287,2291,18018,113378,123260,7180,97549,87027,120085,2920,76080,8190,102005,5641,64580,14955,59802,54028,58884,19367,81779,412567,85957,97053,103637,78871,29364,27637,141728,4767,30686,112738,130146,42745,12730,105040,14844,232,210944,36581,152317,135543,29744,3129,55647,58149,46319,27265,17499,28005,59948,7170,34138,5702,293047,110892,408,91760,218674,18469,46095,81403,14389,4610,35672,73060,11006,74848,104820,118143,190357,20043,105358,141735,5115,27093,45924,123073,52599,29433,9616,238350,78610,24851,58858,26769,31969,24613,18294,4982,32735,39639,143563,112073,202205,12567,4873,88601,44897,81503,101648,81362,34662,85277,17574,48173,21435,221188,40215,39576,80786,26544,64668,81841,10731,37733,247986,149188,127703,495,18382,54388,72446,43071,30974,198723,89608,41360,190,33045,8386,31658,19992,237838,119015,137622,50890,100913,6460,116233,267230,26621,104129,65114,14190,41542,14888,85962,23342,23041,26453,43725,71809,45186,4770,46452,53894,56616,221286,18973,9038,109299,55365,19366,26863,18808,60909,69353,41738,83463,12100,68561,72860,3980,13796,49340,12332,31311,27418,4255,53430,18976,45523,510,14224,30477,26581,4530,3651,101663,139840,22709,150861,31996,63923,120623,262522,3076,10528,2929,14672,130238,18087,9816,121894,100308,25085,55111,14565,18952,53293,2042,369988,23674,61789,133529,28783,108293,35477,47119,36448,71049,40015,33055,78598,198442,1833,159937,40654,77444,189245,113153,8621,18599,38553,35223,166072,2375,11659,21786,89523,6032,12116,63046,159398,18454,3678,32521,47626,11411,103527,38896,42946,15696,26370,10185,8413,37080,165583,4331,63555,14907,72220,50056,6623,62236,36565,49783,10049,17503,100581,55951,146244,24724,9626,17969,25524,109300,173965,99994,101056,46459,43647,53737,277968,8347,123521,74858,33829,44762,77574,877,81377,222525,123532,30602,43881,53145,2973,16284,81940,61281,127044,63620,9875,14756,114829,19032,9202,52759,119141,23928,120551,19607,3599,33401,76821,73233,117430,39968,36539,7071,5446,121735,194059,15206,45283,6706,15603,65615,1207,165723,92275,34773,104447,8396,32353,205240,164323,13600,60555,79205,25532,22907,33410,57480,107111,69630,32137,47832,70913,33161,20321,2371,117348,10714,86246,1625,11763,17900,268,78457,99175,97940,101092,86660,32221,14041,128504,125080,53744,124263,31017,13897,403,31859,21964,5633,111630,5547,77329,17961,18241,84995,25984,12983,67491,62168,47262,5241,297,51191,7351,8967,147212,82060,16821,782,11033,82431,62957,5026,43459,77963,203477,53528,6247,191852,87774,74164,215654,13467,1522,219964,28589,244104,16242,117821,67725,72570,156792,17186,15979,26990,44128,193014,35276,57125,16212,166451,68017,6905,77608,16364,53777,75921,76426,37975,26203,269296,64099,84122,12077,38533,830,4407,20139,963,43028,38902,42911,37503,83343,85045,16979,1165,60835,137387,58380,86990,110066,134540,56331,193845,81238,17922,163093,38744,110641,12502,56404,34862,26865,125964,12965,111648,25547,7771,27196,136980,9555,29551,107158,57885,18831,37705,35505,101742,13970,102109,62548,124657,23328,11124,89592,146376,248050,6241,22033,18337,80685,29898,11908,216623,67721,106162,146610,21377,15085,91552,42041,62560,122532,125336,102365,121537,142559,29693,223919,11515,110495,18776,22494,5895,185059,103592,229351,51220,100102,37027,257855,29359,54123,36066,106493,12244,79258,32002,432,56205,94836,90182,6726,14762,29391,48938,26864,38083,60364,3310,60192,14766,205567,57504,110760,22649,24666,46333,21517,3430,13135,28873,27052,158809,11597,20529,6695,23138,22960,37137,45574,6545,305877,43423,26153,24769,59844,14501,10430,134352,56169,13213,103432,49523,35181,13435,12408,129475,64620,230854,77390,51990,15653,83248,33466,44571,117828,51481,2187,10559,68019,18021,54895,48247,18354,33737,4554,108595,37288,39767,116707,9175,3726,108877,21616,83684,49862,1938,8543,276466,20134,108498,48770,102254,31914,131520,185291,100559,51890,209,19526,76471,50544,71814,99351,8172,198526,28816,20419,9109,98389,136777,76479,75596,30635,165417,48216,120220,25955,211071,39314,24308,32164,2559,146280,43403,9233,17947,90585,1786,86920,125662,2457,64741,32152,32918,122882,78538,44001,31723,56426,23375,103172,88177,145697,52506,49319,68016,31664,41488,18486,110400,7030,28241,986,109199,19900,42147,56864,65287,49183,7858,24e3,30453,840,16673,25907,68916,89927,6309,158335,36407,199737,130464,13137,59603,201778,195292,21015,42466,179062,172561,89492,11075,180407,31868,72493,20998,60217,9865,19530,39274,130266,54539,21623,12535,13505,40641,73375,4087,85633,2153,3117,70680,55788,92096,47509,98493,37490,271936,151475,3032,16171,96642,34106,78425,125761,19591,3366,19316,54508,24183,50786,194248,91528,33253,34622,108355,41741,705,3814,3883,108929,13203,67831,10142,59754,68208,29128,84820,56880,38794,24972,48571,40821,40476,18137,164254,24064,236309,79181,11282,395,39169,2013,51587,28551,9645,701,109513,115899,113566,12762,62045,58322,103726,41343,40866,244102,143816,2490,70346,40973,52618,15412,30720,104315,38917,42027,93676,17513,107418,20706,123890,13399,97727,24044,87962,65606,44250,98044,65276,74790,101473,19350,91570,1326,87790,172042,7577,100813,86896,85891,41512,108130,27794,14875,71431,12835,156250,58135,3759,22476,42176,115873,34686,56523,73643,108505,51491,20838,12721,32863,45700,29496,13700,34294,55360,29206,155942,123812,7706,163234,203,132720,49358,144431,8130,175788,35818,3270,76832,25710,54095,97274,28779,94621,74396,19092,128242,58067,20885,14670,93255,15107,63291,23654,126900,129421,59294,262659,9798,3251,67344,28600,44629,50672,29072,26999,31526,23183,49175,165843,175455,17282,175411,32022,45989,30298,90690,78118,83156,23749,35636,31317,7069,80381,94561,133756,14960,97404,6138,41065,78041,32843,16601,34123,9559,146529,123377,96395,54441,42012,84257,123541,10745,22139,106459,11720,150883,172651,154996,110538,4728,53447,25704,2009,71152,119354,21166,66604,1429,216162,8637,122250,63520,27180,29172,36124,276428,107787,77184,4680,14952,104903,24418,14793,51561,52931,8371,26342,48526,7118,92066,67280,40653,8847,34597,105438,14198,50163,61188,146286,50315,41205,170829,161496,585,197359,95056,1687,365794,91349,48507,5804,49263,5146,104902,96365,117343,132222,46084,96919,16875,8073,262381,79982,52663,13928,16056,153908,15145,109256,132308,18763,24904,167644,13618,40750,18686,147124,114709,150038,52849,2938,12568,48617,8778,5459,44202,44591,74914,17183,248689,13878,7822,80060,23116,194037,18487,2067,7798,43077,33678,244028,31320,74273,2794,19466,8218,36280,183997,48124,19416,29656,19280,98734,7715,18311,30701,133602,150307,126956,7378,2933,79903,13178,12593,86571,26604,92446,13574,44205,65699,427599,21118,8245,14407,27877,47936,33542,7916,26460,117762,21596,37818,2249,127359,209394,60044,47677,308089,36791,154971,31417,6998,150042,174360,12255,43009,29335,48739,3912,101398,53340,2580,146939,151295,45360,125275,15273,45383,27456,48761,23314,8750,60801,85823,104759,27894,123685,66968,39480,26917,55290,83305,2696,98390,57569,145853,340733,4919,20024,52268,30884,7413,203685,70989,112855,4129,50536,349518,68205,332641,159581,135361,236026,37563,176404,64899,6578,122033,63871,1850,85234,82089,66124,74145,121098,107351,12687,36881,117334,13136,14698,85933,93866,18047,32620,310,15094,46e3,88451,23632,36645,27940,87618,80520,58892,20976,27702,140090,96075,67841,103292,238964,87778,107338,17019,83427,67522,7302,8261,47570,116787,8730,80484,61772,174422,56005,131193,52875,14588,28471,59817,9586,15720,158155,51307,109734,15196,11025,59331,3884,52626,102602,84797,25158,27314,4437,20488,76214,189248,35023,114952,157376,2827,62439,102878,129749,36405,10329,109339,108633,36662,1254,13267,5470,87105,58004,15397,10434,159667,21864,52022,179464,3013,32147,31496,116832,18494,105502,129227,107267,50033,13481,9954,24267,22141,16257,116154,36185,950,115685,11305,176708,2048,178671,112573,287867,162328,497663,95170,50979,193861,50987,30368,136257,31830,46549,15119,169876,23788,17462,249887,57377,1949,35448,14791,43769,210091,3783,34612,282103,88380,245190,5457,20491,98908,11402,86899,117916,16028,162584,60644,320177,156096,31065,55876,22e3,77655,9992,23397,13757,317623,63978,215255,2443,17648,93231,27388,104529,93807,55505,140477,12046,112040,70887,40152,94365,112353,25063,114679,266061,71248,119555,15589,2244,617,14129,211431,70110,100652,7777,4383,85911,89221,21010,120615,58357,86405,37554,41647,18,15143,69662,60491,14714,186134,148344,42347,5410,168175,44535,42449,343894,129417,99682,20659,27272,140483,63455,222159,17536,13722,42637,62324,11976,114691,148109,2283,32057,182393,4295,147364,33705,2075,44303,30274,28331,63740,69740,29148,10346,44862,33716,73937,153333,12930,38784,247159,2515,41053,20256,83368,256189,54639,115240,5096,24661,175419,153552,26516,141,138176,63885,34115,47222,55709,2765,28479,38875,236608,12229,22921,77291,54426,45388,2860,57787,114579,295139,105782,17826,71066,19119,54364,69385,16568,12323,28057,33346,34919,124763,155533,101386,31644,8627,49001,303600,29868,63213,9103,77280,71333,9696,138789,37059,24823,5057,21352,32368,114208,56803,19424,10445,58514,8661,209508,26187,171838,10460,63454,14016,122504,41328,21329,46618,32493,38225,7855,31763,7945,29876,8734,6438,24205,97490,139977,130740,47323,33195,85390,57194,13813,60600,21313,96251,7699,27584,170521,139271,1363,4402,336738,129223,84983,69150,13147,3590,163929,207225,155260,55916,20288,4503,8398,98490,11773,27512,37113,84976,86558,28365,11756,116005,182148,13733,115313,47644,67208,85069,9347,14995,226141,14704,101835,41159,35314,13113,63526,214039,29978,50446,83339,17440,129441,72522,118641,97816,24907,73844,15717,118884,167255,96509,162793,30847,36849,51297,78974,77793,10427,1873,2972,9999,35074,28190,64297,146836,46298,60038,163007,108919,61219,2403,75022,127339,4233,110389,69022,9833,128097,88016,79390,222936,22570,94657,28462,56956,38803,81536,30474,152794,19566,16481,147408,74574,81895,20731,1918,1366,76367,187321,54494,24366,21690,61696,33283,107477,77499,31112,414383,74362,18463,218441,120929,59848,258629,201924,69269,454,19989,13054,59894,3623,58908,20681,35723,78523,102680,38988,184112,108087,50944,132704,52966,21699,18860,96349,201411,82697,85395,95658,5093,6427,177894,44191,32755,26961,155739,6249,31310,81030,26574,84311,120155,86730,113535,7424,48888,13516,45747,98098,20077,183995,81945,43210,26704,40420,75831,45648,11180,6855,57927,65528,124096,34851,2598,156633,107572,127352,38169,123845,60142,62722,105584,232364,23211,68120,1601,22169,89299,747,258039,80572,7258,152249,11862,101204,8834,121434,33761,19175,133142,46343,40178,48723,3589,41977,30210,38868,62257,10087,82658,87827,90646,16415,47552,351723,28298,72225,91146,272760,1701,11295,1652,109651,300747,51863,198800,29446,11794,32345,37538,22356,33102,37590,113544,37970,11478,179743,25454,103417,59905,221970,105196,145604,7817,164809,102360,16974,75840,255333,56902,6659,1954,645,59400,67769,7689,18675,5215,13793,20536,27852,3387,29523,259718,16860,94625,43143,29245,15848,233581,22685,63631,78557,22836,133302,84513,1348,51826,47129,98836,58284,1830,1749,94642,10933,6145,12506,10975,13879,103781,144434,10268,28409,32346,52968,121567,107374,77268,23686,35097,10501,155275,15303,47136,21102,168741,55332,90385,15996,84817,681,137803,25054,142275,6163,38175,8056,124296,240642,65621,4934,178205,16101,62803,60964,18230,100622,76465,44689,14545,9543,47514,16852,93380,28048,12047,107106,37575,101485,77047,57326,34819,96137,76916,6469,46264,115983,75768,87668,69942,13027,165,8373,114231,26434,52844,42799,182044,23580,146254,38081,43236,33883,146220,382894,14606,46035,36481,166621,35417,95382,2957,59384,60428,36358,66343,75378,22267,22950,83528,17577,56474,25285,4619,179691,75355,95836,53295,34588,171410,4487,14679,84208,44015,18562,109133,54101,11531,86052,174479,303157,28095,9953,35642,14564,39802,16145,77606,117406,53038,121117,53624,22062,1212,7632,127157,237292,189087,10478,127345,102515,181997,86752,87623,10966,121602,68783,68681,83042,114380,138349,191305,67176,50085,39016,1427,42384,1412,67118,122616,72389,25260,2237,13576,137346,19938,20304,2191,68759,5373,61364,238507,75814,23931,69565,38993,131741,38364,12528,87762,5679,129853,5310,186831,32653,90338,260176,389531,108118,26843,43985,50175,30563,25106,56965,18130,140428,4542,165503,117991,24219,229605,1819,129663,1240,3797,76093,18398,71339,51919,93043,27175,47060,216257,6483,35051,1217,16512,80798,129064,13225,69339,8548,237079,72298,2575,34280,51379,117910,55671,53345,247552,29486,39328,140821,34681,57045,60177,5004,90269,78522,2479,322607,48474,61296,13057,31558,4678,59271,6699,27044,31988,35944,12503,83480,4389,136508,3781,114121,70279,4488,155829,42214,2898,68191,75695,305850,45041,74344,106509,30087,17429,93292,12477,290,23080,114802,35714,18751,26554,105424,17775,2144,2412,100610,65192,113975,52975,180272,135050,129815,76238,106483,21440,63186,4260,46189,9711,28249,4169,23429,23390,8324,141585,63809,67668,38457,38063,39226,59972,1189,203916,62368,14403,16949,61767,85801,1739,40147,35049,76757,33124,62102,15780,103593,103009,53484,22952,67973,114645,6566,5245,50462,7601,8288,3513,194571,80276,1908,54592,5124,58571,2513,6800,273997,193904,1119,17991,117245,2508,129156,82366,26278,71465,63341,56943,39662,106116,94966,156875,9736,2204,122308,94418,27134,1280,24539,49022,45314,3764,50904,46424,30699,28087,293839,9400,33646,40165,822,147499,50263,116179,29085,11863,31314,5578,17797,5104,12454,1604,15342,219206,10232,67800,94261,25872,13565,90339,78971,75377,26649,41184,47695,11514,35369,20767,14227,41953,309396,148270,147938,33074,14453,27499,109019,39018,25738,240196,158931,52820,8612,95853,21524,137010,84901,70869,70021,116794,48404,38771,6732,1070,70990,187297,49140,5238,576,3564,253975,16027,16483,2811,37775,19034,25259,4053,2e3,70083,95774,19713,33431,92703,91314,42381,288770,48194,95985,3991,77418,13406,241328,245086,56533,35275,62725,9246,51924,70181,95331,16163,31410,79016,39312,120878,119371,275987,80124,27712,9186,220,23598,146167,85209,68238,282190,57048,31273,30555,80913,17594,75779,59160,135002,101219,189377,29225,96735,60126,62522,104e3,27620,86814,17240,147533,11001,5425,43682,410,49460,87270,69480,46315,59448,1816,76201,9431,11788,87960,29063,65539,47347,11678,33846,7008,196704,9895,6753,8633,120892,59970,572824,115934,6646,202559,892,48351,37611,251282,57823,67263,57750,26527,34485,90747,7685,88370,6144,64182,1709,41969,21458,62327,181657,49247,225330,122600,114574,107124,85361,111833,63243,71420,15655,191178,72430,18063,51425,54002,12364,53225,86557,18193,97580,41232,138398,67821,128724,8944,233212,101353,52099,42127,14006,120107,32789,32132,3498,18123,33758,56058,5779,128760,59888,98869,18445,84702,51911,13234,218379,20093,39031,8074,70195,20708,23462,24355,131384,60189,26390,10403,41060,7140,10781,49410,42261,87202,82566,41663,43105,60276,2768,5733,74176,28329,2297,145430,131632,83615,122915,105441,655,224102,5284,136426,67763,16294,188511,32538,61049,27893,3394,13951,159099,28542,17930,145360,9492,190122,32285,78855,26440,13570,58648,73908,4239,124561,2444,74172,53131,11468,10794,73566,11623,35343,64710,30481,4163,10328,38309,29901,10538,154377,76132,92405,24839,11679,3465,13449,11637,7824,2337,57754,1260,14458,41118,19878,38661,13416,159180,37074,163164,54137,28627,52134,184900,8520,40385,29546,30502,22386,66527,107458,6850,24022,47983,30603,35083,8934,304066,39500,9,28261,33026,77251,9374,44833,116312,34990,29236,63563,125639,135405,165398,159055,55690,88141,69643,236964,31983,25572,20436,36746,60896,31850,16179,11828,5888,3043,66368,9750,31167,7915,53111,36430,1333,64344,93659,20061,60596,180191,51630,6792,30244,43509,101058,22409,420,44210,109783,43223,27030,72477,72831,32679,29235,7675,47556,12258,39907,149412,84926,118247,24692,71717,105038,86009,45941,41189,89453,29856,52543,30627,226798,67303,59230,67415,34408,1367,99685,16867,128419,52147,4111,125381,117881,16173,44093,102224,31575,23234,24870,83790,127407,239098,3200,994,1255,100903,242275,117266,55116,38205,16140,29662,11307,40414,208793,123355,56470,4862,75600,30119,58218,70828,24075,26974,7802,192353,4851,5475,78720,66596,3409,28573,64396,30381,30690,59859,88256,5406,99945,103064,34463,37727,24238,86643,60088,4057,23741,5967,162904,38240,28356,93858,25510,122879,6897,3278,7057,11971,4400,35461,211413,21395,59615,39471,87233,55795,128426,3051,22470,41950,14705,3974,180108,80476,78442,204996,91987,15634,67610,139015,142373,35611,51134,10387,4353,153456,57749,181039,14183,68447,151532,21107,36452,20551,3186,46247,46383,129666,88736,140662,146243,2066,8360,7978,64818,106963,17896,47801,10723,114821,223295,74192,3293,3393,16987,74064,11277,91622,4270,29828,27951,387869,103235,1374,61988,120083,477,145892,128378,11779,211263,61354,18221,17869,46530,83061,108538,157981,90608,67199,95080,49064,195814,12302,66307,10348,231346,160732,112859,63633,146558,21271,31037,198802,47622,12862,95710,3910,77850,73961,85585,34752,61e3,4082,24595,103679,71107,8208,79568,150019,16615,24961,139857,32664,197366,4559,54735,32696,4126,162019,75698,13916,70108,159638,19834,9349,24675,175560,49643,18206,52459,27992,10809,88865,401975,133172,29e3,34558,30915,3658,25834,42430,36562,125265,18182,10155,40149,97082,208980,19575,60853,90529,66545,9600,789,46420,2317,88593,55595,98980,115302,5742,169155,1073,177901,3472,11189,63711,78643,65472,50459,127979,93,42202,67053,21720,157650,11145,141378,42033,22824,85705,79114,35584,15974,1510,54172,28562,12451,104226,19190,97151,73024,20948,5151,81741,21499,29006,84183,198074,54003,45120,170125,26240,35177,28389,64863,79974,60778,176915,232183,45342,2038,80253,41564,40703,32689,5430,100689,5366,23007,134279,14266,26712,73993,24934,64242,52113,102887,61801,46415,201049,54251,62133,122757,164883,30815,139966,2319,30842,766,13362,10287,134518,86111,81665,82440,28333,43019,18963,8804,161944,23439,102144,101145,80029,39052,248708,30350,117340,11878,128467,974,138625,63961,5237,74778,61834,67040,43814,13690,65947,33809,232476,115258,181745,28824,94013,9510,10246,93722,81976,7217,114383,3493,16014,69045,72692,12145,80981,9507,6692,1620,60820,330444,35474,33962,4797,7053,295463,46445,27026,12491,77988,49524,35675,90947,29114,166705,101385,133782,32704,6186,84595,176031,185623,45966,151302,63069,1699,107491,947,15458,74452,196212,6046,10498,12163,10239,35191,243951,9277,9090,29539,54460,22820,26514,112549,60372,51753,48756,21812,70861,260326,41,44222,10441,16961,48148,138771,216194,5914,52153,53400,212036,56519,26245,10117,45888,15294,138019,90913,26368,43842,42111,23348,6082,194845,161089,156206,51546,11647,30759,302912,262094,8635,78876,26535,35283,54183,31183,85484,147873,12989,5197,6356,72894,65347,20150,27370,73787,1493,45918,12366,190217,20724,13858,10981,67449,81213,7553,14115,72242,271517,11842,48310,88743,143726,22177,3290,243231,58452,62937,12592,1654,40066,33477,13751,9921,128442,15868,7106,75236,83773,10775,36938,10482,170465,17368,17469,161508,32752,98340,800,19824,264456,3901,87319,2867,26782,9630,113102,185815,24197,44584,86366,40224,3636,140916,31731,267731,9567,53678,72984,29389,27963,17106,50282,284911,60170,8322,12608,23374,89652,5268,39044,229766,8869,151350,31436,177342,12269,183212,120418,116270,2843,78888,69192,7865,184099,1086,129897,18383,70508,20242,18508,229924,124569,35749,50589,55626,9884,83115,40971,30671,18135,14452,38861,17844,201826,5549,26413,17189,13561,38539,10679,143331,3314,36785,171194,49685,187713,67506,4618,104039,17060,195080,50648,33159,19238,67559,134840,28599,157523,17130,38064,117398,94355,31918,13575,34538,40326,13997,3494,348283,62481,26862,3603,104426,244363,153709,112487,304612,199674,41239,35545,54869,293005,28223,26277,26899,4533,18518,15492,38587,80488,70485,160395,263,60162,11382,222152,4696,250751,51921,182609,10707,48463,46243,1227,49111,111564,46502,33342,56846,68541,63559,858,139927,16654,229375,76759,26478,33205,95828,23399,92945,2637,35630,28470,143992,50214,14174,21456,166191,65665,1711,21594,78019,97599,111701,36,147151,110246,189022,43021,30397,40757,131935,42065,73335,48039,26596,28984,15102,2361,7421,202167,69744,43766,52826,3642,83304,33873,75140,63169,192389,36551,92748,13039,123959,233220,21738,84447,77230,20228,187852,19095,25799,92136,108774,29237,53947,2299,118106,2687,8830,42331,202924,33667,2023,73763,30704,19363,19779,16737,35629,48081,24068,101013,162338,291912,13749,24745,328289,167679,70086,48299,23306,16732,17801,43322,54589,3586,63653,43624,53474,925,109177,251316,43805,13082,19511,86565,142182,92461,17117,101033,103319,64589,4022,4351,235897,5352,82705,107142,46391,156084,5860,61365,10558,13045,7717,18357,33922,12590,33065,6928,46993,783,46937,67846,8952,26295,6107,119656,18799,17458,50747,4229,179559,112727,118080,20683,41464,125468,51560,49749,44231,7359,35339,62988,136487,67015,5208,29150,24956,105186,48858,6143,18097,6972,16404,73489,58742,97196,36357,164616,5834,32267,13746,147733,15113,132091,34127,106298,39729,106426,22294,9780,15602,36213,71502,42808,66802,599,60755,5851,39120,67363,108623,126368,72770,91263,32486,30596,151717,7951,52002,43103,11768,68942,40901,39344,24037,127500,116890,48403,16926,86750,17745,48648,159545,34460,58419,5634,114317,67865,31462,23352,24010,98185,125708,69686,68337,13610,26271,70691,2980,4768,27225,102402,75453,28106,8104,6931,1176,6274,6475,112635,22498,6176,238686,26832,28893,90319,14441,15682,15087,39517,45270,109134,104440,45965,47645,81772,7876,52683,87720,12898,4505,185665,2769,113401,15664,57592,105229,137381,97059,119268,6876,43309,33886,128363,35476,144249,67013,143587,83367,25703,91436,59347,53236,2289,16519,19844,46309,58558,99834,23313,218816,231303,36388,51333,183535,109792,139277,54306,90139,18235,8275,32710,37677,82464,86025,92204,88842,117723,37570,128723,234242,76350,73795,34896,148247,58424,11105,11744,45746,63372,17118,49772,199520,81902,38004,22911,33752,3125,1995,53792,4689,26909,108150,146062,69674,41811,161444,84855,8999,28561,16731,93937,3189,21967,24890,22943,1356,145300,51569,28802,517,118679,31703,40607,48098,108854,25003,10233,73969,177495,5248,24516,215347,146192,48712,60626,69188,40735,5866,586,101541,6509,47590,52129,5969,222045,110933,25733,24223,65339,62812,2414,155418,35819,16022,78423,43138,20995,128255,240673,46745,236093,72176,57085,97841,61248,107,36068,193177,105427,55726,215229,20446,47228,100420,87091,14429,121708,23605,21157,187721,21880,2997,203976,99166,95068,25877,7724,98925,83401,4829,13182,18229,13718,239662,38653,116505,153497,30589,89029,38962,181302,43853,78872,180301,4786,248240,7401,106136,112590,77745,19731,60880,77789,125748,135487,5975,48627,34084,12419,215770,47557,254582,10364,106495,21856,67539,88981,38805,21428,48732,42316,12149,16078,52808,25327,51322,33850,51147,12253,122354,46077,56483,254553,115417,81834,150991,94662,86668,7381,12841,100650,18218,15741,22372,68294,50705,15535,84660,61887,22553,72299,31361,24824,17743,46820,64288,31582,77006,111674,116384,30760,80920,86149,77192,51979,79691,60342,122805,103800,240873,160744,233114,78962,54920,8608,3484,316104,72548,24337,5088,230040,21926,10172,36838,26,86221,83458,102176,12062,17571,41929,41170,28428,68239,41750,103930,2634,18313,53019,34825,97837,63115,24606,73157,152474,14715,91439,37033,109806,140259,30668,174760,380,135597,95673,136073,65073,134249,13829,17279,122305,4420,46444,10237,64848,203623,70728,10349,182885,65075,24519,25783,40318,34139,22222,63394,55266,102764,41422,20126,65100,90408,53640,35128,48932,11192,38935,96839,34782,39492,19396,41332,6250,5511,19492,51304,25936,104466,54099,73771,86115,5080,7669,30891,111700,13931,25276,72289,135447,14820,258641,25265,31005,281179,75286,393,95359,14623,13584,6680,101227,80173,44933,76666,54542,13244,39348,458,25379,109451,134348,81143,6959,65554,12027,51311,8716,57589,140731,28467,23316,17272,30458,25980,55229,77197,83798,28302,114784,7428,34548,26241,14712,39336,103304,18928,54080,12870,334,87722,15208,16895,142098,114262,39820,83913,57817,28682,7721,14900,108672,11250,62246,42849,415188,1724,26555,24549,25505,26443,107450,145899,61035,43528,6901,60726,65906,267741,21338,147590,42079,18924,73017,135236,15393,5206,4026,84185,1531,5988,113890,82647,303391,7386,69844,71611,189865,76523,31877,13315,19314,198575,32821,1928,67641,25913,104475,103489,3297,70391,18406,15446,113347,19295,93790,27856,1792,167471,116449,8541,4408,41757,63233,25765,86680,64501,27034,24816,34975,6079,4486,49693,36229,16917,21581,62426,27862,11612,54284,35702,194034,355,24277,48262,87411,70504,310164,118018,12516,47559,43502,57433,107139,9290,66533,80863,14634,34312,91725,28606,21342,67241,72355,43244,375789,37402,174015,105070,8342,44167,67494,1890,16365,11723,271002,1865,47918,8350,45564,27742,25110,125803,8553,49504,81925,62211,4534,15491,19011,80373,206920,667,102405,128623,245524,5553,113309,192739,65766,19567,22832,261958,29679,21293,71134,20962,105123,24721,860,21752,33448,18372,157167,94822,35770,173224,232737,75729,28937,46828,28062,25453,5207,140366,36665,30652,6169,67920,150458,92040,23186,184604,92330,20891,176492,49427,27828,38305,42495,143982,49560,25503,90043,29747,65328,47830,12932,11068,77721,9003,25213,94205,140426,46090,89945,138173,192691,33329,112232,129905,35709,27514,1841,19957,31411,127476,53572,17497,173549,55063,175135,19841,69314,5192,237921,117660,150697,4060,273045,50414,98940,65348,153665,164423,58804,156695,48994,213928,86036,28608,8355,39574,34540,16927,135680,18374,151587,10830,53805,16878,16623,4282,48030,8537,14986,46102,13062,72897,72,33050,108227,39451,45935,651,113320,40535,95176,57450,48843,5003,19019,10407,211163,3848,1068,4988,32091,30095,41692,15099,43602,107434,50744,7627,171349,16313,150832,352665,207750,33937,38256,51091,156e3,87889,90663,84175,24908,114900,50365,31494,83829,5398,169342,47521,54818,18935,8356,43094,41212,174536,10082,92550,6678,60614,23355,69721,14796,34149,128830,58187,3179,208,40325,28399,225029,401412,51150,31580,207268,6657,10993,69818,64282,289845,23308,12961,38447,6681,52944,31855,2572,47646,120728,179148,37240,45196,218274,4816,3695,21961,50084,35209,18073,51452,27004,6100,33941,1377,84831,171214,85,141510,9078,99227,32610,6417,11718,49868,65579,87902,73018,49062,46280,61742,21512,40862,107733,15941,29168,157765,144919,14487,5767,158014,140070,7241,573,71584,16921,223566,40331,179473,35081,47926,140885,41508,52104,59180,42310,32811,29048,123517,102413,80208,10104,14746,12649,153641,126022,37965,113017,4171,83,142592,2809,6362,50416,71323,116894,260776,16204,1524,5760,30351,12658,20703,54403,36083,45408,74772,4946,14485,50759,111222,10890,2195,167147,92962,130534,16283,177256,35016,15472,210156,151187,73922,117691,43250,52051,37392,24811,24358,30830,5775,818,21969,1476,127322,151783,58392,31021,106913,65215,89407,90802,28531,11690,20234,95249,44602,37256,18707,11928,5161,4410,26571,51903,49768,22008,25252,65780,209499,68769,203726,13249,137363,48845,86823,6658,5674,31881,1083,1823,108676,34518,166752,13791,14287,91576,91429,8665,11529,26401,16191,91972,30964,5254,28486,54697,79613,66520,18447,22870,45203,194466,22822,51703,12278,76716,44595,73455,33546,12235,144843,36154,51247,11116,33040,3180,225753,60864,1972,28469,12891,28879,10338,144157,56294,353058,38302,41447,87532,110616,27065,168438,6557,1213,50804,144643,24817,2390,136531,38174,247513,16190,4059,122791,131994,137430,39506,57650,16305,5188,54309,106128,20628,88071,67394,395446,250285,66176,91254,1399,114196,43915,60230,44853,27206,106353,43013,18733,345105,226453,51202,16607,57106,117175,35492,10476,89598,127439,15187,39624,13688,61570,10615,31111,59370,6238,175252,32143,224492,41388,95408,34384,148238,78307,38959,9340,160091,61443,15737,11216,41244,170,38299,102443,113097,26382,14027,33707,3957,76300,66160,19431,18900,6952,1717,108656,82206,188021,257335,27295,43999,41210,31777,46956,57457,12657,11489,15697,48060,204748,53583,82422,284790,30503,137341,8120,19615,220311,15991,10217,63424,9808,67431,70976,98221,4491,15177,28535,144789,751,13230,2394,1504,33977,132104,30316,22230,931,97193,185240,24826,22687,174322,15307,22988,1390,188745,180325,29580,59068,74903,18994,29195,79,15436,7622,38462,11566,138710,44828,45774,37768,99236,68137,84083,19282,22698,17134,74807,126662,173497,46248,16938,119735,3212,28292,213652,49013,9975,32180,45660,86250,4801,68788,95490,77482,113751,11994,44624,94452,46839,128497,100316,5798,58588,73184,202987,65417,37790,88524,1606,43156,97964,105717,34947,11203,100060,37742,130074,93653,107799,94311,196106,41347,8035,10780,16390,27883,118236,167395,1979,25006,19375,31628,18916,144723,78502,114047,103107,86492,107686,5844,20934,206963,23556,22591,16562,146333,20167,10471,117434,33085,2863,9740,36669,41849,37271,22790,18209,28979,8231,12952,54408,21731,25130,45208,55748,138120,75826,414,29593,9925,292865,25999,683,123149,7036,92159,86055,61827,103680,23176,54918,58466,57578,13305,5709,86479,16697,31064,17660,200919,10770,49793,33423,32370,52047,16488,62555,6459,8426,83493,7763,59725,82812,18628,67760,79405,68557,9612,7673,28102,56517,69620,171797,32458,29541,15870,81109,32080,207644,71495,21202,11039,91036,61230,2810,130800,32260,4613,60590,37112,75214,33979,126402,155062,30642,63875,12810,194463,82799,47664,16725,36685,43367,61099,449,172150,102867,21691,301838,36745,7130,18671,57316,34852,38034,54182,35578,65900,99486,19771,3456,2658,16914,99866,28390,28109,8262,21147,34353,20006,4228,137085,1675,203023,283196,198286,214375,163329,290603,152574,40471,83506,30068,14730,23177,131539,34759,27668,32178,71896,104799,116305,85430,119262,42860,25160,8911,23428,49437,105322,6519,16203,6349,74711,1230,38045,8540,75165,44736,25909,51026,317034,4984,32281,91312,27060,44431,17817,45363,155937,239085,35697,59784,91993,29531,126740,213757,76560,167776,285273,24262,8237,65030,41160,74437,48804,118916,13159,37842,1031,75349,1478,11655,108777,23435,277425,101734,67469,70231,124711,43532,28514,65526,54956,1e3,21882,17728,25302,40952,52214,149632,1999,2111,3259,63362,89961,220561,39777,26335,9063,10572,12416,34551,34623,38604,24723,5947,15588,69927,66252,119177,69173,46629,28714,70715,212408,20521,406913,74380,11716,50659,50862,37009,88460,130101,7210,53853,538,65120,151950,55806,163748,52837,13153,21100,16674,64536,6091,138201,44837,58547,3723,163,2177,32288,85454,34033,8497,14282,25742,10535,10741,79559,117493,243787,49337,100718,79495,40139,42956,7551,55433,15421,31509,23034,45081,547,61176,53434,328001,8470,36263,30145,4519,74173,53935,11845,73774,60211,78025,3,4102,73782,109293,315332,48412,26683,13714,6865,20128,18490,104141,325,39470,171970,115860,15707,7268,73301,74336,31370,2368,111827,107757,136231,142844,97138,96638,84053,38691,23801,1588,10573,122098,77039,240,186135,146101,11996,18143,112963,46171,155836,348769,47795,121213,116266,132515,3344,144804,31286,99187,255838,129694,35894,48779,55235,148582,71967,65282,15174,13920,47080,6147,108242,157593,125025,7136,1286,28957,127956,28402,98813,20805,7532,109417,40610,5041,32958,15142,18408,108596,33543,50517,27748,80114,233434,91447,487,37094,100048,30541,43477,10639,89862,155868,37667,8726,60684,237903,73408,99589,12190,38739,97348,3914,13594,2680,149016,13907,30171,28343,23530,115225,61104,35821,147679,14337,4297,244282,24085,326976,56428,7851,21303,131620,71446,83253,68692,111870,5224,15813,38197,49026,45057,13660,3306,76345,40671,27905,91072,996,68527,62085,91351,122634,55109,168209,2024,27560,112707,17352,8306,167115,169921,166958,5031,46020,11844,67284,19130,76185,6920,32849,5450,14610,22451,21002,17392,31872,66682,84796,13709,40210,59898,12029,8719,53564,21462,91884,21647,88379,194428,12754,37797,132826,160016,22567,54383,53186,77611,31107,8339,4694,19185,90355,23597,17222,140675,28442,23668,55977,9128,61555,28774,155229,17658,9390,24379,69357,15752,127381,239631,62460,93181,55913,45133,140155,18676,25249,33164,29581,82837,67223,22362,29975,7317,52813,1943,29613,20012,207130,49617,49651,5636,15334,36313,29226,28084,95247,72072,19e3,224932,15811,114,32127,38097,37508,88507,37225,27359,91626,12193,69279,20608,11055,88156,92808,2152,57259,55275,72789,24475,104414,1708,9882,3818,48661,66897,1631,34806,227930,85815,87753,18321,250664,72733,25107,206797,50891,8082,196411,92596,96764,152823,65514,22819,387277,62176,51225,40329,15563,189,3659,73670,64357,51793,275136,33482,86653,74615,67058,11318,125720,15388,22388,8267,1730,102663,170910,40784,7144,85373,13040,7088,94309,583,44224,140424,77439,18496,164026,36578,4722,9151,5824,63365,26510,35199,40500,79277,32495,44614,35233,9566,203293,152144,7097,2330,183480,98629,13423,330887,44130,68600,30939,97829,31012,345465,56747,94879,4939,160027,149761,99423,46099,32251,15332,8761,96094,128555,5763,235318,222223,55729,30241,55420,201746,3987,81382,8259,49325,23287,7719,24633,251100,92311,18591,110533,64759,170260,393860,7175,21144,132887,3593,75346,101277,91109,16387,259187,11627,57459,173829,44694,55780,49797,89192,120443,62622,3904,14814,23887,1027,112258,64955,99800,11132,66353,36202,48624,18158,88481,96882,43059,11040,2455,7077,21651,181159,99126,100434,61388,68186,19161,110468,120052,8819,55324,41494,7014,37689,3618,87729,92615,207943,9823,128657,12587,15857,6379,67628,51216,71775,157617,63244,1503,3864,218754,110864,5769,21492,7243,1192,87921,85529,31512,18537,42698,35350,73510,84474,34301,8991,21013,35034,566,38832,19838,35586,37216,39413,55006,12178,59742,856,84563,6900,25632,17437,49786,30723,13847,70845,4044,7843,23944,235976,55530,48942,6518,20939,73769,192653,52936,95207,23895,132542,142982,22632,87452,48042,54018,178468,10728,26230,23559,363,81269,142012,5718,346258,31456,84333,246476,51018,66692,101804,120570,39962,30373,70593,2864,60541,19425,54209,104092,7201,31545,48018,25865,15442,46257,40443,8328,6451,111782,47527,97754,33046,470,245116,31095,39,91934,87208,73470,36708,36521,12801,70624,36272,8892,79768,12427,55454,103756,5908,52390,62962,22720,141138,94634,41689,128402,126390,6628,106394,35527,134394,82727,254651,194502,148064,89549,3202,28359,957,21954,27906,49840,142747,8307,24206,48978,1186,71728,133038,71474,91306,6333,110959,74600,70387,18983,62609,56057,22970,1147,135850,1321,28834,3578,59715,102227,32827,81415,99952,55636,257598,390,22702,35701,85872,402916,39216,189795,14929,19467,10112,144422,61514,5279,63421,134686,41436,8424,51925,10598,132295,124416,4604,194739,210929,57866,31829,51626,50007,9976,91878,61906,56168,81906,60918,61859,40017,23059,16887,40927,62064,12785,32893,32913,21782,93965,20169,44387,79084,38463,11457,93950,27127,157050,2697,337088,5116,54128,48255,33279,8821,27352,25515,124022,65710,28906,38557,33390,1722,104435,72215,38551,12094,30978,25113,6671,37355,175109,42862,98024,65406,221276,59624,118012,64637,78760,86697,21426,1639,40350,12584,67193,84144,31396,7863,143011,69629,63112,9454,28666,65798,46372,134721,6314,51402,30837,151922,2847,38676,38008,92823,136245,17540,5504,109295,205242,37606,5211,214892,1586,20670,208711,137743,19328,40652,16995,20023,14657,154919,34422,12996,13918,38221,47690,16398,2959,37680,89122,6721,198469,91876,172043,83898,101992,26084,94570,3635,76958,22853,76497,38266,176590,168403,44464,142840,79180,184594,1984,41806,83147,11985,6546,366068,59732,24533,271505,8736,39084,222992,93429,28962,58985,86665,8432,30028,14548,32439,54424,165029,55175,27458,69046,121277,46168,33732,20661,24581,135574,123110,37556,79260,72611,16957,12939,46162,58238,44907,72936,253758,41324,32518,96480,11949,124438,65280,43256,34107,53533,43531,37037,28366,45970,32741,173438,6121,194202,62969,26355,30314,58370,28455,1848,50519,82830,90393,21761,295490,10936,256940,133568,44050,20269,4089,27457,21610,219460,36743,14821,101388,52005,13124,30979,140816,167362,26054,18458,60789,34917,40447,26606,33422,9066,3452,83614,5761,20263,137238,25038,91310,101,52322,74548,42572,38084,214054,186568,31802,17665,30620,141936,37730,14420,4265,187218,49640,188208,51441,55388,96452,66659,40869,42039,60967,221027,19234,178581,29105,96050,9165,196118,157335,3738,40354,117436,2965,34136,59659,15570,50843,230035,31444,71260,43886,18316,5387,38500,168508,17406,32174,8828,103373,143806,90367,3560,18719,122310,16508,26719,2541,105429,6645,37998,73190,10591,235916,49737,87112,233941,53188,32193,79154,4544,52905,126477,7580,63501,57314,3216,31337,6541,103083,60846,49,9756,15481,1355,43840,14319,13743,27486,10222,73114,230718,418644,16706,6674,279748,23058,45273,295831,86306,2743,5535,88773,21829,35253,120938,31153,3169,16839,42847,8751,80974,33942,36867,35514,16485,26474,77775,56877,5391,48346,3882,108713,31403,27804,55248,26235,43821,136104,40118,175507,28034,203908,18732,1788,34030,106427,36958,54359,7251,44936,15356,69139,455,157915,22173,140291,50348,43275,82066,49621,54952,15216,36226,96695,66855,6936,1987,8227,196087,4631,68827,99004,47541,110265,17953,147605,110242,58520,31312,38724,329975,642,3155,34497,75937,6207,73843,6120,17249,51429,117746,3218,910,68961,319671,14938,29555,34700,1649,66673,72268,9655,76800,153087,6941,210168,27130,35398,1780,73242,3135,56689,19556,165307,8765,35967,121458,13333,70453,17350,117253,22265,13340,44265,39869,441,3742,135025,23581,33309,16543,17731,13291,157637,283005,21408,101360,63887,52312,83873,5338,233779,23759,186949,34531,177320,38069,156465,91004,19353,59852,68160,14891,1338,1072,29823,1950,28901,81407,313445,73038,84807,162348,240257,37162,138934,16111,58013,41253,102951,16457,96056,19541,56402,67217,41638,94381,89674,29481,37456,80815,151579,13937,13683,132537,19699,134545,67020,29816,222341,141235,427578,48868,129557,233342,23077,87871,16213,18728,16184,9469,37913,19680,2798,171356,178328,13216,50049,72690,71904,124644,55455,7504,29052,41036,266546,19899,30391,188755,8659,59469,16,104298,112943,53865,76203,138226,68857,139953,14125,107625,119795,173133,4398,50273,48808,54390,16466,122086,31835,67035,50971,48859,7508,46427,66477,73021,84615,39985,83076,46779,201569,53336,36443,60865,168164,143810,51393,25548,169307,32896,24485,38424,21837,29087,275813,51674,6714,64883,46169,187369,55186,76192,12852,12018,62134,31067,118303,16542,12125,10579,4928,26291,43854,7091,10946,253716,109062,39283,17261,113012,258512,47764,125126,32646,55892,80279,201623,149872,3192,385,1208,48750,5376,58738,22335,5427,82416,47811,32435,143086,38930,94128,59975,156037,37977,38224,62485,7698,50405,71027,16462,21559,136153,34131,107506,162069,63703,3101,215029,40407,4178,3774,9187,80019,17880,97926,67579,2600,18405,8351,47924,86638,70820,92206,86453,29610,42241,119200,3198,15466,67813,57863,35454,4779,99518,4649,104641,144269,33730,38073,65864,6838,109456,193298,154007,5623,45741,30846,182578,25573,157224,1543,58575,138703,146140,44971,49356,18275,59064,20300,13122,11848,24453,11973,9797,86843,2919,25530,49210,1130,161220,76788,75373,85604,34926,36014,17777,17255,51533,11676,92226,51845,119859,21525,5936,18507,28050,1140,31418,14857,34207,47859,10750,36382,32079,106909,59426,87757,38393,110042,15965,97104,33757,35344,97993,53979,33651,45407,41884,82515,173089,7177,58371,35365,47543,51927,35587,10670,23544,29306,84233,39976,76076,62097,9007,8668,28119,78281,120790,19835,143020,54968,18670,64959,20649,34469,42570,33001,136570,87796,120044,1106,58700,63951,127623,12805,83057,40212,31773,49850,7361,54336,347524,101314,23751,19569,48791,29174,49369,20467,7465,75842,38281,623,112457,60210,28849,51003,94720,6426,90047,85560,43761,3579,85105,34607,90410,118528,7224,42907,111163,18168,6960,161135,191298,5247,100584,127552,171568,20121,91173,12636,54615,20199,63730,98105,2396,40387,14438,125012,4765,33235,12865,45299,37728,82098,77872,114037,59253,19675,24838,398016,102561,11446,17069,57508,178277,65836,99941,26114,2585,271882,136866,50126,11027,155648,118367,14585,8910,123015,335383,40434,41016,53021,14439,87098,176860,201543,121888,2358,9286,5739,22666,54270,37884,169381,33984,93859,16124,89364,72207,51639,76366,99029,65812,2198,12147,174891,194289,6986,30252,88822,21284,11445,288337,160821,33034,100869,43852,25761,52882,1144,103809,1924,84458,86079,43411,13542,139276,18141,34978,41298,7276,26481,173800,33210,17951,142652,33616,33677,2210,19941,98568,2486,192414,80136,12058,235883,50963,249638,29572,27221,47034,6124,72107,63346,97620,158513,299699,40388,23235,37176,224244,198386,121323,67992,23827,63170,17838,106622,158590,26807,5345,23489,91891,55474,74834,37981,13058,5977,72552,34706,26828,145172,19904,21367,34043,960,77092,91381,4733,47446,7680,41697,5170,16960,14741,46101,13656,473,51842,37433,11103,11551,121951,13191,97536,165932,50397,51628,129028,9069,44885,6590,59195,47045,32940,225472,90345,21833,13303,29407,96615,141951,5198,6028,18395,7181,3861,14966,156358,167182,36529,55253,25942,173153,30959,27261,50691,150176,162201,38467,48462,80602,42163,118482,168,108756,26011,17166,54149,456538,22512,91374,13816,90358,131615,18132,226707,1824,28139,26860,42253,93877,77351,65575,8980,80574,22020,27948,40422,91324,76376,13528,39281,91685,82215,122541,144066,1983,193851,17283,26320,2739,194978,4790,26845,42627,61300,65815,174612,55133,4200,191130,79771,158321,52280,166796,221620,62461,11278,4067,88152,83409,31717,121367,13522,47325,37945,10406,174348,249321,154101,64912,29938,51775,17220,15776,166138,78890,84425,54121,42861,16368,24572,291647,10197,32073,22651,11677,97509,26952,35787,18424,41910,71614,94977,72318,41594,70024,275419,37702,60199,7335,39107,61315,18271,18394,33768,87884,104277,123724,7277,56288,71981,189803,49320,3352,6798,14240,8954,69220,94433,57372,28620,68863,193727,85575,42309,41667,67689,42081,22543,44824,12719,28540,114236,101553,27638,27296,4300,5353,4663,19379,94098,3758,95888,95144,80344,87320,28447,259518,12718,71391,152731,37063,24132,31911,104896,15672,103782,1521,4945,72541,23717,122632,15619,87175,206120,29428,189780,61416,28350,44457,972,1175,47233,198738,95789,41907,21953,97034,59341,22864,53713,16873,32971,20693,20954,31336,21477,16169,38370,16412,9019,3841,24599,21938,17085,6484,81198,76413,5849,72514,12320,65247,276175,37234,59796,52642,16312,57349,198507,94148,46134,18958,125552,1747,18725,151873,14901,5490,68287,29470,3689,64794,40814,26018,25692,54450,2703,88278,124886,173087,174e3,24159,179477,24276,46004,201876,209202,445,52876,31948,30206,157610,39180,18439,44124,50469,5774,96278,222758,200216,50290,45486,20435,46986,46276,140133,142326,15569,13363,47522,92583,2182,7135,16853,22998,30272,4952,63263,35623,39096,53789,44864,20053,110392,124213,4630,16087,28221,127787,25839,77481,44693,13464,113146,6983,27069,55717,50102,4760,7107,26186,66507,59145,36032,104182,71328,29425,64317,50781,47465,94298,69706,74899,22754,120756,25108,93077,56834,73286,39928,16218,41699,176763,7555,70819,50083,26895,23315,26014,16773,123079,41712,5719,31516,90427,158540,85051,183128,40864,27505,55392,9058,45224,96857,30901,136622,96557,56304,120061,11501,151448,5773,89743,7769,86069,2935,18471,41628,10114,33660,110170,49479,26745,92846,33221,26731,18795,87076,8550,2100,29972,120289,3077,72490,33784,2630,208722,50861,63483,79029,6419,39467,14302,45286,64207,9686,67513,44170,1050,77246,59266,17055,53801,7150,11111,42432,4278,94579,362117,36175,42902,41933,39002,98489,22913,74161,84773,57036,17556,162288,74485,178760,93867,73635,128860,50362,261,67455,80001,46080,35662,4368,25247,19230,74393,22588,1822,27682,235324,13798,85998,13194,235067,23514,71669,147632,23191,134748,214683,105101,1518,25489,247114,7380,54842,26922,3971,26361,20844,68642,170517,77339,123255,8963,77818,150998,48466,36806,2732,23261,11741,236162,18243,126216,28690,50546,16385,92760,197383,246558,201295,88255,67588,71687,176076,172653,169058,33906,63747,24835,157621,43338,30050,46152,132741,2770,51371,94835,6614,15112,11749,56936,1250,19027,399017,58036,100215,23388,55815,308768,124152,94803,9521,64186,8971,28,30427,62163,7616,103838,35079,29203,131235,7743,17389,10882,37420,61460,228512,85363,41581,131077,62822,119647,10130,54445,26925,19968,29016,24446,74028,24176,61448,67185,9254,8563,119129,9771,99184,37716,39514,10532,221512,258753,218630,55980,23394,32141,61924,66749,32411,3741,36475,26678,77010,44946,91203,128749,116953,20476,49625,53116,13735,102335,29376,51946,83407,67892,59212,34685,21083,1546,112982,32972,74397,1078,190545,16082,86140,58591,89611,101531,10061,105104,76319,20035,17551,52611,169061,190842,100780,23907,90413,115619,9675,34710,193435,49443,129734,11183,258877,16318,136182,126808,44635,27304,192375,2599,125648,47051,12091,23814,721,58800,40137,66726,97930,60877,74487,7942,54326,9841,41428,13762,8211,85383,6950,99177,79806,201786,296464,124087,13144,29741,41721,47634,55088,254286,106408,17041,99064,12942,64086,45233,14005,2612,55827,255,7984,13980,38574,12776,46654,73499,249951,2101,26676,25996,132326,116415,119062,50449,31033,23038,11589,179252,20007,14860,129270,21143,17796,144715,60106,70758,69842,34674,282133,44014,16774,57268,38528,24053,46373,201667,28327,471023,51889,102667,21193,114909,84132,69317,96723,67969,16134,68145,15058,28765,32035,2524,101089,98664,25045,76571,14957,86040,118506,262428,154764,81573,39681,283900,73287,127825,544,80448,52347,38512,175971,15180,45467,33086,46552,48894,81107,43213,36672,54025,76703,8053,7608,13299,56619,20752,238099,54164,105133,1444,32942,953,37564,8e3,66316,119463,106817,404,13667,149108,128597,31267,10269,49836,106150,1484,52330,76965,160486,171648,38456,31263,22424,37738,66245,67467,143369,60471,75610,20895,115528,86070,60854,40796,49347,18989,15030,11371,37578,15779,79867,10187,86462,46402,155626,93200,40229,7090,57547,108053,99598,11088,47505,41218,206017,2173,20988,30219,22919,80563,57566,42369,93141,41675,2407,182519,120495,27154,16702,29456,14349,7958,16688,117177,140375,42467,261919,74916,153569,10836,34742,49526,7621,105997,12212,2270,392377,7755,17959,25086,232152,138791,33847,13860,35316,5811,1344,71259,50452,207539,92635,50359,5821,33674,30255,2086,2587,96264,17543,42,6029,9580,43007,139248,82831,12917,29607,25786,51467,42137,85161,100698,31561,88989,121990,278500,3602,109344,37982,15279,116442,28936,30880,87894,58079,128661,126731,67392,28051,146885,4861,16216,97344,42827,147561,153948,22684,21335,47685,1853,43349,15185,59642,10229,25520,187921,108972,5579,98037,24945,6697,19193,63734,137934,75056,89740,19767,224268,56138,63643,151661,39313,70618,84031,89723,84074,13703,85626,35460,8867,64845,3439,57906,99776,63968,49270,81130,34356,16210,23547,36446,34090,140028,72439,2221,22163,57058,363492,113754,18913,95451,48663,54464,54037,176097,68425,3023,34906,29482,117389,341780,80431,58330,16753,92616,60907,94846,147486,4498,48646,7773,46801,7778,18946,464978,47558,33223,177444,7328,15626,63337,94700,11743,9351,255024,39098,16447,42647,96230,39769,58840,10068,63439,35800,65843,58823,413844,9156,51258,7434,61791,85018,6872,3692,28096,7121,33024,6009,75532,31997,192535,9661,3304,9547,14753,31987,25314,55689,15896,20430,39472,31340,99744,25398,115569,54883,28719,205423,23071,57855,64638,149867,25671,82403,37616,20668,39989,77996,74948,140555,175248,64810,36515,46595,4958,248773,24045,28728,136673,168704,20804,114833,100325,27135,21205,96151,153134,45992,7093,13992,76047,1980,19432,145001,75159,87462,17710,1013,45556,34297,144882,20648,26061,11319,129567,108555,18872,464580,33386,22717,65948,167189,5603,135042,79542,8801,202632,18114,91882,5973,5239,67315,4431,60916,47819,71693,32597,32606,18183,45072,80329,76385,24749,51305,40314,156514,14693,130345,13168,66214,18029,12858,34801,27628,14544,10823,40522,40185,33739,148694,23548,9923,61012,28859,17933,19442,34364,99849,164107,141167,30629,21054,6744,36491,8096,42474,41706,155060,30650,10600,163442,1143,96655,61390,52359,7559,51568,64256,203854,4467,22453,14504,436398,7878,6980,8293,63610,293747,16167,35763,19627,147603,15419,18032,110744,51346,33681,54571,40472,48615,39073,21604,13754,173027,92560,11083,47299,63062,11813,52007,29883,9734,139722,15953,1550,20651,13616,49306,16113,90089,92326,7584,30712,72424,164858,6831,152871,55746,197721,34167,196442,6022,112107,55215,7538,123381,4920,43539,77165,8939,50392,34192,20225,79762,22505,58667,40770,29788,97180,82835,4568,8579,13273,363569,35898,49983,436,36598,3237,131691,62418,35591,8101,4073,379438,65218,76072,33887,2968,27573,212619,288680,68278,72851,150504,217896,6913,121339,22017,35340,51072,43616,75043,31437,10833,81487,4364,22968,41454,106687,85446,19863,109625,149241,524,141850,214404,54376,657,237023,9401,108137,53800,32474,49712,53334,126876,27337,45552,177696,8269,15036,12097,42240,2328,125374,119295,99715,2500,19624,39441,27220,102691,60957,94543,39101,18566,67362,13975,78230,25017,34017,239007,90027,39351,41681,35354,43822,1043,916,58587,141983,94818,38799,75459,41114,67432,16195,36606,59568,22272,126769,31424,68659,12287,134302,257977,5756,207285,95637,47248,117689,19583,77451,22373,12200,54993,117118,34244,29386,34562,53819,71267,64172,77665,49368,7716,59301,25749,45426,194789,17297,2650,1766,32501,45198,20403,20984,6600,14171,94604,19037,5402,29896,9938,59935,109708,88081,145182,44844,39167,352626,164173,35374,45982,6122,154,73419,220487,53834,53601,17992,8609,229321,5610,68098,66815,71012,95069,140968,27396,8957,134489,24656,86659,56598,134852,17316,123838,255436,6613,41610,138033,81452,32023,32396,123687,63398,8693,29712,30407,19296,121188,3551,36099,20032,111948,56624,16547,27453,35916,15378,52039,56849,13489,22214,73177,53097,277349,2157,14029,187886,10260,141743,246460,91880,50869,3788,49486,133566,54950,33120,129337,53768,18333,9525,26902,312251,10297,9020,70759,16647,112432,59260,84609,9818,82766,73569,468,46001,75780,55028,52106,11498,43645,108069,17150,17753,29417,16705,31799,9606,289,122254,115975,8620,6133,255357,56908,14456,133464,43554,79224,11247,29630,160,12756,25464,65960,350428,62521,321796,100359,67358,35169,46172,113128,48988,88868,31094,33266,6847,60887,98188,49659,69117,92977,220228,13947,80181,35103,62170,97351,13475,2440,199768,19498,36597,46971,25234,67806,62881,84717,73648,181966,10488,94149,21550,26655,63436,48375,14405,165650,9621,24439,28043,42735,4490,29963,56674,45373,1934,262446,50855,67098,26898,5261,52696,40644,33900,9440,180286,87162,22940,19704,26936,69769,10254,101759,27406,12243,48e3,73926,113215,54935,5726,192787,4312,106216,9366,11550,52949,23457,212271,277152,133895,108374,6191,96477,29980,218916,58024,54696,40853,91124,65894,91170,65908,252552,6793,29212,15389,44516,122515,52617,35058,9017,103536,39510,49136,19242,130652,662077,74699,47024,31422,8517,73351,24399,13867,128360,4810,4434,61779,111983,61036,17798,110240,59722,102960,39688,10001,23803,23039,176498,56659,44814,134295,17188,77577,74466,226175,102472,154333,63900,111747,18062,41171,79669,32773,408933,42562,28931,30907,107388,43487,2946,240310,23938,24354,319,184983,7927,6488,1422,10790,68809,68209,64775,4361,202,17123,59634,51200,44391,18188,17843,2619,74278,3230,9540,47187,21702,36274,56894,43907,16310,34790,16866,6150,5561,13587,107545,108873,126867,86986,28640,33427,19017,5762,80637,17430,46903,2047,131055,25958,13558,5444,47152,13900,44563,122857,45348,70863,39593,54332,38068,33637,318,40310,143467,18502,24520,11377,62013,28942,27246,28269,83545,17999,59015,90707,30065,15161,34720,1263,37008,2012,6060,98575,92933,5721,299,199555,24578,29223,2985,743,115825,109523,136657,47454,26378,53586,3733,174945,93340,244456,5693,37386,28782,89767,27545,23573,18798,136425,34320,84778,20041,48453,38215,7477,71958,40621,8773,5874,187927,105965,51100,43533,18083,8443,10180,43597,2003,183999,69689,12216,129696,146188,62389,34044,68410,12765,43273,26949,266807,3345,34477,79197,5688,47539,213110,21634,22257,50092,32222,42346,39530,63668,98,134978,74022,5152,59088,174145,37220,9934,9545,118937,5724,87240,19875,15784,40143,23263,87513,181654,285152,37881,263241,4966,43934,10433,186657,6470,74416,225854,25908,142677,246262,32280,6192,75890,45546,143264,135305,29742,47013,77787,11732,126658,8763,37950,21806,57557,113464,89465,108995,164574,23894,22996,23169,15369,23117,17642,130607,40503,36239,280990,44666,9981,40427,147487,26869,168452,32886,32991,46798,240839,15111,70502,65697,88548,44145,28701,48767,31139,206777,35659,181164,166262,14554,171445,31786,66523,76607,17956,6507,31279,90476,116611,167918,6560,1243,115324,80128,41867,55897,187323,37069,32596,189444,145931,13390,105530,65709,26805,6999,55714,41300,22915,68951,22138,21120,22264,10058,19945,33635,56123,99085,10032,5818,6016,46649,57476,35264,94413,112522,262288,93686,83038,14341,23204,28807,66084,77987,6101,126673,7133,38126,5923,122091,170240,97772,46874,215746,43948,41622,3272,55596,8332,146411,251315,13533,8561,81521,115449,48616,175175,2063,186556,3036,134537,75772,29728,82360,22973,186559,86348,89100,38388,82297,45610,2613,87082,9986,177812,57884,23591,47485,42543,33582,44713,74439,257444,252451,31825,35631,38540,33066,5147,13973,4343,51830,70378,22827,26448,95560,36896,241741,48067,203953,298860,61620,20450,3220,67272,6586,107662,100160,108684,6929,57226,4762,7457,1320,40404,77204,99309,62750,208653,59977,44e3,74315,34332,5819,172217,64904,114077,18147,84012,1791,98456,90930,21446,116669,103938,7422,85140,59713,5768,326211,16239,75411,13229,29398,10758,236107,1539,112472,95979,152154,151294,306,21196,38146,10700,6891,84282,109646,56492,40539,6589,119491,51354,30685,140209,136906,29622,73617,49553,70525,51671,166869,139616,74395,37439,49595,45678,11959,33211,86560,52434,9282,62690,112155,130810,5243,108261,99970,265613,72551,80049,6391,33365,90721,66737,69872,87011,1860,9032,112544,60905,37371,89015,140351,19076,850,373531,2802,36725,218795,72062,28990,16550,24614,7815,6187,26336,33373,32162,42791,73555,32062,23386,10244,56392,49442,27076,136262,12412,14883,1134,33675,97153,199281,15608,100152,74072,47942,254301,36451,16026,10687,65067,56708,254030,30290,50490,13864,57941,259331,35588,23485,43486,24869,21620,92971,22072,88645,1048,182050,13343,32452,14825,19509,3325,216938,45740,99716,189082,53740,78245,25609,24311,176777,47340,308354,40669,66085,14102,125339,9225,128709,97207,1271,200933,78439,113451,88975,18324,46521,11819,18570,141756,72512,170020,52754,63550,118515,103073,93330,32736,50499,14722,31600,68452,398867,29316,172786,18417,104924,2606,5670,84818,16288,67106,59580,82929,607401,291,85829,359,15897,35830,50696,65630,52672,22115,356968,29895,40837,231192,34024,38957,26722,406,23335,124952,72068,68804,13268,147101,164740,276569,162596,66943,11569,26654,66358,4777,23229,102127,5848,978,2921,59666,5371,28212,90108,42938,39320,2499,4271,108792,33510,125072,71653,65239,38250,66357,38577,13964,86251,35708,50755,36010,29448,12209,3844,38222,206337,100876,67827,137088,14167,252225,84163,195270,1306,5703,54198,779,46802,22028,51124,86759,70560,113164,35685,162145,45471,34561,422,2611,6464,47486,19223,38246,9191,18331,89942,243642,212364,15893,17518,22617,6409,30046,126182,59716,36560,104428,18846,26592,19458,50793,147333,30826,1388,27647,10922,14495,33545,19269,135828,39727,41601,46931,233379,49169,131130,182112,16276,82381,118209,142445,128310,19672,28740,82907,33436,3118,102206,28723,24819,41937,38854,5157,3881,111491,1142,9776,421673,152241,29309,14961,87854,6054,15424,3796,82656,54996,2108,55367,239450,154525,9643,118103,106041,64601,68549,48707,30266,25772,18740,9462,229669,91798,112152,191327,14493,72828,8175,66636,236474,25817,87351,129027,76653,20422,22983,71240,27846,44661,12399,46158,77704,53101,35032,11072,17300,109294,33638,24408,1895,11241,760,17584,82479,125877,63150,141075,34259,23274,81698,15732,43577,48340,91584,14688,16379,24481,150280,96420,262050,48635,43727,61819,56268,72003,88178,17281,79912,13218,122519,125295,166396,11811,2171,118930,67746,17636,178278,174656,95661,173039,83845,79689,17473,98555,127696,203415,54730,22925,232239,9309,12136,175026,20740,180188,10747,39816,314017,266131,10040,175732,112550,220651,31974,37393,888,23008,86799,4303,64905,148467,75337,251,3284,370102,50264,9835,5438,23655,4481,29851,329,12855,7162,64931,78141,12804,42372,296771,83547,18624,34874,86271,3360,48665,77735,88767,11463,63527,28889,22258,29140,194315,113924,25499,6406,31334,1845,4802,49184,43455,35469,127594,92970,61038,115005,38840,87761,106838,8811,20572,55637,11162,96721,132425,108925,2948,125457,36356,3502,75270,27622,127192,2561,123095,49394,61155,16897,110064,9699,89448,53356,19628,220310,21622,83036,9885,112214,6087,26713,17901,161912,91492,3440,68594,9266,92238,8087,6866,150194,72175,80701,13459,31836,43243,239700,95846,44749,50647,21945,230538,120612,132371,244604,5193,105637,34661,41341,68775,85393,1874,8771,33718,49672,77403,595452,99507,6490,58895,128742,7704,39239,73217,43816,62824,37804,199976,22361,80005,87514,94832,14089,4574,139975,59142,75523,100268,43906,53442,15152,2547,186002,17011,19513,204282,3343,60568,128318,119250,4298,51871,41336,71759,21921,45074,98169,145889,99427,11350,1237,5520,28799,7803,53702,21026,136352,38293,128690,12158,90132,44600,10184,26957,39459,126025,78904,82999,59373,39301,150198,120529,153042,20177,50089,14764,271571,30530,123161,38975,101562,22941,5648,124654,109243,69817,71675,49162,106884,21241,107795,30258,16572,188262,141456,7688,60718,8271,11044,32440,104608,103419,236109,93156,43293,128929,42107,67180,25201,115254,185488,130954,72813,167547,20537,39969,38432,22582,184022,1139,27199,5655,17767,97412,122606,209377,27070,35871,326617,188954,42680,73512,80911,22629,3011,95021,315242,157737,383,41821,41808,19335,27950,15674,25677,110950,35375,76835,59108,57370,35262,16569,160415,37706,78086,32041,49691,137143,9782,172080,50148,77917,6323,10110,69172,17711,21795,59511,76184,135114,31046,132319,59105,157578,20549,80778,57649,158421,65143,4575,72235,21899,10797,92745,34035,106079,80159,4508,78304,25350,75457,46458,32937,25623,47,8531,104751,84953,8138,36508,187199,66310,115274,13253,32461,38536,1916,42007,187160,35055,26325,84394,35963,94216,45590,97782];var qi=15,$i=class{log;peerRouting;routingTable;refreshInterval;refreshQueryTimeout;commonPrefixLengthRefreshedAt;refreshTimeoutId;constructor(e,t){let{peerRouting:n,routingTable:i,refreshInterval:s,refreshQueryTimeout:o,logPrefix:a}=t;this.log=e.logger.forComponent(`${a}:routing-table:refresh`),this.peerRouting=n,this.routingTable=i,this.refreshInterval=s??3e5,this.refreshQueryTimeout=o??3e4,this.commonPrefixLengthRefreshedAt=[],this.refreshTable=this.refreshTable.bind(this)}async afterStart(){this.log(`refreshing routing table every ${this.refreshInterval}ms`),this.refreshTable(!0)}async stop(){this.refreshTimeoutId!=null&&clearTimeout(this.refreshTimeoutId)}refreshTable(e=!1){this.log("refreshing routing table");let t=this._maxCommonPrefix(),n=this._getTrackedCommonPrefixLengthsForRefresh(t);this.log(`max common prefix length ${t}`),this.log(`tracked CPLs [ ${n.map(i=>i.toISOString()).join(", ")} ]`),Promise.all(n.map(async(i,s)=>{try{if(await this._refreshCommonPrefixLength(s,i,e),this._numPeersForCpl(t)===0){let o=Math.min(2*(s+1),n.length-1);for(let a=s+1;a<o+1;a++)try{await this._refreshCommonPrefixLength(a,i,e)}catch(c){this.log.error(c)}}}catch(o){this.log.error(o)}})).catch(i=>{this.log.error(i)}).then(()=>{this.refreshTimeoutId=setTimeout(this.refreshTable,this.refreshInterval),this.refreshTimeoutId.unref!=null&&this.refreshTimeoutId.unref()}).catch(i=>{this.log.error(i)})}async _refreshCommonPrefixLength(e,t,n){if(!n&&t.getTime()>Date.now()-this.refreshInterval){this.log("not running refresh for cpl %s as time since last refresh not above interval",e);return}let i=await this._generateRandomPeerId(e);this.log("starting refreshing cpl %s with key %p (routing table size was %s)",e,i,this.routingTable.size);let s=AbortSignal.timeout(this.refreshQueryTimeout);Ee(1/0,s);let o=await Mi(this.peerRouting.getClosestPeers(i.toBytes(),{signal:s}));this.log(`found ${o} peers that were close to imaginary peer %p`,i),this.log("finished refreshing cpl %s with key %p (routing table size is now %s)",e,i,this.routingTable.size)}_getTrackedCommonPrefixLengthsForRefresh(e){e>qi&&(e=qi);let t=[];for(let n=0;n<=e;n++)t[n]=this.commonPrefixLengthRefreshedAt[n]??new Date;return t}async _generateRandomPeerId(e){if(this.routingTable.kb==null)throw new Error("Routing table not started");let t=ut(2),n=(t[1]<<8)+t[0],i=await this._makePeerId(this.routingTable.kb.localPeer.kadId,n,e);return bt(i)}async _makePeerId(e,t,n){if(n>qi)throw new Error(`Cannot generate peer ID for common prefix length greater than ${qi}`);let o=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(0,!1)^32768>>n,a=65535<<16-(n+1),c=o&a|t&~a,l=na[c],u=new ArrayBuffer(34),f=new DataView(u,0,u.byteLength);return f.setUint8(0,ne.code),f.setUint8(1,32),f.setUint32(2,l,!1),new Uint8Array(f.buffer,f.byteOffset,f.byteLength)}_maxCommonPrefix(){let e=0;for(let t of this._prefixLengths())t>e&&(e=t);return e}_numPeersForCpl(e){let t=0;for(let n of this._prefixLengths())n===e&&t++;return t}*_prefixLengths(){if(this.routingTable.kb!=null)for(let{kadId:e}of this.routingTable.kb.toIterable()){let t=nt(this.routingTable.kb.localPeer.kadId,e),n=0;for(let i of t)if(i===0)n++;else break;yield n}}};function zi(r){return r[Symbol.asyncIterator]!=null}var Gi=r=>{let e=ce(r),t=be(e);return qe(r,t),Gi.bytes=e,t};Gi.bytes=0;function ji(r,e){e=e??{};let t=e.lengthEncoder??Gi;function*n(i){let s=t(i.byteLength);s instanceof Uint8Array?yield s:yield*s,i instanceof Uint8Array?yield i:yield*i}return zi(r)?async function*(){for await(let i of r)yield*n(i)}():function*(){for(let i of r)yield*n(i)}()}ji.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??Gi;return new Ke(t(r.byteLength),r)};var Yi=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},Wi=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},Zi=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"},Wn=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};var uc=8,fc=1024*1024*4,xr;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(xr||(xr={}));var y2=r=>{let e=Ve(r);return y2.bytes=ce(e),e};y2.bytes=0;function Zn(r,e){let t=new Ke,n=xr.LENGTH,i=-1,s=e?.lengthDecoder??y2,o=e?.maxLengthLength??uc,a=e?.maxDataLength??fc;function*c(){for(;t.byteLength>0;){if(n===xr.LENGTH)try{if(i=s(t),i<0)throw new Yi("Invalid message length");if(i>a)throw new Wi("Message length too long");let l=s.bytes;t.consume(l),e?.onLength!=null&&e.onLength(i),n=xr.DATA}catch(l){if(l instanceof RangeError){if(t.byteLength>o)throw new Zi("Message length length too long");break}throw l}if(n===xr.DATA){if(t.byteLength<i)break;let l=t.sublist(0,i);t.consume(i),e?.onData!=null&&e.onData(l),yield l,n=xr.LENGTH}}}return zi(r)?async function*(){for await(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new Wn("Unexpected end of input")}():function*(){for(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new Wn("Unexpected end of input")}()}Zn.fromReader=(r,e)=>{let t=1,n=async function*(){for(;;)try{let{done:s,value:o}=await r.next(t);if(s===!0)return;o!=null&&(yield o)}catch(s){if(s.code==="ERR_UNDER_READ")return{done:!0,value:null};throw s}finally{t=1}}();return Zn(n,{...e??{},onLength:s=>{t=s}})};var Qi=class{providers;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:add-provider`),this.providers=t.providers}async handle(e,t){if(this.log("start"),t.key==null||t.key.length===0)throw new E("Missing key","ERR_MISSING_KEY");let n;try{n=Se.decode(t.key)}catch{throw new E("Invalid CID","ERR_INVALID_CID")}(t.providers==null||t.providers.length===0)&&this.log.error("no providers found in message"),await Promise.all(t.providers.map(async i=>{if(!e.equals(i.id)){this.log("invalid provider peer %p from %p",i.id,e);return}if(i.multiaddrs.length<1){this.log("no valid addresses for provider %p. Ignore",e);return}this.log("received provider %p for %s (addrs %s)",e,n,i.multiaddrs.map(s=>vr(s).toString())),await this.providers.addProvider(n,bt(i.id))}))}};var Xi=class{peerRouting;peerInfoMapper;peerId;addressManager;log;constructor(e,t){let{peerRouting:n,logPrefix:i}=t;this.log=e.logger.forComponent(`${i}:rpc:handlers:find-node`),this.peerId=e.peerId,this.addressManager=e.addressManager,this.peerRouting=n,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(this.log("incoming request from %p for peers closer to %b",e,t.key),t.key==null)throw new E("Invalid FIND_NODE message received - key was missing","ERR_INVALID_MESSAGE");let n=await this.peerRouting.getCloserPeersOffline(t.key,e);Z(this.peerId.toBytes(),t.key)&&n.push({id:this.peerId,multiaddrs:this.addressManager.getAddresses().map(s=>s.decapsulateCode(j("p2p").code))});let i={type:M.FIND_NODE,clusterLevel:t.clusterLevel,closer:n.map(this.peerInfoMapper).filter(({multiaddrs:s})=>s.length).map(s=>({id:s.id.toBytes(),multiaddrs:s.multiaddrs.map(o=>o.bytes)})),providers:[]};return i.closer.length===0&&this.log("could not find any peers closer to %b than %p",t.key,e),i}};var Ji=class{peerRouting;providers;peerStore;peerInfoMapper;log;constructor(e,t){let{peerRouting:n,providers:i,logPrefix:s}=t;this.log=e.logger.forComponent(`${s}:rpc:handlers:get-providers`),this.peerStore=e.peerStore,this.peerRouting=n,this.providers=i,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(t.key==null)throw new E("Invalid GET_PROVIDERS message received - key was missing","ERR_INVALID_MESSAGE");let n;try{n=Se.decode(t.key)}catch{throw new E("Invalid CID","ERR_INVALID_CID")}this.log("%p asking for providers for %s",e,n);let[i,s]=await Promise.all([this.providers.getProviders(n),this.peerRouting.getCloserPeersOffline(t.key,e)]),o=await this._getPeers(i),a=await this._getPeers(s.map(({id:l})=>l)),c={type:M.GET_PROVIDERS,key:t.key,clusterLevel:t.clusterLevel,closer:a.map(this.peerInfoMapper).filter(({multiaddrs:l})=>l.length).map(l=>({id:l.id.toBytes(),multiaddrs:l.multiaddrs.map(u=>u.bytes)})),providers:o.map(this.peerInfoMapper).filter(({multiaddrs:l})=>l.length).map(l=>({id:l.id.toBytes(),multiaddrs:l.multiaddrs.map(u=>u.bytes)}))};return this.log("got %s providers %s closerPeers",c.providers.length,c.closer.length),c}async _getAddresses(e){return[]}async _getPeers(e){let t=[];for(let n of e)try{let i=await this.peerStore.get(n),s=this.peerInfoMapper({id:n,multiaddrs:i.addresses.map(({multiaddr:o})=>o)});s.multiaddrs.length>0&&t.push(s)}catch(i){if(i.code!=="ERR_NOT_FOUND")throw i}return t}};var es=class{peerStore;datastore;peerRouting;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:get-value`),this.peerStore=e.peerStore,this.datastore=e.datastore,this.peerRouting=t.peerRouting}async handle(e,t){let n=t.key;if(this.log("%p asked for key %b",e,n),n==null||n.length===0)throw new E("Invalid key","ERR_INVALID_KEY");let i={type:M.GET_VALUE,key:n,clusterLevel:t.clusterLevel,closer:[],providers:[]};if(P0(n)){this.log("is public key");let a=C0(n),c;try{let l=await this.peerStore.get(a);if(l.id.publicKey==null)throw new E("No public key found in key book","ERR_NOT_FOUND");c=l.id.publicKey}catch(l){if(l.code!=="ERR_NOT_FOUND")throw l}if(c!=null)return this.log("returning found public key"),i.record=new pe(n,c,new Date).serialize(),i}let[s,o]=await Promise.all([this._checkLocalDatastore(n),this.peerRouting.getCloserPeersOffline(n,e)]);return s!=null&&(this.log("had record for %b in local datastore",n),i.record=s.serialize()),o.length>0&&(this.log("had %s closer peers in routing table",o.length),i.closer=o.map(a=>({id:a.id.toBytes(),multiaddrs:a.multiaddrs.map(c=>c.bytes)}))),i}async _checkLocalDatastore(e){this.log("checkLocalDatastore looking for %b",e);let t=Ht(e),n;try{n=await this.datastore.get(t)}catch(s){if(s.code==="ERR_NOT_FOUND")return;throw s}let i=pe.deserialize(n);if(i==null)throw new E("Invalid record","ERR_INVALID_RECORD");if(i.timeReceived==null||Date.now()-i.timeReceived.getTime()>1296e5){await this.datastore.delete(t);return}return i}};var ts=class{log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:ping`)}async handle(e,t){return this.log("ping from %p",e),t}};var rs=class{components;validators;log;constructor(e,t){let{validators:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:put-value`),this.validators=n}async handle(e,t){let n=t.key;if(this.log("%p asked us to store value for key %b",e,n),t.record==null){let i=`Empty record from: ${e.toString()}`;throw this.log.error(i),new E(i,"ERR_EMPTY_RECORD")}try{let i=pe.deserialize(t.record);await Cr(this.validators,i),i.timeReceived=new Date;let s=Ht(i.key);await this.components.datastore.put(s,i.serialize().subarray()),this.log("put record for %b into datastore under key %k",n,s)}catch(i){this.log("did not put record for key %b into datastore %o",n,i)}return t}};var ns=class{handlers;routingTable;log;constructor(e,t){let{providers:n,peerRouting:i,validators:s,logPrefix:o,peerInfoMapper:a}=t;this.log=e.logger.forComponent(`${o}:rpc`),this.routingTable=t.routingTable,this.handlers={[M.GET_VALUE.toString()]:new es(e,{peerRouting:i,logPrefix:o}),[M.PUT_VALUE.toString()]:new rs(e,{validators:s,logPrefix:o}),[M.FIND_NODE.toString()]:new Xi(e,{peerRouting:i,logPrefix:o,peerInfoMapper:a}),[M.ADD_PROVIDER.toString()]:new Qi(e,{providers:n,logPrefix:o}),[M.GET_PROVIDERS.toString()]:new Ji(e,{peerRouting:i,providers:n,logPrefix:o,peerInfoMapper:a}),[M.PING.toString()]:new ts(e,{logPrefix:o})}}async handleMessage(e,t){try{await this.routingTable.add(e)}catch(i){this.log.error("Failed to update the kbucket store",i)}let n=this.handlers[t.type];if(n==null){this.log.error(`no handler found for message type: ${t.type}`);return}return n.handle(e,t)}onIncomingStream(e){Promise.resolve().then(async()=>{let{stream:t,connection:n}=e,i=n.remotePeer;try{await this.routingTable.add(i)}catch(o){this.log.error(o)}let s=this;await Vt(t,o=>Zn(o),async function*(o){for await(let a of o){let c=$e.decode(a);s.log("incoming %s from %p",c.type,i);let l=await s.handleMessage(i,c);l!=null&&(yield $e.encode(l))}},o=>ji(o),t)}).catch(t=>{this.log.error(t)})}};var is=class extends Pe{log;components;protocol;running;registrarId;constructor(e,t){super();let{protocol:n,logPrefix:i}=t;this.components=e,this.log=e.logger.forComponent(`${i}:topology-listener`),this.running=!1,this.protocol=n}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.registrarId=await this.components.registrar.register(this.protocol,{onConnect:e=>{this.log("observed peer %p with protocol %s",e,this.protocol),this.dispatchEvent(new Me("peer",{detail:e}))}}))}async stop(){this.running=!1,this.registrarId!=null&&(this.components.registrar.unregister(this.registrarId),this.registrarId=void 0)}};var b2=class{dht;constructor(e){this.dht=e}async provide(e,t={}){await cs(this.dht.provide(e,t))}async*findProviders(e,t={}){for await(let n of this.dht.findProviders(e,t))n.name==="PROVIDER"&&(yield*n.providers)}async put(e,t,n){await cs(this.dht.put(e,t,n))}async get(e,t){for await(let n of this.dht.get(e,t))if(n.name==="VALUE")return n.value;throw new E("Not found","ERR_NOT_FOUND")}},w2=class{dht;constructor(e){this.dht=e}async findPeer(e,t={}){for await(let n of this.dht.findPeer(e,t))if(n.name==="FINAL_PEER")return n.peer;throw new E("Not found","ERR_NOT_FOUND")}async*getClosestPeers(e,t={}){for await(let n of this.dht.getClosestPeers(e,t))n.name==="FINAL_PEER"&&(yield n.peer)}},dc=32,pc=64,ss=class extends Pe{protocol;routingTable;providers;network;peerRouting;components;log;running;kBucketSize;clientMode;validators;selectors;queryManager;contentFetching;contentRouting;routingTableRefresh;rpc;topologyListener;querySelf;maxInboundStreams;maxOutboundStreams;dhtContentRouting;dhtPeerRouting;peerInfoMapper;constructor(e,t={}){super();let{kBucketSize:n,clientMode:i,validators:s,selectors:o,querySelfInterval:a,protocol:c,logPrefix:l,pingTimeout:u,pingConcurrency:f,maxInboundStreams:h,maxOutboundStreams:p,providers:y}=t,g=l??"libp2p:kad-dht";this.running=!1,this.components=e,this.log=e.logger.forComponent(g),this.protocol=c??O2,this.kBucketSize=n??20,this.clientMode=i??!0,this.maxInboundStreams=h??dc,this.maxOutboundStreams=p??pc,this.peerInfoMapper=t.peerInfoMapper??y1,this.routingTable=new Ki(e,{kBucketSize:n,pingTimeout:u,pingConcurrency:f,protocol:this.protocol,logPrefix:g}),this.providers=new Pi(e,y??{}),this.validators={...x0,...s},this.selectors={...v0,...o},this.network=new _i(e,{protocol:this.protocol,logPrefix:g});let d=ae();t.allowQueryWithZeroPeers===!0&&d.resolve(),this.queryManager=new Oi(e,{disjointPaths:Math.ceil(this.kBucketSize/2),logPrefix:g,initialQuerySelfHasRun:d,routingTable:this.routingTable}),this.peerRouting=new Ni(e,{routingTable:this.routingTable,network:this.network,validators:this.validators,queryManager:this.queryManager,logPrefix:g}),this.contentFetching=new b1(e,{validators:this.validators,selectors:this.selectors,peerRouting:this.peerRouting,queryManager:this.queryManager,network:this.network,logPrefix:g}),this.contentRouting=new Ai(e,{network:this.network,peerRouting:this.peerRouting,queryManager:this.queryManager,routingTable:this.routingTable,providers:this.providers,logPrefix:g}),this.routingTableRefresh=new $i(e,{peerRouting:this.peerRouting,routingTable:this.routingTable,logPrefix:g}),this.rpc=new ns(e,{routingTable:this.routingTable,providers:this.providers,peerRouting:this.peerRouting,validators:this.validators,logPrefix:g,peerInfoMapper:this.peerInfoMapper}),this.topologyListener=new is(e,{protocol:this.protocol,logPrefix:g}),this.querySelf=new Vi(e,{peerRouting:this.peerRouting,interval:a,initialInterval:t.initialQuerySelfInterval,logPrefix:g,initialQuerySelfHasRun:d,routingTable:this.routingTable}),this.network.addEventListener("peer",b=>{let v=b.detail;this.onPeerConnect(v).catch(m=>{this.log.error("could not add %p to routing table",v.id,m)}),this.dispatchEvent(new Me("peer",{detail:v}))}),this.topologyListener.addEventListener("peer",b=>{let v=b.detail;Promise.resolve().then(async()=>{let m=await this.components.peerStore.get(v),A={id:v,multiaddrs:m.addresses.map(({multiaddr:_})=>_),protocols:m.protocols};await this.onPeerConnect(A)}).catch(m=>{this.log.error("could not add %p to routing table",v,m)})}),this.dhtPeerRouting=new w2(this),this.dhtContentRouting=new b2(this),t.clientMode==null&&e.events.addEventListener("self:peer:update",b=>{this.log("received update of self-peer info"),Promise.resolve().then(async()=>{let v=b.detail.peer.addresses.some(({multiaddr:A})=>U0(A)),m=this.getMode();v&&m==="client"?await this.setMode("server"):m==="server"&&!v&&await this.setMode("client")}).catch(v=>{this.log.error("error setting dht server mode",v)})})}[Symbol.toStringTag]="@libp2p/kad-dht";[D2]=["@libp2p/content-routing","@libp2p/peer-routing","@libp2p/peer-discovery"];[U2]=["@libp2p/identify"];get[T2](){return this.dhtContentRouting}get[N2](){return this.dhtPeerRouting}get[_2](){return this}async onPeerConnect(e){if(this.log("peer %p connected",e.id),e=this.peerInfoMapper(e),e.multiaddrs.length===0){this.log("ignoring %p as there were no valid addresses in %s after filtering",e.id,e.multiaddrs.map(t=>t.toString()));return}try{await this.routingTable.add(e.id)}catch(t){this.log.error("could not add %p to routing table",e.id,t)}}isStarted(){return this.running}getMode(){return this.clientMode?"client":"server"}async setMode(e){await this.components.registrar.unhandle(this.protocol),e==="client"?(this.log("enabling client mode"),this.clientMode=!0):(this.log("enabling server mode"),this.clientMode=!1,await this.components.registrar.handle(this.protocol,this.rpc.onIncomingStream.bind(this.rpc),{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}))}async start(){this.running=!0,await this.setMode(this.clientMode?"client":"server"),await P2(this.querySelf,this.providers,this.queryManager,this.network,this.routingTable,this.topologyListener,this.routingTableRefresh)}async stop(){this.running=!1,await C2(this.querySelf,this.providers,this.queryManager,this.network,this.routingTable,this.routingTableRefresh,this.topologyListener)}async*put(e,t,n={}){yield*this.contentFetching.put(e,t,n)}async*get(e,t={}){yield*this.contentFetching.get(e,t)}async*provide(e,t={}){yield*this.contentRouting.provide(e,this.components.addressManager.getAddresses(),t)}async*findProviders(e,t={}){yield*this.contentRouting.findProviders(e,t)}async*findPeer(e,t={}){yield*this.peerRouting.findPeer(e,t)}async*getClosestPeers(e,t={}){yield*this.peerRouting.getClosestPeers(e,t)}async refreshRoutingTable(){this.routingTableRefresh.refreshTable(!0)}};var v2;(function(r){r[r.SEND_QUERY=0]="SEND_QUERY",r[r.PEER_RESPONSE=1]="PEER_RESPONSE",r[r.FINAL_PEER=2]="FINAL_PEER",r[r.QUERY_ERROR=3]="QUERY_ERROR",r[r.PROVIDER=4]="PROVIDER",r[r.VALUE=5]="VALUE",r[r.ADD_PEER=6]="ADD_PEER",r[r.DIAL_PEER=7]="DIAL_PEER"})(v2||(v2={}));function gc(r={}){return e=>new ss(e,r)}return ya(mc);})();
|
8
8
|
/*! Bundled license information:
|
9
9
|
|
10
10
|
pvtsutils/build/index.js:
|