@oracle-agent/oracle 0.26.0 → 0.27.0
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 +1 -1
- package/dist/assets/skills/oracle-desk-product/SKILL.md +1 -1
- package/dist/bin/desk-server.mjs +35 -79
- package/dist/bin/oracle-data-mcp.mjs +13 -57
- package/dist/bin/oracle-public-server.mjs +4 -48
- package/dist/bin/oracle-route.mjs +22 -66
- package/dist/bin/oracle-scan.mjs +15 -59
- package/dist/cli/commands/chat.mjs +100 -144
- package/dist/cli/commands/doctor.mjs +4 -4
- package/dist/cli/commands/eval.mjs +147 -190
- package/dist/cli/commands/farm.mjs +34 -78
- package/dist/cli/commands/follow.mjs +17 -61
- package/dist/cli/commands/model.mjs +105 -149
- package/dist/cli/commands/receipt.mjs +3 -3
- package/dist/cli/commands/resolve.mjs +13 -57
- package/dist/cli/commands/sign.mjs +14 -14
- package/dist/cli/commands/signer.mjs +14 -14
- package/dist/cli/commands/strategy.mjs +5 -49
- package/dist/cli/commands/swap.mjs +27 -71
- package/dist/cli/commands/venues.mjs +3 -3
- package/dist/data/desk-data.mjs +33 -77
- package/dist/data/names.mjs +2 -46
- package/dist/data/providers/farming.mjs +2 -46
- package/dist/index.mjs +37 -81
- package/dist/local-signer/anvil-attestation-worker.mjs +2 -0
- package/dist/local-signer/index.mjs +3 -3
- package/dist/local-signer/runtime.mjs +13 -0
- package/dist/nft/universal-mint-router.mjs +3 -47
- package/dist/router/index.mjs +2 -46
- package/dist/router/prepare-bridge.mjs +2 -46
- package/dist/scanner/index.mjs +4 -48
- package/dist/strategy/index.mjs +3 -47
- package/package.json +2 -1
- package/public/oracle-splash/_variants/ice.html +1 -1
- package/public/oracle-splash/_variants/ivory.html +1 -1
- package/public/oracle-splash/index.html +1 -1
|
@@ -1,50 +1,6 @@
|
|
|
1
|
-
var Hw=Object.create;var Do=Object.defineProperty;var Vw=Object.getOwnPropertyDescriptor;var vw=Object.getOwnPropertyNames;var qw=Object.getPrototypeOf,Ww=Object.prototype.hasOwnProperty;var y=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(A,t)=>(typeof require<"u"?require:A)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var De=(e,A,t)=>()=>{if(t)throw t[0];try{return e&&(A=e(e=0)),A}catch(r){throw t=[r],r}};var p=(e,A)=>()=>{try{return A||e((A={exports:{}}).exports,A),A.exports}catch(t){throw A=0,t}},Pw=(e,A)=>{for(var t in A)Do(e,t,{get:A[t],enumerable:!0})},Ow=(e,A,t,r)=>{if(A&&typeof A=="object"||typeof A=="function")for(let n of vw(A))!Ww.call(e,n)&&n!==t&&Do(e,n,{get:()=>A[n],enumerable:!(r=Vw(A,n))||r.enumerable});return e};var zw=(e,A,t)=>(t=e!=null?Hw(qw(e)):{},Ow(A||!e||!e.__esModule?Do(t,"default",{value:e,enumerable:!0}):t,e));var Qe=p((yx,Hl)=>{Hl.exports={kClose:Symbol("close"),kDestroy:Symbol("destroy"),kDispatch:Symbol("dispatch"),kUrl:Symbol("url"),kWriting:Symbol("writing"),kResuming:Symbol("resuming"),kQueue:Symbol("queue"),kConnect:Symbol("connect"),kConnecting:Symbol("connecting"),kKeepAliveDefaultTimeout:Symbol("default keep alive timeout"),kKeepAliveMaxTimeout:Symbol("max keep alive timeout"),kKeepAliveTimeoutThreshold:Symbol("keep alive timeout threshold"),kKeepAliveTimeoutValue:Symbol("keep alive timeout"),kKeepAlive:Symbol("keep alive"),kHeadersTimeout:Symbol("headers timeout"),kBodyTimeout:Symbol("body timeout"),kServerName:Symbol("server name"),kLocalAddress:Symbol("local address"),kHost:Symbol("host"),kNoRef:Symbol("no ref"),kBodyUsed:Symbol("used"),kBody:Symbol("abstracted request body"),kRunning:Symbol("running"),kBlocking:Symbol("blocking"),kPending:Symbol("pending"),kSize:Symbol("size"),kBusy:Symbol("busy"),kQueued:Symbol("queued"),kFree:Symbol("free"),kConnected:Symbol("connected"),kClosed:Symbol("closed"),kNeedDrain:Symbol("need drain"),kReset:Symbol("reset"),kDestroyed:Symbol.for("nodejs.stream.destroyed"),kResume:Symbol("resume"),kOnError:Symbol("on error"),kMaxHeadersSize:Symbol("max headers size"),kRunningIdx:Symbol("running index"),kPendingIdx:Symbol("pending index"),kError:Symbol("error"),kClients:Symbol("clients"),kClient:Symbol("client"),kParser:Symbol("parser"),kOnDestroyed:Symbol("destroy callbacks"),kPipelining:Symbol("pipelining"),kSocket:Symbol("socket"),kHostHeader:Symbol("host header"),kConnector:Symbol("connector"),kStrictContentLength:Symbol("strict content length"),kMaxRedirections:Symbol("maxRedirections"),kMaxRequests:Symbol("maxRequestsPerClient"),kProxy:Symbol("proxy agent options"),kCounter:Symbol("socket request counter"),kInterceptors:Symbol("dispatch interceptors"),kMaxResponseSize:Symbol("max response size"),kHTTP2Session:Symbol("http2Session"),kHTTP2SessionState:Symbol("http2Session state"),kRetryHandlerDefaultRetry:Symbol("retry agent default retry"),kConstruct:Symbol("constructable"),kListeners:Symbol("listeners"),kHTTPContext:Symbol("http context"),kMaxConcurrentStreams:Symbol("max concurrent streams"),kNoProxyAgent:Symbol("no proxy agent"),kHttpProxyAgent:Symbol("http proxy agent"),kHttpsProxyAgent:Symbol("https proxy agent")}});var Z=p((px,lQ)=>{"use strict";var Vl=Symbol.for("undici.error.UND_ERR"),Ee=class extends Error{constructor(A){super(A),this.name="UndiciError",this.code="UND_ERR"}static[Symbol.hasInstance](A){return A&&A[Vl]===!0}[Vl]=!0},vl=Symbol.for("undici.error.UND_ERR_CONNECT_TIMEOUT"),ko=class extends Ee{constructor(A){super(A),this.name="ConnectTimeoutError",this.message=A||"Connect Timeout Error",this.code="UND_ERR_CONNECT_TIMEOUT"}static[Symbol.hasInstance](A){return A&&A[vl]===!0}[vl]=!0},ql=Symbol.for("undici.error.UND_ERR_HEADERS_TIMEOUT"),bo=class extends Ee{constructor(A){super(A),this.name="HeadersTimeoutError",this.message=A||"Headers Timeout Error",this.code="UND_ERR_HEADERS_TIMEOUT"}static[Symbol.hasInstance](A){return A&&A[ql]===!0}[ql]=!0},Wl=Symbol.for("undici.error.UND_ERR_HEADERS_OVERFLOW"),Fo=class extends Ee{constructor(A){super(A),this.name="HeadersOverflowError",this.message=A||"Headers Overflow Error",this.code="UND_ERR_HEADERS_OVERFLOW"}static[Symbol.hasInstance](A){return A&&A[Wl]===!0}[Wl]=!0},Pl=Symbol.for("undici.error.UND_ERR_BODY_TIMEOUT"),Ro=class extends Ee{constructor(A){super(A),this.name="BodyTimeoutError",this.message=A||"Body Timeout Error",this.code="UND_ERR_BODY_TIMEOUT"}static[Symbol.hasInstance](A){return A&&A[Pl]===!0}[Pl]=!0},Ol=Symbol.for("undici.error.UND_ERR_RESPONSE_STATUS_CODE"),So=class extends Ee{constructor(A,t,r,n){super(A),this.name="ResponseStatusCodeError",this.message=A||"Response Status Code Error",this.code="UND_ERR_RESPONSE_STATUS_CODE",this.body=n,this.status=t,this.statusCode=t,this.headers=r}static[Symbol.hasInstance](A){return A&&A[Ol]===!0}[Ol]=!0},zl=Symbol.for("undici.error.UND_ERR_INVALID_ARG"),No=class extends Ee{constructor(A){super(A),this.name="InvalidArgumentError",this.message=A||"Invalid Argument Error",this.code="UND_ERR_INVALID_ARG"}static[Symbol.hasInstance](A){return A&&A[zl]===!0}[zl]=!0},Zl=Symbol.for("undici.error.UND_ERR_INVALID_RETURN_VALUE"),Mo=class extends Ee{constructor(A){super(A),this.name="InvalidReturnValueError",this.message=A||"Invalid Return Value Error",this.code="UND_ERR_INVALID_RETURN_VALUE"}static[Symbol.hasInstance](A){return A&&A[Zl]===!0}[Zl]=!0},_l=Symbol.for("undici.error.UND_ERR_ABORT"),Is=class extends Ee{constructor(A){super(A),this.name="AbortError",this.message=A||"The operation was aborted",this.code="UND_ERR_ABORT"}static[Symbol.hasInstance](A){return A&&A[_l]===!0}[_l]=!0},Kl=Symbol.for("undici.error.UND_ERR_ABORTED"),Uo=class extends Is{constructor(A){super(A),this.name="AbortError",this.message=A||"Request aborted",this.code="UND_ERR_ABORTED"}static[Symbol.hasInstance](A){return A&&A[Kl]===!0}[Kl]=!0},Xl=Symbol.for("undici.error.UND_ERR_INFO"),Lo=class extends Ee{constructor(A){super(A),this.name="InformationalError",this.message=A||"Request information",this.code="UND_ERR_INFO"}static[Symbol.hasInstance](A){return A&&A[Xl]===!0}[Xl]=!0},jl=Symbol.for("undici.error.UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"),To=class extends Ee{constructor(A){super(A),this.name="RequestContentLengthMismatchError",this.message=A||"Request body length does not match content-length header",this.code="UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"}static[Symbol.hasInstance](A){return A&&A[jl]===!0}[jl]=!0},$l=Symbol.for("undici.error.UND_ERR_RES_CONTENT_LENGTH_MISMATCH"),xo=class extends Ee{constructor(A){super(A),this.name="ResponseContentLengthMismatchError",this.message=A||"Response body length does not match content-length header",this.code="UND_ERR_RES_CONTENT_LENGTH_MISMATCH"}static[Symbol.hasInstance](A){return A&&A[$l]===!0}[$l]=!0},eQ=Symbol.for("undici.error.UND_ERR_DESTROYED"),Yo=class extends Ee{constructor(A){super(A),this.name="ClientDestroyedError",this.message=A||"The client is destroyed",this.code="UND_ERR_DESTROYED"}static[Symbol.hasInstance](A){return A&&A[eQ]===!0}[eQ]=!0},AQ=Symbol.for("undici.error.UND_ERR_CLOSED"),Go=class extends Ee{constructor(A){super(A),this.name="ClientClosedError",this.message=A||"The client is closed",this.code="UND_ERR_CLOSED"}static[Symbol.hasInstance](A){return A&&A[AQ]===!0}[AQ]=!0},tQ=Symbol.for("undici.error.UND_ERR_SOCKET"),Jo=class extends Ee{constructor(A,t){super(A),this.name="SocketError",this.message=A||"Socket error",this.code="UND_ERR_SOCKET",this.socket=t}static[Symbol.hasInstance](A){return A&&A[tQ]===!0}[tQ]=!0},rQ=Symbol.for("undici.error.UND_ERR_NOT_SUPPORTED"),Ho=class extends Ee{constructor(A){super(A),this.name="NotSupportedError",this.message=A||"Not supported error",this.code="UND_ERR_NOT_SUPPORTED"}static[Symbol.hasInstance](A){return A&&A[rQ]===!0}[rQ]=!0},nQ=Symbol.for("undici.error.UND_ERR_BPL_MISSING_UPSTREAM"),Vo=class extends Ee{constructor(A){super(A),this.name="MissingUpstreamError",this.message=A||"No upstream has been added to the BalancedPool",this.code="UND_ERR_BPL_MISSING_UPSTREAM"}static[Symbol.hasInstance](A){return A&&A[nQ]===!0}[nQ]=!0},sQ=Symbol.for("undici.error.UND_ERR_HTTP_PARSER"),vo=class extends Error{constructor(A,t,r){super(A),this.name="HTTPParserError",this.code=t?`HPE_${t}`:void 0,this.data=r?r.toString():void 0}static[Symbol.hasInstance](A){return A&&A[sQ]===!0}[sQ]=!0},iQ=Symbol.for("undici.error.UND_ERR_RES_EXCEEDED_MAX_SIZE"),qo=class extends Ee{constructor(A){super(A),this.name="ResponseExceededMaxSizeError",this.message=A||"Response content exceeded max size",this.code="UND_ERR_RES_EXCEEDED_MAX_SIZE"}static[Symbol.hasInstance](A){return A&&A[iQ]===!0}[iQ]=!0},oQ=Symbol.for("undici.error.UND_ERR_REQ_RETRY"),Wo=class extends Ee{constructor(A,t,{headers:r,data:n}){super(A),this.name="RequestRetryError",this.message=A||"Request retry error",this.code="UND_ERR_REQ_RETRY",this.statusCode=t,this.data=n,this.headers=r}static[Symbol.hasInstance](A){return A&&A[oQ]===!0}[oQ]=!0},aQ=Symbol.for("undici.error.UND_ERR_RESPONSE"),Po=class extends Ee{constructor(A,t,{headers:r,data:n}){super(A),this.name="ResponseError",this.message=A||"Response error",this.code="UND_ERR_RESPONSE",this.statusCode=t,this.data=n,this.headers=r}static[Symbol.hasInstance](A){return A&&A[aQ]===!0}[aQ]=!0},cQ=Symbol.for("undici.error.UND_ERR_PRX_TLS"),Oo=class extends Ee{constructor(A,t,r){super(t,{cause:A,...r??{}}),this.name="SecureProxyConnectionError",this.message=t||"Secure Proxy Connection failed",this.code="UND_ERR_PRX_TLS",this.cause=A}static[Symbol.hasInstance](A){return A&&A[cQ]===!0}[cQ]=!0},gQ=Symbol.for("undici.error.UND_ERR_WS_MESSAGE_SIZE_EXCEEDED"),zo=class extends Ee{constructor(A){super(A),this.name="MessageSizeExceededError",this.message=A||"Max decompressed message size exceeded",this.code="UND_ERR_WS_MESSAGE_SIZE_EXCEEDED"}static[Symbol.hasInstance](A){return A&&A[gQ]===!0}get[gQ](){return!0}};lQ.exports={AbortError:Is,HTTPParserError:vo,UndiciError:Ee,HeadersTimeoutError:bo,HeadersOverflowError:Fo,BodyTimeoutError:Ro,RequestContentLengthMismatchError:To,ConnectTimeoutError:ko,ResponseStatusCodeError:So,InvalidArgumentError:No,InvalidReturnValueError:Mo,RequestAbortedError:Uo,ClientDestroyedError:Yo,ClientClosedError:Go,InformationalError:Lo,SocketError:Jo,NotSupportedError:Ho,ResponseContentLengthMismatchError:xo,BalancedPoolMissingUpstreamError:Vo,ResponseExceededMaxSizeError:qo,RequestRetryError:Wo,ResponseError:Po,SecureProxyConnectionError:Oo,MessageSizeExceededError:zo}});var Cs=p((mx,QQ)=>{"use strict";var hs={},Zo=["Accept","Accept-Encoding","Accept-Language","Accept-Ranges","Access-Control-Allow-Credentials","Access-Control-Allow-Headers","Access-Control-Allow-Methods","Access-Control-Allow-Origin","Access-Control-Expose-Headers","Access-Control-Max-Age","Access-Control-Request-Headers","Access-Control-Request-Method","Age","Allow","Alt-Svc","Alt-Used","Authorization","Cache-Control","Clear-Site-Data","Connection","Content-Disposition","Content-Encoding","Content-Language","Content-Length","Content-Location","Content-Range","Content-Security-Policy","Content-Security-Policy-Report-Only","Content-Type","Cookie","Cross-Origin-Embedder-Policy","Cross-Origin-Opener-Policy","Cross-Origin-Resource-Policy","Date","Device-Memory","Downlink","ECT","ETag","Expect","Expect-CT","Expires","Forwarded","From","Host","If-Match","If-Modified-Since","If-None-Match","If-Range","If-Unmodified-Since","Keep-Alive","Last-Modified","Link","Location","Max-Forwards","Origin","Permissions-Policy","Pragma","Proxy-Authenticate","Proxy-Authorization","RTT","Range","Referer","Referrer-Policy","Refresh","Retry-After","Sec-WebSocket-Accept","Sec-WebSocket-Extensions","Sec-WebSocket-Key","Sec-WebSocket-Protocol","Sec-WebSocket-Version","Server","Server-Timing","Service-Worker-Allowed","Service-Worker-Navigation-Preload","Set-Cookie","SourceMap","Strict-Transport-Security","Supports-Loading-Mode","TE","Timing-Allow-Origin","Trailer","Transfer-Encoding","Upgrade","Upgrade-Insecure-Requests","User-Agent","Vary","Via","WWW-Authenticate","X-Content-Type-Options","X-DNS-Prefetch-Control","X-Frame-Options","X-Permitted-Cross-Domain-Policies","X-Powered-By","X-Requested-With","X-XSS-Protection"];for(let e=0;e<Zo.length;++e){let A=Zo[e],t=A.toLowerCase();hs[A]=hs[t]=t}Object.setPrototypeOf(hs,null);QQ.exports={wellknownHeaderNames:Zo,headerNameLowerCasedRecord:hs}});var IQ=p((Dx,uQ)=>{"use strict";var{wellknownHeaderNames:EQ,headerNameLowerCasedRecord:Zw}=Cs(),_o=class e{value=null;left=null;middle=null;right=null;code;constructor(A,t,r){if(r===void 0||r>=A.length)throw new TypeError("Unreachable");if((this.code=A.charCodeAt(r))>127)throw new TypeError("key must be ascii string");A.length!==++r?this.middle=new e(A,t,r):this.value=t}add(A,t){let r=A.length;if(r===0)throw new TypeError("Unreachable");let n=0,s=this;for(;;){let i=A.charCodeAt(n);if(i>127)throw new TypeError("key must be ascii string");if(s.code===i)if(r===++n){s.value=t;break}else if(s.middle!==null)s=s.middle;else{s.middle=new e(A,t,n);break}else if(s.code<i)if(s.left!==null)s=s.left;else{s.left=new e(A,t,n);break}else if(s.right!==null)s=s.right;else{s.right=new e(A,t,n);break}}}search(A){let t=A.length,r=0,n=this;for(;n!==null&&r<t;){let s=A[r];for(s<=90&&s>=65&&(s|=32);n!==null;){if(s===n.code){if(t===++r)return n;n=n.middle;break}n=n.code<s?n.left:n.right}}return null}},fs=class{node=null;insert(A,t){this.node===null?this.node=new _o(A,t,0):this.node.add(A,t)}lookup(A){return this.node?.search(A)?.value??null}},BQ=new fs;for(let e=0;e<EQ.length;++e){let A=Zw[EQ[e]];BQ.insert(A,A)}uQ.exports={TernarySearchTree:fs,tree:BQ}});var v=p((kx,MQ)=>{"use strict";var rn=y("node:assert"),{kDestroyed:CQ,kBodyUsed:Kt,kListeners:Ko,kBody:hQ}=Qe(),{IncomingMessage:_w}=y("node:http"),ys=y("node:stream"),Kw=y("node:net"),{Blob:Xw}=y("node:buffer"),jw=y("node:util"),{stringify:$w}=y("node:querystring"),{EventEmitter:ey}=y("node:events"),{InvalidArgumentError:be}=Z(),{headerNameLowerCasedRecord:Ay}=Cs(),{tree:fQ}=IQ(),[ty,ry]=process.versions.node.split(".").map(e=>Number(e)),ws=class{constructor(A){this[hQ]=A,this[Kt]=!1}async*[Symbol.asyncIterator](){rn(!this[Kt],"disturbed"),this[Kt]=!0,yield*this[hQ]}};function ny(e){return ps(e)?(mQ(e)===0&&e.on("data",function(){rn(!1)}),typeof e.readableDidRead!="boolean"&&(e[Kt]=!1,ey.prototype.on.call(e,"data",function(){this[Kt]=!0})),e):e&&typeof e.pipeTo=="function"?new ws(e):e&&typeof e!="string"&&!ArrayBuffer.isView(e)&&pQ(e)?new ws(e):e}function sy(){}function ps(e){return e&&typeof e=="object"&&typeof e.pipe=="function"&&typeof e.on=="function"}function dQ(e){if(e===null)return!1;if(e instanceof Xw)return!0;if(typeof e!="object")return!1;{let A=e[Symbol.toStringTag];return(A==="Blob"||A==="File")&&("stream"in e&&typeof e.stream=="function"||"arrayBuffer"in e&&typeof e.arrayBuffer=="function")}}function iy(e,A){if(e.includes("?")||e.includes("#"))throw new Error('Query params cannot be passed when url already contains "?" or "#".');let t=$w(A);return t&&(e+="?"+t),e}function wQ(e){let A=parseInt(e,10);return A===Number(e)&&A>=0&&A<=65535}function ds(e){return e!=null&&e[0]==="h"&&e[1]==="t"&&e[2]==="t"&&e[3]==="p"&&(e[4]===":"||e[4]==="s"&&e[5]===":")}function yQ(e){if(typeof e=="string"){if(e=new URL(e),!ds(e.origin||e.protocol))throw new be("Invalid URL protocol: the URL must start with `http:` or `https:`.");return e}if(!e||typeof e!="object")throw new be("Invalid URL: The URL argument must be a non-null object.");if(!(e instanceof URL)){if(e.port!=null&&e.port!==""&&wQ(e.port)===!1)throw new be("Invalid URL: port must be a valid integer or a string representation of an integer.");if(e.path!=null&&typeof e.path!="string")throw new be("Invalid URL path: the path must be a string or null/undefined.");if(e.pathname!=null&&typeof e.pathname!="string")throw new be("Invalid URL pathname: the pathname must be a string or null/undefined.");if(e.hostname!=null&&typeof e.hostname!="string")throw new be("Invalid URL hostname: the hostname must be a string or null/undefined.");if(e.origin!=null&&typeof e.origin!="string")throw new be("Invalid URL origin: the origin must be a string or null/undefined.");if(!ds(e.origin||e.protocol))throw new be("Invalid URL protocol: the URL must start with `http:` or `https:`.");let A=e.port!=null?e.port:e.protocol==="https:"?443:80,t=e.origin!=null?e.origin:`${e.protocol||""}//${e.hostname||""}:${A}`,r=e.path!=null?e.path:`${e.pathname||""}${e.search||""}`;return t[t.length-1]==="/"&&(t=t.slice(0,t.length-1)),r&&r[0]!=="/"&&(r=`/${r}`),new URL(`${t}${r}`)}if(!ds(e.origin||e.protocol))throw new be("Invalid URL protocol: the URL must start with `http:` or `https:`.");return e}function oy(e){if(e=yQ(e),e.pathname!=="/"||e.search||e.hash)throw new be("invalid url");return e}function ay(e){if(e[0]==="["){let t=e.indexOf("]");return rn(t!==-1),e.substring(1,t)}let A=e.indexOf(":");return A===-1?e:e.substring(0,A)}function cy(e){if(!e)return null;rn(typeof e=="string");let A=ay(e);return Kw.isIP(A)?"":A}function gy(e){return JSON.parse(JSON.stringify(e))}function ly(e){return e!=null&&typeof e[Symbol.asyncIterator]=="function"}function pQ(e){return e!=null&&(typeof e[Symbol.iterator]=="function"||typeof e[Symbol.asyncIterator]=="function")}function mQ(e){if(e==null)return 0;if(ps(e)){let A=e._readableState;return A&&A.objectMode===!1&&A.ended===!0&&Number.isFinite(A.length)?A.length:null}else{if(dQ(e))return e.size!=null?e.size:null;if(bQ(e))return e.byteLength}return null}function DQ(e){return e&&!!(e.destroyed||e[CQ]||ys.isDestroyed?.(e))}function Qy(e,A){e==null||!ps(e)||DQ(e)||(typeof e.destroy=="function"?(Object.getPrototypeOf(e).constructor===_w&&(e.socket=null),e.destroy(A)):A&&queueMicrotask(()=>{e.emit("error",A)}),e.destroyed!==!0&&(e[CQ]=!0))}var Ey=/timeout=(\d+)/;function By(e){let A=e.toString().match(Ey);return A?parseInt(A[1],10)*1e3:null}function kQ(e){return typeof e=="string"?Ay[e]??e.toLowerCase():fQ.lookup(e)??e.toString("latin1").toLowerCase()}function uy(e){return fQ.lookup(e)??e.toString("latin1").toLowerCase()}function Iy(e,A){A===void 0&&(A={});for(let t=0;t<e.length;t+=2){let r=kQ(e[t]),n=A[r];if(n)typeof n=="string"&&(n=[n],A[r]=n),n.push(e[t+1].toString("utf8"));else{let s=e[t+1];typeof s=="string"?A[r]=s:A[r]=Array.isArray(s)?s.map(i=>i.toString("utf8")):s.toString("utf8")}}return"content-length"in A&&"content-disposition"in A&&(A["content-disposition"]=Buffer.from(A["content-disposition"]).toString("latin1")),A}function hy(e){let A=e.length,t=new Array(A),r=!1,n=-1,s,i,o=0;for(let a=0;a<e.length;a+=2)s=e[a],i=e[a+1],typeof s!="string"&&(s=s.toString()),typeof i!="string"&&(i=i.toString("utf8")),o=s.length,o===14&&s[7]==="-"&&(s==="content-length"||s.toLowerCase()==="content-length")?r=!0:o===19&&s[7]==="-"&&(s==="content-disposition"||s.toLowerCase()==="content-disposition")&&(n=a+1),t[a]=s,t[a+1]=i;return r&&n!==-1&&(t[n]=Buffer.from(t[n]).toString("latin1")),t}function bQ(e){return e instanceof Uint8Array||Buffer.isBuffer(e)}function Cy(e,A,t){if(!e||typeof e!="object")throw new be("handler must be an object");if(typeof e.onConnect!="function")throw new be("invalid onConnect method");if(typeof e.onError!="function")throw new be("invalid onError method");if(typeof e.onBodySent!="function"&&e.onBodySent!==void 0)throw new be("invalid onBodySent method");if(t||A==="CONNECT"){if(typeof e.onUpgrade!="function")throw new be("invalid onUpgrade method")}else{if(typeof e.onHeaders!="function")throw new be("invalid onHeaders method");if(typeof e.onData!="function")throw new be("invalid onData method");if(typeof e.onComplete!="function")throw new be("invalid onComplete method")}}function fy(e){return!!(e&&(ys.isDisturbed(e)||e[Kt]))}function dy(e){return!!(e&&ys.isErrored(e))}function wy(e){return!!(e&&ys.isReadable(e))}function yy(e){return{localAddress:e.localAddress,localPort:e.localPort,remoteAddress:e.remoteAddress,remotePort:e.remotePort,remoteFamily:e.remoteFamily,timeout:e.timeout,bytesWritten:e.bytesWritten,bytesRead:e.bytesRead}}function py(e){let A;return new ReadableStream({async start(){A=e[Symbol.asyncIterator]()},async pull(t){let{done:r,value:n}=await A.next();if(r)queueMicrotask(()=>{t.close(),t.byobRequest?.respond(0)});else{let s=Buffer.isBuffer(n)?n:Buffer.from(n);s.byteLength&&t.enqueue(new Uint8Array(s))}return t.desiredSize>0},async cancel(t){await A.return()},type:"bytes"})}function my(e){return e&&typeof e=="object"&&typeof e.append=="function"&&typeof e.delete=="function"&&typeof e.get=="function"&&typeof e.getAll=="function"&&typeof e.has=="function"&&typeof e.set=="function"&&e[Symbol.toStringTag]==="FormData"}function Dy(e,A){return"addEventListener"in e?(e.addEventListener("abort",A,{once:!0}),()=>e.removeEventListener("abort",A)):(e.addListener("abort",A),()=>e.removeListener("abort",A))}var ky=typeof String.prototype.toWellFormed=="function",by=typeof String.prototype.isWellFormed=="function";function FQ(e){return ky?`${e}`.toWellFormed():jw.toUSVString(e)}function Fy(e){return by?`${e}`.isWellFormed():FQ(e)===`${e}`}function RQ(e){switch(e){case 34:case 40:case 41:case 44:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 123:case 125:return!1;default:return e>=33&&e<=126}}function Ry(e){if(e.length===0)return!1;for(let A=0;A<e.length;++A)if(!RQ(e.charCodeAt(A)))return!1;return!0}var Sy=/[^\t\x20-\x7e\x80-\xff]/;function Ny(e){return!Sy.test(e)}function My(e){if(e==null||e==="")return{start:0,end:null,size:null};let A=e?e.match(/^bytes (\d+)-(\d+)\/(\d+)?$/):null;return A?{start:parseInt(A[1]),end:A[2]?parseInt(A[2]):null,size:A[3]?parseInt(A[3]):null}:null}function Uy(e,A,t){return(e[Ko]??=[]).push([A,t]),e.on(A,t),e}function Ly(e){for(let[A,t]of e[Ko]??[])e.removeListener(A,t);e[Ko]=null}function Ty(e,A,t){try{A.onError(t),rn(A.aborted)}catch(r){e.emit("error",r)}}var SQ=Object.create(null);SQ.enumerable=!0;var Xo={delete:"DELETE",DELETE:"DELETE",get:"GET",GET:"GET",head:"HEAD",HEAD:"HEAD",options:"OPTIONS",OPTIONS:"OPTIONS",post:"POST",POST:"POST",put:"PUT",PUT:"PUT"},NQ={...Xo,patch:"patch",PATCH:"PATCH"};Object.setPrototypeOf(Xo,null);Object.setPrototypeOf(NQ,null);MQ.exports={kEnumerableProperty:SQ,nop:sy,isDisturbed:fy,isErrored:dy,isReadable:wy,toUSVString:FQ,isUSVString:Fy,isBlobLike:dQ,parseOrigin:oy,parseURL:yQ,getServerName:cy,isStream:ps,isIterable:pQ,isAsyncIterable:ly,isDestroyed:DQ,headerNameToString:kQ,bufferToLowerCasedHeaderName:uy,addListener:Uy,removeAllListeners:Ly,errorRequest:Ty,parseRawHeaders:hy,parseHeaders:Iy,parseKeepAliveTimeout:By,destroy:Qy,bodyLength:mQ,deepClone:gy,ReadableStreamFrom:py,isBuffer:bQ,validateHandler:Cy,getSocketInfo:yy,isFormDataLike:my,buildURL:iy,addAbortListener:Dy,isValidHTTPToken:Ry,isValidHeaderValue:Ny,isTokenCharCode:RQ,parseRangeHeader:My,normalizedMethodRecordsBase:Xo,normalizedMethodRecords:NQ,isValidPort:wQ,isHttpOrHttpsPrefixed:ds,nodeMajor:ty,nodeMinor:ry,safeHTTPMethods:["GET","HEAD","OPTIONS","TRACE"],wrapRequestBody:ny}});var Xt=p((bx,LQ)=>{"use strict";var $=y("node:diagnostics_channel"),$o=y("node:util"),ms=$o.debuglog("undici"),jo=$o.debuglog("fetch"),Ct=$o.debuglog("websocket"),UQ=!1,xy={beforeConnect:$.channel("undici:client:beforeConnect"),connected:$.channel("undici:client:connected"),connectError:$.channel("undici:client:connectError"),sendHeaders:$.channel("undici:client:sendHeaders"),create:$.channel("undici:request:create"),bodySent:$.channel("undici:request:bodySent"),headers:$.channel("undici:request:headers"),trailers:$.channel("undici:request:trailers"),error:$.channel("undici:request:error"),open:$.channel("undici:websocket:open"),close:$.channel("undici:websocket:close"),socketError:$.channel("undici:websocket:socket_error"),ping:$.channel("undici:websocket:ping"),pong:$.channel("undici:websocket:pong")};if(ms.enabled||jo.enabled){let e=jo.enabled?jo:ms;$.channel("undici:client:beforeConnect").subscribe(A=>{let{connectParams:{version:t,protocol:r,port:n,host:s}}=A;e("connecting to %s using %s%s",`${s}${n?`:${n}`:""}`,r,t)}),$.channel("undici:client:connected").subscribe(A=>{let{connectParams:{version:t,protocol:r,port:n,host:s}}=A;e("connected to %s using %s%s",`${s}${n?`:${n}`:""}`,r,t)}),$.channel("undici:client:connectError").subscribe(A=>{let{connectParams:{version:t,protocol:r,port:n,host:s},error:i}=A;e("connection to %s using %s%s errored - %s",`${s}${n?`:${n}`:""}`,r,t,i.message)}),$.channel("undici:client:sendHeaders").subscribe(A=>{let{request:{method:t,path:r,origin:n}}=A;e("sending request to %s %s/%s",t,n,r)}),$.channel("undici:request:headers").subscribe(A=>{let{request:{method:t,path:r,origin:n},response:{statusCode:s}}=A;e("received response to %s %s/%s - HTTP %d",t,n,r,s)}),$.channel("undici:request:trailers").subscribe(A=>{let{request:{method:t,path:r,origin:n}}=A;e("trailers received from %s %s/%s",t,n,r)}),$.channel("undici:request:error").subscribe(A=>{let{request:{method:t,path:r,origin:n},error:s}=A;e("request to %s %s/%s errored - %s",t,n,r,s.message)}),UQ=!0}if(Ct.enabled){if(!UQ){let e=ms.enabled?ms:Ct;$.channel("undici:client:beforeConnect").subscribe(A=>{let{connectParams:{version:t,protocol:r,port:n,host:s}}=A;e("connecting to %s%s using %s%s",s,n?`:${n}`:"",r,t)}),$.channel("undici:client:connected").subscribe(A=>{let{connectParams:{version:t,protocol:r,port:n,host:s}}=A;e("connected to %s%s using %s%s",s,n?`:${n}`:"",r,t)}),$.channel("undici:client:connectError").subscribe(A=>{let{connectParams:{version:t,protocol:r,port:n,host:s},error:i}=A;e("connection to %s%s using %s%s errored - %s",s,n?`:${n}`:"",r,t,i.message)}),$.channel("undici:client:sendHeaders").subscribe(A=>{let{request:{method:t,path:r,origin:n}}=A;e("sending request to %s %s/%s",t,n,r)})}$.channel("undici:websocket:open").subscribe(e=>{let{address:{address:A,port:t}}=e;Ct("connection opened %s%s",A,t?`:${t}`:"")}),$.channel("undici:websocket:close").subscribe(e=>{let{websocket:A,code:t,reason:r}=e;Ct("closed connection to %s - %s %s",A.url,t,r)}),$.channel("undici:websocket:socket_error").subscribe(e=>{Ct("connection errored - %s",e.message)}),$.channel("undici:websocket:ping").subscribe(e=>{Ct("ping received")}),$.channel("undici:websocket:pong").subscribe(e=>{Ct("pong received")})}LQ.exports={channels:xy}});var GQ=p((Fx,YQ)=>{"use strict";var{InvalidArgumentError:re,NotSupportedError:Yy}=Z(),YA=y("node:assert"),{isValidHTTPToken:xQ,isValidHeaderValue:nn,isStream:Gy,destroy:Jy,isBuffer:Hy,isFormDataLike:Vy,isIterable:vy,isBlobLike:qy,buildURL:Wy,validateHandler:Py,getServerName:Oy,normalizedMethodRecords:zy}=v(),{channels:pA}=Xt(),{headerNameLowerCasedRecord:TQ}=Cs(),Zy=/[^\u0021-\u00ff]/,tA=Symbol("handler"),ea=class{constructor(A,{path:t,method:r,body:n,headers:s,query:i,idempotent:o,blocking:a,upgrade:g,headersTimeout:l,bodyTimeout:c,reset:Q,throwOnError:B,expectContinue:E,servername:u},h){if(typeof t!="string")throw new re("path must be a string");if(t[0]!=="/"&&!(t.startsWith("http://")||t.startsWith("https://"))&&r!=="CONNECT")throw new re("path must be an absolute URL or start with a slash");if(Zy.test(t))throw new re("invalid request path");if(typeof r!="string")throw new re("method must be a string");if(zy[r]===void 0&&!xQ(r))throw new re("invalid request method");if(g&&typeof g!="string")throw new re("upgrade must be a string");if(g&&!nn(g))throw new re("invalid upgrade header");if(l!=null&&(!Number.isFinite(l)||l<0))throw new re("invalid headersTimeout");if(c!=null&&(!Number.isFinite(c)||c<0))throw new re("invalid bodyTimeout");if(Q!=null&&typeof Q!="boolean")throw new re("invalid reset");if(E!=null&&typeof E!="boolean")throw new re("invalid expectContinue");if(this.headersTimeout=l,this.bodyTimeout=c,this.throwOnError=B===!0,this.method=r,this.abort=null,n==null)this.body=null;else if(Gy(n)){this.body=n;let I=this.body._readableState;(!I||!I.autoDestroy)&&(this.endHandler=function(){Jy(this)},this.body.on("end",this.endHandler)),this.errorHandler=C=>{this.abort?this.abort(C):this.error=C},this.body.on("error",this.errorHandler)}else if(Hy(n))this.body=n.byteLength?n:null;else if(ArrayBuffer.isView(n))this.body=n.buffer.byteLength?Buffer.from(n.buffer,n.byteOffset,n.byteLength):null;else if(n instanceof ArrayBuffer)this.body=n.byteLength?Buffer.from(n):null;else if(typeof n=="string")this.body=n.length?Buffer.from(n):null;else if(Vy(n)||vy(n)||qy(n))this.body=n;else throw new re("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable");if(this.completed=!1,this.aborted=!1,this.upgrade=g||null,this.path=i?Wy(t,i):t,this.origin=A,this.idempotent=o??(r==="HEAD"||r==="GET"),this.blocking=a??!1,this.reset=Q??null,this.host=null,this.contentLength=null,this.contentType=null,this.headers=[],this.expectContinue=E??!1,Array.isArray(s)){if(s.length%2!==0)throw new re("headers array must be even");for(let I=0;I<s.length;I+=2)Ds(this,s[I],s[I+1])}else if(s&&typeof s=="object")if(s[Symbol.iterator])for(let I of s){if(!Array.isArray(I)||I.length!==2)throw new re("headers must be in key-value pair format");Ds(this,I[0],I[1])}else{let I=Object.keys(s);for(let C=0;C<I.length;++C)Ds(this,I[C],s[I[C]])}else if(s!=null)throw new re("headers must be an object or an array");Py(h,r,g),this.servername=u||Oy(this.host),this[tA]=h,pA.create.hasSubscribers&&pA.create.publish({request:this})}onBodySent(A){if(this[tA].onBodySent)try{return this[tA].onBodySent(A)}catch(t){this.abort(t)}}onRequestSent(){if(pA.bodySent.hasSubscribers&&pA.bodySent.publish({request:this}),this[tA].onRequestSent)try{return this[tA].onRequestSent()}catch(A){this.abort(A)}}onConnect(A){if(YA(!this.aborted),YA(!this.completed),this.error)A(this.error);else return this.abort=A,this[tA].onConnect(A)}onResponseStarted(){return this[tA].onResponseStarted?.()}onHeaders(A,t,r,n){YA(!this.aborted),YA(!this.completed),pA.headers.hasSubscribers&&pA.headers.publish({request:this,response:{statusCode:A,headers:t,statusText:n}});try{return this[tA].onHeaders(A,t,r,n)}catch(s){this.abort(s)}}onData(A){YA(!this.aborted),YA(!this.completed);try{return this[tA].onData(A)}catch(t){return this.abort(t),!1}}onUpgrade(A,t,r){return YA(!this.aborted),YA(!this.completed),this[tA].onUpgrade(A,t,r)}onComplete(A){this.onFinally(),YA(!this.aborted),this.completed=!0,pA.trailers.hasSubscribers&&pA.trailers.publish({request:this,trailers:A});try{return this[tA].onComplete(A)}catch(t){this.onError(t)}}onError(A){if(this.onFinally(),pA.error.hasSubscribers&&pA.error.publish({request:this,error:A}),!this.aborted)return this.aborted=!0,this[tA].onError(A)}onFinally(){this.errorHandler&&(this.body.off("error",this.errorHandler),this.errorHandler=null),this.endHandler&&(this.body.off("end",this.endHandler),this.endHandler=null)}addHeader(A,t){return Ds(this,A,t),this}};function Ds(e,A,t){if(t&&typeof t=="object"&&!Array.isArray(t))throw new re(`invalid ${A} header`);if(t===void 0)return;let r=TQ[A];if(r===void 0&&(r=A.toLowerCase(),TQ[r]===void 0&&!xQ(r)))throw new re("invalid header key");if(Array.isArray(t)){let n=[];for(let s=0;s<t.length;s++)if(typeof t[s]=="string"){if(!nn(t[s]))throw new re(`invalid ${A} header`);n.push(t[s])}else if(t[s]===null)n.push("");else{if(typeof t[s]=="object")throw new re(`invalid ${A} header`);{let i=`${t[s]}`;if(!nn(i))throw new re(`invalid ${A} header`);n.push(i)}}t=n}else if(typeof t=="string"){if(!nn(t))throw new re(`invalid ${A} header`)}else if(t===null)t="";else if(t=`${t}`,!nn(t))throw new re(`invalid ${A} header`);if(r==="host"){if(e.host!==null)throw new re("duplicate host header");if(typeof t!="string")throw new re("invalid host header");e.host=t}else if(r==="content-length"){if(e.contentLength!==null)throw new re("duplicate content-length header");if(e.contentLength=parseInt(t,10),!Number.isFinite(e.contentLength))throw new re("invalid content-length header")}else if(e.contentType===null&&r==="content-type")e.contentType=t,e.headers.push(A,t);else{if(r==="transfer-encoding"||r==="keep-alive"||r==="upgrade")throw new re(`invalid ${r} header`);if(r==="connection"){let n=typeof t=="string"?t.toLowerCase():null;if(n!=="close"&&n!=="keep-alive")throw new re("invalid connection header");n==="close"&&(e.reset=!0)}else{if(r==="expect")throw new Yy("expect header not supported");e.headers.push(A,t)}}}YQ.exports=ea});var sn=p((Rx,JQ)=>{"use strict";var _y=y("node:events"),ks=class extends _y{dispatch(){throw new Error("not implemented")}close(){throw new Error("not implemented")}destroy(){throw new Error("not implemented")}compose(...A){let t=Array.isArray(A[0])?A[0]:A,r=this.dispatch.bind(this);for(let n of t)if(n!=null){if(typeof n!="function")throw new TypeError(`invalid interceptor, expected function received ${typeof n}`);if(r=n(r),r==null||typeof r!="function"||r.length!==2)throw new TypeError("invalid interceptor")}return new Aa(this,r)}},Aa=class extends ks{#e=null;#A=null;constructor(A,t){super(),this.#e=A,this.#A=t}dispatch(...A){this.#A(...A)}close(...A){return this.#e.close(...A)}destroy(...A){return this.#e.destroy(...A)}};JQ.exports=ks});var Ar=p((Sx,HQ)=>{"use strict";var Ky=sn(),{ClientDestroyedError:ta,ClientClosedError:Xy,InvalidArgumentError:jt}=Z(),{kDestroy:jy,kClose:$y,kClosed:on,kDestroyed:$t,kDispatch:ra,kInterceptors:ft}=Qe(),GA=Symbol("onDestroyed"),er=Symbol("onClosed"),bs=Symbol("Intercepted Dispatch"),na=Symbol("webSocketOptions"),sa=class extends Ky{constructor(A){super(),this[$t]=!1,this[GA]=null,this[on]=!1,this[er]=[],this[na]=A?.webSocket??{}}get webSocketOptions(){return{maxFragments:this[na].maxFragments??131072,maxPayloadSize:this[na].maxPayloadSize??128*1024*1024}}get destroyed(){return this[$t]}get closed(){return this[on]}get interceptors(){return this[ft]}set interceptors(A){if(A){for(let t=A.length-1;t>=0;t--)if(typeof this[ft][t]!="function")throw new jt("interceptor must be an function")}this[ft]=A}close(A){if(A===void 0)return new Promise((r,n)=>{this.close((s,i)=>s?n(s):r(i))});if(typeof A!="function")throw new jt("invalid callback");if(this[$t]){queueMicrotask(()=>A(new ta,null));return}if(this[on]){this[er]?this[er].push(A):queueMicrotask(()=>A(null,null));return}this[on]=!0,this[er].push(A);let t=()=>{let r=this[er];this[er]=null;for(let n=0;n<r.length;n++)r[n](null,null)};this[$y]().then(()=>this.destroy()).then(()=>{queueMicrotask(t)})}destroy(A,t){if(typeof A=="function"&&(t=A,A=null),t===void 0)return new Promise((n,s)=>{this.destroy(A,(i,o)=>i?s(i):n(o))});if(typeof t!="function")throw new jt("invalid callback");if(this[$t]){this[GA]?this[GA].push(t):queueMicrotask(()=>t(null,null));return}A||(A=new ta),this[$t]=!0,this[GA]=this[GA]||[],this[GA].push(t);let r=()=>{let n=this[GA];this[GA]=null;for(let s=0;s<n.length;s++)n[s](null,null)};this[jy](A).then(()=>{queueMicrotask(r)})}[bs](A,t){if(!this[ft]||this[ft].length===0)return this[bs]=this[ra],this[ra](A,t);let r=this[ra].bind(this);for(let n=this[ft].length-1;n>=0;n--)r=this[ft][n](r);return this[bs]=r,r(A,t)}dispatch(A,t){if(!t||typeof t!="object")throw new jt("handler must be an object");try{if(!A||typeof A!="object")throw new jt("opts must be an object.");if(this[$t]||this[GA])throw new ta;if(this[on])throw new Xy;return this[bs](A,t)}catch(r){if(typeof t.onError!="function")throw new jt("invalid onError method");return t.onError(r),!1}}};HQ.exports=sa});var Qa=p((Nx,WQ)=>{"use strict";var tr=0,ia=1e3,oa=(ia>>1)-1,JA,aa=Symbol("kFastTimer"),HA=[],ca=-2,ga=-1,vQ=0,VQ=1;function la(){tr+=oa;let e=0,A=HA.length;for(;e<A;){let t=HA[e];t._state===vQ?(t._idleStart=tr-oa,t._state=VQ):t._state===VQ&&tr>=t._idleStart+t._idleTimeout&&(t._state=ga,t._idleStart=-1,t._onTimeout(t._timerArg)),t._state===ga?(t._state=ca,--A!==0&&(HA[e]=HA[A])):++e}HA.length=A,HA.length!==0&&qQ()}function qQ(){JA?JA.refresh():(clearTimeout(JA),JA=setTimeout(la,oa),JA.unref&&JA.unref())}var Fs=class{[aa]=!0;_state=ca;_idleTimeout=-1;_idleStart=-1;_onTimeout;_timerArg;constructor(A,t,r){this._onTimeout=A,this._idleTimeout=t,this._timerArg=r,this.refresh()}refresh(){this._state===ca&&HA.push(this),(!JA||HA.length===1)&&qQ(),this._state=vQ}clear(){this._state=ga,this._idleStart=-1}};WQ.exports={setTimeout(e,A,t){return A<=ia?setTimeout(e,A,t):new Fs(e,A,t)},clearTimeout(e){e[aa]?e.clear():clearTimeout(e)},setFastTimeout(e,A,t){return new Fs(e,A,t)},clearFastTimeout(e){e.clear()},now(){return tr},tick(e=0){tr+=e-ia+1,la(),la()},reset(){tr=0,HA.length=0,clearTimeout(JA),JA=null},kFastTimer:aa}});var an=p((Lx,_Q)=>{"use strict";var ep=y("node:net"),PQ=y("node:assert"),ZQ=v(),{InvalidArgumentError:Ap,ConnectTimeoutError:tp}=Z(),Rs=Qa();function OQ(){}var Ea,Ba;global.FinalizationRegistry&&!(process.env.NODE_V8_COVERAGE||process.env.UNDICI_NO_FG)?Ba=class{constructor(A){this._maxCachedSessions=A,this._sessionCache=new Map,this._sessionRegistry=new global.FinalizationRegistry(t=>{if(this._sessionCache.size<this._maxCachedSessions)return;let r=this._sessionCache.get(t);r!==void 0&&r.deref()===void 0&&this._sessionCache.delete(t)})}get(A){let t=this._sessionCache.get(A);return t?t.deref():null}set(A,t){this._maxCachedSessions!==0&&(this._sessionCache.set(A,new WeakRef(t)),this._sessionRegistry.register(t,A))}}:Ba=class{constructor(A){this._maxCachedSessions=A,this._sessionCache=new Map}get(A){return this._sessionCache.get(A)}set(A,t){if(this._maxCachedSessions!==0){if(this._sessionCache.size>=this._maxCachedSessions){let{value:r}=this._sessionCache.keys().next();this._sessionCache.delete(r)}this._sessionCache.set(A,t)}}};function rp({allowH2:e,maxCachedSessions:A,socketPath:t,timeout:r,session:n,...s}){if(A!=null&&(!Number.isInteger(A)||A<0))throw new Ap("maxCachedSessions must be a positive integer or zero");let i={path:t,...s},o=new Ba(A??100);return r=r??1e4,e=e??!1,function({hostname:g,host:l,protocol:c,port:Q,servername:B,localAddress:E,httpSocket:u},h){let I;if(c==="https:"){Ea||(Ea=y("node:tls")),B=B||i.servername||ZQ.getServerName(l)||null;let D=B||g;PQ(D);let f=n||o.get(D)||null;Q=Q||443,I=Ea.connect({highWaterMark:16384,...i,servername:B,session:f,localAddress:E,ALPNProtocols:e?["http/1.1","h2"]:["http/1.1"],socket:u,port:Q,host:g}),I.on("session",function(R){o.set(D,R)})}else PQ(!u,"httpSocket can only be sent on TLS update"),Q=Q||80,I=ep.connect({highWaterMark:64*1024,...i,localAddress:E,port:Q,host:g});if(i.keepAlive==null||i.keepAlive){let D=i.keepAliveInitialDelay===void 0?6e4:i.keepAliveInitialDelay;I.setKeepAlive(!0,D)}let C=np(new WeakRef(I),{timeout:r,hostname:g,port:Q});return I.setNoDelay(!0).once(c==="https:"?"secureConnect":"connect",function(){if(queueMicrotask(C),h){let D=h;h=null,D(null,this)}}).on("error",function(D){if(queueMicrotask(C),h){let f=h;h=null,f(D)}}),I}}var np=process.platform==="win32"?(e,A)=>{if(!A.timeout)return OQ;let t=null,r=null,n=Rs.setFastTimeout(()=>{t=setImmediate(()=>{r=setImmediate(()=>zQ(e.deref(),A))})},A.timeout);return()=>{Rs.clearFastTimeout(n),clearImmediate(t),clearImmediate(r)}}:(e,A)=>{if(!A.timeout)return OQ;let t=null,r=Rs.setFastTimeout(()=>{t=setImmediate(()=>{zQ(e.deref(),A)})},A.timeout);return()=>{Rs.clearFastTimeout(r),clearImmediate(t)}};function zQ(e,A){if(e==null)return;let t="Connect Timeout Error";Array.isArray(e.autoSelectFamilyAttemptedAddresses)?t+=` (attempted addresses: ${e.autoSelectFamilyAttemptedAddresses.join(", ")},`:t+=` (attempted address: ${A.hostname}:${A.port},`,t+=` timeout: ${A.timeout}ms)`,ZQ.destroy(e,new tp(t))}_Q.exports=rp});var KQ=p(Ss=>{"use strict";Object.defineProperty(Ss,"__esModule",{value:!0});Ss.enumToMap=void 0;function sp(e){let A={};return Object.keys(e).forEach(t=>{let r=e[t];typeof r=="number"&&(A[t]=r)}),A}Ss.enumToMap=sp});var XQ=p(b=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});b.SPECIAL_HEADERS=b.HEADER_STATE=b.MINOR=b.MAJOR=b.CONNECTION_TOKEN_CHARS=b.HEADER_CHARS=b.TOKEN=b.STRICT_TOKEN=b.HEX=b.URL_CHAR=b.STRICT_URL_CHAR=b.USERINFO_CHARS=b.MARK=b.ALPHANUM=b.NUM=b.HEX_MAP=b.NUM_MAP=b.ALPHA=b.FINISH=b.H_METHOD_MAP=b.METHOD_MAP=b.METHODS_RTSP=b.METHODS_ICE=b.METHODS_HTTP=b.METHODS=b.LENIENT_FLAGS=b.FLAGS=b.TYPE=b.ERROR=void 0;var ip=KQ(),op;(function(e){e[e.OK=0]="OK",e[e.INTERNAL=1]="INTERNAL",e[e.STRICT=2]="STRICT",e[e.LF_EXPECTED=3]="LF_EXPECTED",e[e.UNEXPECTED_CONTENT_LENGTH=4]="UNEXPECTED_CONTENT_LENGTH",e[e.CLOSED_CONNECTION=5]="CLOSED_CONNECTION",e[e.INVALID_METHOD=6]="INVALID_METHOD",e[e.INVALID_URL=7]="INVALID_URL",e[e.INVALID_CONSTANT=8]="INVALID_CONSTANT",e[e.INVALID_VERSION=9]="INVALID_VERSION",e[e.INVALID_HEADER_TOKEN=10]="INVALID_HEADER_TOKEN",e[e.INVALID_CONTENT_LENGTH=11]="INVALID_CONTENT_LENGTH",e[e.INVALID_CHUNK_SIZE=12]="INVALID_CHUNK_SIZE",e[e.INVALID_STATUS=13]="INVALID_STATUS",e[e.INVALID_EOF_STATE=14]="INVALID_EOF_STATE",e[e.INVALID_TRANSFER_ENCODING=15]="INVALID_TRANSFER_ENCODING",e[e.CB_MESSAGE_BEGIN=16]="CB_MESSAGE_BEGIN",e[e.CB_HEADERS_COMPLETE=17]="CB_HEADERS_COMPLETE",e[e.CB_MESSAGE_COMPLETE=18]="CB_MESSAGE_COMPLETE",e[e.CB_CHUNK_HEADER=19]="CB_CHUNK_HEADER",e[e.CB_CHUNK_COMPLETE=20]="CB_CHUNK_COMPLETE",e[e.PAUSED=21]="PAUSED",e[e.PAUSED_UPGRADE=22]="PAUSED_UPGRADE",e[e.PAUSED_H2_UPGRADE=23]="PAUSED_H2_UPGRADE",e[e.USER=24]="USER"})(op=b.ERROR||(b.ERROR={}));var ap;(function(e){e[e.BOTH=0]="BOTH",e[e.REQUEST=1]="REQUEST",e[e.RESPONSE=2]="RESPONSE"})(ap=b.TYPE||(b.TYPE={}));var cp;(function(e){e[e.CONNECTION_KEEP_ALIVE=1]="CONNECTION_KEEP_ALIVE",e[e.CONNECTION_CLOSE=2]="CONNECTION_CLOSE",e[e.CONNECTION_UPGRADE=4]="CONNECTION_UPGRADE",e[e.CHUNKED=8]="CHUNKED",e[e.UPGRADE=16]="UPGRADE",e[e.CONTENT_LENGTH=32]="CONTENT_LENGTH",e[e.SKIPBODY=64]="SKIPBODY",e[e.TRAILING=128]="TRAILING",e[e.TRANSFER_ENCODING=512]="TRANSFER_ENCODING"})(cp=b.FLAGS||(b.FLAGS={}));var gp;(function(e){e[e.HEADERS=1]="HEADERS",e[e.CHUNKED_LENGTH=2]="CHUNKED_LENGTH",e[e.KEEP_ALIVE=4]="KEEP_ALIVE"})(gp=b.LENIENT_FLAGS||(b.LENIENT_FLAGS={}));var L;(function(e){e[e.DELETE=0]="DELETE",e[e.GET=1]="GET",e[e.HEAD=2]="HEAD",e[e.POST=3]="POST",e[e.PUT=4]="PUT",e[e.CONNECT=5]="CONNECT",e[e.OPTIONS=6]="OPTIONS",e[e.TRACE=7]="TRACE",e[e.COPY=8]="COPY",e[e.LOCK=9]="LOCK",e[e.MKCOL=10]="MKCOL",e[e.MOVE=11]="MOVE",e[e.PROPFIND=12]="PROPFIND",e[e.PROPPATCH=13]="PROPPATCH",e[e.SEARCH=14]="SEARCH",e[e.UNLOCK=15]="UNLOCK",e[e.BIND=16]="BIND",e[e.REBIND=17]="REBIND",e[e.UNBIND=18]="UNBIND",e[e.ACL=19]="ACL",e[e.REPORT=20]="REPORT",e[e.MKACTIVITY=21]="MKACTIVITY",e[e.CHECKOUT=22]="CHECKOUT",e[e.MERGE=23]="MERGE",e[e["M-SEARCH"]=24]="M-SEARCH",e[e.NOTIFY=25]="NOTIFY",e[e.SUBSCRIBE=26]="SUBSCRIBE",e[e.UNSUBSCRIBE=27]="UNSUBSCRIBE",e[e.PATCH=28]="PATCH",e[e.PURGE=29]="PURGE",e[e.MKCALENDAR=30]="MKCALENDAR",e[e.LINK=31]="LINK",e[e.UNLINK=32]="UNLINK",e[e.SOURCE=33]="SOURCE",e[e.PRI=34]="PRI",e[e.DESCRIBE=35]="DESCRIBE",e[e.ANNOUNCE=36]="ANNOUNCE",e[e.SETUP=37]="SETUP",e[e.PLAY=38]="PLAY",e[e.PAUSE=39]="PAUSE",e[e.TEARDOWN=40]="TEARDOWN",e[e.GET_PARAMETER=41]="GET_PARAMETER",e[e.SET_PARAMETER=42]="SET_PARAMETER",e[e.REDIRECT=43]="REDIRECT",e[e.RECORD=44]="RECORD",e[e.FLUSH=45]="FLUSH"})(L=b.METHODS||(b.METHODS={}));b.METHODS_HTTP=[L.DELETE,L.GET,L.HEAD,L.POST,L.PUT,L.CONNECT,L.OPTIONS,L.TRACE,L.COPY,L.LOCK,L.MKCOL,L.MOVE,L.PROPFIND,L.PROPPATCH,L.SEARCH,L.UNLOCK,L.BIND,L.REBIND,L.UNBIND,L.ACL,L.REPORT,L.MKACTIVITY,L.CHECKOUT,L.MERGE,L["M-SEARCH"],L.NOTIFY,L.SUBSCRIBE,L.UNSUBSCRIBE,L.PATCH,L.PURGE,L.MKCALENDAR,L.LINK,L.UNLINK,L.PRI,L.SOURCE];b.METHODS_ICE=[L.SOURCE];b.METHODS_RTSP=[L.OPTIONS,L.DESCRIBE,L.ANNOUNCE,L.SETUP,L.PLAY,L.PAUSE,L.TEARDOWN,L.GET_PARAMETER,L.SET_PARAMETER,L.REDIRECT,L.RECORD,L.FLUSH,L.GET,L.POST];b.METHOD_MAP=ip.enumToMap(L);b.H_METHOD_MAP={};Object.keys(b.METHOD_MAP).forEach(e=>{/^H/.test(e)&&(b.H_METHOD_MAP[e]=b.METHOD_MAP[e])});var lp;(function(e){e[e.SAFE=0]="SAFE",e[e.SAFE_WITH_CB=1]="SAFE_WITH_CB",e[e.UNSAFE=2]="UNSAFE"})(lp=b.FINISH||(b.FINISH={}));b.ALPHA=[];for(let e=65;e<=90;e++)b.ALPHA.push(String.fromCharCode(e)),b.ALPHA.push(String.fromCharCode(e+32));b.NUM_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9};b.HEX_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15};b.NUM=["0","1","2","3","4","5","6","7","8","9"];b.ALPHANUM=b.ALPHA.concat(b.NUM);b.MARK=["-","_",".","!","~","*","'","(",")"];b.USERINFO_CHARS=b.ALPHANUM.concat(b.MARK).concat(["%",";",":","&","=","+","$",","]);b.STRICT_URL_CHAR=["!",'"',"$","%","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","@","[","\\","]","^","_","`","{","|","}","~"].concat(b.ALPHANUM);b.URL_CHAR=b.STRICT_URL_CHAR.concat([" ","\f"]);for(let e=128;e<=255;e++)b.URL_CHAR.push(e);b.HEX=b.NUM.concat(["a","b","c","d","e","f","A","B","C","D","E","F"]);b.STRICT_TOKEN=["!","#","$","%","&","'","*","+","-",".","^","_","`","|","~"].concat(b.ALPHANUM);b.TOKEN=b.STRICT_TOKEN.concat([" "]);b.HEADER_CHARS=[" "];for(let e=32;e<=255;e++)e!==127&&b.HEADER_CHARS.push(e);b.CONNECTION_TOKEN_CHARS=b.HEADER_CHARS.filter(e=>e!==44);b.MAJOR=b.NUM_MAP;b.MINOR=b.MAJOR;var rr;(function(e){e[e.GENERAL=0]="GENERAL",e[e.CONNECTION=1]="CONNECTION",e[e.CONTENT_LENGTH=2]="CONTENT_LENGTH",e[e.TRANSFER_ENCODING=3]="TRANSFER_ENCODING",e[e.UPGRADE=4]="UPGRADE",e[e.CONNECTION_KEEP_ALIVE=5]="CONNECTION_KEEP_ALIVE",e[e.CONNECTION_CLOSE=6]="CONNECTION_CLOSE",e[e.CONNECTION_UPGRADE=7]="CONNECTION_UPGRADE",e[e.TRANSFER_ENCODING_CHUNKED=8]="TRANSFER_ENCODING_CHUNKED"})(rr=b.HEADER_STATE||(b.HEADER_STATE={}));b.SPECIAL_HEADERS={connection:rr.CONNECTION,"content-length":rr.CONTENT_LENGTH,"proxy-connection":rr.CONNECTION,"transfer-encoding":rr.TRANSFER_ENCODING,upgrade:rr.UPGRADE}});var ua=p((Yx,jQ)=>{"use strict";var{Buffer:Qp}=y("node:buffer");jQ.exports=Qp.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVuaWVudF9oZWFkZXJzACEhbGxodHRwX3NldF9sZW5pZW50X2NodW5rZWRfbGVuZ3RoACIdbGxodHRwX3NldF9sZW5pZW50X2tlZXBfYWxpdmUAIyRsbGh0dHBfc2V0X2xlbmllbnRfdHJhbnNmZXJfZW5jb2RpbmcAJBhsbGh0dHBfbWVzc2FnZV9uZWVkc19lb2YALgkXAQBBAQsRAQIDBAUKBgcrLSwqKSglJyYK07MCLBYAQYjQACgCAARAAAtBiNAAQQE2AgALFAAgABAwIAAgAjYCOCAAIAE6ACgLFAAgACAALwEyIAAtAC4gABAvEAALHgEBf0HAABAyIgEQMCABQYAINgI4IAEgADoAKCABC48MAQd/AkAgAEUNACAAQQhrIgEgAEEEaygCACIAQXhxIgRqIQUCQCAAQQFxDQAgAEEDcUUNASABIAEoAgAiAGsiAUGc0AAoAgBJDQEgACAEaiEEAkACQEGg0AAoAgAgAUcEQCAAQf8BTQRAIABBA3YhAyABKAIIIgAgASgCDCICRgRAQYzQAEGM0AAoAgBBfiADd3E2AgAMBQsgAiAANgIIIAAgAjYCDAwECyABKAIYIQYgASABKAIMIgBHBEAgACABKAIIIgI2AgggAiAANgIMDAMLIAFBFGoiAygCACICRQRAIAEoAhAiAkUNAiABQRBqIQMLA0AgAyEHIAIiAEEUaiIDKAIAIgINACAAQRBqIQMgACgCECICDQALIAdBADYCAAwCCyAFKAIEIgBBA3FBA0cNAiAFIABBfnE2AgRBlNAAIAQ2AgAgBSAENgIAIAEgBEEBcjYCBAwDC0EAIQALIAZFDQACQCABKAIcIgJBAnRBvNIAaiIDKAIAIAFGBEAgAyAANgIAIAANAUGQ0ABBkNAAKAIAQX4gAndxNgIADAILIAZBEEEUIAYoAhAgAUYbaiAANgIAIABFDQELIAAgBjYCGCABKAIQIgIEQCAAIAI2AhAgAiAANgIYCyABQRRqKAIAIgJFDQAgAEEUaiACNgIAIAIgADYCGAsgASAFTw0AIAUoAgQiAEEBcUUNAAJAAkACQAJAIABBAnFFBEBBpNAAKAIAIAVGBEBBpNAAIAE2AgBBmNAAQZjQACgCACAEaiIANgIAIAEgAEEBcjYCBCABQaDQACgCAEcNBkGU0ABBADYCAEGg0ABBADYCAAwGC0Gg0AAoAgAgBUYEQEGg0AAgATYCAEGU0ABBlNAAKAIAIARqIgA2AgAgASAAQQFyNgIEIAAgAWogADYCAAwGCyAAQXhxIARqIQQgAEH/AU0EQCAAQQN2IQMgBSgCCCIAIAUoAgwiAkYEQEGM0ABBjNAAKAIAQX4gA3dxNgIADAULIAIgADYCCCAAIAI2AgwMBAsgBSgCGCEGIAUgBSgCDCIARwRAQZzQACgCABogACAFKAIIIgI2AgggAiAANgIMDAMLIAVBFGoiAygCACICRQRAIAUoAhAiAkUNAiAFQRBqIQMLA0AgAyEHIAIiAEEUaiIDKAIAIgINACAAQRBqIQMgACgCECICDQALIAdBADYCAAwCCyAFIABBfnE2AgQgASAEaiAENgIAIAEgBEEBcjYCBAwDC0EAIQALIAZFDQACQCAFKAIcIgJBAnRBvNIAaiIDKAIAIAVGBEAgAyAANgIAIAANAUGQ0ABBkNAAKAIAQX4gAndxNgIADAILIAZBEEEUIAYoAhAgBUYbaiAANgIAIABFDQELIAAgBjYCGCAFKAIQIgIEQCAAIAI2AhAgAiAANgIYCyAFQRRqKAIAIgJFDQAgAEEUaiACNgIAIAIgADYCGAsgASAEaiAENgIAIAEgBEEBcjYCBCABQaDQACgCAEcNAEGU0AAgBDYCAAwBCyAEQf8BTQRAIARBeHFBtNAAaiEAAn9BjNAAKAIAIgJBASAEQQN2dCIDcUUEQEGM0AAgAiADcjYCACAADAELIAAoAggLIgIgATYCDCAAIAE2AgggASAANgIMIAEgAjYCCAwBC0EfIQIgBEH///8HTQRAIARBJiAEQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAgsgASACNgIcIAFCADcCECACQQJ0QbzSAGohAAJAQZDQACgCACIDQQEgAnQiB3FFBEAgACABNgIAQZDQACADIAdyNgIAIAEgADYCGCABIAE2AgggASABNgIMDAELIARBGSACQQF2a0EAIAJBH0cbdCECIAAoAgAhAAJAA0AgACIDKAIEQXhxIARGDQEgAkEddiEAIAJBAXQhAiADIABBBHFqQRBqIgcoAgAiAA0ACyAHIAE2AgAgASADNgIYIAEgATYCDCABIAE2AggMAQsgAygCCCIAIAE2AgwgAyABNgIIIAFBADYCGCABIAM2AgwgASAANgIIC0Gs0ABBrNAAKAIAQQFrIgBBfyAAGzYCAAsLBwAgAC0AKAsHACAALQAqCwcAIAAtACsLBwAgAC0AKQsHACAALwEyCwcAIAAtAC4LQAEEfyAAKAIYIQEgAC0ALSECIAAtACghAyAAKAI4IQQgABAwIAAgBDYCOCAAIAM6ACggACACOgAtIAAgATYCGAu74gECB38DfiABIAJqIQQCQCAAIgIoAgwiAA0AIAIoAgQEQCACIAE2AgQLIwBBEGsiCCQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAIoAhwiA0EBaw7dAdoBAdkBAgMEBQYHCAkKCwwNDtgBDxDXARES1gETFBUWFxgZGhvgAd8BHB0e1QEfICEiIyQl1AEmJygpKiss0wHSAS0u0QHQAS8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRtsBR0hJSs8BzgFLzQFMzAFNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBywHKAbgByQG5AcgBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgEA3AELQQAMxgELQQ4MxQELQQ0MxAELQQ8MwwELQRAMwgELQRMMwQELQRQMwAELQRUMvwELQRYMvgELQRgMvQELQRkMvAELQRoMuwELQRsMugELQRwMuQELQR0MuAELQQgMtwELQR4MtgELQSAMtQELQR8MtAELQQcMswELQSEMsgELQSIMsQELQSMMsAELQSQMrwELQRIMrgELQREMrQELQSUMrAELQSYMqwELQScMqgELQSgMqQELQcMBDKgBC0EqDKcBC0ErDKYBC0EsDKUBC0EtDKQBC0EuDKMBC0EvDKIBC0HEAQyhAQtBMAygAQtBNAyfAQtBDAyeAQtBMQydAQtBMgycAQtBMwybAQtBOQyaAQtBNQyZAQtBxQEMmAELQQsMlwELQToMlgELQTYMlQELQQoMlAELQTcMkwELQTgMkgELQTwMkQELQTsMkAELQT0MjwELQQkMjgELQSkMjQELQT4MjAELQT8MiwELQcAADIoBC0HBAAyJAQtBwgAMiAELQcMADIcBC0HEAAyGAQtBxQAMhQELQcYADIQBC0EXDIMBC0HHAAyCAQtByAAMgQELQckADIABC0HKAAx/C0HLAAx+C0HNAAx9C0HMAAx8C0HOAAx7C0HPAAx6C0HQAAx5C0HRAAx4C0HSAAx3C0HTAAx2C0HUAAx1C0HWAAx0C0HVAAxzC0EGDHILQdcADHELQQUMcAtB2AAMbwtBBAxuC0HZAAxtC0HaAAxsC0HbAAxrC0HcAAxqC0EDDGkLQd0ADGgLQd4ADGcLQd8ADGYLQeEADGULQeAADGQLQeIADGMLQeMADGILQQIMYQtB5AAMYAtB5QAMXwtB5gAMXgtB5wAMXQtB6AAMXAtB6QAMWwtB6gAMWgtB6wAMWQtB7AAMWAtB7QAMVwtB7gAMVgtB7wAMVQtB8AAMVAtB8QAMUwtB8gAMUgtB8wAMUQtB9AAMUAtB9QAMTwtB9gAMTgtB9wAMTQtB+AAMTAtB+QAMSwtB+gAMSgtB+wAMSQtB/AAMSAtB/QAMRwtB/gAMRgtB/wAMRQtBgAEMRAtBgQEMQwtBggEMQgtBgwEMQQtBhAEMQAtBhQEMPwtBhgEMPgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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CABB3AgLii1JbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fbWV0aG9kAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAF4TAAAmEwAAMBAAAPAXAACdEwAAFRIAADkXAADwEgAAChAAAHUSAACtEgAAghMAAE8UAAB/EAAAoBUAACMUAACJEgAAixQAAE0VAADUEQAAzxQAABAYAADJFgAA3BYAAMERAADgFwAAuxQAAHQUAAB8FQAA5RQAAAgXAAAfEAAAZRUAAKMUAAAoFQAAAhUAAJkVAAAsEAAAixkAAE8PAADUDgAAahAAAM4QAAACFwAAiQ4AAG4TAAAcEwAAZhQAAFYXAADBEwAAzRMAAGwTAABoFwAAZhcAAF8XAAAiEwAAzg8AAGkOAADYDgAAYxYAAMsTAACqDgAAKBcAACYXAADFEwAAXRYAAOgRAABnEwAAZRMAAPIWAABzEwAAHRcAAPkWAADzEQAAzw4AAM4VAAAMEgAAsxEAAKURAABhEAAAMhcAALsTAEH5NQsBAQBBkDYL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB/TcLAQEAQZE4C14CAwICAgICAAACAgACAgACAgICAgICAgICAAQAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEH9OQsBAQBBkToLXgIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAQfA7Cw1sb3NlZWVwLWFsaXZlAEGJPAsBAQBBoDwL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBiT4LAQEAQaA+C+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGwwAALXwEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGQwgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBwMIACy1yYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AQfnCAAsFAQIAAQMAQZDDAAvgAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5xAALBQECAAEDAEGQxQAL4AEEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cYACwQBAAABAEGRxwAL3wEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH6yAALBAEAAAIAQZDJAAtfAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAQfrKAAsEAQAAAQBBkMsACwEBAEGqywALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEH6zAALBAEAAAEAQZDNAAsBAQBBms0ACwYCAAAAAAIAQbHNAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB8M4AC5YBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv","base64")});var eE=p((Gx,$Q)=>{"use strict";var{Buffer:Ep}=y("node:buffer");$Q.exports=Ep.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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AAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==","base64")});var cn=p((Jx,aE)=>{"use strict";var AE=["GET","HEAD","POST"],Bp=new Set(AE),up=[101,204,205,304],tE=[301,302,303,307,308],Ip=new Set(tE),rE=["1","7","9","11","13","15","17","19","20","21","22","23","25","37","42","43","53","69","77","79","87","95","101","102","103","104","109","110","111","113","115","117","119","123","135","137","139","143","161","179","389","427","465","512","513","514","515","526","530","531","532","540","548","554","556","563","587","601","636","989","990","993","995","1719","1720","1723","2049","3659","4045","4190","5060","5061","6000","6566","6665","6666","6667","6668","6669","6679","6697","10080"],hp=new Set(rE),nE=["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"],Cp=new Set(nE),fp=["follow","manual","error"],sE=["GET","HEAD","OPTIONS","TRACE"],dp=new Set(sE),wp=["navigate","same-origin","no-cors","cors"],yp=["omit","same-origin","include"],pp=["default","no-store","reload","no-cache","force-cache","only-if-cached"],mp=["content-encoding","content-language","content-location","content-type","content-length"],Dp=["half"],iE=["CONNECT","TRACE","TRACK"],kp=new Set(iE),oE=["audio","audioworklet","font","image","manifest","paintworklet","script","style","track","video","xslt",""],bp=new Set(oE);aE.exports={subresource:oE,forbiddenMethods:iE,requestBodyHeader:mp,referrerPolicy:nE,requestRedirect:fp,requestMode:wp,requestCredentials:yp,requestCache:pp,redirectStatus:tE,corsSafeListedMethods:AE,nullBodyStatus:up,safeMethods:sE,badPorts:rE,requestDuplex:Dp,subresourceSet:bp,badPortsSet:hp,redirectStatusSet:Ip,corsSafeListedMethodsSet:Bp,safeMethodsSet:dp,forbiddenMethodsSet:kp,referrerPolicySet:Cp}});var ha=p((Hx,cE)=>{"use strict";var Ia=Symbol.for("undici.globalOrigin.1");function Fp(){return globalThis[Ia]}function Rp(e){if(e===void 0){Object.defineProperty(globalThis,Ia,{value:void 0,writable:!0,enumerable:!1,configurable:!1});return}let A=new URL(e);if(A.protocol!=="http:"&&A.protocol!=="https:")throw new TypeError(`Only http & https urls are allowed, received ${A.protocol}`);Object.defineProperty(globalThis,Ia,{value:A,writable:!0,enumerable:!1,configurable:!1})}cE.exports={getGlobalOrigin:Fp,setGlobalOrigin:Rp}});var He=p((Vx,IE)=>{"use strict";var Ms=y("node:assert"),Sp=new TextEncoder,gn=/^[!#$%&'*+\-.^_|~A-Za-z0-9]+$/,Np=/[\u000A\u000D\u0009\u0020]/,Mp=/[\u0009\u000A\u000C\u000D\u0020]/g,Up=/^[\u0009\u0020-\u007E\u0080-\u00FF]+$/;function Lp(e){Ms(e.protocol==="data:");let A=QE(e,!0);A=A.slice(5);let t={position:0},r=nr(",",A,t),n=r.length;if(r=Hp(r,!0,!0),t.position>=A.length)return"failure";t.position++;let s=A.slice(n+1),i=EE(s);if(/;(\u0020){0,}base64$/i.test(r)){let a=uE(i);if(i=xp(a),i==="failure")return"failure";r=r.slice(0,-6),r=r.replace(/(\u0020)+$/,""),r=r.slice(0,-1)}r.startsWith(";")&&(r="text/plain"+r);let o=Ca(r);return o==="failure"&&(o=Ca("text/plain;charset=US-ASCII")),{mimeType:o,body:i}}function QE(e,A=!1){if(!A)return e.href;let t=e.href,r=e.hash.length,n=r===0?t:t.substring(0,t.length-r);return!r&&t.endsWith("#")?n.slice(0,-1):n}function Us(e,A,t){let r="";for(;t.position<A.length&&e(A[t.position]);)r+=A[t.position],t.position++;return r}function nr(e,A,t){let r=A.indexOf(e,t.position),n=t.position;return r===-1?(t.position=A.length,A.slice(n)):(t.position=r,A.slice(n,t.position))}function EE(e){let A=Sp.encode(e);return Tp(A)}function gE(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function lE(e){return e>=48&&e<=57?e-48:(e&223)-55}function Tp(e){let A=e.length,t=new Uint8Array(A),r=0;for(let n=0;n<A;++n){let s=e[n];s!==37?t[r++]=s:s===37&&!(gE(e[n+1])&&gE(e[n+2]))?t[r++]=37:(t[r++]=lE(e[n+1])<<4|lE(e[n+2]),n+=2)}return A===r?t:t.subarray(0,r)}function Ca(e){e=Ns(e,!0,!0);let A={position:0},t=nr("/",e,A);if(t.length===0||!gn.test(t)||A.position>e.length)return"failure";A.position++;let r=nr(";",e,A);if(r=Ns(r,!1,!0),r.length===0||!gn.test(r))return"failure";let n=t.toLowerCase(),s=r.toLowerCase(),i={type:n,subtype:s,parameters:new Map,essence:`${n}/${s}`};for(;A.position<e.length;){A.position++,Us(g=>Np.test(g),e,A);let o=Us(g=>g!==";"&&g!=="=",e,A);if(o=o.toLowerCase(),A.position<e.length){if(e[A.position]===";")continue;A.position++}if(A.position>e.length)break;let a=null;if(e[A.position]==='"')a=BE(e,A,!0),nr(";",e,A);else if(a=nr(";",e,A),a=Ns(a,!1,!0),a.length===0)continue;o.length!==0&&gn.test(o)&&(a.length===0||Up.test(a))&&!i.parameters.has(o)&&i.parameters.set(o,a)}return i}function xp(e){e=e.replace(Mp,"");let A=e.length;if(A%4===0&&e.charCodeAt(A-1)===61&&(--A,e.charCodeAt(A-1)===61&&--A),A%4===1||/[^+/0-9A-Za-z]/.test(e.length===A?e:e.substring(0,A)))return"failure";let t=Buffer.from(e,"base64");return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}function BE(e,A,t){let r=A.position,n="";for(Ms(e[A.position]==='"'),A.position++;n+=Us(i=>i!=='"'&&i!=="\\",e,A),!(A.position>=e.length);){let s=e[A.position];if(A.position++,s==="\\"){if(A.position>=e.length){n+="\\";break}n+=e[A.position],A.position++}else{Ms(s==='"');break}}return t?n:e.slice(r,A.position)}function Yp(e){Ms(e!=="failure");let{parameters:A,essence:t}=e,r=t;for(let[n,s]of A.entries())r+=";",r+=n,r+="=",gn.test(s)||(s=s.replace(/(\\|")/g,"\\$1"),s='"'+s,s+='"'),r+=s;return r}function Gp(e){return e===13||e===10||e===9||e===32}function Ns(e,A=!0,t=!0){return fa(e,A,t,Gp)}function Jp(e){return e===13||e===10||e===9||e===12||e===32}function Hp(e,A=!0,t=!0){return fa(e,A,t,Jp)}function fa(e,A,t,r){let n=0,s=e.length-1;if(A)for(;n<e.length&&r(e.charCodeAt(n));)n++;if(t)for(;s>0&&r(e.charCodeAt(s));)s--;return n===0&&s===e.length-1?e:e.slice(n,s+1)}function uE(e){let A=e.length;if(65535>A)return String.fromCharCode.apply(null,e);let t="",r=0,n=65535;for(;r<A;)r+n>A&&(n=A-r),t+=String.fromCharCode.apply(null,e.subarray(r,r+=n));return t}function Vp(e){switch(e.essence){case"application/ecmascript":case"application/javascript":case"application/x-ecmascript":case"application/x-javascript":case"text/ecmascript":case"text/javascript":case"text/javascript1.0":case"text/javascript1.1":case"text/javascript1.2":case"text/javascript1.3":case"text/javascript1.4":case"text/javascript1.5":case"text/jscript":case"text/livescript":case"text/x-ecmascript":case"text/x-javascript":return"text/javascript";case"application/json":case"text/json":return"application/json";case"image/svg+xml":return"image/svg+xml";case"text/xml":case"application/xml":return"application/xml"}return e.subtype.endsWith("+json")?"application/json":e.subtype.endsWith("+xml")?"application/xml":""}IE.exports={dataURLProcessor:Lp,URLSerializer:QE,collectASequenceOfCodePoints:Us,collectASequenceOfCodePointsFast:nr,stringPercentDecode:EE,parseMIMEType:Ca,collectAnHTTPQuotedString:BE,serializeAMimeType:Yp,removeChars:fa,removeHTTPWhitespace:Ns,minimizeSupportedMimeType:Vp,HTTP_TOKEN_CODEPOINTS:gn,isomorphicDecode:uE}});var Se=p((vx,hE)=>{"use strict";var{types:mA,inspect:vp}=y("node:util"),{markAsUncloneable:qp}=y("node:worker_threads"),{toUSVString:Wp}=v(),m={};m.converters={};m.util={};m.errors={};m.errors.exception=function(e){return new TypeError(`${e.header}: ${e.message}`)};m.errors.conversionFailed=function(e){let A=e.types.length===1?"":" one of",t=`${e.argument} could not be converted to${A}: ${e.types.join(", ")}.`;return m.errors.exception({header:e.prefix,message:t})};m.errors.invalidArgument=function(e){return m.errors.exception({header:e.prefix,message:`"${e.value}" is an invalid ${e.type}.`})};m.brandCheck=function(e,A,t){if(t?.strict!==!1){if(!(e instanceof A)){let r=new TypeError("Illegal invocation");throw r.code="ERR_INVALID_THIS",r}}else if(e?.[Symbol.toStringTag]!==A.prototype[Symbol.toStringTag]){let r=new TypeError("Illegal invocation");throw r.code="ERR_INVALID_THIS",r}};m.argumentLengthCheck=function({length:e},A,t){if(e<A)throw m.errors.exception({message:`${A} argument${A!==1?"s":""} required, but${e?" only":""} ${e} found.`,header:t})};m.illegalConstructor=function(){throw m.errors.exception({header:"TypeError",message:"Illegal constructor"})};m.util.Type=function(e){switch(typeof e){case"undefined":return"Undefined";case"boolean":return"Boolean";case"string":return"String";case"symbol":return"Symbol";case"number":return"Number";case"bigint":return"BigInt";case"function":case"object":return e===null?"Null":"Object"}};m.util.markAsUncloneable=qp||(()=>{});m.util.ConvertToInt=function(e,A,t,r){let n,s;A===64?(n=Math.pow(2,53)-1,t==="unsigned"?s=0:s=Math.pow(-2,53)+1):t==="unsigned"?(s=0,n=Math.pow(2,A)-1):(s=Math.pow(-2,A)-1,n=Math.pow(2,A-1)-1);let i=Number(e);if(i===0&&(i=0),r?.enforceRange===!0){if(Number.isNaN(i)||i===Number.POSITIVE_INFINITY||i===Number.NEGATIVE_INFINITY)throw m.errors.exception({header:"Integer conversion",message:`Could not convert ${m.util.Stringify(e)} to an integer.`});if(i=m.util.IntegerPart(i),i<s||i>n)throw m.errors.exception({header:"Integer conversion",message:`Value must be between ${s}-${n}, got ${i}.`});return i}return!Number.isNaN(i)&&r?.clamp===!0?(i=Math.min(Math.max(i,s),n),Math.floor(i)%2===0?i=Math.floor(i):i=Math.ceil(i),i):Number.isNaN(i)||i===0&&Object.is(0,i)||i===Number.POSITIVE_INFINITY||i===Number.NEGATIVE_INFINITY?0:(i=m.util.IntegerPart(i),i=i%Math.pow(2,A),t==="signed"&&i>=Math.pow(2,A)-1?i-Math.pow(2,A):i)};m.util.IntegerPart=function(e){let A=Math.floor(Math.abs(e));return e<0?-1*A:A};m.util.Stringify=function(e){switch(m.util.Type(e)){case"Symbol":return`Symbol(${e.description})`;case"Object":return vp(e);case"String":return`"${e}"`;default:return`${e}`}};m.sequenceConverter=function(e){return(A,t,r,n)=>{if(m.util.Type(A)!=="Object")throw m.errors.exception({header:t,message:`${r} (${m.util.Stringify(A)}) is not iterable.`});let s=typeof n=="function"?n():A?.[Symbol.iterator]?.(),i=[],o=0;if(s===void 0||typeof s.next!="function")throw m.errors.exception({header:t,message:`${r} is not iterable.`});for(;;){let{done:a,value:g}=s.next();if(a)break;i.push(e(g,t,`${r}[${o++}]`))}return i}};m.recordConverter=function(e,A){return(t,r,n)=>{if(m.util.Type(t)!=="Object")throw m.errors.exception({header:r,message:`${n} ("${m.util.Type(t)}") is not an Object.`});let s={};if(!mA.isProxy(t)){let o=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(let a of o){let g=e(a,r,n),l=A(t[a],r,n);s[g]=l}return s}let i=Reflect.ownKeys(t);for(let o of i)if(Reflect.getOwnPropertyDescriptor(t,o)?.enumerable){let g=e(o,r,n),l=A(t[o],r,n);s[g]=l}return s}};m.interfaceConverter=function(e){return(A,t,r,n)=>{if(n?.strict!==!1&&!(A instanceof e))throw m.errors.exception({header:t,message:`Expected ${r} ("${m.util.Stringify(A)}") to be an instance of ${e.name}.`});return A}};m.dictionaryConverter=function(e){return(A,t,r)=>{let n=m.util.Type(A),s={};if(n==="Null"||n==="Undefined")return s;if(n!=="Object")throw m.errors.exception({header:t,message:`Expected ${A} to be one of: Null, Undefined, Object.`});for(let i of e){let{key:o,defaultValue:a,required:g,converter:l}=i;if(g===!0&&!Object.hasOwn(A,o))throw m.errors.exception({header:t,message:`Missing required key "${o}".`});let c=A[o],Q=Object.hasOwn(i,"defaultValue");if(Q&&c!==null&&(c??=a()),g||Q||c!==void 0){if(c=l(c,t,`${r}.${o}`),i.allowedValues&&!i.allowedValues.includes(c))throw m.errors.exception({header:t,message:`${c} is not an accepted type. Expected one of ${i.allowedValues.join(", ")}.`});s[o]=c}}return s}};m.nullableConverter=function(e){return(A,t,r)=>A===null?A:e(A,t,r)};m.converters.DOMString=function(e,A,t,r){if(e===null&&r?.legacyNullToEmptyString)return"";if(typeof e=="symbol")throw m.errors.exception({header:A,message:`${t} is a symbol, which cannot be converted to a DOMString.`});return String(e)};m.converters.ByteString=function(e,A,t){let r=m.converters.DOMString(e,A,t);for(let n=0;n<r.length;n++)if(r.charCodeAt(n)>255)throw new TypeError(`Cannot convert argument to a ByteString because the character at index ${n} has a value of ${r.charCodeAt(n)} which is greater than 255.`);return r};m.converters.USVString=Wp;m.converters.boolean=function(e){return!!e};m.converters.any=function(e){return e};m.converters["long long"]=function(e,A,t){return m.util.ConvertToInt(e,64,"signed",void 0,A,t)};m.converters["unsigned long long"]=function(e,A,t){return m.util.ConvertToInt(e,64,"unsigned",void 0,A,t)};m.converters["unsigned long"]=function(e,A,t){return m.util.ConvertToInt(e,32,"unsigned",void 0,A,t)};m.converters["unsigned short"]=function(e,A,t,r){return m.util.ConvertToInt(e,16,"unsigned",r,A,t)};m.converters.ArrayBuffer=function(e,A,t,r){if(m.util.Type(e)!=="Object"||!mA.isAnyArrayBuffer(e))throw m.errors.conversionFailed({prefix:A,argument:`${t} ("${m.util.Stringify(e)}")`,types:["ArrayBuffer"]});if(r?.allowShared===!1&&mA.isSharedArrayBuffer(e))throw m.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."});if(e.resizable||e.growable)throw m.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."});return e};m.converters.TypedArray=function(e,A,t,r,n){if(m.util.Type(e)!=="Object"||!mA.isTypedArray(e)||e.constructor.name!==A.name)throw m.errors.conversionFailed({prefix:t,argument:`${r} ("${m.util.Stringify(e)}")`,types:[A.name]});if(n?.allowShared===!1&&mA.isSharedArrayBuffer(e.buffer))throw m.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."});if(e.buffer.resizable||e.buffer.growable)throw m.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."});return e};m.converters.DataView=function(e,A,t,r){if(m.util.Type(e)!=="Object"||!mA.isDataView(e))throw m.errors.exception({header:A,message:`${t} is not a DataView.`});if(r?.allowShared===!1&&mA.isSharedArrayBuffer(e.buffer))throw m.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."});if(e.buffer.resizable||e.buffer.growable)throw m.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."});return e};m.converters.BufferSource=function(e,A,t,r){if(mA.isAnyArrayBuffer(e))return m.converters.ArrayBuffer(e,A,t,{...r,allowShared:!1});if(mA.isTypedArray(e))return m.converters.TypedArray(e,e.constructor,A,t,{...r,allowShared:!1});if(mA.isDataView(e))return m.converters.DataView(e,A,t,{...r,allowShared:!1});throw m.errors.conversionFailed({prefix:A,argument:`${t} ("${m.util.Stringify(e)}")`,types:["BufferSource"]})};m.converters["sequence<ByteString>"]=m.sequenceConverter(m.converters.ByteString);m.converters["sequence<sequence<ByteString>>"]=m.sequenceConverter(m.converters["sequence<ByteString>"]);m.converters["record<ByteString, ByteString>"]=m.recordConverter(m.converters.ByteString,m.converters.ByteString);hE.exports={webidl:m}});var Oe=p((qx,NE)=>{"use strict";var{Transform:Pp}=y("node:stream"),CE=y("node:zlib"),{redirectStatusSet:Op,referrerPolicySet:zp,badPortsSet:Zp}=cn(),{getGlobalOrigin:fE}=ha(),{collectASequenceOfCodePoints:dt,collectAnHTTPQuotedString:_p,removeChars:Kp,parseMIMEType:Xp}=He(),{performance:jp}=y("node:perf_hooks"),{isBlobLike:$p,ReadableStreamFrom:em,isValidHTTPToken:dE,normalizedMethodRecordsBase:Am}=v(),wt=y("node:assert"),{isUint8Array:tm}=y("node:util/types"),{webidl:ln}=Se(),wE=[],Ts;try{Ts=y("node:crypto");let e=["sha256","sha384","sha512"];wE=Ts.getHashes().filter(A=>e.includes(A))}catch{}function yE(e){let A=e.urlList,t=A.length;return t===0?null:A[t-1].toString()}function rm(e,A){if(!Op.has(e.status))return null;let t=e.headersList.get("location",!0);return t!==null&&mE(t)&&(pE(t)||(t=nm(t)),t=new URL(t,yE(e))),t&&!t.hash&&(t.hash=A),t}function pE(e){for(let A=0;A<e.length;++A){let t=e.charCodeAt(A);if(t>126||t<32)return!1}return!0}function nm(e){return Buffer.from(e,"binary").toString("utf8")}function En(e){return e.urlList[e.urlList.length-1]}function sm(e){let A=En(e);return RE(A)&&Zp.has(A.port)?"blocked":"allowed"}function im(e){return e instanceof Error||e?.constructor?.name==="Error"||e?.constructor?.name==="DOMException"}function om(e){for(let A=0;A<e.length;++A){let t=e.charCodeAt(A);if(!(t===9||t>=32&&t<=126||t>=128&&t<=255))return!1}return!0}var am=dE;function mE(e){return(e[0]===" "||e[0]===" "||e[e.length-1]===" "||e[e.length-1]===" "||e.includes(`
|
|
2
|
-
`)||e.includes("\r")||e.includes("\0"))===!1}function cm(e,A){let{headersList:t}=A,r=(t.get("referrer-policy",!0)??"").split(","),n="";if(r.length>0)for(let s=r.length;s!==0;s--){let i=r[s-1].trim();if(zp.has(i)){n=i;break}}n!==""&&(e.referrerPolicy=n)}function gm(){return"allowed"}function lm(){return"success"}function Qm(){return"success"}function Em(e){let A=null;A=e.mode,e.headersList.set("sec-fetch-mode",A,!0)}function Bm(e){let A=e.origin;if(!(A==="client"||A===void 0)){if(e.responseTainting==="cors"||e.mode==="websocket")e.headersList.append("origin",A,!0);else if(e.method!=="GET"&&e.method!=="HEAD"){switch(e.referrerPolicy){case"no-referrer":A=null;break;case"no-referrer-when-downgrade":case"strict-origin":case"strict-origin-when-cross-origin":e.origin&&wa(e.origin)&&!wa(En(e))&&(A=null);break;case"same-origin":xs(e,En(e))||(A=null);break;default:}e.headersList.append("origin",A,!0)}}}function sr(e,A){return e}function um(e,A,t){return!e?.startTime||e.startTime<A?{domainLookupStartTime:A,domainLookupEndTime:A,connectionStartTime:A,connectionEndTime:A,secureConnectionStartTime:A,ALPNNegotiatedProtocol:e?.ALPNNegotiatedProtocol}:{domainLookupStartTime:sr(e.domainLookupStartTime,t),domainLookupEndTime:sr(e.domainLookupEndTime,t),connectionStartTime:sr(e.connectionStartTime,t),connectionEndTime:sr(e.connectionEndTime,t),secureConnectionStartTime:sr(e.secureConnectionStartTime,t),ALPNNegotiatedProtocol:e.ALPNNegotiatedProtocol}}function Im(e){return sr(jp.now(),e)}function hm(e){return{startTime:e.startTime??0,redirectStartTime:0,redirectEndTime:0,postRedirectStartTime:e.startTime??0,finalServiceWorkerStartTime:0,finalNetworkResponseStartTime:0,finalNetworkRequestStartTime:0,endTime:0,encodedBodySize:0,decodedBodySize:0,finalConnectionTimingInfo:null}}function DE(){return{referrerPolicy:"strict-origin-when-cross-origin"}}function Cm(e){return{referrerPolicy:e.referrerPolicy}}function fm(e){let A=e.referrerPolicy;wt(A);let t=null;if(e.referrer==="client"){let o=fE();if(!o||o.origin==="null")return"no-referrer";t=new URL(o)}else e.referrer instanceof URL&&(t=e.referrer);let r=da(t),n=da(t,!0);r.toString().length>4096&&(r=n);let s=xs(e,r),i=Qn(r)&&!Qn(e.url);switch(A){case"origin":return n??da(t,!0);case"unsafe-url":return r;case"same-origin":return s?n:"no-referrer";case"origin-when-cross-origin":return s?r:n;case"strict-origin-when-cross-origin":{let o=En(e);return xs(r,o)?r:Qn(r)&&!Qn(o)?"no-referrer":n}default:return i?"no-referrer":n}}function da(e,A){return wt(e instanceof URL),e=new URL(e),e.protocol==="file:"||e.protocol==="about:"||e.protocol==="blank:"?"no-referrer":(e.username="",e.password="",e.hash="",A&&(e.pathname="",e.search=""),e)}function Qn(e){if(!(e instanceof URL))return!1;if(e.href==="about:blank"||e.href==="about:srcdoc"||e.protocol==="data:"||e.protocol==="file:")return!0;return A(e.origin);function A(t){if(t==null||t==="null")return!1;let r=new URL(t);return!!(r.protocol==="https:"||r.protocol==="wss:"||/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(r.hostname)||r.hostname==="localhost"||r.hostname.includes("localhost.")||r.hostname.endsWith(".localhost"))}}function dm(e,A){if(Ts===void 0)return!0;let t=kE(A);if(t==="no metadata"||t.length===0)return!0;let r=ym(t),n=pm(t,r);for(let s of n){let i=s.algo,o=s.hash,a=Ts.createHash(i).update(e).digest("base64");if(a[a.length-1]==="="&&(a[a.length-2]==="="?a=a.slice(0,-2):a=a.slice(0,-1)),mm(a,o))return!0}return!1}var wm=/(?<algo>sha256|sha384|sha512)-((?<hash>[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i;function kE(e){let A=[],t=!0;for(let r of e.split(" ")){t=!1;let n=wm.exec(r);if(n===null||n.groups===void 0||n.groups.algo===void 0)continue;let s=n.groups.algo.toLowerCase();wE.includes(s)&&A.push(n.groups)}return t===!0?"no metadata":A}function ym(e){let A=e[0].algo;if(A[3]==="5")return A;for(let t=1;t<e.length;++t){let r=e[t];if(r.algo[3]==="5"){A="sha512";break}else{if(A[3]==="3")continue;r.algo[3]==="3"&&(A="sha384")}}return A}function pm(e,A){if(e.length===1)return e;let t=0;for(let r=0;r<e.length;++r)e[r].algo===A&&(e[t++]=e[r]);return e.length=t,e}function mm(e,A){if(e.length!==A.length)return!1;for(let t=0;t<e.length;++t)if(e[t]!==A[t]){if(e[t]==="+"&&A[t]==="-"||e[t]==="/"&&A[t]==="_")continue;return!1}return!0}function Dm(e){}function xs(e,A){return e.origin===A.origin&&e.origin==="null"||e.protocol===A.protocol&&e.hostname===A.hostname&&e.port===A.port}function km(){let e,A;return{promise:new Promise((r,n)=>{e=r,A=n}),resolve:e,reject:A}}function bm(e){return e.controller.state==="aborted"}function Fm(e){return e.controller.state==="aborted"||e.controller.state==="terminated"}function Rm(e){return Am[e.toLowerCase()]??e}function Sm(e){let A=JSON.stringify(e);if(A===void 0)throw new TypeError("Value is not JSON serializable");return wt(typeof A=="string"),A}var Nm=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function bE(e,A,t=0,r=1){class n{#e;#A;#t;constructor(i,o){this.#e=i,this.#A=o,this.#t=0}next(){if(typeof this!="object"||this===null||!(#e in this))throw new TypeError(`'next' called on an object that does not implement interface ${e} Iterator.`);let i=this.#t,o=this.#e[A],a=o.length;if(i>=a)return{value:void 0,done:!0};let{[t]:g,[r]:l}=o[i];this.#t=i+1;let c;switch(this.#A){case"key":c=g;break;case"value":c=l;break;case"key+value":c=[g,l];break}return{value:c,done:!1}}}return delete n.prototype.constructor,Object.setPrototypeOf(n.prototype,Nm),Object.defineProperties(n.prototype,{[Symbol.toStringTag]:{writable:!1,enumerable:!1,configurable:!0,value:`${e} Iterator`},next:{writable:!0,enumerable:!0,configurable:!0}}),function(s,i){return new n(s,i)}}function Mm(e,A,t,r=0,n=1){let s=bE(e,t,r,n),i={keys:{writable:!0,enumerable:!0,configurable:!0,value:function(){return ln.brandCheck(this,A),s(this,"key")}},values:{writable:!0,enumerable:!0,configurable:!0,value:function(){return ln.brandCheck(this,A),s(this,"value")}},entries:{writable:!0,enumerable:!0,configurable:!0,value:function(){return ln.brandCheck(this,A),s(this,"key+value")}},forEach:{writable:!0,enumerable:!0,configurable:!0,value:function(a,g=globalThis){if(ln.brandCheck(this,A),ln.argumentLengthCheck(arguments,1,`${e}.forEach`),typeof a!="function")throw new TypeError(`Failed to execute 'forEach' on '${e}': parameter 1 is not of type 'Function'.`);for(let{0:l,1:c}of s(this,"key+value"))a.call(g,c,l,this)}}};return Object.defineProperties(A.prototype,{...i,[Symbol.iterator]:{writable:!0,enumerable:!1,configurable:!0,value:i.entries.value}})}async function Um(e,A,t){let r=A,n=t,s;try{s=e.stream.getReader()}catch(i){n(i);return}try{r(await FE(s))}catch(i){n(i)}}function Lm(e){return e instanceof ReadableStream||e[Symbol.toStringTag]==="ReadableStream"&&typeof e.tee=="function"}function Tm(e){try{e.close(),e.byobRequest?.respond(0)}catch(A){if(!A.message.includes("Controller is already closed")&&!A.message.includes("ReadableStream is already closed"))throw A}}var xm=/[^\x00-\xFF]/;function Ls(e){return wt(!xm.test(e)),e}async function FE(e){let A=[],t=0;for(;;){let{done:r,value:n}=await e.read();if(r)return Buffer.concat(A,t);if(!tm(n))throw new TypeError("Received non-Uint8Array chunk");A.push(n),t+=n.length}}function Ym(e){wt("protocol"in e);let A=e.protocol;return A==="about:"||A==="blob:"||A==="data:"}function wa(e){return typeof e=="string"&&e[5]===":"&&e[0]==="h"&&e[1]==="t"&&e[2]==="t"&&e[3]==="p"&&e[4]==="s"||e.protocol==="https:"}function RE(e){wt("protocol"in e);let A=e.protocol;return A==="http:"||A==="https:"}function Gm(e,A){let t=e;if(!t.startsWith("bytes"))return"failure";let r={position:5};if(A&&dt(a=>a===" "||a===" ",t,r),t.charCodeAt(r.position)!==61)return"failure";r.position++,A&&dt(a=>a===" "||a===" ",t,r);let n=dt(a=>{let g=a.charCodeAt(0);return g>=48&&g<=57},t,r),s=n.length?Number(n):null;if(A&&dt(a=>a===" "||a===" ",t,r),t.charCodeAt(r.position)!==45)return"failure";r.position++,A&&dt(a=>a===" "||a===" ",t,r);let i=dt(a=>{let g=a.charCodeAt(0);return g>=48&&g<=57},t,r),o=i.length?Number(i):null;return r.position<t.length||o===null&&s===null||s>o?"failure":{rangeStartValue:s,rangeEndValue:o}}function Jm(e,A,t){let r="bytes ";return r+=Ls(`${e}`),r+="-",r+=Ls(`${A}`),r+="/",r+=Ls(`${t}`),r}var ya=class extends Pp{#e;constructor(A){super(),this.#e=A}_transform(A,t,r){if(!this._inflateStream){if(A.length===0){r();return}this._inflateStream=(A[0]&15)===8?CE.createInflate(this.#e):CE.createInflateRaw(this.#e),this._inflateStream.on("data",this.push.bind(this)),this._inflateStream.on("end",()=>this.push(null)),this._inflateStream.on("error",n=>this.destroy(n))}this._inflateStream.write(A,t,r)}_final(A){this._inflateStream&&(this._inflateStream.end(),this._inflateStream=null),A()}};function Hm(e){return new ya(e)}function Vm(e){let A=null,t=null,r=null,n=SE("content-type",e);if(n===null)return"failure";for(let s of n){let i=Xp(s);i==="failure"||i.essence==="*/*"||(r=i,r.essence!==t?(A=null,r.parameters.has("charset")&&(A=r.parameters.get("charset")),t=r.essence):!r.parameters.has("charset")&&A!==null&&r.parameters.set("charset",A))}return r??"failure"}function vm(e){let A=e,t={position:0},r=[],n="";for(;t.position<A.length;){if(n+=dt(s=>s!=='"'&&s!==",",A,t),t.position<A.length)if(A.charCodeAt(t.position)===34){if(n+=_p(A,t),t.position<A.length)continue}else wt(A.charCodeAt(t.position)===44),t.position++;n=Kp(n,!0,!0,s=>s===9||s===32),r.push(n),n=""}return r}function SE(e,A){let t=A.get(e,!0);return t===null?null:vm(t)}var qm=new TextDecoder;function Wm(e){return e.length===0?"":(e[0]===239&&e[1]===187&&e[2]===191&&(e=e.subarray(3)),qm.decode(e))}var pa=class{get baseUrl(){return fE()}get origin(){return this.baseUrl?.origin}policyContainer=DE()},ma=class{settingsObject=new pa},Pm=new ma;NE.exports={isAborted:bm,isCancelled:Fm,isValidEncodedURL:pE,createDeferredPromise:km,ReadableStreamFrom:em,tryUpgradeRequestToAPotentiallyTrustworthyURL:Dm,clampAndCoarsenConnectionTimingInfo:um,coarsenedSharedCurrentTime:Im,determineRequestsReferrer:fm,makePolicyContainer:DE,clonePolicyContainer:Cm,appendFetchMetadata:Em,appendRequestOriginHeader:Bm,TAOCheck:Qm,corsCheck:lm,crossOriginResourcePolicyCheck:gm,createOpaqueTimingInfo:hm,setRequestReferrerPolicyOnRedirect:cm,isValidHTTPToken:dE,requestBadPort:sm,requestCurrentURL:En,responseURL:yE,responseLocationURL:rm,isBlobLike:$p,isURLPotentiallyTrustworthy:Qn,isValidReasonPhrase:om,sameOrigin:xs,normalizeMethod:Rm,serializeJavascriptValueToJSONString:Sm,iteratorMixin:Mm,createIterator:bE,isValidHeaderName:am,isValidHeaderValue:mE,isErrorLike:im,fullyReadBody:Um,bytesMatch:dm,isReadableStreamLike:Lm,readableStreamClose:Tm,isomorphicEncode:Ls,urlIsLocal:Ym,urlHasHttpsScheme:wa,urlIsHttpHttpsScheme:RE,readAllBytes:FE,simpleRangeHeaderValue:Gm,buildContentRange:Jm,parseMetadata:kE,createInflate:Hm,extractMimeType:Vm,getDecodeSplit:SE,utf8DecodeBytes:Wm,environmentSettingsObject:Pm}});var jA=p((Wx,ME)=>{"use strict";ME.exports={kUrl:Symbol("url"),kHeaders:Symbol("headers"),kSignal:Symbol("signal"),kState:Symbol("state"),kDispatcher:Symbol("dispatcher")}});var ka=p((Px,UE)=>{"use strict";var{Blob:Om,File:zm}=y("node:buffer"),{kState:VA}=jA(),{webidl:DA}=Se(),Da=class e{constructor(A,t,r={}){let n=t,s=r.type,i=r.lastModified??Date.now();this[VA]={blobLike:A,name:n,type:s,lastModified:i}}stream(...A){return DA.brandCheck(this,e),this[VA].blobLike.stream(...A)}arrayBuffer(...A){return DA.brandCheck(this,e),this[VA].blobLike.arrayBuffer(...A)}slice(...A){return DA.brandCheck(this,e),this[VA].blobLike.slice(...A)}text(...A){return DA.brandCheck(this,e),this[VA].blobLike.text(...A)}get size(){return DA.brandCheck(this,e),this[VA].blobLike.size}get type(){return DA.brandCheck(this,e),this[VA].blobLike.type}get name(){return DA.brandCheck(this,e),this[VA].name}get lastModified(){return DA.brandCheck(this,e),this[VA].lastModified}get[Symbol.toStringTag](){return"File"}};DA.converters.Blob=DA.interfaceConverter(Om);function Zm(e){return e instanceof zm||e&&(typeof e.stream=="function"||typeof e.arrayBuffer=="function")&&e[Symbol.toStringTag]==="File"}UE.exports={FileLike:Da,isFileLike:Zm}});var un=p((Ox,GE)=>{"use strict";var{isBlobLike:Ys,iteratorMixin:_m}=Oe(),{kState:Te}=jA(),{kEnumerableProperty:ir}=v(),{FileLike:LE,isFileLike:Km}=ka(),{webidl:oe}=Se(),{File:YE}=y("node:buffer"),TE=y("node:util"),xE=globalThis.File??YE,Bn=class e{constructor(A){if(oe.util.markAsUncloneable(this),A!==void 0)throw oe.errors.conversionFailed({prefix:"FormData constructor",argument:"Argument 1",types:["undefined"]});this[Te]=[]}append(A,t,r=void 0){oe.brandCheck(this,e);let n="FormData.append";if(oe.argumentLengthCheck(arguments,2,n),arguments.length===3&&!Ys(t))throw new TypeError("Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'");A=oe.converters.USVString(A,n,"name"),t=Ys(t)?oe.converters.Blob(t,n,"value",{strict:!1}):oe.converters.USVString(t,n,"value"),r=arguments.length===3?oe.converters.USVString(r,n,"filename"):void 0;let s=ba(A,t,r);this[Te].push(s)}delete(A){oe.brandCheck(this,e);let t="FormData.delete";oe.argumentLengthCheck(arguments,1,t),A=oe.converters.USVString(A,t,"name"),this[Te]=this[Te].filter(r=>r.name!==A)}get(A){oe.brandCheck(this,e);let t="FormData.get";oe.argumentLengthCheck(arguments,1,t),A=oe.converters.USVString(A,t,"name");let r=this[Te].findIndex(n=>n.name===A);return r===-1?null:this[Te][r].value}getAll(A){oe.brandCheck(this,e);let t="FormData.getAll";return oe.argumentLengthCheck(arguments,1,t),A=oe.converters.USVString(A,t,"name"),this[Te].filter(r=>r.name===A).map(r=>r.value)}has(A){oe.brandCheck(this,e);let t="FormData.has";return oe.argumentLengthCheck(arguments,1,t),A=oe.converters.USVString(A,t,"name"),this[Te].findIndex(r=>r.name===A)!==-1}set(A,t,r=void 0){oe.brandCheck(this,e);let n="FormData.set";if(oe.argumentLengthCheck(arguments,2,n),arguments.length===3&&!Ys(t))throw new TypeError("Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'");A=oe.converters.USVString(A,n,"name"),t=Ys(t)?oe.converters.Blob(t,n,"name",{strict:!1}):oe.converters.USVString(t,n,"name"),r=arguments.length===3?oe.converters.USVString(r,n,"name"):void 0;let s=ba(A,t,r),i=this[Te].findIndex(o=>o.name===A);i!==-1?this[Te]=[...this[Te].slice(0,i),s,...this[Te].slice(i+1).filter(o=>o.name!==A)]:this[Te].push(s)}[TE.inspect.custom](A,t){let r=this[Te].reduce((s,i)=>(s[i.name]?Array.isArray(s[i.name])?s[i.name].push(i.value):s[i.name]=[s[i.name],i.value]:s[i.name]=i.value,s),{__proto__:null});t.depth??=A,t.colors??=!0;let n=TE.formatWithOptions(t,r);return`FormData ${n.slice(n.indexOf("]")+2)}`}};_m("FormData",Bn,Te,"name","value");Object.defineProperties(Bn.prototype,{append:ir,delete:ir,get:ir,getAll:ir,has:ir,set:ir,[Symbol.toStringTag]:{value:"FormData",configurable:!0}});function ba(e,A,t){if(typeof A!="string"){if(Km(A)||(A=A instanceof Blob?new xE([A],"blob",{type:A.type}):new LE(A,"blob",{type:A.type})),t!==void 0){let r={type:A.type,lastModified:A.lastModified};A=A instanceof YE?new xE([A],t,r):new LE(A,t,r)}}return{name:e,value:A}}GE.exports={FormData:Bn,makeEntry:ba}});var WE=p((zx,qE)=>{"use strict";var{isUSVString:JE,bufferToLowerCasedHeaderName:Xm}=v(),{utf8DecodeBytes:jm}=Oe(),{HTTP_TOKEN_CODEPOINTS:$m,isomorphicDecode:HE}=He(),{isFileLike:e0}=ka(),{makeEntry:A0}=un(),Gs=y("node:assert"),{File:t0}=y("node:buffer"),r0=globalThis.File??t0,n0=Buffer.from('form-data; name="'),VE=Buffer.from("; filename"),s0=Buffer.from("--"),i0=Buffer.from(`--\r
|
|
3
|
-
`);function o0(e){for(let A=0;A<e.length;++A)if((e.charCodeAt(A)&-128)!==0)return!1;return!0}function a0(e){let A=e.length;if(A<27||A>70)return!1;for(let t=0;t<A;++t){let r=e.charCodeAt(t);if(!(r>=48&&r<=57||r>=65&&r<=90||r>=97&&r<=122||r===39||r===45||r===95))return!1}return!0}function c0(e,A){Gs(A!=="failure"&&A.essence==="multipart/form-data");let t=A.parameters.get("boundary");if(t===void 0)return"failure";let r=Buffer.from(`--${t}`,"utf8"),n=[],s={position:0};for(;e[s.position]===13&&e[s.position+1]===10;)s.position+=2;let i=e.length;for(;e[i-1]===10&&e[i-2]===13;)i-=2;for(i!==e.length&&(e=e.subarray(0,i));;){if(e.subarray(s.position,s.position+r.length).equals(r))s.position+=r.length;else return"failure";if(s.position===e.length-2&&Js(e,s0,s)||s.position===e.length-4&&Js(e,i0,s))return n;if(e[s.position]!==13||e[s.position+1]!==10)return"failure";s.position+=2;let o=g0(e,s);if(o==="failure")return"failure";let{name:a,filename:g,contentType:l,encoding:c}=o;s.position+=2;let Q;{let E=e.indexOf(r.subarray(2),s.position);if(E===-1)return"failure";Q=e.subarray(s.position,E-4),s.position+=Q.length,c==="base64"&&(Q=Buffer.from(Q.toString(),"base64"))}if(e[s.position]!==13||e[s.position+1]!==10)return"failure";s.position+=2;let B;g!==null?(l??="text/plain",o0(l)||(l=""),B=new r0([Q],g,{type:l})):B=jm(Buffer.from(Q)),Gs(JE(a)),Gs(typeof B=="string"&&JE(B)||e0(B)),n.push(A0(a,B,g))}}function g0(e,A){let t=null,r=null,n=null,s=null;for(;;){if(e[A.position]===13&&e[A.position+1]===10)return t===null?"failure":{name:t,filename:r,contentType:n,encoding:s};let i=or(o=>o!==10&&o!==13&&o!==58,e,A);if(i=Fa(i,!0,!0,o=>o===9||o===32),!$m.test(i.toString())||e[A.position]!==58)return"failure";switch(A.position++,or(o=>o===32||o===9,e,A),Xm(i)){case"content-disposition":{if(t=r=null,!Js(e,n0,A)||(A.position+=17,t=vE(e,A),t===null))return"failure";if(Js(e,VE,A)){let o=A.position+VE.length;if(e[o]===42&&(A.position+=1,o+=1),e[o]!==61||e[o+1]!==34||(A.position+=12,r=vE(e,A),r===null))return"failure"}break}case"content-type":{let o=or(a=>a!==10&&a!==13,e,A);o=Fa(o,!1,!0,a=>a===9||a===32),n=HE(o);break}case"content-transfer-encoding":{let o=or(a=>a!==10&&a!==13,e,A);o=Fa(o,!1,!0,a=>a===9||a===32),s=HE(o);break}default:or(o=>o!==10&&o!==13,e,A)}if(e[A.position]!==13&&e[A.position+1]!==10)return"failure";A.position+=2}}function vE(e,A){Gs(e[A.position-1]===34);let t=or(r=>r!==10&&r!==13&&r!==34,e,A);return e[A.position]!==34?null:(A.position++,t=new TextDecoder().decode(t).replace(/%0A/ig,`
|
|
4
|
-
`).replace(/%0D/ig,"\r").replace(/%22/g,'"'),t)}function or(e,A,t){let r=t.position;for(;r<A.length&&e(A[r]);)++r;return A.subarray(t.position,t.position=r)}function Fa(e,A,t,r){let n=0,s=e.length-1;if(A)for(;n<e.length&&r(e[n]);)n++;if(t)for(;s>0&&r(e[s]);)s--;return n===0&&s===e.length-1?e:e.subarray(n,s+1)}function Js(e,A,t){if(e.length<A.length)return!1;for(let r=0;r<A.length;r++)if(A[r]!==e[t.position+r])return!1;return!0}qE.exports={multipartFormDataParser:c0,validateBoundary:a0}});var gr=p((Zx,eB)=>{"use strict";var In=v(),{ReadableStreamFrom:l0,isBlobLike:PE,isReadableStreamLike:Q0,readableStreamClose:E0,createDeferredPromise:B0,fullyReadBody:u0,extractMimeType:I0,utf8DecodeBytes:ZE}=Oe(),{FormData:OE}=un(),{kState:cr}=jA(),{webidl:h0}=Se(),{Blob:C0}=y("node:buffer"),Ra=y("node:assert"),{isErrored:_E,isDisturbed:f0}=y("node:stream"),{isArrayBuffer:d0}=y("node:util/types"),{serializeAMimeType:w0}=He(),{multipartFormDataParser:y0}=WE(),Sa;try{let e=y("node:crypto");Sa=A=>e.randomInt(0,A)}catch{Sa=e=>Math.floor(Math.random(e))}var Hs=new TextEncoder;function p0(){}var KE=globalThis.FinalizationRegistry&&process.version.indexOf("v18")!==0,XE;KE&&(XE=new FinalizationRegistry(e=>{let A=e.deref();A&&!A.locked&&!f0(A)&&!_E(A)&&A.cancel("Response object has been garbage collected").catch(p0)}));function jE(e,A=!1){let t=null;e instanceof ReadableStream?t=e:PE(e)?t=e.stream():t=new ReadableStream({async pull(a){let g=typeof n=="string"?Hs.encode(n):n;g.byteLength&&a.enqueue(g),queueMicrotask(()=>E0(a))},start(){},type:"bytes"}),Ra(Q0(t));let r=null,n=null,s=null,i=null;if(typeof e=="string")n=e,i="text/plain;charset=UTF-8";else if(e instanceof URLSearchParams)n=e.toString(),i="application/x-www-form-urlencoded;charset=UTF-8";else if(d0(e))n=new Uint8Array(e.slice());else if(ArrayBuffer.isView(e))n=new Uint8Array(e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength));else if(In.isFormDataLike(e)){let a=`----formdata-undici-0${`${Sa(1e11)}`.padStart(11,"0")}`,g=`--${a}\r
|
|
5
|
-
Content-Disposition: form-data`;let l=h=>h.replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22"),c=h=>h.replace(/\r?\n|\r/g,`\r
|
|
6
|
-
`),Q=[],B=new Uint8Array([13,10]);s=0;let E=!1;for(let[h,I]of e)if(typeof I=="string"){let C=Hs.encode(g+`; name="${l(c(h))}"\r
|
|
7
|
-
\r
|
|
8
|
-
${c(I)}\r
|
|
9
|
-
`);Q.push(C),s+=C.byteLength}else{let C=Hs.encode(`${g}; name="${l(c(h))}"`+(I.name?`; filename="${l(I.name)}"`:"")+`\r
|
|
10
|
-
Content-Type: ${I.type||"application/octet-stream"}\r
|
|
11
|
-
\r
|
|
12
|
-
`);Q.push(C,I,B),typeof I.size=="number"?s+=C.byteLength+I.size+B.byteLength:E=!0}let u=Hs.encode(`--${a}--\r
|
|
13
|
-
`);Q.push(u),s+=u.byteLength,E&&(s=null),n=e,r=async function*(){for(let h of Q)h.stream?yield*h.stream():yield h},i=`multipart/form-data; boundary=${a}`}else if(PE(e))n=e,s=e.size,e.type&&(i=e.type);else if(typeof e[Symbol.asyncIterator]=="function"){if(A)throw new TypeError("keepalive");if(In.isDisturbed(e)||e.locked)throw new TypeError("Response body object should not be disturbed or locked");t=e instanceof ReadableStream?e:l0(e)}if((typeof n=="string"||In.isBuffer(n))&&(s=Buffer.byteLength(n)),r!=null){let a;t=new ReadableStream({async start(){a=r(e)[Symbol.asyncIterator]()},async pull(g){let{value:l,done:c}=await a.next();if(c)queueMicrotask(()=>{g.close(),g.byobRequest?.respond(0)});else if(!_E(t)){let Q=new Uint8Array(l);Q.byteLength&&g.enqueue(Q)}return g.desiredSize>0},async cancel(g){await a.return()},type:"bytes"})}return[{stream:t,source:n,length:s},i]}function m0(e,A=!1){return e instanceof ReadableStream&&(Ra(!In.isDisturbed(e),"The body has already been consumed."),Ra(!e.locked,"The stream is locked.")),jE(e,A)}function D0(e,A){let[t,r]=A.stream.tee();return A.stream=t,{stream:r,length:A.length,source:A.source}}function k0(e){if(e.aborted)throw new DOMException("The operation was aborted.","AbortError")}function b0(e){return{blob(){return ar(this,t=>{let r=zE(this);return r===null?r="":r&&(r=w0(r)),new C0([t],{type:r})},e)},arrayBuffer(){return ar(this,t=>new Uint8Array(t).buffer,e)},text(){return ar(this,ZE,e)},json(){return ar(this,R0,e)},formData(){return ar(this,t=>{let r=zE(this);if(r!==null)switch(r.essence){case"multipart/form-data":{let n=y0(t,r);if(n==="failure")throw new TypeError("Failed to parse body as FormData.");let s=new OE;return s[cr]=n,s}case"application/x-www-form-urlencoded":{let n=new URLSearchParams(t.toString()),s=new OE;for(let[i,o]of n)s.append(i,o);return s}}throw new TypeError('Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".')},e)},bytes(){return ar(this,t=>new Uint8Array(t),e)}}}function F0(e){Object.assign(e.prototype,b0(e))}async function ar(e,A,t){if(h0.brandCheck(e,t),$E(e))throw new TypeError("Body is unusable: Body has already been read");k0(e[cr]);let r=B0(),n=i=>r.reject(i),s=i=>{try{r.resolve(A(i))}catch(o){n(o)}};return e[cr].body==null?(s(Buffer.allocUnsafe(0)),r.promise):(await u0(e[cr].body,s,n),r.promise)}function $E(e){let A=e[cr].body;return A!=null&&(A.stream.locked||In.isDisturbed(A.stream))}function R0(e){return JSON.parse(ZE(e))}function zE(e){let A=e[cr].headersList,t=I0(A);return t==="failure"?null:t}eB.exports={extractBody:jE,safelyExtractBody:m0,cloneBody:D0,mixinBody:F0,streamRegistry:XE,hasFinalizationRegistry:KE,bodyUnusable:$E}});var IB=p((_x,uB)=>{"use strict";var U=y("node:assert"),T=v(),{channels:AB}=Xt(),Na=Qa(),{RequestContentLengthMismatchError:yt,ResponseContentLengthMismatchError:tB,RequestAbortedError:gB,InvalidArgumentError:S0,HeadersTimeoutError:N0,HeadersOverflowError:M0,SocketError:lr,InformationalError:Qr,BodyTimeoutError:U0,HTTPParserError:L0,ResponseExceededMaxSizeError:T0}=Z(),{kUrl:lB,kReset:Ve,kClient:Ws,kParser:ae,kBlocking:fn,kRunning:we,kPending:QB,kSize:rB,kWriting:$A,kQueue:cA,kNoRef:hn,kKeepAliveDefaultTimeout:x0,kHostHeader:Y0,kPendingIdx:G0,kRunningIdx:rA,kError:xe,kPipelining:Ps,kSocket:mt,kKeepAliveTimeoutValue:zs,kMaxHeadersSize:Ma,kKeepAliveMaxTimeout:J0,kKeepAliveTimeoutThreshold:H0,kHeadersTimeout:V0,kBodyTimeout:v0,kStrictContentLength:Ta,kMaxRequests:nB,kCounter:q0,kMaxResponseSize:W0,kOnError:sB,kResume:vA,kHTTPContext:EB}=Qe(),ze=XQ(),iB=Buffer.alloc(0),Vs=Buffer[Symbol.species],vs=T.addListener,P0=T.removeAllListeners,Dt=Symbol("kIdleSocketValidation"),pt=Symbol("kIdleSocketValidationTimeout"),Ja=Symbol("kSocketUsed"),Ua;async function O0(){let e=process.env.JEST_WORKER_ID?ua():void 0,A;try{A=await WebAssembly.compile(eE())}catch{A=await WebAssembly.compile(e||ua())}return await WebAssembly.instantiate(A,{env:{wasm_on_url:(t,r,n)=>0,wasm_on_status:(t,r,n)=>{U(ue.ptr===t);let s=r-bA+kA.byteOffset;return ue.onStatus(new Vs(kA.buffer,s,n))||0},wasm_on_message_begin:t=>(U(ue.ptr===t),ue.onMessageBegin()||0),wasm_on_header_field:(t,r,n)=>{U(ue.ptr===t);let s=r-bA+kA.byteOffset;return ue.onHeaderField(new Vs(kA.buffer,s,n))||0},wasm_on_header_value:(t,r,n)=>{U(ue.ptr===t);let s=r-bA+kA.byteOffset;return ue.onHeaderValue(new Vs(kA.buffer,s,n))||0},wasm_on_headers_complete:(t,r,n,s)=>(U(ue.ptr===t),ue.onHeadersComplete(r,!!n,!!s)||0),wasm_on_body:(t,r,n)=>{U(ue.ptr===t);let s=r-bA+kA.byteOffset;return ue.onBody(new Vs(kA.buffer,s,n))||0},wasm_on_message_complete:t=>(U(ue.ptr===t),ue.onMessageComplete()||0)}})}var La=null,xa=O0();xa.catch();var ue=null,kA=null,qs=0,bA=null,z0=0,Cn=1,Er=2|Cn,Os=4|Cn,Ya=8|z0,Ga=class{constructor(A,t,{exports:r}){U(Number.isFinite(A[Ma])&&A[Ma]>0),this.llhttp=r,this.ptr=this.llhttp.llhttp_alloc(ze.TYPE.RESPONSE),this.client=A,this.socket=t,this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.statusCode=null,this.statusText="",this.upgrade=!1,this.headers=[],this.headersSize=0,this.headersMaxSize=A[Ma],this.shouldKeepAlive=!1,this.paused=!1,this.resume=this.resume.bind(this),this.bytesRead=0,this.keepAlive="",this.contentLength="",this.connection="",this.maxResponseSize=A[W0]}setTimeout(A,t){A!==this.timeoutValue||t&Cn^this.timeoutType&Cn?(this.timeout&&(Na.clearTimeout(this.timeout),this.timeout=null),A&&(t&Cn?this.timeout=Na.setFastTimeout(oB,A,new WeakRef(this)):(this.timeout=setTimeout(oB,A,new WeakRef(this)),this.timeout.unref())),this.timeoutValue=A):this.timeout&&this.timeout.refresh&&this.timeout.refresh(),this.timeoutType=t}resume(){this.socket.destroyed||!this.paused||(U(this.ptr!=null),U(ue==null),this.llhttp.llhttp_resume(this.ptr),U(this.timeoutType===Os),this.timeout&&this.timeout.refresh&&this.timeout.refresh(),this.paused=!1,this.execute(this.socket.read()||iB),this.readMore())}readMore(){for(;!this.paused&&this.ptr;){let A=this.socket.read();if(A===null)break;this.execute(A)}}execute(A){U(this.ptr!=null),U(ue==null),U(!this.paused);let{socket:t,llhttp:r}=this;A.length>qs&&(bA&&r.free(bA),qs=Math.ceil(A.length/4096)*4096,bA=r.malloc(qs)),new Uint8Array(r.memory.buffer,bA,qs).set(A);try{let n;try{kA=A,ue=this,n=r.llhttp_execute(this.ptr,bA,A.length)}catch(i){throw i}finally{ue=null,kA=null}let s=r.llhttp_get_error_pos(this.ptr)-bA;if(n!==ze.ERROR.OK){let i=A.subarray(s);if(n===ze.ERROR.PAUSED_UPGRADE)this.onUpgrade(i);else if(n===ze.ERROR.PAUSED)this.paused=!0,t.unshift(i);else throw this.createError(n,i)}}catch(n){T.destroy(t,n)}}finish(){U(ue===null),U(this.ptr!=null),U(!this.paused);let{llhttp:A}=this,t;try{ue=this,t=A.llhttp_finish(this.ptr)}finally{ue=null}return t===ze.ERROR.OK?null:t===ze.ERROR.PAUSED||t===ze.ERROR.PAUSED_UPGRADE?(this.paused=!0,null):this.createError(t,iB)}createError(A,t){let{llhttp:r,contentLength:n,bytesRead:s}=this;if(n&&s!==parseInt(n,10))return new tB;let i=r.llhttp_get_error_reason(this.ptr),o="";if(i){let a=new Uint8Array(r.memory.buffer,i).indexOf(0);o="Response does not match the HTTP/1.1 protocol ("+Buffer.from(r.memory.buffer,i,a).toString()+")"}return new L0(o,ze.ERROR[A],t)}destroy(){U(this.ptr!=null),U(ue==null),this.llhttp.llhttp_free(this.ptr),this.ptr=null,this.timeout&&Na.clearTimeout(this.timeout),this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.paused=!1}onStatus(A){this.statusText=A.toString()}onMessageBegin(){let{socket:A,client:t}=this;if(A.destroyed)return-1;if(t[we]===0)return T.destroy(A,new lr("bad response",T.getSocketInfo(A))),-1;let r=t[cA][t[rA]];if(!r)return-1;r.onResponseStarted()}onHeaderField(A){let t=this.headers.length;(t&1)===0?this.headers.push(A):this.headers[t-1]=Buffer.concat([this.headers[t-1],A]),this.trackHeader(A.length)}onHeaderValue(A){let t=this.headers.length;(t&1)===1?(this.headers.push(A),t+=1):this.headers[t-1]=Buffer.concat([this.headers[t-1],A]);let r=this.headers[t-2];if(r.length===10){let n=T.bufferToLowerCasedHeaderName(r);n==="keep-alive"?this.keepAlive+=A.toString():n==="connection"&&(this.connection+=A.toString())}else r.length===14&&T.bufferToLowerCasedHeaderName(r)==="content-length"&&(this.contentLength+=A.toString());this.trackHeader(A.length)}trackHeader(A){this.headersSize+=A,this.headersSize>=this.headersMaxSize&&T.destroy(this.socket,new M0)}onUpgrade(A){let{upgrade:t,client:r,socket:n,headers:s,statusCode:i}=this;U(t),U(r[mt]===n),U(!n.destroyed),U(!this.paused),U((s.length&1)===0);let o=r[cA][r[rA]];U(o),U(o.upgrade||o.method==="CONNECT"),this.statusCode=null,this.statusText="",this.shouldKeepAlive=null,this.headers=[],this.headersSize=0,n.unshift(A),n[ae].destroy(),n[ae]=null,n[Ws]=null,n[xe]=null,P0(n),r[mt]=null,r[EB]=null,r[cA][r[rA]++]=null,r.emit("disconnect",r[lB],[r],new Qr("upgrade"));try{o.onUpgrade(i,s,n)}catch(a){T.destroy(n,a)}r[vA]()}onHeadersComplete(A,t,r){let{client:n,socket:s,headers:i,statusText:o}=this;if(s.destroyed)return-1;if(n[we]===0)return T.destroy(s,new lr("bad response",T.getSocketInfo(s))),-1;let a=n[cA][n[rA]];if(!a)return-1;if(U(!this.upgrade),U(this.statusCode<200),A===100)return T.destroy(s,new lr("bad response",T.getSocketInfo(s))),-1;if(t&&!a.upgrade)return T.destroy(s,new lr("bad upgrade",T.getSocketInfo(s))),-1;if(U(this.timeoutType===Er),this.statusCode=A,this.shouldKeepAlive=r||a.method==="HEAD"&&!s[Ve]&&this.connection.toLowerCase()==="keep-alive",this.statusCode>=200){let l=a.bodyTimeout!=null?a.bodyTimeout:n[v0];this.setTimeout(l,Os)}else this.timeout&&this.timeout.refresh&&this.timeout.refresh();if(a.method==="CONNECT")return U(n[we]===1),this.upgrade=!0,2;if(t)return U(n[we]===1),this.upgrade=!0,2;if(U((this.headers.length&1)===0),this.headers=[],this.headersSize=0,this.shouldKeepAlive&&n[Ps]){let l=this.keepAlive?T.parseKeepAliveTimeout(this.keepAlive):null;if(l!=null){let c=Math.min(l-n[H0],n[J0]);c<=0?s[Ve]=!0:n[zs]=c}else n[zs]=n[x0]}else s[Ve]=!0;let g=a.onHeaders(A,i,this.resume,o)===!1;return a.aborted?-1:a.method==="HEAD"||A<200?1:(s[fn]&&(s[fn]=!1,n[vA]()),g?ze.ERROR.PAUSED:0)}onBody(A){let{client:t,socket:r,statusCode:n,maxResponseSize:s}=this;if(r.destroyed)return-1;let i=t[cA][t[rA]];if(U(i),U(this.timeoutType===Os),this.timeout&&this.timeout.refresh&&this.timeout.refresh(),U(n>=200),s>-1&&this.bytesRead+A.length>s)return T.destroy(r,new T0),-1;if(this.bytesRead+=A.length,i.onData(A)===!1)return ze.ERROR.PAUSED}onMessageComplete(){let{client:A,socket:t,statusCode:r,upgrade:n,headers:s,contentLength:i,bytesRead:o,shouldKeepAlive:a}=this;if(t.destroyed&&(!r||a))return-1;if(n)return;U(r>=100),U((this.headers.length&1)===0);let g=A[cA][A[rA]];if(U(g),this.statusCode=null,this.statusText="",this.bytesRead=0,this.contentLength="",this.keepAlive="",this.connection="",this.headers=[],this.headersSize=0,!(r<200)){if(g.method!=="HEAD"&&i&&o!==parseInt(i,10))return T.destroy(t,new tB),-1;if(g.onComplete(s),A[cA][A[rA]++]=null,t[Ja]=!0,t[$A])return U(A[we]===0),T.destroy(t,new Qr("reset")),ze.ERROR.PAUSED;if(a){if(t[Ve]&&A[we]===0)return T.destroy(t,new Qr("reset")),ze.ERROR.PAUSED;A[Ps]==null||A[Ps]===1?setImmediate(()=>A[vA]()):A[vA]()}else return T.destroy(t,new Qr("reset")),ze.ERROR.PAUSED}}};function oB(e){let{socket:A,timeoutType:t,client:r,paused:n}=e.deref();t===Er?(!A[$A]||A.writableNeedDrain||r[we]>1)&&(U(!n,"cannot be paused while waiting for headers"),T.destroy(A,new N0)):t===Os?n||T.destroy(A,new U0):t===Ya&&(U(r[we]===0&&r[zs]),T.destroy(A,new Qr("socket idle timeout")))}async function Z0(e,A){e[mt]=A,La||(La=await xa,xa=null),A[hn]=!1,A[$A]=!1,A[Ve]=!1,A[fn]=!1,A[Dt]=0,A[pt]=null,A[Ja]=!1,A[ae]=new Ga(e,A,La),vs(A,"error",function(r){U(r.code!=="ERR_TLS_CERT_ALTNAME_INVALID");let n=this[ae];if(r.code==="ECONNRESET"&&n.statusCode&&!n.shouldKeepAlive){let s=n.finish();s&&(this[xe]=s,this[Ws][sB](s));return}this[xe]=r,this[Ws][sB](r)}),vs(A,"readable",function(){let r=this[ae];r&&r.readMore()}),vs(A,"end",function(){let r=this[ae];if(r.statusCode&&!r.shouldKeepAlive){let n=r.finish();n&&T.destroy(this,n);return}T.destroy(this,new lr("other side closed",T.getSocketInfo(this)))}),vs(A,"close",function(){let r=this[Ws],n=this[ae];BB(this),n&&(!this[xe]&&n.statusCode&&!n.shouldKeepAlive&&(this[xe]=n.finish()||this[xe]),this[ae].destroy(),this[ae]=null);let s=this[xe]||new lr("closed",T.getSocketInfo(this));if(r[mt]=null,r[EB]=null,r.destroyed){U(r[QB]===0);let i=r[cA].splice(r[rA]);for(let o=0;o<i.length;o++){let a=i[o];T.errorRequest(r,a,s)}}else if(r[we]>0&&s.code!=="UND_ERR_INFO"){let i=r[cA][r[rA]];r[cA][r[rA]++]=null,T.errorRequest(r,i,s)}r[G0]=r[rA],U(r[we]===0),r.emit("disconnect",r[lB],[r],s),r[vA]()});let t=!1;return A.on("close",()=>{t=!0}),{version:"h1",defaultPipelining:1,write(...r){return j0(e,...r)},resume(){K0(e)},destroy(r,n){t?queueMicrotask(n):A.destroy(r).on("close",n)},get destroyed(){return A.destroyed},busy(r){return!!(A[$A]||A[Ve]||A[fn]||A[Dt]===1||r&&(e[we]>0&&!r.idempotent||e[we]>0&&(r.upgrade||r.method==="CONNECT")||e[we]>0&&T.bodyLength(r.body)!==0&&(T.isStream(r.body)||T.isAsyncIterable(r.body)||T.isFormDataLike(r.body))))}}}function BB(e){e[pt]&&(clearTimeout(e[pt]),e[pt]=null),e[Dt]=0}function _0(e,A){A[Dt]=1,A[pt]=setTimeout(()=>{A[pt]=null,A[Dt]=2,e[mt]===A&&!A.destroyed&&e[vA]()},0),A[pt].unref?.()}function K0(e){let A=e[mt];if(A&&!A.destroyed){if(e[rB]===0?!A[hn]&&A.unref&&(A.unref(),A[hn]=!0):A[hn]&&A.ref&&(A.ref(),A[hn]=!1),e[we]===0&&e[QB]>0&&A[Ja]){if(A[Dt]===0)return _0(e,A),A[ae].readMore(),A.destroyed,void 0;if(A[Dt]===1)return A[ae].readMore(),A.destroyed,void 0}if(e[we]===0&&(A[ae].readMore(),A.destroyed))return;if(e[rB]===0)A[ae].timeoutType!==Ya&&A[ae].setTimeout(e[zs],Ya);else if(e[we]>0&&A[ae].statusCode<200&&A[ae].timeoutType!==Er){let t=e[cA][e[rA]],r=t.headersTimeout!=null?t.headersTimeout:e[V0];A[ae].setTimeout(r,Er)}}}function X0(e){return e!=="GET"&&e!=="HEAD"&&e!=="OPTIONS"&&e!=="TRACE"&&e!=="CONNECT"}function j0(e,A){let{method:t,path:r,host:n,upgrade:s,blocking:i,reset:o}=A,{body:a,headers:g,contentLength:l}=A,c=t==="PUT"||t==="POST"||t==="PATCH"||t==="QUERY"||t==="PROPFIND"||t==="PROPPATCH";if(T.isFormDataLike(a)){Ua||(Ua=gr().extractBody);let[h,I]=Ua(a);A.contentType==null&&g.push("content-type",I),a=h.stream,l=h.length}else if(T.isBlobLike(a)&&A.contentType==null){let h=a.type;if(h){let I=`${h}`;if(!T.isValidHeaderValue(I))return T.errorRequest(e,A,new S0("invalid content-type header")),!1;g.push("content-type",I)}}a&&typeof a.read=="function"&&a.read(0);let Q=T.bodyLength(a);if(l=Q??l,l===null&&(l=A.contentLength),l===0&&!c&&(l=null),X0(t)&&l>0&&A.contentLength!==null&&A.contentLength!==l){if(e[Ta])return T.errorRequest(e,A,new yt),!1;process.emitWarning(new yt)}let B=e[mt];BB(B);let E=h=>{A.aborted||A.completed||(T.errorRequest(e,A,h||new gB),T.destroy(a),T.destroy(B,new Qr("aborted")))};try{A.onConnect(E)}catch(h){T.errorRequest(e,A,h)}if(A.aborted)return!1;t==="HEAD"&&(B[Ve]=!0),(s||t==="CONNECT")&&(B[Ve]=!0),o!=null&&(B[Ve]=o),e[nB]&&B[q0]++>=e[nB]&&(B[Ve]=!0),i&&(B[fn]=!0);let u=`${t} ${r} HTTP/1.1\r
|
|
14
|
-
`;if(typeof n=="string"?u+=`host: ${n}\r
|
|
15
|
-
`:u+=e[Y0],s?u+=`connection: upgrade\r
|
|
16
|
-
upgrade: ${s}\r
|
|
17
|
-
`:e[Ps]&&!B[Ve]?u+=`connection: keep-alive\r
|
|
18
|
-
`:u+=`connection: close\r
|
|
19
|
-
`,Array.isArray(g))for(let h=0;h<g.length;h+=2){let I=g[h+0],C=g[h+1];if(Array.isArray(C))for(let D=0;D<C.length;D++)u+=`${I}: ${C[D]}\r
|
|
20
|
-
`;else u+=`${I}: ${C}\r
|
|
21
|
-
`}return AB.sendHeaders.hasSubscribers&&AB.sendHeaders.publish({request:A,headers:u,socket:B}),!a||Q===0?aB(E,null,e,A,B,l,u,c):T.isBuffer(a)?aB(E,a,e,A,B,l,u,c):T.isBlobLike(a)?typeof a.stream=="function"?cB(E,a.stream(),e,A,B,l,u,c):eD(E,a,e,A,B,l,u,c):T.isStream(a)?$0(E,a,e,A,B,l,u,c):T.isIterable(a)?cB(E,a,e,A,B,l,u,c):U(!1),!0}function $0(e,A,t,r,n,s,i,o){U(s!==0||t[we]===0,"stream body cannot be pipelined");let a=!1,g=new Zs({abort:e,socket:n,request:r,contentLength:s,client:t,expectsPayload:o,header:i}),l=function(E){if(!a)try{!g.write(E)&&this.pause&&this.pause()}catch(u){T.destroy(this,u)}},c=function(){a||A.resume&&A.resume()},Q=function(){if(queueMicrotask(()=>{A.removeListener("error",B)}),!a){let E=new gB;queueMicrotask(()=>B(E))}},B=function(E){if(!a){if(a=!0,U(n.destroyed||n[$A]&&t[we]<=1),n.off("drain",c).off("error",B),A.removeListener("data",l).removeListener("end",B).removeListener("close",Q),!E)try{g.end()}catch(u){E=u}g.destroy(E),E&&(E.code!=="UND_ERR_INFO"||E.message!=="reset")?T.destroy(A,E):T.destroy(A)}};A.on("data",l).on("end",B).on("error",B).on("close",Q),A.resume&&A.resume(),n.on("drain",c).on("error",B),A.errorEmitted??A.errored?setImmediate(()=>B(A.errored)):(A.endEmitted??A.readableEnded)&&setImmediate(()=>B(null)),(A.closeEmitted??A.closed)&&setImmediate(Q)}function aB(e,A,t,r,n,s,i,o){try{A?T.isBuffer(A)&&(U(s===A.byteLength,"buffer body must have content length"),n.cork(),n.write(`${i}content-length: ${s}\r
|
|
22
|
-
\r
|
|
23
|
-
`,"latin1"),n.write(A),n.uncork(),r.onBodySent(A),!o&&r.reset!==!1&&(n[Ve]=!0)):s===0?n.write(`${i}content-length: 0\r
|
|
24
|
-
\r
|
|
25
|
-
`,"latin1"):(U(s===null,"no body must not have content length"),n.write(`${i}\r
|
|
26
|
-
`,"latin1")),r.onRequestSent(),t[vA]()}catch(a){e(a)}}async function eD(e,A,t,r,n,s,i,o){U(s===A.size,"blob body must have content length");try{if(s!=null&&s!==A.size)throw new yt;let a=Buffer.from(await A.arrayBuffer());n.cork(),n.write(`${i}content-length: ${s}\r
|
|
27
|
-
\r
|
|
28
|
-
`,"latin1"),n.write(a),n.uncork(),r.onBodySent(a),r.onRequestSent(),!o&&r.reset!==!1&&(n[Ve]=!0),t[vA]()}catch(a){e(a)}}async function cB(e,A,t,r,n,s,i,o){U(s!==0||t[we]===0,"iterator body cannot be pipelined");let a=null;function g(){if(a){let Q=a;a=null,Q()}}let l=()=>new Promise((Q,B)=>{U(a===null),n[xe]?B(n[xe]):a=Q});n.on("close",g).on("drain",g);let c=new Zs({abort:e,socket:n,request:r,contentLength:s,client:t,expectsPayload:o,header:i});try{for await(let Q of A){if(n[xe])throw n[xe];c.write(Q)||await l()}c.end()}catch(Q){c.destroy(Q)}finally{n.off("close",g).off("drain",g)}}var Zs=class{constructor({abort:A,socket:t,request:r,contentLength:n,client:s,expectsPayload:i,header:o}){this.socket=t,this.request=r,this.contentLength=n,this.client=s,this.bytesWritten=0,this.expectsPayload=i,this.header=o,this.abort=A,t[$A]=!0}write(A){let{socket:t,request:r,contentLength:n,client:s,bytesWritten:i,expectsPayload:o,header:a}=this;if(t[xe])throw t[xe];if(t.destroyed)return!1;let g=Buffer.byteLength(A);if(!g)return!0;if(n!==null&&i+g>n){if(s[Ta])throw new yt;process.emitWarning(new yt)}t.cork(),i===0&&(!o&&r.reset!==!1&&(t[Ve]=!0),n===null?t.write(`${a}transfer-encoding: chunked\r
|
|
29
|
-
`,"latin1"):t.write(`${a}content-length: ${n}\r
|
|
30
|
-
\r
|
|
31
|
-
`,"latin1")),n===null&&t.write(`\r
|
|
32
|
-
${g.toString(16)}\r
|
|
33
|
-
`,"latin1"),this.bytesWritten+=g;let l=t.write(A);return t.uncork(),r.onBodySent(A),l||t[ae].timeout&&t[ae].timeoutType===Er&&t[ae].timeout.refresh&&t[ae].timeout.refresh(),l}end(){let{socket:A,contentLength:t,client:r,bytesWritten:n,expectsPayload:s,header:i,request:o}=this;if(o.onRequestSent(),A[$A]=!1,A[xe])throw A[xe];if(!A.destroyed){if(n===0?s?A.write(`${i}content-length: 0\r
|
|
34
|
-
\r
|
|
35
|
-
`,"latin1"):A.write(`${i}\r
|
|
36
|
-
`,"latin1"):t===null&&A.write(`\r
|
|
37
|
-
0\r
|
|
38
|
-
\r
|
|
39
|
-
`,"latin1"),t!==null&&n!==t){if(r[Ta])throw new yt;process.emitWarning(new yt)}A[ae].timeout&&A[ae].timeoutType===Er&&A[ae].timeout.refresh&&A[ae].timeout.refresh(),r[vA]()}}destroy(A){let{socket:t,client:r,abort:n}=this;t[$A]=!1,A&&(U(r[we]<=1,"pipeline should only contain this request"),n(A))}};uB.exports=Z0});var mB=p((Kx,pB)=>{"use strict";var nA=y("node:assert"),{pipeline:AD}=y("node:stream"),W=v(),{RequestContentLengthMismatchError:Ha,RequestAbortedError:hB,SocketError:dn,InformationalError:Va}=Z(),{kUrl:_s,kReset:Xs,kClient:Br,kRunning:js,kPending:tD,kQueue:et,kPendingIdx:va,kRunningIdx:gA,kError:QA,kSocket:Fe,kStrictContentLength:rD,kOnError:qa,kMaxConcurrentStreams:yB,kHTTP2Session:lA,kResume:At,kSize:nD,kHTTPContext:sD}=Qe(),qA=Symbol("open streams"),CB,fB=!1,Ks;try{Ks=y("node:http2")}catch{Ks={constants:{}}}var{constants:{HTTP2_HEADER_AUTHORITY:iD,HTTP2_HEADER_METHOD:oD,HTTP2_HEADER_PATH:aD,HTTP2_HEADER_SCHEME:cD,HTTP2_HEADER_CONTENT_LENGTH:gD,HTTP2_HEADER_EXPECT:lD,HTTP2_HEADER_STATUS:QD}}=Ks;function ED(e){let A=[];for(let[t,r]of Object.entries(e))if(Array.isArray(r))for(let n of r)A.push(Buffer.from(t),Buffer.from(n));else A.push(Buffer.from(t),Buffer.from(r));return A}async function BD(e,A){e[Fe]=A,fB||(fB=!0,process.emitWarning("H2 support is experimental, expect them to change at any time.",{code:"UNDICI-H2"}));let t=Ks.connect(e[_s],{createConnection:()=>A,peerMaxConcurrentStreams:e[yB]});t[qA]=0,t[Br]=e,t[Fe]=A,W.addListener(t,"error",ID),W.addListener(t,"frameError",hD),W.addListener(t,"end",CD),W.addListener(t,"goaway",fD),W.addListener(t,"close",function(){let{[Br]:n}=this,{[Fe]:s}=n,i=this[Fe][QA]||this[QA]||new dn("closed",W.getSocketInfo(s));if(n[lA]=null,n.destroyed){nA(n[tD]===0);let o=n[et].splice(n[gA]);for(let a=0;a<o.length;a++){let g=o[a];W.errorRequest(n,g,i)}}}),t.unref(),e[lA]=t,A[lA]=t,W.addListener(A,"error",function(n){nA(n.code!=="ERR_TLS_CERT_ALTNAME_INVALID"),this[QA]=n,this[Br][qa](n)}),W.addListener(A,"end",function(){W.destroy(this,new dn("other side closed",W.getSocketInfo(this)))}),W.addListener(A,"close",function(){let n=this[QA]||new dn("closed",W.getSocketInfo(this));e[Fe]=null,this[lA]!=null&&this[lA].destroy(n),e[va]=e[gA],nA(e[js]===0),e.emit("disconnect",e[_s],[e],n),e[At]()});let r=!1;return A.on("close",()=>{r=!0}),{version:"h2",defaultPipelining:1/0,write(...n){return wD(e,...n)},resume(){uD(e)},destroy(n,s){r?queueMicrotask(s):A.destroy(n).on("close",s)},get destroyed(){return A.destroyed},busy(){return!1}}}function uD(e){let A=e[Fe];A?.destroyed===!1&&(e[nD]===0&&e[yB]===0?(A.unref(),e[lA].unref()):(A.ref(),e[lA].ref()))}function ID(e){nA(e.code!=="ERR_TLS_CERT_ALTNAME_INVALID"),this[Fe][QA]=e,this[Br][qa](e)}function hD(e,A,t){if(t===0){let r=new Va(`HTTP/2: "frameError" received - type ${e}, code ${A}`);this[Fe][QA]=r,this[Br][qa](r)}}function CD(){let e=new dn("other side closed",W.getSocketInfo(this[Fe]));this.destroy(e),W.destroy(this[Fe],e)}function fD(e){let A=this[QA]||new dn(`HTTP/2: "GOAWAY" frame received with code ${e}`,W.getSocketInfo(this)),t=this[Br];if(t[Fe]=null,t[sD]=null,this[lA]!=null&&(this[lA].destroy(A),this[lA]=null),W.destroy(this[Fe],A),t[gA]<t[et].length){let r=t[et][t[gA]];t[et][t[gA]++]=null,W.errorRequest(t,r,A),t[va]=t[gA]}nA(t[js]===0),t.emit("disconnect",t[_s],[t],A),t[At]()}function dD(e){return e!=="GET"&&e!=="HEAD"&&e!=="OPTIONS"&&e!=="TRACE"&&e!=="CONNECT"}function wD(e,A){let t=e[lA],{method:r,path:n,host:s,upgrade:i,expectContinue:o,signal:a,headers:g}=A,{body:l}=A;if(i)return W.errorRequest(e,A,new Error("Upgrade not supported for H2")),!1;let c={};for(let f=0;f<g.length;f+=2){let R=g[f+0],S=g[f+1];if(Array.isArray(S))for(let d=0;d<S.length;d++)c[R]?c[R]+=`,${S[d]}`:c[R]=S[d];else c[R]=S}let Q,{hostname:B,port:E}=e[_s];c[iD]=s||`${B}${E?`:${E}`:""}`,c[oD]=r;let u=f=>{A.aborted||A.completed||(f=f||new hB,W.errorRequest(e,A,f),Q!=null&&W.destroy(Q,f),W.destroy(l,f),e[et][e[gA]++]=null,e[At]())};try{A.onConnect(u)}catch(f){W.errorRequest(e,A,f)}if(A.aborted)return!1;if(r==="CONNECT")return t.ref(),Q=t.request(c,{endStream:!1,signal:a}),Q.id&&!Q.pending?(A.onUpgrade(null,null,Q),++t[qA],e[et][e[gA]++]=null):Q.once("ready",()=>{A.onUpgrade(null,null,Q),++t[qA],e[et][e[gA]++]=null}),Q.once("close",()=>{t[qA]-=1,t[qA]===0&&t.unref()}),!0;c[aD]=n,c[cD]="https";let h=r==="PUT"||r==="POST"||r==="PATCH";l&&typeof l.read=="function"&&l.read(0);let I=W.bodyLength(l);if(W.isFormDataLike(l)){CB??=gr().extractBody;let[f,R]=CB(l);c["content-type"]=R,l=f.stream,I=f.length}if(I==null&&(I=A.contentLength),(I===0||!h)&&(I=null),dD(r)&&I>0&&A.contentLength!=null&&A.contentLength!==I){if(e[rD])return W.errorRequest(e,A,new Ha),!1;process.emitWarning(new Ha)}I!=null&&(nA(l,"no body must not have content length"),c[gD]=`${I}`),t.ref();let C=r==="GET"||r==="HEAD"||l===null;return o?(c[lD]="100-continue",Q=t.request(c,{endStream:C,signal:a}),Q.once("continue",D)):(Q=t.request(c,{endStream:C,signal:a}),D()),++t[qA],Q.once("response",f=>{let{[QD]:R,...S}=f;if(A.onResponseStarted(),A.aborted){let d=new hB;W.errorRequest(e,A,d),W.destroy(Q,d);return}A.onHeaders(Number(R),ED(S),Q.resume.bind(Q),"")===!1&&Q.pause(),Q.on("data",d=>{A.onData(d)===!1&&Q.pause()})}),Q.once("end",()=>{(Q.state?.state==null||Q.state.state<6)&&A.onComplete([]),t[qA]===0&&t.unref(),u(new Va("HTTP/2: stream half-closed (remote)")),e[et][e[gA]++]=null,e[va]=e[gA],e[At]()}),Q.once("close",()=>{t[qA]-=1,t[qA]===0&&t.unref()}),Q.once("error",function(f){u(f)}),Q.once("frameError",(f,R)=>{u(new Va(`HTTP/2: "frameError" received - type ${f}, code ${R}`))}),!0;function D(){!l||I===0?dB(u,Q,null,e,A,e[Fe],I,h):W.isBuffer(l)?dB(u,Q,l,e,A,e[Fe],I,h):W.isBlobLike(l)?typeof l.stream=="function"?wB(u,Q,l.stream(),e,A,e[Fe],I,h):pD(u,Q,l,e,A,e[Fe],I,h):W.isStream(l)?yD(u,e[Fe],h,Q,l,e,A,I):W.isIterable(l)?wB(u,Q,l,e,A,e[Fe],I,h):nA(!1)}}function dB(e,A,t,r,n,s,i,o){try{t!=null&&W.isBuffer(t)&&(nA(i===t.byteLength,"buffer body must have content length"),A.cork(),A.write(t),A.uncork(),A.end(),n.onBodySent(t)),o||(s[Xs]=!0),n.onRequestSent(),r[At]()}catch(a){e(a)}}function yD(e,A,t,r,n,s,i,o){nA(o!==0||s[js]===0,"stream body cannot be pipelined");let a=AD(n,r,l=>{l?(W.destroy(a,l),e(l)):(W.removeAllListeners(a),i.onRequestSent(),t||(A[Xs]=!0),s[At]())});W.addListener(a,"data",g);function g(l){i.onBodySent(l)}}async function pD(e,A,t,r,n,s,i,o){nA(i===t.size,"blob body must have content length");try{if(i!=null&&i!==t.size)throw new Ha;let a=Buffer.from(await t.arrayBuffer());A.cork(),A.write(a),A.uncork(),A.end(),n.onBodySent(a),n.onRequestSent(),o||(s[Xs]=!0),r[At]()}catch(a){e(a)}}async function wB(e,A,t,r,n,s,i,o){nA(i!==0||r[js]===0,"iterator body cannot be pipelined");let a=null;function g(){if(a){let c=a;a=null,c()}}let l=()=>new Promise((c,Q)=>{nA(a===null),s[QA]?Q(s[QA]):a=c});A.on("close",g).on("drain",g);try{for await(let c of t){if(s[QA])throw s[QA];let Q=A.write(c);n.onBodySent(c),Q||await l()}A.end(),n.onRequestSent(),o||(s[Xs]=!0),r[At]()}catch(c){e(c)}finally{A.off("close",g).off("drain",g)}}pB.exports=BD});var ei=p((Xx,bB)=>{"use strict";var FA=v(),{kBodyUsed:wn}=Qe(),Pa=y("node:assert"),{InvalidArgumentError:mD}=Z(),DD=y("node:events"),kD=[300,301,302,303,307,308],DB=Symbol("body"),$s=class{constructor(A){this[DB]=A,this[wn]=!1}async*[Symbol.asyncIterator](){Pa(!this[wn],"disturbed"),this[wn]=!0,yield*this[DB]}},Wa=class{constructor(A,t,r,n){if(t!=null&&(!Number.isInteger(t)||t<0))throw new mD("maxRedirections must be a positive number");FA.validateHandler(n,r.method,r.upgrade),this.dispatch=A,this.location=null,this.abort=null,this.opts={...r,maxRedirections:0},this.maxRedirections=t,this.handler=n,this.history=[],this.redirectionLimitReached=!1,FA.isStream(this.opts.body)?(FA.bodyLength(this.opts.body)===0&&this.opts.body.on("data",function(){Pa(!1)}),typeof this.opts.body.readableDidRead!="boolean"&&(this.opts.body[wn]=!1,DD.prototype.on.call(this.opts.body,"data",function(){this[wn]=!0}))):this.opts.body&&typeof this.opts.body.pipeTo=="function"?this.opts.body=new $s(this.opts.body):this.opts.body&&typeof this.opts.body!="string"&&!ArrayBuffer.isView(this.opts.body)&&FA.isIterable(this.opts.body)&&(this.opts.body=new $s(this.opts.body))}onConnect(A){this.abort=A,this.handler.onConnect(A,{history:this.history})}onUpgrade(A,t,r){this.handler.onUpgrade(A,t,r)}onError(A){this.handler.onError(A)}onHeaders(A,t,r,n){if(this.location=this.history.length>=this.maxRedirections||FA.isDisturbed(this.opts.body)?null:bD(A,t),this.opts.throwOnMaxRedirect&&this.history.length>=this.maxRedirections){this.request&&this.request.abort(new Error("max redirects")),this.redirectionLimitReached=!0,this.abort(new Error("max redirects"));return}if(this.opts.origin&&this.history.push(new URL(this.opts.path,this.opts.origin)),!this.location)return this.handler.onHeaders(A,t,r,n);let{origin:s,pathname:i,search:o}=FA.parseURL(new URL(this.location,this.opts.origin&&new URL(this.opts.path,this.opts.origin))),a=o?`${i}${o}`:i;this.opts.headers=FD(this.opts.headers,A===303,this.opts.origin!==s),this.opts.path=a,this.opts.origin=s,this.opts.maxRedirections=0,this.opts.query=null,A===303&&this.opts.method!=="HEAD"&&(this.opts.method="GET",this.opts.body=null)}onData(A){if(!this.location)return this.handler.onData(A)}onComplete(A){this.location?(this.location=null,this.abort=null,this.dispatch(this.opts,this)):this.handler.onComplete(A)}onBodySent(A){this.handler.onBodySent&&this.handler.onBodySent(A)}};function bD(e,A){if(kD.indexOf(e)===-1)return null;for(let t=0;t<A.length;t+=2)if(A[t].length===8&&FA.headerNameToString(A[t])==="location")return A[t+1]}function kB(e,A,t){if(e.length===4)return FA.headerNameToString(e)==="host";if(A&&FA.headerNameToString(e).startsWith("content-"))return!0;if(t&&(e.length===13||e.length===6||e.length===19)){let r=FA.headerNameToString(e);return r==="authorization"||r==="cookie"||r==="proxy-authorization"}return!1}function FD(e,A,t){let r=[];if(Array.isArray(e))for(let n=0;n<e.length;n+=2)kB(e[n],A,t)||r.push(e[n],e[n+1]);else if(e&&typeof e=="object")for(let n of Object.keys(e))kB(n,A,t)||r.push(n,e[n]);else Pa(e==null,"headers must be an object or an array");return r}bB.exports=Wa});var Ai=p((jx,FB)=>{"use strict";var RD=ei();function SD({maxRedirections:e}){return A=>function(r,n){let{maxRedirections:s=e}=r;if(!s)return A(r,n);let i=new RD(A,s,r,n);return r={...r,maxRedirections:0},A(r,i)}}FB.exports=SD});var hr=p(($x,GB)=>{"use strict";var WA=y("node:assert"),LB=y("node:net"),ND=y("node:http"),kt=v(),{channels:ur}=Xt(),MD=GQ(),UD=Ar(),{InvalidArgumentError:he,InformationalError:LD,ClientDestroyedError:TD}=Z(),xD=an(),{kUrl:RA,kServerName:tt,kClient:YD,kBusy:Oa,kConnect:GD,kResuming:bt,kRunning:kn,kPending:bn,kSize:Dn,kQueue:EA,kConnected:JD,kConnecting:Ir,kNeedDrain:nt,kKeepAliveDefaultTimeout:RB,kHostHeader:HD,kPendingIdx:BA,kRunningIdx:PA,kError:VD,kPipelining:ti,kKeepAliveTimeoutValue:vD,kMaxHeadersSize:qD,kKeepAliveMaxTimeout:WD,kKeepAliveTimeoutThreshold:PD,kHeadersTimeout:OD,kBodyTimeout:zD,kStrictContentLength:ZD,kConnector:yn,kMaxRedirections:_D,kMaxRequests:za,kCounter:KD,kClose:XD,kDestroy:jD,kDispatch:$D,kInterceptors:SB,kLocalAddress:pn,kMaxResponseSize:ek,kOnError:Ak,kHTTPContext:Ce,kMaxConcurrentStreams:tk,kResume:mn}=Qe(),rk=IB(),nk=mB(),NB=!1,rt=Symbol("kClosedResolve"),MB=()=>{};function TB(e){return e[ti]??e[Ce]?.defaultPipelining??1}var Za=class extends UD{constructor(A,{interceptors:t,maxHeaderSize:r,headersTimeout:n,socketTimeout:s,requestTimeout:i,connectTimeout:o,bodyTimeout:a,idleTimeout:g,keepAlive:l,keepAliveTimeout:c,maxKeepAliveTimeout:Q,keepAliveMaxTimeout:B,keepAliveTimeoutThreshold:E,socketPath:u,pipelining:h,tls:I,strictContentLength:C,maxCachedSessions:D,maxRedirections:f,connect:R,maxRequestsPerClient:S,localAddress:d,maxResponseSize:se,autoSelectFamily:ke,autoSelectFamilyAttemptTimeout:Le,maxConcurrentStreams:me,allowH2:w,webSocket:H}={}){if(super({webSocket:H}),l!==void 0)throw new he("unsupported keepAlive, use pipelining=0 instead");if(s!==void 0)throw new he("unsupported socketTimeout, use headersTimeout & bodyTimeout instead");if(i!==void 0)throw new he("unsupported requestTimeout, use headersTimeout & bodyTimeout instead");if(g!==void 0)throw new he("unsupported idleTimeout, use keepAliveTimeout instead");if(Q!==void 0)throw new he("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead");if(r!=null&&!Number.isFinite(r))throw new he("invalid maxHeaderSize");if(u!=null&&typeof u!="string")throw new he("invalid socketPath");if(o!=null&&(!Number.isFinite(o)||o<0))throw new he("invalid connectTimeout");if(c!=null&&(!Number.isFinite(c)||c<=0))throw new he("invalid keepAliveTimeout");if(B!=null&&(!Number.isFinite(B)||B<=0))throw new he("invalid keepAliveMaxTimeout");if(E!=null&&!Number.isFinite(E))throw new he("invalid keepAliveTimeoutThreshold");if(n!=null&&(!Number.isInteger(n)||n<0))throw new he("headersTimeout must be a positive integer or zero");if(a!=null&&(!Number.isInteger(a)||a<0))throw new he("bodyTimeout must be a positive integer or zero");if(R!=null&&typeof R!="function"&&typeof R!="object")throw new he("connect must be a function or an object");if(f!=null&&(!Number.isInteger(f)||f<0))throw new he("maxRedirections must be a positive number");if(S!=null&&(!Number.isInteger(S)||S<0))throw new he("maxRequestsPerClient must be a positive number");if(d!=null&&(typeof d!="string"||LB.isIP(d)===0))throw new he("localAddress must be valid string IP address");if(se!=null&&(!Number.isInteger(se)||se<-1))throw new he("maxResponseSize must be a positive number");if(Le!=null&&(!Number.isInteger(Le)||Le<-1))throw new he("autoSelectFamilyAttemptTimeout must be a positive number");if(w!=null&&typeof w!="boolean")throw new he("allowH2 must be a valid boolean value");if(me!=null&&(typeof me!="number"||me<1))throw new he("maxConcurrentStreams must be a positive integer, greater than 0");typeof R!="function"&&(R=xD({...I,maxCachedSessions:D,allowH2:w,socketPath:u,timeout:o,...ke?{autoSelectFamily:ke,autoSelectFamilyAttemptTimeout:Le}:void 0,...R})),t?.Client&&Array.isArray(t.Client)?(this[SB]=t.Client,NB||(NB=!0,process.emitWarning("Client.Options#interceptor is deprecated. Use Dispatcher#compose instead.",{code:"UNDICI-CLIENT-INTERCEPTOR-DEPRECATED"}))):this[SB]=[sk({maxRedirections:f})],this[RA]=kt.parseOrigin(A),this[yn]=R,this[ti]=h??1,this[qD]=r||ND.maxHeaderSize,this[RB]=c??4e3,this[WD]=B??6e5,this[PD]=E??2e3,this[vD]=this[RB],this[tt]=null,this[pn]=d??null,this[bt]=0,this[nt]=0,this[HD]=`host: ${this[RA].hostname}${this[RA].port?`:${this[RA].port}`:""}\r
|
|
40
|
-
`,this[zD]=a??3e5,this[OD]=n??3e5,this[ZD]=C??!0,this[_D]=f,this[za]=S,this[rt]=null,this[ek]=se>-1?se:-1,this[tk]=me??100,this[Ce]=null,this[EA]=[],this[PA]=0,this[BA]=0,this[mn]=q=>_a(this,q),this[Ak]=q=>xB(this,q)}get pipelining(){return this[ti]}set pipelining(A){this[ti]=A,this[mn](!0)}get[bn](){return this[EA].length-this[BA]}get[kn](){return this[BA]-this[PA]}get[Dn](){return this[EA].length-this[PA]}get[JD](){return!!this[Ce]&&!this[Ir]&&!this[Ce].destroyed}get[Oa](){return!!(this[Ce]?.busy(null)||this[Dn]>=(TB(this)||1)||this[bn]>0)}[GD](A){YB(this),this.once("connect",A)}[$D](A,t){let r=A.origin||this[RA].origin,n=new MD(r,A,t);return this[EA].push(n),this[bt]||(kt.bodyLength(n.body)==null&&kt.isIterable(n.body)?(this[bt]=1,queueMicrotask(()=>_a(this))):this[mn](!0)),this[bt]&&this[nt]!==2&&this[Oa]&&(this[nt]=2),this[nt]<2}async[XD](){return new Promise(A=>{this[Dn]?this[rt]=A:A(null)})}async[jD](A){return new Promise(t=>{let r=this[EA].splice(this[BA]);for(let s=0;s<r.length;s++){let i=r[s];kt.errorRequest(this,i,A)}let n=()=>{this[rt]&&(this[rt](),this[rt]=null),t(null)};this[Ce]?(this[Ce].destroy(A,n),this[Ce]=null):queueMicrotask(n),this[mn]()})}},sk=Ai();function xB(e,A){if(e[kn]===0&&A.code!=="UND_ERR_INFO"&&A.code!=="UND_ERR_SOCKET"){WA(e[BA]===e[PA]);let t=e[EA].splice(e[PA]);for(let r=0;r<t.length;r++){let n=t[r];kt.errorRequest(e,n,A)}WA(e[Dn]===0)}}async function YB(e){WA(!e[Ir]),WA(!e[Ce]);let{host:A,hostname:t,protocol:r,port:n}=e[RA];if(t[0]==="["){let s=t.indexOf("]");WA(s!==-1);let i=t.substring(1,s);WA(LB.isIP(i)),t=i}e[Ir]=!0,ur.beforeConnect.hasSubscribers&&ur.beforeConnect.publish({connectParams:{host:A,hostname:t,protocol:r,port:n,version:e[Ce]?.version,servername:e[tt],localAddress:e[pn]},connector:e[yn]});try{let s=await new Promise((i,o)=>{e[yn]({host:A,hostname:t,protocol:r,port:n,servername:e[tt],localAddress:e[pn]},(a,g)=>{a?o(a):i(g)})});if(e.destroyed){kt.destroy(s.on("error",MB),new TD);return}WA(s);try{e[Ce]=s.alpnProtocol==="h2"?await nk(e,s):await rk(e,s)}catch(i){throw s.destroy().on("error",MB),i}e[Ir]=!1,s[KD]=0,s[za]=e[za],s[YD]=e,s[VD]=null,ur.connected.hasSubscribers&&ur.connected.publish({connectParams:{host:A,hostname:t,protocol:r,port:n,version:e[Ce]?.version,servername:e[tt],localAddress:e[pn]},connector:e[yn],socket:s}),e.emit("connect",e[RA],[e])}catch(s){if(e.destroyed)return;if(e[Ir]=!1,ur.connectError.hasSubscribers&&ur.connectError.publish({connectParams:{host:A,hostname:t,protocol:r,port:n,version:e[Ce]?.version,servername:e[tt],localAddress:e[pn]},connector:e[yn],error:s}),s.code==="ERR_TLS_CERT_ALTNAME_INVALID")for(WA(e[kn]===0);e[bn]>0&&e[EA][e[BA]].servername===e[tt];){let i=e[EA][e[BA]++];kt.errorRequest(e,i,s)}else xB(e,s);e.emit("connectionError",e[RA],[e],s)}e[mn]()}function UB(e){e[nt]=0,e.emit("drain",e[RA],[e])}function _a(e,A){e[bt]!==2&&(e[bt]=2,ik(e,A),e[bt]=0,e[PA]>256&&(e[EA].splice(0,e[PA]),e[BA]-=e[PA],e[PA]=0))}function ik(e,A){for(;;){if(e.destroyed){WA(e[bn]===0);return}if(e[rt]&&!e[Dn]){e[rt](),e[rt]=null;return}if(e[Ce]&&e[Ce].resume(),e[Oa])e[nt]=2;else if(e[nt]===2){A?(e[nt]=1,queueMicrotask(()=>UB(e))):UB(e);continue}if(e[bn]===0||e[kn]>=(TB(e)||1))return;let t=e[EA][e[BA]];if(e[RA].protocol==="https:"&&e[tt]!==t.servername){if(e[kn]>0)return;e[tt]=t.servername,e[Ce]?.destroy(new LD("servername changed"),()=>{e[Ce]=null,_a(e)})}if(e[Ir])return;if(!e[Ce]){YB(e);return}if(e[Ce].destroyed||e[Ce].busy(t))return;!t.aborted&&e[Ce].write(t)?e[BA]++:e[EA].splice(e[BA],1)}}GB.exports=Za});var Ka=p((AY,JB)=>{"use strict";var ri=class{constructor(){this.bottom=0,this.top=0,this.list=new Array(2048),this.next=null}isEmpty(){return this.top===this.bottom}isFull(){return(this.top+1&2047)===this.bottom}push(A){this.list[this.top]=A,this.top=this.top+1&2047}shift(){let A=this.list[this.bottom];return A===void 0?null:(this.list[this.bottom]=void 0,this.bottom=this.bottom+1&2047,A)}};JB.exports=class{constructor(){this.head=this.tail=new ri}isEmpty(){return this.head.isEmpty()}push(A){this.head.isFull()&&(this.head=this.head.next=new ri),this.head.push(A)}shift(){let A=this.tail,t=A.shift();return A.isEmpty()&&A.next!==null&&(this.tail=A.next),t}}});var VB=p((tY,HB)=>{var{kFree:ok,kConnected:ak,kPending:ck,kQueued:gk,kRunning:lk,kSize:Qk}=Qe(),Ft=Symbol("pool"),Xa=class{constructor(A){this[Ft]=A}get connected(){return this[Ft][ak]}get free(){return this[Ft][ok]}get pending(){return this[Ft][ck]}get queued(){return this[Ft][gk]}get running(){return this[Ft][lk]}get size(){return this[Ft][Qk]}};HB.exports=Xa});var rc=p((rY,XB)=>{"use strict";var Ek=Ar(),Bk=Ka(),{kConnected:ja,kSize:vB,kRunning:qB,kPending:WB,kQueued:Fn,kBusy:uk,kFree:Ik,kUrl:hk,kClose:Ck,kDestroy:fk,kDispatch:dk}=Qe(),wk=VB(),ve=Symbol("clients"),Ye=Symbol("needDrain"),Rn=Symbol("queue"),$a=Symbol("closed resolve"),ec=Symbol("onDrain"),PB=Symbol("onConnect"),OB=Symbol("onDisconnect"),zB=Symbol("onConnectionError"),Ac=Symbol("get dispatcher"),_B=Symbol("add client"),KB=Symbol("remove client"),ZB=Symbol("stats"),tc=class extends Ek{constructor(A){super(A),this[Rn]=new Bk,this[ve]=[],this[Fn]=0;let t=this;this[ec]=function(n,s){let i=t[Rn],o=!1;for(;!o;){let a=i.shift();if(!a)break;t[Fn]--,o=!this.dispatch(a.opts,a.handler)}this[Ye]=o,!this[Ye]&&t[Ye]&&(t[Ye]=!1,t.emit("drain",n,[t,...s])),t[$a]&&i.isEmpty()&&Promise.all(t[ve].map(a=>a.close())).then(t[$a])},this[PB]=(r,n)=>{t.emit("connect",r,[t,...n])},this[OB]=(r,n,s)=>{t.emit("disconnect",r,[t,...n],s)},this[zB]=(r,n,s)=>{t.emit("connectionError",r,[t,...n],s)},this[ZB]=new wk(this)}get[uk](){return this[Ye]}get[ja](){return this[ve].filter(A=>A[ja]).length}get[Ik](){return this[ve].filter(A=>A[ja]&&!A[Ye]).length}get[WB](){let A=this[Fn];for(let{[WB]:t}of this[ve])A+=t;return A}get[qB](){let A=0;for(let{[qB]:t}of this[ve])A+=t;return A}get[vB](){let A=this[Fn];for(let{[vB]:t}of this[ve])A+=t;return A}get stats(){return this[ZB]}async[Ck](){this[Rn].isEmpty()?await Promise.all(this[ve].map(A=>A.close())):await new Promise(A=>{this[$a]=A})}async[fk](A){for(;;){let t=this[Rn].shift();if(!t)break;t.handler.onError(A)}await Promise.all(this[ve].map(t=>t.destroy(A)))}[dk](A,t){let r=this[Ac]();return r?r.dispatch(A,t)||(r[Ye]=!0,this[Ye]=!this[Ac]()):(this[Ye]=!0,this[Rn].push({opts:A,handler:t}),this[Fn]++),!this[Ye]}[_B](A){return A.on("drain",this[ec]).on("connect",this[PB]).on("disconnect",this[OB]).on("connectionError",this[zB]),this[ve].push(A),this[Ye]&&queueMicrotask(()=>{this[Ye]&&this[ec](A[hk],[this,A])}),this}[KB](A){A.close(()=>{let t=this[ve].indexOf(A);t!==-1&&this[ve].splice(t,1)}),this[Ye]=this[ve].some(t=>!t[Ye]&&t.closed!==!0&&t.destroyed!==!0)}};XB.exports={PoolBase:tc,kClients:ve,kNeedDrain:Ye,kAddClient:_B,kRemoveClient:KB,kGetDispatcher:Ac}});var Cr=p((nY,Au)=>{"use strict";var{PoolBase:yk,kClients:ni,kNeedDrain:pk,kAddClient:mk,kGetDispatcher:Dk}=rc(),kk=hr(),{InvalidArgumentError:nc}=Z(),jB=v(),{kUrl:$B,kInterceptors:bk}=Qe(),Fk=an(),sc=Symbol("options"),ic=Symbol("connections"),eu=Symbol("factory");function Rk(e,A){return new kk(e,A)}var oc=class extends yk{constructor(A,{connections:t,factory:r=Rk,connect:n,connectTimeout:s,tls:i,maxCachedSessions:o,socketPath:a,autoSelectFamily:g,autoSelectFamilyAttemptTimeout:l,allowH2:c,...Q}={}){if(t!=null&&(!Number.isFinite(t)||t<0))throw new nc("invalid connections");if(typeof r!="function")throw new nc("factory must be a function.");if(n!=null&&typeof n!="function"&&typeof n!="object")throw new nc("connect must be a function or an object");typeof n!="function"&&(n=Fk({...i,maxCachedSessions:o,allowH2:c,socketPath:a,timeout:s,...g?{autoSelectFamily:g,autoSelectFamilyAttemptTimeout:l}:void 0,...n})),super(Q),this[bk]=Q.interceptors?.Pool&&Array.isArray(Q.interceptors.Pool)?Q.interceptors.Pool:[],this[ic]=t||null,this[$B]=jB.parseOrigin(A),this[sc]={...jB.deepClone(Q),connect:n,allowH2:c},this[sc].interceptors=Q.interceptors?{...Q.interceptors}:void 0,this[eu]=r,this.on("connectionError",(B,E,u)=>{for(let h of E){let I=this[ni].indexOf(h);I!==-1&&this[ni].splice(I,1)}})}[Dk](){for(let A of this[ni])if(!A[pk])return A;if(!this[ic]||this[ni].length<this[ic]){let A=this[eu](this[$B],this[sc]);return this[mk](A),A}}};Au.exports=oc});var iu=p((sY,su)=>{"use strict";var{BalancedPoolMissingUpstreamError:Sk,InvalidArgumentError:Nk}=Z(),{PoolBase:Mk,kClients:Me,kNeedDrain:Sn,kAddClient:Uk,kRemoveClient:Lk,kGetDispatcher:Tk}=rc(),xk=Cr(),{kUrl:ac,kInterceptors:Yk}=Qe(),{parseOrigin:tu}=v(),ru=Symbol("factory"),si=Symbol("options"),nu=Symbol("kGreatestCommonDivisor"),Rt=Symbol("kCurrentWeight"),St=Symbol("kIndex"),sA=Symbol("kWeight"),ii=Symbol("kMaxWeightPerServer"),oi=Symbol("kErrorPenalty");function Gk(e,A){if(e===0)return A;for(;A!==0;){let t=A;A=e%A,e=t}return e}function Jk(e,A){return new xk(e,A)}var cc=class extends Mk{constructor(A=[],{factory:t=Jk,...r}={}){if(super(),this[si]=r,this[St]=-1,this[Rt]=0,this[ii]=this[si].maxWeightPerServer||100,this[oi]=this[si].errorPenalty||15,Array.isArray(A)||(A=[A]),typeof t!="function")throw new Nk("factory must be a function.");this[Yk]=r.interceptors?.BalancedPool&&Array.isArray(r.interceptors.BalancedPool)?r.interceptors.BalancedPool:[],this[ru]=t;for(let n of A)this.addUpstream(n);this._updateBalancedPoolStats()}addUpstream(A){let t=tu(A).origin;if(this[Me].find(n=>n[ac].origin===t&&n.closed!==!0&&n.destroyed!==!0))return this;let r=this[ru](t,Object.assign({},this[si]));this[Uk](r),r.on("connect",()=>{r[sA]=Math.min(this[ii],r[sA]+this[oi])}),r.on("connectionError",()=>{r[sA]=Math.max(1,r[sA]-this[oi]),this._updateBalancedPoolStats()}),r.on("disconnect",(...n)=>{let s=n[2];s&&s.code==="UND_ERR_SOCKET"&&(r[sA]=Math.max(1,r[sA]-this[oi]),this._updateBalancedPoolStats())});for(let n of this[Me])n[sA]=this[ii];return this._updateBalancedPoolStats(),this}_updateBalancedPoolStats(){let A=0;for(let t=0;t<this[Me].length;t++)A=Gk(this[Me][t][sA],A);this[nu]=A}removeUpstream(A){let t=tu(A).origin,r=this[Me].find(n=>n[ac].origin===t&&n.closed!==!0&&n.destroyed!==!0);return r&&this[Lk](r),this}get upstreams(){return this[Me].filter(A=>A.closed!==!0&&A.destroyed!==!0).map(A=>A[ac].origin)}[Tk](){if(this[Me].length===0)throw new Sk;if(!this[Me].find(s=>!s[Sn]&&s.closed!==!0&&s.destroyed!==!0)||this[Me].map(s=>s[Sn]).reduce((s,i)=>s&&i,!0))return;let r=0,n=this[Me].findIndex(s=>!s[Sn]);for(;r++<this[Me].length;){this[St]=(this[St]+1)%this[Me].length;let s=this[Me][this[St]];if(s[sA]>this[Me][n][sA]&&!s[Sn]&&(n=this[St]),this[St]===0&&(this[Rt]=this[Rt]-this[nu],this[Rt]<=0&&(this[Rt]=this[ii])),s[sA]>=this[Rt]&&!s[Sn])return s}return this[Rt]=this[Me][n][sA],this[St]=n,this[Me][n]}};su.exports=cc});var fr=p((iY,Eu)=>{"use strict";var{InvalidArgumentError:ai}=Z(),{kClients:st,kRunning:ou,kClose:Hk,kDestroy:Vk,kDispatch:vk,kInterceptors:qk}=Qe(),Wk=Ar(),Pk=Cr(),Ok=hr(),zk=v(),Zk=Ai(),au=Symbol("onConnect"),cu=Symbol("onDisconnect"),gu=Symbol("onConnectionError"),_k=Symbol("maxRedirections"),lu=Symbol("onDrain"),Qu=Symbol("factory"),gc=Symbol("options");function Kk(e,A){return A&&A.connections===1?new Ok(e,A):new Pk(e,A)}var lc=class extends Wk{constructor({factory:A=Kk,maxRedirections:t=0,connect:r,...n}={}){if(typeof A!="function")throw new ai("factory must be a function.");if(r!=null&&typeof r!="function"&&typeof r!="object")throw new ai("connect must be a function or an object");if(!Number.isInteger(t)||t<0)throw new ai("maxRedirections must be a positive number");super(n),r&&typeof r!="function"&&(r={...r}),this[qk]=n.interceptors?.Agent&&Array.isArray(n.interceptors.Agent)?n.interceptors.Agent:[Zk({maxRedirections:t})],this[gc]={...zk.deepClone(n),connect:r},this[gc].interceptors=n.interceptors?{...n.interceptors}:void 0,this[_k]=t,this[Qu]=A,this[st]=new Map,this[lu]=(s,i)=>{this.emit("drain",s,[this,...i])},this[au]=(s,i)=>{this.emit("connect",s,[this,...i])},this[cu]=(s,i,o)=>{this.emit("disconnect",s,[this,...i],o)},this[gu]=(s,i,o)=>{this.emit("connectionError",s,[this,...i],o)}}get[ou](){let A=0;for(let t of this[st].values())A+=t[ou];return A}[vk](A,t){let r;if(A.origin&&(typeof A.origin=="string"||A.origin instanceof URL))r=String(A.origin);else throw new ai("opts.origin must be a non-empty string or URL.");let n=this[st].get(r);return n||(n=this[Qu](A.origin,this[gc]).on("drain",this[lu]).on("connect",this[au]).on("disconnect",this[cu]).on("connectionError",this[gu]),this[st].set(r,n)),n.dispatch(A,t)}async[Hk](){let A=[];for(let t of this[st].values())A.push(t.close());this[st].clear(),await Promise.all(A)}async[Vk](A){let t=[];for(let r of this[st].values())t.push(r.destroy(A));this[st].clear(),await Promise.all(t)}};Eu.exports=lc});var Ic=p((oY,mu)=>{"use strict";var{kProxy:Qc,kClose:fu,kDestroy:du,kDispatch:Bu,kInterceptors:Xk}=Qe(),{URL:Nt}=y("node:url"),jk=fr(),wu=Cr(),yu=Ar(),{InvalidArgumentError:dr,RequestAbortedError:$k,SecureProxyConnectionError:eb}=Z(),uu=an(),pu=hr(),ci=Symbol("proxy agent"),gi=Symbol("proxy client"),it=Symbol("proxy headers"),Ec=Symbol("request tls settings"),Iu=Symbol("proxy tls settings"),hu=Symbol("connect endpoint function"),Cu=Symbol("tunnel proxy");function Ab(e){return e==="https:"?443:80}function tb(e,A){return new wu(e,A)}var rb=()=>{};function nb(e,A){return A.connections===1?new pu(e,A):new wu(e,A)}var Bc=class extends yu{#e;constructor(A,{headers:t={},connect:r,factory:n}){if(super(),!A)throw new dr("Proxy URL is mandatory");this[it]=t,n?this.#e=n(A,{connect:r}):this.#e=new pu(A,{connect:r})}[Bu](A,t){let r=t.onHeaders;t.onHeaders=function(o,a,g){if(o===407){typeof t.onError=="function"&&t.onError(new dr("Proxy Authentication Required (407)"));return}r&&r.call(this,o,a,g)};let{origin:n,path:s="/",headers:i={}}=A;if(A.path=n+s,!("host"in i)&&!("Host"in i)){let{host:o}=new Nt(n);i.host=o}return A.headers={...this[it],...i},this.#e[Bu](A,t)}async[fu](){return this.#e.close()}async[du](A){return this.#e.destroy(A)}},uc=class extends yu{constructor(A){if(super(),!A||typeof A=="object"&&!(A instanceof Nt)&&!A.uri)throw new dr("Proxy uri is mandatory");let{clientFactory:t=tb}=A;if(typeof t!="function")throw new dr("Proxy opts.clientFactory must be a function.");let{proxyTunnel:r=!0}=A,n=this.#e(A),{href:s,origin:i,port:o,protocol:a,username:g,password:l,hostname:c}=n;if(this[Qc]={uri:s,protocol:a},this[Xk]=A.interceptors?.ProxyAgent&&Array.isArray(A.interceptors.ProxyAgent)?A.interceptors.ProxyAgent:[],this[Ec]=A.requestTls,this[Iu]=A.proxyTls,this[it]=A.headers||{},this[Cu]=r,A.auth&&A.token)throw new dr("opts.auth cannot be used in combination with opts.token");A.auth?this[it]["proxy-authorization"]=`Basic ${A.auth}`:A.token?this[it]["proxy-authorization"]=A.token:g&&l&&(this[it]["proxy-authorization"]=`Basic ${Buffer.from(`${decodeURIComponent(g)}:${decodeURIComponent(l)}`).toString("base64")}`);let Q=uu({...A.proxyTls});this[hu]=uu({...A.requestTls});let B=A.factory||nb,E=(u,h)=>{let{protocol:I}=new Nt(u);return!this[Cu]&&I==="http:"&&this[Qc].protocol==="http:"?new Bc(this[Qc].uri,{headers:this[it],connect:Q,factory:B}):B(u,h)};this[gi]=t(n,{connect:Q}),this[ci]=new jk({...A,factory:E,connect:async(u,h)=>{let I=u.host;u.port||(I+=`:${Ab(u.protocol)}`);try{let{socket:C,statusCode:D}=await this[gi].connect({origin:i,port:o,path:I,signal:u.signal,headers:{...this[it],host:u.host},servername:this[Iu]?.servername||c});if(D!==200&&(C.on("error",rb).destroy(),h(new $k(`Proxy response (${D}) !== 200 when HTTP Tunneling`))),u.protocol!=="https:"){h(null,C);return}let f;this[Ec]?f=this[Ec].servername:f=u.servername,this[hu]({...u,servername:f,httpSocket:C},h)}catch(C){C.code==="ERR_TLS_CERT_ALTNAME_INVALID"?h(new eb(C)):h(C)}}})}dispatch(A,t){let r=sb(A.headers);if(ib(r),r&&!("host"in r)&&!("Host"in r)){let{host:n}=new Nt(A.origin);r.host=n}return this[ci].dispatch({...A,headers:r},t)}#e(A){return typeof A=="string"?new Nt(A):A instanceof Nt?A:new Nt(A.uri)}async[fu](){await this[ci].close(),await this[gi].close()}async[du](){await this[ci].destroy(),await this[gi].destroy()}};function sb(e){if(Array.isArray(e)){let A={};for(let t=0;t<e.length;t+=2)A[e[t]]=e[t+1];return A}return e}function ib(e){if(e&&Object.keys(e).find(t=>t.toLowerCase()==="proxy-authorization"))throw new dr("Proxy-Authorization should be sent in ProxyAgent constructor")}mu.exports=uc});var Su=p((aY,Ru)=>{"use strict";var ob=Ar(),{kClose:ab,kDestroy:cb,kClosed:Du,kDestroyed:ku,kDispatch:gb,kNoProxyAgent:Nn,kHttpProxyAgent:ot,kHttpsProxyAgent:Mt}=Qe(),bu=Ic(),lb=fr(),Qb={"http:":80,"https:":443},Fu=!1,hc=class extends ob{#e=null;#A=null;#t=null;constructor(A={}){super(),this.#t=A,Fu||(Fu=!0,process.emitWarning("EnvHttpProxyAgent is experimental, expect them to change at any time.",{code:"UNDICI-EHPA"}));let{httpProxy:t,httpsProxy:r,noProxy:n,...s}=A;this[Nn]=new lb(s);let i=t??process.env.http_proxy??process.env.HTTP_PROXY;i?this[ot]=new bu({...s,uri:i}):this[ot]=this[Nn];let o=r??process.env.https_proxy??process.env.HTTPS_PROXY;o?this[Mt]=new bu({...s,uri:o}):this[Mt]=this[ot],this.#r()}[gb](A,t){let r=new URL(A.origin);return this.#s(r).dispatch(A,t)}async[ab](){await this[Nn].close(),this[ot][Du]||await this[ot].close(),this[Mt][Du]||await this[Mt].close()}async[cb](A){await this[Nn].destroy(A),this[ot][ku]||await this[ot].destroy(A),this[Mt][ku]||await this[Mt].destroy(A)}#s(A){let{protocol:t,host:r,port:n}=A;return r=r.replace(/:\d*$/,"").toLowerCase(),n=Number.parseInt(n,10)||Qb[t]||0,this.#n(r,n)?t==="https:"?this[Mt]:this[ot]:this[Nn]}#n(A,t){if(this.#i&&this.#r(),this.#A.length===0)return!0;if(this.#e==="*")return!1;for(let r=0;r<this.#A.length;r++){let n=this.#A[r];if(!(n.port&&n.port!==t)){if(/^[.*]/.test(n.hostname)){if(A.endsWith(n.hostname.replace(/^\*/,"")))return!1}else if(A===n.hostname)return!1}}return!0}#r(){let A=this.#t.noProxy??this.#o,t=A.split(/[,\s]/),r=[];for(let n=0;n<t.length;n++){let s=t[n];if(!s)continue;let i=s.match(/^(.+):(\d+)$/);r.push({hostname:(i?i[1]:s).toLowerCase(),port:i?Number.parseInt(i[2],10):0})}this.#e=A,this.#A=r}get#i(){return this.#t.noProxy!==void 0?!1:this.#e!==this.#o}get#o(){return process.env.no_proxy??process.env.NO_PROXY??""}};Ru.exports=hc});var li=p((cY,Tu)=>{"use strict";var wr=y("node:assert"),{kRetryHandlerDefaultRetry:Nu}=Qe(),{RequestRetryError:yr}=Z(),{isDisturbed:Mu,parseHeaders:Eb,parseRangeHeader:Uu,wrapRequestBody:Bb}=v();function ub(e){let A=Date.now();return new Date(e).getTime()-A}function Lu(e,A,t,r){let n=e["content-length"];if(n==null||!Number.isFinite(A.start)||!Number.isFinite(A.end))return null;let s=Number(n),i=A.end-A.start+1;return!Number.isFinite(s)||s!==i?new yr("Content-Length mismatch",t,{headers:e,data:{count:r}}):null}var Cc=class e{constructor(A,t){let{retryOptions:r,...n}=A,{retry:s,maxRetries:i,maxTimeout:o,minTimeout:a,timeoutFactor:g,methods:l,errorCodes:c,retryAfter:Q,statusCodes:B}=r??{};this.dispatch=t.dispatch,this.handler=t.handler,this.opts={...n,body:Bb(A.body)},this.abort=null,this.aborted=!1,this.retryOpts={retry:s??e[Nu],retryAfter:Q??!0,maxTimeout:o??30*1e3,minTimeout:a??500,timeoutFactor:g??2,maxRetries:i??5,methods:l??["GET","HEAD","OPTIONS","PUT","DELETE","TRACE"],statusCodes:B??[500,502,503,504,429],errorCodes:c??["ECONNRESET","ECONNREFUSED","ENOTFOUND","ENETDOWN","ENETUNREACH","EHOSTDOWN","EHOSTUNREACH","EPIPE","UND_ERR_SOCKET"]},this.retryCount=0,this.retryCountCheckpoint=0,this.start=0,this.end=null,this.etag=null,this.resume=null,this.handler.onConnect(E=>{this.aborted=!0,this.abort?this.abort(E):this.reason=E})}onRequestSent(){this.handler.onRequestSent&&this.handler.onRequestSent()}onUpgrade(A,t,r){this.handler.onUpgrade&&this.handler.onUpgrade(A,t,r)}onConnect(A){this.aborted?A(this.reason):this.abort=A}onBodySent(A){if(this.handler.onBodySent)return this.handler.onBodySent(A)}static[Nu](A,{state:t,opts:r},n){let{statusCode:s,code:i,headers:o}=A,{method:a,retryOptions:g}=r,{maxRetries:l,minTimeout:c,maxTimeout:Q,timeoutFactor:B,statusCodes:E,errorCodes:u,methods:h}=g,{counter:I}=t;if(i&&i!=="UND_ERR_REQ_RETRY"&&!u.includes(i)){n(A);return}if(Array.isArray(h)&&!h.includes(a)){n(A);return}if(s!=null&&Array.isArray(E)&&!E.includes(s)){n(A);return}if(I>l){n(A);return}let C=o?.["retry-after"];C&&(C=Number(C),C=Number.isNaN(C)?ub(C):C*1e3);let D=C>0?Math.min(C,Q):Math.min(c*B**(I-1),Q);setTimeout(()=>n(null),D)}onHeaders(A,t,r,n){let s=Eb(t);if(this.retryCount+=1,A>=300)return this.retryOpts.statusCodes.includes(A)===!1?this.handler.onHeaders(A,t,r,n):(this.abort(new yr("Request failed",A,{headers:s,data:{count:this.retryCount}})),!1);if(this.resume!=null){if(this.resume=null,A!==206&&(this.start>0||A!==200))return this.abort(new yr("server does not support the range header and the payload was partially consumed",A,{headers:s,data:{count:this.retryCount}})),!1;let o=Uu(s["content-range"]);if(!o)return this.abort(new yr("Content-Range mismatch",A,{headers:s,data:{count:this.retryCount}})),!1;if(this.etag!=null&&this.etag!==s.etag)return this.abort(new yr("ETag mismatch",A,{headers:s,data:{count:this.retryCount}})),!1;let a=Lu(s,o,A,this.retryCount);if(a!=null)return this.abort(a),!1;let{start:g,size:l,end:c=l-1}=o;return wr(this.start===g,"content-range mismatch"),wr(this.end==null||this.end===c,"content-range mismatch"),this.resume=r,!0}if(this.end==null){if(A===206){let o=Uu(s["content-range"]);if(o==null)return this.handler.onHeaders(A,t,r,n);let a=Lu(s,o,A,this.retryCount);if(a!=null)return this.abort(a),!1;let{start:g,size:l,end:c=l-1}=o;wr(g!=null&&Number.isFinite(g),"content-range mismatch"),wr(c!=null&&Number.isFinite(c),"invalid content-length"),this.start=g,this.end=c}if(this.end==null){let o=s["content-length"];this.end=o!=null?Number(o)-1:null}return wr(Number.isFinite(this.start)),wr(this.end==null||Number.isFinite(this.end),"invalid content-length"),this.resume=r,this.etag=s.etag!=null?s.etag:null,this.etag!=null&&this.etag.startsWith("W/")&&(this.etag=null),this.handler.onHeaders(A,t,r,n)}let i=new yr("Request failed",A,{headers:s,data:{count:this.retryCount}});return this.abort(i),!1}onData(A){return this.start+=A.length,this.handler.onData(A)}onComplete(A){return this.retryCount=0,this.handler.onComplete(A)}onError(A){if(this.aborted||Mu(this.opts.body))return this.handler.onError(A);this.retryCount-this.retryCountCheckpoint>0?this.retryCount=this.retryCountCheckpoint+(this.retryCount-this.retryCountCheckpoint):this.retryCount+=1,this.retryOpts.retry(A,{state:{counter:this.retryCount},opts:{retryOptions:this.retryOpts,...this.opts}},t.bind(this));function t(r){if(r!=null||this.aborted||Mu(this.opts.body))return this.handler.onError(r);if(this.start!==0){let n={range:`bytes=${this.start}-${this.end??""}`};this.etag!=null&&(n["if-match"]=this.etag),this.opts={...this.opts,headers:{...this.opts.headers,...n}}}try{this.retryCountCheckpoint=this.retryCount,this.dispatch(this.opts,this)}catch(n){this.handler.onError(n)}}}};Tu.exports=Cc});var Yu=p((gY,xu)=>{"use strict";var Ib=sn(),hb=li(),fc=class extends Ib{#e=null;#A=null;constructor(A,t={}){super(t),this.#e=A,this.#A=t}dispatch(A,t){let r=new hb({...A,retryOptions:this.#A},{dispatch:this.#e.dispatch.bind(this.#e),handler:t});return this.#e.dispatch(A,r)}close(){return this.#e.close()}destroy(){return this.#e.destroy()}};xu.exports=fc});var Dc=p((lY,Ou)=>{"use strict";var vu=y("node:assert"),{Readable:Cb}=y("node:stream"),{RequestAbortedError:qu,NotSupportedError:fb,InvalidArgumentError:db,AbortError:dc}=Z(),Wu=v(),{ReadableStreamFrom:wb}=v(),Ze=Symbol("kConsume"),Mn=Symbol("kReading"),at=Symbol("kBody"),Gu=Symbol("kAbort"),Pu=Symbol("kContentType"),Ju=Symbol("kContentLength"),yb=()=>{},wc=class extends Cb{constructor({resume:A,abort:t,contentType:r="",contentLength:n,highWaterMark:s=64*1024}){super({autoDestroy:!0,read:A,highWaterMark:s}),this._readableState.dataEmitted=!1,this[Gu]=t,this[Ze]=null,this[at]=null,this[Pu]=r,this[Ju]=n,this[Mn]=!1}destroy(A){return!A&&!this._readableState.endEmitted&&(A=new qu),A&&this[Gu](),super.destroy(A)}_destroy(A,t){this[Mn]?t(A):setImmediate(()=>{t(A)})}on(A,...t){return(A==="data"||A==="readable")&&(this[Mn]=!0),super.on(A,...t)}addListener(A,...t){return this.on(A,...t)}off(A,...t){let r=super.off(A,...t);return(A==="data"||A==="readable")&&(this[Mn]=this.listenerCount("data")>0||this.listenerCount("readable")>0),r}removeListener(A,...t){return this.off(A,...t)}push(A){return this[Ze]&&A!==null?(pc(this[Ze],A),this[Mn]?super.push(A):!0):super.push(A)}async text(){return Un(this,"text")}async json(){return Un(this,"json")}async blob(){return Un(this,"blob")}async bytes(){return Un(this,"bytes")}async arrayBuffer(){return Un(this,"arrayBuffer")}async formData(){throw new fb}get bodyUsed(){return Wu.isDisturbed(this)}get body(){return this[at]||(this[at]=wb(this),this[Ze]&&(this[at].getReader(),vu(this[at].locked))),this[at]}async dump(A){let t=Number.isFinite(A?.limit)?A.limit:131072,r=A?.signal;if(r!=null&&(typeof r!="object"||!("aborted"in r)))throw new db("signal must be an AbortSignal");return r?.throwIfAborted(),this._readableState.closeEmitted?null:await new Promise((n,s)=>{this[Ju]>t&&this.destroy(new dc);let i=()=>{this.destroy(r.reason??new dc)};r?.addEventListener("abort",i),this.on("close",function(){r?.removeEventListener("abort",i),r?.aborted?s(r.reason??new dc):n(null)}).on("error",yb).on("data",function(o){t-=o.length,t<=0&&this.destroy()}).resume()})}};function pb(e){return e[at]&&e[at].locked===!0||e[Ze]}function mb(e){return Wu.isDisturbed(e)||pb(e)}async function Un(e,A){return vu(!e[Ze]),new Promise((t,r)=>{if(mb(e)){let n=e._readableState;n.destroyed&&n.closeEmitted===!1?e.on("error",s=>{r(s)}).on("close",()=>{r(new TypeError("unusable"))}):r(n.errored??new TypeError("unusable"))}else queueMicrotask(()=>{e[Ze]={type:A,stream:e,resolve:t,reject:r,length:0,body:[]},e.on("error",function(n){mc(this[Ze],n)}).on("close",function(){this[Ze].body!==null&&mc(this[Ze],new qu)}),Db(e[Ze])})})}function Db(e){if(e.body===null)return;let{_readableState:A}=e.stream;if(A.bufferIndex){let t=A.bufferIndex,r=A.buffer.length;for(let n=t;n<r;n++)pc(e,A.buffer[n])}else for(let t of A.buffer)pc(e,t);for(A.endEmitted?Vu(this[Ze]):e.stream.on("end",function(){Vu(this[Ze])}),e.stream.resume();e.stream.read()!=null;);}function yc(e,A){if(e.length===0||A===0)return"";let t=e.length===1?e[0]:Buffer.concat(e,A),r=t.length,n=r>2&&t[0]===239&&t[1]===187&&t[2]===191?3:0;return t.utf8Slice(n,r)}function Hu(e,A){if(e.length===0||A===0)return new Uint8Array(0);if(e.length===1)return new Uint8Array(e[0]);let t=new Uint8Array(Buffer.allocUnsafeSlow(A).buffer),r=0;for(let n=0;n<e.length;++n){let s=e[n];t.set(s,r),r+=s.length}return t}function Vu(e){let{type:A,body:t,resolve:r,stream:n,length:s}=e;try{A==="text"?r(yc(t,s)):A==="json"?r(JSON.parse(yc(t,s))):A==="arrayBuffer"?r(Hu(t,s).buffer):A==="blob"?r(new Blob(t,{type:n[Pu]})):A==="bytes"&&r(Hu(t,s)),mc(e)}catch(i){n.destroy(i)}}function pc(e,A){e.length+=A.length,e.body.push(A)}function mc(e,A){e.body!==null&&(A?e.reject(A):e.resolve(),e.type=null,e.stream=null,e.resolve=null,e.reject=null,e.length=0,e.body=null)}Ou.exports={Readable:wc,chunksDecode:yc}});var kc=p((QY,Xu)=>{var kb=y("node:assert"),{ResponseStatusCodeError:zu}=Z(),{chunksDecode:Zu}=Dc(),bb=128*1024;async function Fb({callback:e,body:A,contentType:t,statusCode:r,statusMessage:n,headers:s}){kb(A);let i=[],o=0;try{for await(let c of A)if(i.push(c),o+=c.length,o>bb){i=[],o=0;break}}catch{i=[],o=0}let a=`Response status code ${r}${n?`: ${n}`:""}`;if(r===204||!t||!o){queueMicrotask(()=>e(new zu(a,r,s)));return}let g=Error.stackTraceLimit;Error.stackTraceLimit=0;let l;try{_u(t)?l=JSON.parse(Zu(i,o)):Ku(t)&&(l=Zu(i,o))}catch{}finally{Error.stackTraceLimit=g}queueMicrotask(()=>e(new zu(a,r,s,l)))}var _u=e=>e.length>15&&e[11]==="/"&&e[0]==="a"&&e[1]==="p"&&e[2]==="p"&&e[3]==="l"&&e[4]==="i"&&e[5]==="c"&&e[6]==="a"&&e[7]==="t"&&e[8]==="i"&&e[9]==="o"&&e[10]==="n"&&e[12]==="j"&&e[13]==="s"&&e[14]==="o"&&e[15]==="n",Ku=e=>e.length>4&&e[4]==="/"&&e[0]==="t"&&e[1]==="e"&&e[2]==="x"&&e[3]==="t";Xu.exports={getResolveErrorBodyCallback:Fb,isContentTypeApplicationJson:_u,isContentTypeText:Ku}});var eI=p((EY,bc)=>{"use strict";var Rb=y("node:assert"),{Readable:Sb}=Dc(),{InvalidArgumentError:pr,RequestAbortedError:ju}=Z(),_e=v(),{getResolveErrorBodyCallback:Nb}=kc(),{AsyncResource:Mb}=y("node:async_hooks"),Qi=class extends Mb{constructor(A,t){if(!A||typeof A!="object")throw new pr("invalid opts");let{signal:r,method:n,opaque:s,body:i,onInfo:o,responseHeaders:a,throwOnError:g,highWaterMark:l}=A;try{if(typeof t!="function")throw new pr("invalid callback");if(l&&(typeof l!="number"||l<0))throw new pr("invalid highWaterMark");if(r&&typeof r.on!="function"&&typeof r.addEventListener!="function")throw new pr("signal must be an EventEmitter or EventTarget");if(n==="CONNECT")throw new pr("invalid method");if(o&&typeof o!="function")throw new pr("invalid onInfo callback");super("UNDICI_REQUEST")}catch(c){throw _e.isStream(i)&&_e.destroy(i.on("error",_e.nop),c),c}this.method=n,this.responseHeaders=a||null,this.opaque=s||null,this.callback=t,this.res=null,this.abort=null,this.body=i,this.trailers={},this.context=null,this.onInfo=o||null,this.throwOnError=g,this.highWaterMark=l,this.signal=r,this.reason=null,this.removeAbortListener=null,_e.isStream(i)&&i.on("error",c=>{this.onError(c)}),this.signal&&(this.signal.aborted?this.reason=this.signal.reason??new ju:this.removeAbortListener=_e.addAbortListener(this.signal,()=>{this.reason=this.signal.reason??new ju,this.res?_e.destroy(this.res.on("error",_e.nop),this.reason):this.abort&&this.abort(this.reason),this.removeAbortListener&&(this.res?.off("close",this.removeAbortListener),this.removeAbortListener(),this.removeAbortListener=null)}))}onConnect(A,t){if(this.reason){A(this.reason);return}Rb(this.callback),this.abort=A,this.context=t}onHeaders(A,t,r,n){let{callback:s,opaque:i,abort:o,context:a,responseHeaders:g,highWaterMark:l}=this,c=g==="raw"?_e.parseRawHeaders(t):_e.parseHeaders(t);if(A<200){this.onInfo&&this.onInfo({statusCode:A,headers:c});return}let Q=g==="raw"?_e.parseHeaders(t):c,B=Q["content-type"],E=Q["content-length"],u=new Sb({resume:r,abort:o,contentType:B,contentLength:this.method!=="HEAD"&&E?Number(E):null,highWaterMark:l});this.removeAbortListener&&u.on("close",this.removeAbortListener),this.callback=null,this.res=u,s!==null&&(this.throwOnError&&A>=400?this.runInAsyncScope(Nb,null,{callback:s,body:u,contentType:B,statusCode:A,statusMessage:n,headers:c}):this.runInAsyncScope(s,null,null,{statusCode:A,headers:c,trailers:this.trailers,opaque:i,body:u,context:a}))}onData(A){return this.res.push(A)}onComplete(A){_e.parseHeaders(A,this.trailers),this.res.push(null)}onError(A){let{res:t,callback:r,body:n,opaque:s}=this;r&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(r,null,A,{opaque:s})})),t&&(this.res=null,queueMicrotask(()=>{_e.destroy(t,A)})),n&&(this.body=null,_e.destroy(n,A)),this.removeAbortListener&&(t?.off("close",this.removeAbortListener),this.removeAbortListener(),this.removeAbortListener=null)}};function $u(e,A){if(A===void 0)return new Promise((t,r)=>{$u.call(this,e,(n,s)=>n?r(n):t(s))});try{this.dispatch(e,new Qi(e,A))}catch(t){if(typeof A!="function")throw t;let r=e?.opaque;queueMicrotask(()=>A(t,{opaque:r}))}}bc.exports=$u;bc.exports.RequestHandler=Qi});var Ln=p((BY,rI)=>{var{addAbortListener:Ub}=v(),{RequestAbortedError:Lb}=Z(),mr=Symbol("kListener"),SA=Symbol("kSignal");function AI(e){e.abort?e.abort(e[SA]?.reason):e.reason=e[SA]?.reason??new Lb,tI(e)}function Tb(e,A){if(e.reason=null,e[SA]=null,e[mr]=null,!!A){if(A.aborted){AI(e);return}e[SA]=A,e[mr]=()=>{AI(e)},Ub(e[SA],e[mr])}}function tI(e){e[SA]&&("removeEventListener"in e[SA]?e[SA].removeEventListener("abort",e[mr]):e[SA].removeListener("abort",e[mr]),e[SA]=null,e[mr]=null)}rI.exports={addSignal:Tb,removeSignal:tI}});var oI=p((uY,iI)=>{"use strict";var xb=y("node:assert"),{finished:Yb,PassThrough:Gb}=y("node:stream"),{InvalidArgumentError:Dr,InvalidReturnValueError:Jb}=Z(),uA=v(),{getResolveErrorBodyCallback:Hb}=kc(),{AsyncResource:Vb}=y("node:async_hooks"),{addSignal:vb,removeSignal:nI}=Ln(),Fc=class extends Vb{constructor(A,t,r){if(!A||typeof A!="object")throw new Dr("invalid opts");let{signal:n,method:s,opaque:i,body:o,onInfo:a,responseHeaders:g,throwOnError:l}=A;try{if(typeof r!="function")throw new Dr("invalid callback");if(typeof t!="function")throw new Dr("invalid factory");if(n&&typeof n.on!="function"&&typeof n.addEventListener!="function")throw new Dr("signal must be an EventEmitter or EventTarget");if(s==="CONNECT")throw new Dr("invalid method");if(a&&typeof a!="function")throw new Dr("invalid onInfo callback");super("UNDICI_STREAM")}catch(c){throw uA.isStream(o)&&uA.destroy(o.on("error",uA.nop),c),c}this.responseHeaders=g||null,this.opaque=i||null,this.factory=t,this.callback=r,this.res=null,this.abort=null,this.context=null,this.trailers=null,this.body=o,this.onInfo=a||null,this.throwOnError=l||!1,uA.isStream(o)&&o.on("error",c=>{this.onError(c)}),vb(this,n)}onConnect(A,t){if(this.reason){A(this.reason);return}xb(this.callback),this.abort=A,this.context=t}onHeaders(A,t,r,n){let{factory:s,opaque:i,context:o,callback:a,responseHeaders:g}=this,l=g==="raw"?uA.parseRawHeaders(t):uA.parseHeaders(t);if(A<200){this.onInfo&&this.onInfo({statusCode:A,headers:l});return}this.factory=null;let c;if(this.throwOnError&&A>=400){let E=(g==="raw"?uA.parseHeaders(t):l)["content-type"];c=new Gb,this.callback=null,this.runInAsyncScope(Hb,null,{callback:a,body:c,contentType:E,statusCode:A,statusMessage:n,headers:l})}else{if(s===null)return;if(c=this.runInAsyncScope(s,null,{statusCode:A,headers:l,opaque:i,context:o}),!c||typeof c.write!="function"||typeof c.end!="function"||typeof c.on!="function")throw new Jb("expected Writable");Yb(c,{readable:!1},B=>{let{callback:E,res:u,opaque:h,trailers:I,abort:C}=this;this.res=null,(B||!u.readable)&&uA.destroy(u,B),this.callback=null,this.runInAsyncScope(E,null,B||null,{opaque:h,trailers:I}),B&&C()})}return c.on("drain",r),this.res=c,(c.writableNeedDrain!==void 0?c.writableNeedDrain:c._writableState?.needDrain)!==!0}onData(A){let{res:t}=this;return t?t.write(A):!0}onComplete(A){let{res:t}=this;nI(this),t&&(this.trailers=uA.parseHeaders(A),t.end())}onError(A){let{res:t,callback:r,opaque:n,body:s}=this;nI(this),this.factory=null,t?(this.res=null,uA.destroy(t,A)):r&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(r,null,A,{opaque:n})})),s&&(this.body=null,uA.destroy(s,A))}};function sI(e,A,t){if(t===void 0)return new Promise((r,n)=>{sI.call(this,e,A,(s,i)=>s?n(s):r(i))});try{this.dispatch(e,new Fc(e,A,t))}catch(r){if(typeof t!="function")throw r;let n=e?.opaque;queueMicrotask(()=>t(r,{opaque:n}))}}iI.exports=sI});var lI=p((IY,gI)=>{"use strict";var{Readable:cI,Duplex:qb,PassThrough:Wb}=y("node:stream"),{InvalidArgumentError:Tn,InvalidReturnValueError:Pb,RequestAbortedError:Rc}=Z(),iA=v(),{AsyncResource:Ob}=y("node:async_hooks"),{addSignal:zb,removeSignal:Zb}=Ln(),aI=y("node:assert"),kr=Symbol("resume"),Sc=class extends cI{constructor(){super({autoDestroy:!0}),this[kr]=null}_read(){let{[kr]:A}=this;A&&(this[kr]=null,A())}_destroy(A,t){this._read(),t(A)}},Nc=class extends cI{constructor(A){super({autoDestroy:!0}),this[kr]=A}_read(){this[kr]()}_destroy(A,t){!A&&!this._readableState.endEmitted&&(A=new Rc),t(A)}},Mc=class extends Ob{constructor(A,t){if(!A||typeof A!="object")throw new Tn("invalid opts");if(typeof t!="function")throw new Tn("invalid handler");let{signal:r,method:n,opaque:s,onInfo:i,responseHeaders:o}=A;if(r&&typeof r.on!="function"&&typeof r.addEventListener!="function")throw new Tn("signal must be an EventEmitter or EventTarget");if(n==="CONNECT")throw new Tn("invalid method");if(i&&typeof i!="function")throw new Tn("invalid onInfo callback");super("UNDICI_PIPELINE"),this.opaque=s||null,this.responseHeaders=o||null,this.handler=t,this.abort=null,this.context=null,this.onInfo=i||null,this.req=new Sc().on("error",iA.nop),this.ret=new qb({readableObjectMode:A.objectMode,autoDestroy:!0,read:()=>{let{body:a}=this;a?.resume&&a.resume()},write:(a,g,l)=>{let{req:c}=this;c.push(a,g)||c._readableState.destroyed?l():c[kr]=l},destroy:(a,g)=>{let{body:l,req:c,res:Q,ret:B,abort:E}=this;!a&&!B._readableState.endEmitted&&(a=new Rc),E&&a&&E(),iA.destroy(l,a),iA.destroy(c,a),iA.destroy(Q,a),Zb(this),g(a)}}).on("prefinish",()=>{let{req:a}=this;a.push(null)}),this.res=null,zb(this,r)}onConnect(A,t){let{ret:r,res:n}=this;if(this.reason){A(this.reason);return}aI(!n,"pipeline cannot be retried"),aI(!r.destroyed),this.abort=A,this.context=t}onHeaders(A,t,r){let{opaque:n,handler:s,context:i}=this;if(A<200){if(this.onInfo){let a=this.responseHeaders==="raw"?iA.parseRawHeaders(t):iA.parseHeaders(t);this.onInfo({statusCode:A,headers:a})}return}this.res=new Nc(r);let o;try{this.handler=null;let a=this.responseHeaders==="raw"?iA.parseRawHeaders(t):iA.parseHeaders(t);o=this.runInAsyncScope(s,null,{statusCode:A,headers:a,opaque:n,body:this.res,context:i})}catch(a){throw this.res.on("error",iA.nop),a}if(!o||typeof o.on!="function")throw new Pb("expected Readable");o.on("data",a=>{let{ret:g,body:l}=this;!g.push(a)&&l.pause&&l.pause()}).on("error",a=>{let{ret:g}=this;iA.destroy(g,a)}).on("end",()=>{let{ret:a}=this;a.push(null)}).on("close",()=>{let{ret:a}=this;a._readableState.ended||iA.destroy(a,new Rc)}),this.body=o}onData(A){let{res:t}=this;return t.push(A)}onComplete(A){let{res:t}=this;t.push(null)}onError(A){let{ret:t}=this;this.handler=null,iA.destroy(t,A)}};function _b(e,A){try{let t=new Mc(e,A);return this.dispatch({...e,body:t.req},t),t.ret}catch(t){return new Wb().destroy(t)}}gI.exports=_b});var hI=p((hY,II)=>{"use strict";var{InvalidArgumentError:Uc,SocketError:Kb}=Z(),{AsyncResource:Xb}=y("node:async_hooks"),QI=v(),{addSignal:jb,removeSignal:EI}=Ln(),BI=y("node:assert"),Lc=class extends Xb{constructor(A,t){if(!A||typeof A!="object")throw new Uc("invalid opts");if(typeof t!="function")throw new Uc("invalid callback");let{signal:r,opaque:n,responseHeaders:s}=A;if(r&&typeof r.on!="function"&&typeof r.addEventListener!="function")throw new Uc("signal must be an EventEmitter or EventTarget");super("UNDICI_UPGRADE"),this.responseHeaders=s||null,this.opaque=n||null,this.callback=t,this.abort=null,this.context=null,jb(this,r)}onConnect(A,t){if(this.reason){A(this.reason);return}BI(this.callback),this.abort=A,this.context=null}onHeaders(){throw new Kb("bad upgrade",null)}onUpgrade(A,t,r){BI(A===101);let{callback:n,opaque:s,context:i}=this;EI(this),this.callback=null;let o=this.responseHeaders==="raw"?QI.parseRawHeaders(t):QI.parseHeaders(t);this.runInAsyncScope(n,null,null,{headers:o,socket:r,opaque:s,context:i})}onError(A){let{callback:t,opaque:r}=this;EI(this),t&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(t,null,A,{opaque:r})}))}};function uI(e,A){if(A===void 0)return new Promise((t,r)=>{uI.call(this,e,(n,s)=>n?r(n):t(s))});try{let t=new Lc(e,A);this.dispatch({...e,method:e.method||"GET",upgrade:e.protocol||"Websocket"},t)}catch(t){if(typeof A!="function")throw t;let r=e?.opaque;queueMicrotask(()=>A(t,{opaque:r}))}}II.exports=uI});var yI=p((CY,wI)=>{"use strict";var $b=y("node:assert"),{AsyncResource:eF}=y("node:async_hooks"),{InvalidArgumentError:Tc,SocketError:AF}=Z(),CI=v(),{addSignal:tF,removeSignal:fI}=Ln(),xc=class extends eF{constructor(A,t){if(!A||typeof A!="object")throw new Tc("invalid opts");if(typeof t!="function")throw new Tc("invalid callback");let{signal:r,opaque:n,responseHeaders:s}=A;if(r&&typeof r.on!="function"&&typeof r.addEventListener!="function")throw new Tc("signal must be an EventEmitter or EventTarget");super("UNDICI_CONNECT"),this.opaque=n||null,this.responseHeaders=s||null,this.callback=t,this.abort=null,tF(this,r)}onConnect(A,t){if(this.reason){A(this.reason);return}$b(this.callback),this.abort=A,this.context=t}onHeaders(){throw new AF("bad connect",null)}onUpgrade(A,t,r){let{callback:n,opaque:s,context:i}=this;fI(this),this.callback=null;let o=t;o!=null&&(o=this.responseHeaders==="raw"?CI.parseRawHeaders(t):CI.parseHeaders(t)),this.runInAsyncScope(n,null,null,{statusCode:A,headers:o,socket:r,opaque:s,context:i})}onError(A){let{callback:t,opaque:r}=this;fI(this),t&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(t,null,A,{opaque:r})}))}};function dI(e,A){if(A===void 0)return new Promise((t,r)=>{dI.call(this,e,(n,s)=>n?r(n):t(s))});try{let t=new xc(e,A);this.dispatch({...e,method:"CONNECT"},t)}catch(t){if(typeof A!="function")throw t;let r=e?.opaque;queueMicrotask(()=>A(t,{opaque:r}))}}wI.exports=dI});var pI=p((fY,br)=>{"use strict";br.exports.request=eI();br.exports.stream=oI();br.exports.pipeline=lI();br.exports.upgrade=hI();br.exports.connect=yI()});var Gc=p((dY,DI)=>{"use strict";var{UndiciError:rF}=Z(),mI=Symbol.for("undici.error.UND_MOCK_ERR_MOCK_NOT_MATCHED"),Yc=class e extends rF{constructor(A){super(A),Error.captureStackTrace(this,e),this.name="MockNotMatchedError",this.message=A||"The request does not match any registered mock dispatches",this.code="UND_MOCK_ERR_MOCK_NOT_MATCHED"}static[Symbol.hasInstance](A){return A&&A[mI]===!0}[mI]=!0};DI.exports={MockNotMatchedError:Yc}});var Fr=p((wY,kI)=>{"use strict";kI.exports={kAgent:Symbol("agent"),kOptions:Symbol("options"),kFactory:Symbol("factory"),kDispatches:Symbol("dispatches"),kDispatchKey:Symbol("dispatch key"),kDefaultHeaders:Symbol("default headers"),kDefaultTrailers:Symbol("default trailers"),kContentLength:Symbol("content length"),kMockAgent:Symbol("mock agent"),kMockAgentSet:Symbol("mock agent set"),kMockAgentGet:Symbol("mock agent get"),kMockDispatch:Symbol("mock dispatch"),kClose:Symbol("close"),kOriginalClose:Symbol("original agent close"),kOrigin:Symbol("origin"),kIsMockActive:Symbol("is mock active"),kNetConnect:Symbol("net connect"),kGetNetConnect:Symbol("get net connect"),kConnected:Symbol("connected")}});var xn=p((yY,YI)=>{"use strict";var{MockNotMatchedError:Ut}=Gc(),{kDispatches:Ei,kMockAgent:nF,kOriginalDispatch:sF,kOrigin:iF,kGetNetConnect:oF}=Fr(),{buildURL:aF}=v(),{STATUS_CODES:cF}=y("node:http"),{types:{isPromise:gF}}=y("node:util");function OA(e,A){return typeof e=="string"?e===A:e instanceof RegExp?e.test(A):typeof e=="function"?e(A)===!0:!1}function FI(e){return Object.fromEntries(Object.entries(e).map(([A,t])=>[A.toLocaleLowerCase(),t]))}function RI(e,A){if(Array.isArray(e)){for(let t=0;t<e.length;t+=2)if(e[t].toLocaleLowerCase()===A.toLocaleLowerCase())return e[t+1];return}else return typeof e.get=="function"?e.get(A):FI(e)[A.toLocaleLowerCase()]}function Vc(e){let A=e.slice(),t=[];for(let r=0;r<A.length;r+=2)t.push([A[r],A[r+1]]);return Object.fromEntries(t)}function SI(e,A){if(typeof e.headers=="function")return Array.isArray(A)&&(A=Vc(A)),e.headers(A?FI(A):{});if(typeof e.headers>"u")return!0;if(typeof A!="object"||typeof e.headers!="object")return!1;for(let[t,r]of Object.entries(e.headers)){let n=RI(A,t);if(!OA(r,n))return!1}return!0}function bI(e){if(typeof e!="string")return e;let A=e.split("?");if(A.length!==2)return e;let t=new URLSearchParams(A.pop());return t.sort(),[...A,t.toString()].join("?")}function lF(e,{path:A,method:t,body:r,headers:n}){let s=OA(e.path,A),i=OA(e.method,t),o=typeof e.body<"u"?OA(e.body,r):!0,a=SI(e,n);return s&&i&&o&&a}function NI(e){return Buffer.isBuffer(e)||e instanceof Uint8Array||e instanceof ArrayBuffer?e:typeof e=="object"?JSON.stringify(e):e.toString()}function MI(e,A){let t=A.query?aF(A.path,A.query):A.path,r=typeof t=="string"?bI(t):t,n=e.filter(({consumed:s})=>!s).filter(({path:s})=>OA(bI(s),r));if(n.length===0)throw new Ut(`Mock dispatch not matched for path '${r}'`);if(n=n.filter(({method:s})=>OA(s,A.method)),n.length===0)throw new Ut(`Mock dispatch not matched for method '${A.method}' on path '${r}'`);if(n=n.filter(({body:s})=>typeof s<"u"?OA(s,A.body):!0),n.length===0)throw new Ut(`Mock dispatch not matched for body '${A.body}' on path '${r}'`);if(n=n.filter(s=>SI(s,A.headers)),n.length===0){let s=typeof A.headers=="object"?JSON.stringify(A.headers):A.headers;throw new Ut(`Mock dispatch not matched for headers '${s}' on path '${r}'`)}return n[0]}function QF(e,A,t){let r={timesInvoked:0,times:1,persist:!1,consumed:!1},n=typeof t=="function"?{callback:t}:{...t},s={...r,...A,pending:!0,data:{error:null,...n}};return e.push(s),s}function Jc(e,A){let t=e.findIndex(r=>r.consumed?lF(r,A):!1);t!==-1&&e.splice(t,1)}function UI(e){let{path:A,method:t,body:r,headers:n,query:s}=e;return{path:A,method:t,body:r,headers:n,query:s}}function Hc(e){let A=Object.keys(e),t=[];for(let r=0;r<A.length;++r){let n=A[r],s=e[n],i=Buffer.from(`${n}`);if(Array.isArray(s))for(let o=0;o<s.length;++o)t.push(i,Buffer.from(`${s[o]}`));else t.push(i,Buffer.from(`${s}`))}return t}function LI(e){return cF[e]||"unknown"}async function EF(e){let A=[];for await(let t of e)A.push(t);return Buffer.concat(A).toString("utf8")}function TI(e,A){let t=UI(e),r=MI(this[Ei],t);r.timesInvoked++,r.data.callback&&(r.data={...r.data,...r.data.callback(e)});let{data:{statusCode:n,data:s,headers:i,trailers:o,error:a},delay:g,persist:l}=r,{timesInvoked:c,times:Q}=r;if(r.consumed=!l&&c>=Q,r.pending=c<Q,a!==null)return Jc(this[Ei],t),A.onError(a),!0;typeof g=="number"&&g>0?setTimeout(()=>{B(this[Ei])},g):B(this[Ei]);function B(u,h=s){let I=Array.isArray(e.headers)?Vc(e.headers):e.headers,C=typeof h=="function"?h({...e,headers:I}):h;if(gF(C)){C.then(S=>B(u,S));return}let D=NI(C),f=Hc(i),R=Hc(o);A.onConnect?.(S=>A.onError(S),null),A.onHeaders?.(n,f,E,LI(n)),A.onData?.(Buffer.from(D)),A.onComplete?.(R),Jc(u,t)}function E(){}return!0}function BF(){let e=this[nF],A=this[iF],t=this[sF];return function(n,s){if(e.isMockActive)try{TI.call(this,n,s)}catch(i){if(i instanceof Ut){let o=e[oF]();if(o===!1)throw new Ut(`${i.message}: subsequent request to origin ${A} was not allowed (net.connect disabled)`);if(xI(o,A))t.call(this,n,s);else throw new Ut(`${i.message}: subsequent request to origin ${A} was not allowed (net.connect is not enabled for this origin)`)}else throw i}else t.call(this,n,s)}}function xI(e,A){let t=new URL(A);return e===!0?!0:!!(Array.isArray(e)&&e.some(r=>OA(r,t.host)))}function uF(e){if(e){let{agent:A,...t}=e;return t}}YI.exports={getResponseData:NI,getMockDispatch:MI,addMockDispatch:QF,deleteMockDispatch:Jc,buildKey:UI,generateKeyValues:Hc,matchValue:OA,getResponse:EF,getStatusText:LI,mockDispatch:TI,buildMockDispatch:BF,checkNetConnect:xI,buildMockOptions:uF,getHeaderByName:RI,buildHeadersFromArray:Vc}});var Zc=p((pY,zc)=>{"use strict";var{getResponseData:IF,buildKey:hF,addMockDispatch:vc}=xn(),{kDispatches:Bi,kDispatchKey:ui,kDefaultHeaders:qc,kDefaultTrailers:Wc,kContentLength:Pc,kMockDispatch:Ii}=Fr(),{InvalidArgumentError:NA}=Z(),{buildURL:CF}=v(),Rr=class{constructor(A){this[Ii]=A}delay(A){if(typeof A!="number"||!Number.isInteger(A)||A<=0)throw new NA("waitInMs must be a valid integer > 0");return this[Ii].delay=A,this}persist(){return this[Ii].persist=!0,this}times(A){if(typeof A!="number"||!Number.isInteger(A)||A<=0)throw new NA("repeatTimes must be a valid integer > 0");return this[Ii].times=A,this}},Oc=class{constructor(A,t){if(typeof A!="object")throw new NA("opts must be an object");if(typeof A.path>"u")throw new NA("opts.path must be defined");if(typeof A.method>"u"&&(A.method="GET"),typeof A.path=="string")if(A.query)A.path=CF(A.path,A.query);else{let r=new URL(A.path,"data://");A.path=r.pathname+r.search}typeof A.method=="string"&&(A.method=A.method.toUpperCase()),this[ui]=hF(A),this[Bi]=t,this[qc]={},this[Wc]={},this[Pc]=!1}createMockScopeDispatchData({statusCode:A,data:t,responseOptions:r}){let n=IF(t),s=this[Pc]?{"content-length":n.length}:{},i={...this[qc],...s,...r.headers},o={...this[Wc],...r.trailers};return{statusCode:A,data:t,headers:i,trailers:o}}validateReplyParameters(A){if(typeof A.statusCode>"u")throw new NA("statusCode must be defined");if(typeof A.responseOptions!="object"||A.responseOptions===null)throw new NA("responseOptions must be an object")}reply(A){if(typeof A=="function"){let s=o=>{let a=A(o);if(typeof a!="object"||a===null)throw new NA("reply options callback must return an object");let g={data:"",responseOptions:{},...a};return this.validateReplyParameters(g),{...this.createMockScopeDispatchData(g)}},i=vc(this[Bi],this[ui],s);return new Rr(i)}let t={statusCode:A,data:arguments[1]===void 0?"":arguments[1],responseOptions:arguments[2]===void 0?{}:arguments[2]};this.validateReplyParameters(t);let r=this.createMockScopeDispatchData(t),n=vc(this[Bi],this[ui],r);return new Rr(n)}replyWithError(A){if(typeof A>"u")throw new NA("error must be defined");let t=vc(this[Bi],this[ui],{error:A});return new Rr(t)}defaultReplyHeaders(A){if(typeof A>"u")throw new NA("headers must be defined");return this[qc]=A,this}defaultReplyTrailers(A){if(typeof A>"u")throw new NA("trailers must be defined");return this[Wc]=A,this}replyContentLength(){return this[Pc]=!0,this}};zc.exports.MockInterceptor=Oc;zc.exports.MockScope=Rr});var Xc=p((mY,WI)=>{"use strict";var{promisify:fF}=y("node:util"),dF=hr(),{buildMockDispatch:wF}=xn(),{kDispatches:GI,kMockAgent:JI,kClose:HI,kOriginalClose:VI,kOrigin:vI,kOriginalDispatch:yF,kConnected:_c}=Fr(),{MockInterceptor:pF}=Zc(),qI=Qe(),{InvalidArgumentError:mF}=Z(),Kc=class extends dF{constructor(A,t){if(super(A,t),!t||!t.agent||typeof t.agent.dispatch!="function")throw new mF("Argument opts.agent must implement Agent");this[JI]=t.agent,this[vI]=A,this[GI]=[],this[_c]=1,this[yF]=this.dispatch,this[VI]=this.close.bind(this),this.dispatch=wF.call(this),this.close=this[HI]}get[qI.kConnected](){return this[_c]}intercept(A){return new pF(A,this[GI])}async[HI](){await fF(this[VI])(),this[_c]=0,this[JI][qI.kClients].delete(this[vI])}};WI.exports=Kc});var eg=p((DY,XI)=>{"use strict";var{promisify:DF}=y("node:util"),kF=Cr(),{buildMockDispatch:bF}=xn(),{kDispatches:PI,kMockAgent:OI,kClose:zI,kOriginalClose:ZI,kOrigin:_I,kOriginalDispatch:FF,kConnected:jc}=Fr(),{MockInterceptor:RF}=Zc(),KI=Qe(),{InvalidArgumentError:SF}=Z(),$c=class extends kF{constructor(A,t){if(super(A,t),!t||!t.agent||typeof t.agent.dispatch!="function")throw new SF("Argument opts.agent must implement Agent");this[OI]=t.agent,this[_I]=A,this[PI]=[],this[jc]=1,this[FF]=this.dispatch,this[ZI]=this.close.bind(this),this.dispatch=bF.call(this),this.close=this[zI]}get[KI.kConnected](){return this[jc]}intercept(A){return new RF(A,this[PI])}async[zI](){await DF(this[ZI])(),this[jc]=0,this[OI][KI.kClients].delete(this[_I])}};XI.exports=$c});var $I=p((bY,jI)=>{"use strict";var NF={pronoun:"it",is:"is",was:"was",this:"this"},MF={pronoun:"they",is:"are",was:"were",this:"these"};jI.exports=class{constructor(A,t){this.singular=A,this.plural=t}pluralize(A){let t=A===1,r=t?NF:MF,n=t?this.singular:this.plural;return{...r,count:A,noun:n}}}});var Ah=p((RY,eh)=>{"use strict";var{Transform:UF}=y("node:stream"),{Console:LF}=y("node:console"),TF=process.versions.icu?"\u2705":"Y ",xF=process.versions.icu?"\u274C":"N ";eh.exports=class{constructor({disableColors:A}={}){this.transform=new UF({transform(t,r,n){n(null,t)}}),this.logger=new LF({stdout:this.transform,inspectOptions:{colors:!A&&!process.env.CI}})}format(A){let t=A.map(({method:r,path:n,data:{statusCode:s},persist:i,times:o,timesInvoked:a,origin:g})=>({Method:r,Origin:g,Path:n,"Status code":s,Persistent:i?TF:xF,Invocations:a,Remaining:i?1/0:o-a}));return this.logger.table(t),this.transform.read().toString()}}});var sh=p((SY,nh)=>{"use strict";var{kClients:Lt}=Qe(),YF=fr(),{kAgent:Ag,kMockAgentSet:hi,kMockAgentGet:th,kDispatches:tg,kIsMockActive:Ci,kNetConnect:Tt,kGetNetConnect:GF,kOptions:fi,kFactory:di}=Fr(),JF=Xc(),HF=eg(),{matchValue:VF,buildMockOptions:vF}=xn(),{InvalidArgumentError:rh,UndiciError:qF}=Z(),WF=sn(),PF=$I(),OF=Ah(),rg=class extends WF{constructor(A){if(super(A),this[Tt]=!0,this[Ci]=!0,A?.agent&&typeof A.agent.dispatch!="function")throw new rh("Argument opts.agent must implement Agent");let t=A?.agent?A.agent:new YF(A);this[Ag]=t,this[Lt]=t[Lt],this[fi]=vF(A)}get(A){let t=this[th](A);return t||(t=this[di](A),this[hi](A,t)),t}dispatch(A,t){return this.get(A.origin),this[Ag].dispatch(A,t)}async close(){await this[Ag].close(),this[Lt].clear()}deactivate(){this[Ci]=!1}activate(){this[Ci]=!0}enableNetConnect(A){if(typeof A=="string"||typeof A=="function"||A instanceof RegExp)Array.isArray(this[Tt])?this[Tt].push(A):this[Tt]=[A];else if(typeof A>"u")this[Tt]=!0;else throw new rh("Unsupported matcher. Must be one of String|Function|RegExp.")}disableNetConnect(){this[Tt]=!1}get isMockActive(){return this[Ci]}[hi](A,t){this[Lt].set(A,t)}[di](A){let t=Object.assign({agent:this},this[fi]);return this[fi]&&this[fi].connections===1?new JF(A,t):new HF(A,t)}[th](A){let t=this[Lt].get(A);if(t)return t;if(typeof A!="string"){let r=this[di]("http://localhost:9999");return this[hi](A,r),r}for(let[r,n]of Array.from(this[Lt]))if(n&&typeof r!="string"&&VF(r,A)){let s=this[di](A);return this[hi](A,s),s[tg]=n[tg],s}}[GF](){return this[Tt]}pendingInterceptors(){let A=this[Lt];return Array.from(A.entries()).flatMap(([t,r])=>r[tg].map(n=>({...n,origin:t}))).filter(({pending:t})=>t)}assertNoPendingInterceptors({pendingInterceptorsFormatter:A=new OF}={}){let t=this.pendingInterceptors();if(t.length===0)return;let r=new PF("interceptor","interceptors").pluralize(t.length);throw new qF(`
|
|
41
|
-
${r.count} ${r.noun} ${r.is} pending:
|
|
42
|
-
|
|
43
|
-
${A.format(t)}
|
|
44
|
-
`.trim())}};nh.exports=rg});var wi=p((NY,ch)=>{"use strict";var ih=Symbol.for("undici.globalDispatcher.1"),{InvalidArgumentError:zF}=Z(),ZF=fr();ah()===void 0&&oh(new ZF);function oh(e){if(!e||typeof e.dispatch!="function")throw new zF("Argument agent must implement Agent");Object.defineProperty(globalThis,ih,{value:e,writable:!0,enumerable:!1,configurable:!1})}function ah(){return globalThis[ih]}ch.exports={setGlobalDispatcher:oh,getGlobalDispatcher:ah}});var yi=p((UY,gh)=>{"use strict";gh.exports=class{#e;constructor(A){if(typeof A!="object"||A===null)throw new TypeError("handler must be an object");this.#e=A}onConnect(...A){return this.#e.onConnect?.(...A)}onError(...A){return this.#e.onError?.(...A)}onUpgrade(...A){return this.#e.onUpgrade?.(...A)}onResponseStarted(...A){return this.#e.onResponseStarted?.(...A)}onHeaders(...A){return this.#e.onHeaders?.(...A)}onData(...A){return this.#e.onData?.(...A)}onComplete(...A){return this.#e.onComplete?.(...A)}onBodySent(...A){return this.#e.onBodySent?.(...A)}}});var Qh=p((LY,lh)=>{"use strict";var _F=ei();lh.exports=e=>{let A=e?.maxRedirections;return t=>function(n,s){let{maxRedirections:i=A,...o}=n;if(!i)return t(n,s);let a=new _F(t,i,n,s);return t(o,a)}}});var Bh=p((TY,Eh)=>{"use strict";var KF=li();Eh.exports=e=>A=>function(r,n){return A(r,new KF({...r,retryOptions:{...e,...r.retryOptions}},{handler:n,dispatch:A}))}});var Ih=p((xY,uh)=>{"use strict";var XF=v(),{InvalidArgumentError:jF,RequestAbortedError:$F}=Z(),eR=yi(),ng=class extends eR{#e=1024*1024;#A=null;#t=!1;#s=!1;#n=0;#r=null;#i=null;constructor({maxSize:A},t){if(super(t),A!=null&&(!Number.isFinite(A)||A<1))throw new jF("maxSize must be a number greater than 0");this.#e=A??this.#e,this.#i=t}onConnect(A){this.#A=A,this.#i.onConnect(this.#o.bind(this))}#o(A){this.#s=!0,this.#r=A}onHeaders(A,t,r,n){let i=XF.parseHeaders(t)["content-length"];if(i!=null&&i>this.#e)throw new $F(`Response size (${i}) larger than maxSize (${this.#e})`);return this.#s?!0:this.#i.onHeaders(A,t,r,n)}onError(A){this.#t||(A=this.#r??A,this.#i.onError(A))}onData(A){return this.#n=this.#n+A.length,this.#n>=this.#e&&(this.#t=!0,this.#s?this.#i.onError(this.#r):this.#i.onComplete([])),!0}onComplete(A){if(!this.#t){if(this.#s){this.#i.onError(this.reason);return}this.#i.onComplete(A)}}};function AR({maxSize:e}={maxSize:1024*1024}){return A=>function(r,n){let{dumpMaxSize:s=e}=r,i=new ng({maxSize:s},n);return A(r,i)}}uh.exports=AR});var fh=p((YY,Ch)=>{"use strict";var{isIP:tR}=y("node:net"),{lookup:rR}=y("node:dns"),nR=yi(),{InvalidArgumentError:Sr,InformationalError:sR}=Z(),hh=Math.pow(2,31)-1,sg=class{#e=0;#A=0;#t=new Map;dualStack=!0;affinity=null;lookup=null;pick=null;constructor(A){this.#e=A.maxTTL,this.#A=A.maxItems,this.dualStack=A.dualStack,this.affinity=A.affinity,this.lookup=A.lookup??this.#s,this.pick=A.pick??this.#n}get full(){return this.#t.size===this.#A}runLookup(A,t,r){let n=this.#t.get(A.hostname);if(n==null&&this.full){r(null,A.origin);return}let s={affinity:this.affinity,dualStack:this.dualStack,lookup:this.lookup,pick:this.pick,...t.dns,maxTTL:this.#e,maxItems:this.#A};if(n==null)this.lookup(A,s,(i,o)=>{if(i||o==null||o.length===0){r(i??new sR("No DNS entries found"));return}this.setRecords(A,o);let a=this.#t.get(A.hostname),g=this.pick(A,a,s.affinity),l;typeof g.port=="number"?l=`:${g.port}`:A.port!==""?l=`:${A.port}`:l="",r(null,`${A.protocol}//${g.family===6?`[${g.address}]`:g.address}${l}`)});else{let i=this.pick(A,n,s.affinity);if(i==null){this.#t.delete(A.hostname),this.runLookup(A,t,r);return}let o;typeof i.port=="number"?o=`:${i.port}`:A.port!==""?o=`:${A.port}`:o="",r(null,`${A.protocol}//${i.family===6?`[${i.address}]`:i.address}${o}`)}}#s(A,t,r){rR(A.hostname,{all:!0,family:this.dualStack===!1?this.affinity:0,order:"ipv4first"},(n,s)=>{if(n)return r(n);let i=new Map;for(let o of s)i.set(`${o.address}:${o.family}`,o);r(null,i.values())})}#n(A,t,r){let n=null,{records:s,offset:i}=t,o;if(this.dualStack?(r==null&&(i==null||i===hh?(t.offset=0,r=4):(t.offset++,r=(t.offset&1)===1?6:4)),s[r]!=null&&s[r].ips.length>0?o=s[r]:o=s[r===4?6:4]):o=s[r],o==null||o.ips.length===0)return n;o.offset==null||o.offset===hh?o.offset=0:o.offset++;let a=o.offset%o.ips.length;return n=o.ips[a]??null,n==null?n:Date.now()-n.timestamp>n.ttl?(o.ips.splice(a,1),this.pick(A,t,r)):n}setRecords(A,t){let r=Date.now(),n={records:{4:null,6:null}};for(let s of t){s.timestamp=r,typeof s.ttl=="number"?s.ttl=Math.min(s.ttl,this.#e):s.ttl=this.#e;let i=n.records[s.family]??{ips:[]};i.ips.push(s),n.records[s.family]=i}this.#t.set(A.hostname,n)}getHandler(A,t){return new ig(this,A,t)}},ig=class extends nR{#e=null;#A=null;#t=null;#s=null;#n=null;constructor(A,{origin:t,handler:r,dispatch:n},s){super(r),this.#n=t,this.#s=r,this.#A={...s},this.#e=A,this.#t=n}onError(A){switch(A.code){case"ETIMEDOUT":case"ECONNREFUSED":{if(this.#e.dualStack){this.#e.runLookup(this.#n,this.#A,(t,r)=>{if(t)return this.#s.onError(t);let n={...this.#A,origin:r};this.#t(n,this)});return}this.#s.onError(A);return}case"ENOTFOUND":this.#e.deleteRecord(this.#n);default:this.#s.onError(A);break}}};Ch.exports=e=>{if(e?.maxTTL!=null&&(typeof e?.maxTTL!="number"||e?.maxTTL<0))throw new Sr("Invalid maxTTL. Must be a positive number");if(e?.maxItems!=null&&(typeof e?.maxItems!="number"||e?.maxItems<1))throw new Sr("Invalid maxItems. Must be a positive number and greater than zero");if(e?.affinity!=null&&e?.affinity!==4&&e?.affinity!==6)throw new Sr("Invalid affinity. Must be either 4 or 6");if(e?.dualStack!=null&&typeof e?.dualStack!="boolean")throw new Sr("Invalid dualStack. Must be a boolean");if(e?.lookup!=null&&typeof e?.lookup!="function")throw new Sr("Invalid lookup. Must be a function");if(e?.pick!=null&&typeof e?.pick!="function")throw new Sr("Invalid pick. Must be a function");let A=e?.dualStack??!0,t;A?t=e?.affinity??null:t=e?.affinity??4;let r={maxTTL:e?.maxTTL??1e4,lookup:e?.lookup??null,pick:e?.pick??null,dualStack:A,affinity:t,maxItems:e?.maxItems??1/0},n=new sg(r);return s=>function(o,a){let g=o.origin.constructor===URL?o.origin:new URL(o.origin);return tR(g.hostname)!==0?s(o,a):(n.runLookup(g,o,(l,c)=>{if(l)return a.onError(l);let Q=null;Q={...o,servername:g.hostname,origin:c,headers:{host:g.hostname,...o.headers}},s(Q,n.getHandler({origin:g,dispatch:s,handler:a},o))}),!0)}}});var xt=p((GY,kh)=>{"use strict";var{kConstruct:iR}=Qe(),{kEnumerableProperty:Nr}=v(),{iteratorMixin:oR,isValidHeaderName:Yn,isValidHeaderValue:wh}=Oe(),{webidl:z}=Se(),og=y("node:assert"),pi=y("node:util"),ye=Symbol("headers map"),Ke=Symbol("headers map sorted");function dh(e){return e===10||e===13||e===9||e===32}function yh(e){let A=0,t=e.length;for(;t>A&&dh(e.charCodeAt(t-1));)--t;for(;t>A&&dh(e.charCodeAt(A));)++A;return A===0&&t===e.length?e:e.substring(A,t)}function ph(e,A){if(Array.isArray(A))for(let t=0;t<A.length;++t){let r=A[t];if(r.length!==2)throw z.errors.exception({header:"Headers constructor",message:`expected name/value pair to be length 2, found ${r.length}.`});ag(e,r[0],r[1])}else if(typeof A=="object"&&A!==null){let t=Object.keys(A);for(let r=0;r<t.length;++r)ag(e,t[r],A[t[r]])}else throw z.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence<sequence<ByteString>>","record<ByteString, ByteString>"]})}function ag(e,A,t){if(t=yh(t),Yn(A)){if(!wh(t))throw z.errors.invalidArgument({prefix:"Headers.append",value:t,type:"header value"})}else throw z.errors.invalidArgument({prefix:"Headers.append",value:A,type:"header name"});if(Dh(e)==="immutable")throw new TypeError("immutable");return cg(e).append(A,t,!1)}function mh(e,A){return e[0]<A[0]?-1:1}var mi=class e{cookies=null;constructor(A){A instanceof e?(this[ye]=new Map(A[ye]),this[Ke]=A[Ke],this.cookies=A.cookies===null?null:[...A.cookies]):(this[ye]=new Map(A),this[Ke]=null)}contains(A,t){return this[ye].has(t?A:A.toLowerCase())}clear(){this[ye].clear(),this[Ke]=null,this.cookies=null}append(A,t,r){this[Ke]=null;let n=r?A:A.toLowerCase(),s=this[ye].get(n);if(s){let i=n==="cookie"?"; ":", ";this[ye].set(n,{name:s.name,value:`${s.value}${i}${t}`})}else this[ye].set(n,{name:A,value:t});n==="set-cookie"&&(this.cookies??=[]).push(t)}set(A,t,r){this[Ke]=null;let n=r?A:A.toLowerCase();n==="set-cookie"&&(this.cookies=[t]),this[ye].set(n,{name:A,value:t})}delete(A,t){this[Ke]=null,t||(A=A.toLowerCase()),A==="set-cookie"&&(this.cookies=null),this[ye].delete(A)}get(A,t){return this[ye].get(t?A:A.toLowerCase())?.value??null}*[Symbol.iterator](){for(let{0:A,1:{value:t}}of this[ye])yield[A,t]}get entries(){let A={};if(this[ye].size!==0)for(let{name:t,value:r}of this[ye].values())A[t]=r;return A}rawValues(){return this[ye].values()}get entriesList(){let A=[];if(this[ye].size!==0)for(let{0:t,1:{name:r,value:n}}of this[ye])if(t==="set-cookie")for(let s of this.cookies)A.push([r,s]);else A.push([r,n]);return A}toSortedArray(){let A=this[ye].size,t=new Array(A);if(A<=32){if(A===0)return t;let r=this[ye][Symbol.iterator](),n=r.next().value;t[0]=[n[0],n[1].value],og(n[1].value!==null);for(let s=1,i=0,o=0,a=0,g=0,l,c;s<A;++s){for(c=r.next().value,l=t[s]=[c[0],c[1].value],og(l[1]!==null),a=0,o=s;a<o;)g=a+(o-a>>1),t[g][0]<=l[0]?a=g+1:o=g;if(s!==g){for(i=s;i>a;)t[i]=t[--i];t[a]=l}}if(!r.next().done)throw new TypeError("Unreachable");return t}else{let r=0;for(let{0:n,1:{value:s}}of this[ye])t[r++]=[n,s],og(s!==null);return t.sort(mh)}}},IA=class e{#e;#A;constructor(A=void 0){z.util.markAsUncloneable(this),A!==iR&&(this.#A=new mi,this.#e="none",A!==void 0&&(A=z.converters.HeadersInit(A,"Headers contructor","init"),ph(this,A)))}append(A,t){z.brandCheck(this,e),z.argumentLengthCheck(arguments,2,"Headers.append");let r="Headers.append";return A=z.converters.ByteString(A,r,"name"),t=z.converters.ByteString(t,r,"value"),ag(this,A,t)}delete(A){if(z.brandCheck(this,e),z.argumentLengthCheck(arguments,1,"Headers.delete"),A=z.converters.ByteString(A,"Headers.delete","name"),!Yn(A))throw z.errors.invalidArgument({prefix:"Headers.delete",value:A,type:"header name"});if(this.#e==="immutable")throw new TypeError("immutable");this.#A.contains(A,!1)&&this.#A.delete(A,!1)}get(A){z.brandCheck(this,e),z.argumentLengthCheck(arguments,1,"Headers.get");let t="Headers.get";if(A=z.converters.ByteString(A,t,"name"),!Yn(A))throw z.errors.invalidArgument({prefix:t,value:A,type:"header name"});return this.#A.get(A,!1)}has(A){z.brandCheck(this,e),z.argumentLengthCheck(arguments,1,"Headers.has");let t="Headers.has";if(A=z.converters.ByteString(A,t,"name"),!Yn(A))throw z.errors.invalidArgument({prefix:t,value:A,type:"header name"});return this.#A.contains(A,!1)}set(A,t){z.brandCheck(this,e),z.argumentLengthCheck(arguments,2,"Headers.set");let r="Headers.set";if(A=z.converters.ByteString(A,r,"name"),t=z.converters.ByteString(t,r,"value"),t=yh(t),Yn(A)){if(!wh(t))throw z.errors.invalidArgument({prefix:r,value:t,type:"header value"})}else throw z.errors.invalidArgument({prefix:r,value:A,type:"header name"});if(this.#e==="immutable")throw new TypeError("immutable");this.#A.set(A,t,!1)}getSetCookie(){z.brandCheck(this,e);let A=this.#A.cookies;return A?[...A]:[]}get[Ke](){if(this.#A[Ke])return this.#A[Ke];let A=[],t=this.#A.toSortedArray(),r=this.#A.cookies;if(r===null||r.length===1)return this.#A[Ke]=t;for(let n=0;n<t.length;++n){let{0:s,1:i}=t[n];if(s==="set-cookie")for(let o=0;o<r.length;++o)A.push([s,r[o]]);else A.push([s,i])}return this.#A[Ke]=A}[pi.inspect.custom](A,t){return t.depth??=A,`Headers ${pi.formatWithOptions(t,this.#A.entries)}`}static getHeadersGuard(A){return A.#e}static setHeadersGuard(A,t){A.#e=t}static getHeadersList(A){return A.#A}static setHeadersList(A,t){A.#A=t}},{getHeadersGuard:Dh,setHeadersGuard:aR,getHeadersList:cg,setHeadersList:cR}=IA;Reflect.deleteProperty(IA,"getHeadersGuard");Reflect.deleteProperty(IA,"setHeadersGuard");Reflect.deleteProperty(IA,"getHeadersList");Reflect.deleteProperty(IA,"setHeadersList");oR("Headers",IA,Ke,0,1);Object.defineProperties(IA.prototype,{append:Nr,delete:Nr,get:Nr,has:Nr,set:Nr,getSetCookie:Nr,[Symbol.toStringTag]:{value:"Headers",configurable:!0},[pi.inspect.custom]:{enumerable:!1}});z.converters.HeadersInit=function(e,A,t){if(z.util.Type(e)==="Object"){let r=Reflect.get(e,Symbol.iterator);if(!pi.types.isProxy(e)&&r===IA.prototype.entries)try{return cg(e).entriesList}catch{}return typeof r=="function"?z.converters["sequence<sequence<ByteString>>"](e,A,t,r.bind(e)):z.converters["record<ByteString, ByteString>"](e,A,t)}throw z.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence<sequence<ByteString>>","record<ByteString, ByteString>"]})};kh.exports={fill:ph,compareHeaderName:mh,Headers:IA,HeadersList:mi,getHeadersGuard:Dh,setHeadersGuard:aR,setHeadersList:cR,getHeadersList:cg}});var Jn=p((JY,Gh)=>{"use strict";var{Headers:Mh,HeadersList:bh,fill:gR,getHeadersGuard:lR,setHeadersGuard:Uh,setHeadersList:Lh}=xt(),{extractBody:Fh,cloneBody:QR,mixinBody:ER,hasFinalizationRegistry:Th,streamRegistry:xh,bodyUnusable:BR}=gr(),gg=v(),Rh=y("node:util"),{kEnumerableProperty:Xe}=gg,{isValidReasonPhrase:uR,isCancelled:IR,isAborted:hR,isBlobLike:CR,serializeJavascriptValueToJSONString:fR,isErrorLike:dR,isomorphicEncode:wR,environmentSettingsObject:yR}=Oe(),{redirectStatusSet:pR,nullBodyStatus:mR}=cn(),{kState:Be,kHeaders:zA}=jA(),{webidl:V}=Se(),{FormData:DR}=un(),{URLSerializer:Sh}=He(),{kConstruct:ki}=Qe(),lg=y("node:assert"),{types:kR}=y("node:util"),bR=new TextEncoder("utf-8"),Yt=class e{static error(){return Gn(bi(),"immutable")}static json(A,t={}){V.argumentLengthCheck(arguments,1,"Response.json"),t!==null&&(t=V.converters.ResponseInit(t));let r=bR.encode(fR(A)),n=Fh(r),s=Gn(Mr({}),"response");return Nh(s,t,{body:n[0],type:"application/json"}),s}static redirect(A,t=302){V.argumentLengthCheck(arguments,1,"Response.redirect"),A=V.converters.USVString(A),t=V.converters["unsigned short"](t);let r;try{r=new URL(A,yR.settingsObject.baseUrl)}catch(i){throw new TypeError(`Failed to parse URL from ${A}`,{cause:i})}if(!pR.has(t))throw new RangeError(`Invalid status code ${t}`);let n=Gn(Mr({}),"immutable");n[Be].status=t;let s=wR(Sh(r));return n[Be].headersList.append("location",s,!0),n}constructor(A=null,t={}){if(V.util.markAsUncloneable(this),A===ki)return;A!==null&&(A=V.converters.BodyInit(A)),t=V.converters.ResponseInit(t),this[Be]=Mr({}),this[zA]=new Mh(ki),Uh(this[zA],"response"),Lh(this[zA],this[Be].headersList);let r=null;if(A!=null){let[n,s]=Fh(A);r={body:n,type:s}}Nh(this,t,r)}get type(){return V.brandCheck(this,e),this[Be].type}get url(){V.brandCheck(this,e);let A=this[Be].urlList,t=A[A.length-1]??null;return t===null?"":Sh(t,!0)}get redirected(){return V.brandCheck(this,e),this[Be].urlList.length>1}get status(){return V.brandCheck(this,e),this[Be].status}get ok(){return V.brandCheck(this,e),this[Be].status>=200&&this[Be].status<=299}get statusText(){return V.brandCheck(this,e),this[Be].statusText}get headers(){return V.brandCheck(this,e),this[zA]}get body(){return V.brandCheck(this,e),this[Be].body?this[Be].body.stream:null}get bodyUsed(){return V.brandCheck(this,e),!!this[Be].body&&gg.isDisturbed(this[Be].body.stream)}clone(){if(V.brandCheck(this,e),BR(this))throw V.errors.exception({header:"Response.clone",message:"Body has already been consumed."});let A=Qg(this[Be]);return Th&&this[Be].body?.stream&&xh.register(this,new WeakRef(this[Be].body.stream)),Gn(A,lR(this[zA]))}[Rh.inspect.custom](A,t){t.depth===null&&(t.depth=2),t.colors??=!0;let r={status:this.status,statusText:this.statusText,headers:this.headers,body:this.body,bodyUsed:this.bodyUsed,ok:this.ok,redirected:this.redirected,type:this.type,url:this.url};return`Response ${Rh.formatWithOptions(t,r)}`}};ER(Yt);Object.defineProperties(Yt.prototype,{type:Xe,url:Xe,status:Xe,ok:Xe,redirected:Xe,statusText:Xe,headers:Xe,clone:Xe,body:Xe,bodyUsed:Xe,[Symbol.toStringTag]:{value:"Response",configurable:!0}});Object.defineProperties(Yt,{json:Xe,redirect:Xe,error:Xe});function Qg(e){if(e.internalResponse)return Yh(Qg(e.internalResponse),e.type);let A=Mr({...e,body:null});return e.body!=null&&(A.body=QR(A,e.body)),A}function Mr(e){return{aborted:!1,rangeRequested:!1,timingAllowPassed:!1,requestIncludesCredentials:!1,type:"default",status:200,timingInfo:null,cacheState:"",statusText:"",...e,headersList:e?.headersList?new bh(e?.headersList):new bh,urlList:e?.urlList?[...e.urlList]:[]}}function bi(e){let A=dR(e);return Mr({type:"error",status:0,error:A?e:new Error(e&&String(e)),aborted:e&&e.name==="AbortError"})}function FR(e){return e.type==="error"&&e.status===0}function Di(e,A){return A={internalResponse:e,...A},new Proxy(e,{get(t,r){return r in A?A[r]:t[r]},set(t,r,n){return lg(!(r in A)),t[r]=n,!0}})}function Yh(e,A){if(A==="basic")return Di(e,{type:"basic",headersList:e.headersList});if(A==="cors")return Di(e,{type:"cors",headersList:e.headersList});if(A==="opaque")return Di(e,{type:"opaque",urlList:Object.freeze([]),status:0,statusText:"",body:null});if(A==="opaqueredirect")return Di(e,{type:"opaqueredirect",status:0,statusText:"",headersList:[],body:null});lg(!1)}function RR(e,A=null){return lg(IR(e)),hR(e)?bi(Object.assign(new DOMException("The operation was aborted.","AbortError"),{cause:A})):bi(Object.assign(new DOMException("Request was cancelled."),{cause:A}))}function Nh(e,A,t){if(A.status!==null&&(A.status<200||A.status>599))throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.');if("statusText"in A&&A.statusText!=null&&!uR(String(A.statusText)))throw new TypeError("Invalid statusText");if("status"in A&&A.status!=null&&(e[Be].status=A.status),"statusText"in A&&A.statusText!=null&&(e[Be].statusText=A.statusText),"headers"in A&&A.headers!=null&&gR(e[zA],A.headers),t){if(mR.includes(e.status))throw V.errors.exception({header:"Response constructor",message:`Invalid response status code ${e.status}`});e[Be].body=t.body,t.type!=null&&!e[Be].headersList.contains("content-type",!0)&&e[Be].headersList.append("content-type",t.type,!0)}}function Gn(e,A){let t=new Yt(ki);return t[Be]=e,t[zA]=new Mh(ki),Lh(t[zA],e.headersList),Uh(t[zA],A),Th&&e.body?.stream&&xh.register(t,new WeakRef(e.body.stream)),t}V.converters.ReadableStream=V.interfaceConverter(ReadableStream);V.converters.FormData=V.interfaceConverter(DR);V.converters.URLSearchParams=V.interfaceConverter(URLSearchParams);V.converters.XMLHttpRequestBodyInit=function(e,A,t){return typeof e=="string"?V.converters.USVString(e,A,t):CR(e)?V.converters.Blob(e,A,t,{strict:!1}):ArrayBuffer.isView(e)||kR.isArrayBuffer(e)?V.converters.BufferSource(e,A,t):gg.isFormDataLike(e)?V.converters.FormData(e,A,t,{strict:!1}):e instanceof URLSearchParams?V.converters.URLSearchParams(e,A,t):V.converters.DOMString(e,A,t)};V.converters.BodyInit=function(e,A,t){return e instanceof ReadableStream?V.converters.ReadableStream(e,A,t):e?.[Symbol.asyncIterator]?e:V.converters.XMLHttpRequestBodyInit(e,A,t)};V.converters.ResponseInit=V.dictionaryConverter([{key:"status",converter:V.converters["unsigned short"],defaultValue:()=>200},{key:"statusText",converter:V.converters.ByteString,defaultValue:()=>""},{key:"headers",converter:V.converters.HeadersInit}]);Gh.exports={isNetworkError:FR,makeNetworkError:bi,makeResponse:Mr,makeAppropriateNetworkError:RR,filterResponse:Yh,Response:Yt,cloneResponse:Qg,fromInnerResponse:Gn}});var vh=p((HY,Vh)=>{"use strict";var{kConnected:Jh,kSize:Hh}=Qe(),Eg=class{constructor(A){this.value=A}deref(){return this.value[Jh]===0&&this.value[Hh]===0?void 0:this.value}},Bg=class{constructor(A){this.finalizer=A}register(A,t){A.on&&A.on("disconnect",()=>{A[Jh]===0&&A[Hh]===0&&this.finalizer(t)})}unregister(A){}};Vh.exports=function(){return process.env.NODE_V8_COVERAGE&&process.version.startsWith("v18")?(process._rawDebug("Using compatibility WeakRef and FinalizationRegistry"),{WeakRef:Eg,FinalizationRegistry:Bg}):{WeakRef,FinalizationRegistry}}});var Ur=p((VY,rC)=>{"use strict";var{extractBody:SR,mixinBody:NR,cloneBody:MR,bodyUnusable:qh}=gr(),{Headers:jh,fill:UR,HeadersList:Ni,setHeadersGuard:Ig,getHeadersGuard:LR,setHeadersList:$h,getHeadersList:Wh}=xt(),{FinalizationRegistry:TR}=vh()(),Ri=v(),Ph=y("node:util"),{isValidHTTPToken:xR,sameOrigin:Oh,environmentSettingsObject:Fi}=Oe(),{forbiddenMethodsSet:YR,corsSafeListedMethodsSet:GR,referrerPolicy:JR,requestRedirect:HR,requestMode:VR,requestCredentials:vR,requestCache:qR,requestDuplex:WR}=cn(),{kEnumerableProperty:pe,normalizedMethodRecordsBase:PR,normalizedMethodRecords:OR}=Ri,{kHeaders:je,kSignal:Si,kState:ce,kDispatcher:ug}=jA(),{webidl:Y}=Se(),{URLSerializer:zR}=He(),{kConstruct:Mi}=Qe(),ZR=y("node:assert"),{getMaxListeners:zh,setMaxListeners:Zh,getEventListeners:_R,defaultMaxListeners:_h}=y("node:events"),KR=Symbol("abortController"),eC=new TR(({signal:e,abort:A})=>{e.removeEventListener("abort",A)}),Ui=new WeakMap;function Kh(e){return A;function A(){let t=e.deref();if(t!==void 0){eC.unregister(A),this.removeEventListener("abort",A),t.abort(this.reason);let r=Ui.get(t.signal);if(r!==void 0){if(r.size!==0){for(let n of r){let s=n.deref();s!==void 0&&s.abort(this.reason)}r.clear()}Ui.delete(t.signal)}}}}var Xh=!1,ct=class e{constructor(A,t={}){if(Y.util.markAsUncloneable(this),A===Mi)return;let r="Request constructor";Y.argumentLengthCheck(arguments,1,r),A=Y.converters.RequestInfo(A,r,"input"),t=Y.converters.RequestInit(t,r,"init");let n=null,s=null,i=Fi.settingsObject.baseUrl,o=null;if(typeof A=="string"){this[ug]=t.dispatcher;let I;try{I=new URL(A,i)}catch(C){throw new TypeError("Failed to parse URL from "+A,{cause:C})}if(I.username||I.password)throw new TypeError("Request cannot be constructed from a URL that includes credentials: "+A);n=Li({urlList:[I]}),s="cors"}else this[ug]=t.dispatcher||A[ug],ZR(A instanceof e),n=A[ce],o=A[Si];let a=Fi.settingsObject.origin,g="client";if(n.window?.constructor?.name==="EnvironmentSettingsObject"&&Oh(n.window,a)&&(g=n.window),t.window!=null)throw new TypeError(`'window' option '${g}' must be null`);"window"in t&&(g="no-window"),n=Li({method:n.method,headersList:n.headersList,unsafeRequest:n.unsafeRequest,client:Fi.settingsObject,window:g,priority:n.priority,origin:n.origin,referrer:n.referrer,referrerPolicy:n.referrerPolicy,mode:n.mode,credentials:n.credentials,cache:n.cache,redirect:n.redirect,integrity:n.integrity,keepalive:n.keepalive,reloadNavigation:n.reloadNavigation,historyNavigation:n.historyNavigation,urlList:[...n.urlList]});let l=Object.keys(t).length!==0;if(l&&(n.mode==="navigate"&&(n.mode="same-origin"),n.reloadNavigation=!1,n.historyNavigation=!1,n.origin="client",n.referrer="client",n.referrerPolicy="",n.url=n.urlList[n.urlList.length-1],n.urlList=[n.url]),t.referrer!==void 0){let I=t.referrer;if(I==="")n.referrer="no-referrer";else{let C;try{C=new URL(I,i)}catch(D){throw new TypeError(`Referrer "${I}" is not a valid URL.`,{cause:D})}C.protocol==="about:"&&C.hostname==="client"||a&&!Oh(C,Fi.settingsObject.baseUrl)?n.referrer="client":n.referrer=C}}t.referrerPolicy!==void 0&&(n.referrerPolicy=t.referrerPolicy);let c;if(t.mode!==void 0?c=t.mode:c=s,c==="navigate")throw Y.errors.exception({header:"Request constructor",message:"invalid request mode navigate."});if(c!=null&&(n.mode=c),t.credentials!==void 0&&(n.credentials=t.credentials),t.cache!==void 0&&(n.cache=t.cache),n.cache==="only-if-cached"&&n.mode!=="same-origin")throw new TypeError("'only-if-cached' can be set only with 'same-origin' mode");if(t.redirect!==void 0&&(n.redirect=t.redirect),t.integrity!=null&&(n.integrity=String(t.integrity)),t.keepalive!==void 0&&(n.keepalive=!!t.keepalive),t.method!==void 0){let I=t.method,C=OR[I];if(C!==void 0)n.method=C;else{if(!xR(I))throw new TypeError(`'${I}' is not a valid HTTP method.`);let D=I.toUpperCase();if(YR.has(D))throw new TypeError(`'${I}' HTTP method is unsupported.`);I=PR[D]??I,n.method=I}!Xh&&n.method==="patch"&&(process.emitWarning("Using `patch` is highly likely to result in a `405 Method Not Allowed`. `PATCH` is much more likely to succeed.",{code:"UNDICI-FETCH-patch"}),Xh=!0)}t.signal!==void 0&&(o=t.signal),this[ce]=n;let Q=new AbortController;if(this[Si]=Q.signal,o!=null){if(!o||typeof o.aborted!="boolean"||typeof o.addEventListener!="function")throw new TypeError("Failed to construct 'Request': member signal is not of type AbortSignal.");if(o.aborted)Q.abort(o.reason);else{this[KR]=Q;let I=new WeakRef(Q),C=Kh(I);try{(typeof zh=="function"&&zh(o)===_h||_R(o,"abort").length>=_h)&&Zh(1500,o)}catch{}Ri.addAbortListener(o,C),eC.register(Q,{signal:o,abort:C},C)}}if(this[je]=new jh(Mi),$h(this[je],n.headersList),Ig(this[je],"request"),c==="no-cors"){if(!GR.has(n.method))throw new TypeError(`'${n.method} is unsupported in no-cors mode.`);Ig(this[je],"request-no-cors")}if(l){let I=Wh(this[je]),C=t.headers!==void 0?t.headers:new Ni(I);if(I.clear(),C instanceof Ni){for(let{name:D,value:f}of C.rawValues())I.append(D,f,!1);I.cookies=C.cookies}else UR(this[je],C)}let B=A instanceof e?A[ce].body:null;if((t.body!=null||B!=null)&&(n.method==="GET"||n.method==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body.");let E=null;if(t.body!=null){let[I,C]=SR(t.body,n.keepalive);E=I,C&&!Wh(this[je]).contains("content-type",!0)&&this[je].append("content-type",C)}let u=E??B;if(u!=null&&u.source==null){if(E!=null&&t.duplex==null)throw new TypeError("RequestInit: duplex option is required when sending a body.");if(n.mode!=="same-origin"&&n.mode!=="cors")throw new TypeError('If request is made from ReadableStream, mode should be "same-origin" or "cors"');n.useCORSPreflightFlag=!0}let h=u;if(E==null&&B!=null){if(qh(A))throw new TypeError("Cannot construct a Request with a Request object that has already been used.");let I=new TransformStream;B.stream.pipeThrough(I),h={source:B.source,length:B.length,stream:I.readable}}this[ce].body=h}get method(){return Y.brandCheck(this,e),this[ce].method}get url(){return Y.brandCheck(this,e),zR(this[ce].url)}get headers(){return Y.brandCheck(this,e),this[je]}get destination(){return Y.brandCheck(this,e),this[ce].destination}get referrer(){return Y.brandCheck(this,e),this[ce].referrer==="no-referrer"?"":this[ce].referrer==="client"?"about:client":this[ce].referrer.toString()}get referrerPolicy(){return Y.brandCheck(this,e),this[ce].referrerPolicy}get mode(){return Y.brandCheck(this,e),this[ce].mode}get credentials(){return this[ce].credentials}get cache(){return Y.brandCheck(this,e),this[ce].cache}get redirect(){return Y.brandCheck(this,e),this[ce].redirect}get integrity(){return Y.brandCheck(this,e),this[ce].integrity}get keepalive(){return Y.brandCheck(this,e),this[ce].keepalive}get isReloadNavigation(){return Y.brandCheck(this,e),this[ce].reloadNavigation}get isHistoryNavigation(){return Y.brandCheck(this,e),this[ce].historyNavigation}get signal(){return Y.brandCheck(this,e),this[Si]}get body(){return Y.brandCheck(this,e),this[ce].body?this[ce].body.stream:null}get bodyUsed(){return Y.brandCheck(this,e),!!this[ce].body&&Ri.isDisturbed(this[ce].body.stream)}get duplex(){return Y.brandCheck(this,e),"half"}clone(){if(Y.brandCheck(this,e),qh(this))throw new TypeError("unusable");let A=AC(this[ce]),t=new AbortController;if(this.signal.aborted)t.abort(this.signal.reason);else{let r=Ui.get(this.signal);r===void 0&&(r=new Set,Ui.set(this.signal,r));let n=new WeakRef(t);r.add(n),Ri.addAbortListener(t.signal,Kh(n))}return tC(A,t.signal,LR(this[je]))}[Ph.inspect.custom](A,t){t.depth===null&&(t.depth=2),t.colors??=!0;let r={method:this.method,url:this.url,headers:this.headers,destination:this.destination,referrer:this.referrer,referrerPolicy:this.referrerPolicy,mode:this.mode,credentials:this.credentials,cache:this.cache,redirect:this.redirect,integrity:this.integrity,keepalive:this.keepalive,isReloadNavigation:this.isReloadNavigation,isHistoryNavigation:this.isHistoryNavigation,signal:this.signal};return`Request ${Ph.formatWithOptions(t,r)}`}};NR(ct);function Li(e){return{method:e.method??"GET",localURLsOnly:e.localURLsOnly??!1,unsafeRequest:e.unsafeRequest??!1,body:e.body??null,client:e.client??null,reservedClient:e.reservedClient??null,replacesClientId:e.replacesClientId??"",window:e.window??"client",keepalive:e.keepalive??!1,serviceWorkers:e.serviceWorkers??"all",initiator:e.initiator??"",destination:e.destination??"",priority:e.priority??null,origin:e.origin??"client",policyContainer:e.policyContainer??"client",referrer:e.referrer??"client",referrerPolicy:e.referrerPolicy??"",mode:e.mode??"no-cors",useCORSPreflightFlag:e.useCORSPreflightFlag??!1,credentials:e.credentials??"same-origin",useCredentials:e.useCredentials??!1,cache:e.cache??"default",redirect:e.redirect??"follow",integrity:e.integrity??"",cryptoGraphicsNonceMetadata:e.cryptoGraphicsNonceMetadata??"",parserMetadata:e.parserMetadata??"",reloadNavigation:e.reloadNavigation??!1,historyNavigation:e.historyNavigation??!1,userActivation:e.userActivation??!1,taintedOrigin:e.taintedOrigin??!1,redirectCount:e.redirectCount??0,responseTainting:e.responseTainting??"basic",preventNoCacheCacheControlHeaderModification:e.preventNoCacheCacheControlHeaderModification??!1,done:e.done??!1,timingAllowFailed:e.timingAllowFailed??!1,urlList:e.urlList,url:e.urlList[0],headersList:e.headersList?new Ni(e.headersList):new Ni}}function AC(e){let A=Li({...e,body:null});return e.body!=null&&(A.body=MR(A,e.body)),A}function tC(e,A,t){let r=new ct(Mi);return r[ce]=e,r[Si]=A,r[je]=new jh(Mi),$h(r[je],e.headersList),Ig(r[je],t),r}Object.defineProperties(ct.prototype,{method:pe,url:pe,headers:pe,redirect:pe,clone:pe,signal:pe,duplex:pe,destination:pe,body:pe,bodyUsed:pe,isHistoryNavigation:pe,isReloadNavigation:pe,keepalive:pe,integrity:pe,cache:pe,credentials:pe,attribute:pe,referrerPolicy:pe,referrer:pe,mode:pe,[Symbol.toStringTag]:{value:"Request",configurable:!0}});Y.converters.Request=Y.interfaceConverter(ct);Y.converters.RequestInfo=function(e,A,t){return typeof e=="string"?Y.converters.USVString(e,A,t):e instanceof ct?Y.converters.Request(e,A,t):Y.converters.USVString(e,A,t)};Y.converters.AbortSignal=Y.interfaceConverter(AbortSignal);Y.converters.RequestInit=Y.dictionaryConverter([{key:"method",converter:Y.converters.ByteString},{key:"headers",converter:Y.converters.HeadersInit},{key:"body",converter:Y.nullableConverter(Y.converters.BodyInit)},{key:"referrer",converter:Y.converters.USVString},{key:"referrerPolicy",converter:Y.converters.DOMString,allowedValues:JR},{key:"mode",converter:Y.converters.DOMString,allowedValues:VR},{key:"credentials",converter:Y.converters.DOMString,allowedValues:vR},{key:"cache",converter:Y.converters.DOMString,allowedValues:qR},{key:"redirect",converter:Y.converters.DOMString,allowedValues:HR},{key:"integrity",converter:Y.converters.DOMString},{key:"keepalive",converter:Y.converters.boolean},{key:"signal",converter:Y.nullableConverter(e=>Y.converters.AbortSignal(e,"RequestInit","signal",{strict:!1}))},{key:"window",converter:Y.converters.any},{key:"duplex",converter:Y.converters.DOMString,allowedValues:WR},{key:"dispatcher",converter:Y.converters.any}]);rC.exports={Request:ct,makeRequest:Li,fromInnerRequest:tC,cloneRequest:AC}});var Vn=p((vY,CC)=>{"use strict";var{makeNetworkError:Ae,makeAppropriateNetworkError:Ti,filterResponse:hg,makeResponse:xi,fromInnerResponse:XR}=Jn(),{HeadersList:nC}=xt(),{Request:jR,cloneRequest:$R}=Ur(),gt=y("node:zlib"),{bytesMatch:eS,makePolicyContainer:AS,clonePolicyContainer:tS,requestBadPort:rS,TAOCheck:nS,appendRequestOriginHeader:sS,responseLocationURL:iS,requestCurrentURL:MA,setRequestReferrerPolicyOnRedirect:oS,tryUpgradeRequestToAPotentiallyTrustworthyURL:aS,createOpaqueTimingInfo:yg,appendFetchMetadata:cS,corsCheck:gS,crossOriginResourcePolicyCheck:lS,determineRequestsReferrer:QS,coarsenedSharedCurrentTime:Hn,createDeferredPromise:ES,isBlobLike:BS,sameOrigin:wg,isCancelled:Gt,isAborted:sC,isErrorLike:uS,fullyReadBody:IS,readableStreamClose:hS,isomorphicEncode:Yi,urlIsLocal:CS,urlIsHttpHttpsScheme:pg,urlHasHttpsScheme:fS,clampAndCoarsenConnectionTimingInfo:dS,simpleRangeHeaderValue:wS,buildContentRange:yS,createInflate:pS,extractMimeType:mS}=Oe(),{kState:cC,kDispatcher:DS}=jA(),Jt=y("node:assert"),{safelyExtractBody:mg,extractBody:iC}=gr(),{redirectStatusSet:gC,nullBodyStatus:lC,safeMethodsSet:kS,requestBodyHeader:bS,subresourceSet:FS}=cn(),RS=y("node:events"),{Readable:SS,pipeline:NS,finished:MS}=y("node:stream"),{addAbortListener:US,isErrored:LS,isReadable:Gi,bufferToLowerCasedHeaderName:oC}=v(),{dataURLProcessor:TS,serializeAMimeType:xS,minimizeSupportedMimeType:YS}=He(),{getGlobalDispatcher:GS}=wi(),{webidl:JS}=Se(),{STATUS_CODES:HS}=y("node:http"),VS=["GET","HEAD"],vS=typeof __UNDICI_IS_NODE__<"u"||typeof esbuildDetection<"u"?"node":"undici",Cg,Ji=class extends RS{constructor(A){super(),this.dispatcher=A,this.connection=null,this.dump=!1,this.state="ongoing"}terminate(A){this.state==="ongoing"&&(this.state="terminated",this.connection?.destroy(A),this.emit("terminated",A))}abort(A){this.state==="ongoing"&&(this.state="aborted",A||(A=new DOMException("The operation was aborted.","AbortError")),this.serializedAbortReason=A,this.connection?.destroy(A),this.emit("terminated",A))}};function qS(e){QC(e,"fetch")}function WS(e,A=void 0){JS.argumentLengthCheck(arguments,1,"globalThis.fetch");let t=ES(),r;try{r=new jR(e,A)}catch(l){return t.reject(l),t.promise}let n=r[cC];if(r.signal.aborted)return fg(t,n,null,r.signal.reason),t.promise;n.client.globalObject?.constructor?.name==="ServiceWorkerGlobalScope"&&(n.serviceWorkers="none");let i=null,o=!1,a=null;return US(r.signal,()=>{o=!0,Jt(a!=null),a.abort(r.signal.reason);let l=i?.deref();fg(t,n,l,r.signal.reason)}),a=BC({request:n,processResponseEndOfBody:qS,processResponse:l=>{if(!o){if(l.aborted){fg(t,n,i,a.serializedAbortReason);return}if(l.type==="error"){t.reject(new TypeError("fetch failed",{cause:l.error}));return}i=new WeakRef(XR(l,"immutable")),t.resolve(i.deref()),t=null}},dispatcher:r[DS]}),t.promise}function QC(e,A="other"){if(e.type==="error"&&e.aborted||!e.urlList?.length)return;let t=e.urlList[0],r=e.timingInfo,n=e.cacheState;pg(t)&&r!==null&&(e.timingAllowPassed||(r=yg({startTime:r.startTime}),n=""),r.endTime=Hn(),e.timingInfo=r,EC(r,t.href,A,globalThis,n))}var EC=performance.markResourceTiming;function fg(e,A,t,r){if(e&&e.reject(r),A.body!=null&&Gi(A.body?.stream)&&A.body.stream.cancel(r).catch(s=>{if(s.code!=="ERR_INVALID_STATE")throw s}),t==null)return;let n=t[cC];n.body!=null&&Gi(n.body?.stream)&&n.body.stream.cancel(r).catch(s=>{if(s.code!=="ERR_INVALID_STATE")throw s})}function BC({request:e,processRequestBodyChunkLength:A,processRequestEndOfBody:t,processResponse:r,processResponseEndOfBody:n,processResponseConsumeBody:s,useParallelQueue:i=!1,dispatcher:o=GS()}){Jt(o);let a=null,g=!1;e.client!=null&&(a=e.client.globalObject,g=e.client.crossOriginIsolatedCapability);let l=Hn(g),c=yg({startTime:l}),Q={controller:new Ji(o),request:e,timingInfo:c,processRequestBodyChunkLength:A,processRequestEndOfBody:t,processResponse:r,processResponseConsumeBody:s,processResponseEndOfBody:n,taskDestination:a,crossOriginIsolatedCapability:g};return Jt(!e.body||e.body.stream),e.window==="client"&&(e.window=e.client?.globalObject?.constructor?.name==="Window"?e.client:"no-window"),e.origin==="client"&&(e.origin=e.client.origin),e.policyContainer==="client"&&(e.client!=null?e.policyContainer=tS(e.client.policyContainer):e.policyContainer=AS()),e.headersList.contains("accept",!0)||e.headersList.append("accept","*/*",!0),e.headersList.contains("accept-language",!0)||e.headersList.append("accept-language","*",!0),e.priority,FS.has(e.destination),uC(Q).catch(B=>{Q.controller.terminate(B)}),Q.controller}async function uC(e,A=!1){let t=e.request,r=null;if(t.localURLsOnly&&!CS(MA(t))&&(r=Ae("local URLs only")),aS(t),rS(t)==="blocked"&&(r=Ae("bad port")),t.referrerPolicy===""&&(t.referrerPolicy=t.policyContainer.referrerPolicy),t.referrer!=="no-referrer"&&(t.referrer=QS(t)),r===null&&(r=await(async()=>{let s=MA(t);return wg(s,t.url)&&t.responseTainting==="basic"||s.protocol==="data:"||t.mode==="navigate"||t.mode==="websocket"?(t.responseTainting="basic",await aC(e)):t.mode==="same-origin"?Ae('request mode cannot be "same-origin"'):t.mode==="no-cors"?t.redirect!=="follow"?Ae('redirect mode cannot be "follow" for "no-cors" request'):(t.responseTainting="opaque",await aC(e)):pg(MA(t))?(t.responseTainting="cors",await IC(e)):Ae("URL scheme must be a HTTP(S) scheme")})()),A)return r;r.status!==0&&!r.internalResponse&&(t.responseTainting,t.responseTainting==="basic"?r=hg(r,"basic"):t.responseTainting==="cors"?r=hg(r,"cors"):t.responseTainting==="opaque"?r=hg(r,"opaque"):Jt(!1));let n=r.status===0?r:r.internalResponse;if(n.urlList.length===0&&n.urlList.push(...t.urlList),t.timingAllowFailed||(r.timingAllowPassed=!0),r.type==="opaque"&&n.status===206&&n.rangeRequested&&!t.headers.contains("range",!0)&&(r=n=Ae()),r.status!==0&&(t.method==="HEAD"||t.method==="CONNECT"||lC.includes(n.status))&&(n.body=null,e.controller.dump=!0),t.integrity){let s=o=>dg(e,Ae(o));if(t.responseTainting==="opaque"||r.body==null){s(r.error);return}let i=o=>{if(!eS(o,t.integrity)){s("integrity mismatch");return}r.body=mg(o)[0],dg(e,r)};await IS(r.body,i,s)}else dg(e,r)}function aC(e){if(Gt(e)&&e.request.redirectCount===0)return Promise.resolve(Ti(e));let{request:A}=e,{protocol:t}=MA(A);switch(t){case"about:":return Promise.resolve(Ae("about scheme is not supported"));case"blob:":{Cg||(Cg=y("node:buffer").resolveObjectURL);let r=MA(A);if(r.search.length!==0)return Promise.resolve(Ae("NetworkError when attempting to fetch resource."));let n=Cg(r.toString());if(A.method!=="GET"||!BS(n))return Promise.resolve(Ae("invalid method"));let s=xi(),i=n.size,o=Yi(`${i}`),a=n.type;if(A.headersList.contains("range",!0)){s.rangeRequested=!0;let g=A.headersList.get("range",!0),l=wS(g,!0);if(l==="failure")return Promise.resolve(Ae("failed to fetch the data URL"));let{rangeStartValue:c,rangeEndValue:Q}=l;if(c===null)c=i-Q,Q=c+Q-1;else{if(c>=i)return Promise.resolve(Ae("Range start is greater than the blob's size."));(Q===null||Q>=i)&&(Q=i-1)}let B=n.slice(c,Q,a),E=iC(B);s.body=E[0];let u=Yi(`${B.size}`),h=yS(c,Q,i);s.status=206,s.statusText="Partial Content",s.headersList.set("content-length",u,!0),s.headersList.set("content-type",a,!0),s.headersList.set("content-range",h,!0)}else{let g=iC(n);s.statusText="OK",s.body=g[0],s.headersList.set("content-length",o,!0),s.headersList.set("content-type",a,!0)}return Promise.resolve(s)}case"data:":{let r=MA(A),n=TS(r);if(n==="failure")return Promise.resolve(Ae("failed to fetch the data URL"));let s=xS(n.mimeType);return Promise.resolve(xi({statusText:"OK",headersList:[["content-type",{name:"Content-Type",value:s}]],body:mg(n.body)[0]}))}case"file:":return Promise.resolve(Ae("not implemented... yet..."));case"http:":case"https:":return IC(e).catch(r=>Ae(r));default:return Promise.resolve(Ae("unknown scheme"))}}function PS(e,A){e.request.done=!0,e.processResponseDone!=null&&queueMicrotask(()=>e.processResponseDone(A))}function dg(e,A){let t=e.timingInfo,r=()=>{let s=Date.now();e.request.destination==="document"&&(e.controller.fullTimingInfo=t),e.controller.reportTimingSteps=()=>{if(e.request.url.protocol!=="https:")return;t.endTime=s;let o=A.cacheState,a=A.bodyInfo;A.timingAllowPassed||(t=yg(t),o="");let g=0;if(e.request.mode!=="navigator"||!A.hasCrossOriginRedirects){g=A.status;let l=mS(A.headersList);l!=="failure"&&(a.contentType=YS(l))}e.request.initiatorType!=null&&EC(t,e.request.url.href,e.request.initiatorType,globalThis,o,a,g)};let i=()=>{e.request.done=!0,e.processResponseEndOfBody!=null&&queueMicrotask(()=>e.processResponseEndOfBody(A)),e.request.initiatorType!=null&&e.controller.reportTimingSteps()};queueMicrotask(()=>i())};e.processResponse!=null&&queueMicrotask(()=>{e.processResponse(A),e.processResponse=null});let n=A.type==="error"?A:A.internalResponse??A;n.body==null?r():MS(n.body.stream,()=>{r()})}async function IC(e){let A=e.request,t=null,r=null,n=e.timingInfo;if(A.serviceWorkers,t===null){if(A.redirect==="follow"&&(A.serviceWorkers="none"),r=t=await hC(e),A.responseTainting==="cors"&&gS(A,t)==="failure")return Ae("cors failure");nS(A,t)==="failure"&&(A.timingAllowFailed=!0)}return(A.responseTainting==="opaque"||t.type==="opaque")&&lS(A.origin,A.client,A.destination,r)==="blocked"?Ae("blocked"):(gC.has(r.status)&&(A.redirect!=="manual"&&e.controller.connection.destroy(void 0,!1),A.redirect==="error"?t=Ae("unexpected redirect"):A.redirect==="manual"?t=r:A.redirect==="follow"?t=await OS(e,t):Jt(!1)),t.timingInfo=n,t)}function OS(e,A){let t=e.request,r=A.internalResponse?A.internalResponse:A,n;try{if(n=iS(r,MA(t).hash),n==null)return A}catch(i){return Promise.resolve(Ae(i))}if(!pg(n))return Promise.resolve(Ae("URL scheme must be a HTTP(S) scheme"));if(t.redirectCount===20)return Promise.resolve(Ae("redirect count exceeded"));if(t.redirectCount+=1,t.mode==="cors"&&(n.username||n.password)&&!wg(t,n))return Promise.resolve(Ae('cross origin not allowed for request mode "cors"'));if(t.responseTainting==="cors"&&(n.username||n.password))return Promise.resolve(Ae('URL cannot contain credentials for request mode "cors"'));if(r.status!==303&&t.body!=null&&t.body.source==null)return Promise.resolve(Ae());if([301,302].includes(r.status)&&t.method==="POST"||r.status===303&&!VS.includes(t.method)){t.method="GET",t.body=null;for(let i of bS)t.headersList.delete(i)}wg(MA(t),n)||(t.headersList.delete("authorization",!0),t.headersList.delete("proxy-authorization",!0),t.headersList.delete("cookie",!0),t.headersList.delete("host",!0)),t.body!=null&&(Jt(t.body.source!=null),t.body=mg(t.body.source)[0]);let s=e.timingInfo;return s.redirectEndTime=s.postRedirectStartTime=Hn(e.crossOriginIsolatedCapability),s.redirectStartTime===0&&(s.redirectStartTime=s.startTime),t.urlList.push(n),oS(t,r),uC(e,!0)}async function hC(e,A=!1,t=!1){let r=e.request,n=null,s=null,i=null,o=null,a=!1;r.window==="no-window"&&r.redirect==="error"?(n=e,s=r):(s=$R(r),n={...e},n.request=s);let g=r.credentials==="include"||r.credentials==="same-origin"&&r.responseTainting==="basic",l=s.body?s.body.length:null,c=null;if(s.body==null&&["POST","PUT"].includes(s.method)&&(c="0"),l!=null&&(c=Yi(`${l}`)),c!=null&&s.headersList.append("content-length",c,!0),l!=null&&s.keepalive,s.referrer instanceof URL&&s.headersList.append("referer",Yi(s.referrer.href),!0),sS(s),cS(s),s.headersList.contains("user-agent",!0)||s.headersList.append("user-agent",vS),s.cache==="default"&&(s.headersList.contains("if-modified-since",!0)||s.headersList.contains("if-none-match",!0)||s.headersList.contains("if-unmodified-since",!0)||s.headersList.contains("if-match",!0)||s.headersList.contains("if-range",!0))&&(s.cache="no-store"),s.cache==="no-cache"&&!s.preventNoCacheCacheControlHeaderModification&&!s.headersList.contains("cache-control",!0)&&s.headersList.append("cache-control","max-age=0",!0),(s.cache==="no-store"||s.cache==="reload")&&(s.headersList.contains("pragma",!0)||s.headersList.append("pragma","no-cache",!0),s.headersList.contains("cache-control",!0)||s.headersList.append("cache-control","no-cache",!0)),s.headersList.contains("range",!0)&&s.headersList.append("accept-encoding","identity",!0),s.headersList.contains("accept-encoding",!0)||(fS(MA(s))?s.headersList.append("accept-encoding","br, gzip, deflate",!0):s.headersList.append("accept-encoding","gzip, deflate",!0)),s.headersList.delete("host",!0),o==null&&(s.cache="no-store"),s.cache!=="no-store"&&s.cache,i==null){if(s.cache==="only-if-cached")return Ae("only if cached");let Q=await zS(n,g,t);!kS.has(s.method)&&Q.status>=200&&Q.status<=399,a&&Q.status,i==null&&(i=Q)}if(i.urlList=[...s.urlList],s.headersList.contains("range",!0)&&(i.rangeRequested=!0),i.requestIncludesCredentials=g,i.status===407)return r.window==="no-window"?Ae():Gt(e)?Ti(e):Ae("proxy authentication required");if(i.status===421&&!t&&(r.body==null||r.body.source!=null)){if(Gt(e))return Ti(e);e.controller.connection.destroy(),i=await hC(e,A,!0)}return i}async function zS(e,A=!1,t=!1){Jt(!e.controller.connection||e.controller.connection.destroyed),e.controller.connection={abort:null,destroyed:!1,destroy(E,u=!0){this.destroyed||(this.destroyed=!0,u&&this.abort?.(E??new DOMException("The operation was aborted.","AbortError")))}};let r=e.request,n=null,s=e.timingInfo;null==null&&(r.cache="no-store");let o=t?"yes":"no";r.mode;let a=null;if(r.body==null&&e.processRequestEndOfBody)queueMicrotask(()=>e.processRequestEndOfBody());else if(r.body!=null){let E=async function*(I){Gt(e)||(yield I,e.processRequestBodyChunkLength?.(I.byteLength))},u=()=>{Gt(e)||e.processRequestEndOfBody&&e.processRequestEndOfBody()},h=I=>{Gt(e)||(I.name==="AbortError"?e.controller.abort():e.controller.terminate(I))};a=(async function*(){try{for await(let I of r.body.stream)yield*E(I);u()}catch(I){h(I)}})()}try{let{body:E,status:u,statusText:h,headersList:I,socket:C}=await B({body:a});if(C)n=xi({status:u,statusText:h,headersList:I,socket:C});else{let D=E[Symbol.asyncIterator]();e.controller.next=()=>D.next(),n=xi({status:u,statusText:h,headersList:I})}}catch(E){return E.name==="AbortError"?(e.controller.connection.destroy(),Ti(e,E)):Ae(E)}let g=async()=>{await e.controller.resume()},l=E=>{Gt(e)||e.controller.abort(E)},c=new ReadableStream({async start(E){e.controller.controller=E},async pull(E){await g(E)},async cancel(E){await l(E)},type:"bytes"});n.body={stream:c,source:null,length:null},e.controller.onAborted=Q,e.controller.on("terminated",Q),e.controller.resume=async()=>{for(;;){let E,u;try{let{done:I,value:C}=await e.controller.next();if(sC(e))break;E=I?void 0:C}catch(I){e.controller.ended&&!s.encodedBodySize?E=void 0:(E=I,u=!0)}if(E===void 0){hS(e.controller.controller),PS(e,n);return}if(s.decodedBodySize+=E?.byteLength??0,u){e.controller.terminate(E);return}let h=new Uint8Array(E);if(h.byteLength&&e.controller.controller.enqueue(h),LS(c)){e.controller.terminate();return}if(e.controller.controller.desiredSize<=0)return}};function Q(E){sC(e)?(n.aborted=!0,Gi(c)&&e.controller.controller.error(e.controller.serializedAbortReason)):Gi(c)&&e.controller.controller.error(new TypeError("terminated",{cause:uS(E)?E:void 0})),e.controller.connection.destroy()}return n;function B({body:E}){let u=MA(r),h=e.controller.dispatcher;return new Promise((I,C)=>h.dispatch({path:u.pathname+u.search,origin:u.origin,method:r.method,body:h.isMockActive?r.body&&(r.body.source||r.body.stream):E,headers:r.headersList.entries,maxRedirections:0,upgrade:r.mode==="websocket"?"websocket":void 0},{body:null,abort:null,onConnect(D){let{connection:f}=e.controller;s.finalConnectionTimingInfo=dS(void 0,s.postRedirectStartTime,e.crossOriginIsolatedCapability),f.destroyed?D(new DOMException("The operation was aborted.","AbortError")):(e.controller.on("terminated",D),this.abort=f.abort=D),s.finalNetworkRequestStartTime=Hn(e.crossOriginIsolatedCapability)},onResponseStarted(){s.finalNetworkResponseStartTime=Hn(e.crossOriginIsolatedCapability)},onHeaders(D,f,R,S){if(D<200)return;let d="",se=new nC;for(let w=0;w<f.length;w+=2)se.append(oC(f[w]),f[w+1].toString("latin1"),!0);d=se.get("location",!0),this.body=new SS({read:R});let ke=[],Le=d&&r.redirect==="follow"&&gC.has(D);if(r.method!=="HEAD"&&r.method!=="CONNECT"&&!lC.includes(D)&&!Le){let w=se.get("content-encoding",!0),H=w?w.toLowerCase().split(","):[],q=5;if(H.length>q)return C(new Error(`too many content-encodings in response: ${H.length}, maximum allowed is ${q}`)),!0;for(let ee=H.length-1;ee>=0;--ee){let j=H[ee].trim();if(j==="x-gzip"||j==="gzip")ke.push(gt.createGunzip({flush:gt.constants.Z_SYNC_FLUSH,finishFlush:gt.constants.Z_SYNC_FLUSH}));else if(j==="deflate")ke.push(pS({flush:gt.constants.Z_SYNC_FLUSH,finishFlush:gt.constants.Z_SYNC_FLUSH}));else if(j==="br")ke.push(gt.createBrotliDecompress({flush:gt.constants.BROTLI_OPERATION_FLUSH,finishFlush:gt.constants.BROTLI_OPERATION_FLUSH}));else{ke.length=0;break}}}let me=this.onError.bind(this);return I({status:D,statusText:S,headersList:se,body:ke.length?NS(this.body,...ke,w=>{w&&this.onError(w)}).on("error",me):this.body.on("error",me)}),!0},onData(D){if(e.controller.dump)return;let f=D;return s.encodedBodySize+=f.byteLength,this.body.push(f)},onComplete(){this.abort&&e.controller.off("terminated",this.abort),e.controller.onAborted&&e.controller.off("terminated",e.controller.onAborted),e.controller.ended=!0,this.body.push(null)},onError(D){this.abort&&e.controller.off("terminated",this.abort),this.body?.destroy(D),e.controller.terminate(D),C(D)},onUpgrade(D,f,R){if(D!==101)return;let S=new nC;for(let d=0;d<f.length;d+=2)S.append(oC(f[d]),f[d+1].toString("latin1"),!0);return I({status:D,statusText:HS[D],headersList:S,socket:R}),!0}}))}}CC.exports={fetch:WS,Fetch:Ji,fetching:BC,finalizeAndReportTiming:QC}});var Dg=p((qY,fC)=>{"use strict";fC.exports={kState:Symbol("FileReader state"),kResult:Symbol("FileReader result"),kError:Symbol("FileReader error"),kLastProgressEventFired:Symbol("FileReader last progress event fired timestamp"),kEvents:Symbol("FileReader events"),kAborted:Symbol("FileReader aborted")}});var wC=p((WY,dC)=>{"use strict";var{webidl:$e}=Se(),Hi=Symbol("ProgressEvent state"),kg=class e extends Event{constructor(A,t={}){A=$e.converters.DOMString(A,"ProgressEvent constructor","type"),t=$e.converters.ProgressEventInit(t??{}),super(A,t),this[Hi]={lengthComputable:t.lengthComputable,loaded:t.loaded,total:t.total}}get lengthComputable(){return $e.brandCheck(this,e),this[Hi].lengthComputable}get loaded(){return $e.brandCheck(this,e),this[Hi].loaded}get total(){return $e.brandCheck(this,e),this[Hi].total}};$e.converters.ProgressEventInit=$e.dictionaryConverter([{key:"lengthComputable",converter:$e.converters.boolean,defaultValue:()=>!1},{key:"loaded",converter:$e.converters["unsigned long long"],defaultValue:()=>0},{key:"total",converter:$e.converters["unsigned long long"],defaultValue:()=>0},{key:"bubbles",converter:$e.converters.boolean,defaultValue:()=>!1},{key:"cancelable",converter:$e.converters.boolean,defaultValue:()=>!1},{key:"composed",converter:$e.converters.boolean,defaultValue:()=>!1}]);dC.exports={ProgressEvent:kg}});var pC=p((PY,yC)=>{"use strict";function ZS(e){if(!e)return"failure";switch(e.trim().toLowerCase()){case"unicode-1-1-utf-8":case"unicode11utf8":case"unicode20utf8":case"utf-8":case"utf8":case"x-unicode20utf8":return"UTF-8";case"866":case"cp866":case"csibm866":case"ibm866":return"IBM866";case"csisolatin2":case"iso-8859-2":case"iso-ir-101":case"iso8859-2":case"iso88592":case"iso_8859-2":case"iso_8859-2:1987":case"l2":case"latin2":return"ISO-8859-2";case"csisolatin3":case"iso-8859-3":case"iso-ir-109":case"iso8859-3":case"iso88593":case"iso_8859-3":case"iso_8859-3:1988":case"l3":case"latin3":return"ISO-8859-3";case"csisolatin4":case"iso-8859-4":case"iso-ir-110":case"iso8859-4":case"iso88594":case"iso_8859-4":case"iso_8859-4:1988":case"l4":case"latin4":return"ISO-8859-4";case"csisolatincyrillic":case"cyrillic":case"iso-8859-5":case"iso-ir-144":case"iso8859-5":case"iso88595":case"iso_8859-5":case"iso_8859-5:1988":return"ISO-8859-5";case"arabic":case"asmo-708":case"csiso88596e":case"csiso88596i":case"csisolatinarabic":case"ecma-114":case"iso-8859-6":case"iso-8859-6-e":case"iso-8859-6-i":case"iso-ir-127":case"iso8859-6":case"iso88596":case"iso_8859-6":case"iso_8859-6:1987":return"ISO-8859-6";case"csisolatingreek":case"ecma-118":case"elot_928":case"greek":case"greek8":case"iso-8859-7":case"iso-ir-126":case"iso8859-7":case"iso88597":case"iso_8859-7":case"iso_8859-7:1987":case"sun_eu_greek":return"ISO-8859-7";case"csiso88598e":case"csisolatinhebrew":case"hebrew":case"iso-8859-8":case"iso-8859-8-e":case"iso-ir-138":case"iso8859-8":case"iso88598":case"iso_8859-8":case"iso_8859-8:1988":case"visual":return"ISO-8859-8";case"csiso88598i":case"iso-8859-8-i":case"logical":return"ISO-8859-8-I";case"csisolatin6":case"iso-8859-10":case"iso-ir-157":case"iso8859-10":case"iso885910":case"l6":case"latin6":return"ISO-8859-10";case"iso-8859-13":case"iso8859-13":case"iso885913":return"ISO-8859-13";case"iso-8859-14":case"iso8859-14":case"iso885914":return"ISO-8859-14";case"csisolatin9":case"iso-8859-15":case"iso8859-15":case"iso885915":case"iso_8859-15":case"l9":return"ISO-8859-15";case"iso-8859-16":return"ISO-8859-16";case"cskoi8r":case"koi":case"koi8":case"koi8-r":case"koi8_r":return"KOI8-R";case"koi8-ru":case"koi8-u":return"KOI8-U";case"csmacintosh":case"mac":case"macintosh":case"x-mac-roman":return"macintosh";case"iso-8859-11":case"iso8859-11":case"iso885911":case"tis-620":case"windows-874":return"windows-874";case"cp1250":case"windows-1250":case"x-cp1250":return"windows-1250";case"cp1251":case"windows-1251":case"x-cp1251":return"windows-1251";case"ansi_x3.4-1968":case"ascii":case"cp1252":case"cp819":case"csisolatin1":case"ibm819":case"iso-8859-1":case"iso-ir-100":case"iso8859-1":case"iso88591":case"iso_8859-1":case"iso_8859-1:1987":case"l1":case"latin1":case"us-ascii":case"windows-1252":case"x-cp1252":return"windows-1252";case"cp1253":case"windows-1253":case"x-cp1253":return"windows-1253";case"cp1254":case"csisolatin5":case"iso-8859-9":case"iso-ir-148":case"iso8859-9":case"iso88599":case"iso_8859-9":case"iso_8859-9:1989":case"l5":case"latin5":case"windows-1254":case"x-cp1254":return"windows-1254";case"cp1255":case"windows-1255":case"x-cp1255":return"windows-1255";case"cp1256":case"windows-1256":case"x-cp1256":return"windows-1256";case"cp1257":case"windows-1257":case"x-cp1257":return"windows-1257";case"cp1258":case"windows-1258":case"x-cp1258":return"windows-1258";case"x-mac-cyrillic":case"x-mac-ukrainian":return"x-mac-cyrillic";case"chinese":case"csgb2312":case"csiso58gb231280":case"gb2312":case"gb_2312":case"gb_2312-80":case"gbk":case"iso-ir-58":case"x-gbk":return"GBK";case"gb18030":return"gb18030";case"big5":case"big5-hkscs":case"cn-big5":case"csbig5":case"x-x-big5":return"Big5";case"cseucpkdfmtjapanese":case"euc-jp":case"x-euc-jp":return"EUC-JP";case"csiso2022jp":case"iso-2022-jp":return"ISO-2022-JP";case"csshiftjis":case"ms932":case"ms_kanji":case"shift-jis":case"shift_jis":case"sjis":case"windows-31j":case"x-sjis":return"Shift_JIS";case"cseuckr":case"csksc56011987":case"euc-kr":case"iso-ir-149":case"korean":case"ks_c_5601-1987":case"ks_c_5601-1989":case"ksc5601":case"ksc_5601":case"windows-949":return"EUC-KR";case"csiso2022kr":case"hz-gb-2312":case"iso-2022-cn":case"iso-2022-cn-ext":case"iso-2022-kr":case"replacement":return"replacement";case"unicodefffe":case"utf-16be":return"UTF-16BE";case"csunicode":case"iso-10646-ucs-2":case"ucs-2":case"unicode":case"unicodefeff":case"utf-16":case"utf-16le":return"UTF-16LE";case"x-user-defined":return"x-user-defined";default:return"failure"}}yC.exports={getEncoding:ZS}});var NC=p((OY,SC)=>{"use strict";var{kState:Lr,kError:bg,kResult:mC,kAborted:vn,kLastProgressEventFired:Fg}=Dg(),{ProgressEvent:_S}=wC(),{getEncoding:DC}=pC(),{serializeAMimeType:KS,parseMIMEType:kC}=He(),{types:XS}=y("node:util"),{StringDecoder:bC}=y("string_decoder"),{btoa:FC}=y("node:buffer"),jS={enumerable:!0,writable:!1,configurable:!1};function $S(e,A,t,r){if(e[Lr]==="loading")throw new DOMException("Invalid state","InvalidStateError");e[Lr]="loading",e[mC]=null,e[bg]=null;let s=A.stream().getReader(),i=[],o=s.read(),a=!0;(async()=>{for(;!e[vn];)try{let{done:g,value:l}=await o;if(a&&!e[vn]&&queueMicrotask(()=>{lt("loadstart",e)}),a=!1,!g&&XS.isUint8Array(l))i.push(l),(e[Fg]===void 0||Date.now()-e[Fg]>=50)&&!e[vn]&&(e[Fg]=Date.now(),queueMicrotask(()=>{lt("progress",e)})),o=s.read();else if(g){queueMicrotask(()=>{e[Lr]="done";try{let c=eN(i,t,A.type,r);if(e[vn])return;e[mC]=c,lt("load",e)}catch(c){e[bg]=c,lt("error",e)}e[Lr]!=="loading"&<("loadend",e)});break}}catch(g){if(e[vn])return;queueMicrotask(()=>{e[Lr]="done",e[bg]=g,lt("error",e),e[Lr]!=="loading"&<("loadend",e)});break}})()}function lt(e,A){let t=new _S(e,{bubbles:!1,cancelable:!1});A.dispatchEvent(t)}function eN(e,A,t,r){switch(A){case"DataURL":{let n="data:",s=kC(t||"application/octet-stream");s!=="failure"&&(n+=KS(s)),n+=";base64,";let i=new bC("latin1");for(let o of e)n+=FC(i.write(o));return n+=FC(i.end()),n}case"Text":{let n="failure";if(r&&(n=DC(r)),n==="failure"&&t){let s=kC(t);s!=="failure"&&(n=DC(s.parameters.get("charset")))}return n==="failure"&&(n="UTF-8"),AN(e,n)}case"ArrayBuffer":return RC(e).buffer;case"BinaryString":{let n="",s=new bC("latin1");for(let i of e)n+=s.write(i);return n+=s.end(),n}}}function AN(e,A){let t=RC(e),r=tN(t),n=0;r!==null&&(A=r,n=r==="UTF-8"?3:2);let s=t.slice(n);return new TextDecoder(A).decode(s)}function tN(e){let[A,t,r]=e;return A===239&&t===187&&r===191?"UTF-8":A===254&&t===255?"UTF-16BE":A===255&&t===254?"UTF-16LE":null}function RC(e){let A=e.reduce((r,n)=>r+n.byteLength,0),t=0;return e.reduce((r,n)=>(r.set(n,t),t+=n.byteLength,r),new Uint8Array(A))}SC.exports={staticPropertyDescriptors:jS,readOperation:$S,fireAProgressEvent:lt}});var TC=p((zY,LC)=>{"use strict";var{staticPropertyDescriptors:Tr,readOperation:Vi,fireAProgressEvent:MC}=NC(),{kState:Ht,kError:UC,kResult:vi,kEvents:X,kAborted:rN}=Dg(),{webidl:ne}=Se(),{kEnumerableProperty:qe}=v(),hA=class e extends EventTarget{constructor(){super(),this[Ht]="empty",this[vi]=null,this[UC]=null,this[X]={loadend:null,error:null,abort:null,load:null,progress:null,loadstart:null}}readAsArrayBuffer(A){ne.brandCheck(this,e),ne.argumentLengthCheck(arguments,1,"FileReader.readAsArrayBuffer"),A=ne.converters.Blob(A,{strict:!1}),Vi(this,A,"ArrayBuffer")}readAsBinaryString(A){ne.brandCheck(this,e),ne.argumentLengthCheck(arguments,1,"FileReader.readAsBinaryString"),A=ne.converters.Blob(A,{strict:!1}),Vi(this,A,"BinaryString")}readAsText(A,t=void 0){ne.brandCheck(this,e),ne.argumentLengthCheck(arguments,1,"FileReader.readAsText"),A=ne.converters.Blob(A,{strict:!1}),t!==void 0&&(t=ne.converters.DOMString(t,"FileReader.readAsText","encoding")),Vi(this,A,"Text",t)}readAsDataURL(A){ne.brandCheck(this,e),ne.argumentLengthCheck(arguments,1,"FileReader.readAsDataURL"),A=ne.converters.Blob(A,{strict:!1}),Vi(this,A,"DataURL")}abort(){if(this[Ht]==="empty"||this[Ht]==="done"){this[vi]=null;return}this[Ht]==="loading"&&(this[Ht]="done",this[vi]=null),this[rN]=!0,MC("abort",this),this[Ht]!=="loading"&&MC("loadend",this)}get readyState(){switch(ne.brandCheck(this,e),this[Ht]){case"empty":return this.EMPTY;case"loading":return this.LOADING;case"done":return this.DONE}}get result(){return ne.brandCheck(this,e),this[vi]}get error(){return ne.brandCheck(this,e),this[UC]}get onloadend(){return ne.brandCheck(this,e),this[X].loadend}set onloadend(A){ne.brandCheck(this,e),this[X].loadend&&this.removeEventListener("loadend",this[X].loadend),typeof A=="function"?(this[X].loadend=A,this.addEventListener("loadend",A)):this[X].loadend=null}get onerror(){return ne.brandCheck(this,e),this[X].error}set onerror(A){ne.brandCheck(this,e),this[X].error&&this.removeEventListener("error",this[X].error),typeof A=="function"?(this[X].error=A,this.addEventListener("error",A)):this[X].error=null}get onloadstart(){return ne.brandCheck(this,e),this[X].loadstart}set onloadstart(A){ne.brandCheck(this,e),this[X].loadstart&&this.removeEventListener("loadstart",this[X].loadstart),typeof A=="function"?(this[X].loadstart=A,this.addEventListener("loadstart",A)):this[X].loadstart=null}get onprogress(){return ne.brandCheck(this,e),this[X].progress}set onprogress(A){ne.brandCheck(this,e),this[X].progress&&this.removeEventListener("progress",this[X].progress),typeof A=="function"?(this[X].progress=A,this.addEventListener("progress",A)):this[X].progress=null}get onload(){return ne.brandCheck(this,e),this[X].load}set onload(A){ne.brandCheck(this,e),this[X].load&&this.removeEventListener("load",this[X].load),typeof A=="function"?(this[X].load=A,this.addEventListener("load",A)):this[X].load=null}get onabort(){return ne.brandCheck(this,e),this[X].abort}set onabort(A){ne.brandCheck(this,e),this[X].abort&&this.removeEventListener("abort",this[X].abort),typeof A=="function"?(this[X].abort=A,this.addEventListener("abort",A)):this[X].abort=null}};hA.EMPTY=hA.prototype.EMPTY=0;hA.LOADING=hA.prototype.LOADING=1;hA.DONE=hA.prototype.DONE=2;Object.defineProperties(hA.prototype,{EMPTY:Tr,LOADING:Tr,DONE:Tr,readAsArrayBuffer:qe,readAsBinaryString:qe,readAsText:qe,readAsDataURL:qe,abort:qe,readyState:qe,result:qe,error:qe,onloadstart:qe,onprogress:qe,onload:qe,onabort:qe,onerror:qe,onloadend:qe,[Symbol.toStringTag]:{value:"FileReader",writable:!1,enumerable:!1,configurable:!0}});Object.defineProperties(hA,{EMPTY:Tr,LOADING:Tr,DONE:Tr});LC.exports={FileReader:hA}});var qi=p((ZY,xC)=>{"use strict";xC.exports={kConstruct:Qe().kConstruct}});var JC=p((_Y,GC)=>{"use strict";var nN=y("node:assert"),{URLSerializer:YC}=He(),{isValidHeaderName:sN}=Oe();function iN(e,A,t=!1){let r=YC(e,t),n=YC(A,t);return r===n}function oN(e){nN(e!==null);let A=[];for(let t of e.split(","))t=t.trim(),sN(t)&&A.push(t);return A}GC.exports={urlEquals:iN,getFieldValues:oN}});var vC=p((KY,VC)=>{"use strict";var{kConstruct:aN}=qi(),{urlEquals:cN,getFieldValues:Rg}=JC(),{kEnumerableProperty:Vt,isDisturbed:gN}=v(),{webidl:M}=Se(),{Response:lN,cloneResponse:QN,fromInnerResponse:EN}=Jn(),{Request:ZA,fromInnerRequest:BN}=Ur(),{kState:CA}=jA(),{fetching:uN}=Vn(),{urlIsHttpHttpsScheme:Wi,createDeferredPromise:xr,readAllBytes:IN}=Oe(),Sg=y("node:assert"),Pi=class e{#e;constructor(){arguments[0]!==aN&&M.illegalConstructor(),M.util.markAsUncloneable(this),this.#e=arguments[1]}async match(A,t={}){M.brandCheck(this,e);let r="Cache.match";M.argumentLengthCheck(arguments,1,r),A=M.converters.RequestInfo(A,r,"request"),t=M.converters.CacheQueryOptions(t,r,"options");let n=this.#n(A,t,1);if(n.length!==0)return n[0]}async matchAll(A=void 0,t={}){M.brandCheck(this,e);let r="Cache.matchAll";return A!==void 0&&(A=M.converters.RequestInfo(A,r,"request")),t=M.converters.CacheQueryOptions(t,r,"options"),this.#n(A,t)}async add(A){M.brandCheck(this,e);let t="Cache.add";M.argumentLengthCheck(arguments,1,t),A=M.converters.RequestInfo(A,t,"request");let r=[A];return await this.addAll(r)}async addAll(A){M.brandCheck(this,e);let t="Cache.addAll";M.argumentLengthCheck(arguments,1,t);let r=[],n=[];for(let Q of A){if(Q===void 0)throw M.errors.conversionFailed({prefix:t,argument:"Argument 1",types:["undefined is not allowed"]});if(Q=M.converters.RequestInfo(Q),typeof Q=="string")continue;let B=Q[CA];if(!Wi(B.url)||B.method!=="GET")throw M.errors.exception({header:t,message:"Expected http/s scheme when method is not GET."})}let s=[];for(let Q of A){let B=new ZA(Q)[CA];if(!Wi(B.url))throw M.errors.exception({header:t,message:"Expected http/s scheme."});B.initiator="fetch",B.destination="subresource",n.push(B);let E=xr();s.push(uN({request:B,processResponse(u){if(u.type==="error"||u.status===206||u.status<200||u.status>299)E.reject(M.errors.exception({header:"Cache.addAll",message:"Received an invalid status code or the request failed."}));else if(u.headersList.contains("vary")){let h=Rg(u.headersList.get("vary"));for(let I of h)if(I==="*"){E.reject(M.errors.exception({header:"Cache.addAll",message:"invalid vary field value"}));for(let C of s)C.abort();return}}},processResponseEndOfBody(u){if(u.aborted){E.reject(new DOMException("aborted","AbortError"));return}E.resolve(u)}})),r.push(E.promise)}let o=await Promise.all(r),a=[],g=0;for(let Q of o){let B={type:"put",request:n[g],response:Q};a.push(B),g++}let l=xr(),c=null;try{this.#A(a)}catch(Q){c=Q}return queueMicrotask(()=>{c===null?l.resolve(void 0):l.reject(c)}),l.promise}async put(A,t){M.brandCheck(this,e);let r="Cache.put";M.argumentLengthCheck(arguments,2,r),A=M.converters.RequestInfo(A,r,"request"),t=M.converters.Response(t,r,"response");let n=null;if(A instanceof ZA?n=A[CA]:n=new ZA(A)[CA],!Wi(n.url)||n.method!=="GET")throw M.errors.exception({header:r,message:"Expected an http/s scheme when method is not GET"});let s=t[CA];if(s.status===206)throw M.errors.exception({header:r,message:"Got 206 status"});if(s.headersList.contains("vary")){let B=Rg(s.headersList.get("vary"));for(let E of B)if(E==="*")throw M.errors.exception({header:r,message:"Got * vary field value"})}if(s.body&&(gN(s.body.stream)||s.body.stream.locked))throw M.errors.exception({header:r,message:"Response body is locked or disturbed"});let i=QN(s),o=xr();if(s.body!=null){let E=s.body.stream.getReader();IN(E).then(o.resolve,o.reject)}else o.resolve(void 0);let a=[],g={type:"put",request:n,response:i};a.push(g);let l=await o.promise;i.body!=null&&(i.body.source=l);let c=xr(),Q=null;try{this.#A(a)}catch(B){Q=B}return queueMicrotask(()=>{Q===null?c.resolve():c.reject(Q)}),c.promise}async delete(A,t={}){M.brandCheck(this,e);let r="Cache.delete";M.argumentLengthCheck(arguments,1,r),A=M.converters.RequestInfo(A,r,"request"),t=M.converters.CacheQueryOptions(t,r,"options");let n=null;if(A instanceof ZA){if(n=A[CA],n.method!=="GET"&&!t.ignoreMethod)return!1}else Sg(typeof A=="string"),n=new ZA(A)[CA];let s=[],i={type:"delete",request:n,options:t};s.push(i);let o=xr(),a=null,g;try{g=this.#A(s)}catch(l){a=l}return queueMicrotask(()=>{a===null?o.resolve(!!g?.length):o.reject(a)}),o.promise}async keys(A=void 0,t={}){M.brandCheck(this,e);let r="Cache.keys";A!==void 0&&(A=M.converters.RequestInfo(A,r,"request")),t=M.converters.CacheQueryOptions(t,r,"options");let n=null;if(A!==void 0)if(A instanceof ZA){if(n=A[CA],n.method!=="GET"&&!t.ignoreMethod)return[]}else typeof A=="string"&&(n=new ZA(A)[CA]);let s=xr(),i=[];if(A===void 0)for(let o of this.#e)i.push(o[0]);else{let o=this.#t(n,t);for(let a of o)i.push(a[0])}return queueMicrotask(()=>{let o=[];for(let a of i){let g=BN(a,new AbortController().signal,"immutable");o.push(g)}s.resolve(Object.freeze(o))}),s.promise}#A(A){let t=this.#e,r=[...t],n=[],s=[];try{for(let i of A){if(i.type!=="delete"&&i.type!=="put")throw M.errors.exception({header:"Cache.#batchCacheOperations",message:'operation type does not match "delete" or "put"'});if(i.type==="delete"&&i.response!=null)throw M.errors.exception({header:"Cache.#batchCacheOperations",message:"delete operation should not have an associated response"});if(this.#t(i.request,i.options,n).length)throw new DOMException("???","InvalidStateError");let o;if(i.type==="delete"){if(o=this.#t(i.request,i.options),o.length===0)return[];for(let a of o){let g=t.indexOf(a);Sg(g!==-1),t.splice(g,1)}}else if(i.type==="put"){if(i.response==null)throw M.errors.exception({header:"Cache.#batchCacheOperations",message:"put operation should have an associated response"});let a=i.request;if(!Wi(a.url))throw M.errors.exception({header:"Cache.#batchCacheOperations",message:"expected http or https scheme"});if(a.method!=="GET")throw M.errors.exception({header:"Cache.#batchCacheOperations",message:"not get method"});if(i.options!=null)throw M.errors.exception({header:"Cache.#batchCacheOperations",message:"options must not be defined"});o=this.#t(i.request);for(let g of o){let l=t.indexOf(g);Sg(l!==-1),t.splice(l,1)}t.push([i.request,i.response]),n.push([i.request,i.response])}s.push([i.request,i.response])}return s}catch(i){throw this.#e.length=0,this.#e=r,i}}#t(A,t,r){let n=[],s=r??this.#e;for(let i of s){let[o,a]=i;this.#s(A,o,a,t)&&n.push(i)}return n}#s(A,t,r=null,n){let s=new URL(A.url),i=new URL(t.url);if(n?.ignoreSearch&&(i.search="",s.search=""),!cN(s,i,!0))return!1;if(r==null||n?.ignoreVary||!r.headersList.contains("vary"))return!0;let o=Rg(r.headersList.get("vary"));for(let a of o){if(a==="*")return!1;let g=t.headersList.get(a),l=A.headersList.get(a);if(g!==l)return!1}return!0}#n(A,t,r=1/0){let n=null;if(A!==void 0)if(A instanceof ZA){if(n=A[CA],n.method!=="GET"&&!t.ignoreMethod)return[]}else typeof A=="string"&&(n=new ZA(A)[CA]);let s=[];if(A===void 0)for(let o of this.#e)s.push(o[1]);else{let o=this.#t(n,t);for(let a of o)s.push(a[1])}let i=[];for(let o of s){let a=EN(o,"immutable");if(i.push(a.clone()),i.length>=r)break}return Object.freeze(i)}};Object.defineProperties(Pi.prototype,{[Symbol.toStringTag]:{value:"Cache",configurable:!0},match:Vt,matchAll:Vt,add:Vt,addAll:Vt,put:Vt,delete:Vt,keys:Vt});var HC=[{key:"ignoreSearch",converter:M.converters.boolean,defaultValue:()=>!1},{key:"ignoreMethod",converter:M.converters.boolean,defaultValue:()=>!1},{key:"ignoreVary",converter:M.converters.boolean,defaultValue:()=>!1}];M.converters.CacheQueryOptions=M.dictionaryConverter(HC);M.converters.MultiCacheQueryOptions=M.dictionaryConverter([...HC,{key:"cacheName",converter:M.converters.DOMString}]);M.converters.Response=M.interfaceConverter(lN);M.converters["sequence<RequestInfo>"]=M.sequenceConverter(M.converters.RequestInfo);VC.exports={Cache:Pi}});var WC=p((XY,qC)=>{"use strict";var{kConstruct:qn}=qi(),{Cache:Oi}=vC(),{webidl:Ue}=Se(),{kEnumerableProperty:Wn}=v(),zi=class e{#e=new Map;constructor(){arguments[0]!==qn&&Ue.illegalConstructor(),Ue.util.markAsUncloneable(this)}async match(A,t={}){if(Ue.brandCheck(this,e),Ue.argumentLengthCheck(arguments,1,"CacheStorage.match"),A=Ue.converters.RequestInfo(A),t=Ue.converters.MultiCacheQueryOptions(t),t.cacheName!=null){if(this.#e.has(t.cacheName)){let r=this.#e.get(t.cacheName);return await new Oi(qn,r).match(A,t)}}else for(let r of this.#e.values()){let s=await new Oi(qn,r).match(A,t);if(s!==void 0)return s}}async has(A){Ue.brandCheck(this,e);let t="CacheStorage.has";return Ue.argumentLengthCheck(arguments,1,t),A=Ue.converters.DOMString(A,t,"cacheName"),this.#e.has(A)}async open(A){Ue.brandCheck(this,e);let t="CacheStorage.open";if(Ue.argumentLengthCheck(arguments,1,t),A=Ue.converters.DOMString(A,t,"cacheName"),this.#e.has(A)){let n=this.#e.get(A);return new Oi(qn,n)}let r=[];return this.#e.set(A,r),new Oi(qn,r)}async delete(A){Ue.brandCheck(this,e);let t="CacheStorage.delete";return Ue.argumentLengthCheck(arguments,1,t),A=Ue.converters.DOMString(A,t,"cacheName"),this.#e.delete(A)}async keys(){return Ue.brandCheck(this,e),[...this.#e.keys()]}};Object.defineProperties(zi.prototype,{[Symbol.toStringTag]:{value:"CacheStorage",configurable:!0},match:Wn,has:Wn,open:Wn,delete:Wn,keys:Wn});qC.exports={CacheStorage:zi}});var OC=p((jY,PC)=>{"use strict";PC.exports={maxAttributeValueSize:1024,maxNameValuePairSize:4096}});var Ug=p(($Y,KC)=>{"use strict";function hN(e){for(let A=0;A<e.length;++A){let t=e.charCodeAt(A);if(t>=0&&t<=8||t>=10&&t<=31||t===127)return!0}return!1}function Ng(e){for(let A=0;A<e.length;++A){let t=e.charCodeAt(A);if(t<33||t>126||t===34||t===40||t===41||t===60||t===62||t===64||t===44||t===59||t===58||t===92||t===47||t===91||t===93||t===63||t===61||t===123||t===125)throw new Error("Invalid cookie name")}}function Mg(e){let A=e.length,t=0;if(e[0]==='"'){if(A===1||e[A-1]!=='"')throw new Error("Invalid cookie value");--A,++t}for(;t<A;){let r=e.charCodeAt(t++);if(r<33||r>126||r===34||r===44||r===59||r===92)throw new Error("Invalid cookie value")}}function ZC(e){for(let A=0;A<e.length;++A){let t=e.charCodeAt(A);if(t<32||t>126||t===59)throw new Error("Invalid cookie path")}}function zC(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122}function CN(e){if(e===" ")return;if(e.length>255)throw new Error("Invalid cookie domain");let A=0;for(let t=0;t<e.length;++t){let r=e.charCodeAt(t);if(r===46){if(A===0)throw new Error("Invalid cookie domain");if(e.charCodeAt(t-1)===45)throw new Error("Invalid cookie domain");A=0;continue}if(A===0&&!zC(r))throw new Error("Invalid cookie domain");if(!zC(r)&&r!==45)throw new Error("Invalid cookie domain");if(++A>63)throw new Error("Invalid cookie domain")}if(A===0||e.charCodeAt(e.length-1)===45)throw new Error("Invalid cookie domain")}var fN=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dN=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Zi=Array(61).fill(0).map((e,A)=>A.toString().padStart(2,"0"));function _C(e){return typeof e=="number"&&(e=new Date(e)),`${fN[e.getUTCDay()]}, ${Zi[e.getUTCDate()]} ${dN[e.getUTCMonth()]} ${e.getUTCFullYear()} ${Zi[e.getUTCHours()]}:${Zi[e.getUTCMinutes()]}:${Zi[e.getUTCSeconds()]} GMT`}function wN(e){if(e<0)throw new Error("Invalid cookie max-age")}function yN(e){if(e.name.length===0)return null;Ng(e.name),Mg(e.value);let A=[`${e.name}=${e.value}`];e.name.startsWith("__Secure-")&&(e.secure=!0),e.name.startsWith("__Host-")&&(e.secure=!0,e.domain=null,e.path="/"),e.secure&&A.push("Secure"),e.httpOnly&&A.push("HttpOnly"),typeof e.maxAge=="number"&&(wN(e.maxAge),A.push(`Max-Age=${e.maxAge}`)),e.domain&&(CN(e.domain),A.push(`Domain=${e.domain}`)),e.path&&(ZC(e.path),A.push(`Path=${e.path}`)),e.expires&&e.expires.toString()!=="Invalid Date"&&A.push(`Expires=${_C(e.expires)}`),e.sameSite&&A.push(`SameSite=${e.sameSite}`);for(let t of e.unparsed){if(!t.includes("="))throw new Error("Invalid unparsed");let[r,...n]=t.split("="),s=r.trim(),i=n.join("=");Ng(s),Mg(i),A.push(`${s}=${i}`)}return A.join("; ")}KC.exports={isCTLExcludingHtab:hN,validateCookieName:Ng,validateCookiePath:ZC,validateCookieValue:Mg,toIMFDate:_C,stringify:yN}});var jC=p((eG,XC)=>{"use strict";var{maxNameValuePairSize:pN,maxAttributeValueSize:mN}=OC(),{isCTLExcludingHtab:DN}=Ug(),{collectASequenceOfCodePointsFast:_i}=He(),kN=y("node:assert");function bN(e){if(DN(e))return null;let A="",t="",r="",n="";if(e.includes(";")){let s={position:0};A=_i(";",e,s),t=e.slice(s.position)}else A=e;if(!A.includes("="))n=A;else{let s={position:0};r=_i("=",A,s),n=A.slice(s.position+1)}return r=r.trim(),n=n.trim(),r.length+n.length>pN?null:{name:r,value:n,...Yr(t)}}function Yr(e,A={}){if(e.length===0)return A;kN(e[0]===";"),e=e.slice(1);let t="";e.includes(";")?(t=_i(";",e,{position:0}),e=e.slice(t.length)):(t=e,e="");let r="",n="";if(t.includes("=")){let i={position:0};r=_i("=",t,i),n=t.slice(i.position+1)}else r=t;if(r=r.trim(),n=n.trim(),n.length>mN)return Yr(e,A);let s=r.toLowerCase();if(s==="expires"){let i=new Date(n);A.expires=i}else if(s==="max-age"){let i=n.charCodeAt(0);if((i<48||i>57)&&n[0]!=="-"||!/^\d+$/.test(n))return Yr(e,A);let o=Number(n);A.maxAge=o}else if(s==="domain"){let i=n;i[0]==="."&&(i=i.slice(1)),i=i.toLowerCase(),A.domain=i}else if(s==="path"){let i="";n.length===0||n[0]!=="/"?i="/":i=n,A.path=i}else if(s==="secure")A.secure=!0;else if(s==="httponly")A.httpOnly=!0;else if(s==="samesite"){let i=n.toLowerCase();i==="none"?A.sameSite="None":i==="strict"?A.sameSite="Strict":i==="lax"&&(A.sameSite="Lax")}else A.unparsed??=[],A.unparsed.push(`${r}=${n}`);return Yr(e,A)}XC.exports={parseSetCookie:bN,parseUnparsedAttributes:Yr}});var Af=p((AG,ef)=>{"use strict";var{parseSetCookie:FN}=jC(),{stringify:RN}=Ug(),{webidl:P}=Se(),{Headers:Ki}=xt();function SN(e){P.argumentLengthCheck(arguments,1,"getCookies"),P.brandCheck(e,Ki,{strict:!1});let A=e.get("cookie"),t={};if(!A)return t;for(let r of A.split(";")){let[n,...s]=r.split("=");t[n.trim()]=s.join("=")}return t}function NN(e,A,t){P.brandCheck(e,Ki,{strict:!1});let r="deleteCookie";P.argumentLengthCheck(arguments,2,r),A=P.converters.DOMString(A,r,"name"),t=P.converters.DeleteCookieAttributes(t),$C(e,{name:A,value:"",expires:new Date(0),...t})}function MN(e){P.argumentLengthCheck(arguments,1,"getSetCookies"),P.brandCheck(e,Ki,{strict:!1});let A=e.getSetCookie();return A?A.map(t=>FN(t)):[]}function $C(e,A){P.argumentLengthCheck(arguments,2,"setCookie"),P.brandCheck(e,Ki,{strict:!1}),A=P.converters.Cookie(A);let t=RN(A);t&&e.append("Set-Cookie",t)}P.converters.DeleteCookieAttributes=P.dictionaryConverter([{converter:P.nullableConverter(P.converters.DOMString),key:"path",defaultValue:()=>null},{converter:P.nullableConverter(P.converters.DOMString),key:"domain",defaultValue:()=>null}]);P.converters.Cookie=P.dictionaryConverter([{converter:P.converters.DOMString,key:"name"},{converter:P.converters.DOMString,key:"value"},{converter:P.nullableConverter(e=>typeof e=="number"?P.converters["unsigned long long"](e):new Date(e)),key:"expires",defaultValue:()=>null},{converter:P.nullableConverter(P.converters["long long"]),key:"maxAge",defaultValue:()=>null},{converter:P.nullableConverter(P.converters.DOMString),key:"domain",defaultValue:()=>null},{converter:P.nullableConverter(P.converters.DOMString),key:"path",defaultValue:()=>null},{converter:P.nullableConverter(P.converters.boolean),key:"secure",defaultValue:()=>null},{converter:P.nullableConverter(P.converters.boolean),key:"httpOnly",defaultValue:()=>null},{converter:P.converters.USVString,key:"sameSite",allowedValues:["Strict","Lax","None"]},{converter:P.sequenceConverter(P.converters.DOMString),key:"unparsed",defaultValue:()=>new Array(0)}]);ef.exports={getCookies:SN,deleteCookie:NN,getSetCookies:MN,setCookie:$C}});var Jr=p((tG,rf)=>{"use strict";var{webidl:N}=Se(),{kEnumerableProperty:We}=v(),{kConstruct:tf}=Qe(),{MessagePort:UN}=y("node:worker_threads"),Gr=class e extends Event{#e;constructor(A,t={}){if(A===tf){super(arguments[1],arguments[2]),N.util.markAsUncloneable(this);return}let r="MessageEvent constructor";N.argumentLengthCheck(arguments,1,r),A=N.converters.DOMString(A,r,"type"),t=N.converters.MessageEventInit(t,r,"eventInitDict"),super(A,t),this.#e=t,N.util.markAsUncloneable(this)}get data(){return N.brandCheck(this,e),this.#e.data}get origin(){return N.brandCheck(this,e),this.#e.origin}get lastEventId(){return N.brandCheck(this,e),this.#e.lastEventId}get source(){return N.brandCheck(this,e),this.#e.source}get ports(){return N.brandCheck(this,e),Object.isFrozen(this.#e.ports)||Object.freeze(this.#e.ports),this.#e.ports}initMessageEvent(A,t=!1,r=!1,n=null,s="",i="",o=null,a=[]){return N.brandCheck(this,e),N.argumentLengthCheck(arguments,1,"MessageEvent.initMessageEvent"),new e(A,{bubbles:t,cancelable:r,data:n,origin:s,lastEventId:i,source:o,ports:a})}static createFastMessageEvent(A,t){let r=new e(tf,A,t);return r.#e=t,r.#e.data??=null,r.#e.origin??="",r.#e.lastEventId??="",r.#e.source??=null,r.#e.ports??=[],r}},{createFastMessageEvent:LN}=Gr;delete Gr.createFastMessageEvent;var Xi=class e extends Event{#e;constructor(A,t={}){let r="CloseEvent constructor";N.argumentLengthCheck(arguments,1,r),A=N.converters.DOMString(A,r,"type"),t=N.converters.CloseEventInit(t),super(A,t),this.#e=t,N.util.markAsUncloneable(this)}get wasClean(){return N.brandCheck(this,e),this.#e.wasClean}get code(){return N.brandCheck(this,e),this.#e.code}get reason(){return N.brandCheck(this,e),this.#e.reason}},ji=class e extends Event{#e;constructor(A,t){let r="ErrorEvent constructor";N.argumentLengthCheck(arguments,1,r),super(A,t),N.util.markAsUncloneable(this),A=N.converters.DOMString(A,r,"type"),t=N.converters.ErrorEventInit(t??{}),this.#e=t}get message(){return N.brandCheck(this,e),this.#e.message}get filename(){return N.brandCheck(this,e),this.#e.filename}get lineno(){return N.brandCheck(this,e),this.#e.lineno}get colno(){return N.brandCheck(this,e),this.#e.colno}get error(){return N.brandCheck(this,e),this.#e.error}};Object.defineProperties(Gr.prototype,{[Symbol.toStringTag]:{value:"MessageEvent",configurable:!0},data:We,origin:We,lastEventId:We,source:We,ports:We,initMessageEvent:We});Object.defineProperties(Xi.prototype,{[Symbol.toStringTag]:{value:"CloseEvent",configurable:!0},reason:We,code:We,wasClean:We});Object.defineProperties(ji.prototype,{[Symbol.toStringTag]:{value:"ErrorEvent",configurable:!0},message:We,filename:We,lineno:We,colno:We,error:We});N.converters.MessagePort=N.interfaceConverter(UN);N.converters["sequence<MessagePort>"]=N.sequenceConverter(N.converters.MessagePort);var Lg=[{key:"bubbles",converter:N.converters.boolean,defaultValue:()=>!1},{key:"cancelable",converter:N.converters.boolean,defaultValue:()=>!1},{key:"composed",converter:N.converters.boolean,defaultValue:()=>!1}];N.converters.MessageEventInit=N.dictionaryConverter([...Lg,{key:"data",converter:N.converters.any,defaultValue:()=>null},{key:"origin",converter:N.converters.USVString,defaultValue:()=>""},{key:"lastEventId",converter:N.converters.DOMString,defaultValue:()=>""},{key:"source",converter:N.nullableConverter(N.converters.MessagePort),defaultValue:()=>null},{key:"ports",converter:N.converters["sequence<MessagePort>"],defaultValue:()=>new Array(0)}]);N.converters.CloseEventInit=N.dictionaryConverter([...Lg,{key:"wasClean",converter:N.converters.boolean,defaultValue:()=>!1},{key:"code",converter:N.converters["unsigned short"],defaultValue:()=>0},{key:"reason",converter:N.converters.USVString,defaultValue:()=>""}]);N.converters.ErrorEventInit=N.dictionaryConverter([...Lg,{key:"message",converter:N.converters.DOMString,defaultValue:()=>""},{key:"filename",converter:N.converters.USVString,defaultValue:()=>""},{key:"lineno",converter:N.converters["unsigned long"],defaultValue:()=>0},{key:"colno",converter:N.converters["unsigned long"],defaultValue:()=>0},{key:"error",converter:N.converters.any}]);rf.exports={MessageEvent:Gr,CloseEvent:Xi,ErrorEvent:ji,createFastMessageEvent:LN}});var vt=p((rG,nf)=>{"use strict";var TN="258EAFA5-E914-47DA-95CA-C5AB0DC85B11",xN={enumerable:!0,writable:!1,configurable:!1},YN={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3},GN={NOT_SENT:0,PROCESSING:1,SENT:2},JN={CONTINUATION:0,TEXT:1,BINARY:2,CLOSE:8,PING:9,PONG:10},HN=2**16-1,VN={INFO:0,PAYLOADLENGTH_16:2,PAYLOADLENGTH_64:3,READ_DATA:4},vN=Buffer.allocUnsafe(0),qN={string:1,typedArray:2,arrayBuffer:3,blob:4};nf.exports={uid:TN,sentCloseFrameState:GN,staticPropertyDescriptors:xN,states:YN,opcodes:JN,maxUnsigned16Bit:HN,parserStates:VN,emptyBuffer:vN,sendHints:qN}});var Pn=p((nG,sf)=>{"use strict";sf.exports={kWebSocketURL:Symbol("url"),kReadyState:Symbol("ready state"),kController:Symbol("controller"),kResponse:Symbol("response"),kBinaryType:Symbol("binary type"),kSentClose:Symbol("sent close"),kReceivedClose:Symbol("received close"),kByteParser:Symbol("byte parser")}});var Zn=p((sG,uf)=>{"use strict";var{kReadyState:On,kController:WN,kResponse:PN,kBinaryType:ON,kWebSocketURL:zN}=Pn(),{states:zn,opcodes:Qt}=vt(),{ErrorEvent:ZN,createFastMessageEvent:_N}=Jr(),{isUtf8:KN}=y("node:buffer"),{collectASequenceOfCodePointsFast:XN,removeHTTPWhitespace:of}=He();function jN(e){return e[On]===zn.CONNECTING}function $N(e){return e[On]===zn.OPEN}function eM(e){return e[On]===zn.CLOSING}function AM(e){return e[On]===zn.CLOSED}function Tg(e,A,t=(n,s)=>new Event(n,s),r={}){let n=t(e,r);A.dispatchEvent(n)}function tM(e,A,t){if(e[On]!==zn.OPEN)return;let r;if(A===Qt.TEXT)try{r=Bf(t)}catch{cf(e,"Received invalid UTF-8 in text frame.");return}else A===Qt.BINARY&&(e[ON]==="blob"?r=new Blob([t]):r=rM(t));Tg("message",e,_N,{origin:e[zN].origin,data:r})}function rM(e){return e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}function nM(e){if(e.length===0)return!1;for(let A=0;A<e.length;++A){let t=e.charCodeAt(A);if(t<33||t>126||t===34||t===40||t===41||t===44||t===47||t===58||t===59||t===60||t===61||t===62||t===63||t===64||t===91||t===92||t===93||t===123||t===125)return!1}return!0}function sM(e){return e>=1e3&&e<1015?e!==1004&&e!==1005&&e!==1006:e>=3e3&&e<=4999}function cf(e,A){let{[WN]:t,[PN]:r}=e;t.abort(),r?.socket&&!r.socket.destroyed&&r.socket.destroy(),A&&Tg("error",e,(n,s)=>new ZN(n,s),{error:new Error(A),message:A})}function gf(e){return e===Qt.CLOSE||e===Qt.PING||e===Qt.PONG}function lf(e){return e===Qt.CONTINUATION}function Qf(e){return e===Qt.TEXT||e===Qt.BINARY}function iM(e){return Qf(e)||lf(e)||gf(e)}function oM(e){let A={position:0},t=new Map;for(;A.position<e.length;){let r=XN(";",e,A),[n,s=""]=r.split("=");t.set(of(n,!0,!1),of(s,!1,!0)),A.position++}return t}function aM(e){if(e.length===0)return!1;for(let t=0;t<e.length;t++){let r=e.charCodeAt(t);if(r<48||r>57)return!1}let A=Number.parseInt(e,10);return A>=8&&A<=15}var Ef=typeof process.versions.icu=="string",af=Ef?new TextDecoder("utf-8",{fatal:!0}):void 0,Bf=Ef?af.decode.bind(af):function(e){if(KN(e))return e.toString("utf-8");throw new TypeError("Invalid utf-8 received.")};uf.exports={isConnecting:jN,isEstablished:$N,isClosing:eM,isClosed:AM,fireEvent:Tg,isValidSubprotocol:nM,isValidStatusCode:sM,failWebsocketConnection:cf,websocketMessageReceived:tM,utf8Decode:Bf,isControlFrame:gf,isContinuationFrame:lf,isTextBinaryFrame:Qf,isValidOpcode:iM,parseExtensions:oM,isValidClientWindowBits:aM}});var eo=p((iG,If)=>{"use strict";var{maxUnsigned16Bit:cM}=vt(),$i=16386,xg,_n=null,Hr=$i;try{xg=y("node:crypto")}catch{xg={randomFillSync:function(A,t,r){for(let n=0;n<A.length;++n)A[n]=Math.random()*255|0;return A}}}function gM(){return Hr===$i&&(Hr=0,xg.randomFillSync(_n??=Buffer.allocUnsafe($i),0,$i)),[_n[Hr++],_n[Hr++],_n[Hr++],_n[Hr++]]}var Yg=class{constructor(A){this.frameData=A}createFrame(A){let t=this.frameData,r=gM(),n=t?.byteLength??0,s=n,i=6;n>cM?(i+=8,s=127):n>125&&(i+=2,s=126);let o=Buffer.allocUnsafe(n+i);o[0]=o[1]=0,o[0]|=128,o[0]=(o[0]&240)+A;o[i-4]=r[0],o[i-3]=r[1],o[i-2]=r[2],o[i-1]=r[3],o[1]=s,s===126?o.writeUInt16BE(n,2):s===127&&(o[2]=o[3]=0,o.writeUIntBE(n,4,6)),o[1]|=128;for(let a=0;a<n;++a)o[i+a]=t[a]^r[a&3];return o}};If.exports={WebsocketFrameSend:Yg}});var Jg=p((oG,pf)=>{"use strict";var{uid:lM,states:Kn,sentCloseFrameState:Ao,emptyBuffer:QM,opcodes:EM}=vt(),{kReadyState:Xn,kSentClose:to,kByteParser:Cf,kReceivedClose:hf,kResponse:ff}=Pn(),{fireEvent:BM,failWebsocketConnection:Et,isClosing:uM,isClosed:IM,isEstablished:hM,parseExtensions:CM}=Zn(),{channels:Vr}=Xt(),{CloseEvent:fM}=Jr(),{makeRequest:dM}=Ur(),{fetching:wM}=Vn(),{Headers:yM,getHeadersList:pM}=xt(),{getDecodeSplit:mM}=Oe(),{WebsocketFrameSend:DM}=eo(),Gg;try{Gg=y("node:crypto")}catch{}function kM(e,A,t,r,n,s){let i=e;i.protocol=e.protocol==="ws:"?"http:":"https:";let o=dM({urlList:[i],client:t,serviceWorkers:"none",referrer:"no-referrer",mode:"websocket",credentials:"include",cache:"no-store",redirect:"error"});if(s.headers){let c=pM(new yM(s.headers));o.headersList=c}let a=Gg.randomBytes(16).toString("base64");o.headersList.append("sec-websocket-key",a),o.headersList.append("sec-websocket-version","13");for(let c of A)o.headersList.append("sec-websocket-protocol",c);return o.headersList.append("sec-websocket-extensions","permessage-deflate; client_max_window_bits"),wM({request:o,useParallelQueue:!0,dispatcher:s.dispatcher,processResponse(c){if(c.type==="error"||c.status!==101){Et(r,"Received network error or non-101 status code.");return}if(A.length!==0&&!c.headersList.get("Sec-WebSocket-Protocol")){Et(r,"Server did not respond with sent protocols.");return}if(c.headersList.get("Upgrade")?.toLowerCase()!=="websocket"){Et(r,'Server did not set Upgrade header to "websocket".');return}if(c.headersList.get("Connection")?.toLowerCase()!=="upgrade"){Et(r,'Server did not set Connection header to "upgrade".');return}let Q=c.headersList.get("Sec-WebSocket-Accept"),B=Gg.createHash("sha1").update(a+lM).digest("base64");if(Q!==B){Et(r,"Incorrect hash received in Sec-WebSocket-Accept header.");return}let E=c.headersList.get("Sec-WebSocket-Extensions"),u;if(E!==null&&(u=CM(E),!u.has("permessage-deflate"))){Et(r,"Sec-WebSocket-Extensions header does not match.");return}let h=c.headersList.get("Sec-WebSocket-Protocol");if(h!==null&&!mM("sec-websocket-protocol",o.headersList).includes(h)){Et(r,"Protocol was not set in the opening handshake.");return}c.socket.on("data",df),c.socket.on("close",wf),c.socket.on("error",yf),Vr.open.hasSubscribers&&Vr.open.publish({address:c.socket.address(),protocol:h,extensions:E}),n(c,u)}})}function bM(e,A,t,r){if(!(uM(e)||IM(e)))if(!hM(e))Et(e,"Connection was closed before it was established."),e[Xn]=Kn.CLOSING;else if(e[to]===Ao.NOT_SENT){e[to]=Ao.PROCESSING;let n=new DM;A!==void 0&&t===void 0?(n.frameData=Buffer.allocUnsafe(2),n.frameData.writeUInt16BE(A,0)):A!==void 0&&t!==void 0?(n.frameData=Buffer.allocUnsafe(2+r),n.frameData.writeUInt16BE(A,0),n.frameData.write(t,2,"utf-8")):n.frameData=QM,e[ff].socket.write(n.createFrame(EM.CLOSE)),e[to]=Ao.SENT,e[Xn]=Kn.CLOSING}else e[Xn]=Kn.CLOSING}function df(e){this.ws[Cf].write(e)||this.pause()}function wf(){let{ws:e}=this,{[ff]:A}=e;A.socket.off("data",df),A.socket.off("close",wf),A.socket.off("error",yf);let t=e[to]===Ao.SENT&&e[hf],r=1005,n="",s=e[Cf].closingInfo;s&&!s.error?(r=s.code??1005,n=s.reason):e[hf]||(r=1006),e[Xn]=Kn.CLOSED,BM("close",e,(i,o)=>new fM(i,o),{wasClean:t,code:r,reason:n}),Vr.close.hasSubscribers&&Vr.close.publish({websocket:e,code:r,reason:n})}function yf(e){let{ws:A}=this;A[Xn]=Kn.CLOSING,Vr.socketError.hasSubscribers&&Vr.socketError.publish(e),this.destroy()}pf.exports={establishWebSocketConnection:kM,closeWebSocketConnection:bM}});var Df=p((aG,mf)=>{"use strict";var{createInflateRaw:FM,Z_DEFAULT_WINDOWBITS:RM}=y("node:zlib"),{isValidClientWindowBits:SM}=Zn(),{MessageSizeExceededError:NM}=Z(),MM=Buffer.from([0,0,255,255]),ro=Symbol("kBuffer"),jn=Symbol("kLength"),Hg=class{#e;#A={};#t=0;constructor(A,t){this.#A.serverNoContextTakeover=A.has("server_no_context_takeover"),this.#A.serverMaxWindowBits=A.get("server_max_window_bits"),this.#t=t.maxPayloadSize}decompress(A,t,r){if(!this.#e){let n=RM;if(this.#A.serverMaxWindowBits){if(!SM(this.#A.serverMaxWindowBits)){r(new Error("Invalid server_max_window_bits"));return}n=Number.parseInt(this.#A.serverMaxWindowBits)}try{this.#e=FM({windowBits:n})}catch(s){r(s);return}this.#e[ro]=[],this.#e[jn]=0,this.#e.on("data",s=>{if(this.#e[jn]+=s.length,this.#t>0&&this.#e[jn]>this.#t){r(new NM),this.#e.removeAllListeners(),this.#e=null;return}this.#e[ro].push(s)}),this.#e.on("error",s=>{this.#e=null,r(s)})}this.#e.write(A),t&&this.#e.write(MM),this.#e.flush(()=>{if(!this.#e)return;let n=Buffer.concat(this.#e[ro],this.#e[jn]);this.#e[ro].length=0,this.#e[jn]=0,r(null,n)})}};mf.exports={PerMessageDeflate:Hg}});var Tf=p((cG,Lf)=>{"use strict";var{Writable:UM}=y("node:stream"),LM=y("node:assert"),{parserStates:Pe,opcodes:vr,states:TM,emptyBuffer:kf,sentCloseFrameState:bf}=vt(),{kReadyState:xM,kSentClose:Ff,kResponse:Rf,kReceivedClose:Sf}=Pn(),{channels:no}=Xt(),{isValidStatusCode:YM,isValidOpcode:GM,failWebsocketConnection:eA,websocketMessageReceived:Nf,utf8Decode:JM,isControlFrame:Vg,isTextBinaryFrame:vg,isContinuationFrame:HM}=Zn(),{WebsocketFrameSend:Mf}=eo(),{closeWebSocketConnection:Uf}=Jg(),{PerMessageDeflate:VM}=Df(),{MessageSizeExceededError:qg}=Z();function $n(e,A,t){Uf(e,A,t,Buffer.byteLength(t)),eA(e,t)}var Wg=class extends UM{#e=[];#A=0;#t=0;#s=!1;#n=Pe.INFO;#r={};#i=[];#o;#c;#a;constructor(A,t,r={}){super(),this.ws=A,this.#o=t??new Map,this.#c=r.maxFragments??0,this.#a=r.maxPayloadSize??0,this.#o.has("permessage-deflate")&&this.#o.set("permessage-deflate",new VM(t,r))}_write(A,t,r){this.#e.push(A),this.#t+=A.length,this.#s=!0,this.run(r)}#g(){return this.#a>0&&!Vg(this.#r.opcode)&&this.#r.payloadLength+this.#A>this.#a?($n(this.ws,1009,"Payload size exceeds maximum allowed size"),!1):!0}run(A){for(;this.#s;)if(this.#n===Pe.INFO){if(this.#t<2)return A();let t=this.consume(2),r=(t[0]&128)!==0,n=t[0]&15,s=(t[1]&128)===128,i=!r&&n!==vr.CONTINUATION,o=t[1]&127,a=t[0]&64,g=t[0]&32,l=t[0]&16;if(!GM(n))return eA(this.ws,"Invalid opcode received"),A();if(s)return eA(this.ws,"Frame cannot be masked"),A();if(a!==0&&!this.#o.has("permessage-deflate")){eA(this.ws,"Expected RSV1 to be clear.");return}if(g!==0||l!==0){eA(this.ws,"RSV1, RSV2, RSV3 must be clear");return}if(i&&!vg(n)){eA(this.ws,"Invalid frame type was fragmented.");return}if(vg(n)&&this.#i.length>0){eA(this.ws,"Expected continuation frame");return}if(this.#r.fragmented&&i){eA(this.ws,"Fragmented frame exceeded 125 bytes.");return}if((o>125||i)&&Vg(n)){eA(this.ws,"Control frame either too large or fragmented");return}if(HM(n)&&this.#i.length===0&&!this.#r.compressed){eA(this.ws,"Unexpected continuation frame");return}if(o<=125){if(this.#r.payloadLength=o,this.#n=Pe.READ_DATA,!this.#g())return}else o===126?this.#n=Pe.PAYLOADLENGTH_16:o===127&&(this.#n=Pe.PAYLOADLENGTH_64);vg(n)&&(this.#r.binaryType=n,this.#r.compressed=a!==0),this.#r.opcode=n,this.#r.masked=s,this.#r.fin=r,this.#r.fragmented=i}else if(this.#n===Pe.PAYLOADLENGTH_16){if(this.#t<2)return A();let t=this.consume(2);if(this.#r.payloadLength=t.readUInt16BE(0),this.#n=Pe.READ_DATA,!this.#g())return}else if(this.#n===Pe.PAYLOADLENGTH_64){if(this.#t<8)return A();let t=this.consume(8),r=t.readUInt32BE(0),n=t.readUInt32BE(4);if(r!==0||n>2**31-1){eA(this.ws,"Received payload length > 2^31 bytes.");return}if(this.#r.payloadLength=n,this.#n=Pe.READ_DATA,!this.#g())return}else if(this.#n===Pe.READ_DATA){if(this.#t<this.#r.payloadLength)return A();let t=this.consume(this.#r.payloadLength);if(Vg(this.#r.opcode))this.#s=this.parseControlFrame(t),this.#n=Pe.INFO;else if(this.#r.compressed){this.#o.get("permessage-deflate").decompress(t,this.#r.fin,(r,n)=>{if(r){let s=r instanceof qg?1009:1007;$n(this.ws,s,r.message);return}if(this.writeFragments(n)){if(this.#a>0&&this.#A>this.#a){$n(this.ws,1009,new qg().message);return}if(!this.#r.fin){this.#n=Pe.INFO,this.#s=!0,this.run(A);return}Nf(this.ws,this.#r.binaryType,this.consumeFragments()),this.#s=!0,this.#n=Pe.INFO,this.run(A)}}),this.#s=!1;break}else{if(!this.writeFragments(t))return;if(this.#a>0&&this.#A>this.#a){$n(this.ws,1009,new qg().message);return}!this.#r.fragmented&&this.#r.fin&&Nf(this.ws,this.#r.binaryType,this.consumeFragments()),this.#n=Pe.INFO}}}consume(A){if(A>this.#t)throw new Error("Called consume() before buffers satiated.");if(A===0)return kf;if(this.#e[0].length===A)return this.#t-=this.#e[0].length,this.#e.shift();let t=Buffer.allocUnsafe(A),r=0;for(;r!==A;){let n=this.#e[0],{length:s}=n;if(s+r===A){t.set(this.#e.shift(),r);break}else if(s+r>A){t.set(n.subarray(0,A-r),r),this.#e[0]=n.subarray(A-r);break}else t.set(this.#e.shift(),r),r+=n.length}return this.#t-=A,t}writeFragments(A){return this.#c>0&&this.#i.length===this.#c?($n(this.ws,1008,"Too many message fragments"),!1):(this.#A+=A.length,this.#i.push(A),!0)}consumeFragments(){let A=this.#i;if(A.length===1)return this.#A=0,A.shift();let t=Buffer.concat(A,this.#A);return this.#i=[],this.#A=0,t}parseCloseBody(A){LM(A.length!==1);let t;if(A.length>=2&&(t=A.readUInt16BE(0)),t!==void 0&&!YM(t))return{code:1002,reason:"Invalid status code",error:!0};let r=A.subarray(2);r[0]===239&&r[1]===187&&r[2]===191&&(r=r.subarray(3));try{r=JM(r)}catch{return{code:1007,reason:"Invalid UTF-8",error:!0}}return{code:t,reason:r,error:!1}}parseControlFrame(A){let{opcode:t,payloadLength:r}=this.#r;if(t===vr.CLOSE){if(r===1)return eA(this.ws,"Received close frame with a 1-byte body."),!1;if(this.#r.closeInfo=this.parseCloseBody(A),this.#r.closeInfo.error){let{code:n,reason:s}=this.#r.closeInfo;return Uf(this.ws,n,s,s.length),eA(this.ws,s),!1}if(this.ws[Ff]!==bf.SENT){let n=kf;this.#r.closeInfo.code&&(n=Buffer.allocUnsafe(2),n.writeUInt16BE(this.#r.closeInfo.code,0));let s=new Mf(n);this.ws[Rf].socket.write(s.createFrame(vr.CLOSE),i=>{i||(this.ws[Ff]=bf.SENT)})}return this.ws[xM]=TM.CLOSING,this.ws[Sf]=!0,!1}else if(t===vr.PING){if(!this.ws[Sf]){let n=new Mf(A);this.ws[Rf].socket.write(n.createFrame(vr.PONG)),no.ping.hasSubscribers&&no.ping.publish({payload:A})}}else t===vr.PONG&&no.pong.hasSubscribers&&no.pong.publish({payload:A});return!0}get closingInfo(){return this.#r.closeInfo}};Lf.exports={ByteParser:Wg}});var Hf=p((gG,Jf)=>{"use strict";var{WebsocketFrameSend:vM}=eo(),{opcodes:xf,sendHints:qr}=vt(),qM=Ka(),Yf=Buffer[Symbol.species],Pg=class{#e=new qM;#A=!1;#t;constructor(A){this.#t=A}add(A,t,r){if(r!==qr.blob){let s=Gf(A,r);if(!this.#A)this.#t.write(s,t);else{let i={promise:null,callback:t,frame:s};this.#e.push(i)}return}let n={promise:A.arrayBuffer().then(s=>{n.promise=null,n.frame=Gf(s,r)}),callback:t,frame:null};this.#e.push(n),this.#A||this.#s()}async#s(){this.#A=!0;let A=this.#e;for(;!A.isEmpty();){let t=A.shift();t.promise!==null&&await t.promise,this.#t.write(t.frame,t.callback),t.callback=t.frame=null}this.#A=!1}};function Gf(e,A){return new vM(WM(e,A)).createFrame(A===qr.string?xf.TEXT:xf.BINARY)}function WM(e,A){switch(A){case qr.string:return Buffer.from(e);case qr.arrayBuffer:case qr.blob:return new Yf(e);case qr.typedArray:return new Yf(e.buffer,e.byteOffset,e.byteLength)}}Jf.exports={SendQueue:Pg}});var Kf=p((lG,_f)=>{"use strict";var{webidl:J}=Se(),{URLSerializer:PM}=He(),{environmentSettingsObject:Vf}=Oe(),{staticPropertyDescriptors:Bt,states:es,sentCloseFrameState:OM,sendHints:so}=vt(),{kWebSocketURL:vf,kReadyState:Og,kController:qf,kBinaryType:io,kResponse:Wf,kSentClose:zM,kByteParser:ZM}=Pn(),{isConnecting:_M,isEstablished:KM,isClosing:XM,isValidSubprotocol:jM,fireEvent:Pf}=Zn(),{establishWebSocketConnection:$M,closeWebSocketConnection:Of}=Jg(),{ByteParser:eU}=Tf(),{kEnumerableProperty:oA,isBlobLike:zf}=v(),{getGlobalDispatcher:AU}=wi(),{types:Zf}=y("node:util"),{ErrorEvent:tU,CloseEvent:rU}=Jr(),{SendQueue:nU}=Hf(),AA=class e extends EventTarget{#e={open:null,error:null,close:null,message:null};#A=0;#t="";#s="";#n;constructor(A,t=[]){super(),J.util.markAsUncloneable(this);let r="WebSocket constructor";J.argumentLengthCheck(arguments,1,r);let n=J.converters["DOMString or sequence<DOMString> or WebSocketInit"](t,r,"options");A=J.converters.USVString(A,r,"url"),t=n.protocols;let s=Vf.settingsObject.baseUrl,i;try{i=new URL(A,s)}catch(a){throw new DOMException(a,"SyntaxError")}if(i.protocol==="http:"?i.protocol="ws:":i.protocol==="https:"&&(i.protocol="wss:"),i.protocol!=="ws:"&&i.protocol!=="wss:")throw new DOMException(`Expected a ws: or wss: protocol, got ${i.protocol}`,"SyntaxError");if(i.hash||i.href.endsWith("#"))throw new DOMException("Got fragment","SyntaxError");if(typeof t=="string"&&(t=[t]),t.length!==new Set(t.map(a=>a.toLowerCase())).size)throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");if(t.length>0&&!t.every(a=>jM(a)))throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");this[vf]=new URL(i.href);let o=Vf.settingsObject;this[qf]=$M(i,t,o,this,(a,g)=>this.#r(a,g),n),this[Og]=e.CONNECTING,this[zM]=OM.NOT_SENT,this[io]="blob"}close(A=void 0,t=void 0){J.brandCheck(this,e);let r="WebSocket.close";if(A!==void 0&&(A=J.converters["unsigned short"](A,r,"code",{clamp:!0})),t!==void 0&&(t=J.converters.USVString(t,r,"reason")),A!==void 0&&A!==1e3&&(A<3e3||A>4999))throw new DOMException("invalid code","InvalidAccessError");let n=0;if(t!==void 0&&(n=Buffer.byteLength(t),n>123))throw new DOMException(`Reason must be less than 123 bytes; received ${n}`,"SyntaxError");Of(this,A,t,n)}send(A){J.brandCheck(this,e);let t="WebSocket.send";if(J.argumentLengthCheck(arguments,1,t),A=J.converters.WebSocketSendData(A,t,"data"),_M(this))throw new DOMException("Sent before connected.","InvalidStateError");if(!(!KM(this)||XM(this)))if(typeof A=="string"){let r=Buffer.byteLength(A);this.#A+=r,this.#n.add(A,()=>{this.#A-=r},so.string)}else Zf.isArrayBuffer(A)?(this.#A+=A.byteLength,this.#n.add(A,()=>{this.#A-=A.byteLength},so.arrayBuffer)):ArrayBuffer.isView(A)?(this.#A+=A.byteLength,this.#n.add(A,()=>{this.#A-=A.byteLength},so.typedArray)):zf(A)&&(this.#A+=A.size,this.#n.add(A,()=>{this.#A-=A.size},so.blob))}get readyState(){return J.brandCheck(this,e),this[Og]}get bufferedAmount(){return J.brandCheck(this,e),this.#A}get url(){return J.brandCheck(this,e),PM(this[vf])}get extensions(){return J.brandCheck(this,e),this.#s}get protocol(){return J.brandCheck(this,e),this.#t}get onopen(){return J.brandCheck(this,e),this.#e.open}set onopen(A){J.brandCheck(this,e),this.#e.open&&this.removeEventListener("open",this.#e.open),typeof A=="function"?(this.#e.open=A,this.addEventListener("open",A)):this.#e.open=null}get onerror(){return J.brandCheck(this,e),this.#e.error}set onerror(A){J.brandCheck(this,e),this.#e.error&&this.removeEventListener("error",this.#e.error),typeof A=="function"?(this.#e.error=A,this.addEventListener("error",A)):this.#e.error=null}get onclose(){return J.brandCheck(this,e),this.#e.close}set onclose(A){J.brandCheck(this,e),this.#e.close&&this.removeEventListener("close",this.#e.close),typeof A=="function"?(this.#e.close=A,this.addEventListener("close",A)):this.#e.close=null}get onmessage(){return J.brandCheck(this,e),this.#e.message}set onmessage(A){J.brandCheck(this,e),this.#e.message&&this.removeEventListener("message",this.#e.message),typeof A=="function"?(this.#e.message=A,this.addEventListener("message",A)):this.#e.message=null}get binaryType(){return J.brandCheck(this,e),this[io]}set binaryType(A){J.brandCheck(this,e),A!=="blob"&&A!=="arraybuffer"?this[io]="blob":this[io]=A}#r(A,t){this[Wf]=A;let r=this[qf]?.dispatcher?.webSocketOptions,n=r?.maxFragments,s=r?.maxPayloadSize,i=new eU(this,t,{maxFragments:n,maxPayloadSize:s});i.on("drain",sU),i.on("error",iU.bind(this)),A.socket.ws=this,this[ZM]=i,this.#n=new nU(A.socket),this[Og]=es.OPEN;let o=A.headersList.get("sec-websocket-extensions");o!==null&&(this.#s=o);let a=A.headersList.get("sec-websocket-protocol");a!==null&&(this.#t=a),Pf("open",this)}};AA.CONNECTING=AA.prototype.CONNECTING=es.CONNECTING;AA.OPEN=AA.prototype.OPEN=es.OPEN;AA.CLOSING=AA.prototype.CLOSING=es.CLOSING;AA.CLOSED=AA.prototype.CLOSED=es.CLOSED;Object.defineProperties(AA.prototype,{CONNECTING:Bt,OPEN:Bt,CLOSING:Bt,CLOSED:Bt,url:oA,readyState:oA,bufferedAmount:oA,onopen:oA,onerror:oA,onclose:oA,close:oA,onmessage:oA,binaryType:oA,send:oA,extensions:oA,protocol:oA,[Symbol.toStringTag]:{value:"WebSocket",writable:!1,enumerable:!1,configurable:!0}});Object.defineProperties(AA,{CONNECTING:Bt,OPEN:Bt,CLOSING:Bt,CLOSED:Bt});J.converters["sequence<DOMString>"]=J.sequenceConverter(J.converters.DOMString);J.converters["DOMString or sequence<DOMString>"]=function(e,A,t){return J.util.Type(e)==="Object"&&Symbol.iterator in e?J.converters["sequence<DOMString>"](e):J.converters.DOMString(e,A,t)};J.converters.WebSocketInit=J.dictionaryConverter([{key:"protocols",converter:J.converters["DOMString or sequence<DOMString>"],defaultValue:()=>new Array(0)},{key:"dispatcher",converter:J.converters.any,defaultValue:()=>AU()},{key:"headers",converter:J.nullableConverter(J.converters.HeadersInit)}]);J.converters["DOMString or sequence<DOMString> or WebSocketInit"]=function(e){return J.util.Type(e)==="Object"&&!(Symbol.iterator in e)?J.converters.WebSocketInit(e):{protocols:J.converters["DOMString or sequence<DOMString>"](e)}};J.converters.WebSocketSendData=function(e){if(J.util.Type(e)==="Object"){if(zf(e))return J.converters.Blob(e,{strict:!1});if(ArrayBuffer.isView(e)||Zf.isArrayBuffer(e))return J.converters.BufferSource(e)}return J.converters.USVString(e)};function sU(){this.ws[Wf].socket.resume()}function iU(e){let A,t;e instanceof rU?(A=e.reason,t=e.code):A=e.message,Pf("error",this,()=>new tU("error",{error:e,message:A})),Of(this,t)}_f.exports={WebSocket:AA}});var zg=p((QG,Xf)=>{"use strict";function oU(e){return e.indexOf("\0")===-1}function aU(e){if(e.length===0)return!1;for(let A=0;A<e.length;A++)if(e.charCodeAt(A)<48||e.charCodeAt(A)>57)return!1;return!0}function cU(e){return new Promise(A=>{setTimeout(A,e).unref()})}Xf.exports={isValidLastEventId:oU,isASCIINumber:aU,delay:cU}});var Ad=p((EG,ed)=>{"use strict";var{Transform:gU}=y("node:stream"),{isASCIINumber:jf,isValidLastEventId:$f}=zg(),_A=[239,187,191],Zg=10,oo=13,lU=58,QU=32,_g=class extends gU{state=null;checkBOM=!0;crlfCheck=!1;eventEndCheck=!1;buffer=null;pos=0;event={data:void 0,event:void 0,id:void 0,retry:void 0};constructor(A={}){A.readableObjectMode=!0,super(A),this.state=A.eventSourceSettings||{},A.push&&(this.push=A.push)}_transform(A,t,r){if(A.length===0){r();return}if(this.buffer?this.buffer=Buffer.concat([this.buffer,A]):this.buffer=A,this.checkBOM)switch(this.buffer.length){case 1:if(this.buffer[0]===_A[0]){r();return}this.checkBOM=!1,r();return;case 2:if(this.buffer[0]===_A[0]&&this.buffer[1]===_A[1]){r();return}this.checkBOM=!1;break;case 3:if(this.buffer[0]===_A[0]&&this.buffer[1]===_A[1]&&this.buffer[2]===_A[2]){this.buffer=Buffer.alloc(0),this.checkBOM=!1,r();return}this.checkBOM=!1;break;default:this.buffer[0]===_A[0]&&this.buffer[1]===_A[1]&&this.buffer[2]===_A[2]&&(this.buffer=this.buffer.subarray(3)),this.checkBOM=!1;break}for(;this.pos<this.buffer.length;){if(this.eventEndCheck){if(this.crlfCheck){if(this.buffer[this.pos]===Zg){this.buffer=this.buffer.subarray(this.pos+1),this.pos=0,this.crlfCheck=!1;continue}this.crlfCheck=!1}if(this.buffer[this.pos]===Zg||this.buffer[this.pos]===oo){this.buffer[this.pos]===oo&&(this.crlfCheck=!0),this.buffer=this.buffer.subarray(this.pos+1),this.pos=0,(this.event.data!==void 0||this.event.event||this.event.id||this.event.retry)&&this.processEvent(this.event),this.clearEvent();continue}this.eventEndCheck=!1;continue}if(this.buffer[this.pos]===Zg||this.buffer[this.pos]===oo){this.buffer[this.pos]===oo&&(this.crlfCheck=!0),this.parseLine(this.buffer.subarray(0,this.pos),this.event),this.buffer=this.buffer.subarray(this.pos+1),this.pos=0,this.eventEndCheck=!0;continue}this.pos++}r()}parseLine(A,t){if(A.length===0)return;let r=A.indexOf(lU);if(r===0)return;let n="",s="";if(r!==-1){n=A.subarray(0,r).toString("utf8");let i=r+1;A[i]===QU&&++i,s=A.subarray(i).toString("utf8")}else n=A.toString("utf8"),s="";switch(n){case"data":t[n]===void 0?t[n]=s:t[n]+=`
|
|
45
|
-
${s}`;break;case"retry":jf(s)&&(t[n]=s);break;case"id":$f(s)&&(t[n]=s);break;case"event":s.length>0&&(t[n]=s);break}}processEvent(A){A.retry&&jf(A.retry)&&(this.state.reconnectionTime=parseInt(A.retry,10)),A.id&&$f(A.id)&&(this.state.lastEventId=A.id),A.data!==void 0&&this.push({type:A.event||"message",options:{data:A.data,lastEventId:this.state.lastEventId,origin:this.state.origin}})}clearEvent(){this.event={data:void 0,event:void 0,id:void 0,retry:void 0}}};ed.exports={EventSourceStream:_g}});var cd=p((BG,ad)=>{"use strict";var{pipeline:EU}=y("node:stream"),{fetching:BU}=Vn(),{makeRequest:uU}=Ur(),{webidl:KA}=Se(),{EventSourceStream:IU}=Ad(),{parseMIMEType:hU}=He(),{createFastMessageEvent:CU}=Jr(),{isNetworkError:td}=Jn(),{delay:fU}=zg(),{kEnumerableProperty:qt}=v(),{environmentSettingsObject:rd}=Oe(),nd=!1,sd=3e3,As=0,id=1,ts=2,dU="anonymous",wU="use-credentials",Wr=class e extends EventTarget{#e={open:null,error:null,message:null};#A=null;#t=!1;#s=As;#n=null;#r=null;#i;#o;constructor(A,t={}){super(),KA.util.markAsUncloneable(this);let r="EventSource constructor";KA.argumentLengthCheck(arguments,1,r),nd||(nd=!0,process.emitWarning("EventSource is experimental, expect them to change at any time.",{code:"UNDICI-ES"})),A=KA.converters.USVString(A,r,"url"),t=KA.converters.EventSourceInitDict(t,r,"eventSourceInitDict"),this.#i=t.dispatcher,this.#o={lastEventId:"",reconnectionTime:sd};let n=rd,s;try{s=new URL(A,n.settingsObject.baseUrl),this.#o.origin=s.origin}catch(a){throw new DOMException(a,"SyntaxError")}this.#A=s.href;let i=dU;t.withCredentials&&(i=wU,this.#t=!0);let o={redirect:"follow",keepalive:!0,mode:"cors",credentials:i==="anonymous"?"same-origin":"omit",referrer:"no-referrer"};o.client=rd.settingsObject,o.headersList=[["accept",{name:"accept",value:"text/event-stream"}]],o.cache="no-store",o.initiator="other",o.urlList=[new URL(this.#A)],this.#n=uU(o),this.#c()}get readyState(){return this.#s}get url(){return this.#A}get withCredentials(){return this.#t}#c(){if(this.#s===ts)return;this.#s=As;let A={request:this.#n,dispatcher:this.#i},t=r=>{td(r)&&(this.dispatchEvent(new Event("error")),this.close()),this.#a()};A.processResponseEndOfBody=t,A.processResponse=r=>{if(td(r))if(r.aborted){this.close(),this.dispatchEvent(new Event("error"));return}else{this.#a();return}let n=r.headersList.get("content-type",!0),s=n!==null?hU(n):"failure",i=s!=="failure"&&s.essence==="text/event-stream";if(r.status!==200||i===!1){this.close(),this.dispatchEvent(new Event("error"));return}this.#s=id,this.dispatchEvent(new Event("open")),this.#o.origin=r.urlList[r.urlList.length-1].origin;let o=new IU({eventSourceSettings:this.#o,push:a=>{this.dispatchEvent(CU(a.type,a.options))}});EU(r.body.stream,o,a=>{a?.aborted===!1&&(this.close(),this.dispatchEvent(new Event("error")))})},this.#r=BU(A)}async#a(){this.#s!==ts&&(this.#s=As,this.dispatchEvent(new Event("error")),await fU(this.#o.reconnectionTime),this.#s===As&&(this.#o.lastEventId.length&&this.#n.headersList.set("last-event-id",this.#o.lastEventId,!0),this.#c()))}close(){KA.brandCheck(this,e),this.#s!==ts&&(this.#s=ts,this.#r.abort(),this.#n=null)}get onopen(){return this.#e.open}set onopen(A){this.#e.open&&this.removeEventListener("open",this.#e.open),typeof A=="function"?(this.#e.open=A,this.addEventListener("open",A)):this.#e.open=null}get onmessage(){return this.#e.message}set onmessage(A){this.#e.message&&this.removeEventListener("message",this.#e.message),typeof A=="function"?(this.#e.message=A,this.addEventListener("message",A)):this.#e.message=null}get onerror(){return this.#e.error}set onerror(A){this.#e.error&&this.removeEventListener("error",this.#e.error),typeof A=="function"?(this.#e.error=A,this.addEventListener("error",A)):this.#e.error=null}},od={CONNECTING:{__proto__:null,configurable:!1,enumerable:!0,value:As,writable:!1},OPEN:{__proto__:null,configurable:!1,enumerable:!0,value:id,writable:!1},CLOSED:{__proto__:null,configurable:!1,enumerable:!0,value:ts,writable:!1}};Object.defineProperties(Wr,od);Object.defineProperties(Wr.prototype,od);Object.defineProperties(Wr.prototype,{close:qt,onerror:qt,onmessage:qt,onopen:qt,readyState:qt,url:qt,withCredentials:qt});KA.converters.EventSourceInitDict=KA.dictionaryConverter([{key:"withCredentials",converter:KA.converters.boolean,defaultValue:()=>!1},{key:"dispatcher",converter:KA.converters.any}]);ad.exports={EventSource:Wr,defaultReconnectionTime:sd}});var Ed=p((uG,G)=>{"use strict";var yU=hr(),gd=sn(),pU=Cr(),mU=iu(),DU=fr(),kU=Ic(),bU=Su(),FU=Yu(),ld=Z(),co=v(),{InvalidArgumentError:ao}=ld,Pr=pI(),RU=an(),SU=Xc(),NU=sh(),MU=eg(),UU=Gc(),LU=li(),{getGlobalDispatcher:Qd,setGlobalDispatcher:TU}=wi(),xU=yi(),YU=ei(),GU=Ai();Object.assign(gd.prototype,Pr);G.exports.Dispatcher=gd;G.exports.Client=yU;G.exports.Pool=pU;G.exports.BalancedPool=mU;G.exports.Agent=DU;G.exports.ProxyAgent=kU;G.exports.EnvHttpProxyAgent=bU;G.exports.RetryAgent=FU;G.exports.RetryHandler=LU;G.exports.DecoratorHandler=xU;G.exports.RedirectHandler=YU;G.exports.createRedirectInterceptor=GU;G.exports.interceptors={redirect:Qh(),retry:Bh(),dump:Ih(),dns:fh()};G.exports.buildConnector=RU;G.exports.errors=ld;G.exports.util={parseHeaders:co.parseHeaders,headerNameToString:co.headerNameToString};function rs(e){return(A,t,r)=>{if(typeof t=="function"&&(r=t,t=null),!A||typeof A!="string"&&typeof A!="object"&&!(A instanceof URL))throw new ao("invalid url");if(t!=null&&typeof t!="object")throw new ao("invalid opts");if(t&&t.path!=null){if(typeof t.path!="string")throw new ao("invalid opts.path");let i=t.path;t.path.startsWith("/")||(i=`/${i}`),A=new URL(co.parseOrigin(A).origin+i)}else t||(t=typeof A=="object"?A:{}),A=co.parseURL(A);let{agent:n,dispatcher:s=Qd()}=t;if(n)throw new ao("unsupported opts.agent. Did you mean opts.client?");return e.call(s,{...t,origin:A.origin,path:A.search?`${A.pathname}${A.search}`:A.pathname,method:t.method||(t.body?"PUT":"GET")},r)}}G.exports.setGlobalDispatcher=TU;G.exports.getGlobalDispatcher=Qd;var JU=Vn().fetch;G.exports.fetch=async function(A,t=void 0){try{return await JU(A,t)}catch(r){throw r&&typeof r=="object"&&Error.captureStackTrace(r),r}};G.exports.Headers=xt().Headers;G.exports.Response=Jn().Response;G.exports.Request=Ur().Request;G.exports.FormData=un().FormData;G.exports.File=globalThis.File??y("node:buffer").File;G.exports.FileReader=TC().FileReader;var{setGlobalOrigin:HU,getGlobalOrigin:VU}=ha();G.exports.setGlobalOrigin=HU;G.exports.getGlobalOrigin=VU;var{CacheStorage:vU}=WC(),{kConstruct:qU}=qi();G.exports.caches=new vU(qU);var{deleteCookie:WU,getCookies:PU,getSetCookies:OU,setCookie:zU}=Af();G.exports.deleteCookie=WU;G.exports.getCookies=PU;G.exports.getSetCookies=OU;G.exports.setCookie=zU;var{parseMIMEType:ZU,serializeAMimeType:_U}=He();G.exports.parseMIMEType=ZU;G.exports.serializeAMimeType=_U;var{CloseEvent:KU,ErrorEvent:XU,MessageEvent:jU}=Jr();G.exports.WebSocket=Kf().WebSocket;G.exports.CloseEvent=KU;G.exports.ErrorEvent=XU;G.exports.MessageEvent=jU;G.exports.request=rs(Pr.request);G.exports.stream=rs(Pr.stream);G.exports.pipeline=rs(Pr.pipeline);G.exports.connect=rs(Pr.connect);G.exports.upgrade=rs(Pr.upgrade);G.exports.MockClient=SU;G.exports.MockPool=MU;G.exports.MockAgent=NU;G.exports.mockErrors=UU;var{EventSource:$U}=cd();G.exports.EventSource=$U});import Or from"node:net";import eL from"node:dns";function go(e){let A=String(e).toLowerCase().split("%")[0];if((A.match(/::/g)||[]).length>1)return null;let t=l=>{if(!l)return[];let c=l.split(":"),Q=c.at(-1);if(Q?.includes(".")){let B=Q.split(".").map(Number);if(B.length!==4||B.some(E=>!Number.isInteger(E)||E<0||E>255))return null;c.splice(c.length-1,1,(B[0]<<8|B[1]).toString(16),(B[2]<<8|B[3]).toString(16))}return c.some(B=>!/^[0-9a-f]{1,4}$/.test(B))?null:c.map(B=>Number.parseInt(B,16))},[r,n]=A.split("::"),s=t(r),i=t(n);if(!s||!i)return null;let o=A.includes("::"),a=8-s.length-i.length;if(!o&&a!==0||o&&a<1)return null;let g=[...s,...Array(Math.max(0,a)).fill(0),...i];return g.length!==8?null:Uint8Array.from(g.flatMap(l=>[l>>8,l&255]))}function Kg(e,A,t){let r=Math.floor(t/8),n=t%8;for(let i=0;i<r;i+=1)if(e[i]!==A[i])return!1;if(!n)return!0;let s=255<<8-n;return(e[r]&s)===(A[r]&s)}function Xg(e){if(Or.isIPv4(e)){let A=e.split(".").map(Number);return!(A[0]===0||A[0]===10||A[0]===127||A[0]>=224||A[0]===100&&A[1]>=64&&A[1]<=127||A[0]===169&&A[1]===254||A[0]===172&&A[1]>=16&&A[1]<=31||A[0]===192&&(A[1]===0||A[1]===2||A[1]===168)||A[0]===192&&A[1]===88&&A[2]===99||A[0]===198&&(A[1]===18||A[1]===19||A[1]===51)||A[0]===203&&A[1]===0&&A[2]===113)}if(Or.isIPv6(e)){let A=go(e);if(!A)return!1;let t=go("::ffff:0:0");return Kg(A,t,96)?Xg([...A.slice(12)].join(".")):Kg(A,go("2000::"),3)?![["2001::",23],["2001:db8::",32],["2001:10::",28],["2001:2::",48],["2002::",16],["3fff::",20]].some(([n,s])=>Kg(A,go(n),s)):!1}return!1}function tL(e){let A;try{A=new URL(String(e))}catch{return{ok:!1,error:`not a valid URL: ${String(e).slice(0,120)}`}}if(A.protocol!=="http:"&&A.protocol!=="https:")return{ok:!1,error:`refused protocol ${A.protocol} (only http/https)`};let t=A.hostname.toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,"");if(AL.has(t)||t.endsWith(".localhost")||t.endsWith(".internal"))return{ok:!1,error:`refused internal host ${t}`};let r=Or.isIP(t);return r!==0&&!Xg(t)?{ok:!1,error:`refused private address ${t}`}:{ok:!0,url:A,host:t,isLiteralIp:r!==0}}async function Bd(e,{lookupFn:A=eL.promises.lookup}={}){let t=tL(e);if(!t.ok)return t;if(t.isLiteralIp)return{ok:!0,url:t.url};let r;try{r=await A(t.host,{all:!0,verbatim:!0})}catch{return{ok:!1,error:`refused: ${t.host} did not resolve`}}return!Array.isArray(r)||r.length===0||r.some(n=>!Xg(n.address))?{ok:!1,error:`refused: ${t.host} resolves to a non-public address`}:{ok:!0,url:t.url,addresses:r}}async function ud(){let e,A;try{let o=await Promise.resolve().then(()=>zw(Ed(),1));e=o.Agent,A=o.fetch}catch{return null}if(typeof e!="function"||typeof A!="function")return null;let t=o=>String(o).toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,""),r=new Map,n=o=>(Array.isArray(o)?o:[o]).map(a=>typeof a=="string"?{address:a}:a).filter(a=>a&&a.address).map(a=>({address:a.address,family:a.family||(Or.isIPv6(a.address)?6:4)})),s=o=>{let a=t(o);if(Or.isIP(a))return[{address:a,family:Or.isIPv6(a)?6:4}];let g=r.get(a);if(!g||!g.length)throw new Error(`refused: unpinned host ${o} during pinned fetch`);return g},i=new e({connect:{lookup(o,a,g){let l;try{l=s(o)}catch(c){return g(c)}return a?.all?g(null,l):g(null,l[0].address,l[0].family)}}});return{dispatcher:i,fetch:(o,a={})=>A(o,{...a,dispatcher:i}),pin(o,a,g){r.set(t(o),n(typeof a=="string"?[{address:a,family:g}]:a))},resolve:s,async close(){try{await i.destroy()}catch{}}}}var AL,Id=De(()=>{AL=new Set(["localhost","metadata.google.internal","metadata.goog"])});import{createHash as rL}from"node:crypto";function oL(e){let A=String(e||"").toLowerCase();return dd.includes(A)||/(^|-)(api[-_]?key|key|token|secret|auth|authorization|session|cookie|signature|access)(-|$)/.test(A)}function aL(e){let A={};for(let[t,r]of Object.entries(e||{}))oL(t)||(A[t]=r);return A}function cL(e,A){if(!e)throw new Error(`HTTP redirect from ${A} missing Location`);let t=new URL(String(e),String(A));if(t.protocol!=="http:"&&t.protocol!=="https:")throw new Error(`HTTP redirect from ${A} used unsupported protocol ${t.protocol}`);return t.toString()}function gL(e,A){return new URL(String(e)).origin===new URL(String(A)).origin}function lL(e,A,t){let r={};for(let[a,g]of Object.entries(t||{}))r[a.toLowerCase()]=g;let n=Object.keys(r).filter(a=>/(^|-)(api[-_]?key|key|token|secret|auth|authorization|session|cookie|signature|access)(-|$)/.test(a)),i=[...new Set([...dd,...n])].sort().map(a=>`${a}=${r[a]??""}`).join(`
|
|
46
|
-
`),o=rL("sha256").update(i).digest("hex").slice(0,32);return`${e} ${A} ${o}`}function QL(e,A){let t=Number(A);return Number.isFinite(t)&&t>0?Math.min(t*1e3,Cd):Math.min(250*2**e,Cd)+Math.floor(Math.random()*100)}async function BL(e,{fetchImpl:A,method:t,headers:r,body:n,timeoutMs:s,lookupFn:i,realFetch:o}){let a=new AbortController,g=setTimeout(()=>a.abort(),s),l=null,c=A;try{let Q=String(e),B={...r||{}};for(let E=0;E<=fd;E+=1){let u=await c(Q,{method:t,headers:B,body:n,signal:a.signal,redirect:"manual"}),h=await u.text(),I=null;if(h)try{I=JSON.parse(h)}catch{I=null}if(iL.has(u.status)){if(t!=="GET"&&t!=="HEAD"){let f=new Error(`HTTP ${u.status} ${t} ${Q} redirected non-idempotent request`);throw f.status=u.status,f.body=I??h.slice(0,300),f}if(E===fd)throw new Error(`HTTP redirect loop for ${e}`);let C=cL(u.headers?.get?.("location"),Q);if(!gL(C,Q)){let f=await Bd(C,i?{lookupFn:i}:{});if(!f.ok){let R=new Error(`HTTP redirect from ${Q} ${f.error}`);throw R.status=u.status,R}B=aL(B),o&&f.addresses?.length&&(l||(l=await ud()),l&&(l.pin(new URL(C).hostname,f.addresses[0].address,f.addresses[0].family),c=l.fetch))}Q=C;continue}if(!u.ok){let C=new Error(`HTTP ${u.status} ${t} ${Q}`);throw C.status=u.status,C.retryAfter=u.headers?.get?.("retry-after")??null,C.body=I??h.slice(0,300),C}return I??h}throw new Error(`HTTP redirect loop for ${e}`)}finally{clearTimeout(g),l&&await l.close()}}async function wd(e,A={}){let t=A.fetchImpl||globalThis.fetch;if(typeof t!="function")throw new Error("fetch unavailable \u2014 pass opts.fetchImpl");let r=A.timeoutMs??12e3,n=(A.method||"GET").toUpperCase(),s={Accept:"application/json",...A.headers||{}},i=A.body;i!=null&&typeof i!="string"&&(s["Content-Type"]=s["Content-Type"]||"application/json",i=JSON.stringify(i));let o=Number.isInteger(A.retries)?Math.max(A.retries,0):sL,a=A.lookupFn,g=!A.fetchImpl,l=async()=>{let u;for(let h=0;h<=o;h++)try{return await BL(e,{fetchImpl:t,method:n,headers:s,body:i,timeoutMs:r,lookupFn:a,realFetch:g})}catch(I){u=I;let C=I?.status,D=I?.name==="AbortError",f=new Set([408,425,429]),R=C!=null?f.has(C)||nL.has(C)&&hd.has(n):!D&&hd.has(n);if(h===o||!R)throw I;await EL(QL(h,I?.retryAfter))}throw u};if(!(A.dedupe!==!1&&n==="GET"&&i==null))return l();let Q=lL(n,e,s),B=jg.get(Q);if(B)return B;let E=l().finally(()=>jg.delete(Q));return jg.set(Q,E),E}var nL,hd,sL,Cd,dd,iL,fd,jg,EL,yd=De(()=>{Id();nL=new Set([408,425,429,500,502,503,504]),hd=new Set(["GET","HEAD","OPTIONS","PUT","DELETE"]),sL=2,Cd=4e3,dd=["authorization","x-api-key","x-tensor-api-key","0x-api-key","api-key","cookie","proxy-authorization"],iL=new Set([301,302,303,307,308]),fd=3;jg=new Map;EL=e=>new Promise(A=>setTimeout(A,e))});function hL({testnet:e,baseUrl:A}={}){if(A)return A.replace(/\/$/,"").endsWith("/info")?A:`${A.replace(/\/$/,"")}/info`;if(process.env.HL_INFO_URL)return process.env.HL_INFO_URL;if(process.env.HL_API_URL){let t=process.env.HL_API_URL.replace(/\/$/,"");return t.endsWith("/info")?t:`${t}/info`}return e||process.env.HL_TESTNET==="1"?IL:uL}async function $g(e,A={}){if(!e||!e.type)throw new Error("hlInfo requires body.type");let t=hL(A);return wd(t,{method:"POST",body:e,fetchImpl:A.fetchImpl,timeoutMs:A.timeoutMs})}async function pd(e={}){return $g({type:"meta"},e)}async function md({coin:e,interval:A="1h",startTime:t,endTime:r},n={}){if(!e)throw new Error("hlCandleSnapshot requires coin");let s={type:"candleSnapshot",req:{coin:String(e),interval:A,startTime:t??Date.now()-24*3600*1e3,endTime:r??Date.now()}};return $g(s,n)}async function Dd({coin:e,startTime:A,endTime:t},r={}){if(!e)throw new Error("hlFundingHistory requires coin");return $g({type:"fundingHistory",coin:String(e),startTime:A??Date.now()-24*3600*1e3,endTime:t??Date.now()},r)}var uL,IL,el=De(()=>{yd();uL="https://api.hyperliquid.xyz/info",IL="https://api.hyperliquid-testnet.xyz/info"});import{createHash as CL}from"node:crypto";function UA(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function zr(e){return typeof e=="number"&&Number.isFinite(e)}function rl(e){if(e==null||typeof e!="object"||Object.isFrozen(e))return e;if(Array.isArray(e)){for(let A of e)rl(A);return Object.freeze(e)}for(let A of Object.keys(e))rl(e[A]);return Object.freeze(e)}function Wt(e){if(Array.isArray(e))return e.map(Wt);if(e!=null&&typeof e=="object"){let A={};for(let t of Object.keys(e).sort())A[t]=Wt(e[t]);return A}return e}function Al(e){return{netPnlUsd:e.metrics.netPnlUsd,netPnlPct:e.metrics.netPnlPct,maxDrawdownPct:e.metrics.maxDrawdownPct,winRate:e.metrics.winRate,profitFactor:e.metrics.profitFactor,tradeCount:e.metrics.tradeCount,sharpe:e.metrics.sharpe,turnoverUsd:e.metrics.turnoverUsd,exposurePct:e.metrics.exposurePct}}function kd(e){return{feesUsd:e.costs.feesUsd,builderFeesUsd:e.costs.builderFeesUsd,fundingUsd:e.costs.fundingUsd,slippageUsd:e.costs.slippageUsd}}function dL(e){return(e.feesUsd||0)+(e.builderFeesUsd||0)+Math.max(0,e.fundingUsd||0)+(e.slippageUsd||0)}function wL(e){let A=0;for(let t of e.trades)t.grossPnlUsd>0&&(A+=t.grossPnlUsd);return A}function yL(e,A,t){return!(!e||e.tradeCount<Math.max(1,Math.min(t,3))||!(e.netPnlUsd>0)||!(e.profitFactor>1)||!(e.maxDrawdownPct<=A.maxDailyLossPct))}function Fd(e){if(!UA(e))throw new TypeError("evidence artifact must be a plain object");if(!fL.includes(e.status))throw new TypeError("evidence artifact status is invalid");for(let A of["strategyHash","compilerHash","barsHash"])if(typeof e[A]!="string"||!/^[0-9a-f]{64}$/.test(e[A]))throw new TypeError(`evidence artifact ${A} must be a sha256 hash`);if(!UA(e.split))throw new TypeError("evidence artifact split required");if(!Array.isArray(e.flags))throw new TypeError("evidence artifact flags must be an array");if(!UA(e.walkForward)||!Array.isArray(e.walkForward.windows))throw new TypeError("evidence artifact walkForward windows required");if(e.status==="pass_live_eligible"&&(!UA(e.train)||!UA(e.holdout)))throw new TypeError("live-eligible evidence artifact requires train and holdout facts");return Wt({barsHash:e.barsHash,compilerHash:e.compilerHash,flags:e.flags.map(A=>Wt(A)),holdout:e.holdout??null,split:e.split,status:e.status,strategyHash:e.strategyHash,train:e.train??null,walkForward:{passRate:e.walkForward.passRate,windowsRun:e.walkForward.windowsRun??e.walkForward.windows.length,windows:e.walkForward.windows.map(A=>({index:A.index,trainStartIndex:A.trainStartIndex,trainEndIndex:A.trainEndIndex,passed:A.passed,reason:A.reason,evalStartIndex:A.evalStartIndex,evalEndIndex:A.evalEndIndex,metrics:A.metrics}))}})}function Rd(e){return CL("sha256").update(JSON.stringify(Fd(e)),"utf8").digest("hex")}function fA(e,A,t=0){if(!Number.isInteger(e)||e<t)throw new Error(`${A} must be an integer >= ${t}`);return e}function tl(e,A){if(!UA(e)||!UA(e.metrics))throw new Error(`${A} metrics required`);let t=fA(e.tradeCount,`${A}.tradeCount`);if(e.metrics.tradeCount!==t)throw new Error(`${A} tradeCount contradicts metrics.tradeCount`);for(let r of["netPnlUsd","profitFactor","maxDrawdownPct"])if(!zr(e.metrics[r]))throw new Error(`${A}.metrics.${r} must be finite`);if(e.metrics.maxDrawdownPct<0)throw new Error(`${A}.metrics.maxDrawdownPct must be >= 0`);return e.metrics}function pL(e,{maxDailyLossPct:A}={}){let t=e.split,r=fA(t.trainStartIndex,"split.trainStartIndex"),n=fA(t.trainEndIndex,"split.trainEndIndex"),s=fA(t.trainBarCount,"split.trainBarCount",1),i=fA(t.holdoutStartIndex,"split.holdoutStartIndex"),o=fA(t.holdoutEndIndex,"split.holdoutEndIndex"),a=fA(t.holdoutBarCount,"split.holdoutBarCount",1);if(r!==0||n-r+1!==s||i!==n+1||o-i+1!==a)throw new Error("evidence split must be contiguous, chronological, and count-consistent");if(!zr(t.trainFraction)||t.trainFraction<=0||t.trainFraction>=1)throw new Error("split.trainFraction must be in (0,1)");tl(e.train,"train");let g=tl(e.holdout,"holdout");if(g.tradeCount<1||g.netPnlUsd<=0||g.profitFactor<=1)throw new Error("live-eligible holdout metrics do not pass");if(zr(A)&&g.maxDrawdownPct>A)throw new Error("live-eligible holdout drawdown exceeds strategy risk");if(e.flags.length>0)throw new Error("live-eligible evidence cannot contain failure flags");let l=e.walkForward,c=l.windows;if(c.length<1||l.windowsRun!==c.length)throw new Error("live-eligible walk-forward windowsRun must match nonempty windows");let Q=0,B=-1;for(let u=0;u<c.length;u++){let h=c[u];if(!UA(h)||h.index!==u||typeof h.passed!="boolean")throw new Error("walk-forward windows must be ordered and structurally valid");let I=fA(h.trainStartIndex,`walkForward.windows[${u}].trainStartIndex`),C=fA(h.trainEndIndex,`walkForward.windows[${u}].trainEndIndex`),D=fA(h.evalStartIndex,`walkForward.windows[${u}].evalStartIndex`),f=fA(h.evalEndIndex,`walkForward.windows[${u}].evalEndIndex`);if(I!==0||C>=D||D>f||D<=B)throw new Error("walk-forward windows must be chronological and disjoint");if(B=f,h.passed){if(Q+=1,h.reason!=="pass")throw new Error("passed walk-forward window reason must be pass");let R=tl({metrics:h.metrics,tradeCount:h.metrics?.tradeCount},`walkForward.windows[${u}]`);if(R.tradeCount<1||R.netPnlUsd<=0||R.profitFactor<=1)throw new Error("passed walk-forward window metrics do not pass");if(zr(A)&&R.maxDrawdownPct>A)throw new Error("passed walk-forward drawdown exceeds strategy risk")}else if(h.reason==="pass")throw new Error("failed walk-forward window cannot have pass reason")}let E=Q/c.length;if(!zr(l.passRate)||Math.abs(l.passRate-E)>Number.EPSILON||E<.6)throw new Error("walk-forward passRate contradicts concrete windows or is below live threshold")}function Sd(e,A={}){if(typeof e?.id!="string"||!/^[0-9a-f]{64}$/.test(e.id))throw new Error("evidence.id must be a sha256 evidence artifact hash");let t=Fd(e),r=Wt({id:e.id,...t});if(JSON.stringify(Wt(e))!==JSON.stringify(r))throw new Error("evidence artifact contains fields unbound from its deterministic identity");let n=Rd(e);if(e.id!==n)throw new Error("evidence.id does not match its deterministic artifact facts digest");return e.status==="pass_live_eligible"&&pL(e,A),e}function nl({strategy:e,bars:A,backtestOptions:t={},trainFraction:r=.7,walkForwardWindows:n=3,minTrades:s=10}={}){let i=[];if(!UA(e))throw new TypeError("strategy must be a plain object");if(!Array.isArray(A))throw new TypeError("bars must be an array");if(!UA(t))throw new TypeError("backtestOptions must be a plain object");if(!zr(r)||r<=0||r>=1)throw new TypeError("trainFraction must be in (0,1)");if(!Number.isInteger(n)||n<1)throw new TypeError("walkForwardWindows must be a positive integer");if(!Number.isInteger(s)||s<0)throw new TypeError("minTrades must be an integer >= 0");let o=Ge(e),a=Zr(o),g=ns(A),l=A.length,c=(_=[],te={})=>bd({status:"fail",strategy:o,sHash:a,barsHash:g,split:te.split||{trainStartIndex:0,trainEndIndex:-1,trainBarCount:0,holdoutStartIndex:0,holdoutEndIndex:-1,holdoutBarCount:0,trainFraction:r},train:te.train||null,holdout:te.holdout||null,walkForward:te.walkForward||{windows:[],passRate:0},flags:[...i,..._]});if(l<10)return c([{type:"insufficient_bars",message:"need at least 10 bars for evidence"}]);let Q=Math.floor(l*r),B=Q,E=l-B;if(Q<5||E<3)return c([{type:"invalid_windowing",message:"train/holdout split too small",trainCount:Q,holdoutCount:E}]);let u=A.slice(0,Q),h=A.slice(B),I,C;try{I=ut(o,u,t),C=ut(o,h,t)}catch(_){return c([{type:"backtest_error",message:String(_.message||_)}])}let D={metrics:Al(I),costs:kd(I),tradeCount:I.metrics.tradeCount},f={metrics:Al(C),costs:kd(C),tradeCount:C.metrics.tradeCount},R={trainStartIndex:0,trainEndIndex:Q-1,trainBarCount:Q,holdoutStartIndex:B,holdoutEndIndex:l-1,holdoutBarCount:E,trainFraction:r},S=[],d=Math.floor(l/(n+1));if(d<3)i.push({type:"invalid_windowing",message:"walk-forward window size too small",wfSize:d});else for(let _=0;_<n;_++){let te=d*(_+1),Re=te,fe=Math.min(l,Re+d);if(fe-Re<3||te<3){S.push({index:_,trainStartIndex:0,trainEndIndex:te-1,evalStartIndex:Re,evalEndIndex:fe-1,passed:!1,reason:"window_too_small",metrics:null});continue}let wA=A.slice(Re,fe),Es;try{Es=ut(o,wA,t)}catch{S.push({index:_,trainStartIndex:0,trainEndIndex:te-1,evalStartIndex:Re,evalEndIndex:fe-1,passed:!1,reason:"backtest_error",metrics:null});continue}let Bs=Al(Es),us=yL(Bs,o.risk,s);S.push({index:_,trainStartIndex:0,trainEndIndex:te-1,evalStartIndex:Re,evalEndIndex:fe-1,passed:us,reason:us?"pass":"fail_metrics",metrics:Bs})}let se=S.filter(_=>_.passed).length,ke=S.length===0?0:se/S.length,Le={windows:S,passRate:ke,windowsRun:S.length};f.metrics.tradeCount===0&&D.metrics.tradeCount===0&&i.push({type:"no_trades",message:"no trades in train or holdout"}),f.metrics.tradeCount===0&&i.push({type:"absent_oos_trades",message:"holdout produced no trades"}),f.metrics.netPnlUsd<0&&i.push({type:"holdout_loss",message:"holdout netPnlUsd is negative"}),D.metrics.netPnlUsd>0&&f.metrics.netPnlUsd<0&&D.metrics.netPnlUsd>Math.abs(f.metrics.netPnlUsd)*.25?i.push({type:"overfit",message:"profitable train with losing holdout (OOS collapse)"}):D.metrics.netPnlUsd>0&&f.metrics.netPnlUsd>0&&f.metrics.netPnlUsd<D.metrics.netPnlUsd*.1&&D.metrics.tradeCount>=s&&i.push({type:"severe_oos_collapse",message:"holdout pnl collapsed vs train"});let me=dL(f.costs),w=wL(C);w>0&&me>w&&i.push({type:"costs_exceed_gross",message:"holdout costs exceed gross gains"});let H=i.some(_=>["insufficient_bars","invalid_windowing","absent_oos_trades","holdout_loss","no_trades","severe_oos_collapse","backtest_error"].includes(_.type)),q=i.some(_=>_.type==="overfit"),ee="fail";return f.metrics.tradeCount>=s&&f.metrics.netPnlUsd>0&&f.metrics.profitFactor>1&&f.metrics.maxDrawdownPct<=o.risk.maxDailyLossPct&&ke>=.6&&!(w>0&&me>w)&&!q&&!i.some(_=>_.type==="severe_oos_collapse"||_.type==="invalid_windowing")?ee="pass_live_eligible":!H&&f.metrics.tradeCount>0&&D.metrics.tradeCount>0&&Number.isFinite(f.metrics.netPnlUsd)?(ee="pass_paper_only",f.metrics.tradeCount<s&&i.push({type:"undersampled",message:"holdout trades below minTrades"})):q&&f.metrics.tradeCount>0&&D.metrics.netPnlUsd>0?ee="fail":f.metrics.tradeCount>0&&D.metrics.tradeCount>0&&!H?ee="pass_paper_only":ee="fail",f.metrics.netPnlUsd<0&&(ee=ee==="pass_live_eligible"?"fail":ee==="pass_paper_only"?"pass_paper_only":"fail",ee="fail"),bd({status:ee,strategy:o,sHash:a,barsHash:g,split:R,train:D,holdout:f,walkForward:Le,flags:i})}function bd({status:e,strategy:A,sHash:t,barsHash:r,split:n,train:s,holdout:i,walkForward:o,flags:a}){let g={status:e,strategyHash:t,compilerHash:Ot,barsHash:r,split:n,train:s,holdout:i,walkForward:o,flags:a};return g.id=Rd(g),rl(Wt(JSON.parse(JSON.stringify(g))))}var fL,sl=De(()=>{zt();Pt();lo();fL=Object.freeze(["fail","pass_paper_only","pass_live_eligible"])});import{createHash as mL,createHmac as DL,timingSafeEqual as SG}from"node:crypto";function il(e){return e===null||typeof e!="object"?JSON.stringify(e):Array.isArray(e)?`[${e.map(il).join(",")}]`:`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${il(e[t])}`).join(",")}}`}function Nd(e){let A=String(e?.ORACLE_STAMP_HMAC_SECRET||"").trim();return A.length>=16?A:""}function Md(e=process.env){return Nd(process.env)||Nd(e)}function RL(e){let{prepareHash:A,prepareMac:t,note:r,...n}=e||{};return n}function SL(e){let A=RL(e);return mL("sha256").update(il(A)).digest("hex")}function NL(e,A=Md()){return A?DL("sha256",A).update(String(e)).digest("hex"):""}function Ud(e,{provider:A,kind:t,env:r=process.env,nowMs:n=Date.now(),expiresAtMs:s}={}){if(!e||typeof e!="object")throw new Error("stampPrepared: payload object required");let i=Object.prototype.hasOwnProperty.call(e,"oraclePrepared");if(i&&typeof e.oraclePrepared!="boolean")throw new Error("stampPrepared: oraclePrepared must be boolean");let o={...e,provider:e.provider||A,kind:e.kind||t,requiresUserSignature:e.requiresUserSignature!==!1,signingReady:!1,broadcastReady:!1,executionReady:!1,oraclePrepared:i?e.oraclePrepared:!0};if(!o.provider)throw new Error("stampPrepared: provider required");if(!o.kind)throw new Error("stampPrepared: kind required");let a=Number(n),g=s==null?a+bL:Number(s),l=g-a;if(!Number.isSafeInteger(a)||!Number.isSafeInteger(g)||l<=0||l>FL)throw new Error("stampPrepared: bounded preparedAt/expiresAt required");let Q={...o,preparedAt:a,expiresAt:g,prepareVersion:kL},B=SL(Q),E=Md(r),u=E?NL(B,E):void 0,h={...Q,prepareHash:B};return u&&(h.prepareMac=u),h}var kL,bL,FL,Ld=De(()=>{kL=2,bL=300*1e3,FL=(()=>{let e=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(e)&&e>0?e:1800*1e3})()});function ss(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function UL(e){return String(e).toLowerCase().replace(/[^a-z0-9]/g,"")}function al(e,A="value"){if(Array.isArray(e)){e.forEach((t,r)=>al(t,`${A}[${r}]`));return}if(ss(e))for(let[t,r]of Object.entries(e)){let n=UL(t);if(ML.some(s=>n.includes(s)))throw new Error(`handoff: forbidden secret-like field at ${A}.${t}`);al(r,`${A}.${t}`)}}function ol(e){return typeof e=="number"&&Number.isFinite(e)&&e>0}function Td({strategy:e,evidence:A,shadow:t,caps:r,nowMs:n=Date.now(),env:s=process.env}={}){if(al({strategy:e,evidence:A,shadow:t,caps:r},"handoff"),!ss(e))throw new Error("handoff: strategy required");if(!ss(A))throw new Error("handoff: evidence required");if(!ss(t))throw new Error("handoff: shadow required");if(!ss(r))throw new Error("handoff: caps required");if(typeof t.id!="string"||!t.id.trim())throw new Error("handoff: shadow.id required");if(typeof t.stateHash!="string"||!/^[0-9a-f]{64}$/.test(t.stateHash))throw new Error("handoff: shadow.stateHash must be a sha256 hash");if(t.status!=="running")throw new Error("handoff: shadow.status must be running");if(!Number.isInteger(t.cursor)||t.cursor<=0)throw new Error("handoff: shadow.cursor must be a positive integer");if(!Number.isInteger(t.updatedAt)||t.updatedAt<=0||t.updatedAt>n)throw new Error("handoff: shadow.updatedAt must be a positive integer <= nowMs");let i=Ge(e,{nowMs:n}),o=Je(i);if(Sd(A,{maxDailyLossPct:i.risk.maxDailyLossPct}),A.status!=="pass_live_eligible")throw new Error("handoff: evidence.status must be pass_live_eligible");if(A.strategyHash!==o.strategyHash)throw new Error("handoff: evidence.strategyHash mismatch");if(A.compilerHash!==o.compilerHash)throw new Error("handoff: evidence.compilerHash mismatch");let a=["perStrategyNotionalUsd","maxLeverage","dailyLossCapUsd","chainAllowlist","assetAllowlist","expiresAt","killSwitchRequired"];for(let Q of a)if(!(Q in r)||r[Q]==null)throw new Error(`handoff: caps.${Q} required`);if(!ol(r.perStrategyNotionalUsd))throw new Error("handoff: caps.perStrategyNotionalUsd must be positive");if(r.perStrategyNotionalUsd>o.strategy.risk.maxNotionalUsd)throw new Error("handoff: caps.perStrategyNotionalUsd exceeds strategy.risk.maxNotionalUsd");if(!ol(r.maxLeverage))throw new Error("handoff: caps.maxLeverage must be positive");if(r.maxLeverage>o.strategy.risk.maxLeverage)throw new Error("handoff: caps.maxLeverage exceeds strategy.risk.maxLeverage");if(!ol(r.dailyLossCapUsd))throw new Error("handoff: caps.dailyLossCapUsd must be positive");let g=o.strategy.risk.maxNotionalUsd*(o.strategy.risk.maxDailyLossPct/100);if(r.dailyLossCapUsd>g)throw new Error("handoff: caps.dailyLossCapUsd exceeds strategy daily loss ceiling");if(!Array.isArray(r.chainAllowlist)||r.chainAllowlist.length===0)throw new Error("handoff: caps.chainAllowlist must be a non-empty array");if(!r.chainAllowlist.every(Q=>Q==="hyperliquid"))throw new Error("handoff: caps.chainAllowlist must include only hyperliquid");if(!r.chainAllowlist.includes("hyperliquid"))throw new Error("handoff: caps.chainAllowlist must include hyperliquid");if(!Array.isArray(r.assetAllowlist)||r.assetAllowlist.length===0)throw new Error("handoff: caps.assetAllowlist must be a non-empty array");if(r.assetAllowlist.length!==1||r.assetAllowlist[0]!==o.strategy.market.coin)throw new Error("handoff: caps.assetAllowlist must contain only the strategy market coin");if(!Number.isInteger(r.expiresAt)||!(r.expiresAt>n))throw new Error("handoff: caps.expiresAt must be an integer > nowMs");if(r.expiresAt>o.strategy.risk.expiresAt)throw new Error("handoff: caps.expiresAt exceeds strategy.risk.expiresAt");if(r.killSwitchRequired!==!0)throw new Error("handoff: caps.killSwitchRequired must be exactly true");let l={perStrategyNotionalUsd:r.perStrategyNotionalUsd,maxLeverage:r.maxLeverage,dailyLossCapUsd:r.dailyLossCapUsd,chainAllowlist:[...r.chainAllowlist],assetAllowlist:[...r.assetAllowlist],expiresAt:r.expiresAt,killSwitchRequired:!0},c={strategyHash:o.strategyHash,compilerHash:o.compilerHash,evidence:JSON.parse(JSON.stringify(A)),shadow:{id:t.id,stateHash:t.stateHash,status:t.status,cursor:t.cursor,updatedAt:t.updatedAt},compiled:{strategyHash:o.strategyHash,compilerHash:o.compilerHash,compilerVersion:is,venue:"hyperliquid",market:{coin:o.strategy.market.coin,kind:"perp",interval:o.strategy.market.interval},risk:{...o.strategy.risk},strategy:JSON.parse(JSON.stringify(o.strategy))},arming:{liveBroadcast:!1,requiresExplicitUserArm:!0,caps:l},requiresUserSignature:!0,signingReady:!1,broadcastReady:!1,executionReady:!1};return Ud(c,{provider:"hl-strategy",kind:"strategy-live-handoff",env:s})}var ML,xd=De(()=>{zt();sl();Pt();Ld();ML=["privatekey","secretkey","seed","mnemonic","passphrase","password","keystore","keymaterial","apikey","authtoken","accesstoken","refreshtoken","credential","bearer","signature","authorization","xprv","xpriv","wif"]});function _r(e,A){let t=Number(e);if(!Number.isFinite(t))throw new TypeError(`${A} must be finite`);return t}function Kr(e,A){if(!Number.isSafeInteger(e)||e<0)throw new TypeError(`${A} must be a non-negative safe integer`);return e}function os(e){if(Array.isArray(e))for(let A of e)os(A);else if(e&&typeof e=="object")for(let A of Object.values(e))os(A);return Object.freeze(e)}function TL(e){let A=LL[e];if(!A)throw new TypeError(`unsupported strategy interval: ${e}`);return A}function xL(e,{endTime:A=Number.MAX_SAFE_INTEGER}={}){if(!Array.isArray(e))throw new TypeError("Hyperliquid candles must be an array");Kr(A,"endTime");let t=new Map;for(let r=0;r<e.length;r++){let n=e[r];if(!n||typeof n!="object"||Array.isArray(n))throw new TypeError(`candles[${r}] must be an object`);let s=Kr(Number(n.t),`candles[${r}].t`);if(Kr(Number(n.T),`candles[${r}].T`)>A)continue;let o={t:s,o:_r(n.o,`candles[${r}].o`),h:_r(n.h,`candles[${r}].h`),l:_r(n.l,`candles[${r}].l`),c:_r(n.c,`candles[${r}].c`),v:_r(n.v,`candles[${r}].v`)};if(o.h<Math.max(o.o,o.c,o.l))throw new TypeError(`candles[${r}].h is below another price`);if(o.l>Math.min(o.o,o.c,o.h))throw new TypeError(`candles[${r}].l is above another price`);if(o.v<0)throw new TypeError(`candles[${r}].v must be non-negative`);let a=t.get(s);if(a&&JSON.stringify(a)!==JSON.stringify(o))throw new TypeError(`conflicting duplicate candle at timestamp ${s}`);a||t.set(s,o)}return os([...t.values()].sort((r,n)=>r.t-n.t))}function YL(e,A){if(!Array.isArray(e))throw new TypeError("Hyperliquid funding history must be an array");let t=new Map;for(let r=0;r<e.length;r++){let n=e[r];if(!n||typeof n!="object"||Array.isArray(n))throw new TypeError(`funding[${r}] must be an object`);let s=Kr(Number(n.time),`funding[${r}].time`);s>A||t.set(s,{time:s,fundingRate:_r(n.fundingRate,`funding[${r}].fundingRate`)})}return[...t.values()].sort((r,n)=>r.time-n.time)}async function GL({coin:e,startTime:A,endTime:t},r){let n=[],s=Math.max(0,A-288e5),i=!1;for(let o=0;o<16&&s<=t;o++){let a=await Dd({coin:e,startTime:s,endTime:t},r);if(!Array.isArray(a))throw new TypeError("Hyperliquid funding history must be an array");n.push(...a);let g=s;for(let l of a){let c=Number(l?.time);Number.isSafeInteger(c)&&c>g&&(g=c)}if(a.length<500||g>=t){i=!0;break}if(g<=s)throw new Error("Hyperliquid funding history pagination did not advance");s=g+1}if(!i)throw new Error("strategy history exceeds the bounded funding history limit");return YL(n,t)}function JL(e,A,t){let r=0,n=null;return e.map(s=>{let i=s.t+t,o=0;for(;r<A.length&&A[r].time<i;){let a=A[r];n=a.fundingRate,a.time>=s.t&&(o+=a.fundingRate),r+=1}return n==null?{...s,fundingPaymentRate:o}:{...s,fundingRate:n,fundingPaymentRate:o}})}async function Yd(e,A={}){if(!e||typeof e!="object"||Array.isArray(e))throw new TypeError("strategy history input must be an object");let t=String(e.coin||"").trim().toUpperCase();if(!/^[A-Z0-9][A-Z0-9._-]{0,11}$/.test(t))throw new TypeError("coin must be an uppercase Hyperliquid asset id");let r=String(e.interval||"15m"),n=TL(r);if(e.endTime==null)throw new TypeError("endTime is required for deterministic history");let s=Kr(e.endTime,"endTime"),i=e.count==null?1500:e.count;if(!Number.isInteger(i)||i<20||i>5e3)throw new TypeError("count must be an integer from 20 to 5000");let o=e.startTime==null?Math.max(0,s-i*n):Kr(e.startTime,"startTime");if(o>=s)throw new TypeError("startTime must be before endTime");let[a,g]=await Promise.all([md({coin:t,interval:r,startTime:o,endTime:s},A),GL({coin:t,startTime:o,endTime:s},A)]),l=xL(a,{endTime:s}),c=os(JL(l,g,n));return os({coin:t,interval:r,range:{startTime:o,endTime:s},bars:c})}var LL,Gd=De(()=>{el();LL=Object.freeze({"1m":6e4,"3m":18e4,"5m":3e5,"15m":9e5,"30m":18e5,"1h":36e5,"2h":72e5,"4h":144e5,"8h":288e5,"12h":432e5,"1d":864e5})});function vL(e){let A=[];if(!e||typeof e!="object"||Array.isArray(e))return{ok:!1,errors:[{path:"market",message:"must be a plain object"}],market:null};for(let t of Object.keys(e))VL.has(t)||A.push({path:`market.${t}`,message:"unknown field is not allowed"});return(typeof e.coin!="string"||e.coin.length===0||e.coin.length>32)&&A.push({path:"market.coin",message:"must be a non-empty string max 32"}),(typeof e.interval!="string"||!HL.has(e.interval))&&A.push({path:"market.interval",message:"must be a supported interval"}),A.length?{ok:!1,errors:A,market:null}:{ok:!0,errors:[],market:{coin:e.coin,interval:e.interval}}}async function qL(e={}){let A=await pd(e);if(!A||!Array.isArray(A.universe))throw new TypeError("Hyperliquid market metadata must contain universe");return Object.freeze(A.universe.map((t,r)=>{if(!t||typeof t.name!="string"||!t.name)throw new TypeError(`Hyperliquid market metadata universe[${r}].name is invalid`);return t.name}))}var HL,VL,Jd,Hd=De(()=>{el();xd();Gd();HL=new Set(["1m","3m","5m","15m","30m","1h","2h","4h","8h","12h","1d"]),VL=new Set(["coin","interval"]);Jd=Object.freeze({id:"hyperliquid",validateMarket:vL,fetchBars:Yd,listMarkets:qL,prepareIntent(e){return Td(e)}})});function PL(e){if(!e||typeof e!="object"||Array.isArray(e))throw new TypeError("strategy venue adapter must be an object");if(typeof e.id!="string"||!/^[a-z0-9][a-z0-9._-]{0,63}$/.test(e.id))throw new TypeError("strategy venue adapter id is malformed");for(let A of WL.slice(1))if(typeof e[A]!="function")throw new TypeError(`strategy venue adapter ${e.id} requires ${A}()`);for(let A of["fetchBars","listMarkets"])if(e[A]!=null&&typeof e[A]!="function")throw new TypeError(`strategy venue adapter ${e.id} ${A} must be a function`);return e}function cl(e){return typeof e!="string"?null:OL.get(e)??null}function gl(e){let A=cl(e);if(!A)throw new Error(`unknown strategy venue: ${String(e)}`);return A}var WL,Vd,OL,WG,ll=De(()=>{Hd();WL=Object.freeze(["id","validateMarket","prepareIntent"]);Vd=[Jd].map(PL),OL=new Map(Vd.map(e=>[e.id,e])),WG=Object.freeze([...Vd])});import{createHash as zL}from"node:crypto";function aA(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function Ie(e){return typeof e=="number"&&Number.isFinite(e)}function _d(e){return Number.isInteger(e)&&e>0}function Il(e){if(e==null||typeof e!="object"||Object.isFrozen(e))return e;if(Array.isArray(e)){for(let A of e)Il(A);return Object.freeze(e)}for(let A of Object.keys(e))Il(e[A]);return Object.freeze(e)}function hl(e){if(Array.isArray(e))return e.map(hl);if(e!=null&&typeof e=="object"){let A={};for(let t of Object.keys(e).sort())A[t]=hl(e[t]);return A}return e}function k(e,A,t){e.push({path:A,message:t})}function It(e,A,t,r){for(let n of Object.keys(e))A.has(n)||k(r,t?`${t}.${n}`:n,"unknown field is not allowed")}function $d(e,A,t,r){if(!Ie(e)||!Ie(A)||!Ie(t)||!Ie(r)||r<=0||e<A||e>t)return!1;let n=(e-A)/r;if(!Number.isFinite(n))return!1;let s=Math.round(n);return Math.abs(n-s)<=1e-9}function ul(e,A,t,r){if(aA(e)){if(It(e,new Set(["param"]),A,r),typeof e.param!="string"||!e.param)return k(r,`${A}.param`,"must be a parameter name string"),null;if(!Object.prototype.hasOwnProperty.call(t,e.param))return k(r,`${A}.param`,`unknown parameter "${e.param}"`),null;let n=t[e.param];return!aA(n)||![n.value,n.min,n.max,n.step].every(_d)?(k(r,`${A}.param`,"referenced period parameter value min max and step must be positive integers"),null):{param:e.param}}return _d(e)?e:(k(r,A,"must be a positive integer or {param}"),null)}function Kd(e,A,t,r){return aA(e)?(It(e,new Set(["param"]),A,r),typeof e.param!="string"||!e.param?(k(r,`${A}.param`,"must be a parameter name string"),null):Object.prototype.hasOwnProperty.call(t,e.param)?{param:e.param}:(k(r,`${A}.param`,`unknown parameter "${e.param}"`),null)):Ie(e)?e:(k(r,A,"must be a finite number or {param}"),null)}function Qo(e){switch(e.type){case"input":case"constant":return[];case"indicator":return e.input?[e.input]:[];case"compare":case"cross":return[e.left,e.right].filter(Boolean);case"logic":return Array.isArray(e.inputs)?[...e.inputs]:[];default:return[]}}function tT(e){let A=new Map,t=r=>{let n=A.get(r)||0;if(n===1)return!0;if(n===2)return!1;A.set(r,1);let s=e.get(r);if(s){for(let i of Qo(s))if(e.has(i)&&t(i))return!0}return A.set(r,2),!1};for(let r of e.keys())if(t(r))return!0;return!1}function rT(e,A){if(!aA(e))return k(A,"parameters","must be a plain object"),null;let t=Object.keys(e);if(t.length>Od)return k(A,"parameters",`too many parameters (max ${Od})`),null;let r={};for(let n of t){if(!Xd.test(n)){k(A,`parameters.${n}`,"parameter name is malformed");continue}let s=e[n],i=`parameters.${n}`;if(!aA(s)){k(A,i,"must be a plain object");continue}It(s,qd,i,A);for(let c of qd)c in s||k(A,`${i}.${c}`,"required field is missing");let{value:o,min:a,max:g,step:l}=s;Ie(a)||k(A,`${i}.min`,"must be a finite number"),Ie(g)||k(A,`${i}.max`,"must be a finite number"),(!Ie(l)||l<=0)&&k(A,`${i}.step`,"must be a positive finite number"),Ie(o)||k(A,`${i}.value`,"must be a finite number"),Ie(a)&&Ie(g)&&a>g&&k(A,`${i}.min`,"min must be <= max"),Ie(o)&&Ie(a)&&Ie(g)&&Ie(l)&&l>0&&($d(o,a,g,l)||k(A,`${i}.value`,"value must lie on the declared min/max/step grid")),r[n]={value:o,min:a,max:g,step:l}}return r}function nT(e,A,t,r){let n=`nodes.${A}`;if(!aA(e))return k(r,n,"must be a plain object"),null;if(typeof e.type!="string"||!Pd[e.type])return k(r,`${n}.type`,"unknown or missing node type"),It(e,AT,n,r),null;switch(It(e,Pd[e.type],n,r),(typeof e.id!="string"||!jd.test(e.id))&&k(r,`${n}.id`,"must be a 1-64 char id starting with alphanumeric"),e.type){case"input":return(typeof e.field!="string"||!ZL.has(e.field))&&k(r,`${n}.field`,"must be one of open|high|low|close|volume|fundingRate|openInterest"),{id:e.id,type:"input",field:e.field};case"constant":{let s=Kd(e.value,`${n}.value`,t,r);return{id:e.id,type:"constant",value:s}}case"indicator":{(typeof e.indicator!="string"||!_L.has(e.indicator))&&k(r,`${n}.indicator`,"must be one of sma|ema|rsi|macd|bollinger|atr");let s=e.indicator,i={id:e.id,type:"indicator",indicator:s};if(s==="atr"){"input"in e&&(typeof e.input!="string"||!e.input?k(r,`${n}.input`,"must be a node id string when provided"):i.input=e.input);let o=ul(e.period,`${n}.period`,t,r);o!=null&&(i.period=o)}else typeof e.input!="string"||!e.input?k(r,`${n}.input`,"must be a node id string"):i.input=e.input;if((s==="sma"||s==="ema"||s==="rsi"||s==="bollinger"||s==="atr")&&("period"in e,s!=="macd"))if(!("period"in e))k(r,`${n}.period`,"required field is missing");else{let o=ul(e.period,`${n}.period`,t,r);o!=null&&(i.period=o)}if(s==="macd"){for(let o of["fastPeriod","slowPeriod","signalPeriod"])if(!(o in e))k(r,`${n}.${o}`,"required field is missing");else{let a=ul(e[o],`${n}.${o}`,t,r);a!=null&&(i[o]=a)}"output"in e?$L.has(e.output)?i.output=e.output:k(r,`${n}.output`,"must be line|signal|histogram"):k(r,`${n}.output`,"required field is missing"),"period"in e&&k(r,`${n}.period`,"forbidden for macd"),"stdDev"in e&&k(r,`${n}.stdDev`,"forbidden for macd")}else if(s==="bollinger"){if(!("stdDev"in e))k(r,`${n}.stdDev`,"required field is missing");else{let o=Kd(e.stdDev,`${n}.stdDev`,t,r);o!=null&&(typeof o=="number"&&o<=0?k(r,`${n}.stdDev`,"must be > 0"):i.stdDev=o)}"output"in e?eT.has(e.output)?i.output=e.output:k(r,`${n}.output`,"must be upper|middle|lower"):k(r,`${n}.output`,"required field is missing");for(let o of["fastPeriod","slowPeriod","signalPeriod"])o in e&&k(r,`${n}.${o}`,`forbidden for ${s}`)}else{"output"in e&&k(r,`${n}.output`,`forbidden for ${s}`),"stdDev"in e&&s!=="bollinger"&&k(r,`${n}.stdDev`,`forbidden for ${s}`);for(let o of["fastPeriod","slowPeriod","signalPeriod"])o in e&&k(r,`${n}.${o}`,`forbidden for ${s}`)}return i}case"compare":return(typeof e.op!="string"||!KL.has(e.op))&&k(r,`${n}.op`,"must be gt|gte|lt|lte|eq"),(typeof e.left!="string"||!e.left)&&k(r,`${n}.left`,"must be a node id"),(typeof e.right!="string"||!e.right)&&k(r,`${n}.right`,"must be a node id"),{id:e.id,type:"compare",op:e.op,left:e.left,right:e.right};case"logic":{if((typeof e.op!="string"||!XL.has(e.op))&&k(r,`${n}.op`,"must be and|or|not"),!Array.isArray(e.inputs))return k(r,`${n}.inputs`,"must be an array of node ids"),{id:e.id,type:"logic",op:e.op,inputs:[]};let s=[];for(let i=0;i<e.inputs.length;i++){let o=e.inputs[i];typeof o!="string"||!o?k(r,`${n}.inputs.${i}`,"must be a node id"):s.push(o)}return e.op==="not"?s.length!==1&&k(r,`${n}.inputs`,"not requires exactly one input"):(e.op==="and"||e.op==="or")&&s.length<2&&k(r,`${n}.inputs`,`${e.op} requires at least two inputs`),{id:e.id,type:"logic",op:e.op,inputs:s}}case"cross":return(typeof e.direction!="string"||!jL.has(e.direction))&&k(r,`${n}.direction`,"must be above|below"),(typeof e.left!="string"||!e.left)&&k(r,`${n}.left`,"must be a node id"),(typeof e.right!="string"||!e.right)&&k(r,`${n}.right`,"must be a node id"),{id:e.id,type:"cross",direction:e.direction,left:e.left,right:e.right};default:return null}}function sT(e,A,t){if(!aA(e))return k(A,"risk","must be a plain object"),null;It(e,Wd,"risk",A);for(let Q of Wd)(!(Q in e)||e[Q]==null)&&k(A,`risk.${Q}`,"required field is missing");let r={},n=e.maxLeverage;!Ie(n)||n<=0||n>50?k(A,"risk.maxLeverage","must be a number > 0 and <= 50"):r.maxLeverage=n;let s=e.maxNotionalUsd;!Ie(s)||s<=0?k(A,"risk.maxNotionalUsd","must be a number > 0"):r.maxNotionalUsd=s;let i=e.positionSizePct;!Ie(i)||i<=0||i>100?k(A,"risk.positionSizePct","must be a number > 0 and <= 100"):r.positionSizePct=i;let o=e.stopLossPct;!Ie(o)||o<=0||o>100?k(A,"risk.stopLossPct","must be a number > 0 and <= 100"):r.stopLossPct=o;let a=e.takeProfitPct;!Ie(a)||a<=0||a>1e3?k(A,"risk.takeProfitPct","must be a number > 0 and <= 1000"):r.takeProfitPct=a;let g=e.cooldownBars;!Number.isInteger(g)||g<0||g>1e5?k(A,"risk.cooldownBars","must be an integer >= 0 and <= 100000"):r.cooldownBars=g;let l=e.maxDailyLossPct;!Ie(l)||l<=0||l>100?k(A,"risk.maxDailyLossPct","must be a number > 0 and <= 100"):r.maxDailyLossPct=l;let c=e.expiresAt;return!Number.isInteger(c)||c<=0?k(A,"risk.expiresAt","must be an integer epoch milliseconds > 0"):(t.nowMs!==void 0&&(Number.isInteger(t.nowMs)?c<=t.nowMs&&k(A,"risk.expiresAt","must be strictly greater than nowMs"):k(A,"nowMs","must be an integer epoch milliseconds")),r.expiresAt=c),r}function Cl(e,A={}){let t=[];if(!aA(e))return k(t,"","strategy must be a plain object"),{ok:!1,errors:t,strategy:null};It(e,vd,"",t);for(let c of vd)(!(c in e)||e[c]==null)&&k(t,c,"required field is missing");e.version!==Ql&&k(t,"version",`must be ${Ql}`),(typeof e.id!="string"||!Xd.test(e.id))&&k(t,"id","must match /^[a-z0-9][a-z0-9._-]{0,63}$/"),(typeof e.name!="string"||e.name.length===0||e.name.length>Zd)&&k(t,"name",`must be a non-empty string max ${Zd}`);let r=cl(e.venue);r||k(t,"venue",`unknown strategy venue "${String(e.venue)}"`);let n=null;if(!r)aA(e.market)||k(t,"market","must be a plain object");else{let c=r.validateMarket(e.market);if(!c||typeof c.ok!="boolean"||!Array.isArray(c.errors))k(t,"market",`venue ${r.id} returned an invalid market validation result`);else if(c.ok)n=c.market;else for(let Q of c.errors)k(t,Q.path,Q.message)}let s=rT(e.parameters,t),i=null,o=new Map;if(!Array.isArray(e.nodes))k(t,"nodes","must be an array");else if(e.nodes.length>zd)k(t,"nodes",`too many nodes (max ${zd})`);else{i=[];for(let c=0;c<e.nodes.length;c++){let Q=nT(e.nodes[c],c,s||{},t);Q&&(typeof Q.id=="string"&&jd.test(Q.id)&&(o.has(Q.id)?k(t,`nodes.${c}.id`,`duplicate node id "${Q.id}"`):o.set(Q.id,Q)),i.push(Q))}for(let c=0;c<i.length;c++){let Q=i[c],B=`nodes.${c}`;for(let E of Qo(Q))o.has(E)||k(t,B,`unknown node ref "${E}"`);if(Q.type==="indicator"||Q.type==="compare"||Q.type==="cross")for(let E of Qo(Q)){let u=o.get(E);u&&El.has(u.type)&&k(t,B,`node ref "${E}" must be numeric`)}if(Q.type==="logic")for(let E of Qo(Q)){let u=o.get(E);u&&!El.has(u.type)&&k(t,B,`node ref "${E}" must be boolean`)}}tT(o)&&k(t,"nodes","graph contains a cycle")}let a=null;if(!aA(e.rules))k(t,"rules","must be a plain object");else{It(e.rules,Bl,"rules",t);for(let c of Bl)c in e.rules||k(t,`rules.${c}`,"required field is missing");a={};for(let c of Bl){let Q=e.rules[c];if(Q===null){a[c]=null;continue}if(typeof Q!="string"||!Q){k(t,`rules.${c}`,"must be a node id or null"),a[c]=Q;continue}if(!o.has(Q)){k(t,`rules.${c}`,`unknown node ref "${Q}"`),a[c]=Q;continue}let B=o.get(Q);El.has(B.type)||k(t,`rules.${c}`,`rule must reference a boolean node, not ${B.type}`),a[c]=Q}}let g=sT(e.risk,t,A);if(t.length)return{ok:!1,errors:t,strategy:null};let l=Il({version:Ql,id:e.id,name:e.name,venue:r.id,market:n,parameters:s,nodes:i,rules:a,risk:g});return{ok:!0,errors:[],strategy:l}}function Ge(e,A={}){let t=Cl(e,A);if(!t.ok)throw new Xr(t.errors);return t.strategy}function iT(e){let A=Ge(e);return JSON.stringify(hl(A))}function Zr(e){let A=iT(e);return zL("sha256").update(A,"utf8").digest("hex")}function as(e,A){if(!aA(e))throw new Xr([{path:"",message:"strategy must be a plain object"}]);if(!aA(A))throw new Xr([{path:"overrides",message:"must be a plain object"}]);let t=Ge(e),r={};for(let[s,i]of Object.entries(t.parameters))r[s]={value:i.value,min:i.min,max:i.max,step:i.step};let n=[];for(let[s,i]of Object.entries(A)){if(!Object.prototype.hasOwnProperty.call(r,s)){k(n,s,`unknown parameter "${s}"`);continue}let o=r[s];if(!Ie(i)){k(n,s,"override must be a finite number");continue}if(!$d(i,o.min,o.max,o.step)){k(n,s,"override must lie on the declared min/max/step grid");continue}r[s]={...o,value:i}}if(n.length)throw new Xr(n);return Ge({version:t.version,id:t.id,name:t.name,venue:t.venue,market:{coin:t.market.coin,interval:t.market.interval},parameters:r,nodes:t.nodes.map(s=>{let i={...s};return Array.isArray(s.inputs)&&(i.inputs=[...s.inputs]),i}),rules:{...t.rules},risk:{...t.risk}})}var Ql,Xd,jd,ZL,_L,KL,XL,jL,$L,eT,El,vd,qd,Bl,Wd,AT,Pd,Od,zd,Zd,Xr,Pt=De(()=>{ll();Ql=1,Xd=/^[a-z0-9][a-z0-9._-]{0,63}$/,jd=/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/,ZL=new Set(["open","high","low","close","volume","fundingRate","openInterest"]),_L=new Set(["sma","ema","rsi","macd","bollinger","atr"]),KL=new Set(["gt","gte","lt","lte","eq"]),XL=new Set(["and","or","not"]),jL=new Set(["above","below"]),$L=new Set(["line","signal","histogram"]),eT=new Set(["upper","middle","lower"]),El=new Set(["compare","logic","cross"]),vd=new Set(["version","id","name","venue","market","parameters","nodes","rules","risk"]),qd=new Set(["value","min","max","step"]),Bl=new Set(["entryLong","entryShort","exitLong","exitShort"]),Wd=new Set(["maxLeverage","maxNotionalUsd","positionSizePct","stopLossPct","takeProfitPct","cooldownBars","maxDailyLossPct","expiresAt"]),AT=new Set(["id","type"]),Pd={input:new Set(["id","type","field"]),constant:new Set(["id","type","value"]),indicator:new Set(["id","type","indicator","input","period","fastPeriod","slowPeriod","signalPeriod","stdDev","output"]),compare:new Set(["id","type","op","left","right"]),logic:new Set(["id","type","op","inputs"]),cross:new Set(["id","type","direction","left","right"])},Od=16,zd=128,Zd=100,Xr=class extends Error{constructor(A){let t=A.map(r=>`${r.path}: ${r.message}`);super(`invalid strategy (${A.length} error${A.length===1?"":"s"}): ${t.join("; ")}`),this.name="StrategyValidationError",this.errors=A}}});function cs(e){if(!Array.isArray(e))throw new TypeError("values must be an array");for(let A=0;A<e.length;A++){let t=e[A];if(typeof t!="number"||!Number.isFinite(t))throw new TypeError(`values[${A}] must be a finite number`)}}function ht(e){if(!Number.isInteger(e)||e<=0)throw new TypeError("period must be a positive integer")}function oT(e){if(!Array.isArray(e))throw new TypeError("bars must be an array");for(let A=0;A<e.length;A++){let t=e[A];if(t==null||typeof t!="object")throw new TypeError(`bars[${A}] must be an object`);for(let r of["o","h","l","c"]){let n=t[r];if(typeof n!="number"||!Number.isFinite(n))throw new TypeError(`bars[${A}].${r} must be a finite number`)}if(t.h<t.l)throw new TypeError(`bars[${A}] high must be >= low`)}}function Aw(e,A){cs(e),ht(A);let t=new Array(e.length).fill(null);if(e.length<A)return t;let r=0;for(let n=0;n<e.length;n++)r+=e[n],n>=A&&(r-=e[n-A]),n>=A-1&&(t[n]=r/A);return t}function Eo(e,A){cs(e),ht(A);let t=new Array(e.length).fill(null);if(e.length<A)return t;let r=0;for(let i=0;i<A;i++)r+=e[i];let n=r/A;t[A-1]=n;let s=2/(A+1);for(let i=A;i<e.length;i++)n=s*e[i]+(1-s)*n,t[i]=n;return t}function tw(e,A){cs(e),ht(A);let t=new Array(e.length).fill(null);if(e.length<=A)return t;let r=0,n=0;for(let o=1;o<=A;o++){let a=e[o]-e[o-1];a>=0?r+=a:n-=a}let s=r/A,i=n/A;t[A]=ew(s,i);for(let o=A+1;o<e.length;o++){let a=e[o]-e[o-1],g=a>0?a:0,l=a<0?-a:0;s=(s*(A-1)+g)/A,i=(i*(A-1)+l)/A,t[o]=ew(s,i)}return t}function ew(e,A){return e===0&&A===0?50:A===0?100:e===0?0:100-100/(1+e/A)}function rw(e,A={}){cs(e);let t=A.fastPeriod,r=A.slowPeriod,n=A.signalPeriod;if(ht(t),ht(r),ht(n),t>=r)throw new TypeError("fastPeriod must be < slowPeriod");let s=Eo(e,t),i=Eo(e,r),o=new Array(e.length).fill(null);for(let c=0;c<e.length;c++)s[c]!=null&&i[c]!=null&&(o[c]=s[c]-i[c]);let a=new Array(e.length).fill(null),g=new Array(e.length).fill(null),l=[];for(let c=0;c<o.length;c++)o[c]!=null&&l.push(c);if(l.length>=n){let c=0;for(let u=0;u<n;u++)c+=o[l[u]];let Q=c/n,B=l[n-1];a[B]=Q,g[B]=o[B]-Q;let E=2/(n+1);for(let u=n;u<l.length;u++){let h=l[u];Q=E*o[h]+(1-E)*Q,a[h]=Q,g[h]=o[h]-Q}}return{line:o,signal:a,histogram:g}}function nw(e,A={}){cs(e);let t=A.period,r=A.stdDev;if(ht(t),typeof r!="number"||!Number.isFinite(r)||r<=0)throw new TypeError("stdDev must be a finite number > 0");let n=new Array(e.length).fill(null),s=new Array(e.length).fill(null),i=new Array(e.length).fill(null);if(e.length<t)return{upper:s,middle:n,lower:i};let o=0,a=0;for(let g=0;g<e.length;g++){let l=e[g];if(o+=l,a+=l*l,g>=t){let c=e[g-t];o-=c,a-=c*c}if(g>=t-1){let c=o/t,Q=a/t-c*c;Q<0&&Q>-1e-12&&(Q=0);let B=Math.sqrt(Q);n[g]=c,s[g]=c+r*B,i[g]=c-r*B}}return{upper:s,middle:n,lower:i}}function sw(e,A){oT(e),ht(A);let t=new Array(e.length).fill(null);if(e.length<A)return t;let r=new Array(e.length);for(let i=0;i<e.length;i++){let o=e[i];if(i===0)r[i]=o.h-o.l;else{let a=e[i-1].c;r[i]=Math.max(o.h-o.l,Math.abs(o.h-a),Math.abs(o.l-a))}}let n=0;for(let i=0;i<A;i++)n+=r[i];let s=n/A;t[A-1]=s;for(let i=A;i<e.length;i++)s=(s*(A-1)+r[i])/A,t[i]=s;return t}var iw=De(()=>{});import{createHash as aT}from"node:crypto";var fl,cT,gT,lT,ow,aw=De(()=>{fl=2,cT="93f9c998260e73756c13871dc1a84dd6cdb26ec6113bd1941f023519939db440",gT="68f5b412a9975f04024cf9b9b6209b4bccedd52f176e95f34f786b3f53479c6a",lT="f197a38ff1c0f4ebe13326db8cbb8167ea3dd5d62e6033fe97c2fee8d23d96b5",ow=aT("sha256").update(JSON.stringify({version:fl,compilerSourceHash:cT,indicatorsSourceHash:gT,schemaSourceHash:lT})).digest("hex")});function dA(e){return typeof e=="number"&&Number.isFinite(e)}function BT(e){let A=new Map(e.map(o=>[o.id,o])),t=o=>{switch(o.type){case"indicator":return o.input?[o.input]:[];case"compare":case"cross":return[o.left,o.right];case"logic":return[...o.inputs];default:return[]}},r=new Map,n=new Map;for(let o of e)r.set(o.id,0),n.set(o.id,[]);for(let o of e)for(let a of t(o))A.has(a)&&(n.get(a).push(o.id),r.set(o.id,r.get(o.id)+1));let s=[];for(let[o,a]of r)a===0&&s.push(o);let i=[];for(;s.length;){let o=s.shift();i.push(o);for(let a of n.get(o))r.set(a,r.get(a)-1),r.get(a)===0&&s.push(a)}if(i.length!==e.length)throw new Error("strategy graph is cyclic");return i}function jr(e,A){return e!=null&&typeof e=="object"&&"param"in e?A[e.param].value:e}function uT(e,A,t){if(!Array.isArray(e)||e.length===0)throw new TypeError("bars must be a non-empty array");if(!Number.isInteger(A)||A<0||A>=e.length)throw new RangeError("index out of range");let r=null;for(let n=0;n<=A;n++){let s=e[n];if(s==null||typeof s!="object"||Array.isArray(s))throw new TypeError(`bars[${n}] must be an object`);let{t:i,o,h:a,l:g,c:l,v:c}=s;if(!dA(i)&&(typeof i=="number"&&Number.isFinite(i)),!Number.isFinite(i))throw new TypeError(`bars[${n}].t must be finite`);for(let[Q,B]of[["o",o],["h",a],["l",g],["c",l],["v",c]])if(!dA(B))throw new TypeError(`bars[${n}].${Q} must be a finite number`);for(let[Q,B]of[["o",o],["h",a],["l",g],["c",l]])if(!(B>0))throw new TypeError(`bars[${n}].${Q} price must be positive`);if(c<0)throw new TypeError(`bars[${n}].v volume must be non-negative`);if(a<Math.max(o,l,g))throw new TypeError(`bars[${n}] high must be >= max(open, close, low)`);if(g>Math.min(o,l,a))throw new TypeError(`bars[${n}] low must be <= min(open, close, high)`);if(r!=null){if(!(i>r))throw new TypeError("bars t must be strictly increasing");if(i-r!==ET[t])throw new TypeError(`bars t must match ${t} cadence`)}if(r=i,"fundingRate"in s&&s.fundingRate!=null&&!dA(s.fundingRate))throw new TypeError(`bars[${n}].fundingRate must be finite when present`);if("openInterest"in s&&s.openInterest!=null){if(!dA(s.openInterest))throw new TypeError(`bars[${n}].openInterest must be finite when present`);if(s.openInterest<0)throw new TypeError(`bars[${n}].openInterest must be non-negative`)}}}function Zt(e,A,t,r,n,s){if(s.has(e))return s.get(e);let i=A.get(e),o;switch(i.type){case"input":{let a=QT[i.field];o=new Array(n+1);for(let g=0;g<=n;g++){let l=r[g][a];o[g]=l===void 0?null:l}break}case"constant":{let a=jr(i.value,t);o=new Array(n+1).fill(a);break}case"indicator":{let a=i.period!=null?jr(i.period,t):void 0;if(i.indicator==="atr"){let c=[];for(let Q=0;Q<=n;Q++){let B=r[Q];c.push({o:B.o,h:B.h,l:B.l,c:B.c})}o=sw(c,a);break}let l=Zt(i.input,A,t,r,n,s).map((c,Q)=>{if(c==null||!dA(c))throw new TypeError(`indicator input ${i.input} has non-finite value at ${Q}`);return c});if(i.indicator==="sma")o=Aw(l,a);else if(i.indicator==="ema")o=Eo(l,a);else if(i.indicator==="rsi")o=tw(l,a);else if(i.indicator==="macd")o=rw(l,{fastPeriod:jr(i.fastPeriod,t),slowPeriod:jr(i.slowPeriod,t),signalPeriod:jr(i.signalPeriod,t)})[i.output];else if(i.indicator==="bollinger")o=nw(l,{period:a,stdDev:jr(i.stdDev,t)})[i.output];else throw new Error(`unsupported indicator ${i.indicator}`);break}case"compare":{let a=Zt(i.left,A,t,r,n,s),g=Zt(i.right,A,t,r,n,s);o=new Array(n+1);for(let l=0;l<=n;l++){let c=a[l],Q=g[l];if(c==null||Q==null||!dA(c)||!dA(Q)){o[l]=!1;continue}switch(i.op){case"gt":o[l]=c>Q;break;case"gte":o[l]=c>=Q;break;case"lt":o[l]=c<Q;break;case"lte":o[l]=c<=Q;break;case"eq":o[l]=c===Q;break;default:o[l]=!1}}break}case"logic":{let a=i.inputs.map(g=>Zt(g,A,t,r,n,s));o=new Array(n+1);for(let g=0;g<=n;g++)if(i.op==="not"){let l=a[0][g];o[g]=l===!0?!1:l===!1}else if(i.op==="and"){let l=!0;for(let c of a)if(c[g]!==!0){l=!1;break}o[g]=l}else if(i.op==="or"){let l=!1;for(let c of a)if(c[g]===!0){l=!0;break}o[g]=l}else o[g]=!1;break}case"cross":{let a=Zt(i.left,A,t,r,n,s),g=Zt(i.right,A,t,r,n,s);o=new Array(n+1),o[0]=!1;for(let l=1;l<=n;l++){let c=a[l-1],Q=g[l-1],B=a[l],E=g[l];if(c==null||Q==null||B==null||E==null||!dA(c)||!dA(Q)||!dA(B)||!dA(E)){o[l]=!1;continue}i.direction==="above"?o[l]=c<=Q&&B>E:o[l]=c>=Q&&B<E}break}default:throw new Error(`unknown node type ${i.type}`)}return s.set(e,o),o}function Je(e,A={}){let t=Ge(e);A&&Object.keys(A).length&&(t=as(t,A));let r=new Map(t.nodes.map(B=>[B.id,B])),n=Object.freeze(BT(t.nodes)),s=t.parameters,i=new Set(t.nodes.filter(B=>B.type==="input").map(B=>B.field));if(t.nodes.some(B=>B.type==="indicator"&&B.indicator==="atr"))for(let B of["open","high","low","close"])i.add(B);let o=Object.freeze([...i].sort()),a=Zr(t);function g(B,E){let u={};for(let I of n){let C=B.get(I);u[I]=C[E]}let h=I=>I!=null&&u[I]===!0;return{values:u,signals:{entryLong:h(t.rules.entryLong),entryShort:h(t.rules.entryShort),exitLong:h(t.rules.exitLong),exitShort:h(t.rules.exitShort)}}}function l(B,E){uT(B,E,t.market.interval);let u=new Map;for(let h of n)Zt(h,r,s,B,E,u);return u}function c(B,E){return g(l(B,E),E)}function Q(B){if(!Array.isArray(B)||B.length===0)throw new TypeError("bars must be a non-empty array");let E=B.length-1,u=l(B,E);return Object.freeze(B.map((h,I)=>Object.freeze(g(u,I))))}return Object.freeze({strategy:t,strategyHash:a,compilerVersion:is,compilerHash:Ot,requiredSeries:o,nodeOrder:n,evaluate:c,evaluateAll:Q})}var is,Ot,QT,ET,zt=De(()=>{Pt();iw();aw();is=fl,Ot=ow,QT=Object.freeze({open:"o",high:"h",low:"l",close:"c",volume:"v",fundingRate:"fundingRate",openInterest:"openInterest"}),ET=Object.freeze({"1m":6e4,"3m":18e4,"5m":3e5,"15m":9e5,"30m":18e5,"1h":36e5,"2h":72e5,"4h":144e5,"8h":288e5,"12h":432e5,"1d":864e5})});import{createHash as IT}from"node:crypto";function CT(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function LA(e){return typeof e=="number"&&Number.isFinite(e)}function dl(e){if(e==null||typeof e!="object"||Object.isFrozen(e))return e;if(Array.isArray(e)){for(let A of e)dl(A);return Object.freeze(e)}for(let A of Object.keys(e))dl(e[A]);return Object.freeze(e)}function Bo(e){if(Array.isArray(e))return e.map(Bo);if(e!=null&&typeof e=="object"){let A={};for(let t of Object.keys(e).sort())A[t]=Bo(e[t]);return A}return e}function wl(e,A="result"){if(typeof e=="number"){if(!Number.isFinite(e))throw new Error(`non-finite backtest result at ${A}`);return}if(!(e==null||typeof e!="object")){if(Array.isArray(e)){e.forEach((t,r)=>wl(t,`${A}[${r}]`));return}for(let[t,r]of Object.entries(e))wl(r,`${A}.${t}`)}}function gw(e){if(!Array.isArray(e)||e.length===0)throw new TypeError("bars must be a non-empty array");let A=null;for(let t=0;t<e.length;t++){let r=e[t];if(r==null||typeof r!="object"||Array.isArray(r))throw new TypeError(`bars[${t}] must be an object`);let{t:n,o:s,h:i,l:o,c:a,v:g}=r;if(!LA(n))throw new TypeError(`bars[${t}].t must be finite`);for(let[l,c]of[["o",s],["h",i],["l",o],["c",a],["v",g]])if(!LA(c))throw new TypeError(`bars[${t}].${l} must be a finite number`);for(let[l,c]of[["o",s],["h",i],["l",o],["c",a]])if(!(c>0))throw new TypeError(`bars[${t}].${l} price must be positive`);if(g<0)throw new TypeError(`bars[${t}].v volume must be non-negative`);if(i<Math.max(s,a,o))throw new TypeError(`bars[${t}] high must be >= max(open, close, low)`);if(o>Math.min(s,a,i))throw new TypeError(`bars[${t}] low must be <= min(open, close, high)`);if(A!=null&&!(n>A))throw new TypeError("bars t must be strictly increasing");if(A=n,"fundingRate"in r&&r.fundingRate!=null&&!LA(r.fundingRate))throw new TypeError(`bars[${t}].fundingRate must be finite when present`);if("fundingPaymentRate"in r&&r.fundingPaymentRate!=null&&!LA(r.fundingPaymentRate))throw new TypeError(`bars[${t}].fundingPaymentRate must be finite when present`);if("openInterest"in r&&r.openInterest!=null&&!LA(r.openInterest))throw new TypeError(`bars[${t}].openInterest must be finite when present`)}}function ns(e){if(!Array.isArray(e))throw new TypeError("bars must be an array");return e.length>0&&gw(e),IT("sha256").update(JSON.stringify(Bo(e)),"utf8").digest("hex")}function fT(e){if(e==null&&(e={}),!CT(e))throw new TypeError("options must be a plain object");let A={...hT},t=new Set(["initialEquityUsd","takerFeeBps","builderFeeBps","slippageBps","latencyBars","maxVolumeParticipationPct","nowMs"]);for(let r of Object.keys(e))if(!t.has(r))throw new TypeError(`unknown option "${r}"`);if("initialEquityUsd"in e){if(!LA(e.initialEquityUsd)||e.initialEquityUsd<=0)throw new TypeError("initialEquityUsd must be a positive finite number");A.initialEquityUsd=e.initialEquityUsd}for(let r of["takerFeeBps","builderFeeBps","slippageBps"])if(r in e){let n=e[r];if(!LA(n)||n<0)throw new TypeError(`${r} must be a finite number >= 0`);if(r==="slippageBps"?n>=1e4:n>1e4)throw new TypeError(`${r} exceeds its safe basis-point bound`);A[r]=n}if("latencyBars"in e){let r=e.latencyBars;if(!Number.isInteger(r)||r<1)throw new TypeError("latencyBars must be an integer >= 1");A.latencyBars=r}if("maxVolumeParticipationPct"in e){let r=e.maxVolumeParticipationPct;if(!LA(r)||r<=0||r>100)throw new TypeError("maxVolumeParticipationPct must be in (0,100]");A.maxVolumeParticipationPct=r}if("nowMs"in e){if(!Number.isInteger(e.nowMs))throw new TypeError("nowMs must be an integer epoch milliseconds");A.nowMs=e.nowMs}return A}function uo(e){return e/1e4}function dT(e,A,t){let r=uo(t);return A==="long"?e*(1+r):e*(1-r)}function wT(e,A,t){let r=uo(t);return A==="long"?e*(1-r):e*(1+r)}function cw(e,A,t){let r=Math.abs(e)*uo(A),n=Math.abs(e)*uo(t);return{taker:r,builder:n,total:r+n}}function yT(e,A){let t=e*(A.positionSizePct/100)*A.maxLeverage;return Math.min(t,A.maxNotionalUsd)}function pT(e,A,t){let r=t/100;return A==="long"?e*(1-r):e*(1+r)}function mT(e,A,t){let r=t/100;return A==="long"?e*(1+r):e*(1-r)}function DT(e,A,t,r){if(!(t>0))return A==="long"?0:Number.POSITIVE_INFINITY;let n=Math.min(.99,1/(2*t)+r/1e4);return A==="long"?e*(1-1/t)/(1-n):e*(1+1/t)/(1+n)}function kT(e,A,t){return A==="long"?e.l<=t:e.h>=t}function bT(e,A,t){return A==="long"?e.h>=t:e.l<=t}function FT(e,A,t){return A==="long"?e.l<=t:e.h>=t}function gs(e,A){for(let t of e.requiredSeries)if(["fundingRate","openInterest"].includes(t)&&!A.every(r=>LA(r?.[t])))throw new Error(`strategy required series is absent: ${t}`)}function RT(e){if(e.length<3)return 0;let A=[];for(let i=1;i<e.length;i++){let o=e[i-1].equity,a=e[i].equity;o>0&&A.push((a-o)/o)}if(A.length<2)return 0;let t=0;for(let i of A)t+=i;let r=t/A.length,n=0;for(let i of A)n+=(i-r)**2;let s=Math.sqrt(n/(A.length-1));return s>0?r/s:0}function ST(e){let A=-1/0,t=0;for(let r of e){let n=r.equity;if(n>A&&(A=n),A>0){let s=(A-n)/A*100;s>t&&(t=s)}}return t}function ut(e,A,t={}){let r=fT(t);gw(A);let n=ns(A);r.nowMs!==void 0&&Ge(e,{nowMs:r.nowMs});let s=Je(e);if(gs(s,A),r.nowMs!==void 0&&s.strategy.risk.expiresAt<=r.nowMs)throw new Error("strategy is expired: risk.expiresAt must be strictly greater than nowMs");let i=s.strategy.risk,o=s.evaluateAll(A),a=r.latencyBars,g=r.slippageBps,l=r.takerFeeBps,c=r.builderFeeBps,Q=r.initialEquityUsd,B=0,E=0,u=0,h=0,I=0,C=[],D=[],f=[],R=[],S=[],d=null,se=0,ke=null,Le=Q,me=!1,w=0,H=0,q=[],ee=new Array(A.length).fill(0);function j(F){q.push(F)}function _(F){let O=A[F].v*(r.maxVolumeParticipationPct/100);return Math.max(0,O-ee[F])}function te(F){if(!d)return Q;let O=d.side==="long"?(F-d.entryPrice)*d.qty:(d.entryPrice-F)*d.qty;return Q+O}function Re(F,O,x){let ge=x.o,K=yT(Q,i);if(!(K>0)||!(ge>0))return;let le=dT(ge,O,g),ie=K/le,de=_(F),An=le*de;if(ie>de){f.push({kind:"entry",barIndex:F,time:x.t,side:O,requestedNotionalUsd:K,maxFillNotionalUsd:An,reason:"volume_participation"});return}ee[F]+=ie;let yA=Math.abs(le-ge)*ie,xA=cw(K,l,c);Q-=xA.total,B+=xA.taker,E+=xA.builder,h+=yA,I+=K,d={lifecycleEpoch:++H,side:O,entryBarIndex:F,entryReferencePrice:ge,entryPrice:le,qty:ie,notionalUsd:K,stop:pT(le,O,i.stopLossPct),take:mT(le,O,i.takeProfitPct),liq:DT(le,O,i.maxLeverage,l+c),entryFees:xA.taker,entryBuilderFees:xA.builder,entrySlippageUsd:yA,fundingAccrued:0}}function fe(F,O,x,ge){if(!d)return!1;let K=d.side,le=O,ie=le;x!=="liquidation"&&ge&&(ie=wT(le,K,g));let de=d.qty,An=de*ie;if(x!=="liquidation"){let Jl=_(F),Jw=ie*Jl;if(de>Jl)return f.push({kind:"exit",barIndex:F,time:A[F].t,side:K,requestedNotionalUsd:An,maxFillNotionalUsd:Jw,reason:"volume_participation",triggerReason:x}),!1;ee[F]+=de}let yA=cw(An,l,c),xA=x==="liquidation"?0:Math.abs(ie-le)*de,tn,mo;K==="long"?(tn=(le-d.entryReferencePrice)*de,mo=(ie-d.entryPrice)*de):(tn=(d.entryReferencePrice-le)*de,mo=(d.entryPrice-ie)*de),Q+=mo,Q-=yA.total,B+=yA.taker,E+=yA.builder,h+=xA,I+=An;let Gw={side:K,entryBarIndex:d.entryBarIndex,entryTime:A[d.entryBarIndex].t,entryPrice:d.entryPrice,exitBarIndex:F,exitTime:A[F].t,exitPrice:ie,exitReason:x,qty:de,notionalUsd:d.notionalUsd,grossPnlUsd:tn,feesUsd:d.entryFees+yA.taker,builderFeesUsd:d.entryBuilderFees+yA.builder,fundingUsd:d.fundingAccrued,slippageUsd:d.entrySlippageUsd+xA,netPnlUsd:tn-(d.entryFees+yA.taker+d.entryBuilderFees+yA.builder)-d.fundingAccrued-(d.entrySlippageUsd+xA)};return C.push(Gw),x==="liquidation"&&D.push({barIndex:F,time:A[F].t,side:K,price:ie,tradeIndex:C.length-1}),d=null,H+=1,w=F+1+(i.cooldownBars||0),!0}function wA(F,O,x,ge){let K=F+1;if(K>=A.length)return;q.some(ie=>ie.kind==="exit"&&ie.side===O&&ie.fillBar===K&&ie.epoch===ge)||j({kind:"exit",side:O,signalBar:F,fillBar:K,reason:x,epoch:ge})}function Es(F){let O=q.filter(x=>x.fillBar===F);for(let x=q.length-1;x>=0;x--)q[x].fillBar===F&&q.splice(x,1);O.sort((x,ge)=>{let K=le=>le.kind==="exit"?0:1;return K(x)-K(ge)});for(let x of O)if(x.kind==="exit"){if(!d||d.side!==x.side||d.lifecycleEpoch!==x.epoch)continue;let ge=x.reason||"rule";fe(F,A[F].o,ge,!0)||wA(F,x.side,ge,x.epoch)}else if(x.kind==="entry"){if(d||x.epoch!==H||F<w)continue;Re(F,x.side,A[F])}}function Bs(F){if(!d)return;let O=A[F],x=O.fundingPaymentRate;if(x==null||!LA(x)||x===0)return;let ge=Math.abs(d.qty*O.c),K=x*ge;d.side==="long"?(Q-=K,d.fundingAccrued+=K,u+=K):(Q+=K,d.fundingAccrued-=K,u-=K)}function us(F){if(!d)return;let O=A[F].o;(d.side==="long"?O<=d.liq:O>=d.liq)&&fe(F,O,"liquidation",!1)}function Ll(F){if(!d)return;let O=A[F],x=d.side,ge=FT(O,x,d.liq),K=kT(O,x,d.stop),le=bT(O,x,d.take),ie=de=>x==="long"?Math.min(de,O.o):Math.max(de,O.o);if(ge){fe(F,ie(d.liq),"liquidation",!1);return}if(K&&le){fe(F,ie(d.stop),"stop_loss",!0)||wA(F,x,"stop_loss",d.lifecycleEpoch);return}if(K){fe(F,ie(d.stop),"stop_loss",!0)||wA(F,x,"stop_loss",d.lifecycleEpoch);return}le&&(fe(F,d.take,"take_profit",!0)||wA(F,x,"take_profit",d.lifecycleEpoch))}for(let F=0;F<A.length;F++){let O=Math.floor(A[F].t/864e5);O!==ke&&(ke=O,Le=te(A[F].o),me=!1),us(F),Es(F),Ll(F),Bs(F),!me&&te(A[F].c)<=Le*(1-i.maxDailyLossPct/100)&&(me=!0,R.push({type:"daily_loss_limit",barIndex:F,time:A[F].t,message:"daily loss limit reached; new entries blocked for UTC day"}));let x=o[F].signals,ge=F+a;if(d)(d.side==="long"&&x.exitLong===!0||d.side==="short"&&x.exitShort===!0)&&ge<A.length&&(q.some(de=>de.kind==="exit"&&de.side===d.side&&de.fillBar===ge&&de.epoch===d.lifecycleEpoch)||j({kind:"exit",side:d.side,signalBar:F,fillBar:ge,reason:"rule",epoch:d.lifecycleEpoch}));else{let le=x.entryLong===!0,ie=x.entryShort===!0;le&&ie?R.push({type:"conflicting_entry_signals",barIndex:F,time:A[F].t,message:"conflicting entry signals; no position opened"}):!me&&(le||ie)&&ge<A.length&&F>=w&&j({kind:"entry",side:le?"long":"short",signalBar:F,fillBar:ge,epoch:H})}let K=Q;d&&(se+=1,K=te(A[F].c)),S.push({barIndex:F,time:A[F].t,equity:K,positionSide:d?d.side:null})}let Tl=null;if(d){let F=A.length-1;if(fe(F,A[F].c,"end_of_data",!0))S[F]={barIndex:F,time:A[F].t,equity:Q,positionSide:null};else{let x=te(A[F].c);Tl={side:d.side,entryBarIndex:d.entryBarIndex,entryTime:A[d.entryBarIndex].t,entryPrice:d.entryPrice,qty:d.qty,notionalUsd:d.notionalUsd,markPrice:A[F].c,markedEquityUsd:x},R.push({type:"open_position_at_end",barIndex:F,time:A[F].t,message:"end-of-data exit missed; position remains open and marked"})}}let xl=(d?te(A[A.length-1].c):Q)-r.initialEquityUsd,Lw=xl/r.initialEquityUsd*100,Yl=0,fo=0,wo=0;for(let F of C)F.netPnlUsd>0?(Yl+=1,fo+=F.netPnlUsd):F.netPnlUsd<0&&(wo+=-F.netPnlUsd);let yo=C.length,Tw=yo===0?0:Yl/yo,po=0;wo>0?po=fo/wo:fo>0&&(po=1e12);let xw={netPnlUsd:xl,netPnlPct:Lw,maxDrawdownPct:ST(S),winRate:Tw,profitFactor:po,tradeCount:yo,sharpe:RT(S),turnoverUsd:I,exposurePct:se/A.length*100},Yw={initialEquityUsd:r.initialEquityUsd,takerFeeBps:r.takerFeeBps,builderFeeBps:r.builderFeeBps,slippageBps:r.slippageBps,latencyBars:r.latencyBars,maxVolumeParticipationPct:r.maxVolumeParticipationPct},Gl={barsHash:n,strategyHash:s.strategyHash,compilerHash:Ot,compilerVersion:is,config:Yw,trades:C,equityCurve:S,metrics:xw,costs:{feesUsd:B,builderFeesUsd:E,fundingUsd:u,slippageUsd:h},liquidations:D,missedFills:f,openPositionAtEnd:Tl,flags:R};return wl(Gl),dl(Bo(Gl))}var hT,lo=De(()=>{zt();Pt();hT=Object.freeze({initialEquityUsd:1e4,takerFeeBps:3.5,builderFeeBps:2,slippageBps:2,latencyBars:1,maxVolumeParticipationPct:100})});import{createHash as NT}from"node:crypto";function JT(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function yl(e){if(e==null||typeof e!="object"||Object.isFrozen(e))return e;if(Array.isArray(e)){for(let A of e)yl(A);return Object.freeze(e)}for(let A of Object.keys(e))yl(e[A]);return Object.freeze(e)}function HT(e){return String(e).trim().replace(/\s+/g," ")}function VT(e){let A=e.match(/\b(long|short)\b/i);return A?A[1].toLowerCase():null}function vT(e){for(let t of UT)if(new RegExp(`\\b${t}\\b`,"i").test(e))return t;let A=e.match(/\b([A-Z][A-Z0-9]{1,11})\b/);return A?A[1]:null}function qT(e){let A=e.match(/\bon\s+(1m|3m|5m|15m|30m|1h|2h|4h|8h|12h|1d)\b/i);if(!A)return"15m";let t=A[1].toLowerCase();return MT.has(t)?t:null}function WT(e){let A={...TT},t=e.match(/stop\s*loss\s*(\d+(?:\.\d+)?)\s*%?/i);t&&(A.stopLossPct=Number(t[1]));let r=e.match(/take\s*profit\s*(\d+(?:\.\d+)?)\s*%?/i);r&&(A.takeProfitPct=Number(r[1]));let n=e.match(/leverage\s*(\d+(?:\.\d+)?)/i);n&&(A.maxLeverage=Number(n[1]));let s=e.match(/position\s*size\s*(\d+(?:\.\d+)?)\s*%?/i);s&&(A.positionSizePct=Number(s[1]));let i=e.match(/max\s*notional\s*(?:usd\s*)?\$?\s*(\d+(?:\.\d+)?)/i);return i&&(A.maxNotionalUsd=Number(i[1])),A}function PT(e){return[/\bon\s+(?:1m|3m|5m|15m|30m|1h|2h|4h|8h|12h|1d)\b/gi,/\bstop\s*loss\s*\d+(?:\.\d+)?\s*%?/gi,/\btake\s*profit\s*\d+(?:\.\d+)?\s*%?/gi,/\bleverage\s*\d+(?:\.\d+)?/gi,/\bposition\s*size\s*\d+(?:\.\d+)?\s*%?/gi,/\bmax\s*notional\s*(?:usd\s*)?\$?\s*\d+(?:\.\d+)?/gi].some(t=>(e.match(t)??[]).length>1)}function OT(e){let A=NT("sha256").update(e,"utf8").digest("hex").slice(0,10),t=e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40),n=`${t.length?t:"draft"}-${A}`.replace(/[^a-z0-9._-]/g,"").slice(0,64);return/^[a-z0-9]/.test(n)?n:`d${n}`.slice(0,64)}function zT(e){let A=e.match(/\bema\s*(\d+)\s*cross(?:es)?\s*(above|below)\s*ema\s*(\d+)\b/i);if(!A)return null;let t=Number(A[1]),r=A[2].toLowerCase(),n=Number(A[3]);if(!(t>0)||!(n>0)||t===n)return null;let s=/\b(exit\s+on\s+reverse|reverse\s+exit)\b/i.test(e);return{kind:"ema_cross",fast:t,slow:n,direction:r,reverse:s}}function ZT(e){let A=e.match(/\brsi\s*(\d+)\s*(above|below)\s*(-?\d+(?:\.\d+)?)/i);if(!A)return null;let t=Number(A[3]);return!Number.isFinite(t)||t<=0||t>=100?null:{kind:"rsi",period:Number(A[1]),op:A[2].toLowerCase(),threshold:t}}function _T(e){let A=e.match(/\bfunding\s*rate\s*(above|below)\s*(-?\d+(?:\.\d+)?)(%?)(?=\s|,|$)/i);if(!A)return null;let t=Number(A[2]);return A[3]==="%"&&(t=t/100),{kind:"funding",op:A[1].toLowerCase(),threshold:t}}function KT(e,A){let t=e.replace(/^(long|short)\s+[A-Z][A-Z0-9]{1,11}\s+when\s+/i,"");if(t===e)return!1;A.kind==="ema_cross"?t=t.replace(/^ema\s*\d+\s*cross(?:es)?\s*(?:above|below)\s*ema\s*\d+\b/i,""):A.kind==="rsi"?t=t.replace(/^rsi\s*\d+\s*(?:above|below)\s*\d+(?:\.\d+)?\b/i,""):t=t.replace(/^funding\s*rate\s*(?:above|below)\s*-?\d+(?:\.\d+)?%?(?=\s|,|$)/i,"");let r=[/(?:,\s*)?\bon\s+(?:1m|3m|5m|15m|30m|1h|2h|4h|8h|12h|1d)\b/gi,/(?:,\s*)?\bstop\s*loss\s*\d+(?:\.\d+)?\s*%?/gi,/(?:,\s*)?\btake\s*profit\s*\d+(?:\.\d+)?\s*%?/gi,/(?:,\s*)?\bleverage\s*\d+(?:\.\d+)?/gi,/(?:,\s*)?\bposition\s*size\s*\d+(?:\.\d+)?\s*%?/gi,/(?:,\s*)?\bmax\s*notional\s*(?:usd\s*)?\$?\s*\d+(?:\.\d+)?/gi];A.kind==="ema_cross"&&r.push(/(?:,\s*)?\b(?:exit\s+on\s+reverse|reverse\s+exit)\b/gi);for(let n of r)t=t.replace(n,"");return t.replace(/[\s,;]+/g,"")===""}function lw(e){let A=Math.max(2,Math.floor(e/2));return{value:e,min:Math.max(2,e-A),max:Math.min(500,e+A),step:1}}function XT({side:e,coin:A,interval:t,risk:r,expiresAt:n,id:s,name:i,spec:o}){let a=[{id:"c",type:"input",field:"close"},{id:"emaLeft",type:"indicator",indicator:"ema",input:"c",period:{param:"ema_left_period"}},{id:"emaRight",type:"indicator",indicator:"ema",input:"c",period:{param:"ema_right_period"}},{id:"cross",type:"cross",direction:o.direction,left:"emaLeft",right:"emaRight"}],g={entryLong:null,entryShort:null,exitLong:null,exitShort:null};if(e==="long"?g.entryLong="cross":g.entryShort="cross",o.reverse){let l=o.direction==="above"?"below":"above";a.push({id:"crossRev",type:"cross",direction:l,left:"emaLeft",right:"emaRight"}),e==="long"?g.exitLong="crossRev":g.exitShort="crossRev"}return{version:1,id:s,name:i,venue:"hyperliquid",market:{coin:A,interval:t},parameters:{ema_left_period:lw(o.fast),ema_right_period:lw(o.slow)},nodes:a,rules:g,risk:{...r,expiresAt:n}}}function jT({side:e,coin:A,interval:t,risk:r,expiresAt:n,id:s,name:i,spec:o}){let a=[{id:"c",type:"input",field:"close"},{id:"rsi",type:"indicator",indicator:"rsi",input:"c",period:o.period},{id:"thr",type:"constant",value:o.threshold},{id:"sig",type:"compare",op:o.op==="above"?"gt":"lt",left:"rsi",right:"thr"}];return{version:1,id:s,name:i,venue:"hyperliquid",market:{coin:A,interval:t},parameters:{},nodes:a,rules:{entryLong:e==="long"?"sig":null,entryShort:e==="short"?"sig":null,exitLong:null,exitShort:null},risk:{...r,expiresAt:n}}}function $T({side:e,coin:A,interval:t,risk:r,expiresAt:n,id:s,name:i,spec:o}){let a=[{id:"fr",type:"input",field:"fundingRate"},{id:"thr",type:"constant",value:o.threshold},{id:"sig",type:"compare",op:o.op==="above"?"gt":"lt",left:"fr",right:"thr"}];return{version:1,id:s,name:i,venue:"hyperliquid",market:{coin:A,interval:t},parameters:{},nodes:a,rules:{entryLong:e==="long"?"sig":null,entryShort:e==="short"?"sig":null,exitLong:null,exitShort:null},risk:{...r,expiresAt:n}}}function Qw(e,A={}){if(typeof e!="string")throw new Ne("prompt must be a string");if(e.length>1e3)throw new Ne("prompt length must be <= 1000");if(!JT(A))throw new Ne("options must be a plain object");if(!Number.isInteger(A.nowMs))throw new Ne("options.nowMs is required integer epoch ms");let t=A.nowMs,r=GT;if("expiresInMs"in A){if(!Number.isInteger(A.expiresInMs))throw new Ne("expiresInMs must be an integer");if(r=A.expiresInMs,r<xT||r>YT)throw new Ne("expiresInMs must be between 1h and 30d")}if(LT.test(e))throw new Ne(`prompt appears to contain secrets and is rejected. ${$r}`);let n=HT(e);if(!n)throw new Ne(`empty prompt. ${$r}`);if(PT(n))throw new Ne(`duplicate interval or risk clause. ${$r}`);let s=VT(n),i=vT(n),o=qT(n);if(!s||!i||!o)throw new Ne(`could not parse side/coin/interval. ${$r}`);let a=WT(n);if(!(a.maxLeverage>0)||a.maxLeverage>50)throw new Ne("leverage out of range");if(!(a.positionSizePct>0)||a.positionSizePct>100)throw new Ne("position size out of range");let g=t+r,l=OT(n),c=`Draft ${i} ${s}`.slice(0,100),Q=zT(n),B=ZT(n),E=_T(n),u=[Q,B,E].filter(Boolean);if(u.length!==1)throw new Ne(`unsupported or ambiguous prompt. ${$r}`);if(!KT(n,u[0]))throw new Ne(`unsupported or ambiguous prompt. ${$r}`);let h,I=u[0],C={side:s,coin:i,interval:o,risk:a,expiresAt:g,id:l,name:c,spec:I};I.kind==="ema_cross"?h=XT(C):I.kind==="rsi"?h=jT(C):h=$T(C);let D=Cl(h,{nowMs:t});if(!D.ok)throw new Ne(`draft failed validation: ${D.errors.map(f=>f.message).join("; ")}`);return yl(Ge(h,{nowMs:t}))}var Ne,MT,UT,LT,$r,TT,xT,YT,GT,Ew=De(()=>{Pt();Ne=class extends Error{constructor(A){super(A),this.name="StrategyDraftError"}},MT=new Set(["1m","3m","5m","15m","30m","1h","2h","4h","8h","12h","1d"]),UT=new Set(["BTC","ETH","SOL","HYPE"]),LT=/\b(mnemonic|private\s*key|privkey|seed\s*phrase|seed\b|api[_-]?key|secret\s*key|wallet\s*key|passphrase)\b/i,$r="Supported grammar: (1) EMA cross: <long|short> <COIN> when EMA <n> crosses <above|below> EMA <m> [on <interval>] [, exit on reverse] [, risk knobs]; (2) RSI: <long|short> <COIN> when RSI <n> <above|below> <threshold> [on <interval>] [, risk knobs]; (3) funding: <long|short> <COIN> when funding rate <above|below> <decimal|percent%> [on <interval>] [, risk knobs]. Risk knobs: stop loss %, take profit %, leverage, position size %, max notional USD. Coins: BTC ETH SOL HYPE or uppercase token <=12 chars. Intervals: 1m 3m 5m 15m 30m 1h 2h 4h 8h 12h 1d.",TT=Object.freeze({maxLeverage:1,maxNotionalUsd:100,positionSizePct:5,stopLossPct:2,takeProfitPct:4,cooldownBars:1,maxDailyLossPct:3}),xT=36e5,YT=30*864e5,GT=864e5});import{createHash as ex}from"node:crypto";function Iw(e){let A=String(e).toLowerCase();return A==="holdout"||A==="test"||A==="oos"||A.includes("holdout")||A.includes("oos")?!0:A==="testbars"||A.endsWith("testbars")||A.startsWith("test")||A.endsWith("test")?!A.includes("backtest"):!1}function hw(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function ml(e){if(e==null||typeof e!="object"||Object.isFrozen(e))return e;if(Array.isArray(e)){for(let A of e)ml(A);return Object.freeze(e)}for(let A of Object.keys(e))ml(e[A]);return Object.freeze(e)}function ls(e){if(Array.isArray(e))return e.map(ls);if(e!=null&&typeof e=="object"){let A={};for(let t of Object.keys(e).sort())A[t]=ls(e[t]);return A}return e}function Io(e){return JSON.stringify(ls(e))}function Ax(e){let{min:A,max:t,step:r}=e;if(!(r>0)||A>t)return[];let n=[],s=Math.floor((t-A)/r+1e-9);for(let o=0;o<=s;o++){let a=A+o*r;if(a>t+1e-9)break;let g=Math.abs(a-Math.round(a))<1e-9?Math.round(a):Number(a.toPrecision(12));g<A-1e-9||g>t+1e-9||n.push(g)}if(n.length===0)return[];let i=n[n.length-1];if(Math.abs(i-t)>1e-9){let o=(t-A)/r;Math.abs(o-Math.round(o))<=1e-9&&n.push(t)}return n}function tx(e,A){if(e.length===0)return[];let t=[{}];for(let r of e){let n=A[r],s=[];for(let i of t)for(let o of n)s.push({...i,[r]:o});t=s}return t.sort((r,n)=>{let s=Io(r),i=Io(n);return s<i?-1:s>i?1:0}),t}function pl(e,A,t,r,n){let s=0;if(e==="maxDrawdownPct"){if(s=A.maxDrawdownPct-r.maxDrawdownPct,s!==0)return s<0}else if(s=A[e]-r[e],s!==0)return s>0;let i=Io(t),o=Io(n);return i<o}function Cw(e,A,t={}){if(!hw(t))throw new TypeError("options must be a plain object");for(let f of Object.keys(t))if(Iw(f))throw new TypeError(`options must not include holdout/test/oos key "${f}"`);let r=new Set(["maxTrials","objective","backtestOptions"]);for(let f of Object.keys(t))if(!r.has(f))throw new TypeError(`unknown option "${f}"`);let n=64;if("maxTrials"in t){let f=t.maxTrials;if(!Number.isInteger(f)||f<1||f>Bw)throw new TypeError(`maxTrials must be an integer 1..${Bw}`);n=f}let s=t.objective??"netPnlUsd";if(!uw.has(s))throw new TypeError(`objective must be one of ${[...uw].join("|")}`);let i=t.backtestOptions??{};if(!hw(i))throw new TypeError("backtestOptions must be a plain object");for(let f of Object.keys(i))if(Iw(f))throw new TypeError(`backtestOptions must not include holdout/test/oos key "${f}"`);let o=Ge(e),a=Object.keys(o.parameters).sort();if(a.length===0)throw new Error("optimizeStrategy requires at least one declared parameter");let g={},l=1;for(let f of a){let R=Ax(o.parameters[f]);if(R.length===0)throw new Error(`parameter "${f}" produces an empty grid`);g[f]=R,l*=R.length}let c=tx(a,g);if(c.length===0)throw new Error("parameter grid is empty");let Q=c.slice(0,n),B=[],E=null,u=null;for(let f of Q){let R=as(o,f),S=ut(R,A,i);u==null&&(u=S.config);let d={netPnlUsd:S.metrics.netPnlUsd,netPnlPct:S.metrics.netPnlPct,maxDrawdownPct:S.metrics.maxDrawdownPct,winRate:S.metrics.winRate,profitFactor:S.metrics.profitFactor,tradeCount:S.metrics.tradeCount,sharpe:S.metrics.sharpe,turnoverUsd:S.metrics.turnoverUsd},se={parameters:{...f},metrics:d};B.push(se),(!E||pl(s,d,f,E.metrics,E.parameters))&&(E=se)}B.sort((f,R)=>pl(s,f.metrics,f.parameters,R.metrics,R.parameters)?-1:pl(s,R.metrics,R.parameters,f.metrics,f.parameters)?1:0);let h={...E.parameters},I=as(o,h),C={strategyHash:Zr(o),compilerHash:Ot,trainBarsHash:ns(A),backtestConfig:u,objective:s,maxTrials:n,trialsRun:B.length,candidates:B,bestParameters:h,bestStrategy:I},D={id:ex("sha256").update(JSON.stringify(ls(C)),"utf8").digest("hex"),...C};return ml(ls(JSON.parse(JSON.stringify(D))))}var Bw,uw,fw=De(()=>{zt();Pt();lo();Bw=256,uw=new Set(["netPnlUsd","profitFactor","sharpe","maxDrawdownPct"])});import XA from"node:fs";import ho from"node:path";function Co(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function TA(e){return e==null?e:JSON.parse(JSON.stringify(e))}function nx(e){return String(e).toLowerCase().replace(/[^a-z0-9]/g,"")}function en(e,A="record"){if(Array.isArray(e)){e.forEach((t,r)=>en(t,`${A}[${r}]`));return}if(Co(e))for(let[t,r]of Object.entries(e)){let n=nx(t);if(rx.some(s=>n.includes(s)))throw new Error(`shadow-store: forbidden secret-like field at ${A}.${t}`);en(r,`${A}.${t}`)}}function sx(e){if(typeof e!="string"||!e||!ho.isAbsolute(e))throw new Error("shadow-store: path must be an absolute path")}function dw(e){let A;try{A=XA.lstatSync(e)}catch(r){if(r&&r.code==="ENOENT")return;throw r}if(A.isSymbolicLink())throw new Error("shadow-store: store path must not be a symlink");if(!A.isFile())throw new Error("shadow-store: store path must be a regular file");if(A.mode&511&18)throw new Error("shadow-store: store file must not be group or world writable")}function ix(){return{version:kl,runners:[]}}function ww(e,A){let t;try{t=JSON.parse(e)}catch{throw new Error("shadow-store: malformed JSON")}if(!Co(t))throw new Error("shadow-store: malformed JSON root");if(t.version!==kl)throw new Error(`shadow-store: unsupported version ${t.version}`);if(!Array.isArray(t.runners))throw new Error("shadow-store: runners must be an array");return en(t,ho.basename(A)),{version:kl,runners:t.runners.map(r=>TA(r))}}function yw(e,A){en(A,"store");let t=ho.dirname(e);XA.mkdirSync(t,{recursive:!0,mode:448});let r=ho.join(t,`.shadow-store.${process.pid}.${Date.now()}.tmp`),n=`${JSON.stringify(A)}
|
|
47
|
-
`;try{XA.writeFileSync(r,n,{mode:384,flag:"wx"}),XA.renameSync(r,e);try{XA.chmodSync(e,384)}catch{}}catch(s){try{XA.unlinkSync(r)}catch{}throw s}}function pw(e={}){let A=e.path;if(sx(A),dw(A),XA.existsSync(A)?ww(XA.readFileSync(A,"utf8"),A):yw(A,ix()),Dl.has(A))return Dl.get(A);let t=!1,r=[];function n(){if(t)return;let E=r.shift();if(E){t=!0;try{let u=E.fn();t=!1,E.resolve(u),n()}catch(u){t=!1,E.reject(u),n()}}}function s(E){if(!t&&r.length===0){t=!0;try{return E()}finally{t=!1,queueMicrotask(n)}}return new Promise((u,h)=>{r.push({fn:E,resolve:u,reject:h}),queueMicrotask(n)})}function i(){return dw(A),ww(XA.readFileSync(A,"utf8"),A)}function o(E){yw(A,E)}function a(E){if(!Co(E)||typeof E.id!="string"||!E.id)throw new Error("shadow-store: create requires record with string id");en(E,"record");let u=i();if(u.runners.some(I=>I.id===E.id))throw new Error(`shadow-store: runner id already exists: ${E.id}`);let h=TA(E);return u.runners.push(h),o(u),TA(h)}function g(E){let u=i().runners.find(h=>h.id===E);return u?TA(u):null}function l(){return i().runners.map(E=>TA(E))}function c(E,u){if(typeof u!="function")throw new Error("shadow-store: updater must be a function");let h=i(),I=h.runners.findIndex(f=>f.id===E);if(I<0)throw new Error(`shadow-store: runner not found: ${E}`);let C=TA(h.runners[I]),D=u(C);if(!Co(D)||D.id!==E)throw new Error("shadow-store: updater must return record with same id");return en(D,"record"),h.runners[I]=TA(D),o(h),TA(h.runners[I])}function Q(E){let u=i(),h=u.runners.findIndex(C=>C.id===E);if(h<0)throw new Error(`shadow-store: runner not found: ${E}`);let I=TA(u.runners[h]);return I.status!=="stopped"&&(I.status="stopped",u.runners[h]=I,o(u)),TA(u.runners[h])}let B={create(E){return s(()=>a(E))},get(E){return g(E)},list(){return l()},update(E,u){return s(()=>c(E,u))},stop(E){return s(()=>Q(E))}};return Dl.set(A,B),B}var kl,rx,Dl,mw=De(()=>{kl=1,rx=["privatekey","secretkey","seed","mnemonic","passphrase","password","keystore","keymaterial","apikey","authtoken","accesstoken","refreshtoken","credential","bearer","signature","authorization","xprv","xpriv","wif"];Dl=new Map});import{createHash as Rl}from"node:crypto";function bl(e){return e==null?e:JSON.parse(JSON.stringify(e))}function Fl(e){return Array.isArray(e)?e.map(Fl):e&&typeof e=="object"?Object.fromEntries(Object.keys(e).sort().map(A=>[A,Fl(e[A])])):e}function kw(e){if(!e||typeof e!="object"||Array.isArray(e))throw new TypeError("shadow-runner: record must be an object");return Rl("sha256").update(JSON.stringify(Fl(e))).digest("hex")}function ox(e,A,t,r,n){return Rl("sha256").update(`${e}|${A}|${t}|${r}|${n}`).digest("hex")}function ax(e,A,t,r){return Rl("sha256").update(`shadow|${e}|${A}|${t}|${r??""}`).digest("hex")}function cx(e){return e==="entryLong"||e==="exitShort"?"buy":e==="entryShort"||e==="exitLong"?"sell":e}function Dw(e){return e==="entryLong"||e==="entryShort"}function Sl({storePath:e,clock:A=Date.now}={}){if(typeof e!="string"||!e)throw new Error("shadow-runner: storePath required");let t=pw({path:e});function r({strategy:a,evidenceId:g=null}={}){let l=Je(a),c=g==null?null:String(g),Q=t.list().filter(I=>I.status==="running"&&I.strategyHash===l.strategyHash&&I.compilerHash===l.compilerHash&&I.evidenceId===c).sort((I,C)=>I.createdAt-C.createdAt||I.id.localeCompare(C.id))[0];if(Q)return bl(Q);let B=A(),E=ax(B,l.strategyHash,l.compilerHash,c),u=t.get(E);if(u)return bl(u);let h={id:E,strategy:bl(l.strategy),strategyHash:l.strategyHash,compilerHash:l.compilerHash,evidenceId:c,status:"running",cursor:null,intendedOrders:[],fills:[],missedFills:[],markouts:[],createdAt:B,updatedAt:B,position:null,cooldownBarsRemaining:0,cooldownStartT:null,lastProcessedBarIndex:-1};return t.create(h)}function n(a){return t.get(a)}function s(){return t.list()}function i(a){return t.stop(a)}function o(a,g,{markoutHorizons:l=[1,4,12]}={}){if(!Array.isArray(g))throw new TypeError("shadow-runner: bars must be an array");return t.update(a,c=>{if(c.status!=="running")throw new Error("shadow-runner: runner is stopped");if(g.length===0)return c;let B=Je(c.strategy).evaluateAll(g),E=new Map;for(let w=0;w<g.length;w++)E.set(g[w].t,w);let u=c.cursor,h=[];for(let w=0;w<g.length;w++){let H=g[w].t;(u==null||H>u)&&h.push(w)}if(h.length===0)return c;let I=new Map(c.intendedOrders.map(w=>[w.id,w])),C=new Set(c.fills.map(w=>w.orderId)),D=new Map(c.missedFills.map(w=>[w.orderId,w])),f=(w,H)=>`${w}|${H}`,R=new Map(c.markouts.map(w=>[f(w.orderId,w.horizon),w])),S=c.position?{...c.position}:null,d=Number.isInteger(c.cooldownBarsRemaining)?Math.max(0,c.cooldownBarsRemaining):0,se=Number.isFinite(c.cooldownStartT)?c.cooldownStartT:null;function ke({action:w,signalBarT:H,signalIndex:q}){let ee=cx(w),j=ox(c.id,c.strategyHash,H,ee,w);if(I.has(j))return I.get(j);let _=q+1,te=_<g.length,Re={id:j,action:w,type:w,side:ee,signalBarT:H,fillBarT:te?g[_].t:null,status:te?"open":"missed"};return I.set(j,Re),c.intendedOrders.push(Re),Re}function Le(w,H,q){if(C.has(w.id))return;let ee={orderId:w.id,action:Dw(w.action)?"entry":"exit",side:w.side,price:H.o,barT:H.t,signalBarT:w.signalBarT,barIndex:q};if(c.fills.push(ee),C.add(w.id),w.status="filled",w.fillBarT=H.t,D.has(w.id)&&(D.delete(w.id),c.missedFills=c.missedFills.filter(j=>j.orderId!==w.id)),Dw(w.action)){S={side:w.action==="entryLong"?"long":"short",entryOrderId:w.id,entryBarT:H.t,entryPrice:H.o,entryBarIndex:q};for(let j of l){let _=f(w.id,j);if(R.has(_))continue;let te={orderId:w.id,horizon:j,entryBarT:H.t,entryPrice:H.o,side:S.side,status:"pending",close:null,barT:null};R.set(_,te),c.markouts.push(te)}}else S=null,d=Number(c.strategy?.risk?.cooldownBars)||0,se=H.t}function me(w){if(C.has(w.id)||D.has(w.id))return;let H={orderId:w.id,action:w.action,side:w.side,signalBarT:w.signalBarT,status:"missed"};D.set(w.id,H),c.missedFills.push(H),w.status="missed"}for(let w of c.intendedOrders){if(w.status==="filled"||C.has(w.id))continue;let H=E.get(w.signalBarT);if(H==null)continue;let q=H+1;q<g.length&&(u==null||g[q].t>u)&&Le(w,g[q],q)}for(let w of h){let H=g[w],q=B[w].signals,ee=S,j=te=>{if(S||d>0&&(se==null||H.t>=se))return;let fe=ke({action:te,signalBarT:H.t,signalIndex:w}),wA=w+1;wA<g.length?Le(fe,g[wA],wA):me(fe)},_=te=>{if(!S||S.side==="long"&&te!=="exitLong"||S.side==="short"&&te!=="exitShort")return;let Re=ke({action:te,signalBarT:H.t,signalIndex:w}),fe=w+1;fe<g.length?Le(Re,g[fe],fe):me(Re)};ee?(q.exitLong&&_("exitLong"),q.exitShort&&_("exitShort")):q.entryLong&&q.entryShort||(q.entryLong&&j("entryLong"),q.entryShort&&j("entryShort")),d>0&&se!=null&&H.t>=se&&(d-=1,d===0&&(se=null)),c.cursor=H.t,c.lastProcessedBarIndex=w}for(let w of c.markouts){if(w.status!=="pending")continue;let H=c.fills.find(j=>j.orderId===w.orderId&&j.action==="entry");if(!H)continue;let q=E.get(H.barT);if(q==null)continue;let ee=q+w.horizon;if(ee<g.length){w.close=g[ee].c,w.barT=g[ee].t,w.status="filled";let j=w.entryPrice;w.markout=w.side==="long"?(w.close-j)/j:(j-w.close)/j}}return c.position=S,c.cooldownBarsRemaining=d,c.cooldownStartT=se,c.updatedAt=A(),c})}return{start:r,step:o,list:s,get:n,stop:i}}var bw=De(()=>{zt();mw()});var Sw={};Pw(Sw,{runStrategyOperation:()=>hx});import gx from"node:os";import lx from"node:path";function Qs(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function Ex(e){return String(e).toLowerCase().replace(/[^a-z0-9]/g,"")}function Ml(e){if(Array.isArray(e)){for(let A of e)Ml(A);return}if(Qs(e))for(let[A,t]of Object.entries(e)){if(Qx.some(r=>Ex(A).includes(r)))throw new Error(`strategy service: secret-like field "${A}" is forbidden`);Ml(t)}}function Bx(e){if(!Qs(e))throw new TypeError("strategy input must be a plain object");return Ml(e),e}function ux(e,A={}){if(A.nowMs!==void 0){if(!Number.isInteger(A.nowMs))throw new TypeError("nowMs must be an integer epoch milliseconds");return A.nowMs}let t=Date.now();if(e.nowMs===void 0||e.nowMs===null)return t;if(!Number.isInteger(e.nowMs))throw new TypeError("nowMs must be an integer epoch milliseconds");if(Math.abs(e.nowMs-t)>12e4)throw new Error("nowMs outside allowed wall-clock skew (120s); omit nowMs to use server time");return e.nowMs}async function Nl(e,A,t,r){if(Array.isArray(A.bars))return A.bars;let n=gl(e.venue),s=t.fetchBars??n.fetchBars;if(typeof s!="function")throw new Error(`strategy venue ${n.id} does not support history`);let i=await s({coin:e.market.coin,interval:e.market.interval,count:A.count??1500,endTime:A.endTime??r}),o=Array.isArray(i)?i:i?.bars;if(!Array.isArray(o))throw new Error("strategy history provider returned no bars");return o}function Ul(e,A){let t=e.backtestOptions??{};if(!Qs(t))throw new TypeError("backtestOptions must be a plain object");return{...t,nowMs:A}}function Fw(e,A,t,r,n={}){let s=e.evidenceOptions??{};if(!Qs(s))throw new TypeError("evidenceOptions must be a plain object");return{...s,...n,strategy:A,bars:t,backtestOptions:Ul(e,r)}}function Rw(){return lx.join(gx.homedir(),".oracle","strategy-shadow.json")}function Ix(e,A){return{perStrategyNotionalUsd:e.risk.maxNotionalUsd,maxLeverage:e.risk.maxLeverage,dailyLossCapUsd:e.risk.maxNotionalUsd*(e.risk.maxDailyLossPct/100),chainAllowlist:[e.venue],assetAllowlist:[e.market.coin],expiresAt:Math.min(e.risk.expiresAt,A+864e5),killSwitchRequired:!0}}async function hx(e,A={},t={}){let r=Bx(A),n=ux(r,t);if(e==="draft")return{strategy:Qw(r.prompt,{nowMs:n})};if(e==="validate"){let s=Je(r.strategy);if(s.strategy.risk.expiresAt<=n)throw new Error("strategy is expired");return{valid:!0,strategy:s.strategy,strategyHash:s.strategyHash,compilerHash:s.compilerHash,compilerVersion:s.compilerVersion,requiredSeries:s.requiredSeries}}if(e==="backtest"||e==="evidence"){let s=Je(r.strategy),i=await Nl(s.strategy,r,t,n);gs(s,i);let o=nl(Fw(r,s.strategy,i,n));return e==="evidence"?o:{backtest:ut(s.strategy,i,Ul(r,n)),evidence:o}}if(e==="optimize"){let s=Je(r.strategy),i=await Nl(s.strategy,r,t,n);gs(s,i);let o=r.trainFraction,a=r.evidenceOptions?.trainFraction;if(o!=null&&a!=null&&o!==a)throw new TypeError("conflicting trainFraction controls are forbidden");let g=o??a??.7;if(typeof g!="number"||g<=0||g>=1)throw new TypeError("trainFraction must be in (0,1)");let l=i.slice(0,Math.floor(i.length*g)),c=r.options??{};if(!Qs(c))throw new TypeError("options must be a plain object");let Q=Cw(s.strategy,l,{...c,...r.maxTrials==null?{}:{maxTrials:r.maxTrials},backtestOptions:Ul(r,n)}),B=Q.bestStrategy;return{strategy:B,optimization:Q,evidence:nl(Fw(r,B,i,n,{trainFraction:g}))}}if(e==="shadow"){let s=Sl({storePath:t.storePath??Rw(),clock:()=>n}),i=r.action;if(i==="start")return await s.start({strategy:r.strategy,evidenceId:r.evidenceId??r.evidence?.id??null});if(i==="list")return await s.list();if(i==="get")return await s.get(r.id);if(i==="stop")return await s.stop(r.id);if(i==="step"){let o=await s.get(r.id);if(!o)throw new Error(`shadow runner not found: ${r.id}`);let a=await Nl(o.strategy,r,t,n);return gs(Je(o.strategy),a),await s.step(r.id,a,r.stepOptions??{})}throw new Error(`unknown shadow action: ${i}`)}if(e==="prepare"){let s=Je(r.strategy),i=gl(s.strategy.venue);if(typeof r.shadowId!="string"||!r.shadowId)throw new Error("strategy prepare requires a matching shadow runner id");let a=await Sl({storePath:t.storePath??Rw(),clock:()=>n}).get(r.shadowId);if(!a)throw new Error("strategy prepare shadow runner not found");if(a.status!=="running")throw new Error("strategy prepare requires an active shadow runner");if(!Number.isFinite(a.cursor))throw new Error("strategy prepare requires a stepped shadow runner");if(a.strategyHash!==s.strategyHash||a.compilerHash!==s.compilerHash)throw new Error("strategy prepare shadow runner does not match strategy artifacts");if(a.evidenceId!==r.evidence?.id)throw new Error("strategy prepare shadow runner does not match evidence artifact");let g=r.caps??Ix(s.strategy,n);return i.prepareIntent({strategy:s.strategy,evidence:r.evidence,shadow:{id:a.id,stateHash:kw(a),status:a.status,cursor:a.cursor,updatedAt:a.updatedAt},caps:g,nowMs:n,env:t.env??process.env})}throw new Error(`unknown strategy operation: ${e}`)}var Qx,Nw=De(()=>{lo();zt();sl();Ew();fw();bw();ll();Qx=["privatekey","secretkey","seed","mnemonic","passphrase","password","keystore","keymaterial","apikey","authtoken","accesstoken","refreshtoken","credential","bearer","signature","authorization","xprv","xpriv","wif"]});import Mw from"node:fs";function Cx(e){let A={},t=[];for(let r=0;r<e.length;r++){let n=e[r];if(!n.startsWith("--")){t.push(n);continue}let s=n.slice(2),i=e[r+1];i!=null&&!i.startsWith("--")?(A[s]=i,r++):A[s]=!0}return{flags:A,positional:t}}function _t(e,A){if(!e)throw new Error(`${A} path required`);let t=e==="-"?Mw.readFileSync(0,"utf8"):Mw.readFileSync(e,"utf8");try{return JSON.parse(t)}catch{throw new Error(`${A} must contain valid JSON`)}}function Uw(e,A){if(e==null)return;let t=Number(e);if(!Number.isFinite(t))throw new Error(`${A} must be a finite number`);return t}var fx=`oracle strategy <draft|validate|backtest|optimize|evidence|shadow|prepare> [args]
|
|
1
|
+
var An=Object.defineProperty;var D=(e,t,r)=>()=>{if(r)throw r[0];try{return e&&(t=e(e=0)),t}catch(n){throw r=[n],n}};var Pn=(e,t)=>{for(var r in t)An(e,r,{get:t[r],enumerable:!0})};import ue from"node:net";import $n from"node:dns";function Ue(e){let t=String(e).toLowerCase().split("%")[0];if((t.match(/::/g)||[]).length>1)return null;let r=d=>{if(!d)return[];let c=d.split(":"),f=c.at(-1);if(f?.includes(".")){let m=f.split(".").map(Number);if(m.length!==4||m.some(p=>!Number.isInteger(p)||p<0||p>255))return null;c.splice(c.length-1,1,(m[0]<<8|m[1]).toString(16),(m[2]<<8|m[3]).toString(16))}return c.some(m=>!/^[0-9a-f]{1,4}$/.test(m))?null:c.map(m=>Number.parseInt(m,16))},[n,o]=t.split("::"),a=r(n),s=r(o);if(!a||!s)return null;let i=t.includes("::"),l=8-a.length-s.length;if(!i&&l!==0||i&&l<1)return null;let u=[...a,...Array(Math.max(0,l)).fill(0),...s];return u.length!==8?null:Uint8Array.from(u.flatMap(d=>[d>>8,d&255]))}function tt(e,t,r){let n=Math.floor(r/8),o=r%8;for(let s=0;s<n;s+=1)if(e[s]!==t[s])return!1;if(!o)return!0;let a=255<<8-o;return(e[n]&a)===(t[n]&a)}function rt(e){if(ue.isIPv4(e)){let t=e.split(".").map(Number);return!(t[0]===0||t[0]===10||t[0]===127||t[0]>=224||t[0]===100&&t[1]>=64&&t[1]<=127||t[0]===169&&t[1]===254||t[0]===172&&t[1]>=16&&t[1]<=31||t[0]===192&&(t[1]===0||t[1]===2||t[1]===168)||t[0]===192&&t[1]===88&&t[2]===99||t[0]===198&&(t[1]===18||t[1]===19||t[1]===51)||t[0]===203&&t[1]===0&&t[2]===113)}if(ue.isIPv6(e)){let t=Ue(e);if(!t)return!1;let r=Ue("::ffff:0:0");return tt(t,r,96)?rt([...t.slice(12)].join(".")):tt(t,Ue("2000::"),3)?![["2001::",23],["2001:db8::",32],["2001:10::",28],["2001:2::",48],["2002::",16],["3fff::",20]].some(([o,a])=>tt(t,Ue(o),a)):!1}return!1}function _n(e){let t;try{t=new URL(String(e))}catch{return{ok:!1,error:`not a valid URL: ${String(e).slice(0,120)}`}}if(t.protocol!=="http:"&&t.protocol!=="https:")return{ok:!1,error:`refused protocol ${t.protocol} (only http/https)`};let r=t.hostname.toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,"");if(Tn.has(r)||r.endsWith(".localhost")||r.endsWith(".internal"))return{ok:!1,error:`refused internal host ${r}`};let n=ue.isIP(r);return n!==0&&!rt(r)?{ok:!1,error:`refused private address ${r}`}:{ok:!0,url:t,host:r,isLiteralIp:n!==0}}async function nt(e,{lookupFn:t=$n.promises.lookup}={}){let r=_n(e);if(!r.ok)return r;if(r.isLiteralIp)return{ok:!0,url:r.url,addresses:[{address:r.host,family:ue.isIPv6(r.host)?6:4}]};let n;try{n=await t(r.host,{all:!0,verbatim:!0})}catch{return{ok:!1,error:`refused: ${r.host} did not resolve`}}return!Array.isArray(n)||n.length===0||n.some(o=>!rt(o.address))?{ok:!1,error:`refused: ${r.host} resolves to a non-public address`}:{ok:!0,url:r.url,addresses:n}}async function ot({requireUndici:e=!1,importUndici:t=()=>import("undici")}={}){let r,n;try{let c=await t();r=c.Agent,n=c.fetch}catch(c){if(e)throw new Error(`egress-guard: untrustedUrl pinning requires the undici package, which failed to load: ${c?.message||c}`);return null}if(typeof r!="function"||typeof n!="function"){if(e)throw new Error("egress-guard: untrustedUrl pinning requires undici's Agent and fetch exports, which were not found on the imported module");return null}let o=c=>String(c).toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,""),a=new Map,s=c=>(Array.isArray(c)?c:[c]).map(f=>typeof f=="string"?{address:f}:f).filter(f=>f&&f.address).map(f=>({address:f.address,family:f.family||(ue.isIPv6(f.address)?6:4)})),i=(c,f,m)=>{a.set(o(c),s(typeof f=="string"?[{address:f,family:m}]:f))},l=c=>{let f=o(c);if(ue.isIP(f))return[{address:f,family:ue.isIPv6(f)?6:4}];let m=a.get(f);if(!m||!m.length)throw new Error(`refused: unpinned host ${c} during pinned fetch`);return m},u=new r({connect:{lookup(c,f,m){let p;try{p=l(c)}catch(y){return m(y)}return f?.all?m(null,p):m(null,p[0].address,p[0].family)}}}),d=In((c,f={})=>n(c,{...f,dispatcher:u}),i);return{dispatcher:u,fetch:d,pin:i,resolve:l,async close(){try{await u.destroy()}catch{}}}}function In(e,t){if(typeof e!="function")throw new Error("markPinCapableFetch: fetchImpl must be a function");if(typeof t!="function")throw new Error("markPinCapableFetch: pin must be a function");return e[st]=Object.freeze({pin:t}),e}function it(e){return typeof e=="function"&&typeof e[st]?.pin=="function"}function Wt(e,t,r){if(!it(e))throw new Error("pinFetchToAddresses: fetchImpl is not pin-capable");e[st].pin(t,r)}var Tn,st,Xt=D(()=>{Tn=new Set(["localhost","metadata.google.internal","metadata.goog"]);st=Symbol.for("oracle.egressGuard.pinCapableFetch")});import{createHash as vn}from"node:crypto";function jn(e){let t=String(e||"").toLowerCase();return nr.includes(t)||/(^|-)(api[-_]?key|key|token|secret|auth|authorization|session|cookie|signature|access)(-|$)/.test(t)}function Fn(e){let t={};for(let[r,n]of Object.entries(e||{}))jn(r)||(t[r]=n);return t}function Ln(e,t){if(!e)throw new Error(`HTTP redirect from ${t} missing Location`);let r=new URL(String(e),String(t));if(r.protocol!=="http:"&&r.protocol!=="https:")throw new Error(`HTTP redirect from ${t} used unsupported protocol ${r.protocol}`);return r.toString()}function Hn(e,t){return new URL(String(e)).origin===new URL(String(t)).origin}function Cn(e,t,r,n={}){let o={};for(let[d,c]of Object.entries(r||{}))o[d.toLowerCase()]=c;let a=Object.keys(o).filter(d=>/(^|-)(api[-_]?key|key|token|secret|auth|authorization|session|cookie|signature|access)(-|$)/.test(d)),i=[...new Set([...nr,...a])].sort().map(d=>`${d}=${o[d]??""}`).join(`
|
|
2
|
+
`),l=vn("sha256").update(i).digest("hex").slice(0,32),u=`${n.untrustedUrl?"untrusted":"trusted"}:${n.maxResponseBytes??"unbounded"}`;return`${e} ${t} ${u} ${l}`}function qn(e,t){let r=Number(t);return Number.isFinite(r)&&r>0?Math.min(r*1e3,Qt):Math.min(250*2**e,Qt)+Math.floor(Math.random()*100)}function Te(e,t={}){let r=new Error(e);return r.retryable=!1,Object.assign(r,t),r}function ct(e,t,r){return Te(`HTTP response from ${e} exceeded maxResponseBytes ${r} (${t})`,{oversize:!0})}function _e(e){try{let t=e?.body?.cancel?.();t&&typeof t.then=="function"&&t.catch(()=>{})}catch{}}function Bn(e){return e?e.byteLength??e.length??0:0}async function tr(e,t,{url:r,truncate:n=!1,onOversize:o}={}){if(t==null)return await e.text();let a=Number(e.headers?.get?.("content-length"));if(Number.isFinite(a)&&a>t&&(_e(e),!n))throw ct(r,`content-length ${a}`,t);let s=e.body?.getReader?.();if(!s){let c=await e.text(),f=Buffer.byteLength(c,"utf8");if(f>t){if(!n)throw ct(r,`body ${f} bytes`,t);return Buffer.from(c,"utf8").subarray(0,t).toString("utf8")}return c}let i=[],l=0,u=!1;try{for(;;){let{value:c,done:f}=await s.read();if(f)break;if(c&&(i.push(Buffer.from(c)),l+=Bn(c),l>t)){u=!0;break}}}finally{if(u)try{await s.cancel()}catch{}try{s.releaseLock?.()}catch{}}if(u&&(typeof o=="function"&&o(),!n))throw ct(r,`streamed ${l} bytes`,t);let d=Buffer.concat(i);return(u?d.subarray(0,t):d).toString("utf8")}function rr(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}async function zn(e,{fetchImpl:t,method:r,headers:n,body:o,timeoutMs:a,lookupFn:s,realFetch:i,untrustedUrl:l=!1,maxResponseBytes:u=null,importUndici:d,validateResponse:c}){let f=new AbortController,m=setTimeout(()=>f.abort(),a),p=null,y=t,x=s?{lookupFn:s}:{};if(l&&!i&&!it(y))throw Te(`HTTP refused ${e}: untrustedUrl requires a pin-capable fetchImpl (see markPinCapableFetch in egress-guard.mjs) or no fetchImpl override so Oracle can pin the connection itself`);let S=async(k,{status:T=null}={})=>{let E=await nt(k,x);if(!E.ok)throw Te(T==null?`HTTP refused ${k}: ${E.error}`:`HTTP redirect to ${k} ${E.error}`,T==null?{}:{status:T});let A=new URL(k).hostname;if(i){if(p&&(await p.close(),p=null),!p)try{p=await ot({requireUndici:!0,...d?{importUndici:d}:{}})}catch($){throw Te(T==null?`HTTP refused ${k}: ${$?.message||$}`:`HTTP redirect to ${k} refused: ${$?.message||$}`,T==null?{}:{status:T})}p.pin(A,E.addresses),y=p.fetch}else Wt(y,A,E.addresses);return E};try{let k=String(e),T={...n||{}};l&&await S(k);for(let E=0;E<=er;E+=1){let A=await y(k,{method:r,headers:T,body:o,signal:f.signal,redirect:"manual"});if(Mn.has(A.status)){if(r!=="GET"&&r!=="HEAD"){let U=await tr(A,u??Rn,{url:k,truncate:!0}),h=new Error(`HTTP ${A.status} ${r} ${k} redirected non-idempotent request`);throw h.status=A.status,h.body=rr(U)??U.slice(0,300),h}if(E===er)throw _e(A),new Error(`HTTP redirect loop for ${e}`);let R=A.headers?.get?.("location"),V;try{V=Ln(R,k)}catch(U){throw _e(A),U}let W=!Hn(V,k);if(_e(A),W&&(T=Fn(T)),l)await S(V,{status:A.status});else if(W){let U=await nt(V,x);if(!U.ok){let h=new Error(`HTTP redirect from ${k} ${U.error}`);throw h.status=A.status,h.retryable=!1,h}i&&U.addresses?.length&&(p||(p=await ot(d?{importUndici:d}:{})),p&&(p.pin(new URL(V).hostname,U.addresses),y=p.fetch))}k=V;continue}if(typeof c=="function")try{await c(A,{url:k})}catch(R){throw _e(A),Te(R?.message||String(R))}let $=await tr(A,u,{url:k,onOversize:()=>f.abort()}),w=rr($);if(!A.ok){let R=new Error(`HTTP ${A.status} ${r} ${k}`);throw R.status=A.status,R.retryAfter=A.headers?.get?.("retry-after")??null,R.body=w??$.slice(0,300),R}return w??$}throw new Error(`HTTP redirect loop for ${e}`)}finally{clearTimeout(m),p&&await p.close()}}async function or(e,t={}){let r=t.fetchImpl||globalThis.fetch;if(typeof r!="function")throw new Error("fetch unavailable \u2014 pass opts.fetchImpl");let n=t.timeoutMs??12e3,o=(t.method||"GET").toUpperCase(),a={Accept:"application/json",...t.headers||{}},s=t.body;s!=null&&typeof s!="string"&&(a["Content-Type"]=a["Content-Type"]||"application/json",s=JSON.stringify(s));let i=Number.isInteger(t.retries)?Math.max(t.retries,0):Nn,l=t.lookupFn,u=!t.fetchImpl,d=t.untrustedUrl===!0,c=t.importUndici,f=t.validateResponse,m=Number(t.maxResponseBytes),p=Number.isFinite(m)&&m>0?Math.floor(m):null,y=async()=>{let E;for(let A=0;A<=i;A++)try{return await zn(e,{fetchImpl:r,method:o,headers:a,body:s,timeoutMs:n,lookupFn:l,realFetch:u,untrustedUrl:d,maxResponseBytes:p,importUndici:c,validateResponse:f})}catch($){E=$;let w=$?.status,R=$?.name==="AbortError",V=new Set([408,425,429]),W=$?.retryable===!1?!1:w!=null?V.has(w)||On.has(w)&&Zt.has(o):!R&&Zt.has(o);if(A===i||!W)throw $;await Un(qn(A,$?.retryAfter))}throw E};if(!(t.dedupe!==!1&&o==="GET"&&s==null))return y();let S=Cn(o,e,a,{untrustedUrl:d,maxResponseBytes:p}),k=at.get(S);if(k)return k;let T=y().finally(()=>at.delete(S));return at.set(S,T),T}var On,Zt,Nn,Qt,nr,Mn,er,Rn,at,Un,sr=D(()=>{Xt();On=new Set([408,425,429,500,502,503,504]),Zt=new Set(["GET","HEAD","OPTIONS","PUT","DELETE"]),Nn=2,Qt=4e3,nr=["authorization","x-api-key","x-tensor-api-key","0x-api-key","api-key","cookie","proxy-authorization"],Mn=new Set([301,302,303,307,308]),er=3,Rn=64*1024;at=new Map;Un=e=>new Promise(t=>setTimeout(t,e))});function Jn({testnet:e,baseUrl:t}={}){if(t)return t.replace(/\/$/,"").endsWith("/info")?t:`${t.replace(/\/$/,"")}/info`;if(process.env.HL_INFO_URL)return process.env.HL_INFO_URL;if(process.env.HL_API_URL){let r=process.env.HL_API_URL.replace(/\/$/,"");return r.endsWith("/info")?r:`${r}/info`}return e||process.env.HL_TESTNET==="1"?Vn:Dn}async function lt(e,t={}){if(!e||!e.type)throw new Error("hlInfo requires body.type");let r=Jn(t);return or(r,{method:"POST",body:e,fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs})}async function ir(e={}){return lt({type:"meta"},e)}async function ar({coin:e,interval:t="1h",startTime:r,endTime:n},o={}){if(!e)throw new Error("hlCandleSnapshot requires coin");let a={type:"candleSnapshot",req:{coin:String(e),interval:t,startTime:r??Date.now()-24*3600*1e3,endTime:n??Date.now()}};return lt(a,o)}async function cr({coin:e,startTime:t,endTime:r},n={}){if(!e)throw new Error("hlFundingHistory requires coin");return lt({type:"fundingHistory",coin:String(e),startTime:t??Date.now()-24*3600*1e3,endTime:r??Date.now()},n)}var Dn,Vn,ut=D(()=>{sr();Dn="https://api.hyperliquid.xyz/info",Vn="https://api.hyperliquid-testnet.xyz/info"});import{createHash as Kn}from"node:crypto";function re(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function we(e){return typeof e=="number"&&Number.isFinite(e)}function pt(e){if(e==null||typeof e!="object"||Object.isFrozen(e))return e;if(Array.isArray(e)){for(let t of e)pt(t);return Object.freeze(e)}for(let t of Object.keys(e))pt(e[t]);return Object.freeze(e)}function fe(e){if(Array.isArray(e))return e.map(fe);if(e!=null&&typeof e=="object"){let t={};for(let r of Object.keys(e).sort())t[r]=fe(e[r]);return t}return e}function ft(e){return{netPnlUsd:e.metrics.netPnlUsd,netPnlPct:e.metrics.netPnlPct,maxDrawdownPct:e.metrics.maxDrawdownPct,winRate:e.metrics.winRate,profitFactor:e.metrics.profitFactor,tradeCount:e.metrics.tradeCount,sharpe:e.metrics.sharpe,turnoverUsd:e.metrics.turnoverUsd,exposurePct:e.metrics.exposurePct}}function lr(e){return{feesUsd:e.costs.feesUsd,builderFeesUsd:e.costs.builderFeesUsd,fundingUsd:e.costs.fundingUsd,slippageUsd:e.costs.slippageUsd}}function Gn(e){return(e.feesUsd||0)+(e.builderFeesUsd||0)+Math.max(0,e.fundingUsd||0)+(e.slippageUsd||0)}function Wn(e){let t=0;for(let r of e.trades)r.grossPnlUsd>0&&(t+=r.grossPnlUsd);return t}function Xn(e,t,r){return!(!e||e.tradeCount<Math.max(1,Math.min(r,3))||!(e.netPnlUsd>0)||!(e.profitFactor>1)||!(e.maxDrawdownPct<=t.maxDailyLossPct))}function fr(e){if(!re(e))throw new TypeError("evidence artifact must be a plain object");if(!Yn.includes(e.status))throw new TypeError("evidence artifact status is invalid");for(let t of["strategyHash","compilerHash","barsHash"])if(typeof e[t]!="string"||!/^[0-9a-f]{64}$/.test(e[t]))throw new TypeError(`evidence artifact ${t} must be a sha256 hash`);if(!re(e.split))throw new TypeError("evidence artifact split required");if(!Array.isArray(e.flags))throw new TypeError("evidence artifact flags must be an array");if(!re(e.walkForward)||!Array.isArray(e.walkForward.windows))throw new TypeError("evidence artifact walkForward windows required");if(e.status==="pass_live_eligible"&&(!re(e.train)||!re(e.holdout)))throw new TypeError("live-eligible evidence artifact requires train and holdout facts");return fe({barsHash:e.barsHash,compilerHash:e.compilerHash,flags:e.flags.map(t=>fe(t)),holdout:e.holdout??null,split:e.split,status:e.status,strategyHash:e.strategyHash,train:e.train??null,walkForward:{passRate:e.walkForward.passRate,windowsRun:e.walkForward.windowsRun??e.walkForward.windows.length,windows:e.walkForward.windows.map(t=>({index:t.index,trainStartIndex:t.trainStartIndex,trainEndIndex:t.trainEndIndex,passed:t.passed,reason:t.reason,evalStartIndex:t.evalStartIndex,evalEndIndex:t.evalEndIndex,metrics:t.metrics}))}})}function dr(e){return Kn("sha256").update(JSON.stringify(fr(e)),"utf8").digest("hex")}function Z(e,t,r=0){if(!Number.isInteger(e)||e<r)throw new Error(`${t} must be an integer >= ${r}`);return e}function dt(e,t){if(!re(e)||!re(e.metrics))throw new Error(`${t} metrics required`);let r=Z(e.tradeCount,`${t}.tradeCount`);if(e.metrics.tradeCount!==r)throw new Error(`${t} tradeCount contradicts metrics.tradeCount`);for(let n of["netPnlUsd","profitFactor","maxDrawdownPct"])if(!we(e.metrics[n]))throw new Error(`${t}.metrics.${n} must be finite`);if(e.metrics.maxDrawdownPct<0)throw new Error(`${t}.metrics.maxDrawdownPct must be >= 0`);return e.metrics}function Zn(e,{maxDailyLossPct:t}={}){let r=e.split,n=Z(r.trainStartIndex,"split.trainStartIndex"),o=Z(r.trainEndIndex,"split.trainEndIndex"),a=Z(r.trainBarCount,"split.trainBarCount",1),s=Z(r.holdoutStartIndex,"split.holdoutStartIndex"),i=Z(r.holdoutEndIndex,"split.holdoutEndIndex"),l=Z(r.holdoutBarCount,"split.holdoutBarCount",1);if(n!==0||o-n+1!==a||s!==o+1||i-s+1!==l)throw new Error("evidence split must be contiguous, chronological, and count-consistent");if(!we(r.trainFraction)||r.trainFraction<=0||r.trainFraction>=1)throw new Error("split.trainFraction must be in (0,1)");dt(e.train,"train");let u=dt(e.holdout,"holdout");if(u.tradeCount<1||u.netPnlUsd<=0||u.profitFactor<=1)throw new Error("live-eligible holdout metrics do not pass");if(we(t)&&u.maxDrawdownPct>t)throw new Error("live-eligible holdout drawdown exceeds strategy risk");if(e.flags.length>0)throw new Error("live-eligible evidence cannot contain failure flags");let d=e.walkForward,c=d.windows;if(c.length<1||d.windowsRun!==c.length)throw new Error("live-eligible walk-forward windowsRun must match nonempty windows");let f=0,m=-1;for(let y=0;y<c.length;y++){let x=c[y];if(!re(x)||x.index!==y||typeof x.passed!="boolean")throw new Error("walk-forward windows must be ordered and structurally valid");let S=Z(x.trainStartIndex,`walkForward.windows[${y}].trainStartIndex`),k=Z(x.trainEndIndex,`walkForward.windows[${y}].trainEndIndex`),T=Z(x.evalStartIndex,`walkForward.windows[${y}].evalStartIndex`),E=Z(x.evalEndIndex,`walkForward.windows[${y}].evalEndIndex`);if(S!==0||k>=T||T>E||T<=m)throw new Error("walk-forward windows must be chronological and disjoint");if(m=E,x.passed){if(f+=1,x.reason!=="pass")throw new Error("passed walk-forward window reason must be pass");let A=dt({metrics:x.metrics,tradeCount:x.metrics?.tradeCount},`walkForward.windows[${y}]`);if(A.tradeCount<1||A.netPnlUsd<=0||A.profitFactor<=1)throw new Error("passed walk-forward window metrics do not pass");if(we(t)&&A.maxDrawdownPct>t)throw new Error("passed walk-forward drawdown exceeds strategy risk")}else if(x.reason==="pass")throw new Error("failed walk-forward window cannot have pass reason")}let p=f/c.length;if(!we(d.passRate)||Math.abs(d.passRate-p)>Number.EPSILON||p<.6)throw new Error("walk-forward passRate contradicts concrete windows or is below live threshold")}function pr(e,t={}){if(typeof e?.id!="string"||!/^[0-9a-f]{64}$/.test(e.id))throw new Error("evidence.id must be a sha256 evidence artifact hash");let r=fr(e),n=fe({id:e.id,...r});if(JSON.stringify(fe(e))!==JSON.stringify(n))throw new Error("evidence artifact contains fields unbound from its deterministic identity");let o=dr(e);if(e.id!==o)throw new Error("evidence.id does not match its deterministic artifact facts digest");return e.status==="pass_live_eligible"&&Zn(e,t),e}function mt({strategy:e,bars:t,backtestOptions:r={},trainFraction:n=.7,walkForwardWindows:o=3,minTrades:a=10}={}){let s=[];if(!re(e))throw new TypeError("strategy must be a plain object");if(!Array.isArray(t))throw new TypeError("bars must be an array");if(!re(r))throw new TypeError("backtestOptions must be a plain object");if(!we(n)||n<=0||n>=1)throw new TypeError("trainFraction must be in (0,1)");if(!Number.isInteger(o)||o<1)throw new TypeError("walkForwardWindows must be a positive integer");if(!Number.isInteger(a)||a<0)throw new TypeError("minTrades must be an integer >= 0");let i=Y(e),l=ge(i),u=Ie(t),d=t.length,c=(v=[],M={})=>ur({status:"fail",strategy:i,sHash:l,barsHash:u,split:M.split||{trainStartIndex:0,trainEndIndex:-1,trainBarCount:0,holdoutStartIndex:0,holdoutEndIndex:-1,holdoutBarCount:0,trainFraction:n},train:M.train||null,holdout:M.holdout||null,walkForward:M.walkForward||{windows:[],passRate:0},flags:[...s,...v]});if(d<10)return c([{type:"insufficient_bars",message:"need at least 10 bars for evidence"}]);let f=Math.floor(d*n),m=f,p=d-m;if(f<5||p<3)return c([{type:"invalid_windowing",message:"train/holdout split too small",trainCount:f,holdoutCount:p}]);let y=t.slice(0,f),x=t.slice(m),S,k;try{S=ae(i,y,r),k=ae(i,x,r)}catch(v){return c([{type:"backtest_error",message:String(v.message||v)}])}let T={metrics:ft(S),costs:lr(S),tradeCount:S.metrics.tradeCount},E={metrics:ft(k),costs:lr(k),tradeCount:k.metrics.tradeCount},A={trainStartIndex:0,trainEndIndex:f-1,trainBarCount:f,holdoutStartIndex:m,holdoutEndIndex:d-1,holdoutBarCount:p,trainFraction:n},$=[],w=Math.floor(d/(o+1));if(w<3)s.push({type:"invalid_windowing",message:"walk-forward window size too small",wfSize:w});else for(let v=0;v<o;v++){let M=w*(v+1),J=M,B=Math.min(d,J+w);if(B-J<3||M<3){$.push({index:v,trainStartIndex:0,trainEndIndex:M-1,evalStartIndex:J,evalEndIndex:B-1,passed:!1,reason:"window_too_small",metrics:null});continue}let ee=t.slice(J,B),He;try{He=ae(i,ee,r)}catch{$.push({index:v,trainStartIndex:0,trainEndIndex:M-1,evalStartIndex:J,evalEndIndex:B-1,passed:!1,reason:"backtest_error",metrics:null});continue}let Ce=ft(He),qe=Xn(Ce,i.risk,a);$.push({index:v,trainStartIndex:0,trainEndIndex:M-1,evalStartIndex:J,evalEndIndex:B-1,passed:qe,reason:qe?"pass":"fail_metrics",metrics:Ce})}let R=$.filter(v=>v.passed).length,V=$.length===0?0:R/$.length,W={windows:$,passRate:V,windowsRun:$.length};E.metrics.tradeCount===0&&T.metrics.tradeCount===0&&s.push({type:"no_trades",message:"no trades in train or holdout"}),E.metrics.tradeCount===0&&s.push({type:"absent_oos_trades",message:"holdout produced no trades"}),E.metrics.netPnlUsd<0&&s.push({type:"holdout_loss",message:"holdout netPnlUsd is negative"}),T.metrics.netPnlUsd>0&&E.metrics.netPnlUsd<0&&T.metrics.netPnlUsd>Math.abs(E.metrics.netPnlUsd)*.25?s.push({type:"overfit",message:"profitable train with losing holdout (OOS collapse)"}):T.metrics.netPnlUsd>0&&E.metrics.netPnlUsd>0&&E.metrics.netPnlUsd<T.metrics.netPnlUsd*.1&&T.metrics.tradeCount>=a&&s.push({type:"severe_oos_collapse",message:"holdout pnl collapsed vs train"});let U=Gn(E.costs),h=Wn(k);h>0&&U>h&&s.push({type:"costs_exceed_gross",message:"holdout costs exceed gross gains"});let _=s.some(v=>["insufficient_bars","invalid_windowing","absent_oos_trades","holdout_loss","no_trades","severe_oos_collapse","backtest_error"].includes(v.type)),N=s.some(v=>v.type==="overfit"),F="fail";return E.metrics.tradeCount>=a&&E.metrics.netPnlUsd>0&&E.metrics.profitFactor>1&&E.metrics.maxDrawdownPct<=i.risk.maxDailyLossPct&&V>=.6&&!(h>0&&U>h)&&!N&&!s.some(v=>v.type==="severe_oos_collapse"||v.type==="invalid_windowing")?F="pass_live_eligible":!_&&E.metrics.tradeCount>0&&T.metrics.tradeCount>0&&Number.isFinite(E.metrics.netPnlUsd)?(F="pass_paper_only",E.metrics.tradeCount<a&&s.push({type:"undersampled",message:"holdout trades below minTrades"})):N&&E.metrics.tradeCount>0&&T.metrics.netPnlUsd>0?F="fail":E.metrics.tradeCount>0&&T.metrics.tradeCount>0&&!_?F="pass_paper_only":F="fail",E.metrics.netPnlUsd<0&&(F=F==="pass_live_eligible"?"fail":F==="pass_paper_only"?"pass_paper_only":"fail",F="fail"),ur({status:F,strategy:i,sHash:l,barsHash:u,split:A,train:T,holdout:E,walkForward:W,flags:s})}function ur({status:e,strategy:t,sHash:r,barsHash:n,split:o,train:a,holdout:s,walkForward:i,flags:l}){let u={status:e,strategyHash:r,compilerHash:pe,barsHash:n,split:o,train:a,holdout:s,walkForward:i,flags:l};return u.id=dr(u),pt(fe(JSON.parse(JSON.stringify(u))))}var Yn,ht=D(()=>{me();de();Be();Yn=Object.freeze(["fail","pass_paper_only","pass_live_eligible"])});import{createHash as Qn,createHmac as eo,timingSafeEqual as di}from"node:crypto";function yt(e){return e===null||typeof e!="object"?JSON.stringify(e):Array.isArray(e)?`[${e.map(yt).join(",")}]`:`{${Object.keys(e).sort().map(r=>`${JSON.stringify(r)}:${yt(e[r])}`).join(",")}}`}function mr(e){let t=String(e?.ORACLE_STAMP_HMAC_SECRET||"").trim();return t.length>=16?t:""}function hr(e=process.env){return mr(process.env)||mr(e)}function oo(e){let{prepareHash:t,prepareMac:r,note:n,...o}=e||{};return o}function so(e){let t=oo(e);return Qn("sha256").update(yt(t)).digest("hex")}function io(e,t=hr()){return t?eo("sha256",t).update(String(e)).digest("hex"):""}function yr(e,{provider:t,kind:r,env:n=process.env,nowMs:o=Date.now(),expiresAtMs:a}={}){if(!e||typeof e!="object")throw new Error("stampPrepared: payload object required");let s=Object.prototype.hasOwnProperty.call(e,"oraclePrepared");if(s&&typeof e.oraclePrepared!="boolean")throw new Error("stampPrepared: oraclePrepared must be boolean");let i={...e,provider:e.provider||t,kind:e.kind||r,requiresUserSignature:e.requiresUserSignature!==!1,signingReady:!1,broadcastReady:!1,executionReady:!1,oraclePrepared:s?e.oraclePrepared:!0};if(!i.provider)throw new Error("stampPrepared: provider required");if(!i.kind)throw new Error("stampPrepared: kind required");let l=Number(o),u=a==null?l+ro:Number(a),d=u-l;if(!Number.isSafeInteger(l)||!Number.isSafeInteger(u)||d<=0||d>no)throw new Error("stampPrepared: bounded preparedAt/expiresAt required");let f={...i,preparedAt:l,expiresAt:u,prepareVersion:to},m=so(f),p=hr(n),y=p?io(m,p):void 0,x={...f,prepareHash:m};return y&&(x.prepareMac=y),x}var to,ro,no,wr=D(()=>{to=2,ro=300*1e3,no=(()=>{let e=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(e)&&e>0?e:1800*1e3})()});function ve(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function co(e){return String(e).toLowerCase().replace(/[^a-z0-9]/g,"")}function gt(e,t="value"){if(Array.isArray(e)){e.forEach((r,n)=>gt(r,`${t}[${n}]`));return}if(ve(e))for(let[r,n]of Object.entries(e)){let o=co(r);if(ao.some(a=>o.includes(a)))throw new Error(`handoff: forbidden secret-like field at ${t}.${r}`);gt(n,`${t}.${r}`)}}function wt(e){return typeof e=="number"&&Number.isFinite(e)&&e>0}function gr({strategy:e,evidence:t,shadow:r,caps:n,nowMs:o=Date.now(),env:a=process.env}={}){if(gt({strategy:e,evidence:t,shadow:r,caps:n},"handoff"),!ve(e))throw new Error("handoff: strategy required");if(!ve(t))throw new Error("handoff: evidence required");if(!ve(r))throw new Error("handoff: shadow required");if(!ve(n))throw new Error("handoff: caps required");if(typeof r.id!="string"||!r.id.trim())throw new Error("handoff: shadow.id required");if(typeof r.stateHash!="string"||!/^[0-9a-f]{64}$/.test(r.stateHash))throw new Error("handoff: shadow.stateHash must be a sha256 hash");if(r.status!=="running")throw new Error("handoff: shadow.status must be running");if(!Number.isInteger(r.cursor)||r.cursor<=0)throw new Error("handoff: shadow.cursor must be a positive integer");if(!Number.isInteger(r.updatedAt)||r.updatedAt<=0||r.updatedAt>o)throw new Error("handoff: shadow.updatedAt must be a positive integer <= nowMs");let s=Y(e,{nowMs:o}),i=G(s);if(pr(t,{maxDailyLossPct:s.risk.maxDailyLossPct}),t.status!=="pass_live_eligible")throw new Error("handoff: evidence.status must be pass_live_eligible");if(t.strategyHash!==i.strategyHash)throw new Error("handoff: evidence.strategyHash mismatch");if(t.compilerHash!==i.compilerHash)throw new Error("handoff: evidence.compilerHash mismatch");let l=["perStrategyNotionalUsd","maxLeverage","dailyLossCapUsd","chainAllowlist","assetAllowlist","expiresAt","killSwitchRequired"];for(let f of l)if(!(f in n)||n[f]==null)throw new Error(`handoff: caps.${f} required`);if(!wt(n.perStrategyNotionalUsd))throw new Error("handoff: caps.perStrategyNotionalUsd must be positive");if(n.perStrategyNotionalUsd>i.strategy.risk.maxNotionalUsd)throw new Error("handoff: caps.perStrategyNotionalUsd exceeds strategy.risk.maxNotionalUsd");if(!wt(n.maxLeverage))throw new Error("handoff: caps.maxLeverage must be positive");if(n.maxLeverage>i.strategy.risk.maxLeverage)throw new Error("handoff: caps.maxLeverage exceeds strategy.risk.maxLeverage");if(!wt(n.dailyLossCapUsd))throw new Error("handoff: caps.dailyLossCapUsd must be positive");let u=i.strategy.risk.maxNotionalUsd*(i.strategy.risk.maxDailyLossPct/100);if(n.dailyLossCapUsd>u)throw new Error("handoff: caps.dailyLossCapUsd exceeds strategy daily loss ceiling");if(!Array.isArray(n.chainAllowlist)||n.chainAllowlist.length===0)throw new Error("handoff: caps.chainAllowlist must be a non-empty array");if(!n.chainAllowlist.every(f=>f==="hyperliquid"))throw new Error("handoff: caps.chainAllowlist must include only hyperliquid");if(!n.chainAllowlist.includes("hyperliquid"))throw new Error("handoff: caps.chainAllowlist must include hyperliquid");if(!Array.isArray(n.assetAllowlist)||n.assetAllowlist.length===0)throw new Error("handoff: caps.assetAllowlist must be a non-empty array");if(n.assetAllowlist.length!==1||n.assetAllowlist[0]!==i.strategy.market.coin)throw new Error("handoff: caps.assetAllowlist must contain only the strategy market coin");if(!Number.isInteger(n.expiresAt)||!(n.expiresAt>o))throw new Error("handoff: caps.expiresAt must be an integer > nowMs");if(n.expiresAt>i.strategy.risk.expiresAt)throw new Error("handoff: caps.expiresAt exceeds strategy.risk.expiresAt");if(n.killSwitchRequired!==!0)throw new Error("handoff: caps.killSwitchRequired must be exactly true");let d={perStrategyNotionalUsd:n.perStrategyNotionalUsd,maxLeverage:n.maxLeverage,dailyLossCapUsd:n.dailyLossCapUsd,chainAllowlist:[...n.chainAllowlist],assetAllowlist:[...n.assetAllowlist],expiresAt:n.expiresAt,killSwitchRequired:!0},c={strategyHash:i.strategyHash,compilerHash:i.compilerHash,evidence:JSON.parse(JSON.stringify(t)),shadow:{id:r.id,stateHash:r.stateHash,status:r.status,cursor:r.cursor,updatedAt:r.updatedAt},compiled:{strategyHash:i.strategyHash,compilerHash:i.compilerHash,compilerVersion:Oe,venue:"hyperliquid",market:{coin:i.strategy.market.coin,kind:"perp",interval:i.strategy.market.interval},risk:{...i.strategy.risk},strategy:JSON.parse(JSON.stringify(i.strategy))},arming:{liveBroadcast:!1,requiresExplicitUserArm:!0,caps:d},requiresUserSignature:!0,signingReady:!1,broadcastReady:!1,executionReady:!1};return yr(c,{provider:"hl-strategy",kind:"strategy-live-handoff",env:a})}var ao,br=D(()=>{me();ht();de();wr();ao=["privatekey","secretkey","seed","mnemonic","passphrase","password","keystore","keymaterial","apikey","authtoken","accesstoken","refreshtoken","credential","bearer","signature","authorization","xprv","xpriv","wif"]});function be(e,t){let r=Number(e);if(!Number.isFinite(r))throw new TypeError(`${t} must be finite`);return r}function Ee(e,t){if(!Number.isSafeInteger(e)||e<0)throw new TypeError(`${t} must be a non-negative safe integer`);return e}function Ne(e){if(Array.isArray(e))for(let t of e)Ne(t);else if(e&&typeof e=="object")for(let t of Object.values(e))Ne(t);return Object.freeze(e)}function uo(e){let t=lo[e];if(!t)throw new TypeError(`unsupported strategy interval: ${e}`);return t}function fo(e,{endTime:t=Number.MAX_SAFE_INTEGER}={}){if(!Array.isArray(e))throw new TypeError("Hyperliquid candles must be an array");Ee(t,"endTime");let r=new Map;for(let n=0;n<e.length;n++){let o=e[n];if(!o||typeof o!="object"||Array.isArray(o))throw new TypeError(`candles[${n}] must be an object`);let a=Ee(Number(o.t),`candles[${n}].t`);if(Ee(Number(o.T),`candles[${n}].T`)>t)continue;let i={t:a,o:be(o.o,`candles[${n}].o`),h:be(o.h,`candles[${n}].h`),l:be(o.l,`candles[${n}].l`),c:be(o.c,`candles[${n}].c`),v:be(o.v,`candles[${n}].v`)};if(i.h<Math.max(i.o,i.c,i.l))throw new TypeError(`candles[${n}].h is below another price`);if(i.l>Math.min(i.o,i.c,i.h))throw new TypeError(`candles[${n}].l is above another price`);if(i.v<0)throw new TypeError(`candles[${n}].v must be non-negative`);let l=r.get(a);if(l&&JSON.stringify(l)!==JSON.stringify(i))throw new TypeError(`conflicting duplicate candle at timestamp ${a}`);l||r.set(a,i)}return Ne([...r.values()].sort((n,o)=>n.t-o.t))}function po(e,t){if(!Array.isArray(e))throw new TypeError("Hyperliquid funding history must be an array");let r=new Map;for(let n=0;n<e.length;n++){let o=e[n];if(!o||typeof o!="object"||Array.isArray(o))throw new TypeError(`funding[${n}] must be an object`);let a=Ee(Number(o.time),`funding[${n}].time`);a>t||r.set(a,{time:a,fundingRate:be(o.fundingRate,`funding[${n}].fundingRate`)})}return[...r.values()].sort((n,o)=>n.time-o.time)}async function mo({coin:e,startTime:t,endTime:r},n){let o=[],a=Math.max(0,t-288e5),s=!1;for(let i=0;i<16&&a<=r;i++){let l=await cr({coin:e,startTime:a,endTime:r},n);if(!Array.isArray(l))throw new TypeError("Hyperliquid funding history must be an array");o.push(...l);let u=a;for(let d of l){let c=Number(d?.time);Number.isSafeInteger(c)&&c>u&&(u=c)}if(l.length<500||u>=r){s=!0;break}if(u<=a)throw new Error("Hyperliquid funding history pagination did not advance");a=u+1}if(!s)throw new Error("strategy history exceeds the bounded funding history limit");return po(o,r)}function ho(e,t,r){let n=0,o=null;return e.map(a=>{let s=a.t+r,i=0;for(;n<t.length&&t[n].time<s;){let l=t[n];o=l.fundingRate,l.time>=a.t&&(i+=l.fundingRate),n+=1}return o==null?{...a,fundingPaymentRate:i}:{...a,fundingRate:o,fundingPaymentRate:i}})}async function Er(e,t={}){if(!e||typeof e!="object"||Array.isArray(e))throw new TypeError("strategy history input must be an object");let r=String(e.coin||"").trim().toUpperCase();if(!/^[A-Z0-9][A-Z0-9._-]{0,11}$/.test(r))throw new TypeError("coin must be an uppercase Hyperliquid asset id");let n=String(e.interval||"15m"),o=uo(n);if(e.endTime==null)throw new TypeError("endTime is required for deterministic history");let a=Ee(e.endTime,"endTime"),s=e.count==null?1500:e.count;if(!Number.isInteger(s)||s<20||s>5e3)throw new TypeError("count must be an integer from 20 to 5000");let i=e.startTime==null?Math.max(0,a-s*o):Ee(e.startTime,"startTime");if(i>=a)throw new TypeError("startTime must be before endTime");let[l,u]=await Promise.all([ar({coin:r,interval:n,startTime:i,endTime:a},t),mo({coin:r,startTime:i,endTime:a},t)]),d=fo(l,{endTime:a}),c=Ne(ho(d,u,o));return Ne({coin:r,interval:n,range:{startTime:i,endTime:a},bars:c})}var lo,xr=D(()=>{ut();lo=Object.freeze({"1m":6e4,"3m":18e4,"5m":3e5,"15m":9e5,"30m":18e5,"1h":36e5,"2h":72e5,"4h":144e5,"8h":288e5,"12h":432e5,"1d":864e5})});function go(e){let t=[];if(!e||typeof e!="object"||Array.isArray(e))return{ok:!1,errors:[{path:"market",message:"must be a plain object"}],market:null};for(let r of Object.keys(e))wo.has(r)||t.push({path:`market.${r}`,message:"unknown field is not allowed"});return(typeof e.coin!="string"||e.coin.length===0||e.coin.length>32)&&t.push({path:"market.coin",message:"must be a non-empty string max 32"}),(typeof e.interval!="string"||!yo.has(e.interval))&&t.push({path:"market.interval",message:"must be a supported interval"}),t.length?{ok:!1,errors:t,market:null}:{ok:!0,errors:[],market:{coin:e.coin,interval:e.interval}}}async function bo(e={}){let t=await ir(e);if(!t||!Array.isArray(t.universe))throw new TypeError("Hyperliquid market metadata must contain universe");return Object.freeze(t.universe.map((r,n)=>{if(!r||typeof r.name!="string"||!r.name)throw new TypeError(`Hyperliquid market metadata universe[${n}].name is invalid`);return r.name}))}var yo,wo,kr,Sr=D(()=>{ut();br();xr();yo=new Set(["1m","3m","5m","15m","30m","1h","2h","4h","8h","12h","1d"]),wo=new Set(["coin","interval"]);kr=Object.freeze({id:"hyperliquid",validateMarket:go,fetchBars:Er,listMarkets:bo,prepareIntent(e){return gr(e)}})});function xo(e){if(!e||typeof e!="object"||Array.isArray(e))throw new TypeError("strategy venue adapter must be an object");if(typeof e.id!="string"||!/^[a-z0-9][a-z0-9._-]{0,63}$/.test(e.id))throw new TypeError("strategy venue adapter id is malformed");for(let t of Eo.slice(1))if(typeof e[t]!="function")throw new TypeError(`strategy venue adapter ${e.id} requires ${t}()`);for(let t of["fetchBars","listMarkets"])if(e[t]!=null&&typeof e[t]!="function")throw new TypeError(`strategy venue adapter ${e.id} ${t} must be a function`);return e}function bt(e){return typeof e!="string"?null:ko.get(e)??null}function Et(e){let t=bt(e);if(!t)throw new Error(`unknown strategy venue: ${String(e)}`);return t}var Eo,Ar,ko,$i,xt=D(()=>{Sr();Eo=Object.freeze(["id","validateMarket","prepareIntent"]);Ar=[kr].map(xo),ko=new Map(Ar.map(e=>[e.id,e])),$i=Object.freeze([...Ar])});import{createHash as So}from"node:crypto";function X(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function q(e){return typeof e=="number"&&Number.isFinite(e)}function Nr(e){return Number.isInteger(e)&&e>0}function $t(e){if(e==null||typeof e!="object"||Object.isFrozen(e))return e;if(Array.isArray(e)){for(let t of e)$t(t);return Object.freeze(e)}for(let t of Object.keys(e))$t(e[t]);return Object.freeze(e)}function Tt(e){if(Array.isArray(e))return e.map(Tt);if(e!=null&&typeof e=="object"){let t={};for(let r of Object.keys(e).sort())t[r]=Tt(e[r]);return t}return e}function g(e,t,r){e.push({path:t,message:r})}function ce(e,t,r,n){for(let o of Object.keys(e))t.has(o)||g(n,r?`${r}.${o}`:o,"unknown field is not allowed")}function Fr(e,t,r,n){if(!q(e)||!q(t)||!q(r)||!q(n)||n<=0||e<t||e>r)return!1;let o=(e-t)/n;if(!Number.isFinite(o))return!1;let a=Math.round(o);return Math.abs(o-a)<=1e-9}function Pt(e,t,r,n){if(X(e)){if(ce(e,new Set(["param"]),t,n),typeof e.param!="string"||!e.param)return g(n,`${t}.param`,"must be a parameter name string"),null;if(!Object.prototype.hasOwnProperty.call(r,e.param))return g(n,`${t}.param`,`unknown parameter "${e.param}"`),null;let o=r[e.param];return!X(o)||![o.value,o.min,o.max,o.step].every(Nr)?(g(n,`${t}.param`,"referenced period parameter value min max and step must be positive integers"),null):{param:e.param}}return Nr(e)?e:(g(n,t,"must be a positive integer or {param}"),null)}function Mr(e,t,r,n){return X(e)?(ce(e,new Set(["param"]),t,n),typeof e.param!="string"||!e.param?(g(n,`${t}.param`,"must be a parameter name string"),null):Object.prototype.hasOwnProperty.call(r,e.param)?{param:e.param}:(g(n,`${t}.param`,`unknown parameter "${e.param}"`),null)):q(e)?e:(g(n,t,"must be a finite number or {param}"),null)}function ze(e){switch(e.type){case"input":case"constant":return[];case"indicator":return e.input?[e.input]:[];case"compare":case"cross":return[e.left,e.right].filter(Boolean);case"logic":return Array.isArray(e.inputs)?[...e.inputs]:[];default:return[]}}function No(e){let t=new Map,r=n=>{let o=t.get(n)||0;if(o===1)return!0;if(o===2)return!1;t.set(n,1);let a=e.get(n);if(a){for(let s of ze(a))if(e.has(s)&&r(s))return!0}return t.set(n,2),!1};for(let n of e.keys())if(r(n))return!0;return!1}function Mo(e,t){if(!X(e))return g(t,"parameters","must be a plain object"),null;let r=Object.keys(e);if(r.length>Ir)return g(t,"parameters",`too many parameters (max ${Ir})`),null;let n={};for(let o of r){if(!Rr.test(o)){g(t,`parameters.${o}`,"parameter name is malformed");continue}let a=e[o],s=`parameters.${o}`;if(!X(a)){g(t,s,"must be a plain object");continue}ce(a,$r,s,t);for(let c of $r)c in a||g(t,`${s}.${c}`,"required field is missing");let{value:i,min:l,max:u,step:d}=a;q(l)||g(t,`${s}.min`,"must be a finite number"),q(u)||g(t,`${s}.max`,"must be a finite number"),(!q(d)||d<=0)&&g(t,`${s}.step`,"must be a positive finite number"),q(i)||g(t,`${s}.value`,"must be a finite number"),q(l)&&q(u)&&l>u&&g(t,`${s}.min`,"min must be <= max"),q(i)&&q(l)&&q(u)&&q(d)&&d>0&&(Fr(i,l,u,d)||g(t,`${s}.value`,"value must lie on the declared min/max/step grid")),n[o]={value:i,min:l,max:u,step:d}}return n}function Ro(e,t,r,n){let o=`nodes.${t}`;if(!X(e))return g(n,o,"must be a plain object"),null;if(typeof e.type!="string"||!_r[e.type])return g(n,`${o}.type`,"unknown or missing node type"),ce(e,Oo,o,n),null;switch(ce(e,_r[e.type],o,n),(typeof e.id!="string"||!jr.test(e.id))&&g(n,`${o}.id`,"must be a 1-64 char id starting with alphanumeric"),e.type){case"input":return(typeof e.field!="string"||!Ao.has(e.field))&&g(n,`${o}.field`,"must be one of open|high|low|close|volume|fundingRate|openInterest"),{id:e.id,type:"input",field:e.field};case"constant":{let a=Mr(e.value,`${o}.value`,r,n);return{id:e.id,type:"constant",value:a}}case"indicator":{(typeof e.indicator!="string"||!Po.has(e.indicator))&&g(n,`${o}.indicator`,"must be one of sma|ema|rsi|macd|bollinger|atr");let a=e.indicator,s={id:e.id,type:"indicator",indicator:a};if(a==="atr"){"input"in e&&(typeof e.input!="string"||!e.input?g(n,`${o}.input`,"must be a node id string when provided"):s.input=e.input);let i=Pt(e.period,`${o}.period`,r,n);i!=null&&(s.period=i)}else typeof e.input!="string"||!e.input?g(n,`${o}.input`,"must be a node id string"):s.input=e.input;if((a==="sma"||a==="ema"||a==="rsi"||a==="bollinger"||a==="atr")&&("period"in e,a!=="macd"))if(!("period"in e))g(n,`${o}.period`,"required field is missing");else{let i=Pt(e.period,`${o}.period`,r,n);i!=null&&(s.period=i)}if(a==="macd"){for(let i of["fastPeriod","slowPeriod","signalPeriod"])if(!(i in e))g(n,`${o}.${i}`,"required field is missing");else{let l=Pt(e[i],`${o}.${i}`,r,n);l!=null&&(s[i]=l)}"output"in e?Io.has(e.output)?s.output=e.output:g(n,`${o}.output`,"must be line|signal|histogram"):g(n,`${o}.output`,"required field is missing"),"period"in e&&g(n,`${o}.period`,"forbidden for macd"),"stdDev"in e&&g(n,`${o}.stdDev`,"forbidden for macd")}else if(a==="bollinger"){if(!("stdDev"in e))g(n,`${o}.stdDev`,"required field is missing");else{let i=Mr(e.stdDev,`${o}.stdDev`,r,n);i!=null&&(typeof i=="number"&&i<=0?g(n,`${o}.stdDev`,"must be > 0"):s.stdDev=i)}"output"in e?vo.has(e.output)?s.output=e.output:g(n,`${o}.output`,"must be upper|middle|lower"):g(n,`${o}.output`,"required field is missing");for(let i of["fastPeriod","slowPeriod","signalPeriod"])i in e&&g(n,`${o}.${i}`,`forbidden for ${a}`)}else{"output"in e&&g(n,`${o}.output`,`forbidden for ${a}`),"stdDev"in e&&a!=="bollinger"&&g(n,`${o}.stdDev`,`forbidden for ${a}`);for(let i of["fastPeriod","slowPeriod","signalPeriod"])i in e&&g(n,`${o}.${i}`,`forbidden for ${a}`)}return s}case"compare":return(typeof e.op!="string"||!$o.has(e.op))&&g(n,`${o}.op`,"must be gt|gte|lt|lte|eq"),(typeof e.left!="string"||!e.left)&&g(n,`${o}.left`,"must be a node id"),(typeof e.right!="string"||!e.right)&&g(n,`${o}.right`,"must be a node id"),{id:e.id,type:"compare",op:e.op,left:e.left,right:e.right};case"logic":{if((typeof e.op!="string"||!To.has(e.op))&&g(n,`${o}.op`,"must be and|or|not"),!Array.isArray(e.inputs))return g(n,`${o}.inputs`,"must be an array of node ids"),{id:e.id,type:"logic",op:e.op,inputs:[]};let a=[];for(let s=0;s<e.inputs.length;s++){let i=e.inputs[s];typeof i!="string"||!i?g(n,`${o}.inputs.${s}`,"must be a node id"):a.push(i)}return e.op==="not"?a.length!==1&&g(n,`${o}.inputs`,"not requires exactly one input"):(e.op==="and"||e.op==="or")&&a.length<2&&g(n,`${o}.inputs`,`${e.op} requires at least two inputs`),{id:e.id,type:"logic",op:e.op,inputs:a}}case"cross":return(typeof e.direction!="string"||!_o.has(e.direction))&&g(n,`${o}.direction`,"must be above|below"),(typeof e.left!="string"||!e.left)&&g(n,`${o}.left`,"must be a node id"),(typeof e.right!="string"||!e.right)&&g(n,`${o}.right`,"must be a node id"),{id:e.id,type:"cross",direction:e.direction,left:e.left,right:e.right};default:return null}}function jo(e,t,r){if(!X(e))return g(t,"risk","must be a plain object"),null;ce(e,Tr,"risk",t);for(let f of Tr)(!(f in e)||e[f]==null)&&g(t,`risk.${f}`,"required field is missing");let n={},o=e.maxLeverage;!q(o)||o<=0||o>50?g(t,"risk.maxLeverage","must be a number > 0 and <= 50"):n.maxLeverage=o;let a=e.maxNotionalUsd;!q(a)||a<=0?g(t,"risk.maxNotionalUsd","must be a number > 0"):n.maxNotionalUsd=a;let s=e.positionSizePct;!q(s)||s<=0||s>100?g(t,"risk.positionSizePct","must be a number > 0 and <= 100"):n.positionSizePct=s;let i=e.stopLossPct;!q(i)||i<=0||i>100?g(t,"risk.stopLossPct","must be a number > 0 and <= 100"):n.stopLossPct=i;let l=e.takeProfitPct;!q(l)||l<=0||l>1e3?g(t,"risk.takeProfitPct","must be a number > 0 and <= 1000"):n.takeProfitPct=l;let u=e.cooldownBars;!Number.isInteger(u)||u<0||u>1e5?g(t,"risk.cooldownBars","must be an integer >= 0 and <= 100000"):n.cooldownBars=u;let d=e.maxDailyLossPct;!q(d)||d<=0||d>100?g(t,"risk.maxDailyLossPct","must be a number > 0 and <= 100"):n.maxDailyLossPct=d;let c=e.expiresAt;return!Number.isInteger(c)||c<=0?g(t,"risk.expiresAt","must be an integer epoch milliseconds > 0"):(r.nowMs!==void 0&&(Number.isInteger(r.nowMs)?c<=r.nowMs&&g(t,"risk.expiresAt","must be strictly greater than nowMs"):g(t,"nowMs","must be an integer epoch milliseconds")),n.expiresAt=c),n}function _t(e,t={}){let r=[];if(!X(e))return g(r,"","strategy must be a plain object"),{ok:!1,errors:r,strategy:null};ce(e,Pr,"",r);for(let c of Pr)(!(c in e)||e[c]==null)&&g(r,c,"required field is missing");e.version!==kt&&g(r,"version",`must be ${kt}`),(typeof e.id!="string"||!Rr.test(e.id))&&g(r,"id","must match /^[a-z0-9][a-z0-9._-]{0,63}$/"),(typeof e.name!="string"||e.name.length===0||e.name.length>Or)&&g(r,"name",`must be a non-empty string max ${Or}`);let n=bt(e.venue);n||g(r,"venue",`unknown strategy venue "${String(e.venue)}"`);let o=null;if(!n)X(e.market)||g(r,"market","must be a plain object");else{let c=n.validateMarket(e.market);if(!c||typeof c.ok!="boolean"||!Array.isArray(c.errors))g(r,"market",`venue ${n.id} returned an invalid market validation result`);else if(c.ok)o=c.market;else for(let f of c.errors)g(r,f.path,f.message)}let a=Mo(e.parameters,r),s=null,i=new Map;if(!Array.isArray(e.nodes))g(r,"nodes","must be an array");else if(e.nodes.length>vr)g(r,"nodes",`too many nodes (max ${vr})`);else{s=[];for(let c=0;c<e.nodes.length;c++){let f=Ro(e.nodes[c],c,a||{},r);f&&(typeof f.id=="string"&&jr.test(f.id)&&(i.has(f.id)?g(r,`nodes.${c}.id`,`duplicate node id "${f.id}"`):i.set(f.id,f)),s.push(f))}for(let c=0;c<s.length;c++){let f=s[c],m=`nodes.${c}`;for(let p of ze(f))i.has(p)||g(r,m,`unknown node ref "${p}"`);if(f.type==="indicator"||f.type==="compare"||f.type==="cross")for(let p of ze(f)){let y=i.get(p);y&&St.has(y.type)&&g(r,m,`node ref "${p}" must be numeric`)}if(f.type==="logic")for(let p of ze(f)){let y=i.get(p);y&&!St.has(y.type)&&g(r,m,`node ref "${p}" must be boolean`)}}No(i)&&g(r,"nodes","graph contains a cycle")}let l=null;if(!X(e.rules))g(r,"rules","must be a plain object");else{ce(e.rules,At,"rules",r);for(let c of At)c in e.rules||g(r,`rules.${c}`,"required field is missing");l={};for(let c of At){let f=e.rules[c];if(f===null){l[c]=null;continue}if(typeof f!="string"||!f){g(r,`rules.${c}`,"must be a node id or null"),l[c]=f;continue}if(!i.has(f)){g(r,`rules.${c}`,`unknown node ref "${f}"`),l[c]=f;continue}let m=i.get(f);St.has(m.type)||g(r,`rules.${c}`,`rule must reference a boolean node, not ${m.type}`),l[c]=f}}let u=jo(e.risk,r,t);if(r.length)return{ok:!1,errors:r,strategy:null};let d=$t({version:kt,id:e.id,name:e.name,venue:n.id,market:o,parameters:a,nodes:s,rules:l,risk:u});return{ok:!0,errors:[],strategy:d}}function Y(e,t={}){let r=_t(e,t);if(!r.ok)throw new xe(r.errors);return r.strategy}function Fo(e){let t=Y(e);return JSON.stringify(Tt(t))}function ge(e){let t=Fo(e);return So("sha256").update(t,"utf8").digest("hex")}function Me(e,t){if(!X(e))throw new xe([{path:"",message:"strategy must be a plain object"}]);if(!X(t))throw new xe([{path:"overrides",message:"must be a plain object"}]);let r=Y(e),n={};for(let[a,s]of Object.entries(r.parameters))n[a]={value:s.value,min:s.min,max:s.max,step:s.step};let o=[];for(let[a,s]of Object.entries(t)){if(!Object.prototype.hasOwnProperty.call(n,a)){g(o,a,`unknown parameter "${a}"`);continue}let i=n[a];if(!q(s)){g(o,a,"override must be a finite number");continue}if(!Fr(s,i.min,i.max,i.step)){g(o,a,"override must lie on the declared min/max/step grid");continue}n[a]={...i,value:s}}if(o.length)throw new xe(o);return Y({version:r.version,id:r.id,name:r.name,venue:r.venue,market:{coin:r.market.coin,interval:r.market.interval},parameters:n,nodes:r.nodes.map(a=>{let s={...a};return Array.isArray(a.inputs)&&(s.inputs=[...a.inputs]),s}),rules:{...r.rules},risk:{...r.risk}})}var kt,Rr,jr,Ao,Po,$o,To,_o,Io,vo,St,Pr,$r,At,Tr,Oo,_r,Ir,vr,Or,xe,de=D(()=>{xt();kt=1,Rr=/^[a-z0-9][a-z0-9._-]{0,63}$/,jr=/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/,Ao=new Set(["open","high","low","close","volume","fundingRate","openInterest"]),Po=new Set(["sma","ema","rsi","macd","bollinger","atr"]),$o=new Set(["gt","gte","lt","lte","eq"]),To=new Set(["and","or","not"]),_o=new Set(["above","below"]),Io=new Set(["line","signal","histogram"]),vo=new Set(["upper","middle","lower"]),St=new Set(["compare","logic","cross"]),Pr=new Set(["version","id","name","venue","market","parameters","nodes","rules","risk"]),$r=new Set(["value","min","max","step"]),At=new Set(["entryLong","entryShort","exitLong","exitShort"]),Tr=new Set(["maxLeverage","maxNotionalUsd","positionSizePct","stopLossPct","takeProfitPct","cooldownBars","maxDailyLossPct","expiresAt"]),Oo=new Set(["id","type"]),_r={input:new Set(["id","type","field"]),constant:new Set(["id","type","value"]),indicator:new Set(["id","type","indicator","input","period","fastPeriod","slowPeriod","signalPeriod","stdDev","output"]),compare:new Set(["id","type","op","left","right"]),logic:new Set(["id","type","op","inputs"]),cross:new Set(["id","type","direction","left","right"])},Ir=16,vr=128,Or=100,xe=class extends Error{constructor(t){let r=t.map(n=>`${n.path}: ${n.message}`);super(`invalid strategy (${t.length} error${t.length===1?"":"s"}): ${r.join("; ")}`),this.name="StrategyValidationError",this.errors=t}}});function Re(e){if(!Array.isArray(e))throw new TypeError("values must be an array");for(let t=0;t<e.length;t++){let r=e[t];if(typeof r!="number"||!Number.isFinite(r))throw new TypeError(`values[${t}] must be a finite number`)}}function le(e){if(!Number.isInteger(e)||e<=0)throw new TypeError("period must be a positive integer")}function Lo(e){if(!Array.isArray(e))throw new TypeError("bars must be an array");for(let t=0;t<e.length;t++){let r=e[t];if(r==null||typeof r!="object")throw new TypeError(`bars[${t}] must be an object`);for(let n of["o","h","l","c"]){let o=r[n];if(typeof o!="number"||!Number.isFinite(o))throw new TypeError(`bars[${t}].${n} must be a finite number`)}if(r.h<r.l)throw new TypeError(`bars[${t}] high must be >= low`)}}function Hr(e,t){Re(e),le(t);let r=new Array(e.length).fill(null);if(e.length<t)return r;let n=0;for(let o=0;o<e.length;o++)n+=e[o],o>=t&&(n-=e[o-t]),o>=t-1&&(r[o]=n/t);return r}function De(e,t){Re(e),le(t);let r=new Array(e.length).fill(null);if(e.length<t)return r;let n=0;for(let s=0;s<t;s++)n+=e[s];let o=n/t;r[t-1]=o;let a=2/(t+1);for(let s=t;s<e.length;s++)o=a*e[s]+(1-a)*o,r[s]=o;return r}function Cr(e,t){Re(e),le(t);let r=new Array(e.length).fill(null);if(e.length<=t)return r;let n=0,o=0;for(let i=1;i<=t;i++){let l=e[i]-e[i-1];l>=0?n+=l:o-=l}let a=n/t,s=o/t;r[t]=Lr(a,s);for(let i=t+1;i<e.length;i++){let l=e[i]-e[i-1],u=l>0?l:0,d=l<0?-l:0;a=(a*(t-1)+u)/t,s=(s*(t-1)+d)/t,r[i]=Lr(a,s)}return r}function Lr(e,t){return e===0&&t===0?50:t===0?100:e===0?0:100-100/(1+e/t)}function qr(e,t={}){Re(e);let r=t.fastPeriod,n=t.slowPeriod,o=t.signalPeriod;if(le(r),le(n),le(o),r>=n)throw new TypeError("fastPeriod must be < slowPeriod");let a=De(e,r),s=De(e,n),i=new Array(e.length).fill(null);for(let c=0;c<e.length;c++)a[c]!=null&&s[c]!=null&&(i[c]=a[c]-s[c]);let l=new Array(e.length).fill(null),u=new Array(e.length).fill(null),d=[];for(let c=0;c<i.length;c++)i[c]!=null&&d.push(c);if(d.length>=o){let c=0;for(let y=0;y<o;y++)c+=i[d[y]];let f=c/o,m=d[o-1];l[m]=f,u[m]=i[m]-f;let p=2/(o+1);for(let y=o;y<d.length;y++){let x=d[y];f=p*i[x]+(1-p)*f,l[x]=f,u[x]=i[x]-f}}return{line:i,signal:l,histogram:u}}function Ur(e,t={}){Re(e);let r=t.period,n=t.stdDev;if(le(r),typeof n!="number"||!Number.isFinite(n)||n<=0)throw new TypeError("stdDev must be a finite number > 0");let o=new Array(e.length).fill(null),a=new Array(e.length).fill(null),s=new Array(e.length).fill(null);if(e.length<r)return{upper:a,middle:o,lower:s};let i=0,l=0;for(let u=0;u<e.length;u++){let d=e[u];if(i+=d,l+=d*d,u>=r){let c=e[u-r];i-=c,l-=c*c}if(u>=r-1){let c=i/r,f=l/r-c*c;f<0&&f>-1e-12&&(f=0);let m=Math.sqrt(f);o[u]=c,a[u]=c+n*m,s[u]=c-n*m}}return{upper:a,middle:o,lower:s}}function Br(e,t){Lo(e),le(t);let r=new Array(e.length).fill(null);if(e.length<t)return r;let n=new Array(e.length);for(let s=0;s<e.length;s++){let i=e[s];if(s===0)n[s]=i.h-i.l;else{let l=e[s-1].c;n[s]=Math.max(i.h-i.l,Math.abs(i.h-l),Math.abs(i.l-l))}}let o=0;for(let s=0;s<t;s++)o+=n[s];let a=o/t;r[t-1]=a;for(let s=t;s<e.length;s++)a=(a*(t-1)+n[s])/t,r[s]=a;return r}var zr=D(()=>{});import{createHash as Ho}from"node:crypto";var It,Co,qo,Uo,Dr,Vr=D(()=>{It=2,Co="93f9c998260e73756c13871dc1a84dd6cdb26ec6113bd1941f023519939db440",qo="68f5b412a9975f04024cf9b9b6209b4bccedd52f176e95f34f786b3f53479c6a",Uo="f197a38ff1c0f4ebe13326db8cbb8167ea3dd5d62e6033fe97c2fee8d23d96b5",Dr=Ho("sha256").update(JSON.stringify({version:It,compilerSourceHash:Co,indicatorsSourceHash:qo,schemaSourceHash:Uo})).digest("hex")});function Q(e){return typeof e=="number"&&Number.isFinite(e)}function Do(e){let t=new Map(e.map(i=>[i.id,i])),r=i=>{switch(i.type){case"indicator":return i.input?[i.input]:[];case"compare":case"cross":return[i.left,i.right];case"logic":return[...i.inputs];default:return[]}},n=new Map,o=new Map;for(let i of e)n.set(i.id,0),o.set(i.id,[]);for(let i of e)for(let l of r(i))t.has(l)&&(o.get(l).push(i.id),n.set(i.id,n.get(i.id)+1));let a=[];for(let[i,l]of n)l===0&&a.push(i);let s=[];for(;a.length;){let i=a.shift();s.push(i);for(let l of o.get(i))n.set(l,n.get(l)-1),n.get(l)===0&&a.push(l)}if(s.length!==e.length)throw new Error("strategy graph is cyclic");return s}function ke(e,t){return e!=null&&typeof e=="object"&&"param"in e?t[e.param].value:e}function Vo(e,t,r){if(!Array.isArray(e)||e.length===0)throw new TypeError("bars must be a non-empty array");if(!Number.isInteger(t)||t<0||t>=e.length)throw new RangeError("index out of range");let n=null;for(let o=0;o<=t;o++){let a=e[o];if(a==null||typeof a!="object"||Array.isArray(a))throw new TypeError(`bars[${o}] must be an object`);let{t:s,o:i,h:l,l:u,c:d,v:c}=a;if(!Q(s)&&(typeof s=="number"&&Number.isFinite(s)),!Number.isFinite(s))throw new TypeError(`bars[${o}].t must be finite`);for(let[f,m]of[["o",i],["h",l],["l",u],["c",d],["v",c]])if(!Q(m))throw new TypeError(`bars[${o}].${f} must be a finite number`);for(let[f,m]of[["o",i],["h",l],["l",u],["c",d]])if(!(m>0))throw new TypeError(`bars[${o}].${f} price must be positive`);if(c<0)throw new TypeError(`bars[${o}].v volume must be non-negative`);if(l<Math.max(i,d,u))throw new TypeError(`bars[${o}] high must be >= max(open, close, low)`);if(u>Math.min(i,d,l))throw new TypeError(`bars[${o}] low must be <= min(open, close, high)`);if(n!=null){if(!(s>n))throw new TypeError("bars t must be strictly increasing");if(s-n!==zo[r])throw new TypeError(`bars t must match ${r} cadence`)}if(n=s,"fundingRate"in a&&a.fundingRate!=null&&!Q(a.fundingRate))throw new TypeError(`bars[${o}].fundingRate must be finite when present`);if("openInterest"in a&&a.openInterest!=null){if(!Q(a.openInterest))throw new TypeError(`bars[${o}].openInterest must be finite when present`);if(a.openInterest<0)throw new TypeError(`bars[${o}].openInterest must be non-negative`)}}}function he(e,t,r,n,o,a){if(a.has(e))return a.get(e);let s=t.get(e),i;switch(s.type){case"input":{let l=Bo[s.field];i=new Array(o+1);for(let u=0;u<=o;u++){let d=n[u][l];i[u]=d===void 0?null:d}break}case"constant":{let l=ke(s.value,r);i=new Array(o+1).fill(l);break}case"indicator":{let l=s.period!=null?ke(s.period,r):void 0;if(s.indicator==="atr"){let c=[];for(let f=0;f<=o;f++){let m=n[f];c.push({o:m.o,h:m.h,l:m.l,c:m.c})}i=Br(c,l);break}let d=he(s.input,t,r,n,o,a).map((c,f)=>{if(c==null||!Q(c))throw new TypeError(`indicator input ${s.input} has non-finite value at ${f}`);return c});if(s.indicator==="sma")i=Hr(d,l);else if(s.indicator==="ema")i=De(d,l);else if(s.indicator==="rsi")i=Cr(d,l);else if(s.indicator==="macd")i=qr(d,{fastPeriod:ke(s.fastPeriod,r),slowPeriod:ke(s.slowPeriod,r),signalPeriod:ke(s.signalPeriod,r)})[s.output];else if(s.indicator==="bollinger")i=Ur(d,{period:l,stdDev:ke(s.stdDev,r)})[s.output];else throw new Error(`unsupported indicator ${s.indicator}`);break}case"compare":{let l=he(s.left,t,r,n,o,a),u=he(s.right,t,r,n,o,a);i=new Array(o+1);for(let d=0;d<=o;d++){let c=l[d],f=u[d];if(c==null||f==null||!Q(c)||!Q(f)){i[d]=!1;continue}switch(s.op){case"gt":i[d]=c>f;break;case"gte":i[d]=c>=f;break;case"lt":i[d]=c<f;break;case"lte":i[d]=c<=f;break;case"eq":i[d]=c===f;break;default:i[d]=!1}}break}case"logic":{let l=s.inputs.map(u=>he(u,t,r,n,o,a));i=new Array(o+1);for(let u=0;u<=o;u++)if(s.op==="not"){let d=l[0][u];i[u]=d===!0?!1:d===!1}else if(s.op==="and"){let d=!0;for(let c of l)if(c[u]!==!0){d=!1;break}i[u]=d}else if(s.op==="or"){let d=!1;for(let c of l)if(c[u]===!0){d=!0;break}i[u]=d}else i[u]=!1;break}case"cross":{let l=he(s.left,t,r,n,o,a),u=he(s.right,t,r,n,o,a);i=new Array(o+1),i[0]=!1;for(let d=1;d<=o;d++){let c=l[d-1],f=u[d-1],m=l[d],p=u[d];if(c==null||f==null||m==null||p==null||!Q(c)||!Q(f)||!Q(m)||!Q(p)){i[d]=!1;continue}s.direction==="above"?i[d]=c<=f&&m>p:i[d]=c>=f&&m<p}break}default:throw new Error(`unknown node type ${s.type}`)}return a.set(e,i),i}function G(e,t={}){let r=Y(e);t&&Object.keys(t).length&&(r=Me(r,t));let n=new Map(r.nodes.map(m=>[m.id,m])),o=Object.freeze(Do(r.nodes)),a=r.parameters,s=new Set(r.nodes.filter(m=>m.type==="input").map(m=>m.field));if(r.nodes.some(m=>m.type==="indicator"&&m.indicator==="atr"))for(let m of["open","high","low","close"])s.add(m);let i=Object.freeze([...s].sort()),l=ge(r);function u(m,p){let y={};for(let S of o){let k=m.get(S);y[S]=k[p]}let x=S=>S!=null&&y[S]===!0;return{values:y,signals:{entryLong:x(r.rules.entryLong),entryShort:x(r.rules.entryShort),exitLong:x(r.rules.exitLong),exitShort:x(r.rules.exitShort)}}}function d(m,p){Vo(m,p,r.market.interval);let y=new Map;for(let x of o)he(x,n,a,m,p,y);return y}function c(m,p){return u(d(m,p),p)}function f(m){if(!Array.isArray(m)||m.length===0)throw new TypeError("bars must be a non-empty array");let p=m.length-1,y=d(m,p);return Object.freeze(m.map((x,S)=>Object.freeze(u(y,S))))}return Object.freeze({strategy:r,strategyHash:l,compilerVersion:Oe,compilerHash:pe,requiredSeries:i,nodeOrder:o,evaluate:c,evaluateAll:f})}var Oe,pe,Bo,zo,me=D(()=>{de();zr();Vr();Oe=It,pe=Dr,Bo=Object.freeze({open:"o",high:"h",low:"l",close:"c",volume:"v",fundingRate:"fundingRate",openInterest:"openInterest"}),zo=Object.freeze({"1m":6e4,"3m":18e4,"5m":3e5,"15m":9e5,"30m":18e5,"1h":36e5,"2h":72e5,"4h":144e5,"8h":288e5,"12h":432e5,"1d":864e5})});import{createHash as Jo}from"node:crypto";function Yo(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function ne(e){return typeof e=="number"&&Number.isFinite(e)}function vt(e){if(e==null||typeof e!="object"||Object.isFrozen(e))return e;if(Array.isArray(e)){for(let t of e)vt(t);return Object.freeze(e)}for(let t of Object.keys(e))vt(e[t]);return Object.freeze(e)}function Ve(e){if(Array.isArray(e))return e.map(Ve);if(e!=null&&typeof e=="object"){let t={};for(let r of Object.keys(e).sort())t[r]=Ve(e[r]);return t}return e}function Ot(e,t="result"){if(typeof e=="number"){if(!Number.isFinite(e))throw new Error(`non-finite backtest result at ${t}`);return}if(!(e==null||typeof e!="object")){if(Array.isArray(e)){e.forEach((r,n)=>Ot(r,`${t}[${n}]`));return}for(let[r,n]of Object.entries(e))Ot(n,`${t}.${r}`)}}function Kr(e){if(!Array.isArray(e)||e.length===0)throw new TypeError("bars must be a non-empty array");let t=null;for(let r=0;r<e.length;r++){let n=e[r];if(n==null||typeof n!="object"||Array.isArray(n))throw new TypeError(`bars[${r}] must be an object`);let{t:o,o:a,h:s,l:i,c:l,v:u}=n;if(!ne(o))throw new TypeError(`bars[${r}].t must be finite`);for(let[d,c]of[["o",a],["h",s],["l",i],["c",l],["v",u]])if(!ne(c))throw new TypeError(`bars[${r}].${d} must be a finite number`);for(let[d,c]of[["o",a],["h",s],["l",i],["c",l]])if(!(c>0))throw new TypeError(`bars[${r}].${d} price must be positive`);if(u<0)throw new TypeError(`bars[${r}].v volume must be non-negative`);if(s<Math.max(a,l,i))throw new TypeError(`bars[${r}] high must be >= max(open, close, low)`);if(i>Math.min(a,l,s))throw new TypeError(`bars[${r}] low must be <= min(open, close, high)`);if(t!=null&&!(o>t))throw new TypeError("bars t must be strictly increasing");if(t=o,"fundingRate"in n&&n.fundingRate!=null&&!ne(n.fundingRate))throw new TypeError(`bars[${r}].fundingRate must be finite when present`);if("fundingPaymentRate"in n&&n.fundingPaymentRate!=null&&!ne(n.fundingPaymentRate))throw new TypeError(`bars[${r}].fundingPaymentRate must be finite when present`);if("openInterest"in n&&n.openInterest!=null&&!ne(n.openInterest))throw new TypeError(`bars[${r}].openInterest must be finite when present`)}}function Ie(e){if(!Array.isArray(e))throw new TypeError("bars must be an array");return e.length>0&&Kr(e),Jo("sha256").update(JSON.stringify(Ve(e)),"utf8").digest("hex")}function Go(e){if(e==null&&(e={}),!Yo(e))throw new TypeError("options must be a plain object");let t={...Ko},r=new Set(["initialEquityUsd","takerFeeBps","builderFeeBps","slippageBps","latencyBars","maxVolumeParticipationPct","nowMs"]);for(let n of Object.keys(e))if(!r.has(n))throw new TypeError(`unknown option "${n}"`);if("initialEquityUsd"in e){if(!ne(e.initialEquityUsd)||e.initialEquityUsd<=0)throw new TypeError("initialEquityUsd must be a positive finite number");t.initialEquityUsd=e.initialEquityUsd}for(let n of["takerFeeBps","builderFeeBps","slippageBps"])if(n in e){let o=e[n];if(!ne(o)||o<0)throw new TypeError(`${n} must be a finite number >= 0`);if(n==="slippageBps"?o>=1e4:o>1e4)throw new TypeError(`${n} exceeds its safe basis-point bound`);t[n]=o}if("latencyBars"in e){let n=e.latencyBars;if(!Number.isInteger(n)||n<1)throw new TypeError("latencyBars must be an integer >= 1");t.latencyBars=n}if("maxVolumeParticipationPct"in e){let n=e.maxVolumeParticipationPct;if(!ne(n)||n<=0||n>100)throw new TypeError("maxVolumeParticipationPct must be in (0,100]");t.maxVolumeParticipationPct=n}if("nowMs"in e){if(!Number.isInteger(e.nowMs))throw new TypeError("nowMs must be an integer epoch milliseconds");t.nowMs=e.nowMs}return t}function Je(e){return e/1e4}function Wo(e,t,r){let n=Je(r);return t==="long"?e*(1+n):e*(1-n)}function Xo(e,t,r){let n=Je(r);return t==="long"?e*(1-n):e*(1+n)}function Jr(e,t,r){let n=Math.abs(e)*Je(t),o=Math.abs(e)*Je(r);return{taker:n,builder:o,total:n+o}}function Zo(e,t){let r=e*(t.positionSizePct/100)*t.maxLeverage;return Math.min(r,t.maxNotionalUsd)}function Qo(e,t,r){let n=r/100;return t==="long"?e*(1-n):e*(1+n)}function es(e,t,r){let n=r/100;return t==="long"?e*(1+n):e*(1-n)}function ts(e,t,r,n){if(!(r>0))return t==="long"?0:Number.POSITIVE_INFINITY;let o=Math.min(.99,1/(2*r)+n/1e4);return t==="long"?e*(1-1/r)/(1-o):e*(1+1/r)/(1+o)}function rs(e,t,r){return t==="long"?e.l<=r:e.h>=r}function ns(e,t,r){return t==="long"?e.h>=r:e.l<=r}function os(e,t,r){return t==="long"?e.l<=r:e.h>=r}function je(e,t){for(let r of e.requiredSeries)if(["fundingRate","openInterest"].includes(r)&&!t.every(n=>ne(n?.[r])))throw new Error(`strategy required series is absent: ${r}`)}function ss(e){if(e.length<3)return 0;let t=[];for(let s=1;s<e.length;s++){let i=e[s-1].equity,l=e[s].equity;i>0&&t.push((l-i)/i)}if(t.length<2)return 0;let r=0;for(let s of t)r+=s;let n=r/t.length,o=0;for(let s of t)o+=(s-n)**2;let a=Math.sqrt(o/(t.length-1));return a>0?n/a:0}function is(e){let t=-1/0,r=0;for(let n of e){let o=n.equity;if(o>t&&(t=o),t>0){let a=(t-o)/t*100;a>r&&(r=a)}}return r}function ae(e,t,r={}){let n=Go(r);Kr(t);let o=Ie(t);n.nowMs!==void 0&&Y(e,{nowMs:n.nowMs});let a=G(e);if(je(a,t),n.nowMs!==void 0&&a.strategy.risk.expiresAt<=n.nowMs)throw new Error("strategy is expired: risk.expiresAt must be strictly greater than nowMs");let s=a.strategy.risk,i=a.evaluateAll(t),l=n.latencyBars,u=n.slippageBps,d=n.takerFeeBps,c=n.builderFeeBps,f=n.initialEquityUsd,m=0,p=0,y=0,x=0,S=0,k=[],T=[],E=[],A=[],$=[],w=null,R=0,V=null,W=f,U=!1,h=0,_=0,N=[],F=new Array(t.length).fill(0);function L(b){N.push(b)}function v(b){let I=t[b].v*(n.maxVolumeParticipationPct/100);return Math.max(0,I-F[b])}function M(b){if(!w)return f;let I=w.side==="long"?(b-w.entryPrice)*w.qty:(w.entryPrice-b)*w.qty;return f+I}function J(b,I,P){let H=P.o,O=Zo(f,s);if(!(O>0)||!(H>0))return;let C=Wo(H,I,u),j=O/C,z=v(b),Pe=C*z;if(j>z){E.push({kind:"entry",barIndex:b,time:P.t,side:I,requestedNotionalUsd:O,maxFillNotionalUsd:Pe,reason:"volume_participation"});return}F[b]+=j;let te=Math.abs(C-H)*j,se=Jr(O,d,c);f-=se.total,m+=se.taker,p+=se.builder,x+=te,S+=O,w={lifecycleEpoch:++_,side:I,entryBarIndex:b,entryReferencePrice:H,entryPrice:C,qty:j,notionalUsd:O,stop:Qo(C,I,s.stopLossPct),take:es(C,I,s.takeProfitPct),liq:ts(C,I,s.maxLeverage,d+c),entryFees:se.taker,entryBuilderFees:se.builder,entrySlippageUsd:te,fundingAccrued:0}}function B(b,I,P,H){if(!w)return!1;let O=w.side,C=I,j=C;P!=="liquidation"&&H&&(j=Xo(C,O,u));let z=w.qty,Pe=z*j;if(P!=="liquidation"){let Gt=v(b),Sn=j*Gt;if(z>Gt)return E.push({kind:"exit",barIndex:b,time:t[b].t,side:O,requestedNotionalUsd:Pe,maxFillNotionalUsd:Sn,reason:"volume_participation",triggerReason:P}),!1;F[b]+=z}let te=Jr(Pe,d,c),se=P==="liquidation"?0:Math.abs(j-C)*z,$e,et;O==="long"?($e=(C-w.entryReferencePrice)*z,et=(j-w.entryPrice)*z):($e=(w.entryReferencePrice-C)*z,et=(w.entryPrice-j)*z),f+=et,f-=te.total,m+=te.taker,p+=te.builder,x+=se,S+=Pe;let kn={side:O,entryBarIndex:w.entryBarIndex,entryTime:t[w.entryBarIndex].t,entryPrice:w.entryPrice,exitBarIndex:b,exitTime:t[b].t,exitPrice:j,exitReason:P,qty:z,notionalUsd:w.notionalUsd,grossPnlUsd:$e,feesUsd:w.entryFees+te.taker,builderFeesUsd:w.entryBuilderFees+te.builder,fundingUsd:w.fundingAccrued,slippageUsd:w.entrySlippageUsd+se,netPnlUsd:$e-(w.entryFees+te.taker+w.entryBuilderFees+te.builder)-w.fundingAccrued-(w.entrySlippageUsd+se)};return k.push(kn),P==="liquidation"&&T.push({barIndex:b,time:t[b].t,side:O,price:j,tradeIndex:k.length-1}),w=null,_+=1,h=b+1+(s.cooldownBars||0),!0}function ee(b,I,P,H){let O=b+1;if(O>=t.length)return;N.some(j=>j.kind==="exit"&&j.side===I&&j.fillBar===O&&j.epoch===H)||L({kind:"exit",side:I,signalBar:b,fillBar:O,reason:P,epoch:H})}function He(b){let I=N.filter(P=>P.fillBar===b);for(let P=N.length-1;P>=0;P--)N[P].fillBar===b&&N.splice(P,1);I.sort((P,H)=>{let O=C=>C.kind==="exit"?0:1;return O(P)-O(H)});for(let P of I)if(P.kind==="exit"){if(!w||w.side!==P.side||w.lifecycleEpoch!==P.epoch)continue;let H=P.reason||"rule";B(b,t[b].o,H,!0)||ee(b,P.side,H,P.epoch)}else if(P.kind==="entry"){if(w||P.epoch!==_||b<h)continue;J(b,P.side,t[b])}}function Ce(b){if(!w)return;let I=t[b],P=I.fundingPaymentRate;if(P==null||!ne(P)||P===0)return;let H=Math.abs(w.qty*I.c),O=P*H;w.side==="long"?(f-=O,w.fundingAccrued+=O,y+=O):(f+=O,w.fundingAccrued-=O,y-=O)}function qe(b){if(!w)return;let I=t[b].o;(w.side==="long"?I<=w.liq:I>=w.liq)&&B(b,I,"liquidation",!1)}function Dt(b){if(!w)return;let I=t[b],P=w.side,H=os(I,P,w.liq),O=rs(I,P,w.stop),C=ns(I,P,w.take),j=z=>P==="long"?Math.min(z,I.o):Math.max(z,I.o);if(H){B(b,j(w.liq),"liquidation",!1);return}if(O&&C){B(b,j(w.stop),"stop_loss",!0)||ee(b,P,"stop_loss",w.lifecycleEpoch);return}if(O){B(b,j(w.stop),"stop_loss",!0)||ee(b,P,"stop_loss",w.lifecycleEpoch);return}C&&(B(b,w.take,"take_profit",!0)||ee(b,P,"take_profit",w.lifecycleEpoch))}for(let b=0;b<t.length;b++){let I=Math.floor(t[b].t/864e5);I!==V&&(V=I,W=M(t[b].o),U=!1),qe(b),He(b),Dt(b),Ce(b),!U&&M(t[b].c)<=W*(1-s.maxDailyLossPct/100)&&(U=!0,A.push({type:"daily_loss_limit",barIndex:b,time:t[b].t,message:"daily loss limit reached; new entries blocked for UTC day"}));let P=i[b].signals,H=b+l;if(w)(w.side==="long"&&P.exitLong===!0||w.side==="short"&&P.exitShort===!0)&&H<t.length&&(N.some(z=>z.kind==="exit"&&z.side===w.side&&z.fillBar===H&&z.epoch===w.lifecycleEpoch)||L({kind:"exit",side:w.side,signalBar:b,fillBar:H,reason:"rule",epoch:w.lifecycleEpoch}));else{let C=P.entryLong===!0,j=P.entryShort===!0;C&&j?A.push({type:"conflicting_entry_signals",barIndex:b,time:t[b].t,message:"conflicting entry signals; no position opened"}):!U&&(C||j)&&H<t.length&&b>=h&&L({kind:"entry",side:C?"long":"short",signalBar:b,fillBar:H,epoch:_})}let O=f;w&&(R+=1,O=M(t[b].c)),$.push({barIndex:b,time:t[b].t,equity:O,positionSide:w?w.side:null})}let Vt=null;if(w){let b=t.length-1;if(B(b,t[b].c,"end_of_data",!0))$[b]={barIndex:b,time:t[b].t,equity:f,positionSide:null};else{let P=M(t[b].c);Vt={side:w.side,entryBarIndex:w.entryBarIndex,entryTime:t[w.entryBarIndex].t,entryPrice:w.entryPrice,qty:w.qty,notionalUsd:w.notionalUsd,markPrice:t[b].c,markedEquityUsd:P},A.push({type:"open_position_at_end",barIndex:b,time:t[b].t,message:"end-of-data exit missed; position remains open and marked"})}}let Jt=(w?M(t[t.length-1].c):f)-n.initialEquityUsd,gn=Jt/n.initialEquityUsd*100,Kt=0,We=0,Xe=0;for(let b of k)b.netPnlUsd>0?(Kt+=1,We+=b.netPnlUsd):b.netPnlUsd<0&&(Xe+=-b.netPnlUsd);let Ze=k.length,bn=Ze===0?0:Kt/Ze,Qe=0;Xe>0?Qe=We/Xe:We>0&&(Qe=1e12);let En={netPnlUsd:Jt,netPnlPct:gn,maxDrawdownPct:is($),winRate:bn,profitFactor:Qe,tradeCount:Ze,sharpe:ss($),turnoverUsd:S,exposurePct:R/t.length*100},xn={initialEquityUsd:n.initialEquityUsd,takerFeeBps:n.takerFeeBps,builderFeeBps:n.builderFeeBps,slippageBps:n.slippageBps,latencyBars:n.latencyBars,maxVolumeParticipationPct:n.maxVolumeParticipationPct},Yt={barsHash:o,strategyHash:a.strategyHash,compilerHash:pe,compilerVersion:Oe,config:xn,trades:k,equityCurve:$,metrics:En,costs:{feesUsd:m,builderFeesUsd:p,fundingUsd:y,slippageUsd:x},liquidations:T,missedFills:E,openPositionAtEnd:Vt,flags:A};return Ot(Yt),vt(Ve(Yt))}var Ko,Be=D(()=>{me();de();Ko=Object.freeze({initialEquityUsd:1e4,takerFeeBps:3.5,builderFeeBps:2,slippageBps:2,latencyBars:1,maxVolumeParticipationPct:100})});import{createHash as as}from"node:crypto";function hs(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function Nt(e){if(e==null||typeof e!="object"||Object.isFrozen(e))return e;if(Array.isArray(e)){for(let t of e)Nt(t);return Object.freeze(e)}for(let t of Object.keys(e))Nt(e[t]);return Object.freeze(e)}function ys(e){return String(e).trim().replace(/\s+/g," ")}function ws(e){let t=e.match(/\b(long|short)\b/i);return t?t[1].toLowerCase():null}function gs(e){for(let r of ls)if(new RegExp(`\\b${r}\\b`,"i").test(e))return r;let t=e.match(/\b([A-Z][A-Z0-9]{1,11})\b/);return t?t[1]:null}function bs(e){let t=e.match(/\bon\s+(1m|3m|5m|15m|30m|1h|2h|4h|8h|12h|1d)\b/i);if(!t)return"15m";let r=t[1].toLowerCase();return cs.has(r)?r:null}function Es(e){let t={...fs},r=e.match(/stop\s*loss\s*(\d+(?:\.\d+)?)\s*%?/i);r&&(t.stopLossPct=Number(r[1]));let n=e.match(/take\s*profit\s*(\d+(?:\.\d+)?)\s*%?/i);n&&(t.takeProfitPct=Number(n[1]));let o=e.match(/leverage\s*(\d+(?:\.\d+)?)/i);o&&(t.maxLeverage=Number(o[1]));let a=e.match(/position\s*size\s*(\d+(?:\.\d+)?)\s*%?/i);a&&(t.positionSizePct=Number(a[1]));let s=e.match(/max\s*notional\s*(?:usd\s*)?\$?\s*(\d+(?:\.\d+)?)/i);return s&&(t.maxNotionalUsd=Number(s[1])),t}function xs(e){return[/\bon\s+(?:1m|3m|5m|15m|30m|1h|2h|4h|8h|12h|1d)\b/gi,/\bstop\s*loss\s*\d+(?:\.\d+)?\s*%?/gi,/\btake\s*profit\s*\d+(?:\.\d+)?\s*%?/gi,/\bleverage\s*\d+(?:\.\d+)?/gi,/\bposition\s*size\s*\d+(?:\.\d+)?\s*%?/gi,/\bmax\s*notional\s*(?:usd\s*)?\$?\s*\d+(?:\.\d+)?/gi].some(r=>(e.match(r)??[]).length>1)}function ks(e){let t=as("sha256").update(e,"utf8").digest("hex").slice(0,10),r=e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40),o=`${r.length?r:"draft"}-${t}`.replace(/[^a-z0-9._-]/g,"").slice(0,64);return/^[a-z0-9]/.test(o)?o:`d${o}`.slice(0,64)}function Ss(e){let t=e.match(/\bema\s*(\d+)\s*cross(?:es)?\s*(above|below)\s*ema\s*(\d+)\b/i);if(!t)return null;let r=Number(t[1]),n=t[2].toLowerCase(),o=Number(t[3]);if(!(r>0)||!(o>0)||r===o)return null;let a=/\b(exit\s+on\s+reverse|reverse\s+exit)\b/i.test(e);return{kind:"ema_cross",fast:r,slow:o,direction:n,reverse:a}}function As(e){let t=e.match(/\brsi\s*(\d+)\s*(above|below)\s*(-?\d+(?:\.\d+)?)/i);if(!t)return null;let r=Number(t[3]);return!Number.isFinite(r)||r<=0||r>=100?null:{kind:"rsi",period:Number(t[1]),op:t[2].toLowerCase(),threshold:r}}function Ps(e){let t=e.match(/\bfunding\s*rate\s*(above|below)\s*(-?\d+(?:\.\d+)?)(%?)(?=\s|,|$)/i);if(!t)return null;let r=Number(t[2]);return t[3]==="%"&&(r=r/100),{kind:"funding",op:t[1].toLowerCase(),threshold:r}}function $s(e,t){let r=e.replace(/^(long|short)\s+[A-Z][A-Z0-9]{1,11}\s+when\s+/i,"");if(r===e)return!1;t.kind==="ema_cross"?r=r.replace(/^ema\s*\d+\s*cross(?:es)?\s*(?:above|below)\s*ema\s*\d+\b/i,""):t.kind==="rsi"?r=r.replace(/^rsi\s*\d+\s*(?:above|below)\s*\d+(?:\.\d+)?\b/i,""):r=r.replace(/^funding\s*rate\s*(?:above|below)\s*-?\d+(?:\.\d+)?%?(?=\s|,|$)/i,"");let n=[/(?:,\s*)?\bon\s+(?:1m|3m|5m|15m|30m|1h|2h|4h|8h|12h|1d)\b/gi,/(?:,\s*)?\bstop\s*loss\s*\d+(?:\.\d+)?\s*%?/gi,/(?:,\s*)?\btake\s*profit\s*\d+(?:\.\d+)?\s*%?/gi,/(?:,\s*)?\bleverage\s*\d+(?:\.\d+)?/gi,/(?:,\s*)?\bposition\s*size\s*\d+(?:\.\d+)?\s*%?/gi,/(?:,\s*)?\bmax\s*notional\s*(?:usd\s*)?\$?\s*\d+(?:\.\d+)?/gi];t.kind==="ema_cross"&&n.push(/(?:,\s*)?\b(?:exit\s+on\s+reverse|reverse\s+exit)\b/gi);for(let o of n)r=r.replace(o,"");return r.replace(/[\s,;]+/g,"")===""}function Yr(e){let t=Math.max(2,Math.floor(e/2));return{value:e,min:Math.max(2,e-t),max:Math.min(500,e+t),step:1}}function Ts({side:e,coin:t,interval:r,risk:n,expiresAt:o,id:a,name:s,spec:i}){let l=[{id:"c",type:"input",field:"close"},{id:"emaLeft",type:"indicator",indicator:"ema",input:"c",period:{param:"ema_left_period"}},{id:"emaRight",type:"indicator",indicator:"ema",input:"c",period:{param:"ema_right_period"}},{id:"cross",type:"cross",direction:i.direction,left:"emaLeft",right:"emaRight"}],u={entryLong:null,entryShort:null,exitLong:null,exitShort:null};if(e==="long"?u.entryLong="cross":u.entryShort="cross",i.reverse){let d=i.direction==="above"?"below":"above";l.push({id:"crossRev",type:"cross",direction:d,left:"emaLeft",right:"emaRight"}),e==="long"?u.exitLong="crossRev":u.exitShort="crossRev"}return{version:1,id:a,name:s,venue:"hyperliquid",market:{coin:t,interval:r},parameters:{ema_left_period:Yr(i.fast),ema_right_period:Yr(i.slow)},nodes:l,rules:u,risk:{...n,expiresAt:o}}}function _s({side:e,coin:t,interval:r,risk:n,expiresAt:o,id:a,name:s,spec:i}){let l=[{id:"c",type:"input",field:"close"},{id:"rsi",type:"indicator",indicator:"rsi",input:"c",period:i.period},{id:"thr",type:"constant",value:i.threshold},{id:"sig",type:"compare",op:i.op==="above"?"gt":"lt",left:"rsi",right:"thr"}];return{version:1,id:a,name:s,venue:"hyperliquid",market:{coin:t,interval:r},parameters:{},nodes:l,rules:{entryLong:e==="long"?"sig":null,entryShort:e==="short"?"sig":null,exitLong:null,exitShort:null},risk:{...n,expiresAt:o}}}function Is({side:e,coin:t,interval:r,risk:n,expiresAt:o,id:a,name:s,spec:i}){let l=[{id:"fr",type:"input",field:"fundingRate"},{id:"thr",type:"constant",value:i.threshold},{id:"sig",type:"compare",op:i.op==="above"?"gt":"lt",left:"fr",right:"thr"}];return{version:1,id:a,name:s,venue:"hyperliquid",market:{coin:t,interval:r},parameters:{},nodes:l,rules:{entryLong:e==="long"?"sig":null,entryShort:e==="short"?"sig":null,exitLong:null,exitShort:null},risk:{...n,expiresAt:o}}}function Gr(e,t={}){if(typeof e!="string")throw new K("prompt must be a string");if(e.length>1e3)throw new K("prompt length must be <= 1000");if(!hs(t))throw new K("options must be a plain object");if(!Number.isInteger(t.nowMs))throw new K("options.nowMs is required integer epoch ms");let r=t.nowMs,n=ms;if("expiresInMs"in t){if(!Number.isInteger(t.expiresInMs))throw new K("expiresInMs must be an integer");if(n=t.expiresInMs,n<ds||n>ps)throw new K("expiresInMs must be between 1h and 30d")}if(us.test(e))throw new K(`prompt appears to contain secrets and is rejected. ${Se}`);let o=ys(e);if(!o)throw new K(`empty prompt. ${Se}`);if(xs(o))throw new K(`duplicate interval or risk clause. ${Se}`);let a=ws(o),s=gs(o),i=bs(o);if(!a||!s||!i)throw new K(`could not parse side/coin/interval. ${Se}`);let l=Es(o);if(!(l.maxLeverage>0)||l.maxLeverage>50)throw new K("leverage out of range");if(!(l.positionSizePct>0)||l.positionSizePct>100)throw new K("position size out of range");let u=r+n,d=ks(o),c=`Draft ${s} ${a}`.slice(0,100),f=Ss(o),m=As(o),p=Ps(o),y=[f,m,p].filter(Boolean);if(y.length!==1)throw new K(`unsupported or ambiguous prompt. ${Se}`);if(!$s(o,y[0]))throw new K(`unsupported or ambiguous prompt. ${Se}`);let x,S=y[0],k={side:a,coin:s,interval:i,risk:l,expiresAt:u,id:d,name:c,spec:S};S.kind==="ema_cross"?x=Ts(k):S.kind==="rsi"?x=_s(k):x=Is(k);let T=_t(x,{nowMs:r});if(!T.ok)throw new K(`draft failed validation: ${T.errors.map(E=>E.message).join("; ")}`);return Nt(Y(x,{nowMs:r}))}var K,cs,ls,us,Se,fs,ds,ps,ms,Wr=D(()=>{de();K=class extends Error{constructor(t){super(t),this.name="StrategyDraftError"}},cs=new Set(["1m","3m","5m","15m","30m","1h","2h","4h","8h","12h","1d"]),ls=new Set(["BTC","ETH","SOL","HYPE"]),us=/\b(mnemonic|private\s*key|privkey|seed\s*phrase|seed\b|api[_-]?key|secret\s*key|wallet\s*key|passphrase)\b/i,Se="Supported grammar: (1) EMA cross: <long|short> <COIN> when EMA <n> crosses <above|below> EMA <m> [on <interval>] [, exit on reverse] [, risk knobs]; (2) RSI: <long|short> <COIN> when RSI <n> <above|below> <threshold> [on <interval>] [, risk knobs]; (3) funding: <long|short> <COIN> when funding rate <above|below> <decimal|percent%> [on <interval>] [, risk knobs]. Risk knobs: stop loss %, take profit %, leverage, position size %, max notional USD. Coins: BTC ETH SOL HYPE or uppercase token <=12 chars. Intervals: 1m 3m 5m 15m 30m 1h 2h 4h 8h 12h 1d.",fs=Object.freeze({maxLeverage:1,maxNotionalUsd:100,positionSizePct:5,stopLossPct:2,takeProfitPct:4,cooldownBars:1,maxDailyLossPct:3}),ds=36e5,ps=30*864e5,ms=864e5});import{createHash as vs}from"node:crypto";function Qr(e){let t=String(e).toLowerCase();return t==="holdout"||t==="test"||t==="oos"||t.includes("holdout")||t.includes("oos")?!0:t==="testbars"||t.endsWith("testbars")||t.startsWith("test")||t.endsWith("test")?!t.includes("backtest"):!1}function en(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function Rt(e){if(e==null||typeof e!="object"||Object.isFrozen(e))return e;if(Array.isArray(e)){for(let t of e)Rt(t);return Object.freeze(e)}for(let t of Object.keys(e))Rt(e[t]);return Object.freeze(e)}function Fe(e){if(Array.isArray(e))return e.map(Fe);if(e!=null&&typeof e=="object"){let t={};for(let r of Object.keys(e).sort())t[r]=Fe(e[r]);return t}return e}function Ke(e){return JSON.stringify(Fe(e))}function Os(e){let{min:t,max:r,step:n}=e;if(!(n>0)||t>r)return[];let o=[],a=Math.floor((r-t)/n+1e-9);for(let i=0;i<=a;i++){let l=t+i*n;if(l>r+1e-9)break;let u=Math.abs(l-Math.round(l))<1e-9?Math.round(l):Number(l.toPrecision(12));u<t-1e-9||u>r+1e-9||o.push(u)}if(o.length===0)return[];let s=o[o.length-1];if(Math.abs(s-r)>1e-9){let i=(r-t)/n;Math.abs(i-Math.round(i))<=1e-9&&o.push(r)}return o}function Ns(e,t){if(e.length===0)return[];let r=[{}];for(let n of e){let o=t[n],a=[];for(let s of r)for(let i of o)a.push({...s,[n]:i});r=a}return r.sort((n,o)=>{let a=Ke(n),s=Ke(o);return a<s?-1:a>s?1:0}),r}function Mt(e,t,r,n,o){let a=0;if(e==="maxDrawdownPct"){if(a=t.maxDrawdownPct-n.maxDrawdownPct,a!==0)return a<0}else if(a=t[e]-n[e],a!==0)return a>0;let s=Ke(r),i=Ke(o);return s<i}function tn(e,t,r={}){if(!en(r))throw new TypeError("options must be a plain object");for(let E of Object.keys(r))if(Qr(E))throw new TypeError(`options must not include holdout/test/oos key "${E}"`);let n=new Set(["maxTrials","objective","backtestOptions"]);for(let E of Object.keys(r))if(!n.has(E))throw new TypeError(`unknown option "${E}"`);let o=64;if("maxTrials"in r){let E=r.maxTrials;if(!Number.isInteger(E)||E<1||E>Xr)throw new TypeError(`maxTrials must be an integer 1..${Xr}`);o=E}let a=r.objective??"netPnlUsd";if(!Zr.has(a))throw new TypeError(`objective must be one of ${[...Zr].join("|")}`);let s=r.backtestOptions??{};if(!en(s))throw new TypeError("backtestOptions must be a plain object");for(let E of Object.keys(s))if(Qr(E))throw new TypeError(`backtestOptions must not include holdout/test/oos key "${E}"`);let i=Y(e),l=Object.keys(i.parameters).sort();if(l.length===0)throw new Error("optimizeStrategy requires at least one declared parameter");let u={},d=1;for(let E of l){let A=Os(i.parameters[E]);if(A.length===0)throw new Error(`parameter "${E}" produces an empty grid`);u[E]=A,d*=A.length}let c=Ns(l,u);if(c.length===0)throw new Error("parameter grid is empty");let f=c.slice(0,o),m=[],p=null,y=null;for(let E of f){let A=Me(i,E),$=ae(A,t,s);y==null&&(y=$.config);let w={netPnlUsd:$.metrics.netPnlUsd,netPnlPct:$.metrics.netPnlPct,maxDrawdownPct:$.metrics.maxDrawdownPct,winRate:$.metrics.winRate,profitFactor:$.metrics.profitFactor,tradeCount:$.metrics.tradeCount,sharpe:$.metrics.sharpe,turnoverUsd:$.metrics.turnoverUsd},R={parameters:{...E},metrics:w};m.push(R),(!p||Mt(a,w,E,p.metrics,p.parameters))&&(p=R)}m.sort((E,A)=>Mt(a,E.metrics,E.parameters,A.metrics,A.parameters)?-1:Mt(a,A.metrics,A.parameters,E.metrics,E.parameters)?1:0);let x={...p.parameters},S=Me(i,x),k={strategyHash:ge(i),compilerHash:pe,trainBarsHash:Ie(t),backtestConfig:y,objective:a,maxTrials:o,trialsRun:m.length,candidates:m,bestParameters:x,bestStrategy:S},T={id:vs("sha256").update(JSON.stringify(Fe(k)),"utf8").digest("hex"),...k};return Rt(Fe(JSON.parse(JSON.stringify(T))))}var Xr,Zr,rn=D(()=>{me();de();Be();Xr=256,Zr=new Set(["netPnlUsd","profitFactor","sharpe","maxDrawdownPct"])});import ie from"node:fs";import Ye from"node:path";function Ge(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function oe(e){return e==null?e:JSON.parse(JSON.stringify(e))}function Rs(e){return String(e).toLowerCase().replace(/[^a-z0-9]/g,"")}function Ae(e,t="record"){if(Array.isArray(e)){e.forEach((r,n)=>Ae(r,`${t}[${n}]`));return}if(Ge(e))for(let[r,n]of Object.entries(e)){let o=Rs(r);if(Ms.some(a=>o.includes(a)))throw new Error(`shadow-store: forbidden secret-like field at ${t}.${r}`);Ae(n,`${t}.${r}`)}}function js(e){if(typeof e!="string"||!e||!Ye.isAbsolute(e))throw new Error("shadow-store: path must be an absolute path")}function nn(e){let t;try{t=ie.lstatSync(e)}catch(n){if(n&&n.code==="ENOENT")return;throw n}if(t.isSymbolicLink())throw new Error("shadow-store: store path must not be a symlink");if(!t.isFile())throw new Error("shadow-store: store path must be a regular file");if(t.mode&511&18)throw new Error("shadow-store: store file must not be group or world writable")}function Fs(){return{version:Ft,runners:[]}}function on(e,t){let r;try{r=JSON.parse(e)}catch{throw new Error("shadow-store: malformed JSON")}if(!Ge(r))throw new Error("shadow-store: malformed JSON root");if(r.version!==Ft)throw new Error(`shadow-store: unsupported version ${r.version}`);if(!Array.isArray(r.runners))throw new Error("shadow-store: runners must be an array");return Ae(r,Ye.basename(t)),{version:Ft,runners:r.runners.map(n=>oe(n))}}function sn(e,t){Ae(t,"store");let r=Ye.dirname(e);ie.mkdirSync(r,{recursive:!0,mode:448});let n=Ye.join(r,`.shadow-store.${process.pid}.${Date.now()}.tmp`),o=`${JSON.stringify(t)}
|
|
3
|
+
`;try{ie.writeFileSync(n,o,{mode:384,flag:"wx"}),ie.renameSync(n,e);try{ie.chmodSync(e,384)}catch{}}catch(a){try{ie.unlinkSync(n)}catch{}throw a}}function an(e={}){let t=e.path;if(js(t),nn(t),ie.existsSync(t)?on(ie.readFileSync(t,"utf8"),t):sn(t,Fs()),jt.has(t))return jt.get(t);let r=!1,n=[];function o(){if(r)return;let p=n.shift();if(p){r=!0;try{let y=p.fn();r=!1,p.resolve(y),o()}catch(y){r=!1,p.reject(y),o()}}}function a(p){if(!r&&n.length===0){r=!0;try{return p()}finally{r=!1,queueMicrotask(o)}}return new Promise((y,x)=>{n.push({fn:p,resolve:y,reject:x}),queueMicrotask(o)})}function s(){return nn(t),on(ie.readFileSync(t,"utf8"),t)}function i(p){sn(t,p)}function l(p){if(!Ge(p)||typeof p.id!="string"||!p.id)throw new Error("shadow-store: create requires record with string id");Ae(p,"record");let y=s();if(y.runners.some(S=>S.id===p.id))throw new Error(`shadow-store: runner id already exists: ${p.id}`);let x=oe(p);return y.runners.push(x),i(y),oe(x)}function u(p){let y=s().runners.find(x=>x.id===p);return y?oe(y):null}function d(){return s().runners.map(p=>oe(p))}function c(p,y){if(typeof y!="function")throw new Error("shadow-store: updater must be a function");let x=s(),S=x.runners.findIndex(E=>E.id===p);if(S<0)throw new Error(`shadow-store: runner not found: ${p}`);let k=oe(x.runners[S]),T=y(k);if(!Ge(T)||T.id!==p)throw new Error("shadow-store: updater must return record with same id");return Ae(T,"record"),x.runners[S]=oe(T),i(x),oe(x.runners[S])}function f(p){let y=s(),x=y.runners.findIndex(k=>k.id===p);if(x<0)throw new Error(`shadow-store: runner not found: ${p}`);let S=oe(y.runners[x]);return S.status!=="stopped"&&(S.status="stopped",y.runners[x]=S,i(y)),oe(y.runners[x])}let m={create(p){return a(()=>l(p))},get(p){return u(p)},list(){return d()},update(p,y){return a(()=>c(p,y))},stop(p){return a(()=>f(p))}};return jt.set(t,m),m}var Ft,Ms,jt,cn=D(()=>{Ft=1,Ms=["privatekey","secretkey","seed","mnemonic","passphrase","password","keystore","keymaterial","apikey","authtoken","accesstoken","refreshtoken","credential","bearer","signature","authorization","xprv","xpriv","wif"];jt=new Map});import{createHash as Ct}from"node:crypto";function Lt(e){return e==null?e:JSON.parse(JSON.stringify(e))}function Ht(e){return Array.isArray(e)?e.map(Ht):e&&typeof e=="object"?Object.fromEntries(Object.keys(e).sort().map(t=>[t,Ht(e[t])])):e}function un(e){if(!e||typeof e!="object"||Array.isArray(e))throw new TypeError("shadow-runner: record must be an object");return Ct("sha256").update(JSON.stringify(Ht(e))).digest("hex")}function Ls(e,t,r,n,o){return Ct("sha256").update(`${e}|${t}|${r}|${n}|${o}`).digest("hex")}function Hs(e,t,r,n){return Ct("sha256").update(`shadow|${e}|${t}|${r}|${n??""}`).digest("hex")}function Cs(e){return e==="entryLong"||e==="exitShort"?"buy":e==="entryShort"||e==="exitLong"?"sell":e}function ln(e){return e==="entryLong"||e==="entryShort"}function qt({storePath:e,clock:t=Date.now}={}){if(typeof e!="string"||!e)throw new Error("shadow-runner: storePath required");let r=an({path:e});function n({strategy:l,evidenceId:u=null}={}){let d=G(l),c=u==null?null:String(u),f=r.list().filter(S=>S.status==="running"&&S.strategyHash===d.strategyHash&&S.compilerHash===d.compilerHash&&S.evidenceId===c).sort((S,k)=>S.createdAt-k.createdAt||S.id.localeCompare(k.id))[0];if(f)return Lt(f);let m=t(),p=Hs(m,d.strategyHash,d.compilerHash,c),y=r.get(p);if(y)return Lt(y);let x={id:p,strategy:Lt(d.strategy),strategyHash:d.strategyHash,compilerHash:d.compilerHash,evidenceId:c,status:"running",cursor:null,intendedOrders:[],fills:[],missedFills:[],markouts:[],createdAt:m,updatedAt:m,position:null,cooldownBarsRemaining:0,cooldownStartT:null,lastProcessedBarIndex:-1};return r.create(x)}function o(l){return r.get(l)}function a(){return r.list()}function s(l){return r.stop(l)}function i(l,u,{markoutHorizons:d=[1,4,12]}={}){if(!Array.isArray(u))throw new TypeError("shadow-runner: bars must be an array");return r.update(l,c=>{if(c.status!=="running")throw new Error("shadow-runner: runner is stopped");if(u.length===0)return c;let m=G(c.strategy).evaluateAll(u),p=new Map;for(let h=0;h<u.length;h++)p.set(u[h].t,h);let y=c.cursor,x=[];for(let h=0;h<u.length;h++){let _=u[h].t;(y==null||_>y)&&x.push(h)}if(x.length===0)return c;let S=new Map(c.intendedOrders.map(h=>[h.id,h])),k=new Set(c.fills.map(h=>h.orderId)),T=new Map(c.missedFills.map(h=>[h.orderId,h])),E=(h,_)=>`${h}|${_}`,A=new Map(c.markouts.map(h=>[E(h.orderId,h.horizon),h])),$=c.position?{...c.position}:null,w=Number.isInteger(c.cooldownBarsRemaining)?Math.max(0,c.cooldownBarsRemaining):0,R=Number.isFinite(c.cooldownStartT)?c.cooldownStartT:null;function V({action:h,signalBarT:_,signalIndex:N}){let F=Cs(h),L=Ls(c.id,c.strategyHash,_,F,h);if(S.has(L))return S.get(L);let v=N+1,M=v<u.length,J={id:L,action:h,type:h,side:F,signalBarT:_,fillBarT:M?u[v].t:null,status:M?"open":"missed"};return S.set(L,J),c.intendedOrders.push(J),J}function W(h,_,N){if(k.has(h.id))return;let F={orderId:h.id,action:ln(h.action)?"entry":"exit",side:h.side,price:_.o,barT:_.t,signalBarT:h.signalBarT,barIndex:N};if(c.fills.push(F),k.add(h.id),h.status="filled",h.fillBarT=_.t,T.has(h.id)&&(T.delete(h.id),c.missedFills=c.missedFills.filter(L=>L.orderId!==h.id)),ln(h.action)){$={side:h.action==="entryLong"?"long":"short",entryOrderId:h.id,entryBarT:_.t,entryPrice:_.o,entryBarIndex:N};for(let L of d){let v=E(h.id,L);if(A.has(v))continue;let M={orderId:h.id,horizon:L,entryBarT:_.t,entryPrice:_.o,side:$.side,status:"pending",close:null,barT:null};A.set(v,M),c.markouts.push(M)}}else $=null,w=Number(c.strategy?.risk?.cooldownBars)||0,R=_.t}function U(h){if(k.has(h.id)||T.has(h.id))return;let _={orderId:h.id,action:h.action,side:h.side,signalBarT:h.signalBarT,status:"missed"};T.set(h.id,_),c.missedFills.push(_),h.status="missed"}for(let h of c.intendedOrders){if(h.status==="filled"||k.has(h.id))continue;let _=p.get(h.signalBarT);if(_==null)continue;let N=_+1;N<u.length&&(y==null||u[N].t>y)&&W(h,u[N],N)}for(let h of x){let _=u[h],N=m[h].signals,F=$,L=M=>{if($||w>0&&(R==null||_.t>=R))return;let B=V({action:M,signalBarT:_.t,signalIndex:h}),ee=h+1;ee<u.length?W(B,u[ee],ee):U(B)},v=M=>{if(!$||$.side==="long"&&M!=="exitLong"||$.side==="short"&&M!=="exitShort")return;let J=V({action:M,signalBarT:_.t,signalIndex:h}),B=h+1;B<u.length?W(J,u[B],B):U(J)};F?(N.exitLong&&v("exitLong"),N.exitShort&&v("exitShort")):N.entryLong&&N.entryShort||(N.entryLong&&L("entryLong"),N.entryShort&&L("entryShort")),w>0&&R!=null&&_.t>=R&&(w-=1,w===0&&(R=null)),c.cursor=_.t,c.lastProcessedBarIndex=h}for(let h of c.markouts){if(h.status!=="pending")continue;let _=c.fills.find(L=>L.orderId===h.orderId&&L.action==="entry");if(!_)continue;let N=p.get(_.barT);if(N==null)continue;let F=N+h.horizon;if(F<u.length){h.close=u[F].c,h.barT=u[F].t,h.status="filled";let L=h.entryPrice;h.markout=h.side==="long"?(h.close-L)/L:(L-h.close)/L}}return c.position=$,c.cooldownBarsRemaining=w,c.cooldownStartT=R,c.updatedAt=t(),c})}return{start:n,step:i,list:a,get:o,stop:s}}var fn=D(()=>{me();cn()});var mn={};Pn(mn,{runStrategyOperation:()=>Ks});import qs from"node:os";import Us from"node:path";function Le(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function zs(e){return String(e).toLowerCase().replace(/[^a-z0-9]/g,"")}function Bt(e){if(Array.isArray(e)){for(let t of e)Bt(t);return}if(Le(e))for(let[t,r]of Object.entries(e)){if(Bs.some(n=>zs(t).includes(n)))throw new Error(`strategy service: secret-like field "${t}" is forbidden`);Bt(r)}}function Ds(e){if(!Le(e))throw new TypeError("strategy input must be a plain object");return Bt(e),e}function Vs(e,t={}){if(t.nowMs!==void 0){if(!Number.isInteger(t.nowMs))throw new TypeError("nowMs must be an integer epoch milliseconds");return t.nowMs}let r=Date.now();if(e.nowMs===void 0||e.nowMs===null)return r;if(!Number.isInteger(e.nowMs))throw new TypeError("nowMs must be an integer epoch milliseconds");if(Math.abs(e.nowMs-r)>12e4)throw new Error("nowMs outside allowed wall-clock skew (120s); omit nowMs to use server time");return e.nowMs}async function Ut(e,t,r,n){if(Array.isArray(t.bars))return t.bars;let o=Et(e.venue),a=r.fetchBars??o.fetchBars;if(typeof a!="function")throw new Error(`strategy venue ${o.id} does not support history`);let s=await a({coin:e.market.coin,interval:e.market.interval,count:t.count??1500,endTime:t.endTime??n}),i=Array.isArray(s)?s:s?.bars;if(!Array.isArray(i))throw new Error("strategy history provider returned no bars");return i}function zt(e,t){let r=e.backtestOptions??{};if(!Le(r))throw new TypeError("backtestOptions must be a plain object");return{...r,nowMs:t}}function dn(e,t,r,n,o={}){let a=e.evidenceOptions??{};if(!Le(a))throw new TypeError("evidenceOptions must be a plain object");return{...a,...o,strategy:t,bars:r,backtestOptions:zt(e,n)}}function pn(){return Us.join(qs.homedir(),".oracle","strategy-shadow.json")}function Js(e,t){return{perStrategyNotionalUsd:e.risk.maxNotionalUsd,maxLeverage:e.risk.maxLeverage,dailyLossCapUsd:e.risk.maxNotionalUsd*(e.risk.maxDailyLossPct/100),chainAllowlist:[e.venue],assetAllowlist:[e.market.coin],expiresAt:Math.min(e.risk.expiresAt,t+864e5),killSwitchRequired:!0}}async function Ks(e,t={},r={}){let n=Ds(t),o=Vs(n,r);if(e==="draft")return{strategy:Gr(n.prompt,{nowMs:o})};if(e==="validate"){let a=G(n.strategy);if(a.strategy.risk.expiresAt<=o)throw new Error("strategy is expired");return{valid:!0,strategy:a.strategy,strategyHash:a.strategyHash,compilerHash:a.compilerHash,compilerVersion:a.compilerVersion,requiredSeries:a.requiredSeries}}if(e==="backtest"||e==="evidence"){let a=G(n.strategy),s=await Ut(a.strategy,n,r,o);je(a,s);let i=mt(dn(n,a.strategy,s,o));return e==="evidence"?i:{backtest:ae(a.strategy,s,zt(n,o)),evidence:i}}if(e==="optimize"){let a=G(n.strategy),s=await Ut(a.strategy,n,r,o);je(a,s);let i=n.trainFraction,l=n.evidenceOptions?.trainFraction;if(i!=null&&l!=null&&i!==l)throw new TypeError("conflicting trainFraction controls are forbidden");let u=i??l??.7;if(typeof u!="number"||u<=0||u>=1)throw new TypeError("trainFraction must be in (0,1)");let d=s.slice(0,Math.floor(s.length*u)),c=n.options??{};if(!Le(c))throw new TypeError("options must be a plain object");let f=tn(a.strategy,d,{...c,...n.maxTrials==null?{}:{maxTrials:n.maxTrials},backtestOptions:zt(n,o)}),m=f.bestStrategy;return{strategy:m,optimization:f,evidence:mt(dn(n,m,s,o,{trainFraction:u}))}}if(e==="shadow"){let a=qt({storePath:r.storePath??pn(),clock:()=>o}),s=n.action;if(s==="start")return await a.start({strategy:n.strategy,evidenceId:n.evidenceId??n.evidence?.id??null});if(s==="list")return await a.list();if(s==="get")return await a.get(n.id);if(s==="stop")return await a.stop(n.id);if(s==="step"){let i=await a.get(n.id);if(!i)throw new Error(`shadow runner not found: ${n.id}`);let l=await Ut(i.strategy,n,r,o);return je(G(i.strategy),l),await a.step(n.id,l,n.stepOptions??{})}throw new Error(`unknown shadow action: ${s}`)}if(e==="prepare"){let a=G(n.strategy),s=Et(a.strategy.venue);if(typeof n.shadowId!="string"||!n.shadowId)throw new Error("strategy prepare requires a matching shadow runner id");let l=await qt({storePath:r.storePath??pn(),clock:()=>o}).get(n.shadowId);if(!l)throw new Error("strategy prepare shadow runner not found");if(l.status!=="running")throw new Error("strategy prepare requires an active shadow runner");if(!Number.isFinite(l.cursor))throw new Error("strategy prepare requires a stepped shadow runner");if(l.strategyHash!==a.strategyHash||l.compilerHash!==a.compilerHash)throw new Error("strategy prepare shadow runner does not match strategy artifacts");if(l.evidenceId!==n.evidence?.id)throw new Error("strategy prepare shadow runner does not match evidence artifact");let u=n.caps??Js(a.strategy,o);return s.prepareIntent({strategy:a.strategy,evidence:n.evidence,shadow:{id:l.id,stateHash:un(l),status:l.status,cursor:l.cursor,updatedAt:l.updatedAt},caps:u,nowMs:o,env:r.env??process.env})}throw new Error(`unknown strategy operation: ${e}`)}var Bs,hn=D(()=>{Be();me();ht();Wr();rn();fn();xt();Bs=["privatekey","secretkey","seed","mnemonic","passphrase","password","keystore","keymaterial","apikey","authtoken","accesstoken","refreshtoken","credential","bearer","signature","authorization","xprv","xpriv","wif"]});import yn from"node:fs";function Ys(e){let t={},r=[];for(let n=0;n<e.length;n++){let o=e[n];if(!o.startsWith("--")){r.push(o);continue}let a=o.slice(2),s=e[n+1];s!=null&&!s.startsWith("--")?(t[a]=s,n++):t[a]=!0}return{flags:t,positional:r}}function ye(e,t){if(!e)throw new Error(`${t} path required`);let r=e==="-"?yn.readFileSync(0,"utf8"):yn.readFileSync(e,"utf8");try{return JSON.parse(r)}catch{throw new Error(`${t} must contain valid JSON`)}}function wn(e,t){if(e==null)return;let r=Number(e);if(!Number.isFinite(r))throw new Error(`${t} must be a finite number`);return r}var Gs=`oracle strategy <draft|validate|backtest|optimize|evidence|shadow|prepare> [args]
|
|
48
4
|
|
|
49
5
|
oracle strategy draft "Long BTC when the 20 EMA crosses above the 50 EMA"
|
|
50
6
|
oracle strategy validate strategy.json
|
|
@@ -58,5 +14,5 @@ ${s}`;break;case"retry":jf(s)&&(t[n]=s);break;case"id":$f(s)&&(t[n]=s);break;cas
|
|
|
58
14
|
oracle strategy prepare strategy.json --evidence evidence.json --shadow-id <id> [--caps caps.json]
|
|
59
15
|
|
|
60
16
|
Strategy simulation and shadowing are local and deterministic. Prepare returns an integrity-bound artifact, HMAC-authenticated when local attestation is configured. Sign and broadcast through an approved execution path.
|
|
61
|
-
`,
|
|
62
|
-
`),0}};export{
|
|
17
|
+
`,pa={name:"strategy",summary:"deterministic Hyperliquid strategy lab, evidence, shadow, prepare-only handoff",group:"read",usage:"oracle strategy <draft|validate|backtest|optimize|evidence|shadow|prepare> [args]",async run(e){let{flags:t,positional:r}=Ys(e.argv);if(t.help||r.length===0)return process.stdout.write(Gs),0;let[n,...o]=r,{runStrategyOperation:a}=await Promise.resolve().then(()=>(hn(),mn)),s={nowMs:Date.now(),count:wn(t.count,"count")};if(n==="draft")s.prompt=o.join(" ").trim();else if(["validate","backtest","optimize","evidence"].includes(n))s.strategy=ye(o[0],"strategy"),t.bars&&(s.bars=ye(t.bars,"bars")),s.maxTrials=wn(t["max-trials"],"max-trials");else if(n==="shadow"){let l=o[0];if(!l)throw new Error("shadow action required");s.action=l,l==="start"&&(s.strategy=ye(o[1],"strategy")),l==="step"&&(s.id=o[1],t.bars&&(s.bars=ye(t.bars,"bars"))),l==="stop"&&(s.id=o[1])}else if(n==="prepare")s.strategy=ye(o[0],"strategy"),s.evidence=ye(t.evidence,"evidence"),s.shadowId=t["shadow-id"],t.caps&&(s.caps=ye(t.caps,"caps"));else throw new Error(`unknown strategy operation: ${n}`);let i=await a(n,s);return process.stdout.write(`${JSON.stringify(i,null,2)}
|
|
18
|
+
`),0}};export{pa as default};
|