@libp2p/tcp 6.0.5 → 6.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -48
- package/dist/index.min.js +7 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +15 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/socket-to-conn.d.ts +0 -1
- package/dist/src/socket-to-conn.d.ts.map +1 -1
- package/dist/src/socket-to-conn.js +1 -5
- package/dist/src/socket-to-conn.js.map +1 -1
- package/dist/typedoc-urls.json +9 -0
- package/package.json +5 -5
- package/src/index.ts +21 -2
- package/src/socket-to-conn.ts +1 -7
package/README.md
CHANGED
|
@@ -5,19 +5,15 @@
|
|
|
5
5
|
[](https://codecov.io/gh/libp2p/js-libp2p-tcp)
|
|
6
6
|
[](https://github.com/libp2p/js-libp2p-tcp/actions/workflows/js-test-and-release.yml)
|
|
7
7
|
|
|
8
|
-
>
|
|
8
|
+
> A TCP transport for libp2p
|
|
9
9
|
|
|
10
10
|
## Table of contents <!-- omit in toc -->
|
|
11
11
|
|
|
12
12
|
- [Install](#install)
|
|
13
13
|
- [Usage](#usage)
|
|
14
|
-
- [API](#api)
|
|
15
|
-
- [Transport](#transport)
|
|
16
|
-
- [Connection](#connection)
|
|
17
|
-
- [Contribute](#contribute)
|
|
18
|
-
- [Contribute](#contribute-1)
|
|
14
|
+
- [API Docs](#api-docs)
|
|
19
15
|
- [License](#license)
|
|
20
|
-
- [Contribute](#contribute
|
|
16
|
+
- [Contribute](#contribute)
|
|
21
17
|
|
|
22
18
|
## Install
|
|
23
19
|
|
|
@@ -25,13 +21,6 @@
|
|
|
25
21
|
$ npm i @libp2p/tcp
|
|
26
22
|
```
|
|
27
23
|
|
|
28
|
-
[](https://github.com/libp2p/js-libp2p-interfaces/tree/master/src/transport)
|
|
29
|
-
[](https://github.com/libp2p/js-libp2p-interfaces/tree/master/src/connection)
|
|
30
|
-
|
|
31
|
-
```sh
|
|
32
|
-
> npm install @libp2p/tcp
|
|
33
|
-
```
|
|
34
|
-
|
|
35
24
|
## Usage
|
|
36
25
|
|
|
37
26
|
```js
|
|
@@ -82,41 +71,9 @@ new connection opened
|
|
|
82
71
|
Value: hello World!
|
|
83
72
|
```
|
|
84
73
|
|
|
85
|
-
## API
|
|
86
|
-
|
|
87
|
-
### Transport
|
|
88
|
-
|
|
89
|
-
[](https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/libp2p-interfaces/src/transport)
|
|
90
|
-
|
|
91
|
-
`@libp2p/tcp` accepts TCP addresses as both IPFS and non IPFS encapsulated addresses, i.e:
|
|
92
|
-
|
|
93
|
-
`/ip4/127.0.0.1/tcp/4001`
|
|
94
|
-
`/ip4/127.0.0.1/tcp/4001/ipfs/QmHash`
|
|
95
|
-
|
|
96
|
-
(both for dialing and listening)
|
|
97
|
-
|
|
98
|
-
### Connection
|
|
99
|
-
|
|
100
|
-
[](https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/libp2p-interfaces/src/connection)
|
|
101
|
-
|
|
102
|
-
## Contribute
|
|
103
|
-
|
|
104
|
-
Contributions are welcome! The libp2p implementation in JavaScript is a work in progress. As such, there's a few things you can do right now to help out:
|
|
105
|
-
|
|
106
|
-
- [Check out the existing issues](//github.com/libp2p/js-libp2p-tcp/issues).
|
|
107
|
-
- **Perform code reviews**.
|
|
108
|
-
- **Add tests**. There can never be enough tests.
|
|
109
|
-
|
|
110
|
-
Please be aware that all interactions related to libp2p are subject to the IPFS [Code of Conduct](https://github.com/ipfs/community/blob/master/code-of-conduct.md).
|
|
111
|
-
|
|
112
|
-
Small note: If editing the README, please conform to the [standard-readme](https://github.com/RichardLitt/standard-readme) specification.
|
|
113
|
-
|
|
114
|
-
## Contribute
|
|
115
|
-
|
|
116
|
-
The libp2p implementation in JavaScript is a work in progress. As such, there are a few things you can do right now to help out:
|
|
74
|
+
## API Docs
|
|
117
75
|
|
|
118
|
-
-
|
|
119
|
-
- **Perform code reviews**. More eyes will help a) speed the project along b) ensure quality and c) reduce possible future bugs.
|
|
76
|
+
- <https://libp2p.github.io/js-libp2p-tcp>
|
|
120
77
|
|
|
121
78
|
## License
|
|
122
79
|
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
(function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Libp2PTcp = factory()}(typeof self !== 'undefined' ? self : this, function () {
|
|
2
|
+
"use strict";var Libp2PTcp=(()=>{var Pi=Object.create;var Se=Object.defineProperty;var Fi=Object.getOwnPropertyDescriptor;var ki=Object.getOwnPropertyNames;var Ni=Object.getPrototypeOf,Ui=Object.prototype.hasOwnProperty;var dt=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(t,e)=>(typeof require<"u"?require:t)[e]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+r+'" is not supported')});var F=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports),rt=(r,t)=>{for(var e in t)Se(r,e,{get:t[e],enumerable:!0})},yn=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of ki(t))!Ui.call(r,i)&&i!==e&&Se(r,i,{get:()=>t[i],enumerable:!(n=Fi(t,i))||n.enumerable});return r};var k=(r,t,e)=>(e=r!=null?Pi(Ni(r)):{},yn(t||!r||!r.__esModule?Se(e,"default",{value:r,enumerable:!0}):e,r)),Li=r=>yn(Se({},"__esModule",{value:!0}),r);var jn=F((Ef,$n)=>{$n.exports=Ir;var Ln=128,Ka=127,Qa=~Ka,tc=Math.pow(2,31);function Ir(r,t,e){if(Number.MAX_SAFE_INTEGER&&r>Number.MAX_SAFE_INTEGER)throw Ir.bytes=0,new RangeError("Could not encode varint");t=t||[],e=e||0;for(var n=e;r>=tc;)t[e++]=r&255|Ln,r/=128;for(;r&Qa;)t[e++]=r&255|Ln,r>>>=7;return t[e]=r|0,Ir.bytes=e-n+1,t}});var qn=F((Cf,zn)=>{zn.exports=Br;var ec=128,Vn=127;function Br(r,n){var e=0,n=n||0,i=0,u=n,l,d=r.length;do{if(u>=d||i>49)throw Br.bytes=0,new RangeError("Could not decode varint");l=r[u++],e+=i<28?(l&Vn)<<i:(l&Vn)*Math.pow(2,i),i+=7}while(l>=ec);return Br.bytes=u-n,e}});var Zn=F((Af,Gn)=>{var rc=Math.pow(2,7),nc=Math.pow(2,14),sc=Math.pow(2,21),oc=Math.pow(2,28),ic=Math.pow(2,35),ac=Math.pow(2,42),cc=Math.pow(2,49),uc=Math.pow(2,56),fc=Math.pow(2,63);Gn.exports=function(r){return r<rc?1:r<nc?2:r<sc?3:r<oc?4:r<ic?5:r<ac?6:r<cc?7:r<uc?8:r<fc?9:10}});var Re=F((If,Hn)=>{Hn.exports={encode:jn(),decode:qn(),encodingLength:Zn()}});var fe=F((Hf,rs)=>{"use strict";function es(r,t){for(let e in t)Object.defineProperty(r,e,{value:t[e],enumerable:!0,configurable:!0});return r}function Ic(r,t,e){if(!r||typeof r=="string")throw new TypeError("Please pass an Error to err-code");e||(e={}),typeof t=="object"&&(e=t,t=""),t&&(e.code=t);try{return es(r,e)}catch{e.message=r.message,e.stack=r.stack;let i=function(){};return i.prototype=Object.create(Object.getPrototypeOf(r)),es(new i,e)}}rs.exports=Ic});var ms=F((ol,ds)=>{var Jt=1e3,Yt=Jt*60,Kt=Yt*60,kt=Kt*24,Uc=kt*7,Lc=kt*365.25;ds.exports=function(r,t){t=t||{};var e=typeof r;if(e==="string"&&r.length>0)return $c(r);if(e==="number"&&isFinite(r))return t.long?Vc(r):jc(r);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(r))};function $c(r){if(r=String(r),!(r.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(r);if(t){var e=parseFloat(t[1]),n=(t[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return e*Lc;case"weeks":case"week":case"w":return e*Uc;case"days":case"day":case"d":return e*kt;case"hours":case"hour":case"hrs":case"hr":case"h":return e*Kt;case"minutes":case"minute":case"mins":case"min":case"m":return e*Yt;case"seconds":case"second":case"secs":case"sec":case"s":return e*Jt;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return e;default:return}}}}function jc(r){var t=Math.abs(r);return t>=kt?Math.round(r/kt)+"d":t>=Kt?Math.round(r/Kt)+"h":t>=Yt?Math.round(r/Yt)+"m":t>=Jt?Math.round(r/Jt)+"s":r+"ms"}function Vc(r){var t=Math.abs(r);return t>=kt?Pe(r,t,kt,"day"):t>=Kt?Pe(r,t,Kt,"hour"):t>=Yt?Pe(r,t,Yt,"minute"):t>=Jt?Pe(r,t,Jt,"second"):r+" ms"}function Pe(r,t,e,n){var i=t>=e*1.5;return Math.round(r/e)+" "+n+(i?"s":"")}});var jr=F((il,gs)=>{function zc(r){e.debug=e,e.default=e,e.coerce=b,e.disable=u,e.enable=i,e.enabled=l,e.humanize=ms(),e.destroy=A,Object.keys(r).forEach(f=>{e[f]=r[f]}),e.names=[],e.skips=[],e.formatters={};function t(f){let w=0;for(let v=0;v<f.length;v++)w=(w<<5)-w+f.charCodeAt(v),w|=0;return e.colors[Math.abs(w)%e.colors.length]}e.selectColor=t;function e(f){let w,v=null,x,m;function C(...B){if(!C.enabled)return;let S=C,I=Number(new Date),P=I-(w||I);S.diff=P,S.prev=w,S.curr=I,w=I,B[0]=e.coerce(B[0]),typeof B[0]!="string"&&B.unshift("%O");let U=0;B[0]=B[0].replace(/%([a-zA-Z%])/g,(J,W)=>{if(J==="%%")return"%";U++;let Y=e.formatters[W];if(typeof Y=="function"){let at=B[U];J=Y.call(S,at),B.splice(U,1),U--}return J}),e.formatArgs.call(S,B),(S.log||e.log).apply(S,B)}return C.namespace=f,C.useColors=e.useColors(),C.color=e.selectColor(f),C.extend=n,C.destroy=e.destroy,Object.defineProperty(C,"enabled",{enumerable:!0,configurable:!1,get:()=>v!==null?v:(x!==e.namespaces&&(x=e.namespaces,m=e.enabled(f)),m),set:B=>{v=B}}),typeof e.init=="function"&&e.init(C),C}function n(f,w){let v=e(this.namespace+(typeof w>"u"?":":w)+f);return v.log=this.log,v}function i(f){e.save(f),e.namespaces=f,e.names=[],e.skips=[];let w,v=(typeof f=="string"?f:"").split(/[\s,]+/),x=v.length;for(w=0;w<x;w++)v[w]&&(f=v[w].replace(/\*/g,".*?"),f[0]==="-"?e.skips.push(new RegExp("^"+f.slice(1)+"$")):e.names.push(new RegExp("^"+f+"$")))}function u(){let f=[...e.names.map(d),...e.skips.map(d).map(w=>"-"+w)].join(",");return e.enable(""),f}function l(f){if(f[f.length-1]==="*")return!0;let w,v;for(w=0,v=e.skips.length;w<v;w++)if(e.skips[w].test(f))return!1;for(w=0,v=e.names.length;w<v;w++)if(e.names[w].test(f))return!0;return!1}function d(f){return f.toString().substring(2,f.toString().length-2).replace(/\.\*\?$/,"*")}function b(f){return f instanceof Error?f.stack||f.message:f}function A(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return e.enable(e.load()),e}gs.exports=zc});var bs=F((nt,Fe)=>{nt.formatArgs=Gc;nt.save=Zc;nt.load=Hc;nt.useColors=qc;nt.storage=Wc();nt.destroy=(()=>{let r=!1;return()=>{r||(r=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();nt.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function qc(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function Gc(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+Fe.exports.humanize(this.diff),!this.useColors)return;let t="color: "+this.color;r.splice(1,0,t,"color: inherit");let e=0,n=0;r[0].replace(/%[a-zA-Z%]/g,i=>{i!=="%%"&&(e++,i==="%c"&&(n=e))}),r.splice(n,0,t)}nt.log=console.debug||console.log||(()=>{});function Zc(r){try{r?nt.storage.setItem("debug",r):nt.storage.removeItem("debug")}catch{}}function Hc(){let r;try{r=nt.storage.getItem("debug")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function Wc(){try{return localStorage}catch{}}Fe.exports=jr()(nt);var{formatters:Xc}=Fe.exports;Xc.j=function(r){try{return JSON.stringify(r)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}});var ws=F((al,ys)=>{"use strict";ys.exports=(r,t=process.argv)=>{let e=r.startsWith("-")?"":r.length===1?"-":"--",n=t.indexOf(e+r),i=t.indexOf("--");return n!==-1&&(i===-1||n<i)}});var xs=F((cl,Ts)=>{"use strict";var Jc=dt("os"),vs=dt("tty"),it=ws(),{env:j}=process,Rt;it("no-color")||it("no-colors")||it("color=false")||it("color=never")?Rt=0:(it("color")||it("colors")||it("color=true")||it("color=always"))&&(Rt=1);"FORCE_COLOR"in j&&(j.FORCE_COLOR==="true"?Rt=1:j.FORCE_COLOR==="false"?Rt=0:Rt=j.FORCE_COLOR.length===0?1:Math.min(parseInt(j.FORCE_COLOR,10),3));function Vr(r){return r===0?!1:{level:r,hasBasic:!0,has256:r>=2,has16m:r>=3}}function zr(r,t){if(Rt===0)return 0;if(it("color=16m")||it("color=full")||it("color=truecolor"))return 3;if(it("color=256"))return 2;if(r&&!t&&Rt===void 0)return 0;let e=Rt||0;if(j.TERM==="dumb")return e;if(process.platform==="win32"){let n=Jc.release().split(".");return Number(n[0])>=10&&Number(n[2])>=10586?Number(n[2])>=14931?3:2:1}if("CI"in j)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(n=>n in j)||j.CI_NAME==="codeship"?1:e;if("TEAMCITY_VERSION"in j)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(j.TEAMCITY_VERSION)?1:0;if(j.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in j){let n=parseInt((j.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(j.TERM_PROGRAM){case"iTerm.app":return n>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(j.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(j.TERM)||"COLORTERM"in j?1:e}function Yc(r){let t=zr(r,r&&r.isTTY);return Vr(t)}Ts.exports={supportsColor:Yc,stdout:Vr(zr(!0,vs.isatty(1))),stderr:Vr(zr(!0,vs.isatty(2)))}});var Es=F((V,Ne)=>{var Kc=dt("tty"),ke=dt("util");V.init=ou;V.log=ru;V.formatArgs=tu;V.save=nu;V.load=su;V.useColors=Qc;V.destroy=ke.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");V.colors=[6,2,3,4,5,1];try{let r=xs();r&&(r.stderr||r).level>=2&&(V.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}V.inspectOpts=Object.keys(process.env).filter(r=>/^debug_/i.test(r)).reduce((r,t)=>{let e=t.substring(6).toLowerCase().replace(/_([a-z])/g,(i,u)=>u.toUpperCase()),n=process.env[t];return/^(yes|on|true|enabled)$/i.test(n)?n=!0:/^(no|off|false|disabled)$/i.test(n)?n=!1:n==="null"?n=null:n=Number(n),r[e]=n,r},{});function Qc(){return"colors"in V.inspectOpts?Boolean(V.inspectOpts.colors):Kc.isatty(process.stderr.fd)}function tu(r){let{namespace:t,useColors:e}=this;if(e){let n=this.color,i="\x1B[3"+(n<8?n:"8;5;"+n),u=` ${i};1m${t} \x1B[0m`;r[0]=u+r[0].split(`
|
|
3
|
+
`).join(`
|
|
4
|
+
`+u),r.push(i+"m+"+Ne.exports.humanize(this.diff)+"\x1B[0m")}else r[0]=eu()+t+" "+r[0]}function eu(){return V.inspectOpts.hideDate?"":new Date().toISOString()+" "}function ru(...r){return process.stderr.write(ke.format(...r)+`
|
|
5
|
+
`)}function nu(r){r?process.env.DEBUG=r:delete process.env.DEBUG}function su(){return process.env.DEBUG}function ou(r){r.inspectOpts={};let t=Object.keys(V.inspectOpts);for(let e=0;e<t.length;e++)r.inspectOpts[t[e]]=V.inspectOpts[t[e]]}Ne.exports=jr()(V);var{formatters:Ss}=Ne.exports;Ss.o=function(r){return this.inspectOpts.colors=this.useColors,ke.inspect(r,this.inspectOpts).split(`
|
|
6
|
+
`).map(t=>t.trim()).join(" ")};Ss.O=function(r){return this.inspectOpts.colors=this.useColors,ke.inspect(r,this.inspectOpts)}});var Cs=F((ul,qr)=>{typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?qr.exports=bs():qr.exports=Es()});var Ue=F((dl,As)=>{As.exports=r=>{if(r[Symbol.asyncIterator])return r;if(r.getReader)return async function*(){let t=r.getReader();try{for(;;){let{done:e,value:n}=await t.read();if(e)return;yield n}}finally{t.releaseLock()}}();throw new Error("unknown stream")}});var Bs=F((ml,Is)=>{Is.exports=function(t){if(t){if(typeof t[Symbol.iterator]=="function")return t[Symbol.iterator]();if(typeof t[Symbol.asyncIterator]=="function")return t[Symbol.asyncIterator]();if(typeof t.next=="function")return t}throw new Error("argument is not an iterator or iterable")}});var Gr=F((gl,Rs)=>{var iu=Bs();Rs.exports=r=>async t=>{t=iu(t);let e=S=>{typeof S.return=="function"&&S.return()},n=null,i=null,u=S=>{n=S,i&&i(S),e(t)},l=null,d=!1,b=()=>{d=!0,l&&l()},A=null,f=!1,w=()=>{f=!0,A&&A()},v=null,x=()=>{v&&v()},m=()=>new Promise((S,I)=>{l=v=S,i=I,r.once("drain",x)}),C=()=>(e(t),new Promise((S,I)=>{if(d||f||n)return S();A=l=S,i=I})),B=()=>{r.removeListener("error",u),r.removeListener("close",b),r.removeListener("finish",w),r.removeListener("drain",x)};r.once("error",u),r.once("close",b),r.once("finish",w);try{for await(let S of t){if(!r.writable||r.destroyed||n)break;r.write(S)===!1&&await m()}}catch(S){n||r.destroy(),n=S}try{if(r.writable&&r.end(),await C(),n)throw n}finally{B()}}});var Zr=F((bl,Ms)=>{var au=Gr(),cu=Ue();Ms.exports=r=>({sink:au(r),source:cu(r)})});var Os=F((yl,Ds)=>{var uu=Zr();Ds.exports=r=>async function*(t){let e=uu(r),n;if(e.sink(t).catch(i=>{n=i}),yield*e.source,n)throw n}});var _s=F((wl,Qt)=>{Qt.exports=Ue();Qt.exports.source=Ue();Qt.exports.sink=Gr();Qt.exports.transform=Os();Qt.exports.duplex=Zr()});var Wr=F((je,ks)=>{(function(){var r,t=0xdeadbeefcafe,e=(t&16777215)==15715070;function n(s,o,a){s!=null&&(typeof s=="number"?this.fromNumber(s,o,a):o==null&&typeof s!="string"?this.fromString(s,256):this.fromString(s,o))}function i(){return new n(null)}function u(s,o,a,c,p,h){for(;--h>=0;){var g=o*this[s++]+a[c]+p;p=Math.floor(g/67108864),a[c++]=g&67108863}return p}function l(s,o,a,c,p,h){for(var g=o&32767,y=o>>15;--h>=0;){var R=this[s]&32767,$=this[s++]>>15,st=y*R+$*g;R=g*R+((st&32767)<<15)+a[c]+(p&1073741823),p=(R>>>30)+(st>>>15)+y*$+(p>>>30),a[c++]=R&1073741823}return p}function d(s,o,a,c,p,h){for(var g=o&16383,y=o>>14;--h>=0;){var R=this[s]&16383,$=this[s++]>>14,st=y*R+$*g;R=g*R+((st&16383)<<14)+a[c]+p,p=(R>>28)+(st>>14)+y*$,a[c++]=R&268435455}return p}var b=typeof navigator<"u";b&&e&&navigator.appName=="Microsoft Internet Explorer"?(n.prototype.am=l,r=30):b&&e&&navigator.appName!="Netscape"?(n.prototype.am=u,r=26):(n.prototype.am=d,r=28),n.prototype.DB=r,n.prototype.DM=(1<<r)-1,n.prototype.DV=1<<r;var A=52;n.prototype.FV=Math.pow(2,A),n.prototype.F1=A-r,n.prototype.F2=2*r-A;var f="0123456789abcdefghijklmnopqrstuvwxyz",w=new Array,v,x;for(v="0".charCodeAt(0),x=0;x<=9;++x)w[v++]=x;for(v="a".charCodeAt(0),x=10;x<36;++x)w[v++]=x;for(v="A".charCodeAt(0),x=10;x<36;++x)w[v++]=x;function m(s){return f.charAt(s)}function C(s,o){var a=w[s.charCodeAt(o)];return a??-1}function B(s){for(var o=this.t-1;o>=0;--o)s[o]=this[o];s.t=this.t,s.s=this.s}function S(s){this.t=1,this.s=s<0?-1:0,s>0?this[0]=s:s<-1?this[0]=s+this.DV:this.t=0}function I(s){var o=i();return o.fromInt(s),o}function P(s,o){var a;if(o==16)a=4;else if(o==8)a=3;else if(o==256)a=8;else if(o==2)a=1;else if(o==32)a=5;else if(o==4)a=2;else{this.fromRadix(s,o);return}this.t=0,this.s=0;for(var c=s.length,p=!1,h=0;--c>=0;){var g=a==8?s[c]&255:C(s,c);if(g<0){s.charAt(c)=="-"&&(p=!0);continue}p=!1,h==0?this[this.t++]=g:h+a>this.DB?(this[this.t-1]|=(g&(1<<this.DB-h)-1)<<h,this[this.t++]=g>>this.DB-h):this[this.t-1]|=g<<h,h+=a,h>=this.DB&&(h-=this.DB)}a==8&&s[0]&128&&(this.s=-1,h>0&&(this[this.t-1]|=(1<<this.DB-h)-1<<h)),this.clamp(),p&&n.ZERO.subTo(this,this)}function U(){for(var s=this.s&this.DM;this.t>0&&this[this.t-1]==s;)--this.t}function Q(s){if(this.s<0)return"-"+this.negate().toString(s);var o;if(s==16)o=4;else if(s==8)o=3;else if(s==2)o=1;else if(s==32)o=5;else if(s==4)o=2;else return this.toRadix(s);var a=(1<<o)-1,c,p=!1,h="",g=this.t,y=this.DB-g*this.DB%o;if(g-- >0)for(y<this.DB&&(c=this[g]>>y)>0&&(p=!0,h=m(c));g>=0;)y<o?(c=(this[g]&(1<<y)-1)<<o-y,c|=this[--g]>>(y+=this.DB-o)):(c=this[g]>>(y-=o)&a,y<=0&&(y+=this.DB,--g)),c>0&&(p=!0),p&&(h+=m(c));return p?h:"0"}function J(){var s=i();return n.ZERO.subTo(this,s),s}function W(){return this.s<0?this.negate():this}function Y(s){var o=this.s-s.s;if(o!=0)return o;var a=this.t;if(o=a-s.t,o!=0)return this.s<0?-o:o;for(;--a>=0;)if((o=this[a]-s[a])!=0)return o;return 0}function at(s){var o=1,a;return(a=s>>>16)!=0&&(s=a,o+=16),(a=s>>8)!=0&&(s=a,o+=8),(a=s>>4)!=0&&(s=a,o+=4),(a=s>>2)!=0&&(s=a,o+=2),(a=s>>1)!=0&&(s=a,o+=1),o}function Qs(){return this.t<=0?0:this.DB*(this.t-1)+at(this[this.t-1]^this.s&this.DM)}function to(s,o){var a;for(a=this.t-1;a>=0;--a)o[a+s]=this[a];for(a=s-1;a>=0;--a)o[a]=0;o.t=this.t+s,o.s=this.s}function eo(s,o){for(var a=s;a<this.t;++a)o[a-s]=this[a];o.t=Math.max(this.t-s,0),o.s=this.s}function ro(s,o){var a=s%this.DB,c=this.DB-a,p=(1<<c)-1,h=Math.floor(s/this.DB),g=this.s<<a&this.DM,y;for(y=this.t-1;y>=0;--y)o[y+h+1]=this[y]>>c|g,g=(this[y]&p)<<a;for(y=h-1;y>=0;--y)o[y]=0;o[h]=g,o.t=this.t+h+1,o.s=this.s,o.clamp()}function no(s,o){o.s=this.s;var a=Math.floor(s/this.DB);if(a>=this.t){o.t=0;return}var c=s%this.DB,p=this.DB-c,h=(1<<c)-1;o[0]=this[a]>>c;for(var g=a+1;g<this.t;++g)o[g-a-1]|=(this[g]&h)<<p,o[g-a]=this[g]>>c;c>0&&(o[this.t-a-1]|=(this.s&h)<<p),o.t=this.t-a,o.clamp()}function so(s,o){for(var a=0,c=0,p=Math.min(s.t,this.t);a<p;)c+=this[a]-s[a],o[a++]=c&this.DM,c>>=this.DB;if(s.t<this.t){for(c-=s.s;a<this.t;)c+=this[a],o[a++]=c&this.DM,c>>=this.DB;c+=this.s}else{for(c+=this.s;a<s.t;)c-=s[a],o[a++]=c&this.DM,c>>=this.DB;c-=s.s}o.s=c<0?-1:0,c<-1?o[a++]=this.DV+c:c>0&&(o[a++]=c),o.t=a,o.clamp()}function oo(s,o){var a=this.abs(),c=s.abs(),p=a.t;for(o.t=p+c.t;--p>=0;)o[p]=0;for(p=0;p<c.t;++p)o[p+a.t]=a.am(0,c[p],o,p,0,a.t);o.s=0,o.clamp(),this.s!=s.s&&n.ZERO.subTo(o,o)}function io(s){for(var o=this.abs(),a=s.t=2*o.t;--a>=0;)s[a]=0;for(a=0;a<o.t-1;++a){var c=o.am(a,o[a],s,2*a,0,1);(s[a+o.t]+=o.am(a+1,2*o[a],s,2*a+1,c,o.t-a-1))>=o.DV&&(s[a+o.t]-=o.DV,s[a+o.t+1]=1)}s.t>0&&(s[s.t-1]+=o.am(a,o[a],s,2*a,0,1)),s.s=0,s.clamp()}function ao(s,o,a){var c=s.abs();if(!(c.t<=0)){var p=this.abs();if(p.t<c.t){o?.fromInt(0),a!=null&&this.copyTo(a);return}a==null&&(a=i());var h=i(),g=this.s,y=s.s,R=this.DB-at(c[c.t-1]);R>0?(c.lShiftTo(R,h),p.lShiftTo(R,a)):(c.copyTo(h),p.copyTo(a));var $=h.t,st=h[$-1];if(st!=0){var et=st*(1<<this.F1)+($>1?h[$-2]>>this.F2:0),bt=this.FV/et,Te=(1<<this.F1)/et,ut=1<<this.F2,ft=a.t,xe=ft-$,Ct=o??i();for(h.dlShiftTo(xe,Ct),a.compareTo(Ct)>=0&&(a[a.t++]=1,a.subTo(Ct,a)),n.ONE.dlShiftTo($,Ct),Ct.subTo(h,h);h.t<$;)h[h.t++]=0;for(;--xe>=0;){var er=a[--ft]==st?this.DM:Math.floor(a[ft]*bt+(a[ft-1]+ut)*Te);if((a[ft]+=h.am(0,er,a,xe,0,$))<er)for(h.dlShiftTo(xe,Ct),a.subTo(Ct,a);a[ft]<--er;)a.subTo(Ct,a)}o!=null&&(a.drShiftTo($,o),g!=y&&n.ZERO.subTo(o,o)),a.t=$,a.clamp(),R>0&&a.rShiftTo(R,a),g<0&&n.ZERO.subTo(a,a)}}}function co(s){var o=i();return this.abs().divRemTo(s,null,o),this.s<0&&o.compareTo(n.ZERO)>0&&s.subTo(o,o),o}function Dt(s){this.m=s}function uo(s){return s.s<0||s.compareTo(this.m)>=0?s.mod(this.m):s}function fo(s){return s}function lo(s){s.divRemTo(this.m,null,s)}function po(s,o,a){s.multiplyTo(o,a),this.reduce(a)}function ho(s,o){s.squareTo(o),this.reduce(o)}Dt.prototype.convert=uo,Dt.prototype.revert=fo,Dt.prototype.reduce=lo,Dt.prototype.mulTo=po,Dt.prototype.sqrTo=ho;function mo(){if(this.t<1)return 0;var s=this[0];if(!(s&1))return 0;var o=s&3;return o=o*(2-(s&15)*o)&15,o=o*(2-(s&255)*o)&255,o=o*(2-((s&65535)*o&65535))&65535,o=o*(2-s*o%this.DV)%this.DV,o>0?this.DV-o:-o}function Ot(s){this.m=s,this.mp=s.invDigit(),this.mpl=this.mp&32767,this.mph=this.mp>>15,this.um=(1<<s.DB-15)-1,this.mt2=2*s.t}function go(s){var o=i();return s.abs().dlShiftTo(this.m.t,o),o.divRemTo(this.m,null,o),s.s<0&&o.compareTo(n.ZERO)>0&&this.m.subTo(o,o),o}function bo(s){var o=i();return s.copyTo(o),this.reduce(o),o}function yo(s){for(;s.t<=this.mt2;)s[s.t++]=0;for(var o=0;o<this.m.t;++o){var a=s[o]&32767,c=a*this.mpl+((a*this.mph+(s[o]>>15)*this.mpl&this.um)<<15)&s.DM;for(a=o+this.m.t,s[a]+=this.m.am(0,c,s,o,0,this.m.t);s[a]>=s.DV;)s[a]-=s.DV,s[++a]++}s.clamp(),s.drShiftTo(this.m.t,s),s.compareTo(this.m)>=0&&s.subTo(this.m,s)}function wo(s,o){s.squareTo(o),this.reduce(o)}function vo(s,o,a){s.multiplyTo(o,a),this.reduce(a)}Ot.prototype.convert=go,Ot.prototype.revert=bo,Ot.prototype.reduce=yo,Ot.prototype.mulTo=vo,Ot.prototype.sqrTo=wo;function To(){return(this.t>0?this[0]&1:this.s)==0}function xo(s,o){if(s>4294967295||s<1)return n.ONE;var a=i(),c=i(),p=o.convert(this),h=at(s)-1;for(p.copyTo(a);--h>=0;)if(o.sqrTo(a,c),(s&1<<h)>0)o.mulTo(c,p,a);else{var g=a;a=c,c=g}return o.revert(a)}function So(s,o){var a;return s<256||o.isEven()?a=new Dt(o):a=new Ot(o),this.exp(s,a)}n.prototype.copyTo=B,n.prototype.fromInt=S,n.prototype.fromString=P,n.prototype.clamp=U,n.prototype.dlShiftTo=to,n.prototype.drShiftTo=eo,n.prototype.lShiftTo=ro,n.prototype.rShiftTo=no,n.prototype.subTo=so,n.prototype.multiplyTo=oo,n.prototype.squareTo=io,n.prototype.divRemTo=ao,n.prototype.invDigit=mo,n.prototype.isEven=To,n.prototype.exp=xo,n.prototype.toString=Q,n.prototype.negate=J,n.prototype.abs=W,n.prototype.compareTo=Y,n.prototype.bitLength=Qs,n.prototype.mod=co,n.prototype.modPowInt=So,n.ZERO=I(0),n.ONE=I(1);function Eo(){var s=i();return this.copyTo(s),s}function Co(){if(this.s<0){if(this.t==1)return this[0]-this.DV;if(this.t==0)return-1}else{if(this.t==1)return this[0];if(this.t==0)return 0}return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]}function Ao(){return this.t==0?this.s:this[0]<<24>>24}function Io(){return this.t==0?this.s:this[0]<<16>>16}function Bo(s){return Math.floor(Math.LN2*this.DB/Math.log(s))}function Ro(){return this.s<0?-1:this.t<=0||this.t==1&&this[0]<=0?0:1}function Mo(s){if(s==null&&(s=10),this.signum()==0||s<2||s>36)return"0";var o=this.chunkSize(s),a=Math.pow(s,o),c=I(a),p=i(),h=i(),g="";for(this.divRemTo(c,p,h);p.signum()>0;)g=(a+h.intValue()).toString(s).substr(1)+g,p.divRemTo(c,p,h);return h.intValue().toString(s)+g}function Do(s,o){this.fromInt(0),o==null&&(o=10);for(var a=this.chunkSize(o),c=Math.pow(o,a),p=!1,h=0,g=0,y=0;y<s.length;++y){var R=C(s,y);if(R<0){s.charAt(y)=="-"&&this.signum()==0&&(p=!0);continue}g=o*g+R,++h>=a&&(this.dMultiply(c),this.dAddOffset(g,0),h=0,g=0)}h>0&&(this.dMultiply(Math.pow(o,h)),this.dAddOffset(g,0)),p&&n.ZERO.subTo(this,this)}function Oo(s,o,a){if(typeof o=="number")if(s<2)this.fromInt(1);else for(this.fromNumber(s,a),this.testBit(s-1)||this.bitwiseTo(n.ONE.shiftLeft(s-1),Ye,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(o);)this.dAddOffset(2,0),this.bitLength()>s&&this.subTo(n.ONE.shiftLeft(s-1),this);else{var c=new Array,p=s&7;c.length=(s>>3)+1,o.nextBytes(c),p>0?c[0]&=(1<<p)-1:c[0]=0,this.fromString(c,256)}}function _o(){var s=this.t,o=new Array;o[0]=this.s;var a=this.DB-s*this.DB%8,c,p=0;if(s-- >0)for(a<this.DB&&(c=this[s]>>a)!=(this.s&this.DM)>>a&&(o[p++]=c|this.s<<this.DB-a);s>=0;)a<8?(c=(this[s]&(1<<a)-1)<<8-a,c|=this[--s]>>(a+=this.DB-8)):(c=this[s]>>(a-=8)&255,a<=0&&(a+=this.DB,--s)),c&128&&(c|=-256),p==0&&(this.s&128)!=(c&128)&&++p,(p>0||c!=this.s)&&(o[p++]=c);return o}function Po(s){return this.compareTo(s)==0}function Fo(s){return this.compareTo(s)<0?this:s}function ko(s){return this.compareTo(s)>0?this:s}function No(s,o,a){var c,p,h=Math.min(s.t,this.t);for(c=0;c<h;++c)a[c]=o(this[c],s[c]);if(s.t<this.t){for(p=s.s&this.DM,c=h;c<this.t;++c)a[c]=o(this[c],p);a.t=this.t}else{for(p=this.s&this.DM,c=h;c<s.t;++c)a[c]=o(p,s[c]);a.t=s.t}a.s=o(this.s,s.s),a.clamp()}function Uo(s,o){return s&o}function Lo(s){var o=i();return this.bitwiseTo(s,Uo,o),o}function Ye(s,o){return s|o}function $o(s){var o=i();return this.bitwiseTo(s,Ye,o),o}function pn(s,o){return s^o}function jo(s){var o=i();return this.bitwiseTo(s,pn,o),o}function hn(s,o){return s&~o}function Vo(s){var o=i();return this.bitwiseTo(s,hn,o),o}function zo(){for(var s=i(),o=0;o<this.t;++o)s[o]=this.DM&~this[o];return s.t=this.t,s.s=~this.s,s}function qo(s){var o=i();return s<0?this.rShiftTo(-s,o):this.lShiftTo(s,o),o}function Go(s){var o=i();return s<0?this.lShiftTo(-s,o):this.rShiftTo(s,o),o}function Zo(s){if(s==0)return-1;var o=0;return s&65535||(s>>=16,o+=16),s&255||(s>>=8,o+=8),s&15||(s>>=4,o+=4),s&3||(s>>=2,o+=2),s&1||++o,o}function Ho(){for(var s=0;s<this.t;++s)if(this[s]!=0)return s*this.DB+Zo(this[s]);return this.s<0?this.t*this.DB:-1}function Wo(s){for(var o=0;s!=0;)s&=s-1,++o;return o}function Xo(){for(var s=0,o=this.s&this.DM,a=0;a<this.t;++a)s+=Wo(this[a]^o);return s}function Jo(s){var o=Math.floor(s/this.DB);return o>=this.t?this.s!=0:(this[o]&1<<s%this.DB)!=0}function Yo(s,o){var a=n.ONE.shiftLeft(s);return this.bitwiseTo(a,o,a),a}function Ko(s){return this.changeBit(s,Ye)}function Qo(s){return this.changeBit(s,hn)}function ti(s){return this.changeBit(s,pn)}function ei(s,o){for(var a=0,c=0,p=Math.min(s.t,this.t);a<p;)c+=this[a]+s[a],o[a++]=c&this.DM,c>>=this.DB;if(s.t<this.t){for(c+=s.s;a<this.t;)c+=this[a],o[a++]=c&this.DM,c>>=this.DB;c+=this.s}else{for(c+=this.s;a<s.t;)c+=s[a],o[a++]=c&this.DM,c>>=this.DB;c+=s.s}o.s=c<0?-1:0,c>0?o[a++]=c:c<-1&&(o[a++]=this.DV+c),o.t=a,o.clamp()}function ri(s){var o=i();return this.addTo(s,o),o}function ni(s){var o=i();return this.subTo(s,o),o}function si(s){var o=i();return this.multiplyTo(s,o),o}function oi(){var s=i();return this.squareTo(s),s}function ii(s){var o=i();return this.divRemTo(s,o,null),o}function ai(s){var o=i();return this.divRemTo(s,null,o),o}function ci(s){var o=i(),a=i();return this.divRemTo(s,o,a),new Array(o,a)}function ui(s){this[this.t]=this.am(0,s-1,this,0,0,this.t),++this.t,this.clamp()}function fi(s,o){if(s!=0){for(;this.t<=o;)this[this.t++]=0;for(this[o]+=s;this[o]>=this.DV;)this[o]-=this.DV,++o>=this.t&&(this[this.t++]=0),++this[o]}}function se(){}function dn(s){return s}function li(s,o,a){s.multiplyTo(o,a)}function pi(s,o){s.squareTo(o)}se.prototype.convert=dn,se.prototype.revert=dn,se.prototype.mulTo=li,se.prototype.sqrTo=pi;function hi(s){return this.exp(s,new se)}function di(s,o,a){var c=Math.min(this.t+s.t,o);for(a.s=0,a.t=c;c>0;)a[--c]=0;var p;for(p=a.t-this.t;c<p;++c)a[c+this.t]=this.am(0,s[c],a,c,0,this.t);for(p=Math.min(s.t,o);c<p;++c)this.am(0,s[c],a,c,0,o-c);a.clamp()}function mi(s,o,a){--o;var c=a.t=this.t+s.t-o;for(a.s=0;--c>=0;)a[c]=0;for(c=Math.max(o-this.t,0);c<s.t;++c)a[this.t+c-o]=this.am(o-c,s[c],a,0,0,this.t+c-o);a.clamp(),a.drShiftTo(1,a)}function _t(s){this.r2=i(),this.q3=i(),n.ONE.dlShiftTo(2*s.t,this.r2),this.mu=this.r2.divide(s),this.m=s}function gi(s){if(s.s<0||s.t>2*this.m.t)return s.mod(this.m);if(s.compareTo(this.m)<0)return s;var o=i();return s.copyTo(o),this.reduce(o),o}function bi(s){return s}function yi(s){for(s.drShiftTo(this.m.t-1,this.r2),s.t>this.m.t+1&&(s.t=this.m.t+1,s.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);s.compareTo(this.r2)<0;)s.dAddOffset(1,this.m.t+1);for(s.subTo(this.r2,s);s.compareTo(this.m)>=0;)s.subTo(this.m,s)}function wi(s,o){s.squareTo(o),this.reduce(o)}function vi(s,o,a){s.multiplyTo(o,a),this.reduce(a)}_t.prototype.convert=gi,_t.prototype.revert=bi,_t.prototype.reduce=yi,_t.prototype.mulTo=vi,_t.prototype.sqrTo=wi;function Ti(s,o){var a=s.bitLength(),c,p=I(1),h;if(a<=0)return p;a<18?c=1:a<48?c=3:a<144?c=4:a<768?c=5:c=6,a<8?h=new Dt(o):o.isEven()?h=new _t(o):h=new Ot(o);var g=new Array,y=3,R=c-1,$=(1<<c)-1;if(g[1]=h.convert(this),c>1){var st=i();for(h.sqrTo(g[1],st);y<=$;)g[y]=i(),h.mulTo(st,g[y-2],g[y]),y+=2}var et=s.t-1,bt,Te=!0,ut=i(),ft;for(a=at(s[et])-1;et>=0;){for(a>=R?bt=s[et]>>a-R&$:(bt=(s[et]&(1<<a+1)-1)<<R-a,et>0&&(bt|=s[et-1]>>this.DB+a-R)),y=c;!(bt&1);)bt>>=1,--y;if((a-=y)<0&&(a+=this.DB,--et),Te)g[bt].copyTo(p),Te=!1;else{for(;y>1;)h.sqrTo(p,ut),h.sqrTo(ut,p),y-=2;y>0?h.sqrTo(p,ut):(ft=p,p=ut,ut=ft),h.mulTo(ut,g[bt],p)}for(;et>=0&&!(s[et]&1<<a);)h.sqrTo(p,ut),ft=p,p=ut,ut=ft,--a<0&&(a=this.DB-1,--et)}return h.revert(p)}function xi(s){var o=this.s<0?this.negate():this.clone(),a=s.s<0?s.negate():s.clone();if(o.compareTo(a)<0){var c=o;o=a,a=c}var p=o.getLowestSetBit(),h=a.getLowestSetBit();if(h<0)return o;for(p<h&&(h=p),h>0&&(o.rShiftTo(h,o),a.rShiftTo(h,a));o.signum()>0;)(p=o.getLowestSetBit())>0&&o.rShiftTo(p,o),(p=a.getLowestSetBit())>0&&a.rShiftTo(p,a),o.compareTo(a)>=0?(o.subTo(a,o),o.rShiftTo(1,o)):(a.subTo(o,a),a.rShiftTo(1,a));return h>0&&a.lShiftTo(h,a),a}function Si(s){if(s<=0)return 0;var o=this.DV%s,a=this.s<0?s-1:0;if(this.t>0)if(o==0)a=this[0]%s;else for(var c=this.t-1;c>=0;--c)a=(o*a+this[c])%s;return a}function Ei(s){var o=s.isEven();if(this.isEven()&&o||s.signum()==0)return n.ZERO;for(var a=s.clone(),c=this.clone(),p=I(1),h=I(0),g=I(0),y=I(1);a.signum()!=0;){for(;a.isEven();)a.rShiftTo(1,a),o?((!p.isEven()||!h.isEven())&&(p.addTo(this,p),h.subTo(s,h)),p.rShiftTo(1,p)):h.isEven()||h.subTo(s,h),h.rShiftTo(1,h);for(;c.isEven();)c.rShiftTo(1,c),o?((!g.isEven()||!y.isEven())&&(g.addTo(this,g),y.subTo(s,y)),g.rShiftTo(1,g)):y.isEven()||y.subTo(s,y),y.rShiftTo(1,y);a.compareTo(c)>=0?(a.subTo(c,a),o&&p.subTo(g,p),h.subTo(y,h)):(c.subTo(a,c),o&&g.subTo(p,g),y.subTo(h,y))}if(c.compareTo(n.ONE)!=0)return n.ZERO;if(y.compareTo(s)>=0)return y.subtract(s);if(y.signum()<0)y.addTo(s,y);else return y;return y.signum()<0?y.add(s):y}var X=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],Ci=(1<<26)/X[X.length-1];function Ai(s){var o,a=this.abs();if(a.t==1&&a[0]<=X[X.length-1]){for(o=0;o<X.length;++o)if(a[0]==X[o])return!0;return!1}if(a.isEven())return!1;for(o=1;o<X.length;){for(var c=X[o],p=o+1;p<X.length&&c<Ci;)c*=X[p++];for(c=a.modInt(c);o<p;)if(c%X[o++]==0)return!1}return a.millerRabin(s)}function Ii(s){var o=this.subtract(n.ONE),a=o.getLowestSetBit();if(a<=0)return!1;var c=o.shiftRight(a);s=s+1>>1,s>X.length&&(s=X.length);for(var p=i(),h=0;h<s;++h){p.fromInt(X[Math.floor(Math.random()*X.length)]);var g=p.modPow(c,this);if(g.compareTo(n.ONE)!=0&&g.compareTo(o)!=0){for(var y=1;y++<a&&g.compareTo(o)!=0;)if(g=g.modPowInt(2,this),g.compareTo(n.ONE)==0)return!1;if(g.compareTo(o)!=0)return!1}}return!0}n.prototype.chunkSize=Bo,n.prototype.toRadix=Mo,n.prototype.fromRadix=Do,n.prototype.fromNumber=Oo,n.prototype.bitwiseTo=No,n.prototype.changeBit=Yo,n.prototype.addTo=ei,n.prototype.dMultiply=ui,n.prototype.dAddOffset=fi,n.prototype.multiplyLowerTo=di,n.prototype.multiplyUpperTo=mi,n.prototype.modInt=Si,n.prototype.millerRabin=Ii,n.prototype.clone=Eo,n.prototype.intValue=Co,n.prototype.byteValue=Ao,n.prototype.shortValue=Io,n.prototype.signum=Ro,n.prototype.toByteArray=_o,n.prototype.equals=Po,n.prototype.min=Fo,n.prototype.max=ko,n.prototype.and=Lo,n.prototype.or=$o,n.prototype.xor=jo,n.prototype.andNot=Vo,n.prototype.not=zo,n.prototype.shiftLeft=qo,n.prototype.shiftRight=Go,n.prototype.getLowestSetBit=Ho,n.prototype.bitCount=Xo,n.prototype.testBit=Jo,n.prototype.setBit=Ko,n.prototype.clearBit=Qo,n.prototype.flipBit=ti,n.prototype.add=ri,n.prototype.subtract=ni,n.prototype.multiply=si,n.prototype.divide=ii,n.prototype.remainder=ai,n.prototype.divideAndRemainder=ci,n.prototype.modPow=Ti,n.prototype.modInverse=Ei,n.prototype.pow=hi,n.prototype.gcd=xi,n.prototype.isProbablePrime=Ai,n.prototype.square=oi,n.prototype.Barrett=_t;var ve,tt,L;function Bi(s){tt[L++]^=s&255,tt[L++]^=s>>8&255,tt[L++]^=s>>16&255,tt[L++]^=s>>24&255,L>=tr&&(L-=tr)}function mn(){Bi(new Date().getTime())}if(tt==null){tt=new Array,L=0;var ct;if(typeof window<"u"&&window.crypto){if(window.crypto.getRandomValues){var gn=new Uint8Array(32);for(window.crypto.getRandomValues(gn),ct=0;ct<32;++ct)tt[L++]=gn[ct]}else if(navigator.appName=="Netscape"&&navigator.appVersion<"5"){var bn=window.crypto.random(32);for(ct=0;ct<bn.length;++ct)tt[L++]=bn.charCodeAt(ct)&255}}for(;L<tr;)ct=Math.floor(65536*Math.random()),tt[L++]=ct>>>8,tt[L++]=ct&255;L=0,mn()}function Ri(){if(ve==null){for(mn(),ve=_i(),ve.init(tt),L=0;L<tt.length;++L)tt[L]=0;L=0}return ve.next()}function Mi(s){var o;for(o=0;o<s.length;++o)s[o]=Ri()}function Ke(){}Ke.prototype.nextBytes=Mi;function Qe(){this.i=0,this.j=0,this.S=new Array}function Di(s){var o,a,c;for(o=0;o<256;++o)this.S[o]=o;for(a=0,o=0;o<256;++o)a=a+this.S[o]+s[o%s.length]&255,c=this.S[o],this.S[o]=this.S[a],this.S[a]=c;this.i=0,this.j=0}function Oi(){var s;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,s=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=s,this.S[s+this.S[this.i]&255]}Qe.prototype.init=Di,Qe.prototype.next=Oi;function _i(){return new Qe}var tr=256;typeof je<"u"?je=ks.exports={default:n,BigInteger:n,SecureRandom:Ke}:this.jsbn={BigInteger:n,SecureRandom:Ke}}).call(je)});var ye=F(Ve=>{(function(){"use strict";var r={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function t(l){return n(u(l),arguments)}function e(l,d){return t.apply(null,[l].concat(d||[]))}function n(l,d){var b=1,A=l.length,f,w="",v,x,m,C,B,S,I,P;for(v=0;v<A;v++)if(typeof l[v]=="string")w+=l[v];else if(typeof l[v]=="object"){if(m=l[v],m.keys)for(f=d[b],x=0;x<m.keys.length;x++){if(f==null)throw new Error(t('[sprintf] Cannot access property "%s" of undefined value "%s"',m.keys[x],m.keys[x-1]));f=f[m.keys[x]]}else m.param_no?f=d[m.param_no]:f=d[b++];if(r.not_type.test(m.type)&&r.not_primitive.test(m.type)&&f instanceof Function&&(f=f()),r.numeric_arg.test(m.type)&&typeof f!="number"&&isNaN(f))throw new TypeError(t("[sprintf] expecting number but found %T",f));switch(r.number.test(m.type)&&(I=f>=0),m.type){case"b":f=parseInt(f,10).toString(2);break;case"c":f=String.fromCharCode(parseInt(f,10));break;case"d":case"i":f=parseInt(f,10);break;case"j":f=JSON.stringify(f,null,m.width?parseInt(m.width):0);break;case"e":f=m.precision?parseFloat(f).toExponential(m.precision):parseFloat(f).toExponential();break;case"f":f=m.precision?parseFloat(f).toFixed(m.precision):parseFloat(f);break;case"g":f=m.precision?String(Number(f.toPrecision(m.precision))):parseFloat(f);break;case"o":f=(parseInt(f,10)>>>0).toString(8);break;case"s":f=String(f),f=m.precision?f.substring(0,m.precision):f;break;case"t":f=String(!!f),f=m.precision?f.substring(0,m.precision):f;break;case"T":f=Object.prototype.toString.call(f).slice(8,-1).toLowerCase(),f=m.precision?f.substring(0,m.precision):f;break;case"u":f=parseInt(f,10)>>>0;break;case"v":f=f.valueOf(),f=m.precision?f.substring(0,m.precision):f;break;case"x":f=(parseInt(f,10)>>>0).toString(16);break;case"X":f=(parseInt(f,10)>>>0).toString(16).toUpperCase();break}r.json.test(m.type)?w+=f:(r.number.test(m.type)&&(!I||m.sign)?(P=I?"+":"-",f=f.toString().replace(r.sign,"")):P="",B=m.pad_char?m.pad_char==="0"?"0":m.pad_char.charAt(1):" ",S=m.width-(P+f).length,C=m.width&&S>0?B.repeat(S):"",w+=m.align?P+f+C:B==="0"?P+C+f:C+P+f)}return w}var i=Object.create(null);function u(l){if(i[l])return i[l];for(var d=l,b,A=[],f=0;d;){if((b=r.text.exec(d))!==null)A.push(b[0]);else if((b=r.modulo.exec(d))!==null)A.push("%");else if((b=r.placeholder.exec(d))!==null){if(b[2]){f|=1;var w=[],v=b[2],x=[];if((x=r.key.exec(v))!==null)for(w.push(x[1]);(v=v.substring(x[0].length))!=="";)if((x=r.key_access.exec(v))!==null)w.push(x[1]);else if((x=r.index_access.exec(v))!==null)w.push(x[1]);else throw new SyntaxError("[sprintf] failed to parse named argument key");else throw new SyntaxError("[sprintf] failed to parse named argument key");b[2]=w}else f|=2;if(f===3)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");A.push({placeholder:b[0],param_no:b[1],keys:b[2],sign:b[3],pad_char:b[4],align:b[5],width:b[6],precision:b[7],type:b[8]})}else throw new SyntaxError("[sprintf] unexpected placeholder");d=d.substring(b[0].length)}return i[l]=A}typeof Ve<"u"&&(Ve.sprintf=t,Ve.vsprintf=e),typeof window<"u"&&(window.sprintf=t,window.vsprintf=e,typeof define=="function"&&define.amd&&define(function(){return{sprintf:t,vsprintf:e}}))})()});var Au={};rt(Au,{tcp:()=>Cu});var Ys=k(dt("net"),1);var At=dt("node:net");function Ee(r){return Boolean((0,At.isIP)(r))}var ir={};rt(ir,{identity:()=>Gi});function $i(r,t){if(r.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),n=0;n<e.length;n++)e[n]=255;for(var i=0;i<r.length;i++){var u=r.charAt(i),l=u.charCodeAt(0);if(e[l]!==255)throw new TypeError(u+" is ambiguous");e[l]=i}var d=r.length,b=r.charAt(0),A=Math.log(d)/Math.log(256),f=Math.log(256)/Math.log(d);function w(m){if(m instanceof Uint8Array||(ArrayBuffer.isView(m)?m=new Uint8Array(m.buffer,m.byteOffset,m.byteLength):Array.isArray(m)&&(m=Uint8Array.from(m))),!(m instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(m.length===0)return"";for(var C=0,B=0,S=0,I=m.length;S!==I&&m[S]===0;)S++,C++;for(var P=(I-S)*f+1>>>0,U=new Uint8Array(P);S!==I;){for(var Q=m[S],J=0,W=P-1;(Q!==0||J<B)&&W!==-1;W--,J++)Q+=256*U[W]>>>0,U[W]=Q%d>>>0,Q=Q/d>>>0;if(Q!==0)throw new Error("Non-zero carry");B=J,S++}for(var Y=P-B;Y!==P&&U[Y]===0;)Y++;for(var at=b.repeat(C);Y<P;++Y)at+=r.charAt(U[Y]);return at}function v(m){if(typeof m!="string")throw new TypeError("Expected String");if(m.length===0)return new Uint8Array;var C=0;if(m[C]!==" "){for(var B=0,S=0;m[C]===b;)B++,C++;for(var I=(m.length-C)*A+1>>>0,P=new Uint8Array(I);m[C];){var U=e[m.charCodeAt(C)];if(U===255)return;for(var Q=0,J=I-1;(U!==0||Q<S)&&J!==-1;J--,Q++)U+=d*P[J]>>>0,P[J]=U%256>>>0,U=U/256>>>0;if(U!==0)throw new Error("Non-zero carry");S=Q,C++}if(m[C]!==" "){for(var W=I-S;W!==I&&P[W]===0;)W++;for(var Y=new Uint8Array(B+(I-W)),at=B;W!==I;)Y[at++]=P[W++];return Y}}}function x(m){var C=v(m);if(C)return C;throw new Error(`Non-${t} character`)}return{encode:w,decodeUnsafe:v,decode:x}}var ji=$i,Vi=ji,wn=Vi;var Mu=new Uint8Array(0);var vn=(r,t)=>{if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0},ot=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")};var Tn=r=>new TextEncoder().encode(r),xn=r=>new TextDecoder().decode(r);var rr=class{constructor(t,e,n){this.name=t,this.prefix=e,this.baseEncode=n}encode(t){if(t instanceof Uint8Array)return`${this.prefix}${this.baseEncode(t)}`;throw Error("Unknown type, must be binary type")}},nr=class{constructor(t,e,n){if(this.name=t,this.prefix=e,e.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=e.codePointAt(0),this.baseDecode=n}decode(t){if(typeof t=="string"){if(t.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(t)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(t.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(t){return En(this,t)}},sr=class{constructor(t){this.decoders=t}or(t){return En(this,t)}decode(t){let e=t[0],n=this.decoders[e];if(n)return n.decode(t);throw RangeError(`Unable to decode multibase string ${JSON.stringify(t)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},En=(r,t)=>new sr({...r.decoders||{[r.prefix]:r},...t.decoders||{[t.prefix]:t}}),or=class{constructor(t,e,n,i){this.name=t,this.prefix=e,this.baseEncode=n,this.baseDecode=i,this.encoder=new rr(t,e,n),this.decoder=new nr(t,e,i)}encode(t){return this.encoder.encode(t)}decode(t){return this.decoder.decode(t)}},jt=({name:r,prefix:t,encode:e,decode:n})=>new or(r,t,e,n),It=({prefix:r,name:t,alphabet:e})=>{let{encode:n,decode:i}=wn(e,t);return jt({prefix:r,name:t,encode:n,decode:u=>ot(i(u))})},zi=(r,t,e,n)=>{let i={};for(let f=0;f<t.length;++f)i[t[f]]=f;let u=r.length;for(;r[u-1]==="=";)--u;let l=new Uint8Array(u*e/8|0),d=0,b=0,A=0;for(let f=0;f<u;++f){let w=i[r[f]];if(w===void 0)throw new SyntaxError(`Non-${n} character`);b=b<<e|w,d+=e,d>=8&&(d-=8,l[A++]=255&b>>d)}if(d>=e||255&b<<8-d)throw new SyntaxError("Unexpected end of data");return l},qi=(r,t,e)=>{let n=t[t.length-1]==="=",i=(1<<e)-1,u="",l=0,d=0;for(let b=0;b<r.length;++b)for(d=d<<8|r[b],l+=8;l>e;)l-=e,u+=t[i&d>>l];if(l&&(u+=t[i&d<<e-l]),n)for(;u.length*e&7;)u+="=";return u},O=({name:r,prefix:t,bitsPerChar:e,alphabet:n})=>jt({prefix:t,name:r,encode(i){return qi(i,n,e)},decode(i){return zi(i,n,e,r)}});var Gi=jt({prefix:"\0",name:"identity",encode:r=>xn(r),decode:r=>Tn(r)});var ar={};rt(ar,{base2:()=>Zi});var Zi=O({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var cr={};rt(cr,{base8:()=>Hi});var Hi=O({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var ur={};rt(ur,{base10:()=>Wi});var Wi=It({prefix:"9",name:"base10",alphabet:"0123456789"});var fr={};rt(fr,{base16:()=>Xi,base16upper:()=>Ji});var Xi=O({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Ji=O({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var lr={};rt(lr,{base32:()=>lt,base32hex:()=>ta,base32hexpad:()=>ra,base32hexpadupper:()=>na,base32hexupper:()=>ea,base32pad:()=>Ki,base32padupper:()=>Qi,base32upper:()=>Yi,base32z:()=>sa});var lt=O({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Yi=O({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Ki=O({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),Qi=O({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),ta=O({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),ea=O({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),ra=O({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),na=O({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),sa=O({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var pr={};rt(pr,{base36:()=>oa,base36upper:()=>ia});var oa=It({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),ia=It({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var hr={};rt(hr,{base58btc:()=>z,base58flickr:()=>aa});var z=It({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),aa=It({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var mr={};rt(mr,{base64:()=>dr,base64pad:()=>ca,base64url:()=>ua,base64urlpad:()=>fa});var dr=O({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),ca=O({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),ua=O({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),fa=O({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var gr={};rt(gr,{base256emoji:()=>ma});var Cn=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}"),la=Cn.reduce((r,t,e)=>(r[e]=t,r),[]),pa=Cn.reduce((r,t,e)=>(r[t.codePointAt(0)]=e,r),[]);function ha(r){return r.reduce((t,e)=>(t+=la[e],t),"")}function da(r){let t=[];for(let e of r){let n=pa[e.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${e}`);t.push(n)}return new Uint8Array(t)}var ma=jt({prefix:"\u{1F680}",name:"base256emoji",encode:ha,decode:da});var Tr={};rt(Tr,{sha256:()=>Pa,sha512:()=>Fa});var vr=k(dt("crypto"),1);var ga=Bn,An=128,ba=127,ya=~ba,wa=Math.pow(2,31);function Bn(r,t,e){t=t||[],e=e||0;for(var n=e;r>=wa;)t[e++]=r&255|An,r/=128;for(;r&ya;)t[e++]=r&255|An,r>>>=7;return t[e]=r|0,Bn.bytes=e-n+1,t}var va=br,Ta=128,In=127;function br(r,n){var e=0,n=n||0,i=0,u=n,l,d=r.length;do{if(u>=d)throw br.bytes=0,new RangeError("Could not decode varint");l=r[u++],e+=i<28?(l&In)<<i:(l&In)*Math.pow(2,i),i+=7}while(l>=Ta);return br.bytes=u-n,e}var xa=Math.pow(2,7),Sa=Math.pow(2,14),Ea=Math.pow(2,21),Ca=Math.pow(2,28),Aa=Math.pow(2,35),Ia=Math.pow(2,42),Ba=Math.pow(2,49),Ra=Math.pow(2,56),Ma=Math.pow(2,63),Da=function(r){return r<xa?1:r<Sa?2:r<Ea?3:r<Ca?4:r<Aa?5:r<Ia?6:r<Ba?7:r<Ra?8:r<Ma?9:10},Oa={encode:ga,decode:va,encodingLength:Da},_a=Oa,oe=_a;var ie=(r,t=0)=>[oe.decode(r,t),oe.decode.bytes],Vt=(r,t,e=0)=>(oe.encode(r,t,e),t),zt=r=>oe.encodingLength(r);var Pt=(r,t)=>{let e=t.byteLength,n=zt(r),i=n+zt(e),u=new Uint8Array(i+e);return Vt(r,u,0),Vt(e,u,n),u.set(t,i),new qt(r,e,t,u)},Ae=r=>{let t=ot(r),[e,n]=ie(t),[i,u]=ie(t.subarray(n)),l=t.subarray(n+u);if(l.byteLength!==i)throw new Error("Incorrect length");return new qt(e,i,l,t)},Rn=(r,t)=>{if(r===t)return!0;{let e=t;return r.code===e.code&&r.size===e.size&&e.bytes instanceof Uint8Array&&vn(r.bytes,e.bytes)}},qt=class{constructor(t,e,n,i){this.code=t,this.size=e,this.digest=n,this.bytes=i}};var wr=({name:r,code:t,encode:e})=>new yr(r,t,e),yr=class{constructor(t,e,n){this.name=t,this.code=e,this.encode=n}digest(t){if(t instanceof Uint8Array){let e=this.encode(t);return e instanceof Uint8Array?Pt(this.code,e):e.then(n=>Pt(this.code,n))}else throw Error("Unknown type, must be binary type")}};var Pa=wr({name:"sha2-256",code:18,encode:r=>ot(vr.default.createHash("sha256").update(r).digest())}),Fa=wr({name:"sha2-512",code:19,encode:r=>ot(vr.default.createHash("sha512").update(r).digest())});var xr={};rt(xr,{identity:()=>Ua});var Dn=0,ka="identity",On=ot,Na=r=>Pt(Dn,On(r)),Ua={code:Dn,name:ka,encode:On,digest:Na};var Ku=new TextEncoder,Qu=new TextDecoder;var ja=(r,t)=>{let{bytes:e,version:n}=r;switch(n){case 0:return za(e,Sr(r),t||z.encoder);default:return qa(e,Sr(r),t||lt.encoder)}},_n=new WeakMap,Sr=r=>{let t=_n.get(r);if(t==null){let e=new Map;return _n.set(r,e),e}return t},M=class{constructor(t,e,n,i){this.code=e,this.version=t,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:t,multihash:e}=this;if(t!==ae)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(e.code!==Ga)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return M.createV0(e)}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:t,digest:e}=this.multihash,n=Pt(t,e);return M.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(t){return M.equals(this,t)}static equals(t,e){let n=e;return n&&t.code===n.code&&t.version===n.version&&Rn(t.multihash,n.multihash)}toString(t){return ja(this,t)}toJSON(){return{code:this.code,version:this.version,hash:this.multihash.bytes}}link(){return this}get[Symbol.toStringTag](){return"CID"}[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(t){if(t==null)return null;let e=t;if(e instanceof M)return e;if(e["/"]!=null&&e["/"]===e.bytes||e.asCID===e){let{version:n,code:i,multihash:u,bytes:l}=e;return new M(n,i,u,l||Pn(n,i,u.bytes))}else if(e[Za]===!0){let{version:n,multihash:i,code:u}=e,l=Ae(i);return M.create(n,u,l)}else return null}static create(t,e,n){if(typeof e!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(t){case 0:{if(e!==ae)throw new Error(`Version 0 CID must use dag-pb (code: ${ae}) block encoding`);return new M(t,e,n,n.bytes)}case 1:{let i=Pn(t,e,n.bytes);return new M(t,e,n,i)}default:throw new Error("Invalid version")}}static createV0(t){return M.create(0,ae,t)}static createV1(t,e){return M.create(1,t,e)}static decode(t){let[e,n]=M.decodeFirst(t);if(n.length)throw new Error("Incorrect length");return e}static decodeFirst(t){let e=M.inspectBytes(t),n=e.size-e.multihashSize,i=ot(t.subarray(n,n+e.multihashSize));if(i.byteLength!==e.multihashSize)throw new Error("Incorrect length");let u=i.subarray(e.multihashSize-e.digestSize),l=new qt(e.multihashCode,e.digestSize,u,i);return[e.version===0?M.createV0(l):M.createV1(e.codec,l),t.subarray(e.size)]}static inspectBytes(t){let e=0,n=()=>{let[w,v]=ie(t.subarray(e));return e+=v,w},i=n(),u=ae;if(i===18?(i=0,e=0):u=n(),i!==0&&i!==1)throw new RangeError(`Invalid CID version ${i}`);let l=e,d=n(),b=n(),A=e+b,f=A-l;return{version:i,codec:u,multihashCode:d,digestSize:b,multihashSize:f,size:A}}static parse(t,e){let[n,i]=Va(t,e),u=M.decode(i);return Sr(u).set(n,t),u}},Va=(r,t)=>{switch(r[0]){case"Q":{let e=t||z;return[z.prefix,e.decode(`${z.prefix}${r}`)]}case z.prefix:{let e=t||z;return[z.prefix,e.decode(r)]}case lt.prefix:{let e=t||lt;return[lt.prefix,e.decode(r)]}default:{if(t==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],t.decode(r)]}}},za=(r,t,e)=>{let{prefix:n}=e;if(n!==z.prefix)throw Error(`Cannot string encode V0 in ${e.name} encoding`);let i=t.get(n);if(i==null){let u=e.encode(r).slice(1);return t.set(n,u),u}else return i},qa=(r,t,e)=>{let{prefix:n}=e,i=t.get(n);if(i==null){let u=e.encode(r);return t.set(n,u),u}else return i},ae=112,Ga=18,Pn=(r,t,e)=>{let n=zt(r),i=n+zt(t),u=new Uint8Array(i+e.byteLength);return Vt(r,u,0),Vt(t,u,n),u.set(e,i),u},Za=Symbol.for("@ipld/js-cid/CID");var ce={...ir,...ar,...cr,...ur,...fr,...lr,...pr,...hr,...mr,...gr},ff={...Tr,...xr};function Zt(r){return globalThis.Buffer!=null?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r}function Ie(r=0){return globalThis.Buffer?.allocUnsafe!=null?Zt(globalThis.Buffer.allocUnsafe(r)):new Uint8Array(r)}function kn(r,t,e,n){return{name:r,prefix:t,encoder:{name:r,prefix:t,encode:e},decoder:{decode:n}}}var Fn=kn("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),Er=kn("ascii","a",r=>{let t="a";for(let e=0;e<r.length;e++)t+=String.fromCharCode(r[e]);return t},r=>{r=r.substring(1);let t=Ie(r.length);for(let e=0;e<r.length;e++)t[e]=r.charCodeAt(e);return t}),Ha={utf8:Fn,"utf-8":Fn,hex:ce.base16,latin1:Er,ascii:Er,binary:Er,...ce},Be=Ha;function K(r,t="utf8"){let e=Be[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return(t==="utf8"||t==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(r.buffer,r.byteOffset,r.byteLength).toString("utf8"):e.encoder.encode(r).substring(1)}var Nn=At.isIPv4,Wa=At.isIPv6,Cr=function(r){let t=0;if(r=r.toString().trim(),Nn(r)){let e=new Uint8Array(t+4);return r.split(/\./g).forEach(n=>{e[t++]=parseInt(n,10)&255}),e}if(Wa(r)){let e=r.split(":",8),n;for(n=0;n<e.length;n++){let u=Nn(e[n]),l;u&&(l=Cr(e[n]),e[n]=K(l.slice(0,2),"base16")),l!=null&&++n<8&&e.splice(n,0,K(l.slice(2,4),"base16"))}if(e[0]==="")for(;e.length<8;)e.unshift("0");else if(e[e.length-1]==="")for(;e.length<8;)e.push("0");else if(e.length<8){for(n=0;n<e.length&&e[n]!=="";n++);let u=[n,1];for(n=9-e.length;n>0;n--)u.push("0");e.splice.apply(e,u)}let i=new Uint8Array(t+16);for(n=0;n<e.length;n++){let u=parseInt(e[n],16);i[t++]=u>>8&255,i[t++]=u&255}return i}throw new Error("invalid ip address")},Un=function(r,t=0,e){t=~~t,e=e??r.length-t;let n=new DataView(r.buffer);if(e===4){let i=[];for(let u=0;u<e;u++)i.push(r[t+u]);return i.join(".")}if(e===16){let i=[];for(let u=0;u<e;u+=2)i.push(n.getUint16(t+u).toString(16));return i.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var ue={},Ar={},Ja=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,-1,"ip6zone"],[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"],[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"],[460,0,"quic"],[461,0,"quic-v1"],[465,0,"webtransport"],[466,-1,"certhash"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"],[777,-1,"memory"]];Ja.forEach(r=>{let t=Ya(...r);Ar[t.code]=t,ue[t.name]=t});function Ya(r,t,e,n,i){return{code:r,size:t,name:e,resolvable:Boolean(n),path:Boolean(i)}}function N(r){if(typeof r=="number"){if(Ar[r]!=null)return Ar[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(ue[r]!=null)return ue[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var mt=k(Re(),1);function Rr(r,t="utf8"){let e=Be[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return(t==="utf8"||t==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?Zt(globalThis.Buffer.from(r,"utf-8")):e.decoder.decode(`${e.prefix}${r}`)}function yt(r,t){t==null&&(t=r.reduce((i,u)=>i+u.length,0));let e=Ie(t),n=0;for(let i of r)e.set(i,n),n+=i.length;return Zt(e)}function Jn(r,t){switch(N(r).code){case 4:case 41:return pc(t);case 6:case 273:case 33:case 132:return Kn(t).toString();case 53:case 54:case 55:case 56:case 400:case 777:return dc(t);case 421:return yc(t);case 444:return Xn(t);case 445:return Xn(t);case 466:return bc(t);default:return K(t,"base16")}}function Yn(r,t){switch(N(r).code){case 4:return Wn(t);case 41:return Wn(t);case 6:case 273:case 33:case 132:return Dr(parseInt(t,10));case 53:case 54:case 55:case 56:case 400:case 777:return hc(t);case 421:return mc(t);case 444:return wc(t);case 445:return vc(t);case 466:return gc(t);default:return Rr(t,"base16")}}var Mr=Object.values(ce).map(r=>r.decoder),lc=function(){let r=Mr[0].or(Mr[1]);return Mr.slice(2).forEach(t=>r=r.or(t)),r}();function Wn(r){if(!Ee(r))throw new Error("invalid ip address");return Cr(r)}function pc(r){let t=Un(r,0,r.length);if(t==null)throw new Error("ipBuff is required");if(!Ee(t))throw new Error("invalid ip address");return t}function Dr(r){let t=new ArrayBuffer(2);return new DataView(t).setUint16(0,r),new Uint8Array(t)}function Kn(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function hc(r){let t=Rr(r),e=Uint8Array.from(mt.default.encode(t.length));return yt([e,t],e.length+t.length)}function dc(r){let t=mt.default.decode(r);if(r=r.slice(mt.default.decode.bytes),r.length!==t)throw new Error("inconsistent lengths");return K(r)}function mc(r){let t;r[0]==="Q"||r[0]==="1"?t=Ae(z.decode(`z${r}`)).bytes:t=M.parse(r).multihash.bytes;let e=Uint8Array.from(mt.default.encode(t.length));return yt([e,t],e.length+t.length)}function gc(r){let t=lc.decode(r),e=Uint8Array.from(mt.default.encode(t.length));return yt([e,t],e.length+t.length)}function bc(r){let t=mt.default.decode(r),e=r.slice(mt.default.decode.bytes);if(e.length!==t)throw new Error("inconsistent lengths");return"u"+K(e,"base64url")}function yc(r){let t=mt.default.decode(r),e=r.slice(mt.default.decode.bytes);if(e.length!==t)throw new Error("inconsistent lengths");return K(e,"base58btc")}function wc(r){let t=r.split(":");if(t.length!==2)throw new Error(`failed to parse onion addr: ["'${t.join('", "')}'"]' does not contain a port number`);if(t[0].length!==16)throw new Error(`failed to parse onion addr: ${t[0]} not a Tor onion address.`);let e=lt.decode("b"+t[0]),n=parseInt(t[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let i=Dr(n);return yt([e,i],e.length+i.length)}function vc(r){let t=r.split(":");if(t.length!==2)throw new Error(`failed to parse onion addr: ["'${t.join('", "')}'"]' does not contain a port number`);if(t[0].length!==56)throw new Error(`failed to parse onion addr: ${t[0]} not a Tor onion3 address.`);let e=lt.decode(`b${t[0]}`),n=parseInt(t[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let i=Dr(n);return yt([e,i],e.length+i.length)}function Xn(r){let t=r.slice(0,r.length-2),e=r.slice(r.length-2),n=K(t,"base32"),i=Kn(e);return`${n}:${i}`}var Ht=k(Re(),1);function Tc(r){let t=[],e=r.split("/").slice(1);if(e.length===1&&e[0]==="")return[];for(let n=0;n<e.length;n++){let i=e[n],u=N(i);if(u.size===0){t.push([i]);continue}if(n++,n>=e.length)throw ts("invalid address: "+r);if(u.path===!0){t.push([i,kr(e.slice(n).join("/"))]);break}t.push([i,e[n]])}return t}function xc(r){let t=[];return r.map(e=>{let n=Oe(e);return t.push(n.name),e.length>1&&e[1]!=null&&t.push(e[1]),null}),kr(t.join("/"))}function Sc(r){return r.map(t=>{Array.isArray(t)||(t=[t]);let e=Oe(t);return t.length>1?[e.code,Yn(e.code,t[1])]:[e.code]})}function Or(r){return r.map(t=>{let e=Oe(t);return t[1]!=null?[e.code,Jn(e.code,t[1])]:[e.code]})}function _r(r){return De(yt(r.map(t=>{let e=Oe(t),n=Uint8Array.from(Ht.default.encode(e.code));return t.length>1&&t[1]!=null&&(n=yt([n,t[1]])),n})))}function Pr(r,t){return r.size>0?r.size/8:r.size===0?0:Ht.default.decode(t)+(Ht.default.decode.bytes??0)}function Me(r){let t=[],e=0;for(;e<r.length;){let n=Ht.default.decode(r,e),i=Ht.default.decode.bytes??0,u=N(n),l=Pr(u,r.slice(e+i));if(l===0){t.push([n]),e+=i;continue}let d=r.slice(e+i,e+i+l);if(e+=l+i,e>r.length)throw ts("Invalid address Uint8Array: "+K(r,"base16"));t.push([n,d])}return t}function Fr(r){let t=Me(r),e=Or(t);return xc(e)}function Ec(r){r=kr(r);let t=Tc(r),e=Sc(t);return _r(e)}function Qn(r){return Ec(r)}function De(r){let t=Cc(r);if(t!=null)throw t;return Uint8Array.from(r)}function Cc(r){try{Me(r)}catch(t){return t}}function kr(r){return"/"+r.trim().split("/").filter(t=>t).join("/")}function ts(r){return new Error("Error parsing address: "+r)}function Oe(r){return N(r[0])}var Ur=k(Re(),1);var is=k(fe(),1);function ns(r,t){if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0}var Wt=function(r,t,e,n){if(e==="a"&&!n)throw new TypeError("Private accessor was defined without a getter");if(typeof t=="function"?r!==t||!n:!t.has(r))throw new TypeError("Cannot read private member from an object whose class did not declare it");return e==="m"?n:e==="a"?n.call(r):n?n.value:t.get(r)},Nr=function(r,t,e,n,i){if(n==="m")throw new TypeError("Private method is not writable");if(n==="a"&&!i)throw new TypeError("Private accessor was defined without a setter");if(typeof t=="function"?r!==t||!i:!t.has(r))throw new TypeError("Cannot write private member to an object whose class did not declare it");return n==="a"?i.call(r,e):i?i.value=e:t.set(r,e),e},le,pe,he,ss,Bc=Symbol.for("nodejs.util.inspect.custom"),os=[N("dns").code,N("dns4").code,N("dns6").code,N("dnsaddr").code],Rc=[N("p2p").code,N("ipfs").code],Mc=new Map,as=Symbol.for("@multiformats/js-multiaddr/multiaddr");function Dc(r){return Boolean(r?.[as])}var wt=class{constructor(t){if(le.set(this,void 0),pe.set(this,void 0),he.set(this,void 0),this[ss]=!0,t==null&&(t=""),t instanceof Uint8Array)this.bytes=De(t);else if(typeof t=="string"){if(t.length>0&&t.charAt(0)!=="/")throw new Error(`multiaddr "${t}" must start with a "/"`);this.bytes=Qn(t)}else if(Dc(t))this.bytes=De(t.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr")}toString(){return Wt(this,le,"f")==null&&Nr(this,le,Fr(this.bytes),"f"),Wt(this,le,"f")}toJSON(){return this.toString()}toOptions(){let t=this.protoCodes(),e=this.toString().split("/").slice(1),n,i;if(e.length>2)os.includes(t[0])&&Rc.includes(t[1])?(n=N("tcp").name,i=443):(n=N(e[2]).name,i=parseInt(e[3]));else if(os.includes(t[0]))n=N("tcp").name,i=443;else throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".');return{family:t[0]===41||t[0]===55?6:4,host:e[1],transport:n,port:i}}protos(){return this.protoCodes().map(t=>Object.assign({},N(t)))}protoCodes(){let t=[],e=this.bytes,n=0;for(;n<e.length;){let i=Ur.default.decode(e,n),u=Ur.default.decode.bytes??0,l=N(i),d=Pr(l,e.slice(n+u));n+=d+u,t.push(i)}return t}protoNames(){return this.protos().map(t=>t.name)}tuples(){return Wt(this,pe,"f")==null&&Nr(this,pe,Me(this.bytes),"f"),Wt(this,pe,"f")}stringTuples(){return Wt(this,he,"f")==null&&Nr(this,he,Or(this.tuples()),"f"),Wt(this,he,"f")}encapsulate(t){return t=new wt(t),new wt(this.toString()+t.toString())}decapsulate(t){let e=t.toString(),n=this.toString(),i=n.lastIndexOf(e);if(i<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${t.toString()}`);return new wt(n.slice(0,i))}decapsulateCode(t){let e=this.tuples();for(let n=e.length-1;n>=0;n--)if(e[n][0]===t)return new wt(_r(e.slice(0,n)));return this}getPeerId(){try{let e=this.stringTuples().filter(n=>n[0]===ue.ipfs.code).pop();if(e?.[1]!=null){let n=e[1];return n[0]==="Q"||n[0]==="1"?K(z.decode(`z${n}`),"base58btc"):K(M.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){let t=null;try{t=this.stringTuples().filter(e=>N(e[0]).path===!0)[0][1],t==null&&(t=null)}catch{t=null}return t}equals(t){return ns(this.bytes,t.bytes)}async resolve(t){let e=this.protos().find(u=>u.resolvable);if(e==null)return[this];let n=Mc.get(e.name);if(n==null)throw(0,is.default)(new Error(`no available resolver for ${e.name}`),"ERR_NO_AVAILABLE_RESOLVER");return(await n(this,t)).map(u=>new wt(u))}nodeAddress(){let t=this.toOptions();if(t.transport!=="tcp"&&t.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${t.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:t.family,address:t.host,port:t.port}}isThinWaistAddress(t){let e=(t??this).protos();return!(e.length!==2||e[0].code!==4&&e[0].code!==41||e[1].code!==6&&e[1].code!==273)}[(le=new WeakMap,pe=new WeakMap,he=new WeakMap,ss=as,Bc)](){return`Multiaddr(${Fr(this.bytes)})`}};function vt(r){return new wt(r)}var Oc=T("dns4"),_c=T("dns6"),Pc=T("dnsaddr"),Xt=q(T("dns"),Pc,Oc,_c),_e=q(T("ip4"),T("ip6")),Ft=q(E(_e,T("tcp")),E(Xt,T("tcp"))),us=E(_e,T("udp")),Fc=E(us,T("utp")),kc=E(us,T("quic")),me=q(E(Ft,T("ws")),E(Xt,T("ws"))),ge=q(E(Ft,T("wss")),E(Xt,T("wss"))),Lr=q(E(Ft,T("http")),E(_e,T("http")),E(Xt,T("http"))),$r=q(E(Ft,T("https")),E(_e,T("https")),E(Xt,T("https"))),fs=q(E(me,T("p2p-webrtc-star"),T("p2p")),E(ge,T("p2p-webrtc-star"),T("p2p")),E(me,T("p2p-webrtc-star")),E(ge,T("p2p-webrtc-star"))),rl=q(E(me,T("p2p-websocket-star"),T("p2p")),E(ge,T("p2p-websocket-star"),T("p2p")),E(me,T("p2p-websocket-star")),E(ge,T("p2p-websocket-star"))),ls=q(E(Lr,T("p2p-webrtc-direct"),T("p2p")),E($r,T("p2p-webrtc-direct"),T("p2p")),E(Lr,T("p2p-webrtc-direct")),E($r,T("p2p-webrtc-direct"))),be=q(me,ge,Lr,$r,fs,ls,Ft,Fc,kc,Xt),nl=q(E(be,T("p2p-stardust"),T("p2p")),E(be,T("p2p-stardust"))),Bt=q(E(be,T("p2p")),fs,ls,T("p2p")),cs=q(E(Bt,T("p2p-circuit"),Bt),E(Bt,T("p2p-circuit")),E(T("p2p-circuit"),Bt),E(be,T("p2p-circuit")),E(T("p2p-circuit"),be),T("p2p-circuit")),ps=()=>q(E(cs,ps),cs),de=ps(),sl=q(E(de,Bt,de),E(Bt,de),E(de,Bt),de,Bt);function hs(r){function t(e){let n;try{n=vt(e)}catch{return!1}let i=r(n.protoNames());return i===null?!1:i===!0||i===!1?i:i.length===0}return t}function E(...r){function t(e){if(e.length<r.length)return null;let n=e;return r.some(i=>(n=typeof i=="function"?i().partialMatch(e):i.partialMatch(e),Array.isArray(n)&&(e=n),n===null)),n}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:hs(t),partialMatch:t}}function q(...r){function t(n){let i=null;return r.some(u=>{let l=typeof u=="function"?u().partialMatch(n):u.partialMatch(n);return l!=null?(i=l,!0):!1}),i}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:hs(t),partialMatch:t}}function T(r){let t=r;function e(i){let u;try{u=vt(i)}catch{return!1}let l=u.protoNames();return l.length===1&&l[0]===t}function n(i){return i.length===0?null:i[0]===t?i.slice(1):null}return{toString:function(){return t},matches:e,partialMatch:n}}var Ks=k(fe(),1);var gt=k(Cs(),1);gt.default.formatters.b=r=>r==null?"undefined":z.baseEncode(r);gt.default.formatters.t=r=>r==null?"undefined":lt.baseEncode(r);gt.default.formatters.m=r=>r==null?"undefined":dr.baseEncode(r);gt.default.formatters.p=r=>r==null?"undefined":r.toString();gt.default.formatters.c=r=>r==null?"undefined":r.toString();gt.default.formatters.k=r=>r==null?"undefined":r.toString();function Mt(r){return Object.assign((0,gt.default)(r),{error:(0,gt.default)(`${r}:error`),trace:(0,gt.default)(`${r}:trace`)})}var Ws=k(_s(),1);var Ze=k(fe(),1);function Le(r){return this.subnetMask<r.subnetMask?!1:this.mask(r.subnetMask)===r.mask()}function $e(r){return function(){return this.addressMinusSuffix!==this.correctForm()?!1:this.subnetMask===r&&!this.parsedSubnet?!0:this.parsedSubnet===String(this.subnetMask)}}var te=/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/g,Hr=/\/\d{1,2}$/;var G=class extends Error{constructor(t,e){super(t),this.name="AddressError",e!==null&&(this.parseMessage=e)}};var ee=k(Wr(),1),Nt=k(ye(),1),D=class{constructor(t){this.groups=4,this.parsedAddress=[],this.parsedSubnet="",this.subnet="/32",this.subnetMask=32,this.v4=!0,this.isCorrect=$e(32),this.isInSubnet=Le,this.address=t;let e=Hr.exec(t);if(e){if(this.parsedSubnet=e[0].replace("/",""),this.subnetMask=parseInt(this.parsedSubnet,10),this.subnet=`/${this.subnetMask}`,this.subnetMask<0||this.subnetMask>32)throw new G("Invalid subnet mask.");t=t.replace(Hr,"")}this.addressMinusSuffix=t,this.parsedAddress=this.parse(t)}static isValid(t){try{return new D(t),!0}catch{return!1}}parse(t){let e=t.split(".");if(!t.match(te))throw new G("Invalid IPv4 address.");return e}correctForm(){return this.parsedAddress.map(t=>parseInt(t,10)).join(".")}static fromHex(t){let e=t.replace(/:/g,"").padStart(8,"0"),n=[],i;for(i=0;i<8;i+=2){let u=e.slice(i,i+2);n.push(parseInt(u,16))}return new D(n.join("."))}static fromInteger(t){return D.fromHex(t.toString(16))}static fromArpa(t){let n=t.replace(/(\.in-addr\.arpa)?\.$/,"").split(".").reverse().join(".");return new D(n)}toHex(){return this.parsedAddress.map(t=>(0,Nt.sprintf)("%02x",parseInt(t,10))).join(":")}toArray(){return this.parsedAddress.map(t=>parseInt(t,10))}toGroup6(){let t=[],e;for(e=0;e<4;e+=2){let n=(0,Nt.sprintf)("%02x%02x",parseInt(this.parsedAddress[e],10),parseInt(this.parsedAddress[e+1],10));t.push((0,Nt.sprintf)("%x",parseInt(n,16)))}return t.join(":")}bigInteger(){return new ee.BigInteger(this.parsedAddress.map(t=>(0,Nt.sprintf)("%02x",parseInt(t,10))).join(""),16)}_startAddress(){return new ee.BigInteger(this.mask()+"0".repeat(32-this.subnetMask),2)}startAddress(){return D.fromBigInteger(this._startAddress())}startAddressExclusive(){let t=new ee.BigInteger("1");return D.fromBigInteger(this._startAddress().add(t))}_endAddress(){return new ee.BigInteger(this.mask()+"1".repeat(32-this.subnetMask),2)}endAddress(){return D.fromBigInteger(this._endAddress())}endAddressExclusive(){let t=new ee.BigInteger("1");return D.fromBigInteger(this._endAddress().subtract(t))}static fromBigInteger(t){return D.fromInteger(parseInt(t.toString(),10))}mask(t){return t===void 0&&(t=this.subnetMask),this.getBitsBase2(0,t)}getBitsBase2(t,e){return this.binaryZeroPad().slice(t,e)}reverseForm(t){t||(t={});let e=this.correctForm().split(".").reverse().join(".");return t.omitSuffix?e:(0,Nt.sprintf)("%s.in-addr.arpa.",e)}isMulticast(){return this.isInSubnet(new D("224.0.0.0/4"))}binaryZeroPad(){return this.bigInteger().toString(2).padStart(32,"0")}groupForV6(){let t=this.parsedAddress;return this.address.replace(te,(0,Nt.sprintf)('<span class="hover-group group-v4 group-6">%s</span>.<span class="hover-group group-v4 group-7">%s</span>',t.slice(0,2).join("."),t.slice(2,4).join(".")))}};var Us={0:"Reserved",1:"Interface local",2:"Link local",4:"Admin local",5:"Site local",8:"Organization local",14:"Global",15:"Reserved"},Xr={"ff01::1/128":"Multicast (All nodes on this interface)","ff01::2/128":"Multicast (All routers on this interface)","ff02::1/128":"Multicast (All nodes on this link)","ff02::2/128":"Multicast (All routers on this link)","ff05::2/128":"Multicast (All routers in this site)","ff02::5/128":"Multicast (OSPFv3 AllSPF routers)","ff02::6/128":"Multicast (OSPFv3 AllDR routers)","ff02::9/128":"Multicast (RIP routers)","ff02::a/128":"Multicast (EIGRP routers)","ff02::d/128":"Multicast (PIM routers)","ff02::16/128":"Multicast (MLDv2 reports)","ff01::fb/128":"Multicast (mDNSv6)","ff02::fb/128":"Multicast (mDNSv6)","ff05::fb/128":"Multicast (mDNSv6)","ff02::1:2/128":"Multicast (All DHCP servers and relay agents on this link)","ff05::1:2/128":"Multicast (All DHCP servers and relay agents in this site)","ff02::1:3/128":"Multicast (All DHCP servers on this link)","ff05::1:3/128":"Multicast (All DHCP servers in this site)","::/128":"Unspecified","::1/128":"Loopback","ff00::/8":"Multicast","fe80::/10":"Link-local unicast"},Jr=/([^0-9a-f:/%])/gi,Yr=/([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\/$)/gi,Kr=/\/\d{1,3}(?=%|$)/,Qr=/%.*$/,Ls=new RegExp(/^\[{0,1}([0-9a-f:]+)\]{0,1}/),$s=new RegExp(/\[([0-9a-f:]+)\]:([0-9]{1,5})/);var Vs=k(ye(),1);function fu(r){return r.replace(/^(0+)/,'<span class="zero">$1</span>')}function ze(r,t=0){return r.split(":").map((n,i)=>/group-v4/.test(n)?n:(0,Vs.sprintf)('<span class="hover-group group-%d">%s</span>',i+t,fu(n)))}var Lt=k(ye(),1);function en(r){return(0,Lt.sprintf)("(%s)",r.join("|"))}function tn(r){return r.length<4?(0,Lt.sprintf)("0{0,%d}%s",4-r.length,r):r}var rn="[^A-Fa-f0-9:]";function qe(r){let t=[];r.forEach((n,i)=>{parseInt(n,16)===0&&t.push(i)});let e=t.map(n=>r.map((i,u)=>{if(u===n){let l=u===0||u===8-1?":":"";return en([tn(i),l])}return tn(i)}).join(":"));return e.push(r.map(tn).join(":")),en(e)}function nn(r,t,e){let n=t?"":":",i=e?"":":",u=[];!t&&!e&&u.push("::"),t&&e&&u.push(""),(e&&!t||!e&&t)&&u.push(":"),u.push((0,Lt.sprintf)("%s(:0{1,4}){1,%d}",n,r-1)),u.push((0,Lt.sprintf)("(0{1,4}:){1,%d}%s",r-1,i)),u.push((0,Lt.sprintf)("(0{1,4}:){%d}0{1,4}",r-1));for(let l=1;l<r-1;l++)for(let d=1;d<r-l;d++)u.push((0,Lt.sprintf)("(0{1,4}:){%d}:(0{1,4}:){%d}0{1,4}",d,r-d-l-1));return en(u)}var Z=k(Wr(),1),H=k(ye(),1);function Ge(r){if(!r)throw new Error("Assertion failed.")}function lu(r){let t=/(\d+)(\d{3})/;for(;t.test(r);)r=r.replace(t,"$1,$2");return r}function pu(r){return r=r.replace(/^(0{1,})([1-9]+)$/,'<span class="parse-error">$1</span>$2'),r=r.replace(/^(0{1,})(0)$/,'<span class="parse-error">$1</span>$2'),r}function hu(r,t){let e=[],n=[],i;for(i=0;i<r.length;i++)i<t[0]?e.push(r[i]):i>t[1]&&n.push(r[i]);return e.concat(["compact"]).concat(n)}function qs(r){return(0,H.sprintf)("%04x",parseInt(r,16))}function Gs(r){return r&255}var _=class{constructor(t,e){this.addressMinusSuffix="",this.parsedSubnet="",this.subnet="/128",this.subnetMask=128,this.v4=!1,this.zone="",this.isInSubnet=Le,this.isCorrect=$e(128),e===void 0?this.groups=8:this.groups=e,this.address=t;let n=Kr.exec(t);if(n){if(this.parsedSubnet=n[0].replace("/",""),this.subnetMask=parseInt(this.parsedSubnet,10),this.subnet=`/${this.subnetMask}`,Number.isNaN(this.subnetMask)||this.subnetMask<0||this.subnetMask>128)throw new G("Invalid subnet mask.");t=t.replace(Kr,"")}else if(/\//.test(t))throw new G("Invalid subnet mask.");let i=Qr.exec(t);i&&(this.zone=i[0],t=t.replace(Qr,"")),this.addressMinusSuffix=t,this.parsedAddress=this.parse(this.addressMinusSuffix)}static isValid(t){try{return new _(t),!0}catch{return!1}}static fromBigInteger(t){let e=t.toString(16).padStart(32,"0"),n=[],i;for(i=0;i<8;i++)n.push(e.slice(i*4,(i+1)*4));return new _(n.join(":"))}static fromURL(t){let e,n=null,i;if(t.indexOf("[")!==-1&&t.indexOf("]:")!==-1){if(i=$s.exec(t),i===null)return{error:"failed to parse address with port",address:null,port:null};e=i[1],n=i[2]}else if(t.indexOf("/")!==-1){if(t=t.replace(/^[a-z0-9]+:\/\//,""),i=Ls.exec(t),i===null)return{error:"failed to parse address from URL",address:null,port:null};e=i[1]}else e=t;return n?(n=parseInt(n,10),(n<0||n>65536)&&(n=null)):n=null,{address:new _(e),port:n}}static fromAddress4(t){let e=new D(t),n=128-(32-e.subnetMask);return new _(`::ffff:${e.correctForm()}/${n}`)}static fromArpa(t){let e=t.replace(/(\.ip6\.arpa)?\.$/,""),n=7;if(e.length!==63)throw new G("Invalid 'ip6.arpa' form.");let i=e.split(".").reverse();for(let u=n;u>0;u--){let l=u*4;i.splice(l,0,":")}return e=i.join(""),new _(e)}microsoftTranscription(){return(0,H.sprintf)("%s.ipv6-literal.net",this.correctForm().replace(/:/g,"-"))}mask(t=this.subnetMask){return this.getBitsBase2(0,t)}possibleSubnets(t=128){let e=128-this.subnetMask,n=Math.abs(t-128),i=e-n;return i<0?"0":lu(new Z.BigInteger("2",10).pow(i).toString(10))}_startAddress(){return new Z.BigInteger(this.mask()+"0".repeat(128-this.subnetMask),2)}startAddress(){return _.fromBigInteger(this._startAddress())}startAddressExclusive(){let t=new Z.BigInteger("1");return _.fromBigInteger(this._startAddress().add(t))}_endAddress(){return new Z.BigInteger(this.mask()+"1".repeat(128-this.subnetMask),2)}endAddress(){return _.fromBigInteger(this._endAddress())}endAddressExclusive(){let t=new Z.BigInteger("1");return _.fromBigInteger(this._endAddress().subtract(t))}getScope(){let t=Us[this.getBits(12,16).intValue()];return this.getType()==="Global unicast"&&t!=="Link local"&&(t="Global"),t||"Unknown"}getType(){for(let t of Object.keys(Xr))if(this.isInSubnet(new _(t)))return Xr[t];return"Global unicast"}getBits(t,e){return new Z.BigInteger(this.getBitsBase2(t,e),2)}getBitsBase2(t,e){return this.binaryZeroPad().slice(t,e)}getBitsBase16(t,e){let n=e-t;if(n%4!==0)throw new Error("Length of bits to retrieve must be divisible by four");return this.getBits(t,e).toString(16).padStart(n/4,"0")}getBitsPastSubnet(){return this.getBitsBase2(this.subnetMask,128)}reverseForm(t){t||(t={});let e=Math.floor(this.subnetMask/4),n=this.canonicalForm().replace(/:/g,"").split("").slice(0,e).reverse().join(".");return e>0?t.omitSuffix?n:(0,H.sprintf)("%s.ip6.arpa.",n):t.omitSuffix?"":"ip6.arpa."}correctForm(){let t,e=[],n=0,i=[];for(t=0;t<this.parsedAddress.length;t++){let d=parseInt(this.parsedAddress[t],16);d===0&&n++,d!==0&&n>0&&(n>1&&i.push([t-n,t-1]),n=0)}n>1&&i.push([this.parsedAddress.length-n,this.parsedAddress.length-1]);let u=i.map(d=>d[1]-d[0]+1);if(i.length>0){let d=u.indexOf(Math.max(...u));e=hu(this.parsedAddress,i[d])}else e=this.parsedAddress;for(t=0;t<e.length;t++)e[t]!=="compact"&&(e[t]=parseInt(e[t],16).toString(16));let l=e.join(":");return l=l.replace(/^compact$/,"::"),l=l.replace(/^compact|compact$/,":"),l=l.replace(/compact/,""),l}binaryZeroPad(){return this.bigInteger().toString(2).padStart(128,"0")}parse4in6(t){let e=t.split(":"),i=e.slice(-1)[0].match(te);if(i){this.parsedAddress4=i[0],this.address4=new D(this.parsedAddress4);for(let u=0;u<this.address4.groups;u++)if(/^0[0-9]+/.test(this.address4.parsedAddress[u]))throw new G("IPv4 addresses can't have leading zeroes.",t.replace(te,this.address4.parsedAddress.map(pu).join(".")));this.v4=!0,e[e.length-1]=this.address4.toGroup6(),t=e.join(":")}return t}parse(t){t=this.parse4in6(t);let e=t.match(Jr);if(e)throw new G((0,H.sprintf)("Bad character%s detected in address: %s",e.length>1?"s":"",e.join("")),t.replace(Jr,'<span class="parse-error">$1</span>'));let n=t.match(Yr);if(n)throw new G((0,H.sprintf)("Address failed regex: %s",n.join("")),t.replace(Yr,'<span class="parse-error">$1</span>'));let i=[],u=t.split("::");if(u.length===2){let l=u[0].split(":"),d=u[1].split(":");l.length===1&&l[0]===""&&(l=[]),d.length===1&&d[0]===""&&(d=[]);let b=this.groups-(l.length+d.length);if(!b)throw new G("Error parsing groups");this.elidedGroups=b,this.elisionBegin=l.length,this.elisionEnd=l.length+this.elidedGroups,i=i.concat(l);for(let A=0;A<b;A++)i.push("0");i=i.concat(d)}else if(u.length===1)i=t.split(":"),this.elidedGroups=0;else throw new G("Too many :: groups found");if(i=i.map(l=>(0,H.sprintf)("%x",parseInt(l,16))),i.length!==this.groups)throw new G("Incorrect number of groups found");return i}canonicalForm(){return this.parsedAddress.map(qs).join(":")}decimal(){return this.parsedAddress.map(t=>(0,H.sprintf)("%05d",parseInt(t,16))).join(":")}bigInteger(){return new Z.BigInteger(this.parsedAddress.map(qs).join(""),16)}to4(){let t=this.binaryZeroPad().split("");return D.fromHex(new Z.BigInteger(t.slice(96,128).join(""),2).toString(16))}to4in6(){let t=this.to4(),n=new _(this.parsedAddress.slice(0,6).join(":"),6).correctForm(),i="";return/:$/.test(n)||(i=":"),n+i+t.address}inspectTeredo(){let t=this.getBitsBase16(0,32),e=this.getBits(80,96).xor(new Z.BigInteger("ffff",16)).toString(),n=D.fromHex(this.getBitsBase16(32,64)),i=D.fromHex(this.getBits(96,128).xor(new Z.BigInteger("ffffffff",16)).toString(16)),u=this.getBits(64,80),l=this.getBitsBase2(64,80),d=u.testBit(15),b=u.testBit(14),A=u.testBit(8),f=u.testBit(9),w=new Z.BigInteger(l.slice(2,6)+l.slice(8,16),2).toString(10);return{prefix:(0,H.sprintf)("%s:%s",t.slice(0,4),t.slice(4,8)),server4:n.address,client4:i.address,flags:l,coneNat:d,microsoft:{reserved:b,universalLocal:f,groupIndividual:A,nonce:w},udpPort:e}}inspect6to4(){let t=this.getBitsBase16(0,16),e=D.fromHex(this.getBitsBase16(16,48));return{prefix:(0,H.sprintf)("%s",t.slice(0,4)),gateway:e.address}}to6to4(){if(!this.is4())return null;let t=["2002",this.getBitsBase16(96,112),this.getBitsBase16(112,128),"","/16"].join(":");return new _(t)}toByteArray(){let t=this.bigInteger().toByteArray();return t.length===17&&t[0]===0?t.slice(1):t}toUnsignedByteArray(){return this.toByteArray().map(Gs)}static fromByteArray(t){return this.fromUnsignedByteArray(t.map(Gs))}static fromUnsignedByteArray(t){let e=new Z.BigInteger("256",10),n=new Z.BigInteger("0",10),i=new Z.BigInteger("1",10);for(let u=t.length-1;u>=0;u--)n=n.add(i.multiply(new Z.BigInteger(t[u].toString(10),10))),i=i.multiply(e);return _.fromBigInteger(n)}isCanonical(){return this.addressMinusSuffix===this.canonicalForm()}isLinkLocal(){return this.getBitsBase2(0,64)==="1111111010000000000000000000000000000000000000000000000000000000"}isMulticast(){return this.getType()==="Multicast"}is4(){return this.v4}isTeredo(){return this.isInSubnet(new _("2001::/32"))}is6to4(){return this.isInSubnet(new _("2002::/16"))}isLoopback(){return this.getType()==="Loopback"}href(t){return t===void 0?t="":t=(0,H.sprintf)(":%s",t),(0,H.sprintf)("http://[%s]%s/",this.correctForm(),t)}link(t){t||(t={}),t.className===void 0&&(t.className=""),t.prefix===void 0&&(t.prefix="/#address="),t.v4===void 0&&(t.v4=!1);let e=this.correctForm;return t.v4&&(e=this.to4in6),t.className?(0,H.sprintf)('<a href="%1$s%2$s" class="%3$s">%2$s</a>',t.prefix,e.call(this),t.className):(0,H.sprintf)('<a href="%1$s%2$s">%2$s</a>',t.prefix,e.call(this))}group(){if(this.elidedGroups===0)return ze(this.address).join(":");Ge(typeof this.elidedGroups=="number"),Ge(typeof this.elisionBegin=="number");let t=[],[e,n]=this.address.split("::");e.length?t.push(...ze(e)):t.push("");let i=["hover-group"];for(let u=this.elisionBegin;u<this.elisionBegin+this.elidedGroups;u++)i.push((0,H.sprintf)("group-%d",u));return t.push((0,H.sprintf)('<span class="%s"></span>',i.join(" "))),n.length?t.push(...ze(n,this.elisionEnd)):t.push(""),this.is4()&&(Ge(this.address4 instanceof D),t.pop(),t.push(this.address4.groupForV6())),t.join(":")}regularExpressionString(t=!1){let e=[],n=new _(this.correctForm());if(n.elidedGroups===0)e.push(qe(n.parsedAddress));else if(n.elidedGroups===8)e.push(nn(8));else{let i=n.address.split("::");i[0].length&&e.push(qe(i[0].split(":"))),Ge(typeof n.elidedGroups=="number"),e.push(nn(n.elidedGroups,i[0].length!==0,i[1].length!==0)),i[1].length&&e.push(qe(i[1].split(":"))),e=[e.join(":")]}return t||(e=["(?=^|",rn,"|[^\\w\\:])(",...e,")(?=[^\\w\\:]|",rn,"|$)"]),e.join("")}regularExpression(t=!1){return new RegExp(this.regularExpressionString(t),"i")}};var du=Mt("libp2p:ip-port-to-multiaddr"),sn={ERR_INVALID_IP_PARAMETER:"ERR_INVALID_IP_PARAMETER",ERR_INVALID_PORT_PARAMETER:"ERR_INVALID_PORT_PARAMETER",ERR_INVALID_IP:"ERR_INVALID_IP"};function Zs(r,t){if(typeof r!="string")throw(0,Ze.default)(new Error(`invalid ip provided: ${r}`),sn.ERR_INVALID_IP_PARAMETER);if(typeof t=="string"&&(t=parseInt(t)),isNaN(t))throw(0,Ze.default)(new Error(`invalid port provided: ${t}`),sn.ERR_INVALID_PORT_PARAMETER);try{return new D(r),vt(`/ip4/${r}/tcp/${t}`)}catch{}try{let e=new _(r);return e.is4()?vt(`/ip4/${e.to4().correctForm()}/tcp/${t}`):vt(`/ip6/${r}/tcp/${t}`)}catch{let n=`invalid ip:port for creating a multiaddr: ${r}:${t}`;throw du.error(n),(0,Ze.default)(new Error(n),sn.ERR_INVALID_IP)}}var on=k(dt("os"),1),Hs=k(dt("path"),1),mu={ip4:"IPv4",ip6:"IPv6"};function ne(r){let t=r.getPath();return t!=null?on.default.platform()==="win32"?{path:Hs.default.join("\\\\.\\pipe\\",t)}:{path:t}:r.toOptions()}function an(r,t,e){let n=i=>vt(`/${r}/${i}/tcp/${e}`);return(gu(t)?yu(mu[r]):[t]).map(n)}function gu(r){return["0.0.0.0","::"].includes(r)}var bu=on.default.networkInterfaces();function yu(r){let t=[];for(let[,e]of Object.entries(bu))if(e!=null)for(let n of e)n.family===r&&t.push(n.address);return t}var He=k(fe(),1),pt=Mt("libp2p:tcp:socket"),We=(r,t)=>{let e=t.metrics,n=t.metricPrefix??"",i=t.socketInactivityTimeout??3e4,u=t.socketCloseTimeout??2e3;t.listeningAddr?.getPath()!=null&&(t.remoteAddr=t.listeningAddr),t.remoteAddr?.getPath()!=null&&(t.localAddr=t.remoteAddr);let l;if(t.remoteAddr!=null)l=t.remoteAddr;else{if(r.remoteAddress==null||r.remotePort==null)throw(0,He.default)(new Error("Could not determine remote address or port"),"ERR_NO_REMOTE_ADDRESS");l=Zs(r.remoteAddress,r.remotePort)}let d=ne(l),b=d.path??`${d.host??""}:${d.port??""}`,{sink:A,source:f}=Ws.default.duplex(r);r.setTimeout(i,()=>{pt("%s socket read timeout",b),e?.increment({[`${n}timeout`]:!0});let v;r.readable&&(v=(0,He.default)(new Error("Socket read timeout"),"ERR_SOCKET_READ_TIMEOUT")),r.destroy(v)}),r.once("close",()=>{pt("%s socket read timeout",b),e?.increment({[`${n}close`]:!0}),w.timeline.close==null&&(w.timeline.close=Date.now())}),r.once("end",()=>{pt("socket ended",w.remoteAddr.toString()),e?.increment({[`${n}end`]:!0})});let w={async sink(v){try{await A(v)}catch(x){x.type!=="aborted"&&pt(x)}r.end()},source:f,remoteAddr:l,timeline:{open:Date.now()},async close(){if(r.destroyed){pt("%s socket was already destroyed when trying to close",b);return}pt("%s closing socket",b),await new Promise((v,x)=>{let m=Date.now(),C=setTimeout(()=>{r.destroyed?(pt("%s is already destroyed",b),v()):(pt("%s socket close timeout after %dms, destroying it manually",b,Date.now()-m),r.destroy((0,He.default)(new Error("Socket close timeout"),"ERR_SOCKET_CLOSE_TIMEOUT")))},u).unref();r.once("close",()=>{pt("%s socket closed",b),clearTimeout(C),v()}),r.once("error",B=>{pt("%s socket error",b,B),w.timeline.close==null&&(w.timeline.close=Date.now()),r.destroyed&&clearTimeout(C),x(B)}),r.setTimeout(u),r.end(),r.writableLength>0?r.once("drain",()=>{pt("%s socket drained",b),r.destroy()}):r.destroy()})}};return w};var Xs=k(dt("net"),1);var $t=function(r,t,e,n){if(e==="a"&&!n)throw new TypeError("Private accessor was defined without a getter");if(typeof t=="function"?r!==t||!n:!t.has(r))throw new TypeError("Cannot read private member from an object whose class did not declare it");return e==="m"?n:e==="a"?n.call(r):n?n.value:t.get(r)},xt,Xe=class extends EventTarget{constructor(){super(...arguments),xt.set(this,new Map)}listenerCount(t){let e=$t(this,xt,"f").get(t);return e==null?0:e.length}addEventListener(t,e,n){super.addEventListener(t,e,n);let i=$t(this,xt,"f").get(t);i==null&&(i=[],$t(this,xt,"f").set(t,i)),i.push({callback:e,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(t,e,n){super.removeEventListener(t.toString(),e??null,n);let i=$t(this,xt,"f").get(t);i!=null&&(i=i.filter(({callback:u})=>u!==e),$t(this,xt,"f").set(t,i))}dispatchEvent(t){let e=super.dispatchEvent(t),n=$t(this,xt,"f").get(t.type);return n==null||(n=n.filter(({once:i})=>!i),$t(this,xt,"f").set(t.type,n)),e}};xt=new WeakMap;var cn=class extends Event{constructor(t,e){super(t,e),this.detail=e?.detail}},we=globalThis.CustomEvent??cn;var ht=Mt("libp2p:tcp:listener");async function un(r){try{await r.close()}catch(t){ht.error("an error occurred closing the connection",t)}}var Tu=1,xu=0,Je=class extends Xe{constructor(t){super(),this.context=t,this.connections=new Set,this.status={started:!1},t.keepAlive=t.keepAlive??!0,this.addr="unknown",this.server=Xs.default.createServer(t,this.onSocket.bind(this)),t.maxConnections!==void 0&&(this.server.maxConnections=t.maxConnections),this.server.on("listening",()=>{if(t.metrics!=null){let e=this.server.address();e==null?this.addr="unknown":typeof e=="string"?this.addr=e:this.addr=`${e.address}:${e.port}`,t.metrics?.registerMetricGroup("libp2p_tcp_inbound_connections_total",{label:"address",help:"Current active connections in TCP listener",calculate:()=>({[this.addr]:this.connections.size})}),this.metrics={status:t.metrics.registerMetricGroup("libp2p_tcp_listener_status_info",{label:"address",help:"Current status of the TCP listener socket"}),errors:t.metrics.registerMetricGroup("libp2p_tcp_listener_errors_total",{label:"address",help:"Total count of TCP listener errors by type"}),events:t.metrics.registerMetricGroup("libp2p_tcp_listener_events_total",{label:"address",help:"Total count of TCP listener events by type"})},this.metrics?.status.update({[this.addr]:Tu})}this.dispatchEvent(new we("listening"))}).on("error",e=>{this.metrics?.errors.increment({[`${this.addr} listen_error`]:!0}),this.dispatchEvent(new we("error",{detail:e}))}).on("close",()=>{this.metrics?.status.update({[this.addr]:xu}),this.dispatchEvent(new we("close"))})}onSocket(t){t.on("error",n=>{ht("socket error",n),this.metrics?.events.increment({[`${this.addr} error`]:!0})});let e;try{e=We(t,{listeningAddr:this.status.started?this.status.listeningAddr:void 0,socketInactivityTimeout:this.context.socketInactivityTimeout,socketCloseTimeout:this.context.socketCloseTimeout,metrics:this.metrics?.events,metricPrefix:`${this.addr} `})}catch(n){ht.error("inbound connection failed",n),this.metrics?.errors.increment({[`${this.addr} inbound_to_connection`]:!0});return}ht("new inbound connection %s",e.remoteAddr);try{this.context.upgrader.upgradeInbound(e).then(n=>{ht("inbound connection upgraded %s",e.remoteAddr),this.connections.add(e),t.once("close",()=>{this.connections.delete(e)}),this.context.handler!=null&&this.context.handler(n),this.dispatchEvent(new we("connection",{detail:n}))}).catch(async n=>{ht.error("inbound connection failed",n),this.metrics?.errors.increment({[`${this.addr} inbound_upgrade`]:!0}),await un(e)}).catch(n=>{ht.error("closing inbound connection failed",n)})}catch(n){ht.error("inbound connection failed",n),un(e).catch(i=>{ht.error("closing inbound connection failed",i),this.metrics?.errors.increment({[`${this.addr} inbound_closing_failed`]:!0})})}}getAddrs(){if(!this.status.started)return[];let t=[],e=this.server.address(),{listeningAddr:n,peerId:i}=this.status;if(e==null)return[];if(typeof e=="string")t=[n];else try{n.toString().startsWith("/ip4")?t=t.concat(an("ip4",e.address,e.port)):e.family==="IPv6"&&(t=t.concat(an("ip6",e.address,e.port)))}catch(u){ht.error("could not turn %s:%s into multiaddr",e.address,e.port,u)}return t.map(u=>i!=null?u.encapsulate(`/p2p/${i}`):u)}async listen(t){let e=t.getPeerId(),n=e==null?t.decapsulateCode(421):t;return this.status={started:!0,listeningAddr:n,peerId:e},await new Promise((i,u)=>{let l=ne(n);this.server.on("error",d=>{u(d)}),this.server.listen(l,()=>{ht("Listening on %s",this.server.address()),i()})})}async close(){this.server.listening&&(await Promise.all(Array.from(this.connections.values()).map(async t=>await un(t))),await new Promise((t,e)=>{this.server.close(n=>n!=null?e(n):t())}))}};var St=class extends Error{constructor(t="The operation was aborted"){super(t),this.code=St.code,this.type=St.type}static get code(){return"ABORT_ERR"}static get type(){return"aborted"}};var Js=Symbol.for("@libp2p/transport");var Et=Mt("libp2p:tcp"),ln=class{constructor(t,e={}){this.opts=e,this.components=t,t.metrics!=null&&(this.metrics={dialerEvents:t.metrics.registerCounterGroup("libp2p_tcp_dialer_events_total",{label:"event",help:"Total count of TCP dialer events by type"})})}get[Js](){return!0}get[Symbol.toStringTag](){return"@libp2p/tcp"}async dial(t,e){e.keepAlive=e.keepAlive??!0;let n=await this._connect(t,e);n.on("error",d=>{Et("socket error",d)});let i=We(n,{remoteAddr:t,socketInactivityTimeout:this.opts.outboundSocketInactivityTimeout,socketCloseTimeout:this.opts.socketCloseTimeout,metrics:this.metrics?.dialerEvents}),u=()=>{i.close().catch(d=>{Et.error("Error closing maConn after abort",d)})};e.signal?.addEventListener("abort",u,{once:!0}),Et("new outbound connection %s",i.remoteAddr);let l=await e.upgrader.upgradeOutbound(i);if(Et("outbound connection %s upgraded",i.remoteAddr),e.signal?.removeEventListener("abort",u),e.signal?.aborted===!0)throw l.close().catch(d=>{Et.error("Error closing conn after abort",d)}),new St;return l}async _connect(t,e){if(e.signal?.aborted===!0)throw new St;return await new Promise((n,i)=>{let u=Date.now(),l=ne(t),d=l.path??`${l.host??""}:${l.port}`;Et("dialing %j",l);let b=Ys.default.connect(l),A=m=>{m.message=`connection error ${d}: ${m.message}`,this.metrics?.dialerEvents.increment({error:!0}),x(m)},f=()=>{Et("connection timeout %s",d),this.metrics?.dialerEvents.increment({timeout:!0});let m=(0,Ks.default)(new Error(`connection timeout after ${Date.now()-u}ms`),"ERR_CONNECT_TIMEOUT");b.emit("error",m)},w=()=>{Et("connection opened %j",l),this.metrics?.dialerEvents.increment({connect:!0}),x()},v=()=>{Et("connection aborted %j",l),this.metrics?.dialerEvents.increment({abort:!0}),b.destroy(),x(new St)},x=m=>{if(b.removeListener("error",A),b.removeListener("timeout",f),b.removeListener("connect",w),e.signal!=null&&e.signal.removeEventListener("abort",v),m!=null)return i(m);n(b)};b.on("error",A),b.on("timeout",f),b.on("connect",w),e.signal!=null&&e.signal.addEventListener("abort",v)})}createListener(t){return new Je({...t,maxConnections:this.opts.maxConnections,socketInactivityTimeout:this.opts.inboundSocketInactivityTimeout,socketCloseTimeout:this.opts.socketCloseTimeout,metrics:this.components.metrics})}filter(t){return t=Array.isArray(t)?t:[t],t.filter(e=>e.protoCodes().includes(290)?!1:e.protoCodes().includes(400)?!0:Ft.matches(e.decapsulateCode(421)))}};function Cu(r={}){return(t={})=>new ln(t,r)}return Li(Au);})();
|
|
7
|
+
return Libp2PTcp}));
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAoB,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC7G,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,yBAAyB,CAAA;AAGtE,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAItE,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,8BAA8B,CAAC,EAAE,MAAM,CAAA;IAEvC;;OAEG;IACH,+BAA+B,CAAC,EAAE,MAAM,CAAA;IAExC;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IACpD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,cAAe,SAAQ,WAAW,EAAE,gBAAgB;CAEpE;AAED,MAAM,WAAW,wBAAyB,SAAQ,qBAAqB,EAAE,gBAAgB;CAExF;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,YAAY,CAAA;CAC3B;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAoB,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC7G,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,yBAAyB,CAAA;AAGtE,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAItE,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,8BAA8B,CAAC,EAAE,MAAM,CAAA;IAEvC;;OAEG;IACH,+BAA+B,CAAC,EAAE,MAAM,CAAA;IAExC;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IACpD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,cAAe,SAAQ,WAAW,EAAE,gBAAgB;CAEpE;AAED,MAAM,WAAW,wBAAyB,SAAQ,qBAAqB,EAAE,gBAAgB;CAExF;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,YAAY,CAAA;CAC3B;AA8KD,wBAAgB,GAAG,CAAE,IAAI,GAAE,UAAe,GAAG,CAAC,UAAU,CAAC,EAAE,aAAa,KAAK,SAAS,CAIrF"}
|
package/dist/src/index.js
CHANGED
|
@@ -30,6 +30,7 @@ class TCP {
|
|
|
30
30
|
}
|
|
31
31
|
async dial(ma, options) {
|
|
32
32
|
options.keepAlive = options.keepAlive ?? true;
|
|
33
|
+
// options.signal destroys the socket before 'connect' event
|
|
33
34
|
const socket = await this._connect(ma, options);
|
|
34
35
|
// Avoid uncaught errors caused by unstable connections
|
|
35
36
|
socket.on('error', err => {
|
|
@@ -37,14 +38,26 @@ class TCP {
|
|
|
37
38
|
});
|
|
38
39
|
const maConn = toMultiaddrConnection(socket, {
|
|
39
40
|
remoteAddr: ma,
|
|
40
|
-
signal: options.signal,
|
|
41
41
|
socketInactivityTimeout: this.opts.outboundSocketInactivityTimeout,
|
|
42
42
|
socketCloseTimeout: this.opts.socketCloseTimeout,
|
|
43
43
|
metrics: this.metrics?.dialerEvents
|
|
44
44
|
});
|
|
45
|
+
const onAbort = () => {
|
|
46
|
+
maConn.close().catch(err => {
|
|
47
|
+
log.error('Error closing maConn after abort', err);
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
options.signal?.addEventListener('abort', onAbort, { once: true });
|
|
45
51
|
log('new outbound connection %s', maConn.remoteAddr);
|
|
46
52
|
const conn = await options.upgrader.upgradeOutbound(maConn);
|
|
47
|
-
log('outbound connection
|
|
53
|
+
log('outbound connection %s upgraded', maConn.remoteAddr);
|
|
54
|
+
options.signal?.removeEventListener('abort', onAbort);
|
|
55
|
+
if (options.signal?.aborted === true) {
|
|
56
|
+
conn.close().catch(err => {
|
|
57
|
+
log.error('Error closing conn after abort', err);
|
|
58
|
+
});
|
|
59
|
+
throw new AbortError();
|
|
60
|
+
}
|
|
48
61
|
return conn;
|
|
49
62
|
}
|
|
50
63
|
async _connect(ma, options) {
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,KAAK,KAAK,MAAM,qBAAqB,CAAA;AAC5C,OAAO,OAAO,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAClE,OAAO,EAAgD,MAAM,EAAa,MAAM,6BAA6B,CAAA;AAM7G,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;AAmDhC,MAAM,GAAG;IAKP,YAAa,UAAyB,EAAE,UAAsB,EAAE;QAC9D,IAAI,CAAC,IAAI,GAAG,OAAO,CAAA;QACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAE5B,IAAI,UAAU,CAAC,OAAO,IAAI,IAAI,EAAE;YAC9B,IAAI,CAAC,OAAO,GAAG;gBACb,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,gCAAgC,EAAE;oBACtF,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,0CAA0C;iBACjD,CAAC;aACH,CAAA;SACF;IACH,CAAC;IAED,IAAI,CAAC,MAAM,CAAC;QACV,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,IAAI,CAAE,EAAa,EAAE,OAAuB;QAChD,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAA;QAE7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;QAE/C,uDAAuD;QACvD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YACvB,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,CAAA;QAC1B,CAAC,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,EAAE;YAC3C,UAAU,EAAE,EAAE;YACd,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-to-conn.d.ts","sourceRoot":"","sources":["../../src/socket-to-conn.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"socket-to-conn.d.ts","sourceRoot":"","sources":["../../src/socket-to-conn.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAA;AACjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAI7D,UAAU,mBAAmB;IAC3B,aAAa,CAAC,EAAE,SAAS,CAAA;IACzB,UAAU,CAAC,EAAE,SAAS,CAAA;IACtB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,WAAY,MAAM,WAAW,mBAAmB,wBAkKjF,CAAA"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { abortableSource } from 'abortable-iterator';
|
|
2
1
|
import { logger } from '@libp2p/logger';
|
|
3
2
|
// @ts-expect-error no types
|
|
4
3
|
import toIterable from 'stream-to-it';
|
|
@@ -70,9 +69,6 @@ export const toMultiaddrConnection = (socket, options) => {
|
|
|
70
69
|
});
|
|
71
70
|
const maConn = {
|
|
72
71
|
async sink(source) {
|
|
73
|
-
if ((options?.signal) != null) {
|
|
74
|
-
source = abortableSource(source, options.signal);
|
|
75
|
-
}
|
|
76
72
|
try {
|
|
77
73
|
await sink(source);
|
|
78
74
|
}
|
|
@@ -88,7 +84,7 @@ export const toMultiaddrConnection = (socket, options) => {
|
|
|
88
84
|
// we have finished writing, send the FIN message
|
|
89
85
|
socket.end();
|
|
90
86
|
},
|
|
91
|
-
source
|
|
87
|
+
source,
|
|
92
88
|
// If the remote address was passed, use it - it may have the peer ID encapsulated
|
|
93
89
|
remoteAddr,
|
|
94
90
|
timeline: { open: Date.now() },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-to-conn.js","sourceRoot":"","sources":["../../src/socket-to-conn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"socket-to-conn.js","sourceRoot":"","sources":["../../src/socket-to-conn.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"TCPComponents": "https://libp2p.github.io/js-libp2p-tcp/interfaces/TCPComponents.html",
|
|
3
|
+
"TCPCreateListenerOptions": "https://libp2p.github.io/js-libp2p-tcp/interfaces/TCPCreateListenerOptions.html",
|
|
4
|
+
"TCPDialOptions": "https://libp2p.github.io/js-libp2p-tcp/interfaces/TCPDialOptions.html",
|
|
5
|
+
"TCPMetrics": "https://libp2p.github.io/js-libp2p-tcp/interfaces/TCPMetrics.html",
|
|
6
|
+
"TCPOptions": "https://libp2p.github.io/js-libp2p-tcp/interfaces/TCPOptions.html",
|
|
7
|
+
"TCPSocketOptions": "https://libp2p.github.io/js-libp2p-tcp/interfaces/TCPSocketOptions.html",
|
|
8
|
+
"tcp": "https://libp2p.github.io/js-libp2p-tcp/functions/tcp.html"
|
|
9
|
+
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/tcp",
|
|
3
|
-
"version": "6.0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "6.0.7",
|
|
4
|
+
"description": "A TCP transport for libp2p",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p-tcp#readme",
|
|
7
7
|
"repository": {
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"types": "./dist/src/index.d.ts",
|
|
29
29
|
"files": [
|
|
30
30
|
"src",
|
|
31
|
-
"dist
|
|
31
|
+
"dist",
|
|
32
32
|
"!dist/test",
|
|
33
33
|
"!**/*.tsbuildinfo"
|
|
34
34
|
],
|
|
@@ -134,6 +134,7 @@
|
|
|
134
134
|
"lint": "aegir lint",
|
|
135
135
|
"dep-check": "aegir dep-check",
|
|
136
136
|
"build": "aegir build",
|
|
137
|
+
"docs": "aegir docs",
|
|
137
138
|
"test": "aegir test -t node -t electron-main",
|
|
138
139
|
"test:node": "aegir test -t node --cov",
|
|
139
140
|
"test:electron-main": "aegir test -t electron-main",
|
|
@@ -148,14 +149,13 @@
|
|
|
148
149
|
"@libp2p/utils": "^3.0.2",
|
|
149
150
|
"@multiformats/mafmt": "^11.0.3",
|
|
150
151
|
"@multiformats/multiaddr": "^11.0.0",
|
|
151
|
-
"abortable-iterator": "^4.0.2",
|
|
152
152
|
"err-code": "^3.0.1",
|
|
153
153
|
"stream-to-it": "^0.2.2"
|
|
154
154
|
},
|
|
155
155
|
"devDependencies": {
|
|
156
156
|
"@libp2p/interface-mocks": "^8.0.1",
|
|
157
157
|
"@libp2p/interface-transport-compliance-tests": "^3.0.0",
|
|
158
|
-
"aegir": "^37.
|
|
158
|
+
"aegir": "^37.7.3",
|
|
159
159
|
"it-all": "^2.0.0",
|
|
160
160
|
"it-pipe": "^2.0.3",
|
|
161
161
|
"p-defer": "^4.0.0",
|
package/src/index.ts
CHANGED
|
@@ -94,6 +94,7 @@ class TCP implements Transport {
|
|
|
94
94
|
async dial (ma: Multiaddr, options: TCPDialOptions): Promise<Connection> {
|
|
95
95
|
options.keepAlive = options.keepAlive ?? true
|
|
96
96
|
|
|
97
|
+
// options.signal destroys the socket before 'connect' event
|
|
97
98
|
const socket = await this._connect(ma, options)
|
|
98
99
|
|
|
99
100
|
// Avoid uncaught errors caused by unstable connections
|
|
@@ -103,14 +104,32 @@ class TCP implements Transport {
|
|
|
103
104
|
|
|
104
105
|
const maConn = toMultiaddrConnection(socket, {
|
|
105
106
|
remoteAddr: ma,
|
|
106
|
-
signal: options.signal,
|
|
107
107
|
socketInactivityTimeout: this.opts.outboundSocketInactivityTimeout,
|
|
108
108
|
socketCloseTimeout: this.opts.socketCloseTimeout,
|
|
109
109
|
metrics: this.metrics?.dialerEvents
|
|
110
110
|
})
|
|
111
|
+
|
|
112
|
+
const onAbort = () => {
|
|
113
|
+
maConn.close().catch(err => {
|
|
114
|
+
log.error('Error closing maConn after abort', err)
|
|
115
|
+
})
|
|
116
|
+
}
|
|
117
|
+
options.signal?.addEventListener('abort', onAbort, { once: true })
|
|
118
|
+
|
|
111
119
|
log('new outbound connection %s', maConn.remoteAddr)
|
|
112
120
|
const conn = await options.upgrader.upgradeOutbound(maConn)
|
|
113
|
-
log('outbound connection
|
|
121
|
+
log('outbound connection %s upgraded', maConn.remoteAddr)
|
|
122
|
+
|
|
123
|
+
options.signal?.removeEventListener('abort', onAbort)
|
|
124
|
+
|
|
125
|
+
if (options.signal?.aborted === true) {
|
|
126
|
+
conn.close().catch(err => {
|
|
127
|
+
log.error('Error closing conn after abort', err)
|
|
128
|
+
})
|
|
129
|
+
|
|
130
|
+
throw new AbortError()
|
|
131
|
+
}
|
|
132
|
+
|
|
114
133
|
return conn
|
|
115
134
|
}
|
|
116
135
|
|
package/src/socket-to-conn.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { abortableSource } from 'abortable-iterator'
|
|
2
1
|
import { logger } from '@libp2p/logger'
|
|
3
2
|
// @ts-expect-error no types
|
|
4
3
|
import toIterable from 'stream-to-it'
|
|
@@ -17,7 +16,6 @@ interface ToConnectionOptions {
|
|
|
17
16
|
listeningAddr?: Multiaddr
|
|
18
17
|
remoteAddr?: Multiaddr
|
|
19
18
|
localAddr?: Multiaddr
|
|
20
|
-
signal?: AbortSignal
|
|
21
19
|
socketInactivityTimeout?: number
|
|
22
20
|
socketCloseTimeout?: number
|
|
23
21
|
metrics?: CounterGroup
|
|
@@ -99,10 +97,6 @@ export const toMultiaddrConnection = (socket: Socket, options: ToConnectionOptio
|
|
|
99
97
|
|
|
100
98
|
const maConn: MultiaddrConnection = {
|
|
101
99
|
async sink (source) {
|
|
102
|
-
if ((options?.signal) != null) {
|
|
103
|
-
source = abortableSource(source, options.signal)
|
|
104
|
-
}
|
|
105
|
-
|
|
106
100
|
try {
|
|
107
101
|
await sink(source)
|
|
108
102
|
} catch (err: any) {
|
|
@@ -119,7 +113,7 @@ export const toMultiaddrConnection = (socket: Socket, options: ToConnectionOptio
|
|
|
119
113
|
socket.end()
|
|
120
114
|
},
|
|
121
115
|
|
|
122
|
-
source
|
|
116
|
+
source,
|
|
123
117
|
|
|
124
118
|
// If the remote address was passed, use it - it may have the peer ID encapsulated
|
|
125
119
|
remoteAddr,
|